MSDM Table (BIOS taki windows 8 Lisans Numarasını Öğrenme)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
halil
Üye
Mesajlar: 9
Kayıt: 12 Nis 2014 02:00

MSDM Table (BIOS taki windows 8 Lisans Numarasını Öğrenme)

Mesaj gönderen halil »

Merhaba;

Aşağıdaki c# codelarını delphi ye çevirebilcek bir arkadaş var mı? Rica etsem çevirebilirmiyiz.

[DllImport("kernel32")]
public static extern uint EnumSystemFirmwareTables(uint FirmwareTableProviderSignature, IntPtr pFirmwareTableBuffer, uint BufferSize);
[DllImport("kernel32")]
private static extern uint GetSystemFirmwareTable(uint FirmwareTableProviderSignature, uint FirmwareTableID, IntPtr pFirmwareTableBuffer, uint BufferSize); /// <summary>
/// Get the OEM:DM Product Key from the System Firmware MSDM Table
/// </summary>
/// <returns>List of all discovered Product Keys</returns>
public static List<string> GetKeysFromMSDMWindows(ref byte[] buffer)
{
List<string> detectedKeys = new List<string>();
// Read System Firmware
uint firmwareTableProviderSignature = 0x41435049; // 'ACPI' in Hexadecimal
uint bufferSize = EnumSystemFirmwareTables(firmwareTableProviderSignature, IntPtr.Zero, 0);
IntPtr pFirmwareTableBuffer = Marshal.AllocHGlobal((int)bufferSize);
buffer = new byte[bufferSize];
EnumSystemFirmwareTables(firmwareTableProviderSignature, pFirmwareTableBuffer, bufferSize);
Marshal.Copy(pFirmwareTableBuffer, buffer, 0, buffer.Length);
Marshal.FreeHGlobal(pFirmwareTableBuffer);
// Check for MSDM Table
if (Encoding.ASCII.GetString(buffer).Contains("MSDM"))
{
// Get MSDM Table
uint firmwareTableID = 0x4d44534d; // Reversed 'MSDM' in Hexadecimal
bufferSize = GetSystemFirmwareTable(firmwareTableProviderSignature, firmwareTableID, IntPtr.Zero, 0);
buffer = new byte[bufferSize];
pFirmwareTableBuffer = Marshal.AllocHGlobal((int)bufferSize);
GetSystemFirmwareTable(firmwareTableProviderSignature, firmwareTableID, pFirmwareTableBuffer, bufferSize);
Marshal.Copy(pFirmwareTableBuffer, buffer, 0, buffer.Length);
Marshal.FreeHGlobal(pFirmwareTableBuffer);
// Get OEM:DM Key
Encoding encoding = Encoding.GetEncoding(0x4e4);
detectedKeys.Add(encoding.GetString(buffer, 56, 29));
}
return detectedKeys;
}
public static void ShowMe()
{
byte[] buffer = null;
if (GetKeysFromMSDMWindows(ref buffer) != null)
{
Encoding encoding = Encoding.GetEncoding(0x4e4);
string signature = encoding.GetString(buffer, 0x0, 0x4);
int length = BitConverter.ToInt32(buffer, 0x4);
byte revision = (byte)buffer.GetValue(0x8);
byte checksum = (Byte)buffer.GetValue(0x9);
string oemid = encoding.GetString(buffer, 0xa, 0x6);
string oemtableid = encoding.GetString(buffer, 0x10, 0x8);
int oemrev = BitConverter.ToInt32(buffer, 0x18);
string creatorid = encoding.GetString(buffer, 0x1c, 0x4);
int creatorrev = BitConverter.ToInt32(buffer, 0x20);
int sls_version = BitConverter.ToInt32(buffer, 0x24);
int sls_reserved = BitConverter.ToInt32(buffer, 0x28);
int sls_datatype = BitConverter.ToInt32(buffer, 0x2C);
int sls_datareserved = BitConverter.ToInt32(buffer, 0x30);
int sls_datalength = BitConverter.ToInt32(buffer, 0x34);
string sls_data = encoding.GetString(buffer, 0x38, sls_datalength);
string result = "Signature : " + signature +
"\nLength : " + length +
"\nRevison : " + revision.ToString("X") +
"\nChecksum : " + checksum.ToString("X") +
"\nOEM ID : " + oemid +
"\nOEM Table ID : " + oemtableid +
"\nOEM Revision : " + oemrev +
"\nCreator ID : " + creatorid +
"\nCreator Revision : " + creatorrev +
"\nSLS Version : " + sls_version +
"\nSLS Reserved : " + sls_reserved +
"\nSLS Datatype : " + sls_datatype +
"\nSLS Data Reserved : " + sls_datareserved +
"\nSLS Data Length : " + sls_datalength +
"\nKey : " + sls_data;
Console.WriteLine(result);
}
else
{
Console.WriteLine("MSDM Table Not Found!");
}
Console.ReadKey();
}
En son halil tarafından 14 Nis 2014 12:45 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
halil
Üye
Mesajlar: 9
Kayıt: 12 Nis 2014 02:00

Re: MSDM Table

Mesaj gönderen halil »

Yardım edebilecek bir arkadaş var mı?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: MSDM Table (BIOS taki windows 8 Lisans Numarasını Öğrenm

Mesaj gönderen mrmarman »

MiTec Sistem Bilgi Paketini incelersen belki işini görür... bkz. bu link. :idea:

Kod: Tümünü seç

type 
  TFNEnumSystemFirmwareTables = function(FirmwareTableProviderSignature: DWORD; 
    out pFirmwareTableEnumBuffer; BufferSize: DWORD): UINT; stdcall; 
  TFNGetSystemFirmwareTable = function(FirmwareTableProviderSignature: DWORD; 
    FirmwareTableID: DWORD; out pFirmwareTableBuffer; BufferSize: DWORD): UINT; 
    stdcall; 
var 
  EnumSystemFirmwareTables: TFNEnumSystemFirmwareTables = nil; 
  GetSystemFirmwareTable: TFNGetSystemFirmwareTable = nil; 
Resim
Resim ....Resim
halil
Üye
Mesajlar: 9
Kayıt: 12 Nis 2014 02:00

Re: MSDM Table (BIOS taki windows 8 Lisans Numarasını Öğrenm

Mesaj gönderen halil »

Merhaba;

https://code.google.com/p/tsmbios/ bu sitede baya yardımcı oluyor ama bu işlem için bana yetersiz kalıyor. Yukarıdaki kodları çözemedim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: MSDM Table (BIOS taki windows 8 Lisans Numarasını Öğrenm

Mesaj gönderen mrmarman »

Windows 8 password okumak için mi sadece bu çaba? RW programı MSDM Table okuyup gösyeriyor.
Resim
Resim ....Resim
halil
Üye
Mesajlar: 9
Kayıt: 12 Nis 2014 02:00

Re: MSDM Table (BIOS taki windows 8 Lisans Numarasını Öğrenm

Mesaj gönderen halil »

RW gibi değişik programlar ile okuyabiliyorum, ben bunu delphi üzerinde yapmak istiyorum.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: MSDM Table (BIOS taki windows 8 Lisans Numarasını Öğrenm

Mesaj gönderen mrmarman »

O zaman biraz mesai harcayıp BIOS okuma konusunun hatırına, linkini verdiğim örnekteki yapıyı öğrenme şansın olacak. :)
Resim
Resim ....Resim
Cevapla