diff --git a/test_monitor_tshark.sh b/test_monitor_tshark.sh index ff09336..efe77f4 100755 --- a/test_monitor_tshark.sh +++ b/test_monitor_tshark.sh @@ -196,11 +196,9 @@ fi # Now parse the pcap file to extract fields # Only extract 802.11 header fields - data payloads are encrypted # Include PHY rate and MCS for histograms -# Note: Some fields may not exist for all frames - tshark will output empty values -CAPTURE_OUTPUT=$(tshark -q -r "$TEMP_PCAP" -n -T fields \ - -E occurrence=f \ - -E separator='\t' \ - -E header=n \ +# Extract to temp file first to avoid pipe issues, then filter +TEMP_TSHARK_OUTPUT=$(mktemp /tmp/tshark_output_XXXXXX.txt) +tshark -q -r "$TEMP_PCAP" -n -T fields \ -e frame.number \ -e frame.time \ -e wlan.ra \ @@ -216,7 +214,11 @@ CAPTURE_OUTPUT=$(tshark -q -r "$TEMP_PCAP" -n -T fields \ -e radiotap.mcs.index \ -e wlan_radio.data_rate \ -e wlan_radio.mcs.index \ - 2>&1 | grep -E '^[0-9]' | head -1000000 || true) + 2>/dev/null > "$TEMP_TSHARK_OUTPUT" || true + +# Filter out non-packet lines (keep only lines starting with frame numbers) +CAPTURE_OUTPUT=$(grep -E '^[0-9]+\t' "$TEMP_TSHARK_OUTPUT" || true) +rm -f "$TEMP_TSHARK_OUTPUT" # Clean up temp file (unless KEEP_PCAP is set) if [ -z "$KEEP_PCAP" ]; then