我有一個python + Scapy代碼,用於嗅探數據包並測量它們的時間旅行。 除了sniff()
選項停止代碼的運行外,一切都很好。與程序同時進行嗅探
所以,如果我有一個看起來像這樣的代碼:
print "hello"
print "world"
sniff(iface="lo")
print "this will not show"
的原因在於該sniff
運行,4號線將不會得到執行。
我該如何改變這種情況? 預先感謝您!
我有一個python + Scapy代碼,用於嗅探數據包並測量它們的時間旅行。 除了sniff()
選項停止代碼的運行外,一切都很好。與程序同時進行嗅探
所以,如果我有一個看起來像這樣的代碼:
print "hello"
print "world"
sniff(iface="lo")
print "this will not show"
的原因在於該sniff
運行,4號線將不會得到執行。
我該如何改變這種情況? 預先感謝您!
我不確定這是否符合您的需求,但sniff
需要一個prn
關鍵字參數,用於在數據包進入時將數據包打印到屏幕,但也可用於實時處理它們。
http://www.secdev.org/projects/scapy/doc/usage.html#simplistic-arp-monitor
例如:
def process(pkt):
# do stuff
sniff(iface="lo", prn=process)
process
將每接收到的分組被調用一次。這可能允許您在收到數據包時執行其他任務,但仍不會允許您執行任何通用目的的後臺任務。
這並不能阻止我的問題。由於「嗅探」也在嗅探不在「def」中的代碼的流量, – user2634624
你可以使用'multiprocessing'(甚至'threading'),但是並行處理比串行更難。考慮重新安排您的數據結構以進行串行,一次一個的操作。 – johntellsall
我會,但即使我把「嗅探」放在開頭,以後的代碼也不會執行。 – user2634624
當「嗅」運行時,你想要做什麼? –