[c#]hwid

01/13/2013 21:16 itelligence#1
ich möchte gerne die hwid auslesen lassen,
habe bisher etwas gefunden:
Code:
            ManagementObjectCollection mbsList = null;
            ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select * From Win32_processor");
            mbsList = mbs.Get();
            string id="";
            foreach (ManagementObject mo in mbsList)
            {
            id = mo["ProcessorID"].ToString();
            }
damit bekomme ich aber nur die prozessorid raus:

in meinem fall:
XXXXXBFF000206A7

wenn ich jetzt aber zb. an einen ersteller eines programmes meine hwid senden muss, sieht diese so aus:

XXXXXBFF000206A7XXXXXXXXXXXXXXXX-XXXXXXXXXX

habs mal verfällscht...

wie bekomme dich die volle hwid raus, bzw aus was setzt sie sich zusammen?
01/13/2013 21:53 tolio#2
es gibt keine "volle hwid"
jeder programmierer kann sicher selber was aussuchen was er nimmt zum auslesen, das ist ja das schöne am programmieren
01/14/2013 15:05 coladose#3
für gewöhnlich hashd man die Prozessor ID in md5.
Deswegen wird es auch dementsprechend länger..
01/14/2013 15:26 'Heaven.#4
Niemals nur die ProzessorID hashen....Dann können hinterher 30 Leute den nutzen, weil sie einen prozessor aus der selben serie haben...

man nimmt eig bios,mainboard und prozessor und nimmt den sha1 hash
01/14/2013 17:15 GodHacker#5
Quote:
Originally Posted by 'Heaven. View Post
Niemals nur die ProzessorID hashen....Dann können hinterher 30 Leute den nutzen, weil sie einen prozessor aus der selben serie haben...

man nimmt eig bios,mainboard und prozessor und nimmt den sha1 hash
1) Was meinst du mit Bios?
2) Wie kannst du das Bios auslesen?
3) Was meinst du mit Mainboard?
4) Wie kannst du das Mainboard auslesen?

Ja, ich weiß, was das Bios und ein Mainboard ist, aber was davon willst du verwenden und wie kommst du an diese Infos?
(Bessere Erklärung zu solchen Sachen währe gut, da diese Dinge nicht nur 1 Info enthalten bzw. besitzen, sondern mehrere)
01/14/2013 18:57 'Heaven.#6
Code:
Public Function GetHWID() As String 
    Dim stringBuilder As StringBuilder = New StringBuilder()
    Try
        Dim managementObjectSearcher As ManagementObjectSearcher = New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_BIOS")
        For Each managementObject As ManagementObject In managementObjectSearcher.Get()
            stringBuilder.Append(managementObject("SerialNumber"))
        NextCatch (managementException1 As ManagementException)
        Dim managementException As ManagementException = managementException1
        Console.WriteLine(String.Concat("An error occurred while querying for WMI data: ", managementException.Message))
    End Try
    Try
        Dim managementObjectSearcher1 As ManagementObjectSearcher = New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_OperatingSystem")
        For Each managementObject1 As ManagementObject In managementObjectSearcher1.Get()
            stringBuilder.Append(managementObject1("SerialNumber"))
        NextCatch (managementException3 As ManagementException)
        Dim managementException2 As ManagementException = managementException3
        Console.WriteLine(String.Concat("An error occurred while querying for WMI data: ", managementException2.Message))
    End Try
    Dim sHA256CryptoServiceProvider As HashAlgorithm = New SHA256CryptoServiceProvider()
    sHA256CryptoServiceProvider.Initialize()
    Dim numArray As Byte() = sHA256CryptoServiceProvider.ComputeHash(Encoding.Unicode.GetBytes(stringBuilder.ToString()))
    Dim str As String = BitConverter.ToString(numArray)
    str = str.Replace("-", String.Empty)
    str = str.ToLower()
    Return str
End Function
01/14/2013 18:58 Shawak#7
Code:
    Private Function getHWID() As String
        Return MD5CalcString(GetProcessorId() + "-" + GetVolumeSerial() + "-" + GetMotherBoardID())
    End Function

    Private Function MD5CalcString(ByVal strData As String) As String
        Dim objMD5 As New System.Security.Cryptography.MD5CryptoServiceProvider
        Dim arrData() As Byte
        Dim arrHash() As Byte
        arrData = System.Text.Encoding.UTF8.GetBytes(strData)
        arrHash = objMD5.ComputeHash(arrData)
        objMD5 = Nothing
        Return ByteArrayToString(arrHash)
    End Function

    Private Function ByteArrayToString(ByVal arrInput() As Byte) As String
        Dim strOutput As New System.Text.StringBuilder(arrInput.Length)
        For i As Integer = 0 To arrInput.Length - 1
            strOutput.Append(arrInput(i).ToString("X2"))
        Next
        Return strOutput.ToString().ToLower
    End Function

    Friend Function GetProcessorId() As String
        Dim strProcessorId As String = String.Empty
        Dim query As New SelectQuery("Win32_processor")
        Dim search As New ManagementObjectSearcher(query)
        Dim info As ManagementObject
        For Each info In search.Get()
            strProcessorId = info("processorId").ToString()
        Next
        Return strProcessorId
    End Function

    Friend Function GetVolumeSerial(Optional ByVal strDriveLetter As String = "C") As String
        Dim disk As ManagementObject = New ManagementObject(String.Format("win32_logicaldisk.deviceid=""{0}:""", strDriveLetter))
        disk.Get()
        Return disk("VolumeSerialNumber").ToString()
    End Function

    Friend Function GetMotherBoardID() As String
        Dim strMotherBoardID As String = String.Empty
        Dim query As New SelectQuery("Win32_BaseBoard")
        Dim search As New ManagementObjectSearcher(query)
        Dim info As ManagementObject
        For Each info In search.Get()
            strMotherBoardID = info("SerialNumber").ToString()
        Next
        Return strMotherBoardID
    End Function
Ist VB, hier ein Converter: [Only registered and activated users can see links. Click Here To Register...]

Edit: Hmm da war wer schneller.

Lg Shawak
01/14/2013 19:06 'Heaven.#8
BTW, wenn du nicht möchtest, dass nach einer neuinstallation von windoof die lizenznichtmehr geht nutz die MAC(von shawak) wenn nicht lass die weg
01/14/2013 21:47 tolio#9
mac nutzen ist in vielerlei hinsicht sehr suboptimal, zb. ich hab an meinem pc zwei ethernet ports und nutze manchmal noch nen wlan stick, dann könnte ich die software nur nutzen wenn ich den netzwerkadapter nutze den ich bei der installtion verwendet hab
@heaven, die mac adresse ist idr hardcoded, jedoch kann die mac adresse wirklich mit leichtigkeit und ohne vorkenntnis gespoofed werden
01/14/2013 22:23 Shawak#10
Quote:
Originally Posted by tolio View Post
mac nutzen ist in vielerlei hinsicht sehr suboptimal, zb. ich hab an meinem pc zwei ethernet ports und nutze manchmal noch nen wlan stick, dann könnte ich die software nur nutzen wenn ich den netzwerkadapter nutze den ich bei der installtion verwendet hab
@heaven, die mac adresse ist idr hardcoded, jedoch kann die mac adresse wirklich mit leichtigkeit und ohne vorkenntnis gespoofed werden
Mein Fehler, nutze das Snippet selber nicht und es ist auch schon etwas älter, wäre mir gar nicht aufgefallen.

Danke ich werde es editieren.