[英]Sending packets in Netcat from an address without binding
我已經使用ifconfig eth0 promisc
設置了混雜模式,並且在python中,我可以發送數據包而無需使用原始套接字進行綁定。 我已經執行了nc -vs 192.168.11.1 -p 22 192.168.11.2 22
命令,以查看是否可以在沒有該計算機綁定地址的情況下將數據包作為另一台計算機發送。 netcat是否可以使用此功能,還是必須綁定? 當前,機器沒有地址設置,但處於混雜模式,因此它可以看到所有流量。
更新:
在python中,我創建了一個十六進制字符串,然后使用struct
並將其send
出去。 我在一個bash腳本中利用ifconfig
在一個bash腳本中設置混雜模式(因為我不知道如何在python中進行操作),然后運行我的python腳本,但是一旦設置,它似乎只是自動選擇了eth0
而無需我進行任何設置。
我不確定netcat是否可以做到這一點,實用程序中似乎沒有任何跡象表明這一點。 如果可能的話,我可能只是制作一個python腳本使其與原始套接字一起工作。
我認為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中的原始套接字,我想你綁定到一個本地接口,它允許你在一個較低的水平運行,並繞過上述檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.