Packet #210967 Success

TRACEROUTE_APP packet from Petrenko (25e4) to hidentalon (hdtn)

1
Total Receptions
1
Unique Gateways
0
Hop Count
30
Payload Bytes
Packet Information
Database ID: 210967
Mesh Packet ID: 0x81043bbb
Used for correlation across gateways
Timestamp: 2025-12-06 00:04:39 UTC
From Node: Petrenko (25e4)
To Node: hidentalon (hdtn)
Success: Processed
Protocol: TRACEROUTE_APP
Port: 70
Gateway: q00_Repeater (q00)
Channel: LongFast
RSSI: -129 dBm
SNR: -11.0 dBm
Hop Info: 0/2 hops
Start: 2, Limit: 2
Payload Data
Protocol: TRACEROUTE_APP
Size: 30 bytes
Decoded: Yes
Decoded Data:
Route Information
SNR Towards: -14.25 dB
Return Path: q00_Repeater (q00)
SNR Back: -11.0 dB
Traceroute Steps
Hop From Node To Node Distance SNR (dB) Direction Analysis
1 hidentalon (hdtn) Petrenko (25e4) Unknown -14.25 dB Origin Hops
Traceroute incomplete - Final destination not reached
Return Path Steps
Hop From Node To Node Distance SNR (dB) Direction Analysis
1 Petrenko (25e4) q00_Repeater (q00) 3.96 km -11.0 dB Return Start Hops
Total Return Distance
3.96 km
Combined Traceroute Graph
Controls: Drag nodes to rearrange • Mouse wheel to zoom • Click and drag background to pan • Hover for details
Loading graph...

Building graph...

Legend & Paths
Nodes
🔄 Router Node
📡 Gateway Node
🚀 Source Node
🎯 Target Node
Connections
RF Link
Gateway Connection
Direct Reception (0 hops)
Packet Paths
Loading paths...
.traceroute-graph-container { height: 700px; width: 100%; border: 1px solid #dee2e6; border-radius: 0.375rem; position: relative; overflow: hidden; background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); } /* Mobile responsiveness */ @media (max-width: 768px) { .traceroute-graph-container { height: 500px; } } /* Legend items */ .legend-item { display: flex; align-items: center; padding: 4px 6px; border-radius: 4px; cursor: pointer; transition: background-color 0.2s ease; position: relative; } .legend-item:hover { background-color: rgba(0, 123, 255, 0.1); } .legend-path-item { display: flex; align-items: center; padding: 3px 6px; border-radius: 4px; cursor: pointer; transition: all 0.2s ease; margin-bottom: 2px; border-left: 3px solid transparent; } .legend-path-item:hover { background-color: rgba(0, 0, 0, 0.05); transform: translateX(2px); } .legend-path-item.highlighted { background-color: rgba(0, 123, 255, 0.15); border-left-color: var(--path-color, #007bff); } .legend-path-color { width: 16px; height: 3px; margin-right: 8px; border-radius: 2px; flex-shrink: 0; } .legend-path-info { flex: 1; min-width: 0; } .legend-path-title { font-size: 0.75rem; font-weight: 600; margin-bottom: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .legend-path-details { font-size: 0.65rem; color: #6c757d; line-height: 1.2; } /* Tooltip styles */ .legend-tooltip { position: absolute; background: rgba(0, 0, 0, 0.9); color: white; padding: 8px 12px; border-radius: 6px; font-size: 0.75rem; pointer-events: none; z-index: 1000; max-width: 250px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity 0.2s ease; white-space: nowrap; } .traceroute-graph-container svg { cursor: grab; } .traceroute-graph-container svg:active { cursor: grabbing; } .graph-tooltip { position: absolute; background: rgba(0, 0, 0, 0.95); color: white; padding: 12px 16px; border-radius: 8px; font-size: 13px; pointer-events: none; z-index: 1000; max-width: 400px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); line-height: 1.5; border: 1px solid rgba(255, 255, 255, 0.1); } .graph-tooltip .tooltip-title { font-weight: bold; margin-bottom: 8px; color: #fff; font-size: 14px; border-bottom: 1px solid rgba(255, 255, 255, 0.2); padding-bottom: 4px; } .graph-tooltip .tooltip-content { color: #e0e0e0; } .graph-tooltip .tooltip-badge { display: inline-block; background: rgba(255, 255, 255, 0.2); padding: 2px 6px; border-radius: 4px; font-size: 11px; margin: 2px 4px 2px 0; } .node-circle { cursor: pointer; transition: all 0.3s ease; filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.2)); } .node-circle:hover { stroke-width: 4px !important; filter: drop-shadow(2px 2px 8px rgba(0,0,0,0.4)) brightness(1.1); transform: scale(1.1); } .node-router { fill: #4a90e2; stroke: #2c5aa0; } .node-gateway { fill: #28a745; stroke: #1e7e34; } .node-gateway-router { fill: url(#gatewayRouterGradient); stroke: #1e7e34; } .node-source { fill: #ff6b35 !important; stroke: #d63031 !important; stroke-width: 4px !important; } .node-target { fill: #6c5ce7 !important; stroke: #5f3dc4 !important; stroke-width: 4px !important; } .link-line { transition: all 0.3s ease; cursor: pointer; filter: drop-shadow(1px 1px 2px rgba(0,0,0,0.1)); } .link-line:hover { stroke-width: 8px !important; filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3)); } .gateway-connection { stroke-dasharray: 5,5; stroke: #17a2b8; stroke-width: 2; opacity: 0.7; } .gateway-connection:hover { opacity: 1; stroke-width: 4; } .gateway-connection-zero-hop { stroke-dasharray: 2,2; stroke: #fd7e14; stroke-width: 2; opacity: 0.7; } .gateway-connection-zero-hop:hover { opacity: 1; stroke-width: 4; } .path-line { fill: none; stroke-width: 4; opacity: 0.8; transition: all 0.3s ease; pointer-events: none; filter: drop-shadow(1px 1px 2px rgba(0,0,0,0.2)); } .path-line:hover { opacity: 1; stroke-width: 6; } .node-label { pointer-events: none; user-select: none; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 600; text-shadow: 1px 1px 2px rgba(255,255,255,0.8); font-size: 11px; } .link-label { pointer-events: none; user-select: none; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: bold; text-shadow: 1px 1px 2px rgba(255,255,255,0.9); font-size: 10px; } /* Old path legend CSS removed - now using sidebar legend */ .modal-backdrop { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 9999; cursor: pointer; } .modal-content { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: white; border: 1px solid #ccc; border-radius: 12px; padding: 24px; box-shadow: 0 8px 32px rgba(0,0,0,0.3); z-index: 10000; max-width: 600px; width: 90%; max-height: 80vh; overflow-y: auto; cursor: default; }
Raw Packet Analysis
Complete field breakdown and MQTT privacy/exposure analysis
Packet Structure
MQTT Packet Flow:
ServiceEnvelope (MQTT layer) → MeshPacket (Mesh layer) → Decoded Payload (Application data)
Total Size:30 bytes
Gateway:!8488730c
Channel:LongFast
Payload Type:TRACEROUTE_APP
Hop Count:Unknown / 2
Privacy Summary
Exposure Level:
Direct Message
Privacy Features:
✓ Direct LoRa transmission (not via MQTT)
✓ Acknowledgment requested
+ 3 more...
Exposure Risks:
⚠ Default channel - no encryption
⚠ Packet visible to MQTT subscribers
+ 1 more...
MQTT ServiceEnvelope Fields

MQTT ServiceEnvelope contains the MeshPacket plus routing metadata

FieldValue
gateway_id !8488730c
Node ID format
channel_id LongFast
Default public channel
packet MeshPacket (30 bytes)
Contains the actual mesh network packet
MeshPacket Fields

Core mesh packet with routing and payload information

FieldValueType
from 2794857956
Source node ID
uint32
to 800555880
Target node ID
uint32
decoded.portnum 70
TRACEROUTE_APP
enum
decoded.payload_length 30 bytes size
hop_limit 2
Remaining hops allowed
uint32
hop_start 2
Initial hop limit
uint32
hops_taken 0
Calculated: hop_start - hop_limit
derived
rx_rssi -129.0 dBm
Signal strength at gateway
int32
rx_snr -11.00 dB
Signal quality at gateway
float
rx_time 1764968678
Receive timestamp
fixed32
via_mqtt False
Direct LoRa transmission
bool
want_ack True
Acknowledgment requested
bool
priority Not set enum
delayed Not set enum
channel Not set uint32
pki_encrypted False
Standard encryption
bool
next_hop 104
Next hop node ID
uint32
relay_node 228
Relay node ID
uint32
tx_after Not set uint32
timestamp 1764968679.4175055
Unix timestamp
uint32
MQTT Privacy & Exposure Analysis

Analysis of privacy features and exposure risks when packet is shared via MQTT

Exposure Level: Direct Message
Privacy Features:
  • ✓ Direct LoRa transmission (not via MQTT)
  • ✓ Acknowledgment requested
  • ✓ Targeted to specific node
  • ✓ Gateway node ID tracked
  • ✓ Zero-hop: direct from source to MQTT gateway
Exposure Risks:
  • ⚠ Default channel - no encryption
  • ⚠ Packet visible to MQTT subscribers
  • ⚠ RF signal metrics exposed (location inference possible)
MQTT-Specific Fields
Want ack: True
Gateway ID: !8488730c
Zero Hop Policy: Enabled
Direct gateway connection
Signal Metrics: RSSI: -129.0 dBm
SNR: -11.00 dB
Complete Payload Analysis

Detailed breakdown of all payload fields and decoded data

Payload Metadata:
Protocol:TRACEROUTE_APP
Size:30 bytes
Decoded: Yes
Complete Payload Data (JSON):
{ "route_nodes": [], "snr_towards": [ -14.25 ], "route_back": [ 2223534860 ], "snr_back": [ -11.0 ], "route_node_names": { "800555880": "hidentalon (hdtn)", "2223534860": "q00_Repeater (q00)", "2794857956": "Petrenko (25e4)" }, "traceroute_packet": { "packet_data": { "id": 210967, "timestamp": 1764968679.4175055, "from_node_id": 2794857956, "to_node_id": 800555880, "portnum": 70, "portnum_name": "TRACEROUTE_APP", "gateway_id": "!8488730c", "channel_id": "LongFast", "mesh_packet_id": 2164538299, "rssi": -129, "snr": -11.0, "hop_limit": 2, "hop_start": 2, "payload_length": 30, "processed_successfully": 1, "raw_payload": "120ac7ffffffffffffffff011a040c738884220ad4ffffffffffffffff01", "via_mqtt": 0, "want_ack": 1, "priority": 0, "delayed": 0, "channel_index": null, "rx_time": 1764968678, "pki_encrypted": 0, "next_hop": 104, "relay_node": 228, "tx_after": 0, "timestamp_str": "2025-12-06 00:04:39", "hop_count": 0, "has_payload": true, "success": 1, "from_node_name": "Petrenko (25e4)", "to_node_name": "hidentalon (hdtn)", "gateway_name": "q00_Repeater (q00)", "gateway_location": { "node_id": 2223534860, "latitude": 47.2883769, "longitude": 39.693543, "altitude": 10, "timestamp": 1765000932.4912791, "timestamp_str": "2025-12-06 09:02:12", "display_name": "q00_Repeater", "long_name": "q00_Repeater", "short_name": "q00", "hw_model": "TBEAM" } }, "resolve_names": true, "packet_id": 210967, "from_node_id": 2794857956, "to_node_id": 800555880, "timestamp": 1764968679.4175055, "gateway_id": "!8488730c", "raw_payload": "120ac7ffffffffffffffff011a040c738884220ad4ffffffffffffffff01", "hop_limit": 2, "hop_start": 2, "from_node_name": "Petrenko (25e4)", "to_node_name": "hidentalon (hdtn)", "route_data": { "route_nodes": [], "snr_towards": [ -14.25 ], "route_back": [ 2223534860 ], "snr_back": [ -11.0 ] }, "forward_path": { "path_type": "forward_with_return", "node_ids": [ 800555880, 2794857956 ], "node_names": [ "hidentalon (hdtn)", "Petrenko (25e4)" ], "snr_values": [ -14.25 ], "hops": [ { "hop_number": 1, "from_node_id": 800555880, "to_node_id": 2794857956, "from_node_name": "hidentalon (hdtn)", "to_node_name": "Petrenko (25e4)", "snr": -14.25, "direction": "forward", "is_target_hop": false, "distance_meters": null, "from_location_timestamp": null, "to_location_timestamp": null, "from_location_age_warning": "No location data available", "to_location_age_warning": "No location data available" } ], "is_complete": false, "total_hops": 1 }, "return_path": { "path_type": "return", "node_ids": [ 2794857956, 2223534860 ], "node_names": [ "Petrenko (25e4)", "q00_Repeater (q00)" ], "snr_values": [ -11.0 ], "hops": [ { "hop_number": 1, "from_node_id": 2794857956, "to_node_id": 2223534860, "from_node_name": "Petrenko (25e4)", "to_node_name": "q00_Repeater (q00)", "snr": -11.0, "direction": "return", "is_target_hop": false, "distance_meters": 3955.159311612182, "from_location_timestamp": 1763802852.4225366, "to_location_timestamp": 1764968038.2580342, "from_location_age_warning": "from 1.9w ago", "to_location_age_warning": "from 0.2h ago" } ], "is_complete": false, "total_hops": 1 }, "actual_rf_path": { "path_type": "combined_rf", "node_ids": [ 800555880, 2794857956, 2223534860 ], "node_names": [ "hidentalon (hdtn)", "Petrenko (25e4)", "q00_Repeater (q00)" ], "snr_values": [ -14.25, -11.0 ], "hops": [ { "hop_number": 1, "from_node_id": 800555880, "to_node_id": 2794857956, "from_node_name": "hidentalon (hdtn)", "to_node_name": "Petrenko (25e4)", "snr": -14.25, "direction": "forward_rf", "is_target_hop": false, "distance_meters": null, "from_location_timestamp": null, "to_location_timestamp": null, "from_location_age_warning": "No location data available", "to_location_age_warning": "No location data available" }, { "hop_number": 2, "from_node_id": 2794857956, "to_node_id": 2223534860, "from_node_name": "Petrenko (25e4)", "to_node_name": "q00_Repeater (q00)", "snr": -11.0, "direction": "return_rf", "is_target_hop": false, "distance_meters": 3955.159311612182, "from_location_timestamp": 1763802852.4225366, "to_location_timestamp": 1764968038.2580342, "from_location_age_warning": "from 1.9w ago", "to_location_age_warning": "from 0.2h ago" } ], "is_complete": false, "total_hops": 2 } }, "has_return_path": true, "is_complete": false, "forward_path_display": "hidentalon (hdtn) → Petrenko (25e4)", "return_path_display": "Petrenko (25e4) → q00_Repeater (q00)", "actual_rf_path_display": "hidentalon (hdtn) → Petrenko (25e4) → q00_Repeater (q00)", "forward_hops": [ { "hop_number": 1, "from_node_id": 800555880, "to_node_id": 2794857956, "from_node_name": "hidentalon (hdtn)", "to_node_name": "Petrenko (25e4)", "snr": -14.25, "direction": "forward", "is_target_hop": false, "distance_meters": null, "from_location_timestamp": null, "to_location_timestamp": null, "from_location_age_warning": "No location data available", "to_location_age_warning": "No location data available" } ], "return_hops": [ { "hop_number": 1, "from_node_id": 2794857956, "to_node_id": 2223534860, "from_node_name": "Petrenko (25e4)", "to_node_name": "q00_Repeater (q00)", "snr": -11.0, "direction": "return", "is_target_hop": false, "distance_meters": 3955.159311612182, "from_location_timestamp": 1763802852.4225366, "to_location_timestamp": 1764968038.2580342, "from_location_age_warning": "from 1.9w ago", "to_location_age_warning": "from 0.2h ago" } ], "total_forward_distance": 0, "total_return_distance": 3955.159311612182 }
Complete Protobuf Decode (JSON)
{ "service_envelope": { "gateway_id": "!8488730c", "channel_id": "LongFast", "packet": "MeshPacket (see mesh_packet below)" }, "mesh_packet": { "from": 2794857956, "to": 800555880, "id": 2164538299, "rx_time": 1764968678, "rx_snr": -11.0, "rx_rssi": -129, "hop_limit": 2, "hop_start": 2, "via_mqtt": 0, "want_ack": 1, "priority": 0, "delayed": 0, "channel_index": null, "pki_encrypted": 0, "next_hop": 104, "relay_node": 228, "tx_after": 0, "decoded": { "portnum": 70, "payload": "120ac7ffffffffffffffff011a040c738884220ad4ffffffffffffffff01", "want_response": null, "dest": null, "source": null, "request_id": null, "reply_id": null, "emoji": null, "parsed_payload": { "snr_towards": [ -57 ], "route_back": [ 2223534860 ], "snr_back": [ -44 ], "type": "protobuf", "portnum": "TRACEROUTE_APP", "message_class": "RouteDiscovery" } } } }
Raw Packet Data (30 bytes)
120ac7ffffffffffffffff011a040c738884220ad4ffffffffffffffff01
Hex Analysis:
Size:30 bytes
Format:Protobuf (Protocol Buffers)
Encoding:Binary with varint and length-delimited fields
This is the raw protobuf-encoded payload as received from MQTT. The structure follows the Meshtastic protobuf schema definitions.
All Receptions
All gateways that received this packet
Correlation: Using Mesh Packet ID
Gateway Time Offset RSSI SNR Hops Channel Timestamp Actions
q00_Repeater (q00) Primary 0.000s
Reference
-129.0 dBm -11.00 dB 0 LongFast 2025-12-06 00:04:39 Current
No other receptions found within ±2 seconds
1

Total Receptions

1

Unique Gateways