2013-08-29 39 views
0

我知道每個端口只能分配給一個應用程序。不過,我想這樣做:偵聽套接字並複製到另一個端口

(1)我想監聽某個端口,如80這個端口已經被其他應用程序分配,如Apache

(2)我可以在每個插槽複製發送到該端口,並將這些端口重定向到另一個端口

我搜索了tcpdump,它可以捕獲數據包(包含整個內容)。但我不知道如何複製數據包,然後將它們發送到另一個端口?

或者,也許有其他工具可以輕鬆捕獲包嗎?

如果我想實現自己,可以給我一些細節嗎?因爲我不擅長套接字編程。

+1

(2)複製每個套接字?或數據包? –

回答

0

正如您正確指出的那樣,您將無法使用套接字輕鬆從端口80獲取數據包。這是因爲如果第二個套接字也要接收那個端口的數據包,那麼它需要重用端口(SO_REUSEADDR選項)。如果應用程序是第三方的,並且您不能將此選項設置爲服務器套接字,那麼這將不起作用。你probbaly可以嘗試檢查scapy有嗅探數據包的選項,看看它是否符合我們的要求:http://www.secdev.org/projects/scapy/doc/usage.html

+0

謝謝。我正在嘗試使用scapy。我仍然不知道如何複製套接字,你能給我一些想法嗎? – lishoubo

+0

基本上,使用sniff()方法獲取目的地爲端口的數據包。接下來,udpate頭中的端口並調用send()方法發送數據包。這個答案應該是有幫助的:http://stackoverflow.com/questions/13017797/how-to-add-http-headers-to-a-packet-sniffed-using-scapy。 –