Scapy - TCPSession из списка пакетов - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь использовать функциональность TCPSession (например: sniff(offline="./my_file.pcap", prn=func, store=False, session=TCPSession)), но без создания файла PCAP.

Я получаю список пакетов RAW, чтобы я мог создать список пакетов Scapy, но мне нужно функциональность TCPSession из-за пакетов HTTP: без TCPSession заголовки и тело находятся в разных пакетах, поэтому класс слоев HTTP не может идентифицировать часть тела.

Итак, у меня есть этот код, который находит HTTP-запросы :

import pickle
from scapy.all import *
from scapy.layers import http
load_layer("http")

def expand(x):
    yield x
    while x.payload:
        x = x.payload
        yield x

file_pickle = open('prueba.pkl','rb')
pkt_list = pickle.load(file_pickle)

for pkt_raw in pkt_list:
    p = Ether(pkt_raw)
    if p.haslayer(IP):
        srcIP = p[IP].src
        if p.haslayer(HTTP):
            if p.haslayer(HTTPRequest):
                print(list(expand(p)), end="\n---------------------------------------------------\n")

Выполнение этого кода находит HTTP-запросы, но без части тела POST-запросов:

[...]<HTTPRequest  Method='POST' Path='/NP3POCF.jsp' Http_Version='HTTP/1.1' Accept='*/*' Accept_Encoding='gzip, deflate' Connection='keep-alive' Content_Length='56' Content_Type='application/x-www-form-urlencoded' Host='172.16.191.129' User_Agent='python-requests/2.7.0 CPython/3.7.5 Linux/5.3.0-kali2-amd64' |>]

С помощью анализатор с TCPSession (такой как функция Scapy sniff) в пакете есть уровень Raw, который содержит тело запроса.

Любая помощь в применении TCPSession? Спасибо.

1 Ответ

1 голос
/ 18 марта 2020

Вы можете вызвать sniff(offline=X) с помощью X список пакетов, пакет, имя файла или список файлов. Убедитесь, что вы используете версию для разработки на github (см. https://scapy.readthedocs.io/en/latest/installation.html#current -development-version ), так как я не уверен, что она еще в релизе.

...