Bash 在Netcat中从地址不绑定地发送数据包

Bash 在Netcat中从地址不绑定地发送数据包,bash,netcat,Bash,Netcat,我已经用ifconfig eth0-promisc设置了混杂模式,在python中,我可以发送数据包,而无需绑定原始套接字。 我已经执行了命令nc-vs192.168.11.1-p22192.168.11.222,以查看我是否可以作为另一台计算机发送数据包,而不需要该计算机的绑定地址。 netcat中是否可以使用此功能,或者您是否必须绑定?目前,机器没有地址设置,但处于混杂模式,因此可以查看所有流量 更新: 在python中,我创建了一个十六进制字符串,然后使用struct和send将其输出。我

我已经用
ifconfig eth0-promisc
设置了混杂模式,在python中,我可以发送数据包,而无需绑定原始套接字。 我已经执行了命令
nc-vs192.168.11.1-p22192.168.11.222
,以查看我是否可以作为另一台计算机发送数据包,而不需要该计算机的绑定地址。 netcat中是否可以使用此功能,或者您是否必须绑定?目前,机器没有地址设置,但处于混杂模式,因此可以查看所有流量

更新:

在python中,我创建了一个十六进制字符串,然后使用
struct
send
将其输出。我利用
ifconfig
在一个bash脚本中设置混杂模式(因为我不知道如何在python中实现),然后运行我的python脚本,但一旦设置好,它似乎只自动选择
eth0
,而不需要我设置任何东西


我不确定netcat是否能够做到这一点,并且该实用程序中似乎没有任何内容表明这一点。如果可能的话,我可以制作一个python脚本,使其能够与原始套接字一起工作。

我认为netcat不可能做到这一点,除非它还允许使用原始套接字(绑定到接口)

鉴于您没有地址设置,请查看路由表:

$ route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
$
e、 空的

默认情况下,netcat使用TCP。对于TCP套接字,您不必绑定到源接口,但如果不绑定,内核堆栈将在内核路由表中查找目标地址,以确定从哪个接口发送。由于没有寻址,路由表为空,路由查找将失败。因此,TCP将无法发送其第一个SYN数据包

我考虑的一个可能的解决方法是添加一个适当的静态路由,这应该有助于发送初始SYN。但是TCP仍然不起作用,因为当SYN-ACK从hext-hop路由器返回时,下一跳路由器将没有此机器的ARP条目,并且如果机器具有IP地址,则无法解析ARP条目

如果您所关心的只是发送流量,那么您可能不需要UDP套接字和静态路由,但即使这样,内核堆栈也可能不允许这样做

对于python中的原始套接字,我假设您绑定到本地接口,这允许您在较低级别上操作并绕过上面的检查