From 274de25956e5b497ca9caee93b68ab269c84f5d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20De=20Keersmaeker?= <francois.dekeersmaeker@uclouvain.be> Date: Wed, 31 May 2023 14:25:37 +0200 Subject: [PATCH] Keep old timestamp when rebuilding packet --- src/packet/Packet.py | 6 ++++-- src/pcap_tweaker.py | 10 +++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/packet/Packet.py b/src/packet/Packet.py index 71f6143..9c60a96 100644 --- a/src/packet/Packet.py +++ b/src/packet/Packet.py @@ -187,9 +187,11 @@ class Packet: def rebuild(self) -> None: """ - Rebuild packet. + Rebuild packet, but keep old timestamp. """ + timestamp = self.packet.time self.packet = self.packet.__class__(bytes(self.packet)) + self.packet.time = timestamp def update_checksums(self) -> None: @@ -302,7 +304,7 @@ class Packet: # Set new value for field self.layer.setfieldval(field, new_value) - # Update checksums, if needed + # Update checksums self.update_checksums() # Return value: dictionary containing tweak information diff --git a/src/pcap_tweaker.py b/src/pcap_tweaker.py index 16dbd65..d42f28e 100644 --- a/src/pcap_tweaker.py +++ b/src/pcap_tweaker.py @@ -47,12 +47,16 @@ def must_edit_packet(i: int, packet_numbers: list, random_range: int) -> bool: def rebuild_packet(packet: scapy.Packet) -> scapy.Packet: """ - Rebuild a Scapy packet from its bytes representation. + Rebuild a Scapy packet from its bytes representation, + but keep its old timestamp. :param packet: Scapy packet - :return: Rebuilt Scapy packet + :return: Rebuilt Scapy packet, with old timestamp """ - return packet.__class__(bytes(packet)) + timestamp = packet.time + new_packet = packet.__class__(bytes(packet)) + new_packet.time = timestamp + return new_packet def tweak_pcaps(pcaps: list, output: str, random_range: int = 1, packet_numbers: list = None, dry_run: bool = False) -> None: -- GitLab