{"id":785,"date":"2022-03-03T10:26:54","date_gmt":"2022-03-03T09:26:54","guid":{"rendered":"https:\/\/security.humanativaspa.it\/?p=785"},"modified":"2025-09-09T09:39:50","modified_gmt":"2025-09-09T09:39:50","slug":"a-journey-into-iot-chip-identification-busside-and-i2c","status":"publish","type":"post","link":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/","title":{"rendered":"A journey into IoT \u2013 Chip identification, BUSSide, and I2C"},"content":{"rendered":"<p>Hi!<\/p>\n<p>Years ago ( \ud83d\ude41 ) I wrote <a href=\"https:\/\/web.archive.org\/web\/20210116054244\/https:\/\/techblog.mediaservice.net\/2019\/03\/a-journey-into-iot-hardware-hacking-uart\/\">an article<\/a> with the purpose of starting a series to introduce various <strong>IoT concepts<\/strong> to hackers and penetration testers that approach the topic for the first time. Unfortunately, that article was left alone for a long time, but now it&#8217;s time to continue that series of posts!<\/p>\n<p>While I&#8217;m waiting for the delivery of some random hardware from China, I will start with a couple of useful tools and tricks applied to an old <strong>USB card reader<\/strong>. Here it is:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-826\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader1e-scaled-2.jpg\" alt=\"\" width=\"2560\" height=\"1506\" \/><\/p>\n<p>And this is how it looks without the external cover:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-827\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2e-scaled-2.jpg\" alt=\"\" width=\"2560\" height=\"1467\" \/><\/p>\n<p>When we are facing an unknown platform like this one, the first step should always be to <strong>identify all chips and components<\/strong> on the board.<\/p>\n<p>If we are lucky, our device has a wireless connection and it is sold in the United States, it should have an identifier named <strong>FCC ID<\/strong> printed somewhere on the product or on its box. With this ID we can download a lot of useful documentation that is <a href=\"https:\/\/fccid.io\/\">publicly available<\/a>, mandatory for the legal sale in the US, including manuals, photos, and technical details. We will maybe see some examples when we analyze a wireless device, but this is not the case.<\/p>\n<p>Without technical documentation, we are on our own. Usually, most chips have an identifier printed on them, but this information is very hard to read. A useful tool is a <strong>digital microscope<\/strong>, that can be bought from a Chinese supplier for about 10-20 euros, and that can be connected to a laptop or a smartphone. With this device, we can easily take a picture of all the chips on the board and try to identify every component.<\/p>\n<p>As an example, let&#8217;s have a closer look at the chip in the top-left side of the board:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-828\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit_e-scaled-1.jpg\" alt=\"\" width=\"2560\" height=\"1469\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit_e-scaled-1.jpg 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit_e-scaled-1-300x172.jpg 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit_e-scaled-1-1024x588.jpg 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit_e-scaled-1-768x441.jpg 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit_e-scaled-1-1536x881.jpg 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit_e-scaled-1-2048x1175.jpg 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit_e-scaled-1-350x201.jpg 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>With the digital microscope, we can read the identifier printed on the chip:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-796 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/chip-1.jpg\" alt=\"\" width=\"640\" height=\"480\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/chip-1.jpg 640w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/chip-1-300x225.jpg 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/chip-1-350x263.jpg 350w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>By searching the identifier with our favorite search engine, we can easily find its <strong>datasheet<\/strong>, that shows that it is a <strong>Serial EEPROM<\/strong> memory with <strong>2K of storage<\/strong> that communicates using the <strong>I2C protocol (Two-wire)<\/strong>. The same document gives us the details of the chip <strong>connection pins<\/strong>.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-797 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet-1.png\" alt=\"\" width=\"820\" height=\"931\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet-1.png 820w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet-1-264x300.png 264w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet-1-768x872.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet-1-350x397.png 350w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/p>\n<p>We found an EEPROM memory. We can try to read its content using the <strong>I2C protoco<\/strong>l. I2C is a serial communication protocol that allows to connect on the same bus a large number of devices, each reachable from a specific address. It was invented in 1982 by Philips Semiconductors (now NXP). It requires only two PINs, one for data and one for the clock, necessary for synchronization.<\/p>\n<p>Every chip usually has a mark near the first PIN, necessary to identify the side of the chip. If you look at the above picture, you can see this mark in the bottom-left side of the chip. Using this mark and the datasheet, we can easily identify all the PINs and we can confirm the correctness of our analysis with the help of a <strong>multimeter <\/strong>in <strong>continuity mode. <\/strong>To verify the position of the Ground PIN (GND) it is sufficient to connect one probe of the multimeter to one of the metal components (usually connected with GND) and the other first to the bottom-left PIN of the chip and then to the top-right (see the previous article linked at the beginning of this post for more details).<\/p>\n<p>So, we now know the position of all the PINs we need to communicate with the EEPROM using the I2C protocol:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-829\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit2_e-scaled-1.jpg\" alt=\"\" width=\"2560\" height=\"1371\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit2_e-scaled-1.jpg 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit2_e-scaled-1-300x161.jpg 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit2_e-scaled-1-1024x548.jpg 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit2_e-scaled-1-768x411.jpg 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit2_e-scaled-1-1536x823.jpg 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit2_e-scaled-1-2048x1097.jpg 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/cardReader2_edit2_e-scaled-1-350x187.jpg 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>To read (and maybe write) the content of the EEPROM we can use many different tools. One of the most used is the old but trusted <a href=\"http:\/\/dangerousprototypes.com\/docs\/Bus_Pirate\">Bus Pirate<\/a>.<\/p>\n<p>But let&#8217;s pretend for a moment that we have no idea of the location of the I2C PINs. A few years ago, <a href=\"https:\/\/twitter.com\/silviocesare\">Silvio Cesare<\/a> publicly released a great tool named <a href=\"http:\/\/busside.com.au\/\">BUSSide Badge<\/a> (sources on <a href=\"https:\/\/github.com\/infosectcbr\/BUSSide\">GitHub<\/a>). The badge is composed by a <strong>NodeMCU v2<\/strong> module (a couple of euros from Chinese suppliers) and a printed PLC (hard to find but not necessary to use the tool). This ultra-cheap badge has many functionalities, including:<\/p>\n<ul>\n<li>Discover UART pinout<\/li>\n<li>Discover SPI pinout<\/li>\n<li><strong>Discover I2C pinout<\/strong><\/li>\n<li>Discover JTAG pinout<\/li>\n<li>UART passthrough<\/li>\n<li>SPI flash read\/write<\/li>\n<li><strong>I2C slave discovery<\/strong><\/li>\n<li><strong>I2C flash read\/write<\/strong><\/li>\n<\/ul>\n<p>After having flashed the BUSSide firmware on the NodeMCU v2 (directly via USB following the instructions in the repository), first we have to connect the Ground (GND) of the target chip with the GND of the BUSSide, and then we can connect all unknown PINs of our EEPROM to arbitrary NodeMCU PINs from D1 to D8 (BUSSide refers to GPIO 1-9 that respectively are NodeMCU D0-D8, but it is better not to use D0 because many BUSSide features don&#8217;t work on that PIN). In this demo I connected only the two correct ones because I was at home with only a few connectors (and sorry for the hardware mess in the background; it is the subject of the next article \ud83d\ude42 ):<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-805\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/connection-scaled-1.jpg\" alt=\"\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/connection-scaled-1.jpg 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/connection-scaled-1-300x225.jpg 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/connection-scaled-1-1024x768.jpg 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/connection-scaled-1-768x576.jpg 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/connection-scaled-1-1536x1152.jpg 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/connection-scaled-1-2048x1536.jpg 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/connection-scaled-1-350x263.jpg 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>Now, if we can connect the USB card reader and the BUSSide to two USB ports and run the BUSSide we have the following output:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">$ sudo python2 Client\/busside.py \/dev\/ttyUSB0\r\n+++ Connecting to the BUSSIde\r\n+++ Sending echo command\r\n+++ OK\r\n[...]\r\n&gt; i2c discover pinout\r\n+++ Sending i2c discover pinout command\r\n+++ Connecting to the BUSSIde\r\n+++ FOUND 0 I2C interfaces\r\n+++ SUCCESS<\/pre>\n<p>The BUSSide could not find any I2C interface, probably because in order to find the I2C interface the BUSSide needs I2C communications. The card reader reads from the EEPROM only when it boots. So, in order to detect the interface we can try to execute the discovery command right after the connection of the card reader to the USB port (it may take a few tries). When the operation succeeds, the output is the following:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">$ python2 Client\/busside.py \/dev\/ttyUSB0\r\n+++ Connecting to the BUSSIde\r\n+++ Sending echo command\r\n+++ OK\r\n[...]\r\n&gt; i2c discover pinout\r\n+++ Sending i2c discover pinout command\r\n+++ Connecting to the BUSSIde\r\n+++ FOUND 1 I2C interfaces\r\n+++ I2C interface FOUND\r\n+++ I2C SDA at GPIO 4\r\n+++ I2C SCL at GPIO 3\r\n+++ SUCCESS\r\n<\/pre>\n<p>After having identified the port, it is necessary to find the slave address of our EEPROM (I2C allows to connect multiple devices on the same bus, each identified by a specific address) as follows:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&gt; i2c discover slaves 4 3\r\n+++ Sending i2c slave discovery command\r\n+++ 1 I2C slave addresses\r\n+++ I2C slave address FOUND at 80\r\n+++ SUCCESS<\/pre>\n<p>And now, the BUSSide can be used to <strong>read the EEPROM<\/strong> and save the content in an output file, supplying the address of the slave just found and the size to read (256 bytes, according to the datasheet):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&gt; i2c flash dump 4 3 80 1 256 \/tmp\/i2cDump.bin    \r\n+++ Dumping I2C\r\n+++ SUCCESS\r\n\r\n&gt; quit\r\nBye!\r\n\r\n$ hexdump -C \/tmp\/i2cDump.bin\u00a0\r\n00000000 43 52 31 ff 13 07 03 30 fa 07 01 50 00 00 89 08 |CR1....0...P....|\r\n00000010 00 01 03 03 02 ff ff 01 00 02 02 04 03 00 ff ff |................|\r\n00000020 00 01 02 03 04 05 06 07 40 0a 70 0b 0c 0d 0e 0f |........@.p.....|\r\n00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9d |................|\r\n00000040 55 53 42 20 43 46 20 52 65 61 64 65 72 00 00 00 |USB CF Reader...|\r\n00000050 55 53 42 20 53 44 20 52 65 61 64 65 72 00 00 00 |USB SD Reader...|\r\n00000060 55 53 42 20 4d 53 20 52 65 61 64 65 72 00 00 00 |USB MS Reader...|\r\n00000070 55 53 42 20 53 4d 20 52 65 61 64 65 72 00 00 00 |USB SM Reader...|\r\n00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|\r\n00000090 4d 69 6e 69 20 53 44 20 52 65 61 64 65 72 00 00 |Mini SD Reader..|\r\n000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|\r\n000000b0 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 00 |000000000000100.|\r\n000000c0 00 00 00 00 00 00 00 00 47 65 6e 65 72 69 63 00 |........Generic.|\r\n000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|\r\n000000e0 4d 61 73 73 20 53 74 6f 72 61 67 65 20 44 65 76 |Mass Storage Dev|\r\n000000f0 69 63 65 00 00 00 00 00 ff ff ff ff ff ff 63 ff |ice...........c.|<\/pre>\n<p>We can see how the data contained in the EEPROM is used with the &#8220;lsusb -v&#8221; command, as follows:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-824\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/outputWriteOrig-2.png\" alt=\"\" width=\"1022\" height=\"297\" \/><\/p>\n<p>We can also try to <strong>change the data stored on the EEPROM<\/strong>. First, let&#8217;s edit our dump, changing the string &#8220;Mass Storage Device&#8221; in &#8220;hack Storage Device&#8221; with our favorite hex editor. Our modified dump is the following:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">$ hexdump -C i2cDumpEdited.bin \r\n00000000  43 52 31 ff 13 07 03 30  fa 07 01 50 00 00 89 08  |CR1....0...P....|\r\n00000010  00 01 03 03 02 ff ff 01  00 02 02 04 03 00 ff ff  |................|\r\n00000020  00 01 02 03 04 05 06 07  40 0a 70 0b 0c 0d 0e 0f  |........@.p.....|\r\n00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 9d  |................|\r\n00000040  55 53 42 20 43 46 20 52  65 61 64 65 72 00 00 00  |USB CF Reader...|\r\n00000050  55 53 42 20 53 44 20 52  65 61 64 65 72 00 00 00  |USB SD Reader...|\r\n00000060  55 53 42 20 4d 53 20 52  65 61 64 65 72 00 00 00  |USB MS Reader...|\r\n00000070  55 53 42 20 53 4d 20 52  65 61 64 65 72 00 00 00  |USB SM Reader...|\r\n00000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|\r\n00000090  4d 69 6e 69 20 53 44 20  52 65 61 64 65 72 00 00  |Mini SD Reader..|\r\n000000a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|\r\n000000b0  30 30 30 30 30 30 30 30  30 30 30 30 31 30 30 00  |000000000000100.|\r\n000000c0  00 00 00 00 00 00 00 00  47 65 6e 65 72 69 63 00  |........Generic.|\r\n000000d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|\r\n000000e0  68 61 63 6b 20 53 74 6f  72 61 67 65 20 44 65 76  |hack Storage Dev|\r\n000000f0  69 63 65 00 00 00 00 00  ff ff ff ff ff ff 63 ff  |ice...........c.|\r\n<\/pre>\n<p>Now we can write our edited dump using BUSSide i2c write command, similar to the one used to dump the EEPROM content (&#8220;<strong>i2c flash write 4 3 80 1 256 \/tmp\/i2cDumpEdited.bin<\/strong>&#8220;). After unplugging\/plugging again the card reader, we can see the result of our modifications using the &#8220;lsusb -v&#8221; command again:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-812\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/outputWriteEdit-2.png\" alt=\"\" width=\"793\" height=\"327\" \/><\/p>\n<p>The same dump operation can be executed also with tools like <strong>Bus Pirate.<\/strong> After connecting GND, SDA, and SCL PINs (like before) and plugging Bus Pirate to the USB port, we can connect to it using any serial terminal client (e.g., moserial, screen, etc.):<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-808\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/busPirate1-1.png\" alt=\"\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/busPirate1-1.png 1920w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/busPirate1-1-300x169.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/busPirate1-1-1024x576.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/busPirate1-1-768x432.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/busPirate1-1-1536x864.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/busPirate1-1-350x197.png 350w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p>The commands executed in the previous picture in order to dump the EEPROM memory are the following (refer to Bus Pirate documentation for further details):<\/p>\n<ul>\n<li>m -&gt; Set mode<\/li>\n<li>4 -&gt; Select I2C<\/li>\n<li>4 -&gt; Select 400Khz of speed<\/li>\n<li>(1) -&gt; Scan I2C address space, found 0xA0 (write) and 0xA1 (read)<\/li>\n<li>[0xA0 0x00][0xA1 r:256] -&gt; Go to the first byte (&#8220;[0xA0 0x00]&#8221;) and read 256 bytes (&#8220;[0xA1 r:256]&#8221;); 2048 bit is the size of the EEPROM according to the datasheet<\/li>\n<\/ul>\n<p>If we want, we can also modify this EEPROM memory as we did with the BUSSide, as follows:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-810\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/busPirate22-2.png\" alt=\"\" width=\"1920\" height=\"1080\" \/><\/p>\n<p>The commands executed are:<\/p>\n<ul>\n<li>[0xA0 0xE0 0x68 0x61 0x63 0x6b] -&gt; Write in address 0xE0 (224\u00b0 byte) the bytes 0x68 0x61 0x63 0x6b (&#8220;hack&#8221; in ASCII); previous content was &#8220;Mass&#8221;<\/li>\n<li>[0xA0 0x00][0xA1 r:256] -&gt; Read again the EEPROM value (to check the output of the previous command)<\/li>\n<\/ul>\n<p>And for this post that&#8217;s all. I will try to publish the next one on this topic before the next two years! \ud83d\ude42<\/p>\n<p>Cheers!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi! Years ago ( \ud83d\ude41 ) I wrote an article with the purpose of starting a series to introduce various [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":159923,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[91],"tags":[144,145,146,147,148,149,87],"class_list":["post-785","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","tag-bus-pirate","tag-busside","tag-hacking","tag-hardware","tag-i2c","tag-iot","tag-reverse-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HN Security A journey into IoT \u2013 Chip identification, BUSSide, and I2C<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HN Security A journey into IoT \u2013 Chip identification, BUSSide, and I2C\" \/>\n<meta property=\"og:description\" content=\"Hi! Years ago ( \ud83d\ude41 ) I wrote an article with the purpose of starting a series to introduce various [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/\" \/>\n<meta property=\"og:site_name\" content=\"HN Security\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-03T09:26:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-09T09:39:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"836\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Federico Dotta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hnsec\" \/>\n<meta name=\"twitter:site\" content=\"@hnsec\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Federico Dotta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/\"},\"author\":{\"name\":\"Federico Dotta\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/person\\\/e0e6046bd2bc829f7d945ad361bce702\"},\"headline\":\"A journey into IoT \u2013 Chip identification, BUSSide, and I2C\",\"datePublished\":\"2022-03-03T09:26:54+00:00\",\"dateModified\":\"2025-09-09T09:39:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/\"},\"wordCount\":1346,\"publisher\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/IOT.jpg\",\"keywords\":[\"Bus Pirate\",\"BUSSide\",\"hacking\",\"hardware\",\"I2C\",\"iot\",\"reverse engineering\"],\"articleSection\":[\"Articles\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/\",\"name\":\"HN Security A journey into IoT \u2013 Chip identification, BUSSide, and I2C\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/IOT.jpg\",\"datePublished\":\"2022-03-03T09:26:54+00:00\",\"dateModified\":\"2025-09-09T09:39:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/#primaryimage\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/IOT.jpg\",\"contentUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/IOT.jpg\",\"width\":1600,\"height\":836,\"caption\":\"IOT icon\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/a-journey-into-iot-chip-identification-busside-and-i2c\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A journey into IoT \u2013 Chip identification, BUSSide, and I2C\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\",\"name\":\"HN Security\",\"description\":\"Offensive Security Specialists\",\"publisher\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\",\"name\":\"HN Security\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/hn-libellula.jpg\",\"contentUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/hn-libellula.jpg\",\"width\":696,\"height\":696,\"caption\":\"HN Security\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/hnsec\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hnsecurity\\\/\",\"https:\\\/\\\/github.com\\\/hnsecurity\",\"https:\\\/\\\/infosec.exchange\\\/@hnsec\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/person\\\/e0e6046bd2bc829f7d945ad361bce702\",\"name\":\"Federico Dotta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g\",\"caption\":\"Federico Dotta\"},\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/author\\\/federico-dotta\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HN Security A journey into IoT \u2013 Chip identification, BUSSide, and I2C","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/","og_locale":"it_IT","og_type":"article","og_title":"HN Security A journey into IoT \u2013 Chip identification, BUSSide, and I2C","og_description":"Hi! Years ago ( \ud83d\ude41 ) I wrote an article with the purpose of starting a series to introduce various [&hellip;]","og_url":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/","og_site_name":"HN Security","article_published_time":"2022-03-03T09:26:54+00:00","article_modified_time":"2025-09-09T09:39:50+00:00","og_image":[{"width":1600,"height":836,"url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg","type":"image\/jpeg"}],"author":"Federico Dotta","twitter_card":"summary_large_image","twitter_creator":"@hnsec","twitter_site":"@hnsec","twitter_misc":{"Scritto da":"Federico Dotta","Tempo di lettura stimato":"8 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/#article","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/"},"author":{"name":"Federico Dotta","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/e0e6046bd2bc829f7d945ad361bce702"},"headline":"A journey into IoT \u2013 Chip identification, BUSSide, and I2C","datePublished":"2022-03-03T09:26:54+00:00","dateModified":"2025-09-09T09:39:50+00:00","mainEntityOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/"},"wordCount":1346,"publisher":{"@id":"https:\/\/hnsecurity.it\/it\/#organization"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg","keywords":["Bus Pirate","BUSSide","hacking","hardware","I2C","iot","reverse engineering"],"articleSection":["Articles"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/","url":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/","name":"HN Security A journey into IoT \u2013 Chip identification, BUSSide, and I2C","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/#primaryimage"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg","datePublished":"2022-03-03T09:26:54+00:00","dateModified":"2025-09-09T09:39:50+00:00","breadcrumb":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/#primaryimage","url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg","contentUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg","width":1600,"height":836,"caption":"IOT icon"},{"@type":"BreadcrumbList","@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-chip-identification-busside-and-i2c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hnsecurity.it\/it\/"},{"@type":"ListItem","position":2,"name":"A journey into IoT \u2013 Chip identification, BUSSide, and I2C"}]},{"@type":"WebSite","@id":"https:\/\/hnsecurity.it\/it\/#website","url":"https:\/\/hnsecurity.it\/it\/","name":"HN Security","description":"Offensive Security Specialists","publisher":{"@id":"https:\/\/hnsecurity.it\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hnsecurity.it\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/hnsecurity.it\/it\/#organization","name":"HN Security","url":"https:\/\/hnsecurity.it\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/logo\/image\/","url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/01\/hn-libellula.jpg","contentUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/01\/hn-libellula.jpg","width":696,"height":696,"caption":"HN Security"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/hnsec","https:\/\/www.linkedin.com\/company\/hnsecurity\/","https:\/\/github.com\/hnsecurity","https:\/\/infosec.exchange\/@hnsec"]},{"@type":"Person","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/e0e6046bd2bc829f7d945ad361bce702","name":"Federico Dotta","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/02d5d800b81f2a125ac23ee31a108ee2404d123bd3b722f2e263f0130cc1df42?s=96&d=mm&r=g","caption":"Federico Dotta"},"url":"https:\/\/hnsecurity.it\/it\/blog\/author\/federico-dotta\/"}]}},"jetpack_featured_media_url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg","_links":{"self":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/comments?post=785"}],"version-history":[{"count":1,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/785\/revisions"}],"predecessor-version":[{"id":159985,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/785\/revisions\/159985"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media\/159923"}],"wp:attachment":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media?parent=785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/categories?post=785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/tags?post=785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}