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

📄 pingthrd.pas

📁 这是一款木马程序
💻 PAS
字号:
unit PingThrd;

interface

uses
  Classes,IdIcmpClient,SysUtils;

type
  PingThread = class(TThread)
  private
    { Private declarations }
  protected
    EchoIP,GetIPStr:String;
    SaveIPList:TStrings;
    MyIcmpClient:TIdIcmpClient;
    Procedure getIP;
    Procedure SaveIP;
    Procedure PingIP;
    Procedure UpdatePanel;
    Procedure MyIdIcmpClientReply(ASender: TComponent;
                        const AReplyStatus: TReplyStatus);
    procedure Execute; override;
  public
    Constructor Create(TStrList:TStrings;TimeO:Integer);
    Destructor Destroy;override;
  end;

implementation
uses Hsearch;
Constructor PingThread.Create(TStrList:TStrings;TimeO:Integer);
begin
  inherited Create(True);
  self.FreeOnTerminate:=True;
  SaveIPList:=TStrList;
  MyIcmpClient:=TIdIcmpClient.Create(nil);
  MyIcmpClient.Protocol:=1;
  MyIcmpClient.BufferSize:=1024;
  MyIcmpClient.Port:=0;
  MyIcmpClient.ReceiveTimeout:=TimeO;
  MyIcmpClient.OnReply:=MyIdIcmpClientReply;  
end;
Procedure PingThread.MyIdIcmpClientReply(ASender: TComponent;
                              const AReplyStatus: TReplyStatus);
begin
 if (AReplyStatus.ReplyStatusType=rsEcho) then
 begin
    if(AReplyStatus.FromIpAddress=GetIPStr) then
    begin       
      EchoIP:=AReplyStatus.FromIpAddress;
      OldIP:=EchoIP;
      Synchronize(SaveIP);
    end;
 end;
end;
Procedure PingThread.getIP;
begin //应该加入共享锁定控制或临界区控制
  GetIPStr:=IntToStr(IP_A0)+'.'+IntToStr(IP_B0)
          +'.'+IntToStr(IP_C0)+'.'+IntToStr(IP_D0);
  UpdatePanel;
  if IP_D0<IP_D then
    begin
      IP_D0:=IP_D0+1;
      exit;
    end;
  if IP_D0=IP_D then
  begin
    if IP_C0<IP_C then
     begin
      IP_D0:=IP_Do; //数值复原
      IP_C0:=IP_C0+1;
      exit;
     end;
    if IP_C0=IP_C then
     begin
      if IP_B0<IP_B then
      begin
        IP_C0:=IP_Co;
        IP_B0:=IP_B0+1;
        exit;
      end;
      if IP_B0=IP_B then
       begin
         if IP_A0<IP_A then
         begin
          IP_B0:=IP_Bo;
          IP_A0:=IP_A0+1;
          exit;
         end;
         if IP_A0=IP_A then StopState:='True';
       end
     end;
  end;
  //应该加入共享锁定控制或临界区控制
end;
Procedure PingThread.SaveIP;
begin
  SaveIPList.Insert(0,EchoIP);
end;
Procedure PingThread.PingIP;
begin
  Synchronize(GetIP);
  MyIcmpClient.Host:=GetIPStr;
  MyIcmpClient.Ping;
end;
procedure PingThread.UpdatePanel;
begin
  NetSearch.Edit3.Text:=IntToStr(IP_A0);
  NetSearch.Edit4.Text:=IntToStr(IP_B0);
  NetSearch.Edit5.Text:=IntToStr(IP_C0);
  NetSearch.Edit6.Text:=IntToStr(IP_D0);
  NetSearch.Panel7.Caption:='当前共产生搜索:'+IntToStr(PingCount)+'项';
  NetSearch.Panel7.Update;
end;
procedure PingThread.Execute;
begin
 Repeat
  PingCount:=Pingcount+1;
  PingIP;
 until StopState='True';
 Synchronize(UpdatePanel);
 NetSearch.Timer1.Enabled:=False;
 NetSearch.SpeedButton6.Down:=True;
 self.Terminate;
end;
Destructor PingThread.Destroy;
begin
  MyIcmpClient.Free;
end;

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -