当前位置: 网学 > 编程文档 > VB > 正文

VB6中使用Winsock穿越各种代理的实现(TCP协议)

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
e 1
ReDim SendByte(0 To 2) As Byte   ''''第一步 无验证发送 05 01 00, 有验证发送 05 02 02
SendByte(0) = 5                     '''' 05
SendByte(1) = 1             ''''01 ''''在有用户密码验证时此字节是 1 还是 2 有诸多争论,现以腾讯QQ穿越代理模拟器时发送的数据为准,如有错误,请自己修改!
SendByte(2) = IIf(Form1.Check1.Value = 0, 0, 2) ''''00 或 02
Form1.Winsock1.SendData SendByte()
ConnStep = PStep + 1
Exit Function

Case 2               ''''代理回复
If Asc(Mid(RevBuffer, 2, 1)) = 255 Then ''''FF (255) 为失败
MsgBox "连接代理失败!", 64
Form1.Winsock1.Close
ConnStep = 0
Exit Function

End If
If Asc(Mid(RevBuffer, 2, 1)) = 0 And Asc(Mid(RevBuffer, 1, 1)) = 5 Then ''''若代理回复 05 00 为无验证连接成功
Form1.Label8.Caption = "连接成功!无验证"

ReDim SendByte(0 To 9) As Byte           ''''第二步 无验证 发送连接请求
SendByte(0) = 5
SendByte(1) = 1
SendByte(2) = 0
SendByte(3) = 1
SendByte(4) = GetIPByte(1, DestIP)
SendByte(5) = GetIPByte(2, DestIP)
SendByte(6) = GetIPByte(3, DestIP)
SendByte(7) = GetIPByte(4, DestIP)
SendByte(8) = Int(DestPort / 256)   ''''把10进制端口分成两个字节
SendByte(9) = DestPort Mod 256      ''''把10进制端口分成两个字节
Form1.Winsock1.SendData SendByte()

ConnStep = ConnStep + 1

Exit Function

End If

If Asc(Mid(RevBuffer, 2, 1)) = 2 And Asc(Mid(RevBuffer, 1, 1)) = 5 Then ''''第二步 有用户名密码验证 成功为 05 02
Form1.Label8.Caption = "连接成功!有验证"
ReDim SendByte(0 To 2 + Len(UserName) + Len(UserPassword)) As Byte

SendByte(0) = 1

SendByte(1) = Len(UserName)

MemCopy SendByte(2), ByVal UserName, Len(UserName)                     ''''将用户名转换

SendByte(2 + Len(UserName)) = Len(UserPassword)

MemCopy SendByte(3 + Len(UserName)), ByVal UserPassword, Len(UserPassword) ''''将密码转换


Form1.Winsock1.SendData SendByte()

ConnStep = ConnStep + 1

Exit Function
End If

Case 3
If Asc(Mid(RevBuffer, 2, 1)) <> 0 And Form1.Check1.Value = 1 Then ''''有验证,验证失败 代理回复第二字节为 00 验证成功,其余值为失败
MsgBox "sock5代理校验用户名、密码失败!", 48, "错误"
Form1.Winsock1.Close
ConnStep = 0
Exit Function
End If

If Asc(Mid(RevBuffer, 2, 1)) = 0 And Form1.Check1.Value = 1 Then ''''有验证,验证成功,回复值第二字节为 00 ,其余值为失败
Form1.Label8.Caption = "连接成功!有验证!"
ReDim SendByte(0 To 9) As Byte                                   ''''发送连接请求
SendByte(0) = 5
SendByte(1) = 1
SendByte(2) = 0
SendB
  • 上一篇资讯: 判断网络是否已经断线
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号