2017-04-19 235 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報頭

希望這可以幫助別人

//亞歷山大#保重每個人

相關問題