diff --git a/pymobiledevice3/services/pcapd.py b/pymobiledevice3/services/pcapd.py index b4bb1da29..7c93adf8b 100755 --- a/pymobiledevice3/services/pcapd.py +++ b/pymobiledevice3/services/pcapd.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import enum +import time from collections.abc import Generator from typing import Optional @@ -391,10 +392,21 @@ def write_to_pcap(self, out, packet_generator) -> None: writer = FileWriter(out, shb) for packet in packet_generator: + if hasattr(packet, 'timestamp'): + packet_time = packet.timestamp + else: + packet_time = time.time() + + timestamp_microseconds = int(packet_time * 1_000_000) + timestamp_high = (timestamp_microseconds >> 32) & 0xFFFFFFFF + timestamp_low = timestamp_microseconds & 0xFFFFFFFF + enhanced_packet = shb.new_member(blocks.EnhancedPacket, options={ 'opt_comment': f'PID: {packet.pid}, ProcName: {packet.comm}, EPID: {packet.epid}, ' f'EProcName: {packet.ecomm}, SVC: {packet.svc}' }) enhanced_packet.packet_data = packet.data + enhanced_packet.timestamp_high = timestamp_high + enhanced_packet.timestamp_low = timestamp_low writer.write_block(enhanced_packet)