I want to fetch the human-readable date/time format from IEEE 802.11[a,b,g,n] wireless packets.
We have an open-source project for wireless pen-testing that called Aircrack-ng. This package has a tool that called Airodump-ng.
I found a function in Airodump-ng's source that can convert this timestamp to readable format.
source-code:
https://github.com/aircrack-ng/aircrack-ng/blob/master/src/airodump-ng.c#L3039
https://github.com/aircrack-ng/aircrack-ng/blob/master/src/airodump-ng.c#L3044
#define TSTP_SEC 1000000ULL /* It's a 1 MHz clock, so a million ticks per second! */
#define TSTP_MIN (TSTP_SEC * 60ULL)
#define TSTP_HOUR (TSTP_MIN * 60ULL)
#define TSTP_DAY (TSTP_HOUR
static char *parse_timestamp(unsigned long long timestamp) {
static char s[15];
unsigned long long rem;
unsigned int days, hours, mins, secs;
days = timestamp / TSTP_DAY;
rem = timestamp % TSTP_DAY;
hours = rem / TSTP_HOUR;
rem %= TSTP_HOUR;
mins = rem / TSTP_MIN;
rem %= TSTP_MIN;
secs = rem / TSTP_SEC;
snprintf(s, 14, "%3ud %02u:%02u:%02u", days, hours, mins, secs);
return s; }
In Airodump-ng, I saw below human-readable up-times for access-points:
for example: the up-time of G4_3355 as an Access-Point is ~7 minutes.
for testing, i have a PCAP file and you can parse it with Wireshark.
download link of PCAP file: https://ufile.io/y0cca
a screenshot from Airodump-ng tool: https://ufile.io/qpv5t
How we can write above function (C codes) in Python !?
the <bsstimestamp>183258624319</bsstimestamp> as input.
ts = 183258624319
result: a Date/Time readable format.
note: the format of timestamps in wireshark is not like as above TS. https://www.epochconverter.com/
Help me to convert the timestamps of this PCAP file to readable format like as above examples.
Thanks a lot.
Simple example:
from scapy.all import *
def print_timestamp(ts):
TSTP_SEC = 1000000
TSTP_MIN = TSTP_SEC * 60
TSTP_HOUR = TSTP_MIN * 60
TSTP_DAY = TSTP_HOUR * 24
days = ts / TSTP_DAY;
rem = ts % TSTP_DAY;
hours = rem / TSTP_HOUR;
rem %= TSTP_HOUR;
mins = rem / TSTP_MIN;
rem %= TSTP_MIN;
secs = rem / TSTP_SEC;
print '%3ud %02u:%02u:%02u'% (days, hours, mins, secs)
pkts = rdpcap('timestamp.cap')
for pkt in pkts:
if pkt.haslayer(Dot11Beacon) or pkt.haslayer(Dot11ProbeResp):
print_timestamp(pkt.timestamp)