先前参照网上的资料,写了一个密罐程序。
程序功能如下可自定义打开端口,如果发现有IP访问此端口,纪录其IP。但发现有很多弊端和问题,如下:
一、每一个人访问,就要使用掉一个winsock,那么要使用多少个winsock控件,如果对方使用几百条线程的扫描器扫描我当前打开的端口时,程序如何编写?如何可以避免winsock不够用~?二、对方断开连接,我如何可以得知对方与我断开了。三、如果我定义打开的端口是80,那么,我如何编写程序返回一个虚拟的IIS banner,欺骗对方,让对方以为我启动了IIS服务。四、如果对方想我提交 IIS漏洞,我如何可以返回 IIS HTTP协议码,比如:"200" : 完成,"202" : 接受,"302" : 发现,"404" : 未发现。请高手指点!谢谢!!
程序功能如下可自定义打开端口,如果发现有IP访问此端口,纪录其IP。但发现有很多弊端和问题,如下:
一、每一个人访问,就要使用掉一个winsock,那么要使用多少个winsock控件,如果对方使用几百条线程的扫描器扫描我当前打开的端口时,程序如何编写?如何可以避免winsock不够用~?二、对方断开连接,我如何可以得知对方与我断开了。三、如果我定义打开的端口是80,那么,我如何编写程序返回一个虚拟的IIS banner,欺骗对方,让对方以为我启动了IIS服务。四、如果对方想我提交 IIS漏洞,我如何可以返回 IIS HTTP协议码,比如:"200" : 完成,"202" : 接受,"302" : 发现,"404" : 未发现。请高手指点!谢谢!!
2.客户端断开,你可以用一个listbox,
Private Sub Form_Load()
Dim I As Integer
Label1.Caption = "连接信息"
Clients = 300
Winsock1(0).Protocol = sckTCPProtocol
Winsock1(0).LocalPort = 3333
Winsock1(0).Listen
For I = 1 To Clients
Load Winsock1(I)
Next
Text1.Text = ""
End Sub
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim I As Integer
Dim Temps As Integer
For I = 1 To Clients
If Winsock1(I).State = sckClosed Then
Winsock1(I).Accept requestID
Temps = I
Exit For
End If
Next
ListReFresh Temps & " " & Winsock1(Temps).RemoteHostIP & " " & Winsock1(Temps).RemotePort
End SubPrivate Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
On Error Resume Next
Dim I As Integer
Dim ClientData As Variant
Winsock1(Index).GetData ClientData, vbString
Text1.Text = Text1.Text & ClientData & vbCrLf
For I = 1 To Clients
If Winsock1(I).State = sckConnected Then
Winsock1(I).SendData ClientData
DoEvents
End If
Next
End Sub
Private Sub Winsock1_Close(Index As Integer) RemoveList Index
Winsock1(Index).Close
Unload Winsock1(Index)
Load Winsock1(Index)
End SubPrivate Sub ListReFresh(Optional ClientDatas As String)
Dim I As Integer
If Trim(ClientDatas) <> "" Then
List1.AddItem ClientDatas
End If
End SubPrivate Function RemoveList(ByVal Index As Integer)
Dim I As Integer
Dim Datas For I = 1 To List1.ListCount
List1.ListIndex = I - 1
Datas = Split(List1.Text, " ")
If Val(Datas(0)) = Index Then
List1.RemoveItem List1.ListIndex
List1.Refresh
Exit Function
End If
NextEnd Function
当客户端断开listbox中就会少一条记录