📄 fm_key.pas
字号:
unit Fm_Key;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, se_controls, KsSkinForms, Grids, hexeditor, KsSkinPanels,
KsSkinGroupBoxs, KsSkinEdits, KsSkinComboBoxs, KsSkinButtons,
KsSkinLabels, ksskinmessages;
type
Tfmkey = class(TForm)
SeSkinForm1: TSeSkinForm;
SeSkinComboBox1: TSeSkinComboBox;
SeSkinEdit1: TSeSkinEdit;
SeSkinRadioGroup1: TSeSkinRadioGroup;
SeSkinComboBox2: TSeSkinComboBox;
SeSkinPanel1: TSeSkinPanel;
SeSkinEdit2: TSeSkinEdit;
SeSkinEdit3: TSeSkinEdit;
SeSkinLabel1: TSeSkinLabel;
SeSkinLabel2: TSeSkinLabel;
SeSkinEdit4: TSeSkinEdit;
SeSkinLabel3: TSeSkinLabel;
SeSkinButton1: TSeSkinButton;
SeSkinButton2: TSeSkinButton;
SeSkinForm2: TSeSkinForm;
SeSkinMessage1: TSeSkinMessage;
procedure SeSkinComboBox2Change(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SeSkinRadioGroup1Click(Sender: TObject);
procedure SeSkinButton2Click(Sender: TObject);
procedure SeSkinButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
AutoAuth:Boolean;
end;
var
fmkey: Tfmkey;
implementation
uses fm_main,advic32,destool;
{$R *.dfm}
procedure Tfmkey.SeSkinComboBox2Change(Sender: TObject);
begin
Case SeSkinComboBox2.ItemIndex of
0: SeSkinEdit1.Text:='FFFFFFFFFFFF';
1:if SeSkinRadioGroup1.ItemIndex=0 then
SeSkinEdit1.Text:='A0A1A2A3A4A5'
else SeSkinEdit1.Text:='B0B1B2B3B4B5';
2: SeSkinEdit1.Text:='';
End;
end;
procedure Tfmkey.FormShow(Sender: TObject);
var
i:integer;
begin
for i:=0 to 63 do
SeSkinComboBox1.Items.Add('扇区'+IntToStr(i));
SeSkinComboBox1.ItemIndex:=0;
end;
procedure Tfmkey.SeSkinRadioGroup1Click(Sender: TObject);
begin
if SeSkinComboBox2.ItemIndex=1 then
if SeSkinRadioGroup1.ItemIndex=0 then
SeSkinEdit1.Text:='A0A1A2A3A4A5'
else SeSkinEdit1.Text:='B0B1B2B3B4B5';
end;
procedure Tfmkey.SeSkinButton2Click(Sender: TObject);
var
mode,sector:integer;
KEY:array[0..5]of byte;
ret,i:integer;
begin
if SeSkinRadioGroup1.ItemIndex=0 then mode:=KEYA
else mode:=KEYB;
for i:=0 to 5 do
KEY[i]:=StrToInt('$'+Copy(SeSkinEdit1.Text,i*2+1,2));
Sector:=SeSkinComboBox1.ItemIndex;
ret:=RFMifare_LoadKey(mode,sector,KEY[0]) ;
if ret<>0 then
SeSkinMessage1.showmessage('密码认证失败')
else
SeSkinMessage1.Showmessage('密码认证成功!');
{
if SeSkinComboBox1.ItemIndex<>0 then
begin
Sector:=SeSkinComboBox1.ItemIndex-1;
ret:=RFMifare_LoadKey(mode,sector,KEY[0]);
end
else
begin
for i:=0 to 63 do
begin
Sector:=i;
ret:=RFMifare_LoadKey(mode,sector,KEY[0]);
if ret<>0 then
begin
showmessage('密码下载失败');
break;
end;
end;
end;
}
end;
procedure Tfmkey.SeSkinButton1Click(Sender: TObject);
var
data:array[0..7]of byte;
key:array[0..15]of byte;
i,ret:integer;
begin
for i:=0 to 15 do
KEY[i]:=StrToInt('$'+Copy(SeSkinEdit3.Text,i*2+1,2));
for i:=0 to 7 do
data[i]:=StrToInt('$'+Copy(SeSkinEdit2.Text,i*2+1,2));
ret:= TriDES_Encrypt(@data,@key);
if ret=0 then
begin
SeSkinEdit4.Text:='';
for i:=0 to 7 do
SeSkinEdit4.Text:=SeSkinEdit4.Text+IntToHex(data[i],2);
end
else
SeSkinMessage1.showmessage('密码计算失败')
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -