![]() |
|
تحويل رقم القرص الصلب الى رقم - نسخة قابلة للطباعة +- 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 إقتباس :يحول ان اية واس الدى دول ارقام بس برش مش كل ما اكتب الحرف معين يعمل نفس الرقمما هذا! لم أفهم شيئا. أكتب بفصيح اللغة ![]() +وضح أكثر ما تريد أن تفعل (مثال)؟ كاقتراح هناك خواريزميات تشفير و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.المثال المرفق :
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 يمكن تغيير ال volum number وهو ليس الرقم التابت و يتغير بالفورمات أما الرقم الثابت فلا مجال اتغييره (برمجيا) فهو يتموضع على rom فى دائرة الهارد ديسك و لو كان بالإمكان تغييره لما إعتمدته جميع الشركات فى تمييز القطع المباعه منها عند طلب العميل لحقه فى الضمان |