|
这几天做ASP.Net追捕,也算是我入门吧。思路很简单,主要就是识别远程主机传回的Banner,判断远程主机服务器。这可能不够准确,因为合格的管理员可能会去修改Banner。
代码如下(从我的Web追捕里找出来的,用VB.Net)
Dim swWriter As StreamWriter '用以向网络基础数据流传送数据 Dim nsStream As NetworkStream '创建发送数据的网络基础数据流 Dim tcpClient2 As TcpClient '通过它实现向远程主机提出TCP连接申请 Dim sHostName As String Dim srRead As StreamReader '从网络基础数据流中读取数据 'HTTP服务追捕 If TcpConnect(ZSIP, 80) = "CG" Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:未知" Try 'tcpClient = New TcpClient(IPAddress, Port) tcpClient2 = New TcpClient(ZSIP.ToString(), 80) tcpClient2.ReceiveTimeout = 1000000 tcpClient2.SendTimeout = 1000000 '对远程主机的8000端口提出TCP连接申请 nsStream = tcpClient2.GetStream() '通过申请,并获取传送数据的网络基础数据流 swWriter = New StreamWriter(nsStream) swWriter.WriteLine("Get /index.htm HTTP/1.1") swWriter.WriteLine("Host:" & IP.Text) swWriter.WriteLine("Accept:*/*") swWriter.WriteLine("Referer:") swWriter.WriteLine() '刷新当前数据流中的数据 swWriter.Flush() srRead = New StreamReader(nsStream, Encoding.Default) '以得到的网络基础数据流来初始化StreamReader实例 Dim L As Integer = 0 Do While Not srRead.Peek = -1 And L < 20 StrHttp = StrHttp & srRead.ReadLine() L = L + 1 Loop If InStr(StrHttp, "IIS") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:IIS 版本未知" SystemFW = "WindowsNT/2000/XP/2003" End If If InStr(StrHttp, "Apache") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 版本未知" End If If InStr(StrHttp, "Netscape-Enterprise") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Netscape-Enterprise 版本未知" End If If InStr(StrHttp, "Microsoft-IIS/5.0") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:IIS 5.0" SystemFW = "Windows2000" End If If InStr(StrHttp, "Microsoft-IIS/5.1") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:IIS 5.1" SystemFW = "Windows2000/XP" End If If InStr(StrHttp, "Microsoft-IIS/6.0") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:IIS 6.0" SystemFW = "Windows2003" End If If InStr(StrHttp, "Apache/2") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 2.x" End If If InStr(StrHttp, "Apache/2.0.54") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 2.0.54" End If If InStr(StrHttp, "Apache/2.0.52") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 2.0.52" End If If InStr(StrHttp, "Apache/2.1.6") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 2.1.6" End If If InStr(StrHttp, "Apache/1.3.2") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 1.3.x" End If If InStr(StrHttp, "Apache/1.3.20") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 1.3.20" End If If InStr(StrHttp, "Apache/1.3.23") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 1.3.23" End If If InStr(StrHttp, "Apache/1.3.26") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 1.3.26" End If If InStr(StrHttp, "Apache/1.3.27") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 1.3.27" End If If InStr(StrHttp, "Apache/1.3.33") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Apache 1.3.33" End If If InStr(StrHttp, "Netscape-Enterprise/4.1") > 0 Then OppHTTP.Text = "HTTP服务已开启!服务软件类型:Netscape-Enterprise 4.1" End If If InStr(StrHttp, "Unix") > 0 Then SystemFW = "类Unix/Linux系统" End If Catch End Try
因为是摘出来的,所以有的变量没有定义,大家自己去琢磨吧。 ZSIP:分析出的真实IP |