Scapy автоматически обновляет пакетный номер последовательности TCP и номер подтверждения и длину IP-уровня при редактировании пакета вручную - PullRequest
0 голосов
/ 07 января 2020

Я читаю пакеты из файла pcap и вставляю некоторый уникальный идентификатор в полезную нагрузку TCP, поэтому необходимо обновить длину уровня IP и номер последовательности и подтверждения TCP. Возможно ли это сделать с помощью scapy?

for pkt in pkt_reader_pcap:

    if IP not in pkt:
        continue

    if TCP not in pkt:
        continue

    newp = pkt.payload
    newp[IP].dst = 1.2.3.4
    newp[IP].src = 1.2.3.4
    del newp[IP].len
    del newp[IP].chksum

    # if pkt has TCP layer, insert field before Host to the payload
    field = "Id: 1234\r\n"

    insert = field + 'Host: '
    http_content = newp.getlayer(Raw).load
    http_content = http_content.replace(b"Host: ", insert.encode())
    newp[Raw].load = http_content
    newp[TCP].chksum = None

    ## manually updated length of IP header which works fine, but it should happen 
    ## automatically or by some method of scapy
    newp[IP].len += len(field)

Я установил контрольную сумму TCP / IP на None, но, тем не менее, номер Seq / Ack не обновляется. Есть ли способ добиться того же?

...