2014-09-10 64 views
1

我設置了ifconfig eth0 promisc的混雜模式,並且在python中,我可以發送數據包而無需使用原始套接字進行綁定。 我已經完成了命令nc -vs 192.168.11.1 -p 22 192.168.11.2 22來查看我是否可以將數據包作爲另一臺計算機發送,而沒有該計算機的綁定地址。 在netcat中可以使用此功能還是必須綁定?目前該機器沒有地址設置,但處於混雜模式,因此它可以看到所有流量。在沒有綁定的地址在Netcat發送數據包

UPDATE:

在Python中我創建了一個十六進制字符串,然後使用structsend出來。我利用ifconfig在bash腳本中設置混雜模式(因爲我無法弄清楚如何在python中完成它),然後運行我的python腳本,但一旦設置好了,似乎只需自動選擇eth0,而不需要我設置任何東西。

我不確定netcat是否可以做到這一點,實用程序中沒有任何內容似乎表明了這一點。如果可能的話,我可能只是製作一個python腳本來使它與原始套接字一起工作。

回答

1

我不認爲這是可能的netcat,除非它也允許使用原始套接字(綁定到一個接口)。

既然你有沒有地址的設置,它是有啓發看看你的路由表:

$ route 
Kernel IP routing table 
Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
$ 

例如空。

netcat默認使用TCP。對於TCP套接字,您不必綁定到源接口,但如果沒有,則內核堆棧將在內核路由表中查找目標地址,以確定將哪個接口發送出去。由於沒有尋址,路由表爲空,路由查找將失敗。因此,TCP將無法發出其第一個SYN數據包。

我考慮的一種可能的解決方法是添加適當的靜態路由,這應該有助於發送初始SYN。但是TCP仍然不起作用,因爲當SYN-ACK從hext-hop路由器回來時,下一跳路由器將不會有這臺機器的ARP條目,並且如果機器有IP地址。

如果你關心的只是發送流量,你可能會逃脫UDP套接字和靜態路由,但即使如此,內核堆棧也可能不允許它。

對於你在Python中的原始套接字,我假設你綁定到一個本地接口,它允許你在較低的水平上操作並繞過上面的檢查。

相關問題