📄 unit1.~pas
字号:
p.y := HIWORD(m.lParam) - Self.Top;
if PtInRect(TBRect, p) then //如果在标题栏按钮区域释放鼠标
begin
DrawCaptionBtn(EDGE_RAISED);
Form1.hide;
end
else
inherited; // 执行默认的操作
end;
procedure TForm1.Sender1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var RecvStream:TMemoryStream;
RecvString,RecvNum:String;
Bcount:integer;
begin
//StatusBar1.Panels[4].Text := 'R: '+inttostr(NumberBytes)+' bytes from '+FromIP;
RecvStream := TMemoryStream.Create;
Try
Sender1.ReadStream(RecvStream);
SetLength(RecvString,NumberBytes);
RecvStream.Read(RecvString[1],NumberBytes);
finally
RecvStream.Free;
Bcount := 8;
while RecvString[Bcount] <> RecvString[NumberBytes] do
begin
RecvNum := RecvNum+RecvString[Bcount];
Bcount := Bcount+1;
end;
//showmessage(RecvNum);
if RecvMessbuffer <> RecvNum then
begin
WSmInfo(clNavy,RecvNum,False);
RecvMessbuffer := RecvNum;
end;
SendReMess(FromIP,SmNum.Text,Port);
//DetedShow(FromIP,Port,RecvNum);
end;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
IPDeted.Items.Clear;
end;
procedure TForm1.SendReMess(IP,Num:string;Port:integer);
var ReStream:TMemoryStream;
ri:integer;
begin
ReMess[0] := $02;
ReMess[1] := $02;
ReMess[2] := $00;
ReMess[3] := $00;
ReMess[4] := $79;
ReMess[5] := $0b;
ReMess[6] := $b7;
ReMess[7] := $34;//Number begin
ReMess[8] := $32;
ReMess[9] := $35;
ReMess[10] := $34;
ReMess[11] := $38;
ReMess[12] := $30;
ReMess[13] := $39;//End
ReMess[14] := $03;
ReStream := TMemoryStream.Create;
Try
if chudp.Checked then sIngus.StopSnoop;
for ri := 0 to 6 do ReStream.Write(ReMess[ri],1);
Restream.Write('20000',5);
Restream.Write(ReMess[14],1);
ReSender.RemoteHost := IP;
ReSender.RemotePort := Port;
ReSender.SendStream(ReStream);
Finally
ReStream.Free;
if chudp.Checked then sIngus.StartSnoop(ComboBox1.ItemIndex);
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Shell_NotifyIcon(NIM_DELETE,MainTrayIcon);
end;
procedure Tform1.IPSearchMess(Area:string;RemotePort:integer);
var i1,i2,i3,i4,CNbuffer:integer;
begin
if chudp.Checked then sIngus.StopSnoop;
DeMessStru('20000','001',SearchInfo.caption);
DLab1.Enabled := True;
DLab2.Enabled := True;
IPSearcher.RemotePort := RemotePort;
IPSearcher.LocalPort := 1235;
try
for i4 := 0 to 255 do
begin
for i1 := 0 to 25 do
begin
for i2 := 1 to 10 do
begin
for i3 := 1 to 3 do;
begin
CNbuffer := i1*10+i2;
if CNbuffer < 255 then
begin
IPSearcher.RemoteHost := Area + '.' + inttostr(i4)+'.'+inttostr(CNbuffer);
IPSearcher.SendStream(SendStream);
end;
end;
DLab2.Caption := IPSearcher.RemoteHost;
DetePro.StepIt;
end;
sleep(100);
end;
end;
finally
SendStream.Free;
if chudp.Checked then sIngus.StartSnoop(ComboBox1.ItemIndex);
end;
DLab1.Enabled := False;
DLab2.Enabled := False;
DetePro.Position := 0;
showmessage('对'+Area+'区域的探索已经完成!');
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
IPSearchMess(IPSearchArea.Text,strtoint(IPSearchPort.text));
end;
procedure TForm1.IPSearcherDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var RecvStream:TMemoryStream;
RecvString,RecvNum:String;
Bcount,i,ibool:integer;
DeteItem:TListItem;
begin
ibool := 0;
RecvStream := TMemoryStream.Create;
Try
IPSearcher.ReadStream(RecvStream);
SetLength(RecvString,NumberBytes);
RecvStream.Read(RecvString[1],NumberBytes);
finally
RecvStream.Free;
Bcount := 8;
while RecvString[Bcount] <> RecvString[NumberBytes] do
begin
RecvNum := RecvNum+RecvString[Bcount];
Bcount := Bcount+1;
end;
for i := 0 to IPDeted.Items.count-1 do
begin
if FromIP = IPDeted.Items[i].Caption then ibool := 1;
end;
if ibool = 0 then
begin
DeteItem := IPDeted.Items.Add;
DeteItem.Caption := FromIP;
DeteItem.SubItems.Add(inttostr(Port));
DeteItem.SubItems.Add(RecvNum);
end;
end;
end;
procedure TForm1.Label8Click(Sender: TObject);
begin
ExecuteFile('mailto:tyler_zhong@gre.net.cn','','',0);
end;
procedure TForm1.Label9Click(Sender: TObject);
begin
ExecuteFile('http://leosoft.home.dhs.org','','',0);
end;
procedure TForm1.IPDetedSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
DetedSb1 := Item.Caption;
DetedSb2 := Item.SubItems[0];
DetedSb3 := Item.SubItems[1];
end;
procedure TForm1.N2Click(Sender: TObject);
begin
SmIp.Text := DetedSb1;
SmPort.Text := DetedSb2;
PageControl1.ActivePageIndex := 0;
end;
procedure TForm1.WEB1Click(Sender: TObject);
var URL : string;
begin
URL := 'http://search.tencent.com/cgi-bin/friend/user_show_info?ln='+DetedSb3;
ExecuteFile(URL,'','',0);
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
var i1,i2:integer;
begin
PortDeted.Items.Clear;
sleep(1000);
if (strtoint(PDeteB.Text) > strtoint(PDeteE.Text)) or (strtoint(PDeteB.Text)<1) or (strtoint(PDeteE.Text)>65535) then
begin
showmessage('端口号是1到65535的整数且必须遵循由小至大的顺序');
end
else
if (strtoint(PDeteE.Text)-strtoint(PDeteb.Text)) > 300 then
begin
showmessage('一次最多只能探测300个端口');
end
else
begin
if chudp.Checked then sIngus.StopSnoop;
PDetePro.Max := strtoint(PDeteE.Text)-strtoint(PDeteb.Text);
DeMessStru('20001','001',PSearchMess.caption);
//Label5.Caption := PDeteIP.Text;
PortSearcher.RemoteHost := PDeteIP.Text;
PortSearcher.LocalPort := 1236;
Try
for i1 := strtoint(PDeteb.Text) to strtoint(PDeteE.Text) do
begin
PortSearcher.RemotePort := i1;
for i2 := 1 to 3 do
begin
PortSearcher.SendStream(SendStream);
end;
PDetePro.StepIt;
sleep(100);
end;
Finally
SendStream.Free;
PDetePro.Position := 0;
showmessage('对'+PDeteIP.Text+'的'+PDeteb.Text+'到'+PDeteE.Text+'端口探测已经完成!');
if chudp.Checked then sIngus.StartSnoop(ComboBox1.ItemIndex);
end;
end;
end;
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
PortDeted.Items.Clear;
end;
procedure TForm1.PortSearcherDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var RecvStream:TMemoryStream;
RecvString,RecvNum:String;
Bcount,i,ibool:integer;
DeteItem:TListItem;
begin
ibool := 0;
RecvStream := TMemoryStream.Create;
Try
PortSearcher.ReadStream(RecvStream);
SetLength(RecvString,NumberBytes);
RecvStream.Read(RecvString[1],NumberBytes);
finally
RecvStream.Free;
Bcount := 8;
while RecvString[Bcount] <> RecvString[NumberBytes] do
begin
RecvNum := RecvNum+RecvString[Bcount];
Bcount := Bcount+1;
end;
for i := 0 to PortDeted.Items.count-1 do
begin
if inttostr(Port) = PortDeted.Items[i].Caption then ibool := 1;
end;
if ibool = 0 then
begin
DeteItem := PortDeted.Items.Add;
DeteItem.Caption := inttostr(Port);
DeteItem.SubItems.Add(RecvNum);
end;
end;
end;
procedure TForm1.IP1Click(Sender: TObject);
begin
PDeteIP.Text := DetedSb1;
PageControl1.ActivePageIndex := 2;
end;
procedure TForm1.PortDetedSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
DetedSb1 := PDeteIP.Text;
DetedSb2 := Item.Caption;
DetedSb3 := Item.SubItems[0];
end;
procedure TForm1.N3Click(Sender: TObject);
begin
SmIp.Text := DetedSb1;
SmPort.Text := DetedSb2;
PageControl1.ActivePageIndex := 0;
end;
procedure TForm1.WEB2Click(Sender: TObject);
var URL : string;
begin
URL := 'http://search.tencent.com/cgi-bin/friend/user_show_info?ln='+DetedSb3;
ExecuteFile(URL,'','',0);
end;
procedure TForm1.OnParsePacketHandle( nPacketSeq: Longint; uBuffer: PChar;
nRecvBytes: integer; sPacket:
TIngusPacketBase );
var
sMacAddr,DAddr,DPort: string;
UDPbool,UDPbool2,i:integer;
sIpPacket: TIngusIPPacket;
//sIcmpPacket: TIngusICMPPacket;
sTCPPacket: TIngusTCPPacket;
nDestPort: integer; //nSrcPort,
DeteItem,Itembuff:TListItem;
begin
UDPbool := 0;
UDPbool2 := 1;
if sPacket.EthernetProtocol <> PROTO_IP then exit;
sIPPacket := TIngusIPPacket(sPacket);
sMacAddr := Format( '网络适配器实时地址: %.2X:%.2X:%.2X:%.2X:%.2X:%.2X',
[ UCHAR(sIngus.MacAddr[0]), UCHAR(sIngus.MacAddr[1]),
UCHAR(sIngus.MacAddr[2]), UCHAR(sIngus.MacAddr[3]),
UCHAR(sIngus.MacAddr[4]), UCHAR(sIngus.MacAddr[5]) ] );
sTCPPacket := TIngusTCPPacket(sPacket);
nDestPort := sTCPPacket.DestPort;
DAddr := Format('%u.%u.%u.%u', [ UCHAR((sIPPacket.IPDestAddr)^),
UCHAR((sIPPacket.IPDestAddr+1)^),
UCHAR((sIPPacket.IPDestAddr+2)^),
UCHAR((sIPPacket.IPDestAddr+3)^) ]);
DPort := inttostr(nDestPort);
case sIPPacket.IPProtocol of
17: begin
UDPbool := 1;
for i := 0 to FriendList.Items.Count -1 do
begin
Itembuff := FriendList.Items[i];
if (Itembuff.SubItems[0] = DAddr) and (Itembuff.SubItems[1] = DPort) then UDPbool2 := 0; //and (Itembuff.SubItems[1] <> DPort)
end;
//UDPT.caption := 'UDP';
end;
end;
case sPacket.PacketDirection of
pdInput:
begin
//Input;
end;
pdOutput:
begin
if (UDPbool = 1) and (UDPbool2 = 1) then
begin
DeteItem := FriendList.Items.Add;
DeteItem.Caption := '校验被禁止';
DeteItem.SubItems.Add(DAddr);
DeteItem.SubItems.Add(inttostr(nDestPort));
postmessage(FriendList.handle, WM_VSCROLL, 1, SB_LINEDOWN);
end;
end;
end;
end;
procedure TForm1.OnAfterGetAdapterDesc(bStatus: Boolean; sAdapterDesc: string);
begin
//Memo1.Lines.Add('网卡适配器型号: '+sAdapterDesc);
end;
procedure TForm1.OnAfterGetMacAddress(bStatus: Boolean; pMacAddr: PChar);
begin
//Memo1.Lines.Add(Format( '网卡适配器实时地址: %.2X:%.2X:%.2X:%.2X:%.2X:%.2X',
// [ UCHAR(pMacAddr^), UCHAR((pMacAddr+1)^), UCHAR((pMacAddr+2)^),
// UCHAR((pMacAddr+3)^), UCHAR((pMacAddr+4)^), UCHAR((pMacAddr+5)^) ] ));
end;
procedure TForm1.chudpClick(Sender: TObject);
begin
if chudp.Checked then
begin
showmessage('开始侦测好友号码');
sIngus.StartSnoop(ComboBox1.ItemIndex);
end
else
begin
sIngus.StopSnoop;
showmessage('停止侦测好友号码');
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
sIngus.Free;
end;
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
FriendList.Items.Clear;
end;
procedure TForm1.FriendListSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
DetedSb1 := Item.SubItems[0];
DetedSb2 := Item.SubItems[1];
end;
procedure TForm1.N4Click(Sender: TObject);
begin
SmIp.Text := DetedSb1;
SmPort.Text := DetedSb2;
PageControl1.ActivePageIndex := 0;
end;
procedure TForm1.IP2Click(Sender: TObject);
begin
PDeteIP.Text := DetedSb1;
PageControl1.ActivePageIndex := 2;
end;
procedure TForm1.Label23Click(Sender: TObject);
begin
ExecuteFile('http://oqforum.home.dhs.org','','',0);
end;
procedure TForm1.Label27Click(Sender: TObject);
begin
ExecuteFile('http://whocq.yeah.net','','',0);
end;
procedure TForm1.BitBtn8Click(Sender: TObject);
begin
ExecuteFile('help.html','','',0);
end;
procedure TForm1.NetTestTimer(Sender: TObject);
var
WSData:TWSAData;
Buffer:array[0..63]of Char;
HostEnt:PHostEnt;
PPInAddr:^PInAddr;
//返回值
//LocalIP:DWord;
IPString:String;
begin
//LocalIP:=0;
IPString:='';
WSAStartUp($101,WSData);
try
GetHostName(Buffer,SizeOf(Buffer));
HostEnt:=GetHostByName(Buffer);
if Assigned(HostEnt) then
begin
PPInAddr:=@(PInAddr(HostEnt.H_Addr_List^));
while Assigned(PPInAddr^) do
begin
IPString:=StrPas(INet_NToA(PPInAddr^^));
//LocalIP:=PPInAddr^^.S_Addr;
Inc(PPInAddr);
end;
end;
finally
WSACleanUp;
if Closebool = 0 then
begin
if IPString = '127.0.0.1' then
begin
Closebool := 1;
//Shell_NotifyIcon(NIM_DELETE,MainTrayIcon);
//Shell_NotifyIcon(NIM_DELETE,MainTrayIcon);
//sIngus.StopSnoop;
//sIngus.Free;
showmessage('尚未连接到网络,无法运行程序!');
Form1.Close;
Nettest.Free;
halt;
//sleep(2000);
//halt;
end;
end;
IPLab.caption := '当前此机器的IP地址为:'+IPString;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -