关于用ASP.Net识别远程主机服务器种类

王朝asp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

这几天做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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有