www.pudn.com > oicqspysrc.zip > data.pas
unit data;
{$define DEBUGVERSION}
interface
uses dialogs,windows,SysUtils,forms;
type
TIPInfo=record
StartIp:string[18];
EndIp:string[18];
Country:string[16];
Location:string[54];
end;
procedure LoadIPInfo(FileName:String);
function FindIpInfo(ip:string):TIPInfo;
procedure SendFakeMsg(SrcId,SrcFace,DestId,DestIp:string;DestPort:WORD;msg:String;aDate,aTime:TDateTime);
function StrToIp(str:string):DWORD;
function GetParse(buf:array of char;buflen,StartPos:integer;var s:string):integer;
function ArrayStrCopy(var buf:array of char;buflen,pos:Integer;s:string):Integer;
function GetStrFromBuf(buf:array of char;BufLen,nOffset:DWORD):string;
function ParseStrFromBuf(buf:array of char;buflen,nOffset,flag:DWORD;var str:String):Integer;
var
IPInfoCnt:Integer;
IpInfos:array of TIPInfo;
nFakeCnt:Integer;
implementation
uses info,main,dbf_c;
function ParseStrFromBuf(buf:array of char;buflen,nOffset,flag:DWORD;var str:String):Integer;
var
i:DWORD;
begin
i:=nOffset;
str:='';
while(i'.')then
begin
s:=s+str[i];
end
else
begin
adr[parse]:=StrToIntDef(s,0);
Inc(parse);
s:='';
end;
end;
Result:=(adr[0]shl 24)or(adr[1] shl 16) or(adr[2] shl 8) or adr[3];
end;
function IPEqu(ip1,ip2:string):Boolean;
begin
Result:=(StrToIp(ip1)=StrToIp(ip2));
end;
function GetParse(buf:array of char;buflen,StartPos:integer;var s:string):integer;
var
i,st:Integer;
begin
s:='';
st:=StartPos;
Result:=0;
//remove head $1f and $1e
for i:=StartPos to buflen-1 do
begin
if(not (Ord(buf[i]) in [$1e,$1f]))then Break
else Inc(st);
end;
for i:=st to buflen-1 do
begin
if(not (Ord(buf[i]) in [$1e,$1f]))then
// if(Ord(buf[i])<>$1f)then
begin
s:=s+buf[i];
end
else
begin
Result:=i+1;
exit;
end;
end;
end;
function ArrayStrCopy(var buf:array of char;buflen,pos:Integer;s:string):Integer;
var
i,l:Integer;
begin
Result:=pos;
l:=length(s);
for i:=1 to l do
begin
if((pos+i-1)i)then
begin
if((eip-sip)