UDP socket on port 4729, parses GSMTAP header, validates
GSMTAP_TYPE_SIM, returns (sub_type, data). Compatible with
simtrace2-sniff and pySim's GsmtapApduSource.
Use sys.stdin.isatty() to auto-detect: foreground sessions still
respond to SIGHUP (terminal close kills the process as expected),
background/piped processes ignore it and survive.
__main__.py: add signal.SIGHUP → SIG_IGN before setting up
SIGINT/SIGTERM handlers. Sniffer no longer dies when the terminal
closes or the shell session ends.
README: add Background / Daemon section with nohup examples.
Split Quick Start into Prerequisites (Python/PyUSB/libusb/hardware),
Install (clone + pip), and Running (startup script vs Python module).
Startup script section includes env var override examples.
Added dependency table note — PCAP/GSMTAP/hex dump use only stdlib.
dump.py: tpdu_timestamp_prefix(), tpdu_atr_time_prefix(),
format_message() accepts tpdu_prefix parameter,
FileDumper supports fmt + ATR time tracking
__main__.py: --format/-f flag (hex|timestamp|atr-time),
atr_time_start tracking in message loop
sniff-start.sh: pass through --format/-f and FORMAT env var