URL-запрос и снифф (count = x) не работают вместе. sniff (count) ожидает x пакетов, чтобы прослушать, и хотя мне нужно поставить строку перед url-запросом, который блокирует программу, url-запрос никогда не запускается и никогда не прослушивает какой-либо пакет.
Когда я открыл 2 Windows в командной строке Ubuntu, это сработало. В первом окне я активировал интерактивный режим python и активировал сниффер. После этого я запустил веб-сканер во втором окне, и анализатор в 1-м окне правильно получил пакеты и поместил их на экран / в pcap-файл.
Теперь самым простым способом будетнаписать 2 скрипта и запустить их из 2 разных Windows, но я хочу выполнить всю работу в одном скрипте: веб-сканирование, прослушивание пакетов и помещение их в pcap-файл
Вот код, который неработа:
class spider():
…
def parse():
a = sniff(filter="icmp and host 128.65.210.181", count=1)
req = urllib.request.urlopen(self.next_url.replace(" ",""))
a.nsummary()
charset = req.info().get_content_charset()
Теперь первая строка блокирует программу, ожидая 4 пакета, что не может сделать, потому что только в следующей строке выполняется запрос. Смена линий также не работает. Я думаю, что единственный способ решить эту проблему - это работать с параличами, поэтому я также попробовал это:
class protocoller():
...
def run(self):
self.pkt = sniff(count=5) # and here it blocks
…
prot = protocoller()
Main.thr = threading.Thread(target=prot.run())
Main.thr.start()
Я всегда думал, что поток выполняется независимо от основной программы, но он блокируетэто как если бы это было частью этого. Любые предложения?
Так что мне нужно решение, в котором веб-сканер и протокол IP / TCP на основе scapy работают независимо друг от друга.
Может ли sr ()-функция scapy будет альтернативой?
https://scapy.readthedocs.io/en/latest/usage.html
Можно ли вручную поместить запрос в пакет и поместить полученный пакет в pcap-файл?