mirror of
https://github.com/fast4x/datalock.git
synced 2025-06-05 21:49:16 +02:00
Initial Commit
This commit is contained in:
248
FmReader.pas
Normal file
248
FmReader.pas
Normal file
@ -0,0 +1,248 @@
|
||||
(*
|
||||
DataLock is a Tool for data protection
|
||||
Copyright (C) 2022 Rino Russo
|
||||
https://www.rinorusso.it
|
||||
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*)
|
||||
|
||||
|
||||
unit FmReader;
|
||||
|
||||
{$MODE Delphi}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
||||
StdCtrls, ExtCtrls;
|
||||
|
||||
type
|
||||
|
||||
{ TReaderForm }
|
||||
|
||||
TReaderForm = class(TForm)
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
editcodapp: TLabeledEdit;
|
||||
editcodregistraz: TLabeledEdit;
|
||||
editpin: TLabeledEdit;
|
||||
editcodserial: TLabeledEdit;
|
||||
memData: TMemo;
|
||||
btnClose: TButton;
|
||||
lblHelp: TLabel;
|
||||
lblSize: TLabel;
|
||||
procedure btnCloseClick(Sender: TObject);
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure Button2Click(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
public
|
||||
{ Public declarations }
|
||||
var cReaderFile, pin, codseriale, codregistrazione :string;
|
||||
PayloadPresent :boolean;
|
||||
end;
|
||||
|
||||
var
|
||||
ReaderForm: TReaderForm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
UPayload,md5,unit_crypt,umain, unit_pin;
|
||||
|
||||
{$R *.frm}
|
||||
|
||||
procedure TReaderForm.btnCloseClick(Sender: TObject);
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TReaderForm.Button1Click(Sender: TObject);
|
||||
var
|
||||
PL: TPayload;
|
||||
DataStr: string;
|
||||
begin
|
||||
|
||||
PL := TPayload.Create(cReaderFile);
|
||||
try
|
||||
if PL.HasPayload then
|
||||
begin
|
||||
lblSize.Caption := Format('Payload data size = %d', [PL.PayloadSize]);
|
||||
SetLength(DataStr, PL.PayloadSize);
|
||||
PL.GetPayload(PChar(DataStr)^);
|
||||
|
||||
// form_crypt.strsorg.Text:=DataStr;
|
||||
// form_crypt.btnDecrypt1click(sender);
|
||||
|
||||
// memData.Text := form_crypt.strdest.Text;
|
||||
// memData.Text := copy(DataStr,0,6); // lunghezza nome sigillo per Eureka
|
||||
// memData.Text := copy(DataStr,0,11); // lunghezza nome sigillo per SecureDrive
|
||||
memData.Text := copy(DataStr,0,7); // lunghezza nome sigillo per DataLck
|
||||
|
||||
form_crypt.strsorg.Text:=copy(DataStr,pos('-',DataStr)+1,length(DataStr));
|
||||
form_crypt.btnDecrypt1click(sender);
|
||||
editcodserial.Text:=form_crypt.strdest.Text;
|
||||
|
||||
//if MD5Print(MD5String(memdata.Lines[0])) = memdata.Lines[1] then showmessage('match') else showmessage('not match');
|
||||
end
|
||||
else
|
||||
begin
|
||||
lblSize.Caption := 'No payload present';
|
||||
lblSize.Font.Style := [fsBold];
|
||||
end;
|
||||
finally
|
||||
PL.Free;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
procedure TReaderForm.Button2Click(Sender: TObject);
|
||||
var
|
||||
PL: TPayload;
|
||||
DataStr: string;
|
||||
pos1,pos2,pos3:integer;
|
||||
begin
|
||||
|
||||
PayloadPresent:=false;
|
||||
|
||||
PL := TPayload.Create(cReaderFile);
|
||||
try
|
||||
if PL.HasPayload then
|
||||
begin
|
||||
lblSize.Caption := Format('Payload data size = %d', [PL.PayloadSize]);
|
||||
SetLength(DataStr, PL.PayloadSize);
|
||||
PL.GetPayload(PChar(DataStr)^);
|
||||
//showmessage('chiave eureka pre decrypt '+DataStr);
|
||||
|
||||
form_crypt.strsorg.Text:=copy(DataStr,0,pos('-',DataStr)-1);
|
||||
form_crypt.btnDecrypt1click(sender);
|
||||
editpin.Text := form_crypt.strdest.Text;
|
||||
// showmessage('pin '+form_crypt.strdest.Text);
|
||||
|
||||
if formPin.showmodal= mrOk then begin
|
||||
pin:=formPin.pwd.Text;
|
||||
end;
|
||||
|
||||
// InputQuery('PIN Secure Drive', '', TRUE, pin);
|
||||
|
||||
|
||||
if pin <> editpin.Text then begin
|
||||
showmessage('Pin not recognized!');
|
||||
|
||||
application.Terminate;
|
||||
|
||||
end;
|
||||
|
||||
PayloadPresent:=true; // payload presente e codice pin corretto
|
||||
|
||||
|
||||
|
||||
//form_crypt.ShowModal;
|
||||
|
||||
|
||||
// form_crypt.strsorg.Text:=copy(DataStr,pos('-',DataStr)+1,length(DataStr));
|
||||
pos1:=pos('-',DataStr);
|
||||
pos2:=pos('{',DataStr);
|
||||
pos2:=pos2-pos1;
|
||||
|
||||
|
||||
//showmessage('- '+inttostr(pos1)+' { '+inttostr(pos2)+' } '+inttostr(pos3));
|
||||
form_crypt.strsorg.Text:=copy(DataStr,pos1+1,pos2-1);
|
||||
form_crypt.btnDecrypt1click(sender);
|
||||
|
||||
//showmessage('chiave eureka pre decrypt '+form_crypt.strsorg.Text);
|
||||
//showmessage('chiave eureka post decrypt '+form_crypt.strdest.Text);
|
||||
//memData.Text := form_crypt.strdest.Text; // imposta chiave a quella decodificata
|
||||
memData.Text := form_crypt.strsorg.Text; // imposta chiave a quella criptata
|
||||
|
||||
editcodserial.Text := form_crypt.strdest.Text;
|
||||
|
||||
codseriale:=form_crypt.strdest.Text;;
|
||||
|
||||
// form_crypt.strsorg.Text:=copy(DataStr,pos('{',DataStr)+1,length(DataStr));
|
||||
// form_crypt.btnDecrypt1click(sender);
|
||||
// editcodregistraz.Text := form_crypt.strdest.Text;
|
||||
|
||||
pos3:=pos('}',DataStr);
|
||||
pos2:=pos('{',DataStr);
|
||||
pos3:=pos3-pos2;
|
||||
|
||||
editcodregistraz.Text:=copy(DataStr,pos('{',DataStr)+1,pos3-1);
|
||||
//showmessage('cod registrazione '+editcodregistraz.Text);
|
||||
|
||||
codregistrazione:=editcodregistraz.Text;
|
||||
|
||||
|
||||
form_crypt.strsorg.Text:=copy(DataStr,pos('}',DataStr)+1,length(DataStr));
|
||||
form_crypt.btnDecrypt1click(sender);
|
||||
editcodapp.Text := form_crypt.strdest.Text;
|
||||
//showmessage('cod applicazione '+editcodapp.Text);
|
||||
|
||||
showmessage('cod app '+editcodapp.text+' cod licenza '+editcodserial.Text);
|
||||
|
||||
if MD5Print(MD5String(trim(editcodapp.text))) <> editcodserial.Text then begin
|
||||
showmessage('Questa copia è stata manomessa! Impossibile usarla.');
|
||||
application.terminate;
|
||||
end;
|
||||
|
||||
// show;
|
||||
|
||||
form1.OgDaysCode1.AutoDecrease:=true;
|
||||
form1.OgDaysCode1.AutoCheck:=true;
|
||||
form1.OgDaysCode1.CheckCode(true);
|
||||
|
||||
|
||||
|
||||
//exit;
|
||||
// memData.Text := DataStr;
|
||||
//if MD5Print(MD5String(memdata.Lines[0])) = memdata.Lines[1] then showmessage('match') else showmessage('not match');
|
||||
end
|
||||
else
|
||||
begin
|
||||
lblSize.Caption := 'No payload present';
|
||||
lblSize.Font.Style := [fsBold];
|
||||
PayloadPresent:=false;
|
||||
showmessage('Datalock is in unsafe mode. Upgrade to Premium.');
|
||||
Form1.Statuslbl.Caption:='Datalock is in unsafe mode. Upgrade to Premium.';
|
||||
// application.Terminate;
|
||||
end;
|
||||
finally
|
||||
PL.Free;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
procedure TReaderForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
PayloadPresent:=false;
|
||||
cReaderFile:=application.ExeName;
|
||||
// Button1Click(sender);
|
||||
// Form_crypt.KeyStr:='pRYXo6s5';
|
||||
Form_crypt.KeyStr:='pRYXo6s5';
|
||||
Button2Click(sender);
|
||||
|
||||
//Form_crypt.KeyStr:=memData.Text;
|
||||
//showmessage('chiave DataLock: '+memData.Text);
|
||||
(*
|
||||
if memData.Text='' then begin
|
||||
showmessage('Questa copia non è originale, impossibile da usare!');
|
||||
application.Terminate;
|
||||
end;
|
||||
*)
|
||||
end;
|
||||
|
||||
end.
|
Reference in New Issue
Block a user