diff --git a/src/packet/Packet.py b/src/packet/Packet.py index 71f614333e2fb6b021f0586c4e1961fdc3a5fec5..9c60a96c7ecbee8eb20abd0e91e1897ff498fcfc 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 16dbd65960b5d721388c5ed06d3d3c8e3fabd2b4..d42f28e79777a644d2f39ccf3f148d5a0a618df7 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: