2017-04-19 76 views
0

,所以我最近买了黑帽的Python和humblebundlesocket.error:[错误49]无法分配请求的地址

黑客,但我已经有点撞了南墙,我希望有人能帮助或解释我为什么发生这种情况:

我的平台是OSX的MacBook更specifily mjlt2

import socket 
import os 

# host to listen on 
host = "192.168.1.190" 

# create raw socket and bind it to public interface 
if os.name == "nt": 
    socket_protocol = socket.IPPROTO_IP 
else: 
    socket_protocol = socket.IPPROTO_ICMP 

sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol) 

sniffer.bind((host, 0)) 

# we want the IP headers included in the capture 
sniffer.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) 

# if we're using windows need to send an IOCTL 
# to set up promiscous mode 
if os.name == "nt": 
    sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) 

# read in a single packet 
print(sniffer.recvfrom(65565)) 

# if we're using window, turn off promiscuous mode 
if os.name == "nt": 
    sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF) 

现在这是一个什么样的代码DOS和期待了作者的解释...

我们首先通过在我们的网络接口上使用snif ng数据包所需的参数来构造socket对象。 Windows和Linux的不同之处在于Windows允许我们无论采用哪种协议都可以侦听所有传入的数据包,而Linux迫使我们指定我们正在嗅探ICMP。请注意,我们使用的混杂模式需要Windows上的管理权限或Linux上的root权限。混杂模式允许我们嗅探网卡看到的所有数据包,即使那些不是指定给您的特定主机的数据包。接下来,我们设置一个socket选项v,其中包含我们捕获的数据包中的IP标头。下一步是确定我们是否使用Windows,如果是这样,我们执行额外的步骤将IOCTL发送到网卡驱动程序以启用混杂模式。如果您在虚拟机中运行Windows,您可能会收到来宾操作系统启用混杂模式的通知;你当然会允许的。现在我们准备实际执行一些嗅探,在这种情况下,我们只是打印出整个原始数据包而无需数据包解码。这只是测试,以确保我们的嗅探代码的核心工作。在单个数据包被嗅探后,我们再次测试Windows,并在退出脚本之前禁用混杂模式。

和我对此的理解是,我应该能够使用上nostarch.com作为一个例子 但回来给我的唯一的事情就是:

sniffer.bind((host, 0)) 
OSError: [Errno 49] Can't assign requested address 
除非我试试

我自己 我不能使用它在路由器上,或在我的本地appleTv或smartv我只得到一个响应,当我平自己

任何人都可以告诉我我只能用自己的这段代码ping自己?是预计的还是它与我的网卡有关?

//亚历山大 顺便说一句,如果你看到这个Justin Seitz你awsome!好书!

回答

-1

好吧,这有点尴尬.... 我想我误解了代码做了什么!

,如果别人要来此以下同一本书有同样的问题,答案是:

host = "my local ip adress" 

只会听取当地assiged ADRESS ,然后返回什么它应该基于我做什么接下来 如果我打开我的浏览器和输入google.com脚本检查google.com,并返回原始IP报头

,如果我打开另一端,然后ping一些网站或IP返回该

的原始IP报头

希望这可以帮助别人

//亚历山大#保重每个人

相关问题