很多朋友用過獨孤劍客寫的iphunter吧,它是利用在聊天室發圖片的原理查找對方IP,其實不僅僅是聊天室,只要有人對你的機器存在訪問,就能夠抓到他的IP,甚至主機名,在老妖的軟體獵鹿人當中也利用了這個原理,在delphi中是很容易實現的,現在我們用delphi來做一個和IPhunter一模一樣的軟體。 有人說現在的程式設計師成了組裝工人,其實很有道理,利用控件模組+少量程式碼就可以實現,delphi 5.0提供了豐富的internet控件,利用TCP/IP 客戶端-服務端就可以解決問題。關鍵的控制是ServerSocket,我們模仿IPhunter的介面用一個button1(按鈕),一個combobox1(用於顯示),這三個最基本的控制項放置到空白窗體上就可以開始寫程式碼了。 首先,這個combobox1必須能顯示多個IP,我們定一個變數y來累加combobox1.items[y],var y:integer; 我們的思路如下,當ServerSocket活動的port(端口)收到基於TCP/IP協議的連結請求時候,回傳對方的IP值,傳遞給combobox顯示出來。由button1控制ServerSocket的激活,也就是開啟關閉埠。 我們在ServerSocket的On ClientConnect事件中加入程式碼PRocedure TForm1.ServerSocket11ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin combobox1.Items.Insert(y,');//加入一筆紀錄=socket.RemoteAddress;//取得對方的IP label1.Text:='共捕獲'+inttostr(y+1)+'個IP';//用一個標籤來顯示總共抓了多少IP y:=y+1;//計數變數加1 socket.Close ; end; 現在,將button1的caption屬性設為'開始',在它的點擊事件中加入以下程式碼procedure TForm1.SpeedButton7Click(Sender: TObject); begin if speedbutton7.Caption='開始' then begin serversocket11.Port:=80;//這句話可以在serversocket屬性中設定,捕捉瀏覽器的連線ServerSocket11.Active:=true;//啟動連接埠speedbutton7.Caption:='停止'; end else begin serversocket11.Active:=false;//關閉連接埠speedbutton7.Caption:='開始'; combobox1.Clear;//結束捕獲,清空歷史資訊y:=0;//計數變數重設end; end;現在一個IPhunter基本上就可以使用了,這只是很簡單原型,加上您自己精心製作的介面,就是一個網絡灰客工具了,這個功能也集成到了獵鹿人裡面,這裡說到的只是ServerSocket最基本的一點功能而已,加上ClientSocket就可以做一個聊天工具,只用ClientSocket可以做一個和代理獵手一樣的掃描軟體,這些在老妖以後的文章中陸續介紹。 下次預告怎麼用delphi製作OICQ工具,匿名訊息,查IP,訊息炸彈等等....