⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.~pas

📁 可探索指定IP地址段内的所有OICQ用户号码
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
     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 + -