unit Ulogin;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, sButton, sEdit, MD5, httpsend, ssl_openssl, blcksock,
sSkinManager, sMemo, Vcl.Imaging.pngimage, Vcl.ExtCtrls, sPanel, sLabel, ShellAPI,
sGroupBox, Vcl.Buttons, sBitBtn, IniFiles, Vcl.ComCtrls, sPageControl, acPNG,
acImage;
type
TFLogin = class(TForm)
sEdit1: TsEdit;
sEdit2: TsEdit;
sButton1: TsButton;
sEdit3: TsEdit;
sGroupBox1: TsGroupBox;
sGroupBox2: TsGroupBox;
sSkinManager1: TsSkinManager;
sBitBtn2: TsBitBtn;
procedure FormCreate(Sender: TObject);
procedure sButton1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sBitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FLogin: TFLogin;
IniFile: TIniFile;
implementation
{$R *.dfm}
uses Unit2, Unit1;
{============================================================================}
function Pars(T_, ForS, _T: string): string;
var
a, b:integer;
begin
Result := '';
if (T_='') or (ForS='') or (_T='') then Exit;
a:=Pos(T_, ForS);
if a=0 then Exit else a:=a+Length(T_);
ForS:=Copy(ForS, a, Length(ForS)-a+1);
b:=Pos(_T, ForS);
if b>0 then
Result:=Copy(ForS, 1, b - 1);
end;
{============================================================================}
function GetUseFromWindows: string;
var
UserName: string;
UserNameLen: Dword;
Begin
UserNameLen := 255;
SetLength(UserName, UserNameLen);
if GetUserName(Pchar(UserName), UserNameLen) then
Result := Copy(UserName, 1, UserNameLen - 1)
else
Result := 'Unknown';
End;
{============================================================================}
function GetSerialNum: string;
var
SerialNum: Dword;
a, b: Dword;
Buffer: array[0..255] of char;
begin
Result :='';
try
GetVolumeInformation(Pchar('C:\'), Buffer, Sizeof(Buffer), @SerialNum, a, b,
nil, 0);
finally
Result := IntToStr(SerialNum);
end;
end;
{============================================================================}
function GetComputerNetName: string;
var
Buffer: array[0..255] of char;
size: Dword;
begin
size := 256;
if GetComputerName(Buffer, size) then
Result := buffer
else
Result := ''
end;
{============================================================================}
function StringToHex(str1,Separator:String):String;
var
buf:String;
i: Integer;
Begin
buf := '';
for i := 1 to Length(str1) do begin
buf := buf+IntToHex(Byte(str1[i]),2)+Separator;
end;
Result := buf;
end;
{============================================================================}
function getSerial: string;
begin
Result := StringToHex((GetComputerNetName + GetSerialNum + GetUseFromWindows), '');
end;
{============================================================================}
function getKey(Serial: string):string;
begin
Result := MD5DigestToStr(MD5String(Serial));
Result := MD5DigestToStr(MD5String(Result));
End;
{============================================================================}
procedure TFLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
end;
{============================================================================}
procedure TFLogin.FormCreate(Sender: TObject);
begin
IniFile:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'ArcheAge.ini');
FLogin.sEdit1.Text:=IniFile.ReadString('LOGIN', 'SKYPE', FLogin.sEdit1.Text);
FLogin.sEdit2.Text:=IniFile.ReadString('LOGIN', 'HWID', FLogin.sEdit2.Text);
FLogin.sEdit3.Text:=IniFile.ReadString('LOGIN', 'KEYPS', FLogin.sEdit3.Text);
IniFile.Free;
FLogin.sEdit2.Text := getKey(getSerial);
end;
{============================================================================}
procedure TFLogin.sBitBtn2Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', PChar('https://yadi.sk/d/dij77oE3dnfhJ'), nil, nil, SW_SHOW);
end;
{============================================================================}
procedure TFLogin.sButton1Click(Sender: TObject);
var
HTML: TStringList;
HTTP: THTTPSend;
begin
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV4.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV5.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV6.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV7.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV8.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV9.exe'), SW_HIDE);
if FLogin.sEdit1.Text='' then
raise Exception.Create('Ошибка авторизации, введенные данные не найдены!');
if FLogin.sEdit2.Text='' then
raise Exception.Create('Ошибка авторизации, введенные данные не найдены!');
if FLogin.sEdit3.Text='' then
raise Exception.Create('Ошибка авторизации, введенные данные не найдены!');
HTML:= TStringList.Create;
HTTP:= THTTPSend.Create;
HTTP.Protocol:= '1.1';
HTTP.Headers.Add('Accept: application/json, text/javascript, */*; q=0.0');
HTTP.Headers.Add('X-Requested-With: XMLHttpRequest');
HTTP.MimeType:='application/x-www-form-urlencoded; charset=UTF-8';
HTTP.UserAgent:='Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)';
if HTTP.HTTPMethod ('Post' , 'http://smolniksoftware.ucoz.net/testlicfile/Perm_License.txt') then
begin
HTML.LoadFromStream(HTTP.Document);
if Pos ((FLogin.sEdit1.Text + '_' + FLogin.sEdit2.text + '_' + FLogin.sEdit3.text + '_READY'), HTML.text) <> 0 then
begin
IniFile:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'ArcheAge.ini');
IniFile.WriteString('LOGIN', 'SKYPE', FLogin.sEdit1.Text);
IniFile.WriteString('LOGIN', 'HWID', FLogin.sEdit2.Text);
IniFile.WriteString('LOGIN', 'KEYPS', FLogin.sEdit3.Text);
IniFile.Free;
Form2.Caption:='Информация - [Лицензия: '+FLogin.sEdit1.Text+']';
Form1.Show;
FLogin.AlphaBlend:=True;
FLogin.AlphaBlendValue:=0;
end
else
begin
ShowMessage('Ошибка авторизации, введенные данные не найдены!');
end;
HTML.Free;
HTTP.Free;
end;
end;
{============================================================================}
end.