/ by Fortify Labs
Komatsu Satellite Telematics Module - Firmware Strings Analysis
A strings analysis of the firmware extracted from the ORBCOMM KX-G7101 provides significant clues about the device’s functionality.
-
Right away we saw a block of interesting hits. From the following we can surmise that the firmware appears to contain a built-in recovery and update mechanism, where a field technician could connect a laptop via serial cable and load new firmware using a simple file transfer protocol called XMODEM.
-
Under normal operation this update system likely sits dormant, only activating under specific conditions such as a hardware configuration change or a corrupt firmware detection. The presence of a JP1 jumper reference elsewhere in the firmware suggests some form of hardware-selectable configuration exists on the board, though its precise function would require further investigation to confirm.
Illegal 1st Loader Sum. Illegal 2nd Loader Header Sum. Bad 2nd Loader Code. Bad 2nd Loader Datatype. Illegal 2nd Loader Address. Illegal 2nd Loader Sum. Illegal 2nd Loader Length. Transmission was canceled by User. *** 2nd Loader Software Installation Mode *** Enter Command. XMODEM Protocol Starts. Start Sending 2nd Loader Software within 10sec. Installation of 2nd Loader Software was Completed. Installation of 2nd Loader Software was not Completed.
- Next we see strings that appear to represent a firmware version of
X2C1F-002as well as a build timestamp of1999/08/24 - 20:58:18. This lines up with the chip manufacturing timestamp of9914printed on the Fujitsu flash chip (14th week of 1999 - Early April 1999).
X2C1F-002 1999/08/24 - 20:58:18
- Next we see identifiers that appear related to the communication of information, some of which can be seen below:
# GPS position reporting, confirming integrated GPS functionality @GPS_MSG, @POS_MSG, @POS_RPT # Battery status monitoring @BATT_MSG # Self diagnostics reporting @SELF_DIAG — self diagnostics reporting
- These strings reveal three data sources the module coordinates in normal operation — a GPS receiver for position and timing, the host machine for telemetry data, and the ORBCOMM satellite network for transmission — with a serial operator interface for diagnostics and control.
# UTC synchronization was critical for ORBCOMM's satellite network NO UTC PULSE # GPS has not yet acquired a fix, or the GPS receiver isn't responding. NO POSITION DATA # DTE stands for Data Terminal Equipment, which is the RS-232 term for the connected host device. This suggests the module sits between the machine and the satellite network, polling the host for data to transmit. NO DATA FROM DTE # Suggests support for an interactive operator interface Now transferring. Do you want to abort the current communication? <y/n> # Suggests possible commands are available to dump memory or buffer information Dump Start / Dump End
- The following strings represent possible internal message type identifiers of the ORBCOMM protocol implementation, potentially describing stages of satellite communication.
# Request Immediate (priority transmission request) RQIMT # Status Enquiry STENQ # Burst Transmission Mode BURST # Uplink Report ULRPT # Store Ready (buffer ready to transmit) STRRDY # Store/Stack Acknowledgement STACK # State Machine Enquiry STMENQ # Inbound Message IBMSG # Inbound Datagram IBDGRM # Outbound Message Acknowledgement OBMACK # Condition Report CNDRPT # Position Report POSRPT # Inbound Assignment IBASGN # Inbound Message Acknowledgement IBMACK # Inbound Datagram Acknowledgement IBDACK # Inbound Clear IBCLR # System Level Message SYSTEM # User Acknowledgement USRACK # User Negative Acknowledgement USRNAK # Immediate Response Acknowledgement IMRACK # Outbound Assignment OBASGN # Outbound Message OBMSG # Outbound Datagram OBDGRM # Network Control Centre Enquiry NCCENQ # Polling (gateway polling the terminal) POLLNG # Report Acknowledgement RPTACK # Slot Assignment (TDMA time slot allocation) SLTASN # Uplink Information ULINFO # Downlink Information DLINFO # Network Control Centre Information NCCINF # Idle Segment IDLSEG # Ephemeris Data (satellite orbital positions for pass prediction) EPHEM # Position Determination POSDET # Satellite Plane (orbital plane tracking) SPLANE # Satellite Orbit SORBIT # Outbound Link OBLINK # Outbound Scan OBSCAN # Hybrid Mode (combined GPS and ORBCOMM operation) HYBRID
- The following strings reveal a numbered diagnostic status display consistent with a user accessible menu options which appear to show display the state of communication parameters such as uplink and downlink channels, network synchronization, ephemeris validity and gateway assignment.
# Uplink Channel 1:UL CH # Downlink Channel 2:DL CH # Network Control Centre identifier/status 3:NCC # Ephemeris data loaded/valid flag 4:EPHEM # Synchronization status 5:SYNC # Gateway status 6:GW # POssible Orbital plane status 7:PLANE # Port (serial or communication port configuration) 8:PORT # Unsure, possibly Slot Assignment / Service Area 9:SA
- Strings found suggesting the existence of a Service Mode as well as a possible user message reflecting a change to RS-232 configuration settings.
# RS-232C serial interface configuration Change rs232c -> Baud rate:4800bps/Parity:None/Stop bit:1/Data LEN:8 # Service mode activation string Service mode
-
The following strings reveal the possible Komatsu message protocol layer, with message identifiers prefixed
KXfollowed by a category letter and two-digit type number. It appears to follow structuredprintfstyle format defining the data fields. -
The buffer status strings
KXIB : OK,KXOB : OKandKXCB : OKmight indicate three buffers for inbound, outbound and possibly control message handling. -
The format strings themselves:
%u: unsigned integer field%+d: signed integer with explicit sign%s: string field
KXS54=%u,%+d,%u, KXS63=%u,%+d,%u,%u,%u,%u,%u KXS15=%u,%u KXS15=%u KXS23= KXS30=%u,%u,%u,%u, KXS35=%u,%u,%u,%u KXS43=%u,%u,%u,%u KXS54=%u,%+d,%u, KXS55= KXS56=%s, KXS57= KXS58=%u,%u KXS63=%u,%+d,%u,%u,%u,%u,%u KXS71= KXS73=%u, KXS73=%s KXS85=%u,%u KXS85= KXS86= KXD01=%u,%u,%u,%u KXM01= KXA01=%u,%+d,%u,%u,%u,%u KXB01=%u,%+d,%u,%u,%u,%u,%u KXA01=%u,%+d,%u,%u,%u,%u KXB01=%u,%+d,%u,%u,%u,%u,%u KXA02=%+d,%u,%u,%u,%u,%u KXB02=%+d,%u,%u,%u,%u,%u,%u KXA03=%u,%u KXB03=%u,%u,%u KXA04=%u,%u, KXA05=%u,%u,%u KXA05=%u,%u,%u KXA06=%u KXB06=%u KXA00=0 KXA00=0 KXA01=%u,%+d,%u,%u,%u,%u KXA02=%+d,%u,%u,%u,%u,%u KXA03=%u,%u KXA04=%u,%u, KXA05=%u,%u,%u KXB00=0 KXB00=0 KXB01=%u,%+d,%u,%u,%u,%u,%u KXB02=%+d,%u,%u,%u,%u,%u,%u KXB03=%u,%u,%u KXIB : OK KXOB : OK KXCB : OK KXD01=%u,%u,%u,%u KXD01=%u,%u KXD01=%u,%u KXD01=%u,%u,%u
- These appear to be machine telemetry data fields being collected from the Komatsu machinery, possibly the information that gets packed into the KX messages above and transmitted via satellite. This is consistent with what Komatsu’s
Komtraxremote monitoring system is reported to monitor.
# Possible operating mode of the machine WORK_MODE # Machine caution/warning flag 1 CAUTION1 # Machine caution/warning flag 2 CAUTION2 # Battery voltage BTT_VOLT # Engine water temperature (coolant temperature) ENG_W_TMP # Engine RPM ENG_REV # Possible pump pressure PMP_PRES # Error flag ERR_FLG # System error SYS_ERR
- This appears to be consistent with a debug menu. Consistent with what you’d see if you connected to a serial terminal when debug mode is activated, which is a structured diagnostic display with multiple log views selectable by keypress.
# [GENERAL] - Top level status: connection state, acquisition state, satellite visibility --------------- [ ] GENERAL ------------------- # [1] SAT_LOG_1 - Satellite tracking log page 1, GPS PRN numbers 8-19 --------------- [1] SAT_LOG_1 ----------------- # [2] SAT_LOG_2 - Satellite tracking log page 2, GPS PRN numbers 20-7 --------------- [2] SAT_LOG_2 ----------------- # [3] NCC_LOG - Network Control Centre communication log --------------- [3] NCC_LOG ------------------- # [4] NCC_RX - Raw inbound NCC traffic --------------- [4] NCC_RX -------------------- # [5] NCC_TX - Raw outbound NCC traffic --------------- [5] NCC_TX -------------------- # [6] SYS,GN_DATA - System and general data --------------- [6] SYS,GN_DATA --------------- # [7] SVC,MAP,_SLP - Service, map and sleep mode data --------------- [7] SVC, MAP,_SLP ------------- # [8] ER,SPC_DATA - Error and special data --------------- [8] ER,SPC_DATA --------------- # [9] GPS_DATA - Raw GPS receiver output --------------- [9] GPS_DATA ------------------ GPS = # [&] SYSTEM - System internals: state machine counters and flags --------------- [&] SYSTEM -------------------- sy/in[ ], sd/ib[ ], io/vat/ins[ ], er/lck[ ], itm[ # ['] AI_u,sa,sb,@,_byte - Other internal diagnostic information --------------- ['] AI_u,sa,sb, @,_byte ------- , ib2= , ib3= , ib4= , ib5= , sum= # [(] GENERAL_LOG - General event log --------------- [(] GENERAL_LOG --------------- # [)] GPS_LOG,_CHS,DIS - Possible GPS movement log: cumulative distance, geofence area, position history --------------- [)] GPS_LOG,_CHS, DIS --------- move=[ ]m chase=[ ]m area=[ ]m prv/now=[ ] wait/cnt=[ # [!] OB_DATA - Possible Outbound message data inspection --------------- [!] OB_DATA ------------------- # [''] IB_DATA - Possible Inbound message data inspection --------------- [''] IB_DATA ------------------ # [#] VARIABLE DATA - Possible memory inspection by address and byte (basic memory viewer) --------------- [#] VARIABLE DATA ------------- address = byte = # [%] ERR_QUAN,_DATA - Possible error related information --------------- [%] ERR_QUAN,_DATA ------------ Some Rx_dt Timer_6 Restart. Time Over Tm_6 Restart. Rx_data num < 30,
- These appear to be the boot/initialisation sequence strings. What might get printed to the serial terminal when the device powers up.
# Entry point of the main() function (O_MAIN = ORBCOMM Main)
--- O_MAIN() START ---
# Clearing user RAM message
USER_RAM CLEAR
# User memory clear message
*** USER_MEM CLEAR ***
# Version string, possibly: ORBCOMM protocol version, header version, communications version
Ver orb[
] hed[
] com[
# KXS data structure initialisation error flag
*** KXS ERROR! FLG =
# Day of week display strings
(SUN)
(MON)
(TUE)
(WED)
(THU)
(FRI)
(SAT)
# Error status messages
ERR!! status =
ERR!! qual =
Conclusion
The strings analysis alone reveals that this likely provides satellite communication and collects machine telemetry from Komatsu machinery. It appears to have the functionality to transmit this date via the ORBCOMM network, with integrated GPS, a serial diagnostic interface, and a field-serviceable firmware update mechanism.