📄 取reg里机器名的mac加密.txt
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, filectrl, ExtCtrls, strutils,registry;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
const
XorKey:array[0..7] of Byte=($B2,$09,$AA,$55,$93,$6D,$84,$47); //字符串加密用
{$R *.dfm}
function Enc(Str:String):String;//字符加密函數 這是用的一個異或加密
var
i,j:Integer;
begin
Result:='';
j:=0;
for i:=1 to Length(Str) do
begin
Result:=Result+IntToHex(Byte(Str[i]) xor XorKey[j],2);
j:=(j+1) mod 3;
end;
end;
function RightStr(Const Str: String; Size: Word): String;
begin
if Size > Length(Str) then Size := Length(Str) ;
RightStr := Copy(Str, Length(Str)-Size+1, Size)
end;
procedure TForm1.FormCreate(Sender: TObject);
var Reg:TRegistry;
ser,temp,command: string;
i:integer;
F:TextFile;
str,mac: string;
Tmac:string;
begin
temp:='c:\temp.txt';
//取注册表机器名
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('SoftWare\szjzkey',True);
ser:=Reg.ReadString('server');
Reg.Free;
//根据机器名取其Mac地址生成C盘Temp.txt文件
if fileexists(temp) then
deletefile(temp); //每次查询前将前次结果清除,上面三个清空或删除语句保证了多次查询时每次得到的都是最新查询的结果。
command:='command.com /C nbtstat '+'-a '+ser+' > '+temp;
winexec(pchar(command),sw_hide);
while not fileexists(temp) do
sleep(2000); //为了临时文件的建立等待3秒种,根据网络速度,可以适当增加此值
try
//memResult.lines.loadfromfile(temp);
except //此处不写任何代码,即关闭任何异常。
end;
//取Temp.txt文件末行截取右17位Mac加密
AssignFile(F,temp);
Reset(F);
for i:=0 to 13 do
Readln(F,str);
mac:=enc(RightStr(str,17));
CloseFile(F);
//删掉临时文件
if fileexists(temp) then
deletefile(temp);
tmac:='823987F73987864A87843087833B87804F';
if mac=tmac then
messagedlg('sucessful',mtinformation,[mbok],0)
else
messagedlg('软件未授权',mtinformation,[mbok],0);
PostMessage(self.handle,WM_CLOSE,0,0);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -