Ada beberapa metode serial number yang digunakan :
1. Tidak memperhatikan Nama user, biasanya serial number ini dapat digunakan oleh semua user. Metode yang dipakai biasanya adalah membagi suatu bilangan dengan bilangan tertentu kemudian sisa hasil baginya yang digunakan.
Contoh : Misalkan kombinasi serial number dengan mod
" Angka dari 1000001 sampai 3000001 kemudian mod 87184.
" Jika sisa hasil baginya 0 maka cetak hasil pembagiannya.
" Sisa hasil pembagiannya itulah yang digunakan untuk memproteksi software.
Contoh aplikasi yang menggunakan metode ini :
ACDSee (kombinasi serialnya xxxxx-xxxxx-xxxxx-xxxxx).
2. Memperhatikan Nama User, serial number akan berbeda untuk setiap user name yang berbeda. Metode ini menggunakan kombinasi yang dari hasil enkripsi user name yang digunakan. Ada berbagai macam metode untuk mengenkripsi user name tersebut, dari hasil enkripsi itulah yang merupakan serial number yang valid untuk satu user name tersebut.
Baik, mari kita mulai membahasnya bersama :
Ada beberapa hal yang perlu diperhatikan yakni :
* Input Karakter.
merupakan inputan karakter yang nantinya di enkripsi sehingga menghasilkan kode enkripsi.
* Deretan Karakter merupakan Kunci yang akan digeser.
dari inputan diatas maka digeser berdasarkan deretan karakter.
* Kunci Penggeser, kita ambil serial number dari volume drive C:.
nilai serial number dari volume drive C biasanya bilangan hexadesimal sehingga perlu dirubah ke bilangan ascii.
* Output Karakter.
hasil dari proses berupa kode kombinasi serial number.
Kita mulai dengan contoh aplikasinya :Sehingga BALIHACK di enkripsi menjadi AAKa`Ia@, kode tersebutlah merupakan serial number yang dihasilkan. Metode tersebut merupakan metode sederhana, anda dapat mengembangkannya sendiri. Misalkan anda membuatkan tabel kunci atau anda menggunakan serial port I/O sebagai nilai penggeser(tentunya anda harus mengerti bilangan biner) dan lainya sebagainya.
* Inputan karakter misalnya : BALI HACK
* Kita mengambil contoh deretan kunci yang digeser sebagai berikut :
BALIHACK `a~bD!c@d#E$e%f^F&g*h(G)i-jJ=k+l\M|m{n}N;o:p'O"qs.t?Q/uvRwxSyzT01U23V45W67X89Y0Z
* Kunci penggesernya adalah serial number drive C: misalkan 2941-13F8
kemudian kita terjemahkan ke kode ascii 294113F8 = 5057524949517056.
* Mari kita mulai manggeser :
B digeser 6 karakter menjadi A
A digeser 9 karakter menjadi A
L digeser 7 karakter menjadi K
I digeser 0 karakter menjadi a
H digeser 9 karakter menjadi `
A digeser 5 karakter menjadi I
C digeser 7 karakter menjadi a
K digeser 6 karakter menjadi @
source code dengan menggunakan delphiAndalah yang tahu apa yang harus anda lakukan setelah membaca artikel ini, anda membuangnya, menyimpan, menggunakan atau lainnya. Positif atau Negatif. Terimakasih buat semua anak-anak tkj, keep a live for our land. Terima kasih buat endut yg selalu ngeganggu bobo siang aku.!
//dibuat oleh balihack.or.id (spc).
//anda dapat memodifikasi sesuai dengan keinginan anda
//mohon kirimkan hasil modifikasi anda ke email best_ajum@yahoo.com
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
function GetChar(chSource: Char; Dictionary: string; intShift: integer): Char;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Tform1.GetChar(chSource: Char; Dictionary: string; intShift: integer): Char;
var
i, j: Integer;
begin
Result := chSource;
i := 1;
j := Length(Dictionary);
while (i <= j) do if (Dictionary[i] = chSource) then begin Result := Dictionary[(i + intShift) mod j]; exit end else Inc(i); end; procedure TForm1.Button1Click(Sender: TObject); var i, j, intLenSource: Integer; strDictionary : string; begin if edit1.Text = '' then begin MessageDlg('Inputkan karakter yang akan di generate !', mtError, [mbOk], 0); exit; end; strDictionary:= 'BALIHACK `a~bD!c@d#E$e%f^F&g*h(G)i-jJ=k+l\M|m{n}N;o:p'+#39+'O"qs.t?Q/uvRwxSyzT01U23V45W67X89Y0Z'; intLenSource := Length(edit1.Text); edit4.Clear; j := 1; for i := 1 to intLenSource do begin edit4.text := edit4.text + GetChar(edit1.Text[i], strDictionary,strtoint(edit3.Text[j])); Inc(j); //melakukan pegeseran mulai dari 1 ke panjang key if (j > Length(edit3.Text)) then
j := 1;
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
var VolumeSerialNumber: DWORD;
MaximumComponentLength: DWORD;
FileSystemFlags: DWORD;
//SerialNumber: string;
jawab,i : integer;
hasil,str : string;
begin
GetVolumeInformation('C:\',
nil,
0,
@VolumeSerialNumber,
MaximumComponentLength,
FileSystemFlags,
nil,
0);
str:=IntToHex(HiWord(VolumeSerialNumber), 4) +
//'-' +
IntToHex(LoWord(VolumeSerialNumber), 4);
edit2.Text:=IntToHex(HiWord(VolumeSerialNumber), 4) +
'-' +
IntToHex(LoWord(VolumeSerialNumber), 4);
//showmessage(str);
for i:=1 to length(str) do
begin
hasil:=copy(str,1,length(str));
if (hasil[i] in ['a'..'z']) then
jawab:=ord(hasil[i])
else
if (hasil[i] in ['A'..'Z']) then
jawab:=ord(hasil[i])
else
if (hasil[i] in ['0'..'9']) then
jawab:=ord(hasil[i])
else
if (hasil[i] in [' ','!','"','#','$','%','&','(',')','*','+',',','-','.','/',':',';','<','=','>','?','@','[',']','^','_','`','{','|','}','~'] ) then
jawab:=ord(hasil[i])
else
begin
jawab:=39;
end;
edit3.Text:=edit3.Text+inttostr(jawab);
end;
end;
end.

0 komentar:
Posting Komentar