PDA

View Full Version : حرفه ای: خواندن مقادیر باینری از رجیستری و دیکدآنها



بهروز عباسی
یک شنبه 03 اردیبهشت 1391, 10:05 صبح
درود به همه برنامه نویس ها

من میخوام یه مقدار رشته ای رو که در آدرس زیر(رو سیستم من) هست به دست بیارم
اما این مقدار بصورت باینری در اجیستری ذخیره شده و من نمیتونم به اون رشته دسترسی پیدا کنم

ممنون میشم کسی کمک کنه این رشته رو از اون مقدار باینری بخونم
ادرس

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\m ssmbios\Data
مقدار مورد نظر SMBiosData

Mask
یک شنبه 03 اردیبهشت 1391, 11:08 صبح
اینو نوشتم. ببین کارت راه میوفته.

function GetRegInt(Root:HKEY;Key,Value:string):Integer;
var R:TRegistry;
begin
try
R:=TRegistry.Create;
try
R.RootKey:=Root;
if R.KeyExists(Key) then
begin
R.OpenKey(Key,false);
if R.ValueExists(Value) then
Result:=R.ReadInteger(Value)
else
Result:=0;
end else
Result:=0;
finally
R.CloseKey;
R.Free
end;
except
Result:=0;
end;
end;

بهروز عباسی
یک شنبه 03 اردیبهشت 1391, 17:13 عصر
ممنون از کمک اما من می خوام یه رشته رو برگردونه

این تابع این کارو برای بدست آوردن پروداکت کی ویندوز انجام میده من هم چین چیزی لازم دارم تا اطلاعات سیستم (مدل مین بردو...) از رجیستری بخونم.

var
Reg: TRegistry;
BinarySize: integer;
HexBuf: array of Byte;
Temp: TStringlist;
KeyName, KeyName2, SubKeyName, PN, PID, DN: string;
function DecodeProductKey(const HexSrc: array of Byte): string;
const
StartOffset: integer = $34; // Offset 34 = Array[52]
EndOffset: integer = $34 + 15; // Offset 34 + 15(Bytes) = Array[64]
Digits: array[0..23] of CHAR = ('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9');
dLen: integer = 29; // Length of Decoded Product Key
sLen: integer = 15; // Length of Encoded Product Key in Bytes (An total of 30 in chars)
var HexDigitalPID: array of cardinal;
Des: array of Char;
I, N: integer;
HN, Value: cardinal;
begin
SetLength(HexDigitalPID, dLen);
for I := StartOffset to EndOffset do
begin
HexDigitalPID[I - StartOffSet] := HexSrc[I];
end;
SetLength(Des, dLen + 1);
for I := dLen - 1 downto 0 do
begin
if (((I + 1) mod 6) = 0) then
begin
Des[I] := '-';
end
else
begin
HN := 0;
for N := sLen - 1 downto 0 do
begin
Value := (HN shl 8) or HexDigitalPID[N];
HexDigitalPID[N] := value div 24;
HN := Value mod 24;
end;
Des[I] := Digits[HN];
end;
end;
Des[dLen] := Chr(0);
for I := 0 to Length(Des) do
begin
Result := Result + Des[I];
end;

end;


function TSysInfo.GetWinProductKey: String;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows NT\CurrentVersion') then
begin
if Reg.GetDataType('DigitalProductId') = rdBinary then
begin
PN := (Reg.ReadString('ProductName'));
PID := (Reg.ReadString('ProductID'));
binarySize := Reg.GetDataSize('DigitalProductId');
SetLength(HexBuf, binarySize);
if BinarySize > 0 then
begin
Reg.ReadBinaryData('DigitalProductId', HexBuf[0], binarySize);
end;
end;
end;
finally
FreeAndNil(Reg);
end;
Result := '';
Result := 'Windows Product Key: '+DecodeProductKey(HexBuf);
end;

بهروز عباسی
چهارشنبه 06 اردیبهشت 1391, 18:48 عصر
این مقدار باینریه که من میخوام متن درونش رو بخونم


00000000 00 02 04 24 a3 08 00 00 - 00 18 00 00 01 02 00 e0 ...$£..........à
00000010 03 07 80 9e cb 7f 00 00 - 00 00 33 05 ff ff ff ff ....Ë.....3.ÿÿÿÿ
00000020 41 77 61 72 64 20 53 6f - 66 74 77 61 72 65 20 49 Award Software I
00000030 6e 74 65 72 6e 61 74 69 - 6f 6e 61 6c 2c 20 49 6e nternational, In
00000040 63 2e 00 46 36 00 30 33 - 2f 32 30 2f 32 30 30 38 c..F6.03/20/2008
00000050 00 00 01 1b 01 00 01 02 - 03 04 00 00 00 00 00 00 ................
00000060 00 00 00 00 00 00 00 00 - 00 00 06 05 06 47 69 67 .............Gig
00000070 61 62 79 74 65 20 54 65 - 63 68 6e 6f 6c 6f 67 79 abyte Technology
00000080 20 43 6f 2e 2c 20 4c 74 - 64 2e 00 4d 35 32 4c 2d Co., Ltd..M52L-
00000090 53 33 00 20 00 20 00 20 - 00 20 00 00 02 08 02 00 S3. . . . ......
000000a0 01 02 03 04 47 69 67 61 - 62 79 74 65 20 54 65 63 ....Gigabyte Tec
000000b0 68 6e 6f 6c 6f 67 79 20 - 43 6f 2e 2c 20 4c 74 64 hnology Co., Ltd
000000c0 2e 00 4d 35 32 4c 2d 53 - 33 00 78 2e 78 00 20 00 ..M52L-S3.x.x. .
000000d0 00 03 11 03 00 01 03 02 - 03 04 02 02 02 02 00 00 ................
000000e0 00 00 47 69 67 61 62 79 - 74 65 20 54 65 63 68 6e ..Gigabyte Techn
000000f0 6f 6c 6f 67 79 20 43 6f - 2e 2c 20 4c 74 64 2e 00 ology Co., Ltd..
00000100 20 00 20 00 20 00 00 04 - 23 04 00 01 03 1d 02 b2 . . ...#......²
00000110 0f 06 00 ff fb 8b 17 03 - 8e c8 00 80 0c 60 09 41 ...ÿû....È...` A
00000120 04 0a 00 0c 00 ff ff 04 - 05 06 53 6f 63 6b 65 74 .....ÿÿ...Socket
00000130 20 4d 32 00 41 4d 44 00 - 41 4d 44 20 41 74 68 6c M2.AMD.AMD Athl
00000140 6f 6e 28 74 6d 29 20 36 - 34 20 58 32 20 44 75 61 on(tm) 64 X2 Dua
00000150 6c 20 43 6f 72 65 20 50 - 72 6f 63 65 73 73 6f 72 l Core Processor
00000160 20 34 36 30 30 2b 00 20 - 00 20 00 20 00 00 05 18 4600+. . . ....
00000170 05 00 06 04 03 03 0a 0c - 00 14 00 02 04 06 00 07 ................
00000180 00 08 00 09 00 04 20 00 - 00 06 0c 06 00 01 1f 20 ... .. ........
00000190 13 00 8a 8a 00 41 30 00 - 00 06 0c 07 00 01 2f 20 .....A0......./
000001a0 13 00 7f 7f 00 41 31 00 - 00 06 0c 08 00 01 3f 20 .....A1.......?
000001b0 13 00 7f 7f 00 41 32 00 - 00 06 0c 09 00 01 4f 20 .....A2.... ..O
000001c0 13 00 7f 7f 00 41 33 00 - 00 07 13 0a 00 01 80 01 .....A3.........
000001d0 80 00 80 00 20 00 20 00 - 00 02 02 02 49 6e 74 65 .... . .....Inte
000001e0 72 6e 61 6c 20 43 61 63 - 68 65 00 00 07 13 0b 00 rnal Cache......
000001f0 01 80 01 80 00 80 00 20 - 00 20 00 00 02 02 02 49 ....... . .....I
00000200 6e 74 65 72 6e 61 6c 20 - 43 61 63 68 65 00 00 07 nternal Cache...
00000210 13 0c 00 01 81 01 00 02 - 00 02 20 00 20 00 00 02 .......... . ...
00000220 02 02 45 78 74 65 72 6e - 61 6c 20 43 61 63 68 65 ..External Cache
00000230 00 00 07 13 0d 00 01 01 - 00 00 04 00 00 20 00 20 ............. .
00000240 00 00 02 02 02 45 78 74 - 65 72 6e 61 6c 20 43 61 .....External Ca
00000250 63 68 65 00 00 08 09 0e - 00 01 16 02 00 ff 50 52 che... ......ÿPR
00000260 49 4d 41 52 59 20 49 44 - 45 00 20 00 00 08 09 0f IMARY IDE. ... .
00000270 00 01 16 02 00 ff 53 45 - 43 4f 4e 44 41 52 59 20 .....ÿSECONDARY
00000280 49 44 45 00 20 00 00 08 - 09 10 00 01 17 02 00 a1 IDE. ... ......¡
00000290 46 44 44 00 20 00 00 08 - 09 11 00 01 18 02 08 07 FDD. ... .......
000002a0 43 4f 4d 31 00 20 00 00 - 08 09 12 00 01 18 02 08 COM1. ... ......
000002b0 07 43 4f 4d 32 00 20 00 - 00 08 09 13 00 01 05 02 .COM2. ... .....
000002c0 05 05 4c 50 54 31 00 20 - 00 00 08 09 14 00 01 ff ..LPT1. ... ...ÿ
000002d0 02 0f 0d 4b 65 79 62 6f - 61 72 64 00 20 00 00 08 ...Keyboard. ...
000002e0 09 15 00 01 0f 02 0f 0e - 50 53 2f 32 20 4d 6f 75 .......PS/2 Mou
000002f0 73 65 00 44 65 74 65 63 - 74 65 64 00 00 08 09 16 se.Detected... .
00000300 00 01 00 02 12 10 55 53 - 42 00 20 00 00 09 0d 17 ......USB. .. ..
00000310 00 01 06 05 03 04 06 00 - 06 05 50 43 49 00 00 09 ..........PCI..
00000320 0d 18 00 01 06 05 04 04 - 07 00 06 05 50 43 49 00 ............PCI.
00000330 00 09 0d 19 00 01 06 05 - 04 04 08 00 06 05 50 43 . ............PC
00000340 49 00 00 09 0d 1a 00 01 - 06 05 03 04 09 00 06 05 I.. ........ ...
00000350 50 43 49 00 00 0d 16 1b - 00 03 00 00 00 00 00 00 PCI.............
00000360 00 00 00 00 00 00 00 00 - 00 00 01 6e 7c 55 53 7c ...........n|US|
00000370 69 73 6f 38 38 35 39 2d - 31 00 6e 7c 55 53 7c 69 iso8859-1.n|US|i
00000380 73 6f 38 38 35 39 2d 31 - 00 72 7c 43 41 7c 69 73 so8859-1.r|CA|is
00000390 6f 38 38 35 39 2d 31 00 - 61 7c 4a 50 7c 75 6e 69 o8859-1.a|JP|uni
000003a0 63 6f 64 65 00 00 10 0f - 1c 00 03 03 03 00 00 20 code...........
000003b0 00 fe ff 04 00 20 00 00 - 11 1b 1d 00 1c 00 fe ff .þÿ.. ........þÿ
000003c0 40 00 40 00 00 04 09 00 - 01 02 02 00 00 20 03 03 @.@... ...... ..
000003d0 04 05 06 41 30 00 42 61 - 6e 6b 30 2f 31 00 20 00 ...A0.Bank0/1. .
000003e0 20 00 20 00 20 00 00 11 - 1b 1e 00 1c 00 fe ff 40 . . ........þÿ@
000003f0 00 40 00 00 00 09 00 01 - 02 02 00 00 20 03 03 04 .@... ...... ...
00000400 05 06 41 31 00 42 61 6e - 6b 32 2f 33 00 20 00 20 ..A1.Bank2/3. .
00000410 00 20 00 20 00 00 11 1b - 1f 00 1c 00 fe ff 40 00 . . ........þÿ@.
00000420 40 00 00 00 09 00 01 02 - 02 00 00 20 03 03 04 05 @... ...... ....
00000430 06 41 32 00 42 61 6e 6b - 34 2f 35 00 20 00 20 00 .A2.Bank4/5. . .
00000440 20 00 20 00 00 11 1b 20 - 00 1c 00 fe ff 40 00 40 . .... ...þÿ@.@
00000450 00 00 00 09 00 01 02 02 - 00 00 20 03 03 04 05 06 ... ...... .....
00000460 41 33 00 42 61 6e 6b 36 - 2f 37 00 20 00 20 00 20 A3.Bank6/7. . .
00000470 00 20 00 00 13 0f 21 00 - 00 00 00 00 ff ff 0f 00 . ....!.....ÿÿ..
00000480 1c 00 01 20 00 00 14 13 - 22 00 00 00 00 00 ff ff ... ....".....ÿÿ
00000490 0f 00 1d 00 21 00 01 00 - 00 20 00 00 14 13 23 00 ....!.... ....#.
000004a0 00 00 00 00 00 00 00 00 - 1e 00 21 00 01 00 00 20 ..........!....
000004b0 00 00 14 13 24 00 00 00 - 00 00 00 00 00 00 1f 00 ....$...........
000004c0 21 00 01 00 00 20 00 00 - 14 13 25 00 00 00 00 00 !.... ....%.....
000004d0 00 00 00 00 20 00 21 00 - 01 00 00 20 00 00 20 0b .... .!.... .. .
000004e0 26 00 00 00 00 00 00 00 - 00 20 00 00 bc f4 27 00 &........ ..¼ô'.
000004f0 00 00 00 40 00 00 00 00 - 00 00 00 00 00 00 00 00 ...@............
00000500 01 06 16 00 00 00 00 00 - 03 00 00 00 00 00 3f 00 ..............?.
00000510 00 00 00 00 01 00 00 00 - 00 00 00 00 02 00 00 00 ................
00000520 00 00 00 00 03 00 00 00 - 00 00 00 00 04 00 00 00 ................
00000530 00 00 00 00 05 00 00 00 - 00 00 00 00 06 00 00 00 ................
00000540 00 00 00 00 07 00 00 00 - 00 00 00 00 40 00 10 0a ............@...
00000550 00 00 00 00 00 00 00 00 - eb 02 00 ff 01 00 00 00 ........ë..ÿ....
00000560 81 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000570 00 00 00 00 00 00 00 00 - 00 00 00 00 60 3f 38 00 ............`?8.
00000580 00 00 00 00 00 00 00 00 - 00 00 00 00 46 00 01 00 ............F...
00000590 00 00 00 00 02 00 00 00 - 00 00 00 00 35 f3 7e 5d ............5ó~]
000005a0 20 13 12 00 10 00 01 00 - 6b 00 10 74 00 00 00 00 .......k..t....
000005b0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000005c0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000005d0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000005e0 00 00 be d4 28 00 00 00 - 00 00 00 00 00 00 00 00 ..¾Ô(...........
000005f0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000600 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000610 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000620 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000630 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000640 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000650 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000660 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000670 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000680 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000690 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000006a0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000006b0 00 00 00 00 00 00 00 00 - c0 f4 29 00 15 13 16 14 ........Àô).....
000006c0 14 13 14 14 15 00 00 00 - 12 13 12 12 13 12 12 12 ................
000006d0 12 00 00 00 2b 00 00 00 - 00 00 00 00 00 00 00 00 ....+...........
000006e0 00 2f 2f 2f 2f 2f 2f 2f - 2f 00 00 00 00 00 22 32 .////////....."2
000006f0 11 20 20 25 20 10 22 12 - 11 10 20 25 20 00 00 00 . % ."... % ...
00000700 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000710 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000720 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000730 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000740 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000750 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000760 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000770 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000780 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000790 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000007a0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 c2 f4 ..............Âô
000007b0 2a 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 *...............
000007c0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000007d0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000007e0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000007f0 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000800 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000810 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000820 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000830 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000840 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000850 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000860 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000870 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000880 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000890 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000008a0 00 00 00 00 7f 04 2b 00 - 20 00 00 ......+. ..

بهروز عباسی
چهارشنبه 06 اردیبهشت 1391, 18:56 عصر
راستی متن مورد نظر من ایناست

Gigabyte Technology Co., Ltd M52L-S3
Award Software International, Inc..F6.03/20/2008

که البته روی سیستم های دیگه ممکنه مقدار فرق کنه

N30TheM4TRIX
سه شنبه 06 تیر 1391, 10:50 صبح
سلام حاجی
این کد رو امتحان کن متن بالا رو توی memo1 بنویس برنامه رو اجرا کن خروجی memo2 رو نگاه کن
حاشو ببر
implementation

{$R *.dfm}
type
TArray = array [0..56] of string;
var
sAr : TArray =('a', 'b', 'c', 'd', 'e', 'f','g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q','r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ,
'A', 'B', 'C', 'D', 'E', 'F','G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q','R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
,'.', ',', ' ','/','\');{, '0', '1','2', '3', '4', '5', '6', '7'
, '8', '9'); {}
procedure TForm1.Button1Click(Sender: TObject);
var I,J:Integer;

begin
for I := 1 to Length(Memo1.Text) do
begin
for j := 0 to Length(sAr) do
begin
if Memo1.Text[i]=sAr[J]then
Memo2.Text:=Memo2.Text+Memo1.Text[i];
Application.ProcessMessages;
end;
end;
end;

بهروز عباسی
سه شنبه 06 تیر 1391, 11:02 صبح
سلام حاجی
این کد رو امتحان کن متن بالا رو توی memo1 بنویس برنامه رو اجرا کن خروجی memo2 رو نگاه کنگریم علیک درود حاج محمد
اما این کدی که شما دادی چیزی عجیب و غریب تر از اون مقدار اصلی برمیگردونه(جسارت نشه:کف:)
حالا مقداری رو برمی گردونه از کجا بدونم مال CPU یا... هستش ؟؟

BORHAN TEC
سه شنبه 06 تیر 1391, 14:06 عصر
این کاری که شما برای بدست آوردن مشخصات Motherboard انجام می دهید کاملاً غیر اصولی است. برای بدست آوردن مشخصات مادربورد بهتره که از WMI استفاده کنید. در این رابطه قبلاً آقای "علیرضا شیرازی" کدی را در سایت codeproject.com قرار داده اند که می توانید آنرا به راحتی به کدهای دلفی تبدیل کنید. این هم آدرس مقاله مربوطه:
http://www.codeproject.com/Articles/17973/How-To-Get-Hardware-Information-CPU-ID-MainBoard-I

برای تبدیل کد ها هم آدرس زیر میتونه مفید واقع بشه:
http://stackoverflow.com/questions/2497253/how-to-get-motherboard-id-or-serial-number-delphi

بهروز عباسی
سه شنبه 06 تیر 1391, 14:30 عصر
این کاری که شما برای بدست آوردن مشخصات Motherboard انجام می دهید کاملاً غیر اصولی است
اینو میدونم برای این کار از wmi و تا حدی اسمبلی در سی و دلفی استفاده کردم و اطلاعات مورد نظر رو به دست آوردم و مشکلم حل شده

اما می خواستم بدونم چنین داده های رو چطوری باید استفاده کرد همین.
ممنون از کمک