?? main.pas
字號(hào):
unit Main;
{$define FULLVERSION}
//{$define REDUCE_VERSION}
{$define SAFEVERSION}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
NMUDP, StdCtrls, ExtCtrls, Spin, Buttons, ComCtrls, Menus, NWNotifyIcon,
ImgList,WinSOCK, ToolWin,ProxySocket;
type
TUserInfo=record
sock:TNMUDP;
strUID,strIP,strPort:string;
end;
TMainForm = class(TForm)
DataPanel: TPanel;
DataSplitter: TSplitter;
ViewSplitter: TSplitter;
ViewPanel: TPanel;
IPAddrList: TListBox;
AlertSplitter: TSplitter;
AnalyList: TListBox;
SendPage: TPageControl;
TabSheet1: TTabSheet;
LocalMsgList: TListBox;
TabSheet2: TTabSheet;
LocalTxtList: TListBox;
RecvPage: TPageControl;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
SrvMsgList: TListBox;
SrvTxtList: TListBox;
mLocal: TPopupMenu;
mSrv: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
SaveDlg: TSaveDialog;
MainMenu1: TMainMenu;
F1: TMenuItem;
O1: TMenuItem;
N5: TMenuItem;
mSysCfg: TMenuItem;
StatusBar: TStatusBar;
FakeUDP: TNMUDP;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
Timer: TTimer;
N9: TMenuItem;
N10: TMenuItem;
mViewSend: TMenuItem;
InfoMenu: TPopupMenu;
mClearInfo: TMenuItem;
mSaveInfo: TMenuItem;
TrayMenu: TPopupMenu;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
mFakeMsg: TMenuItem;
mScanIp: TMenuItem;
N16: TMenuItem;
mPortScanner: TMenuItem;
mNetBiosInfo: TMenuItem;
mViewRecv: TMenuItem;
mViewAlert: TMenuItem;
mScanNBInfo: TMenuItem;
mNuke: TMenuItem;
ImageList1: TImageList;
mHoldNuke: TMenuItem;
NetBIOS1: TMenuItem;
N17: TMenuItem;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
btnFake: TToolButton;
btnPortScan: TToolButton;
btnBEUIInfo: TToolButton;
btnNuke: TToolButton;
btnLanuch: TToolButton;
ToolButton2: TToolButton;
btnFirstAid: TToolButton;
mFirstAid: TMenuItem;
NWNotifyIcon1: TNWNotifyIcon;
procedure LocalMsgListClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure SrvMsgListClick(Sender: TObject);
procedure LocalMsgListKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure SrvMsgListKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure N2Click(Sender: TObject);
procedure mSysCfgClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnFakeClick(Sender: TObject);
procedure IPAddrListDblClick(Sender: TObject);
procedure btnIPScanClick(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure mViewSendClick(Sender: TObject);
procedure btnPortScanClick(Sender: TObject);
procedure mClearInfoClick(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure mScanIpClick(Sender: TObject);
procedure mNetBiosInfoClick(Sender: TObject);
procedure btnBEUIInfoClick(Sender: TObject);
procedure mScanNBInfoClick(Sender: TObject);
procedure mViewRecvClick(Sender: TObject);
procedure mViewAlertClick(Sender: TObject);
procedure mNukeClick(Sender: TObject);
procedure btnNukeClick(Sender: TObject);
procedure btnLanuchClick(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure LocalMsgListDblClick(Sender: TObject);
procedure SwitcherOnSend(buf:array of char;buflen:Integer;from:TSockAddr;Dest:TSockAddr;var drop:Boolean);
procedure SwitcherOnRecv(buf:array of char;buflen:Integer;from:TSockAddr;Dest:TSockAddr;var drop:Boolean);
procedure SwitcherOnNewSocket(Sender:TObject);
procedure btnFirstAidClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
mCurCnt,mTxCnt,mRxCnt:Integer;
strUserId,strPass:string;
nUserId:Integer;
info:array of TUserInfo;
nInfoCnt:Integer;
function FindUID(uid,ip,port:string):Boolean;
{$ifndef SAFEVERSION}
function FindProxy(ip:string;port:WORD;var p:TNMUDP):Boolean;
{$ENDIF}
function GetSelectInfo(var id,ip,port:string):Boolean;
// procedure Txt2Buffer(str:string;var buf:array of char;var buflen:integer);
procedure ProcessSrvMsg(FromIP:string;FromPort:WORD;buf:array of char;bufLen:Integer);
procedure ProcessClientMsg(buf:array of char;buflen:Integer);
procedure AddLocalMsg(buf:array of char;buflen:Integer);
procedure AddLocalHex(buf:array of char;buflen:Integer);
procedure AddLocalTxt(buf:array of char;buflen:Integer);
procedure AddLocalList(buf:array of char;buflen:Integer);
procedure AddSrvMsg(FromIP:string;FromPort:WORD;buf:array of char;buflen:Integer);
procedure AddSrvHex(FromIP:String;FromPort:WORD;buf:array of char;buflen:Integer);
procedure AddSrvTxt(FromIP:String;FromPort:WORD;buf:array of char;buflen:Integer);
procedure AddSrvList(FromIP:String;FromPort:WORD;buf:array of char;buflen:Integer);
function BeforeSend(var buf:array of char;buflen:Integer):Boolean;
function AfterRecv(var buf:array of char;buflen:Integer):Boolean;
// procedure AddFriendIPAddr(id,ip:string);
procedure AddFriendInfo(id,ip,port,dummy,face,name:string);
procedure LaunchOICQ;
public
{ Public declarations }
Switcher:TUDPSwitcher;
procedure SendMsg(DestId,msg:string);
function Buffer2Hex(buf:array of char;buflen:integer):string;
function Buffer2Txt(buf:array of char;buflen:Integer):String;
function Buffer2List(buf:array of char;buflen:Integer):string;
end;
var
MainForm: TMainForm;
implementation
uses IpHdr,FirstAid,SysCfg,fakemsg,PortScan,about,info,CloneScan,data,NetInfoDlg,HoldNuke,MsgView;
{$R *.DFM}
procedure TMainForm.ProcessSrvMsg(FromIP:string;FromPort:WORD;buf: array of char; bufLen: Integer);
var
i:Integer;
id,ip,port,dummy,face:string;
begin
if(Ord(buf[4])=$81)then{朋友登陸IP通知}
begin
i:=7;
while(i<buflen)do
begin
i:=GetParse(buf,buflen,i,id);
if(i=0)then exit;
i:=GetParse(buf,buflen,i,ip);
if(i=0)then exit;
i:=GetParse(buf,buflen,i,port);
if(i=0)then exit;
i:=GetParse(buf,buflen,i,dummy);
if(i=0)then exit;
i:=GetParse(buf,buflen,i,face);
AddFriendInfo(id,ip,port,dummy,face,GetOICQUserName(id));
if(i=0)then exit;
// if(BotCfgDlg.GetGreetMsg(id,Msg))then
// begin
// SendMsg(id,Msg);
// end;
end;
end
else if(Ord(buf[4])=$14)then//在線朋友IP通知
begin
i:=9;
while(i<buflen)do
begin
i:=GetParse(buf,buflen,i,id);
if(i=0)then exit;
i:=GetParse(buf,buflen,i,ip);
if(i=0)then exit;
i:=GetParse(buf,buflen,i,port);
if(i=0)then exit;
i:=GetParse(buf,buflen,i,dummy);
if(i=0)then exit;
i:=GetParse(buf,buflen,i,face);
AddFriendInfo(id,ip,port,dummy,face,GetOICQUserName(id));
if(i=0)then exit;
// if(BotCfgDlg.GetGreetMsg(id,Msg))then
// begin
// SendMsg(id,Msg);
// end;
end;
end;
end;
procedure TMainForm.AddLocalMsg(buf: array of char; buflen: Integer);
begin
{$ifndef FULLVERSION}
if(buf[4]=chr($13))then exit;
{$endif}
AddLocalHex(buf,buflen);
AddLocalTxt(buf,buflen);
AddLocalList(buf,buflen);
end;
procedure TMainForm.AddLocalHex(buf: array of char; buflen: Integer);
begin
LocalMsgList.Items.add(Buffer2Hex(Buf,buflen));
end;
procedure TMainForm.AddLocalList(buf: array of char; buflen: Integer);
begin
end;
procedure TMainForm.AddLocalTxt(buf: array of char; buflen: Integer);
begin
LocalTxtList.Items.Add(Buffer2Txt(Buf,buflen));
end;
procedure TMainForm.AddSrvMsg(FromIP:string;FromPort:WORD;buf: array of char; buflen: Integer);
begin
AddSrvHex(FromIP,FromPort,buf,buflen);
AddSrvTxt(FromIP,FromPort,buf,buflen);
AddSrvList(FromIP,FromPort,buf,buflen);
end;
procedure TMainForm.AddSrvHex(FromIP:String;FromPort:WORD;buf: array of char; buflen: Integer);
begin
SrvMsgList.Items.Add(
'From '+
FromIp+':'+
IntToStr(FromPort)+
'---'+
Buffer2Hex(buf,buflen));
end;
procedure TMainForm.AddSrvList(FromIP:String;FromPort:WORD;buf: array of char; buflen: Integer);
begin
end;
procedure TMainForm.AddSrvTxt(FromIP:String;FromPort:WORD;buf: array of char; buflen: Integer);
begin
SrvTxtList.Items.Add(
'From '+
FromIP+':'+
IntToStr(FromPort)+
'---'+
Buffer2Txt(buf,buflen));
end;
function TMainForm.Buffer2Hex(buf: array of char;buflen:integer): string;
var
i:Integer;
str:String;
begin
for i:=0 to buflen do
begin
// str:=format('%02x',[ord(buf[i])]);
str:=IntToHex(ord(buf[i]),2);
Result:=Result+str+' ';
end;
end;
function TMainForm.Buffer2List(buf: array of char;
buflen: Integer): string;
begin
end;
function TMainForm.Buffer2Txt(buf: array of char; buflen: Integer): String;
var
i:Integer;
begin
for i:=0 to buflen do
begin
if(buf[i] in ['`','~','!','@','#','$','%','^','&','*','(',')','-','_','=','+','\','|'])then
begin
Result:=Result+buf[i];
end
else if((('0'<=buf[i])and(buf[i]<='9'))
or(('a'<=buf[i])and(buf[i]<='z'))
or(('A'<=buf[i])and(buf[i]<='Z')))then
begin
Result:=Result+buf[i];
end
else if((Ord(buf[i])>127)and (Ord(buf[i+1])>127))then
begin
Result:=Result+buf[i];
end
else
begin
Result:=Result+'.';
end;
end;
end;
procedure TMainForm.LocalMsgListClick(Sender: TObject);
var
i:Integer;
begin
i:=(Sender as TListBox).ItemIndex;
LocalMsgList.ItemIndex:=i;
LocalTxtList.ItemIndex:=i;
end;
procedure TMainForm.N1Click(Sender: TObject);
begin
LocalMsgList.Clear;
LocalTxtList.Clear;
mTxCnt:=0;
end;
procedure TMainForm.N3Click(Sender: TObject);
begin
SrvMsgList.Clear;
SrvTxtList.Clear;
mRxCnt:=0;
end;
procedure TMainForm.SrvMsgListClick(Sender: TObject);
var
i:Integer;
begin
i:=(Sender as TListBox).ItemIndex;
SrvMsgList.ItemIndex:=i;
SrvTxtList.ItemIndex:=i;
end;
procedure TMainForm.LocalMsgListKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
i:Integer;
begin
if(key=VK_DELETE)then
begin
if(LocalMsgList.Items.Count>0)then
begin
i:=(Sender as TListBox).ItemIndex;
LocalMsgList.Items.Delete(i);
LocalTxtList.Items.Delete(i);
LocalMsgList.ItemIndex:=i;
LocalTxtList.ItemIndex:=i;
end;
end;
end;
procedure TMainForm.SrvMsgListKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
i:Integer;
begin
if(Key=VK_DELETE)then
begin
if(SrvMsgList.Items.Count>0)then
begin
i:=(Sender as TListBox).ItemIndex;
SrvMsgList.Items.Delete(i);
SrvTxtList.items.Delete(i);
SrvMsgList.ItemIndex:=i;
SrvTxtList.ItemIndex:=i;
end;
end;
end;
procedure TMainForm.N2Click(Sender: TObject);
begin
if(SaveDlg.Execute)then
begin
if(Sender is TMenuItem)then
(
(
(Sender as TMenuItem).GetParentMenu as TPopupMenu
).PopupComponent as TListBox
).Items.SaveToFile(SaveDlg.FileName);
end;
end;
function TMainForm.AfterRecv(var buf: array of char; buflen: Integer): Boolean;
begin
Result:=True;
Inc(mRxCnt);
StatusBar.Panels[1].Text:='Rx:'+IntToStr(mRxCnt);
end;
function TMainForm.BeforeSend(var buf: array of char;
buflen: Integer): Boolean;
var
i:WORD;
begin
i:=Ord(buf[5])*$100+Ord(buf[6]);
mCurCnt:=i;
StatusBar.Panels[2].Text:='MsgId:'+IntToHex(mCurCnt,4);
Inc(mTxCnt);
StatusBar.Panels[0].Text:='Tx:'+IntToStr(mTxCnt);
Result:=True;
end;
procedure TMainForm.mSysCfgClick(Sender: TObject);
begin
if(TSysCfgDlg.Execute)then
begin
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var
addr:TInAddr;
begin
{$ifdef REDUCE_VERSION}
Caption:=Caption+'簡(jiǎn)版';
{$endif}
Width:=450;
Height:=250;
mCurCnt:=0;
mTxCnt:=0;
mRxCnt:=0;
if(TSysCfgDlg.LoadConfig(GOICQPath,GDBFPath,GSrvIp,GSrvPort,GLocalPort,GAutoLaunch))then
begin
LoadIPInfo(GDBFPath);
end
else if(TSysCfgDlg.Execute)then
//no config data so must run config dialog
begin
LoadIPInfo(GDBFPath);
end;
{$ifndef FULLVERSION}
mViewSend.Visible:=False;
mViewRecv.Visible:=False;
SendPage.Visible:=False;
RecvPage.Visible:=False;
{$endif}
if(LookupName(GSrvIp,addr))then
begin
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -