CAN Traffic Analysis Reference
Technical reference, protocol essentials, and investigative workflow for heavy-duty vehicle network challenges.
1. Investigation Overview & Defender Perspective Methodology
Modern commercial trucks rely on Controller Area Networks (CAN) and the SAE J1939 protocol family to interconnect distributed electronic control units. In this CTF track, you analyze vehicle network traffic and diagnostic exchanges from a fleet defender and forensic investigator perspective.
Throughout the challenge series, independent software instances that interface with the CAN bus are consistently designated as Controller Applications (CAs). A single physical Electronic Control Unit (ECU) may host multiple CAs, each possessing its own Source Address (SA) and unique 64-bit NAME.
2. SAE J1939 Protocol Essentials J1939
Commercial vehicle networks use 29-bit Extended CAN Identifiers structured according to the SAE J1939 specification:
+----------+-----+----+-----------------+-----------------+
| Priority | Res | DP | PGN (16 bits) | Source Addr (8) |
| (3 bits) | (1) |(1) | PF (8) | PS (8) | (8 bits) |
+----------+-----+----+--------+--------+-----------------+
- Parameter Group Number (PGN): A 24-bit value (composed of Data Page, PDU Format, and PDU Specific) defining the message function and payload structure.
- PDU1 (Destination-Directed): When
PF < 240(0xF0), thePSfield designates the target Destination Address (DA). - PDU2 (Broadcast): When
PF >= 240, the message is broadcast to all nodes, andPSserves as an extended group extension. - Request PGN (59904 /
0xEA00): Used to poll an ECU for a specific PGN (payload contains 3 bytes: target PGN in little-endian order). Global requests use DA0xFF(e.g. CAN ID0x18EAFFF1); unicast requests target a specific SA. - Address Claimed (PGN 60928 /
0xEE00): Broadcast when a CA claims an address or responds to a Request for PGN 60928. The 8-byte payload contains the CA's globally unique 64-bit NAME (identifying Industry Group, Vehicle System, Function, and Manufacturer Code).
3. Diagnostic Services & Dual-CA Architecture Diagnostics
Heavy-duty vehicle networks employ standard diagnostic protocols for maintenance, flashing, and security access. Commercial vehicles and simulator targets frequently host multiple Controller Applications per physical ECU:
| Diagnostic Interface | PGN Architecture | Protocol | Request CAN ID Format | Response CAN ID Format | Typical Application |
|---|---|---|---|---|---|
| Primary Diagnostics | PGN 55808 (0xDA00) |
UDS (ISO 14229 / ISO 15765-4) | 0x18DA<DA>F1 |
0x18DAF1<SA> |
Powertrain, Body, and Primary ECU services |
| Secondary / Gateway Diagnostics | PGN 61184 (0xEF00) |
KWP2000 / Proprietary-A (ISO 14230 over J1939) | 0x18EF<DA>F1 |
0x18EFF1<SA> |
Gateway, Vehicle Interface, and Auxiliary controllers |
- In J1939, standard physical UDS addressing uses PGN 55808 (
0xDA00). When communicating with a primary diagnostic service (e.g. Body Controller at SA0x21), requests are formatted as0x18DA21F1. - Secondary CAs or vendor gateway modules often route diagnostics over J1939 Proprietary-A (PGN 61184 /
0xEF00): requests to those interfaces must use0x18EF<Target_SA>F1. - If sending diagnostic requests (such as
0x3ETesterPresent or0x10DiagnosticSessionControl) to a secondary CA via UDS0x18DA...results in a timeout, verify whether that CA's diagnostic stack binds to J1939 Proprietary-A (0x18EF...) instead.
Key Diagnostic Service Identifiers:
0x10— DiagnosticSessionControl (e.g.0x85for extended/programming session).0x27— SecurityAccess (odd subfunctions request seed, even subfunctions submit key).0x3E— TesterPresent (maintains active diagnostic session; positive response echoes0x7E).
4. Recommended Tooling & Defensive Safety Tooling
Select the appropriate software tool depending on your investigation stage:
- In-Browser Analysis: Use SloppyCAN for real-time visual inspection, ID monitoring, and J1939 frame decoding without installing local dependencies. It is suitable for exploring and learning about J1939 and the target simulated vehicle, but to get all the flags some scripting will be required.
- Scripting & Automation: Use
python-canwith theslcaninterface connecting to the public simulation endpoint (e.g.socket://sim.fleetcyberchallenge.com:33939). - Protocol Exploration: Use Scapy or TruckDevil for craft-and-send investigations and state-machine tracking.
- Offline Packet Analysis: Use Wireshark or
tsharkfor analyzing provided.pcapartifact captures.
sim.fleetcyberchallenge.com:33939).
5. Quick Reference: Common Commercial Vehicle PGNs Reference
| PGN (Hex) | PGN (Dec) | Acronym | Description | Default Transmission |
|---|---|---|---|---|
0xEA00 |
59904 | RQST | Request Parameter Group | On-demand (Unicast or Global) |
0xEE00 |
60928 | AC | Address Claimed (64-bit NAME) | On startup / Upon Request |
0xEF00 |
61184 | PROP_A | Proprietary A (Destination Specific) | Diagnostics / Manufacturer messaging |
0xF004 |
61444 | EEC1 | Electronic Engine Controller 1 (RPM, Torque) | Periodic (10–20 ms) |
0xF003 |
61443 | EEC2 | Electronic Engine Controller 2 (Accelerator) | Periodic (50 ms) |
0xFEF1 |
65265 | CCVS | Cruise Control / Vehicle Speed | Periodic (100 ms) |
0xFEE5 |
65253 | HOURS | Total Engine Hours / Revolutions | Periodic (1000 ms) / On-demand |