المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كود لمعرفة الرقم التسلسلي للهارد


medreg
2015-01-29, 13:42
السلام عليكم ورحمة الله تعالى
هذا الكود يعمل على الويندوز xp
ولكن لا يعمل على الويندوز 7
وكأن البرنامج المستعمل فيه ليس به كود الحماية
function GetIdeSerialNumber():string;
const IDENTIFY_BUFFER_SIZE = 512;
type
TIDERegs = packed record
bFeaturesReg : BYTE; // Used for specifying SMART "commands".
bSectorCountReg : BYTE; // IDE sector count register
bSectorNumberReg : BYTE; // IDE sector number register
bCylLowReg : BYTE; // IDE low order cylinder value
bCylHighReg : BYTE; // IDE high order cylinder value
bDriveHeadReg : BYTE; // IDE drive/head register
bCommandReg : BYTE; // Actual IDE command.
bReserved : BYTE; // reserved for future use. Must be zero.
end;
TSendCmdInParams = packed record
cBufferSize : DWORD;
irDriveRegs : TIDERegs;
bDriveNumber : BYTE;
bReserved : Array[0..2] of Byte;
dwReserved : Array[0..3] of DWORD;
bBuffer : Array[0..0] of Byte; // Input buffer.
end;
TIdSector = packed record
wGenConfig : Word;
wNumCyls : Word;
wReserved : Word;
wNumHeads : Word;
wBytesPerTrack : Word;
wBytesPerSector : Word;
wSectorsPerTrack : Word;
wVendorUnique : Array[0..2] of Word;
sSerialNumber : Array[0..19] of CHAR;
wBufferType : Word;
wBufferSize : Word;
wECCSize : Word;
sFirmwareRev : Array[0..7] of Char;
sModelNumber : Array[0..39] of Char;
wMoreVendorUnique : Word;
wDoubleWordIO : Word;
wCapabilities : Word;
wReserved1 : Word;
wPIOTiming : Word;
wDMATiming : Word;
wBS : Word;
wNumCurrentCyls : Word;
wNumCurrentHeads : Word;
wNumCurrentSectorsPerTrack : Word;
ulCurrentSectorCapacity : DWORD;
wMultSectorStuff : Word;
ulTotalAddressableSectors : DWORD;
wSingleWordDMA : Word;
wMultiWordDMA : Word;
bReserved : Array[0..127] of BYTE;
end;
PIdSector = ^TIdSector;
TDriverStatus = packed record
bDriverError : Byte;
bIDEStatus : Byte;
bReserved : Array[0..1] of Byte;
dwReserved : Array[0..1] of DWORD;
end;
TSendCmdOutParams = packed record
cBufferSize : DWORD;
DriverStatus : TDriverStatus;
bBuffer : Array[0..0] of BYTE;
end;
var
hDevice : THandle;
cbBytesReturned : DWORD;
// ptr : PChar;
SCIP : TSendCmdInParams;
aIdOutCmd : Array [0..(SizeOf(TSendCmdOutParams)+IDENTIFY_BUFFER_SIZE-1)-1] of Byte;
IdOutCmd : TSendCmdOutParams absolute aIdOutCmd;

procedure ChangeByteOrder(var Data; Size : Integer );
var
ptr : PChar;
i : Integer;
c : Char;
begin
ptr := @Data;
for i := 0 to (Size shr 1)-1 do
begin
c := ptr^;
ptr^ := (ptr+1)^;
(ptr+1)^ := c;
Inc(ptr,2);
end;
end;
begin
Result := ''; // return empty string on error
if SysUtils.Win32Platform=VER_PLATFORM_WIN32_NT then // Windows NT, Windows 2000

begin
//íãßä ÊÛíÑ PhysicalDrive0 Çáì PhysicalDrive1 Çæ PhysicalDrive2
hDevice := CreateFile( '\\.\PhysicalDrive0', GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0 );
end
else // Version Windows 95 OSR2, Windows 98
hDevice := CreateFile( '\\.\SMARTVSD', 0, 0, nil, CREATE_NEW, 0, 0 );
if hDevice=INVALID_HANDLE_VALUE then Exit;
try
FillChar(SCIP,SizeOf(TSendCmdInParams)-1,#0);
FillChar(aIdOutCmd,SizeOf(aIdOutCmd),#0);
cbBytesReturned := 0;
with SCIP do
begin
cBufferSize := IDENTIFY_BUFFER_SIZE;
bDriveNumber := 0;
with irDriveRegs do
begin
bSectorCountReg := 1;
bSectorNumberReg := 1;
bDriveHeadReg := $A0;
bCommandReg := $EC;
end;
end;
if not DeviceIoControl( hDevice, $0007c088, @SCIP, SizeOf(TSendCmdInParams)-1,
@aIdOutCmd, SizeOf(aIdOutCmd), cbBytesReturned, nil ) then Exit;
finally
CloseHandle(hDevice);
end;
with PIdSector(@IdOutCmd.bBuffer)^ do
begin
ChangeByteOrder( sSerialNumber, SizeOf(sSerialNumber) );
(PChar(@sSerialNumber)+SizeOf(sSerialNumber))^ := #0;
Result := PChar(@sSerialNumber);
end;
end;
function get_password(a: string): string;
var
b: string;
c: char;
i,n: integer;
begin
b:='';
for i := 1 to length(a) do
begin
c:= a[i];
n:= ord(c);
n:=n+(2*i);
b:=b+chr(n);
end;
Result:=b;
end;

في الويندوز xp يظهر رقم الهارد ديسك في Edit حتى يتم جلب رمز التشفير
وفي الويندوز 7 لا يظهر رقم الهارد ديسك يعني تظهر edit فارغة
وبناء على وجود edit فارغة بمجرد الضغط على زر الدخول الى البرنامج يدخل عادي بدون طلب رمز التشفير

medreg
2015-01-31, 11:43
اين انتم يا اهل الخبرة
42 مشاهدة للموضون
ولا رد واحد ما هذا
هل الموضوع غامض أم ماذا؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

naoum78
2015-02-05, 12:48
أشكر الاخ على طرح الموضوع أود طرح بعض النقاط في ما يخص استخدام عدة تقنيات تسمح للمبرمج بحماية برامجه . في الحقيقة الامر نوعا ما معقد يحتوي على الكثير من الطرق منها
استخدام ارقام اجزاء الهارد ديسك c: d: ....
استخدام عنوان بطاقة الشبكة adresse mac
استخدام معلومات البيوس bios
استخدام معلومات نظام التشغيل windows
استخدام تقنيات التشفير
استخدام الدنقل dongle usb,com,...
أتمنى من الاخوة أو الادارة انشاء صفحة خاصة بتقنيات حماية البرامج

nourbour11
2015-10-08, 22:43
شكراااا جزيلا

Johntech
2015-10-20, 18:13
مشكووووووووووووووووووور

pack8
2015-10-26, 10:51
أشكر الاخ على طرح الموضوع أود طرح بعض النقاط في ما يخص استخدام عدة تقنيات تسمح للمبرمج بحماية برامجه . في الحقيقة الامر نوعا ما معقد يحتوي على الكثير من الطرق منها
استخدام ارقام اجزاء الهارد ديسك c: D: ....
استخدام عنوان بطاقة الشبكة adresse mac
استخدام معلومات البيوس bios
استخدام معلومات نظام التشغيل windows
استخدام تقنيات التشفير
استخدام الدنقل dongle usb,com,...
أتمنى من الاخوة أو الادارة انشاء صفحة خاصة بتقنيات حماية البرامج




هل لديك خبرة في هذا المجال افدنا؟؟؟؟؟

Geekkmonir
2015-11-26, 16:37
شكرا لك أخي

legma
2016-01-08, 17:00
شكرا على المجهود

djaafar007
2016-01-16, 20:09
جاري التجريب وفقكة الله

mohamedmahdi
2016-01-18, 21:31
شكـــــــــــرا أخي

عبد العزيز 07
2016-02-21, 21:23
بارك الله فيك

mohamed bouzid
2016-02-23, 13:51
جزاك الله خيرا