Следуйте за потоком TCP, используя python и pyshark - PullRequest
0 голосов
/ 24 апреля 2018

Делая это вручную в Wireshark, я щелкаю правой кнопкой мыши по пакету -> следовать -> поток TCP откроется новое окно с соответствующей информацией. Есть ли способ сделать то же самое и получить эту информацию, используя модуль pyshark и python 2.7? ПРИМЕЧАНИЕ. Я выполняю тестирование запроса, отправляя недопустимые методы HTTP, поэтому поиск уровня HTTP здесь не будет работать.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Да, вы можете следить за потоком TCP с помощью python и pyshark. Ниже приведено базовое доказательство концепции.

"""
Follow a TCP stream with pyshark.

"""
import pyshark

# Change FILENAME to your pcap file's name.
FILENAME = "myfile.pcap"
# Change STREAM_NUMBER to the stream number you want to follow.
STREAM_NUMBER = 0

# open the pcap file, filtered for a single TCP stream 
cap = pyshark.FileCapture(
    FILENAME,
    display_filter='tcp.stream eq %d' % STREAM_NUMBER)

while True:
    try:
        p = cap.next()
    except StopIteration:  # Reached end of capture file.
        break
    try:
        # print data from the selected stream
        print(p.data.data.binary_value)
    except AttributeError:  # Skip the ACKs.
        pass

Я убедился, что приведенный выше код работает для python 2.7.13 и python 3.6.6.

Примечание: Поскольку более новые версии pyshark поддерживают только Python 3.5+, если вы должны использовать Python 2.7, вы застряли с pyshark-legacy Пип пакет.

0 голосов
/ 19 мая 2018

Я не знаю насчет пышарка.

Но, возможно, https://jon.oberheide.org/pynids/ будет работать, так как он также использует Python:

pynids - это оболочка Python для libnids, библиотека системы обнаружения сетевых вторжений, предлагающая сниффинг, дефрагментацию IP, повторную сборку потока TCP и обнаружение сканирования портов TCP. Пусть ваши собственные процедуры Python проверяют сетевые разговоры.

У меня нет личного опыта использования pynids, но я добился большого успеха, используя лежащую в его основе библиотеку nids, которую вы можете получить по адресу http://libnids.sourceforge.net/

Несмотря на название, Network Intrusion Detection System, ее можно использовать для гораздо большего, чем просто для обнаружения сетевых вторжений. По сути, это библиотека, которая помогает вам повторно собирать потоки TCP, такие как Followsh Stream от Wireshark.

Несмотря на то, что nids великолепен, он требует, чтобы начало потока TCP было в файле захвата. Если вы потеряете начало и не сможете его поймать, tshark может помочь:


tshark - это утилита командной строки, которая поставляется с Wireshark. Например:

tshark -r t.pcap -q -z follow,tcp,ascii,18

Он выводит в stdout то же самое, что вы видите в графическом интерфейсе Wireshark's Follow TCP Stream.

18 в приведенной выше команде является индексом потока. Чтобы определить, какое число использовать там, вы можете просто заставить свой скрипт python повторять от 0 и выше и распечатывать каждый поток, пока он не найдет нужный.

Другой способ найти индекс потока - сначала щелкнуть пакет в Wireshark, который находится в интересующем потоке. Затем разверните раздел «Протокол управления передачей», чтобы отобразить индекс потока, как показано на следующем рисунке: Как найти индекс потока

...