<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Quarkslab's blog - OSINT</title><link href="http://blog.quarkslab.com/" rel="alternate"></link><link href="http://blog.quarkslab.com/feeds/osint.rss.xml" rel="self"></link><id>http://blog.quarkslab.com/</id><updated>2026-04-09T00:00:00+02:00</updated><entry><title>Tearing down a car telematic unit (and finding an accident on Facebook)</title><link href="http://blog.quarkslab.com/tearing-down-a-car-telematic-unit-and-finding-an-accident-on-facebook.html" rel="alternate"></link><published>2026-04-09T00:00:00+02:00</published><updated>2026-04-09T00:00:00+02:00</updated><author><name>Romain Marchand</name></author><id>tag:blog.quarkslab.com,2026-04-09:/tearing-down-a-car-telematic-unit-and-finding-an-accident-on-facebook.html</id><summary type="html">&lt;p&gt;From hardware analysis to OSINT: how we retrieved information about a BYD car crash by analyzing the TCU embedded memory.&lt;/p&gt;</summary><content type="html">&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Modern cars are highly connected electronic systems. Over the last decade, vehicles have seen a rapid increase in connectivity, with multiple ECUs communicating internally but also with external networks. Telematic units (TCUs) play a key role in this evolution, enabling cellular communication and emergency calls (eCall).&lt;/p&gt;
&lt;p&gt;This rise in connectivity has been accompanied by changes in vehicle electronic architectures, moving from simple, isolated ECUs to complex, centralized or domain-based architectures. Such changes also introduce new security and privacy requirements. European regulations like UNECE R155 and R156 now push manufacturers to implement secure systems that can be updated remotely Over-The-Air updates (OTA) to address vulnerabilities and ensure safety compliance.&lt;/p&gt;
&lt;p&gt;In this blog, we explain how we analyzed a TCU from a Chinese manufacturer (BYD), extracted its firmware, explored its stored data, and combined it with publicly available information. This story highlights how modern connected vehicles generate rich datasets and how combining embedded forensics with Open Source Intelligence (OSINT) can reveal unexpected insights.&lt;/p&gt;
&lt;h2 id="device-acquisition"&gt;Device acquisition&lt;/h2&gt;
&lt;p&gt;Acquiring a TCU can be done in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Directly from the car manufacturer or Tier 1 suppliers;&lt;/li&gt;
&lt;li&gt;From a salvage yard, which requires patience, technical skills, and proper tools;&lt;/li&gt;
&lt;li&gt;From online second-hand marketplaces, which are often the most efficient.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For this investigation, we selected a TCU from a BYD vehicle, a Chinese manufacturer. Some Chinese vehicles have raised security concerns; for instance, Poland has banned certain models from its military bases.&lt;/p&gt;
&lt;p&gt;The device was obtained second-hand, providing an opportunity to explore its firmware, configuration, and logs, and to understand how these units operate in real-world conditions.&lt;/p&gt;
&lt;h2 id="teardown"&gt;Teardown&lt;/h2&gt;
&lt;p&gt;We were interested in analyzing a BYD Seal telematic unit, which is composed with the following main components :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;S32K144U MCU (for CAN communication)&lt;/li&gt;
&lt;li&gt;Flairmicro FLC-MCM63XG composed with:&lt;ul&gt;
&lt;li&gt;Qualcomm MDM9628 from the Snapdragon X5 LTE Modem series: Modem CPU + Application CPU&lt;/li&gt;
&lt;li&gt;Micron MCP MT29AZ5A3CHHTB: Nand flash + LPDRAM&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU_main_components.png"&gt;
&lt;img class="align-center" src="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU_main_components.png" width="80%"/&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h5 align="center"&gt;&lt;i&gt;TCU Main Components&lt;/i&gt;&lt;/h5&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;In such a device, the system on chip usually stores a Linux-based filesystem which manages core functions. It often relies on a multiple chip package (MCP) memory, combining RAM and ROM in a single package. We decided to perform a chip off of the Micron MCP in order to obtain the full filesystem and to look for any interesting forensic data.&lt;/p&gt;
&lt;h2 id="dumping-the-flash"&gt;Dumping the flash&lt;/h2&gt;
&lt;p&gt;We removed the MCP memory chip from the board and dumped its content externally. As we did not have any adapter to handle the specific BGA 162package of the MCP memory, we used the &lt;a href="https://www.embeddedcomputers.net/products/FlashcatUSB_Mach1/"&gt;Flashcat USB Mach1&lt;/a&gt; along with a custom made adapter.&lt;/p&gt;
&lt;p&gt;Without a dedicated NAND adapter, we used micro-soldering to attach thin wires directly to the chip&amp;rsquo;s pads. In this approach, we only connected to the essential NAND signals, such as CE, ALE, CLE, WE, RE, and I/O lines, which are sufficient to interface with the memory and perform a full dump.&lt;/p&gt;
&lt;p&gt;Handling the micro-wires is delicate, and soldering them onto the landing pad matrix is particularly challenging due to their small size and fragility. &lt;/p&gt;
&lt;p&gt;&lt;a href="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU-MCP_process_dumping.png"&gt;
&lt;img class="align-center" src="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU-MCP_process_dumping.png" width="80%"/&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h5 align="center"&gt;&lt;i&gt;MCP Dump processing&lt;/i&gt;&lt;/h5&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Once the micro-wiring was completed, the chip was connected to the reader. Multiple read attempts were performed to ensure data consistency, which is especially important when working with NAND memory. After verification, we obtained a complete and reliable dump of the flash memory, ready for further analysis.&lt;/p&gt;
&lt;h2 id="data-analysis"&gt;Data analysis&lt;/h2&gt;
&lt;h3 id="binary-reconstruction"&gt;Binary reconstruction&lt;/h3&gt;
&lt;p&gt;Before looking at partitions or filesystems, we need to handle the raw NAND dump correctly. NAND memory is not just a sequence of bytes, it&amp;rsquo;s organized in pages, each containing data blocks and OOB (Out-Of-Band) metadata. On Qualcomm platforms, the OOB contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ECC (BCH) for error detection and correction;&lt;/li&gt;
&lt;li&gt;Padding (always 0xFF);&lt;/li&gt;
&lt;li&gt;Additionally, each page ends with extra 0xFF bytes to ensure block alignment and maintain the page size.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A single page layout can be represented as:&lt;/p&gt;
&lt;div class="text-center font-monospace fs-6"&gt;
&lt;span class="text-primary"&gt;[Data block]&lt;/span&gt;
&lt;span class="text-danger"&gt;|Padding|&lt;/span&gt;
&lt;span class="text-primary"&gt;[Data block]&lt;/span&gt;
&lt;span class="text-warning"&gt;|ECC]&lt;/span&gt;
&lt;span&gt; &lt;/span&gt;
&lt;span class="text-primary"&gt;[Data block]&lt;/span&gt;
&lt;span class="text-danger"&gt;|Padding|&lt;/span&gt;
&lt;span class="text-primary"&gt;[Data block]&lt;/span&gt;
&lt;span class="text-warning"&gt;|ECC]&lt;/span&gt;
  ...
  &lt;span class="text-danger"&gt;[Padding 0xFF]&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;The ECC is used to correct errors in each data block, while the padding must be ignored during extraction. Handling both correctly is essential: without ECC correction and padding removal, the extracted binary would be corrupted or unusable.&lt;/p&gt;
&lt;p&gt;Our reconstruction process consists of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifying the data block layout;&lt;/li&gt;
&lt;li&gt;Correcting each data block using its ECC;&lt;/li&gt;
&lt;li&gt;Extracting only the data portions, ignoring the padding.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This produces a linear binary that matches what the system actually reads, ready for partition analysis and filesystem extraction.&lt;/p&gt;
&lt;p&gt;&lt;a href="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU-MCP_dump_reconstrution.png"&gt;
&lt;img class="align-center" src="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU-MCP_dump_reconstrution.png" width="80%"/&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h5 align="center"&gt;&lt;i&gt;From binary to complete file system&lt;/i&gt;&lt;/h5&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;From there, we could identify the Qualcomm Partition Table:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;python3&lt;span class="w"&gt; &lt;/span&gt;parser_qualcomm.py&lt;span class="w"&gt; &lt;/span&gt;
SMEM&lt;span class="w"&gt; &lt;/span&gt;table&lt;span class="w"&gt; &lt;/span&gt;find&lt;span class="w"&gt; &lt;/span&gt;at&lt;span class="w"&gt; &lt;/span&gt;offset&lt;span class="w"&gt; &lt;/span&gt;0x00281000&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;numparts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;

Name&lt;span class="w"&gt;                 &lt;/span&gt;Offset&lt;span class="o"&gt;(&lt;/span&gt;blocs&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;Offset&lt;span class="o"&gt;(&lt;/span&gt;bytes&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;Size&lt;span class="o"&gt;(&lt;/span&gt;blocs&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;SIze&lt;span class="o"&gt;(&lt;/span&gt;bytes&lt;span class="o"&gt;)&lt;/span&gt;
------------------------------------------------------------------------------------------
&lt;span class="m"&gt;0&lt;/span&gt;:0:SBL&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00000000&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00280000
&lt;span class="m"&gt;0&lt;/span&gt;:0:MIBIB&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00280000&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00280000
&lt;span class="m"&gt;0&lt;/span&gt;:0:EFSG&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00500000&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;48&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00c00000
&lt;span class="m"&gt;0&lt;/span&gt;:0:EFS2&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="m"&gt;68&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x01100000&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;48&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00c00000
&lt;span class="m"&gt;0&lt;/span&gt;:0:TZ&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="m"&gt;116&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x01d00000&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00100000
&lt;span class="m"&gt;0&lt;/span&gt;:0:RPM&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="m"&gt;120&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x01e00000&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00080000
&lt;span class="m"&gt;0&lt;/span&gt;:0:aboot&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="m"&gt;122&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x01e80000&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x000c0000
&lt;span class="m"&gt;0&lt;/span&gt;:0:boot&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="m"&gt;125&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x01f40000&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00800000
&lt;span class="m"&gt;0&lt;/span&gt;:0:boot1&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="m"&gt;157&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x02740000&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00800000
&lt;span class="m"&gt;0&lt;/span&gt;:0:SCRUB&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="m"&gt;189&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x02f40000&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;48&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00c00000
&lt;span class="m"&gt;0&lt;/span&gt;:0:modem&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="m"&gt;237&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x03b40000&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="m"&gt;403&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x064c0000
&lt;span class="m"&gt;0&lt;/span&gt;:0:misc&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="m"&gt;640&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x0a000000&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00180000
&lt;span class="m"&gt;0&lt;/span&gt;:0:fota&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="m"&gt;646&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x0a180000&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00180000
&lt;span class="m"&gt;0&lt;/span&gt;:0:sec&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="m"&gt;652&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x0a300000&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x00080000
&lt;span class="m"&gt;0&lt;/span&gt;:0:custapp&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="m"&gt;654&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x0a380000&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="m"&gt;257&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x04040000
&lt;span class="m"&gt;0&lt;/span&gt;:0:system&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="m"&gt;911&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x0e3c0000&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="m"&gt;1137&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;0x11c40000
------------------------------------------------------------------------------------------
TOTAL&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="m"&gt;2048&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;blocs&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&amp;checkmark;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;TOTAL_BLOCKS
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Using &lt;code&gt;binwalk&lt;/code&gt;, we determined that the UBI erase count header at 0x3B40000 marked the beginning of the modem partition. Extracting it was straightforward with &lt;code&gt;dd&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;dd&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nand_nand.bin&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nand.ubi&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;62128128&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;skip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="m"&gt;7&lt;/span&gt;+1&lt;span class="w"&gt;&amp;nbsp;&lt;/span&gt;enregistrements&lt;span class="w"&gt; &lt;/span&gt;lus
&lt;span class="m"&gt;7&lt;/span&gt;+1&lt;span class="w"&gt;&amp;nbsp;&lt;/span&gt;enregistrements&lt;span class="w"&gt; &lt;/span&gt;&amp;eacute;crits
&lt;span class="m"&gt;474742784&lt;/span&gt;&lt;span class="w"&gt;&amp;nbsp;&lt;/span&gt;octets&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;475&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;453&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MiB&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;copi&amp;eacute;s,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,3833&lt;span class="w"&gt; &lt;/span&gt;s,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,2&lt;span class="w"&gt; &lt;/span&gt;GB/s
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;From there, the ubireader tool allowed us to obtain the full filesystem for the &lt;code&gt;modem&lt;/code&gt;, &lt;code&gt;custapp&lt;/code&gt;, and &lt;code&gt;system&lt;/code&gt; partitions:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;ubireader_extract_files&lt;span class="w"&gt; &lt;/span&gt;-iw&lt;span class="w"&gt; &lt;/span&gt;nand.ubi&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;extracted_FFS_Nand/
....
$&lt;span class="w"&gt; &lt;/span&gt;tree&lt;span class="w"&gt; &lt;/span&gt;extracted_FFS_Nand/
....
&lt;span class="m"&gt;555&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;directories,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5444&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;With the files extracted, we could focus our attention on the root filesystem (rootfs) and user space (usrfs) to look for interesting or hidden artifacts.&lt;/p&gt;
&lt;p&gt;This stage marked the start of digging deeper into the TCU&amp;rsquo;s internals, where logs, configuration files, and traces of user activity could reveal interesting information.&lt;/p&gt;
&lt;h3 id="file-system-analysis"&gt;File system analysis&lt;/h3&gt;
&lt;p&gt;We first analyzed the configuration files to better understand the boot process and identify potential security issues.&lt;/p&gt;
&lt;p&gt;This initial review quickly revealed several obvious sensitive elements, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wi-Fi credentials stored in cleartext&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;c$&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;conf_fix/network.conf&lt;span class="w"&gt; &lt;/span&gt;
...
&lt;span class="nv"&gt;APSSID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;q*******_wifi
&lt;span class="nv"&gt;APKEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;******1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;User access available without authentication:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;passwd&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;guest&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;shadow&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;guest
guest:x:2000:2000:default&lt;span class="w"&gt; &lt;/span&gt;guest:/home/guest:/bin/sh
guest:*:19461:0:99999:7:::
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Root password is stored as a SHA-256 hash. While this makes it hard to recover, its presence on the device shows that privileged credentials are accessible:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;shadow&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;root
root:&lt;span class="nv"&gt;$5$D0nfIV&lt;/span&gt;.JMhXbvCNa&lt;span class="nv"&gt;$n8lsXs&lt;/span&gt;***************17RWXvjrVHMDjVTKMdSpDA:19461:0:99999:7:::
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Configuration steps enabling services such as ADB, TCP, and Telnet&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;conf_fix/ex_interface.conf&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="nv"&gt;EX_LTE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="nv"&gt;EX_TBOX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="nv"&gt;FTPD_IFEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="nv"&gt;TELNETD_IFEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="nv"&gt;ADB_IFEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We then shifted our focus to forensic data, by exploring all available log files. Among them, GNSS logs quickly stood out as particularly valuable.&lt;/p&gt;
&lt;h3 id="forensic-analysis"&gt;Forensic analysis&lt;/h3&gt;
&lt;p&gt;By parsing the GNSS logs, we reconstructed the full life of the vehicle from its production in a factory in China, through its operational life in the United Kingdom, to its final dismantling in Poland. Every movement and stop along the way is captured in the logs, giving a complete picture of the vehicle's journey.&lt;/p&gt;
&lt;p&gt;We extracted precise GPS positions over time:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;fmc_gnss_srv.nmea.log&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:00&lt;span class="w"&gt; &lt;/span&gt;Nmea:250524162558,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,2&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;*******,1******,85&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;23170&lt;/span&gt;,0&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;,10&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;,5,6&lt;span class="o"&gt;)[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:00&lt;span class="w"&gt; &lt;/span&gt;Sv1/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,28,135,30,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;,52,74,43,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;,68,154,29,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;,37,303,31,1&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:00&lt;span class="w"&gt; &lt;/span&gt;Sv2/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;,39,203,33,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;,5,307,29,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;,2,327,22,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;,33,227,39,1&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:00&lt;span class="w"&gt; &lt;/span&gt;Sv3/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;19&lt;/span&gt;,41,261,40,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;28&lt;/span&gt;,12,32,41,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;31&lt;/span&gt;,23,57,41,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;,2,137,0,0&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:00&lt;span class="w"&gt; &lt;/span&gt;Sv4/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;25&lt;/span&gt;,0,358,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:01&lt;span class="w"&gt; &lt;/span&gt;Nmea:250524162559,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,2&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;*******,1******,85&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;23170&lt;/span&gt;,92&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;,10&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;,5,6&lt;span class="o"&gt;)[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:01&lt;span class="w"&gt; &lt;/span&gt;Sv1/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,28,135,31,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;,52,74,45,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;,68,154,33,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;,37,303,43,1&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:01&lt;span class="w"&gt; &lt;/span&gt;Sv2/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;,39,203,34,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;,5,307,35,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;,2,327,30,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;,33,227,39,1&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:01&lt;span class="w"&gt; &lt;/span&gt;Sv3/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;19&lt;/span&gt;,41,261,38,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;28&lt;/span&gt;,12,32,40,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;31&lt;/span&gt;,23,57,41,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;,2,137,0,0&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:01&lt;span class="w"&gt; &lt;/span&gt;Sv4/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;25&lt;/span&gt;,0,358,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:02&lt;span class="w"&gt; &lt;/span&gt;Nmea:250524162600,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,2&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;*******,1******,84&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;23170&lt;/span&gt;,0&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;,10&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;,5,6&lt;span class="o"&gt;)[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:02&lt;span class="w"&gt; &lt;/span&gt;Sv1/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,28,135,33,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;,52,74,44,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;,68,154,35,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;,37,303,46,1&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:02&lt;span class="w"&gt; &lt;/span&gt;Sv2/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;,39,203,33,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;,5,307,40,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;,2,327,30,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;,33,227,40,1&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:02&lt;span class="w"&gt; &lt;/span&gt;Sv3/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;19&lt;/span&gt;,41,261,41,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;28&lt;/span&gt;,12,32,43,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;31&lt;/span&gt;,23,57,41,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;,2,137,0,0&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:02&lt;span class="w"&gt; &lt;/span&gt;Sv4/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;25&lt;/span&gt;,0,358,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:03&lt;span class="w"&gt; &lt;/span&gt;Nmea:250524162601,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,2&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;*******,1******,84&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;23170&lt;/span&gt;,0&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;,10&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;,5,6&lt;span class="o"&gt;)[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:03&lt;span class="w"&gt; &lt;/span&gt;Sv1/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,28,135,32,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;,52,74,44,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;,68,154,35,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;,37,303,44,1&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:03&lt;span class="w"&gt; &lt;/span&gt;Sv2/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;,39,203,35,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;,5,307,42,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;,2,327,31,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;,33,227,42,1&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:03&lt;span class="w"&gt; &lt;/span&gt;Sv3/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;19&lt;/span&gt;,41,261,42,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;28&lt;/span&gt;,12,32,39,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;31&lt;/span&gt;,23,57,43,1&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;,2,137,0,0&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="m"&gt;2025&lt;/span&gt;-05-24_16:26:03&lt;span class="w"&gt; &lt;/span&gt;Sv4/4:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;25&lt;/span&gt;,0,358,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,0,0,0,0&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU_mapping.png"&gt;
&lt;img class="align-center" src="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU_mapping.png" width="80%"/&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h5 align="center"&gt;&lt;i&gt;Vehicle journey highlighting UK activity&lt;/i&gt;&lt;/h5&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Mapping these coordinates highlights the vehicle's full journey across countries. While most movements follow expected routes, during its time in the UK we observed a cluster of GPS points at a single location, standing out from the usual travel patterns. This anomaly suggested a significant event in the vehicle&amp;rsquo;s lifecycle.&lt;/p&gt;
&lt;p&gt;To investigate further, we performed a simple OSINT search using the &lt;a href="https://www.google.com/search?client=ubuntu-sn&amp;amp;channel=fs&amp;amp;q=car+accident+sturry+road+24%2F05%2F2025"&gt;location and date&lt;/a&gt;. This led us to a public Facebook post showing a car accident at the exact same location and date. The images and context perfectly matched the GNSS data, explaining why multiple GPS points were recorded at the same position.&lt;/p&gt;
&lt;p&gt;&lt;a href="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU-OSINT.png"&gt;
&lt;img class="align-center" src="resources/2026-04-09_tearing-down-a-car-telematics-unit-and-finding-an-accident-on-facebook/TCU-OSINT.png" width="80%"/&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h5 align="center"&gt;&lt;i&gt;Forensic data to real car accident&lt;/i&gt;&lt;/h5&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;h2 id="conclusion_1"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;What started as a simple hardware check, a firmware dump, and a first security review quickly became a full forensic and cybersecurity investigation.&lt;/p&gt;
&lt;p&gt;The telematics unit was more than a device, it was a data archive. Even after a vehicle is sold, damaged, or dismantled, logs and system events can remain accessible.&lt;/p&gt;
&lt;p&gt;By combining forensic analysis and reverse engineering, raw technical data became real-world insights. GPS logs allowed us to reconstruct the vehicle&amp;rsquo;s journey and link it to a real accident. At the same time, reviewing configuration files and system logs highlighted security weaknesses.&lt;/p&gt;
&lt;p&gt;Lessons Learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sensitive data can remain in ECUs after accidents or resale;&lt;/li&gt;
&lt;li&gt;Reverse engineering + OSINT can uncover real-world events;&lt;/li&gt;
&lt;li&gt;Embedded automotive systems often have overlooked security issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This work reflects what Quarkslab does in automotive and embedded security. We help companies investigate devices, extract forensic evidence, and assess system security:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Need forensic analysis on automotive or embedded systems? Contact us.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Want to improve the cybersecurity of your automotive products? We support you from investigation and analysis to full technical assessment.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Automotive"></category><category term="hardware"></category><category term="data analysis"></category><category term="OSINT"></category><category term="memory dumping"></category><category term="automotive"></category><category term="MDM9628"></category><category term="BYD"></category><category term="forensics"></category><category term="2026"></category></entry></feed>