การล่า ASP.Net ทุกวันนี้ถือได้ว่าเป็นการแนะนำของฉัน แนวคิดนี้ง่ายมาก จุดประสงค์หลักคือเพื่อระบุแบนเนอร์ที่ส่งคืนโดยโฮสต์ระยะไกล และกำหนดเซิร์ฟเวอร์โฮสต์ระยะไกล ซึ่งอาจไม่ถูกต้องเนื่องจากผู้ดูแลระบบที่ผ่านการรับรองอาจแก้ไขแบนเนอร์ได้
รหัสมีดังนี้ (พบจากการตามล่าเว็บของฉันโดยใช้ VB.Net)
Dim swWriter As StreamWriter
'ใช้ในการส่งข้อมูลไปยังการไหลของข้อมูลโครงสร้างพื้นฐานเครือข่าย
หรี่ nsStream เป็น NetworkStream
'สร้างกระแสข้อมูลบนเครือข่ายสำหรับการส่งข้อมูล
หรี่ tcpClient2 เป็น TcpClient
'ผ่านทางนี้ จะมีการร้องขอการเชื่อมต่อ TCP ไปยังโฮสต์ระยะไกล
Dim sHostName เป็นสตริง
Dim srRead เป็น StreamReader
'อ่านข้อมูลจากสตรีมข้อมูลโครงสร้างพื้นฐานเครือข่าย
'ค้นหาบริการ HTTP'
ถ้า TcpConnect(ZSIP, 80) = "CG" แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: ไม่ทราบ"
พยายาม
'tcpClient = TcpClient ใหม่ (ที่อยู่ IP, พอร์ต)
tcpClient2 = TcpClient ใหม่ (ZSIP.ToString(), 80)
tcpClient2.ReceiveTimeout = 1000000
tcpClient2.SendTimeout = 1000000
'สร้างคำขอการเชื่อมต่อ TCP สำหรับพอร์ต 8000 ของโฮสต์ระยะไกล
nsStream = tcpClient2.GetStream()
'ใช้และรับกระแสข้อมูลพื้นฐานของเครือข่ายสำหรับการส่งข้อมูล
swWriter = StreamWriter ใหม่ (nsStream)
swWriter.WriteLine("รับ /index.htm HTTP/1.1")
swWriter.WriteLine("โฮสต์:" & IP.Text)
swWriter.WriteLine("ยอมรับ:*/*")
swWriter.WriteLine("ผู้อ้างอิง:")
swWriter.WriteLine()
'รีเฟรชข้อมูลในสตรีมข้อมูลปัจจุบัน
swWriter.ฟลัช()
srRead = StreamReader ใหม่ (nsStream, Encoding.Default)
'เริ่มต้นอินสแตนซ์ StreamReader ด้วยสตรีมข้อมูลพื้นฐานของเครือข่ายที่ได้รับ
Dim L As Integer = 0
ทำในขณะที่ไม่ใช่ srRead.Peek = -1 และ L < 20
StrHttp = StrHttp & srRead.ReadLine()
ล = ล + 1
วนซ้ำ
ถ้า InStr(StrHttp, "IIS") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: ไม่ทราบเวอร์ชัน IIS"
SystemFW = "WindowsNT/2000/XP/2003"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: ไม่ทราบเวอร์ชัน Apache"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Netscape-Enterprise") > 0 จากนั้น
OppHTTP.Text = "บริการ HTTP ได้เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: ไม่ทราบเวอร์ชันของ Netscape-Enterprise"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Microsoft-IIS/5.0") > 0 จากนั้น
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: IIS 5.0"
SystemFW = "Windows2000"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Microsoft-IIS/5.1") > 0 จากนั้น
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: IIS 5.1"
SystemFW = "Windows2000/XP"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Microsoft-IIS/6.0") > 0 จากนั้น
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: IIS 6.0"
SystemFW = "วินโดวส์2003"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/2") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 2.x"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/2.0.54") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 2.0.54"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/2.0.52") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 2.0.52"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/2.1.6") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 2.1.6"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/1.3.2") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 1.3.x"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/1.3.20") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 1.3.20"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/1.3.23") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 1.3.23"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/1.3.26") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 1.3.26"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/1.3.27") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 1.3.27"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Apache/1.3.33") > 0 แล้ว
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Apache 1.3.33"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Netscape-Enterprise/4.1") > 0 จากนั้น
OppHTTP.Text = "บริการ HTTP เริ่มต้นแล้ว! ประเภทซอฟต์แวร์บริการ: Netscape-Enterprise 4.1"
สิ้นสุดถ้า
ถ้า InStr(StrHttp, "Unix") > 0 แล้ว
SystemFW = "ระบบเหมือน Unix/Linux"
สิ้นสุดถ้า
จับ
End Try
ถูกแยกออกมา ตัวแปรบางตัวจึงไม่ได้ถูกกำหนดไว้ คุณสามารถคิดออกได้ด้วยตัวเอง
ZSIP: IP จริงที่วิเคราะห์