В настоящее время у меня есть фрагмент кода Python 2.6, который запускает два цикла одновременно.Код использует модуль gps (gpsd) и модуль scapy.По сути, первая функция (gpsInfo) содержит непрерывный цикл во время захвата данных GPS с устройства GPS и записи местоположения на консоль.Вторая функция (ClientDetect) работает в непрерывном цикле, также анализирует эфир для данных Wi-Fi и печатает эти данные при обнаружении определенных пакетов.Я связал эти две петли с GPS, работающим в качестве фоновой нити.То, что я хочу сделать (и изо всех сил пытался выяснить, как это сделать в течение 5 дней), когда функция ClientDetect находит совпадение и печатает соответствующую информацию, я хочу, чтобы соответствующие координаты GPS того времени, когда был сделан этот удар, также печатались вприставка.В настоящее время мой код, похоже, не работает.
observedclients = [] p = "" # Relate to wifi packet session =
gps.gps(mode=gps.WATCH_NEWSTYLE)
def gpsInfo():
while True:
session.poll()
time.sleep(5)
if gps.PACKET_SET:
session.stream
print session.fix.latitude + session.fix.longitude
time.sleep(0.1)
def WifiDetect(p):
if p.haslayer(Dot11):
if p.type == 0 and p.subtype in stamgmtstypes:
if p.addr2 not in observedclients:
print p.addr2
observedclients.append(p.addr2)
def ActivateWifiDetect():
sniff(iface="mon0", prn=WifiDetect)
if __name__ == '__main__':
t = threading.Thread(target=gpsInfo)
t.start()
WifiDetect()
Может кто-нибудь взглянуть на мой код, чтобы увидеть, как лучше всего получить данные одновременно, когда есть Wi-Fi, для печати координат GPSтоже?Кто-то упоминал о реализации очередей, но я исследовал это, но безрезультатно, как его реализовать.
Как уже говорилось, цель этого кода состоит в том, чтобы сканировать как GPS, так и определенные пакеты Wi-Fi, а при обнаружении распечататьподробности, касающиеся пакета и места, где он был обнаружен.