0
我一直在研究網絡嗅探應用程序,目前我正在嘗試使其可遠程運行。我使用扭曲的網絡部分。本質上,我發送一個數據包給嗅探器,告訴它開始,然後一個不同的應該停止。立即運行兩個阻塞函數
我碰到的問題是,twisted的reactor.run()和scapy的sniff()函數塊,所以似乎不可能同時嗅探和發送嗅探數據。有沒有一些確定的方式來做到這一點?
我一直在研究網絡嗅探應用程序,目前我正在嘗試使其可遠程運行。我使用扭曲的網絡部分。本質上,我發送一個數據包給嗅探器,告訴它開始,然後一個不同的應該停止。立即運行兩個阻塞函數
我碰到的問題是,twisted的reactor.run()和scapy的sniff()函數塊,所以似乎不可能同時嗅探和發送嗅探數據。有沒有一些確定的方式來做到這一點?
是的。你可能想多線程管理的一個API,如twisted.internet.threads.deferToThread()
:
http://twistedmatrix.com/documents/current/api/twisted.internet.threads.html#deferToThread
你可以使用它像:
def runScapy():
d = reactor.deferToThread(scapy.sniff)
d.addCallback(doSomethingWithSniffResult)
reactor.callWhenRunning(runScapy)
reactor.run()
..although我不熟悉Scapy的和我不不知道接口是如何實際使用的。
也許[this](https://github.com/hellais/txscapy)?看起來非常過時,所以我不知道它是否真的有效。 – dano
對不起,這不是我正在尋找的。這使用scapy來構造不阻塞的數據包,然後用扭曲的方式發送它們。我正在尋找一種方法來同時嗅探和發送數據包。 – Magitrek