The Ultimate PID Checker

Discussion in 'MDL Projects and Applications' started by janek2012, Jul 18, 2010.

  1. racky29

    racky29 MDL Senior Member

    Joined:
    Aug 2, 2007
    Messages:
    285
    Likes Received:
    92
    Trophy Points:
    10
    this release seems to work fine on windows 7 anyway
     
  2. jstevenson72

    jstevenson72 MDL Novice

    Joined:
    Jan 16, 2009
    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    Janek,

    First of thank you for your time, and the Ultimate PID Checker is sweet.

    I too and a developer, and I am working on parsing some product keys within my corporate network, and I am trying to identify the windows version that each key is associated with.

    I have written the code so far in c# .net, and I am able to get all the Windows 7 Versions without any issue.

    My question is, would you be willing to share any source, or concepts related to finding the Windows version of a Vista Key or XP Key.

    I'm not certain if I just need to be using different pidgenx.dll files or if I also need to use different pkeyconfig files.

    I eagerly anyones response.

    Thank you very much.

    Jason
     
  3. janek2012

    janek2012 MDL Member

    Joined:
    Dec 29, 2008
    Messages:
    214
    Likes Received:
    991
    Trophy Points:
    10
    Hi, Janson.
    I am happy you like my application. Unfortunately, there is no way to quickly determine Windows version of the key - I am just using different pkeyconfig.xrm-ms and pidgen.dll (for XP) files to check if the key is valid for them.
    That's how my program works in Identify Key mode.
     
  4. user_hidden

    user_hidden MDL Expert

    Joined:
    Dec 18, 2007
    Messages:
    1,034
    Likes Received:
    1,045
    Trophy Points:
    60
    @jstevenson72

    pretty hard to get OS version from a key.
    the key would have to be run against pkeyconfig or pidgen files to see if they answer back.
     
  5. jstevenson72

    jstevenson72 MDL Novice

    Joined:
    Jan 16, 2009
    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    yeah, I'm already get the windows 7 version, but I need to get XP and Vista versions from my companies keys as well.

    Can anyone post which config and pidgenx files are required for Xp and Vista? Can someone get me a link?

    Thanks!
     
  6. jstevenson72

    jstevenson72 MDL Novice

    Joined:
    Jan 16, 2009
    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    Can you elaborate on which config and pidgen files are needed? Can you upload them or send them to me? Thanks dude!
     
  7. user_hidden

    user_hidden MDL Expert

    Joined:
    Dec 18, 2007
    Messages:
    1,034
    Likes Received:
    1,045
    Trophy Points:
    60
    check your PM
     
  8. sibax

    sibax MDL Novice

    Joined:
    Aug 5, 2009
    Messages:
    13
    Likes Received:
    0
    Trophy Points:
    0
    Hello janek2012
    Thank you very much for your great tool.
    Could you please compile your tool into 64 bit file with only x64 pidgens and pidgenx?
    Of course it will be working only on x64 OS, but it will resolve this problem.
    Best regards
     
  9. rapter

    rapter MDL Novice

    Joined:
    Dec 12, 2009
    Messages:
    17
    Likes Received:
    1
    Trophy Points:
    0
    The ultimate pid checker 1.1.1.315 link dead, Please alternate link..
     
  10. Tito

    Tito Super Mod / Adviser Staff Member

    Joined:
    Nov 30, 2009
    Messages:
    17,888
    Likes Received:
    16,542
    Trophy Points:
    340
  11. snoop1979

    snoop1979 MDL Novice

    Joined:
    Jan 19, 2011
    Messages:
    19
    Likes Received:
    5
    Trophy Points:
    0
    Excelent tool :worthy::worthy:
     
  12. janek2012

    janek2012 MDL Member

    Joined:
    Dec 29, 2008
    Messages:
    214
    Likes Received:
    991
    Trophy Points:
    10
    Reuploaded!

    I am sorry but Embarcadero RAD Studio XE2 does not support x64 in C++ it does it only in Delphi. I would have to rewrite my application to Delphi but I don't know this language yet. But I think it could be solved in other way. Stay tuned!
     
  13. sibax

    sibax MDL Novice

    Joined:
    Aug 5, 2009
    Messages:
    13
    Likes Received:
    0
    Trophy Points:
    0
    Thank you very much for your efforts janek2012
    I will be waiting
    Good luck
    P.S. If you need tester, I'll do it with great pleasure
    I have XP x64 Installed
    P.P.S. By the way, what is the other way you mean? Very interesting.
     
  14. CODYQX4

    CODYQX4 MDL Developer

    Joined:
    Sep 4, 2009
    Messages:
    4,814
    Likes Received:
    45,768
    Trophy Points:
    150
    #134 CODYQX4, Jun 5, 2012
    Last edited: Apr 12, 2019
    .
     
  15. Alphawaves

    Alphawaves Super Moderator/Developer Staff Member

    Joined:
    Aug 11, 2008
    Messages:
    6,183
    Likes Received:
    21,983
    Trophy Points:
    210
    #135 Alphawaves, Jun 5, 2012
    Last edited by a moderator: Apr 20, 2017
    From nononsence:

    Code:
    Set WshShell = CreateObject("WScript.Shell")
    MsgBox ConvertToKey(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId"))
    Function ConvertToKey(Key)
        Const KeyOffset = 52
    isWin8 = (Key(66) \ 6) And 1
    Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
        i = 24
        Chars = "BCDFGHJKMPQRTVWXY2346789"
        Do
            Cur = 0
            X = 14
            Do
                Cur = Cur * 256
                Cur = Key(X + KeyOffset) + Cur
                Key(X + KeyOffset) = (Cur \ 24)
                Cur = Cur Mod 24
                X = X -1
            Loop While X >= 0
            i = i -1
            KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
    Last = Cur
        Loop While i >= 0
    If (isWin8 = 1) Then
    keypart1 = Mid(KeyOutput, 2, Last)
    insert = "N"
    KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
    End If
    a = Mid(KeyOutput, 1, 5)
    b = Mid(KeyOutput, 6, 5)
    c = Mid(KeyOutput, 11, 5)
    d = Mid(KeyOutput, 16, 5)
    e = Mid(KeyOutput, 21, 5)
        ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e
    End Function
    Nice tool this so i sticky it!! :)
     
  16. unawave

    unawave MDL Novice

    Joined:
    Mar 20, 2009
    Messages:
    47
    Likes Received:
    0
    Trophy Points:
    0
  17. Daz

    Daz MDL Developer / Admin Staff Member

    Joined:
    Jul 31, 2009
    Messages:
    9,551
    Likes Received:
    67,118
    Trophy Points:
    300
    #137 Daz, Jun 6, 2012
    Last edited by a moderator: Apr 20, 2017
    Code:
    Set WshShell = CreateObject("WScript.Shell")
    Key = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
    DigitalID = WshShell.RegRead(key & "DigitalProductId")
    
    ProductName = "Product Name: " & WshShell.RegRead(Key & "ProductName") & vbNewLine
    ProductID = "Product ID: " & WshShell.RegRead(Key & "ProductID") & vbNewLine
    ProductKey = "Installed Key: " & ConvertToKey(DigitalID)
    ProductID = ProductName & ProductID & ProductKey
    
    If vbYes = MsgBox(ProductId & vblf & vblf & "Save to a file?", vbYesNo + vbQuestion, "Windows Key Information") then
       Save ProductID
    End if
    
    Function ConvertToKey(Key)
        Const KeyOffset = 52
        isWin8 = (Key(66) \ 6) And 1
        Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
        i = 24
        Chars = "BCDFGHJKMPQRTVWXY2346789"
        Do
            Cur = 0
            X = 14
            Do
                Cur = Cur * 256
                Cur = Key(X + KeyOffset) + Cur
                Key(X + KeyOffset) = (Cur \ 24)
                Cur = Cur Mod 24
                X = X -1
            Loop While X >= 0
            i = i -1
            KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
            Last = Cur
        Loop While i >= 0
        If (isWin8 = 1) Then
            keypart1 = Mid(KeyOutput, 2, Last)
            insert = "N"
            KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
            If Last = 0 Then KeyOutput = insert & KeyOutput
        End If
        a = Mid(KeyOutput, 1, 5)
        b = Mid(KeyOutput, 6, 5)
        c = Mid(KeyOutput, 11, 5)
        d = Mid(KeyOutput, 16, 5)
        e = Mid(KeyOutput, 21, 5)
        ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e
    End Function
    
    Function Save(Data)
        Const ForWRITING = 2
        Const asASCII = 0
        Dim fso, f, fName, ts
        fName = "Windows Key.txt"
        Set fso = CreateObject("Scripting.FileSystemObject")
        fso.CreateTextFile fName
        Set f = fso.GetFile(fName)
        Set f = f.OpenAsTextStream(ForWRITING, asASCII)
        f.Writeline Data
        f.Close
    End Function
     
  18. unawave

    unawave MDL Novice

    Joined:
    Mar 20, 2009
    Messages:
    47
    Likes Received:
    0
    Trophy Points:
    0
    Thank you very much, Daz. Works fine.

    The script shows also the correct Version ("Windows 8" or "Windows 8 Release Preview") which are both included in the ISO file.
     
  19. janek2012

    janek2012 MDL Member

    Joined:
    Dec 29, 2008
    Messages:
    214
    Likes Received:
    991
    Trophy Points:
    10
    OK, So i solved the graphic glitch when the program starts but I am too lazy (stupid) :p to fix the function to auto-add dashes. If anybody here knows how to get this done like Microsoft did it in Windows Setup, please contact me ASAP and I will release fixed version :)

    Cheers,
    Janek2012

    Edit:
    I think I got it :biggrin: The next release will be here soon ;)
     
  20. janek2012

    janek2012 MDL Member

    Joined:
    Dec 29, 2008
    Messages:
    214
    Likes Received:
    991
    Trophy Points:
    10