delphi4arab منتديات دلفي للعرب
تحويل رقم القرص الصلب الى رقم - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : تحويل رقم القرص الصلب الى رقم (/showthread.php?tid=2409)



تحويل رقم القرص الصلب الى رقم - meroo_ameer - 12-09-2010

السلام عليكم ورحمة الله وبركاته
كيف أحول الحروف الى ارقام
بمعنى احسن رقم القرص الصلب حروف مثل wd whrsf2433535
كيف احوله الى ارقام مثلا324565466543
تتم علية عملية حسابية


تحويل رقم القرص الصلب الى رقم - kachwahed - 12-09-2010

وعليكم السلام ورحمة الله وبركاته
إقتباس :كيف أحول الحروف الى ارقام
IntToStr لكل Ord كحل سريع... لكن على أي أساس يتم التحويل
+ ممكن توضح ما الذي تحاول القيام به، ربما نجد طريقة أحسن!



تحويل رقم القرص الصلب الى رقم - meroo_ameer - 15-09-2010

بدلا ان يكون مكتوب هكذا asd
تحول ضسي الى ارقام دون ان يكرر نفس الرقم لنفس الحرف
الفكرة حماية جيدة لبرنامجى
باستخدام رقم القرص الصلب الذي يظهر عندى wd-ajj3434


تحويل رقم القرص الصلب الى رقم - kachwahed - 15-09-2010

إقتباس :يحول ان اية واس الدى دول ارقام بس برش مش كل ما اكتب الحرف معين يعمل نفس الرقم
ما هذا! لم أفهم شيئا. أكتب بفصيح اللغة Smile
+وضح أكثر ما تريد أن تفعل (مثال)؟

كاقتراح هناك خواريزميات تشفير وHash
ملاحظة: لا علاقة لهذا بحماية "كويسة"!



تحويل رقم القرص الصلب الى رقم - مراد23 - 20-09-2010

السلام عليكم ورحم الله وبركاته

اخي العزيز لديا محاولة

الشرح
تستطيع بعد الحصول على رقم الهارديسك في سلسلة نصية

أن تدخله في حلقة بنفس طول السلسلة

مع وجود تعليمة الشرط CASE
تستطيع تغير الارقام في الكود كما تشاء

كود :
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} function GetIdeSerialNumber0():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 //???? EU?? PhysicalDrive0 C?? PhysicalDrive1 C? 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; procedure TForm1.Button1Click(Sender: TObject); var N,I : integer; B: char; S,R:string; begin s:=trim(AnsiUpperCase(GetIdeSerialNumber0)); N:=length(s); R:=''; for I:= 1 to N do begin b:=S[i]; case b of 'A'..'D': R:=r+'2'; 'E'..'H': R:=r+'7'; 'I'..'L': R:=r+'3'; 'M'..'P': R:=r+'4'; 'Q'..'S': R:=r+'5'; 'T'..'V': R:=r+'6'; 'W'..'Z': R:=r+'1'; '-' : R:=r+'3' else R:=R+S[i]; end; end; ShowMessage('رقم الهارديسك بعد التحويل : '+R); end; procedure TForm1.FormCreate(Sender: TObject); var s:string; begin s:=(GetIdeSerialNumber0); Edit1.Text:=s; end; end.


المثال المرفق :

.rar   ConverNeHardisque.rar (الحجم : 174.24 ك ب / التحميلات : 133)


تحويل رقم القرص الصلب الى رقم - php3man - 21-09-2010

السلام عليكم ورحمه الله وبركاته

شرح كافي ووافي مراد 23

هل يوجد أمكانيه التعديل علي رقم القرص الصلب متل أداه PBDownForce
التي تقوم بعمل spoof لرقم القرص الحقيقي


تحويل رقم القرص الصلب الى رقم - khiro.alg - 23-09-2010

السام عليكم
أظن أنك تريد من برنامجك أن لا يعمل إلا إدا تطابقت معلومات القرص الصلب
تلك حماية شخصية - لكن من له معرفة قليلة بالعندسة العكسية يتغلب على الأمر بسهولة ويجعله يقفز أوامر الحماية تلك ويشتغل في أي جهاز


تحويل رقم القرص الصلب الى رقم - khalmoh1971 - 24-12-2013

شكرا جدا جدا فكرة جميلة


تحويل رقم القرص الصلب الى رقم - خالد على22 - 24-12-2013

php3man كتب :هل يوجد أمكانيه التعديل علي رقم القرص الصلب متل أداه PBDownForce
التي تقوم بعمل spoof لرقم القرص الحقيقي

يمكن تغيير ال volum number وهو ليس الرقم التابت و يتغير بالفورمات

أما الرقم الثابت فلا مجال اتغييره (برمجيا)
فهو يتموضع على rom فى دائرة الهارد ديسك

و لو كان بالإمكان تغييره
لما إعتمدته جميع الشركات فى تمييز القطع المباعه منها عند طلب العميل لحقه فى الضمان