-1
我想在Linux上用scapy lib編寫一個小python腳本。 在我的OSX或Linux中我沒有任何問題,做這樣的事情:Python導入問題:AttributeError:'NoneType'對象沒有屬性'字段'
from scapy.all import IP, sniff
from scapy.layers import http
import urllib, re
def process_tcp_packet(packet):
http_layer = packet.getlayer(http.HTTPRequest)
ip_layer = packet.getlayer(IP)
url = str('{1[Path]}'.format(ip_layer.fields, http_layer.fields))
if url:
url = urllib.unquote(url).decode('utf8')
print re.findall(r'(https?://\S+lh1)', url)
sniff(filter="tcp and host hostexample.com", prn=process_tcp_packet)
的Scapy的文件夾看起來是這樣的:
enter code here
/scapy
__init__.py
all.py
...
/layers
__init__.py
http.py
dhcp.py
...
當我啓動腳本,似乎所有模塊都是進口的,但該行:
url = str('{1[Path]}'.format(ip_layer.fields, http_layer.fields))
返回錯誤:
AttributeError: 'NoneType' object has no attribute 'fields'
-->End of Python script error report<--
任何幫助將不勝感激! 謝謝!
你有沒有印'http_layer',看看它實際上返回? –
打印'packet'並查看傳入的內容會更有用。'getlayer'似乎正在返回None。 – Holloway
當我看着各種scappy示例時,他們似乎總是在getlayer中包含一個標識符。看看這個問題結尾的答案http://stackoverflow.com/questions/13549294/get-all-the-layers-in-a-packet – Joe