{"id":1130,"date":"2022-12-21T16:00:38","date_gmt":"2022-12-21T15:00:38","guid":{"rendered":"https:\/\/security.humanativaspa.it\/?p=1130"},"modified":"2025-09-24T08:45:55","modified_gmt":"2025-09-24T08:45:55","slug":"a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications","status":"publish","type":"post","link":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/","title":{"rendered":"A journey into IoT &#8211; Unknown Chinese alarm &#8211; Part 4 &#8211; Internal communications"},"content":{"rendered":"<p><em>Disclaimer: as many other security researchers approaching IoT, I have a background in computer science and I started to work on these subjects with little knowledge about electronics and often with a\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/YOLO_(aphorism)\">\u201cYOLO\u201d approach<\/a> (blame it on an old colleague of mine \ud83d\ude42). So, it is definitely possible that many of the things you will read here can be inaccurate or can be done in a much better way, especially with more knowledge in the field. Sorry about that. I take advantage of this disclaimer to add a thing: pay particular attention when you put your hands on electronics, especially when you deal with cheap Chinese devices powered by 220V! Some capacitors can cause serious damages even if the device is not plugged into the electric socket!<\/em><\/p>\n<p>Today we will have a look at the ports we discovered in the <a href=\"https:\/\/hnsecurity.it\/a-journey-into-iot-unknown-chinese-alarm-part-1-discover-components-and-ports\/\">first article<\/a> of this <a href=\"https:\/\/hnsecurity.it\/tag\/iot\/\">blog series<\/a> in our initial analysis with the device powered off. The ports we discovered were the following:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-883 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/situazione2-1.png\" alt=\"\" width=\"1047\" height=\"786\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/situazione2-1.png 1047w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/situazione2-1-300x225.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/situazione2-1-1024x769.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/situazione2-1-768x577.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/situazione2-1-350x263.png 350w\" sizes=\"(max-width: 1047px) 100vw, 1047px\" \/><\/p>\n<p>We already analyzed the SWD port in the <a href=\"https:\/\/hnsecurity.it\/a-journey-into-iot-unknown-chinese-alarm-part-2-firmware-dump-and-analysis\/\">second article of the series<\/a>, using that port to dump the firmware. Now we will look at the <strong>two potential UART ports<\/strong> and to the <strong>unknown port named &#8220;RF&#8221;<\/strong> on the board.<\/p>\n<p>For this analysis we will use a <strong>logic analyzer<\/strong>, a hardware device able to read, show and often interpret digital signals. One of the best choices for this type of instrument is the <a href=\"https:\/\/www.saleae.com\/\"><strong>Saleae Logic Analyzer<\/strong>,<\/a> that comes with an awesome software able to decode multiple protocols on its own. Depending on the model, the original Saleae Logic Analyzer costs from 400\u20ac to 1200\u20ac.<\/p>\n<p>Let&#8217;s start to analyze the UART communication port between our main ARM microcontroller and the Tuya WB3S wireless module. The easiest way to sniff communications is to connect the Saleae to the pins of the Tuya module, which are quite large on the board and very easy to reach. The documentation of the module gives us the location of the UART pins:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-864 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet2_edit-1.png\" alt=\"\" width=\"720\" height=\"383\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet2_edit-1.png 720w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet2_edit-1-300x160.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet2_edit-1-350x186.png 350w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/p>\n<p>The datasheet shows two serial ports (TXD1-RXD1 and TXD2-RXD2), but according to the documentation the second one should not be available to Tuya customers (but obviously <strong>we will verify that<\/strong>).<\/p>\n<h3>UART Port 1 &#8211; Tuya module and ARM microcontroller<\/h3>\n<p>Let&#8217;s start with the fist serial port (TXD1-RXD1). During our <a href=\"https:\/\/hnsecurity.it\/a-journey-into-iot-unknown-chinese-alarm-part-1-discover-components-and-ports\/\">initial analysis<\/a>, we hypothesized that this would be some kind of communication port between the main ARM micro-controller and the WiFi Tuya chip.<\/p>\n<p>To sniff communications we need to connect the logic analyzer to the pins of the serial UART port. A quick solution that does not require soldering is to use specific <strong>probes<\/strong>. At the office we have a great kit of hands-free probes by <a href=\"https:\/\/sensepeek.com\/\">SensePeek<\/a>, but when working on this project I was at home and I had only a basic Chinese BDM frame:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1217 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/PXL_20220224_182105479_edit-scaled-2.jpg\" alt=\"\" width=\"2560\" height=\"1920\" \/><\/p>\n<p>Once connected, we can run the Saleae software and power on our device. As we can see at the beginning of the track (when the device powers on) both pins pass from &#8220;Low&#8221; (~0V) to &#8220;High&#8221; (~3.3V) and then we can see some sort of potential communications (the vertical lines):<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1137 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae1-1.png\" alt=\"\" width=\"1222\" height=\"269\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae1-1.png 1222w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae1-1-300x66.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae1-1-1024x225.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae1-1-768x169.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae1-1-350x77.png 350w\" sizes=\"(max-width: 1222px) 100vw, 1222px\" \/><\/p>\n<p>If we zoom into the sections in which we saw the vertical lines, we can clearly see that probably some data is transmitted on those pins:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1138 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae2-1.png\" alt=\"\" width=\"1222\" height=\"242\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae2-1.png 1222w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae2-1-300x59.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae2-1-1024x203.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae2-1-768x152.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae2-1-350x69.png 350w\" sizes=\"(max-width: 1222px) 100vw, 1222px\" \/><\/p>\n<p>We know from the <a href=\"https:\/\/developer.tuya.com\/en\/docs\/iot\/wb3s-module-datasheet?id=K9dx20n6hz5n4\">Tuya documentation<\/a> that this port should be an UART port. The Saleae software already implements some modules name &#8220;Analyzers&#8221; able to decode many different protocols, including this one (named &#8220;Async Serial&#8221;). We can go to the &#8220;Analyzers&#8221; section (at the right) and add a new analyzer of type &#8220;Async Serial&#8221; on each of our two channels (that I renamed RXD1 and TXD1 for convenience). To be correctly interpreted, the UART protocol requires some <strong>parameters<\/strong>, among which the <strong>baud rate<\/strong>, the number of <strong>data bits and stop bits<\/strong> and the presence of a <strong>parity<\/strong> <strong>bit.<\/strong> Old versions of the Saleae software implemented auto-detection of the <strong>baud rate<\/strong> while newer ones don&#8217;t have this feature anymore. Anyhow, there are simple ways to manually estimate this value or we can use a dedicated Saleae plugin for the job, as <a href=\"https:\/\/support.saleae.com\/protocol-analyzers\/analyzer-user-guides\/using-async-serial\">described in the Saleae Support website<\/a>. For data, stop and parity bit we can follow a trial-and-error approach, but usually these protocols use only a couple of different configurations.<\/p>\n<p>Our &#8220;Async serial&#8221; parameters are the following:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1139 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae3-1.png\" alt=\"\" width=\"1202\" height=\"588\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae3-1.png 1202w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae3-1-300x147.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae3-1-1024x501.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae3-1-768x376.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae3-1-350x171.png 350w\" sizes=\"(max-width: 1202px) 100vw, 1202px\" \/><\/p>\n<p>We can add this analyzer to both our channels and have a look at the decoded data (with a right click on the data we can select different data visualizations: <strong>binary, decimal, hexadecimal or ascii<\/strong>):<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1140 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae4-1.png\" alt=\"\" width=\"1222\" height=\"309\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae4-1.png 1222w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae4-1-300x76.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae4-1-1024x259.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae4-1-768x194.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae4-1-350x89.png 350w\" sizes=\"(max-width: 1222px) 100vw, 1222px\" \/><\/p>\n<p>UART ports work this way: the TX pin of one party is connected to the RX of the other and vice-versa. Each pin is used by a party to transmit and by the other to receive. The names I used in the screenshots are related to the Tuya side and consequently:<\/p>\n<ul>\n<li>In TXD1 there are communications <strong>from<\/strong> the Tuya WiFi module <strong>to<\/strong> the ARM micro-controller<\/li>\n<li>in RXD1 there are communications <strong>from<\/strong> the ARM micro-controller <strong>to<\/strong> the Tuya WiFi module<\/li>\n<\/ul>\n<p>So, after the boot, the Tuya module sends 7 bytes to the ARM microcontroller, that answers with 6 bytes followed by a JSON string. The &#8220;p&#8221; JSON value seems to contain a random value, maybe a secret. We can easily find this string in the firmware we dumped in <a href=\"https:\/\/hnsecurity.it\/a-journey-into-iot-unknown-chinese-alarm-part-2-firmware-dump-and-analysis\/\">Part 2 of this series of articles<\/a>, with the help of Ghidra&#8217;s String View:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1143 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/ghidra1-1.png\" alt=\"\" width=\"869\" height=\"229\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/ghidra1-1.png 869w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/ghidra1-1-300x79.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/ghidra1-1-768x202.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/ghidra1-1-350x92.png 350w\" sizes=\"(max-width: 869px) 100vw, 869px\" \/><\/p>\n<p>By reaching the string (double-clicking on it) and looking at its XREFs, we can see that it seems to be present only in one location, that is:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1144 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/ghidra2-2.png\" alt=\"\" width=\"700\" height=\"408\" \/><\/p>\n<p>This seems to be the right place because this piece of code builds the JSON string we saw in the Saleae software. The JSON value is stored in the &#8220;uVar2&#8221; variable, which then is passed as an argument to FUN_00006ba4. The body of this function is:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1145 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/ghidra3-2.png\" alt=\"\" width=\"455\" height=\"366\" \/><\/p>\n<p>This function populates a structure with some bytes followed by our JSON string. These bytes are 0x55 (in ASCII &#8216;U&#8217;), 0xAA, 0x03, that are exactly the bytes we read using Saleae. If we look at the other communications dumped by Saleae, we can easily see that all messages from the ARM micro-controller to the Tuya module start this way, as in the following example:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1146 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae5-2.png\" alt=\"\" width=\"1057\" height=\"322\" \/><\/p>\n<p>Probably, the function &#8220;FUN_00006ba4&#8221; builds and maybe sends the messages from the ARM micro-controller to the Tuya module. We can rename the function n Ghidra to reflect what we just discovered, by clicking on the function name with the right mouse button and selecting &#8220;Edit Function Signature&#8221;:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1147 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/ghidra4-2.png\" alt=\"\" width=\"712\" height=\"537\" \/><\/p>\n<p>The XREFs of that function can be a good starting point to analyze the communications between the ARM micro-controller and the Tuya module:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1148 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/ghidra5-2.png\" alt=\"\" width=\"843\" height=\"430\" \/><\/p>\n<p>But for now, let&#8217;s come back to the Saleae to look at the data transmitted on the UART port when a particular event occurs.<\/p>\n<p>First, we will analyze what is transmitted when the user <strong>enables and disables the alarm using the 433 Mhz remote control<\/strong> (NB: we will use the 433 Mhz remote control to enable\/disable the alarm but at the moment we are analyzing the UART port used by the device to talk to the <strong>WiFi module<\/strong>, not the 433 one that is used only to trigger an event). We will start the Saleae acquisition and then enable and disable the alarm three times, for a total of 6 communications. As we can see in the following screenshot, the six communications can be seen quite clearly in the Saleae acquired track on channel D0:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1150 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae6-2.png\" alt=\"\" width=\"1124\" height=\"272\" \/><\/p>\n<p>In this picture we can see that when we enable\/disable the alarm with the remote button there is a unidirectional communication from the ARM micro-controller to the Tuya WiFi module. Probably the ARM micro-controller enables\/disables the alarm and then notifies the change to the WiFi module, which in turns will send this information to the Tuya cloud (this alarm can be controlled using a mobile application).<\/p>\n<p>We can zoom on a single event (in this example an &#8220;enable&#8221; one) to see the transmitted bytes:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1151 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae7-2.png\" alt=\"\" width=\"1116\" height=\"273\" \/><\/p>\n<p>As with the other communications, the data starts with \\x55 (&#8216;U&#8217; in ASCII), \\xAA and \\x03. If we zoom on a different &#8220;enable&#8221; event we can see that it is always composed by <strong>exactly the same bytes<\/strong>.<\/p>\n<p>Now, let&#8217;s record another track on our Saleae, having a look at what it is transmitted when <strong>the user enables and disables the alarm using the Android application<\/strong>, instead of the 433 Mhz remote control. We will start the Saleae acquisition again and then enable and disable the alarm three times, for a total of <strong>6 communications<\/strong>:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1152 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae8-2.png\" alt=\"\" width=\"1159\" height=\"271\" \/><\/p>\n<p>This time we have some data on both channels. We can see that in the track there are more than six events, with two of them (the central ones) different from the other six in each of the two tracks. These events can be related to some other communications from the device and its Tuya Wi-Fi module, potentially not directly related to the enable\/disable actions. Let&#8217;s zoom on a single &#8220;enable&#8221; event:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1153 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae9-2.png\" alt=\"\" width=\"1138\" height=\"272\" \/><\/p>\n<p>As we can see, we have a communication from the Tuya module to the ARM micro-controller chip, followed by an answer. This makes sense: we enable the alarm from the Android application, Tuya cloud sends a message that is received by the WiFi module that in turns sends a message to the ARM micro-controller. With a little more zoom we can read more easily the transmitted data:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1154 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae10-2.png\" alt=\"\" width=\"878\" height=\"270\" \/><\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1155 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae11-2.png\" alt=\"\" width=\"1157\" height=\"275\" \/><\/p>\n<p>As before, if we look at the different &#8220;enable&#8221; events, <strong>the transmitted bytes are always exactly the same<\/strong>. But we also can note another thing. The answer from the ARM micro-controller to the Tuya module contains <strong>exactly the same data transmitted when we enabled the alarm using the 433 Mhz remote control<\/strong>, only replicated two times.<\/p>\n<p>Well, more for fun than for security analysis purposes, we can try to enable and disable our smart alarm by <strong>replaying<\/strong> the messages from the Tuya module to the ARM micro-controller. This attack requires physical access to the smart alarm and it is also necessary to remove the Tuya wireless module from the board\u00a0 because otherwise it will interfere with our communications (and consequently it is not a super-realistic situation&#8230;). For this test I bought another smart alarm of the same model, I registered it with the mobile application and then I removed the Tuya module.<\/p>\n<p>To send the fake messages, we will use a USB to TTL module, a small device created to connect a UART port to the USB port of a computer. After removing the Tuya module, we will connect the pin used by Tuya TXD1 to the TX pin of the USB to TTL module and the GND of the module to the GND of our circuit (if we want also to read the traffic from the ARM micro-controller we can connect the pin used by Tuya RXD1 to the RX pin of the USB to TTL module). The following picture show the connections (the alarm is &#8220;green&#8221; because it is in the &#8220;disabled&#8221; state):<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1218 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/PXL_20220301_165356621.MP_edit-scaled-2.jpg\" alt=\"\" width=\"2560\" height=\"1920\" \/><\/p>\n<p>To communicate using the UART port I will use <strong>moserial<\/strong> terminal emulator, but there exist many alternatives (like minicom).<\/p>\n<p>We have to configure the communication parameters with the same parameter we used in the &#8220;Analysis&#8221; module of the Saleae software:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1160 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/moserial2-2.png\" alt=\"\" width=\"640\" height=\"551\" \/><\/p>\n<p>Then we can extract the &#8220;enable&#8221; command from the Saleae dump (0x55AA00060005010400010111) and send it with moserial (after connecting with the button &#8220;Connect&#8221;):<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1154 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae10-2.png\" alt=\"\" width=\"878\" height=\"270\" \/><\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1161 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/moserial-2.png\" alt=\"\" width=\"641\" height=\"552\" \/><\/p>\n<p>The result is that the alarm passes from the &#8220;disabled&#8221; state (green lights) to the &#8220;enabled&#8221; one (orange lights):<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-1219\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/PXL_20220301_165435753.MP_edit-scaled-2.jpg\" alt=\"\" width=\"2560\" height=\"1920\" \/><\/p>\n<p>With the same procedure we can also do the reverse process (i.e., disable the alarm), using the HEX string 0x55AA00060005010400010010. This attack is for sure fun, but quite impractical in a real situation! \ud83d\ude09<\/p>\n<h3>UART Port 2 &#8211; Tuya module<\/h3>\n<p>According to the datasheet, the Tuya module includes a second UART port, whose PINs are named TXD2 and RXD2:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-864 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet2_edit-1.png\" alt=\"\" width=\"720\" height=\"383\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet2_edit-1.png 720w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet2_edit-1-300x160.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/datasheet2_edit-1-350x186.png 350w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/p>\n<p>According to the documentation, this port should be disabled but it is always best to check if something passes through it.<\/p>\n<p>Unfortunately, as stated in the datasheet no data passed through that port, neither during boot nor during various events. So, for now let&#8217;s move to the last port we want to analyze today.<\/p>\n<h3>RF and TX1 port on the board<\/h3>\n<p>The last port we will analyze in this article is the one physically located between the 433 Mhz chip and the ARM Micro-controller (see the first picture of the post). It is made up of two pins: one named &#8220;TX1&#8221; (maybe the transmission pin of a UART port?) and other named &#8220;RF&#8221; (maybe radio frequency?):<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-877 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/PXL_20220211_162657767_port2-1.jpg\" alt=\"\" width=\"308\" height=\"248\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/PXL_20220211_162657767_port2-1.jpg 308w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/02\/PXL_20220211_162657767_port2-1-300x242.jpg 300w\" sizes=\"(max-width: 308px) 100vw, 308px\" \/><\/p>\n<p>Well, let&#8217;s have a look at it using the Saleae Logic Analyzer. We connect channel 0 of the Saleae to the &#8220;TX1&#8221; pin and channel 1 to the &#8220;RF&#8221; pin (besides GND pin, that should always be connected), start the Logic Analyzer software and then boot our smart alarm. The resulting track is the following:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1194 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae12-2.png\" alt=\"\" width=\"811\" height=\"233\" \/><\/p>\n<p>In channel 0 (pin &#8220;TX1&#8221;) we have only a few initial communications and then silence. In channel 1 we apparently have tons of communications.<\/p>\n<p>Let&#8217;s start the analysis from channel 0. We add the usual &#8220;Async Serial&#8221; analyzer on the Saleae software to check if our protocol guess was correct and that pin is a UART pin, zooming on the first communication after the boot:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1201 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae13_2-2.png\" alt=\"\" width=\"1002\" height=\"121\" \/><\/p>\n<p>Our guess was correct: the &#8220;TX1&#8221; pin is the transmission pin of an UART port. We see some meaningful data, including a user identifier in the third block. If we zoom on the other communications, we can see that also the WiFi MAC address is transmitted:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1200 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae14-1-2.png\" alt=\"\" width=\"530\" height=\"117\" \/><\/p>\n<p>Now, let&#8217;s focus on channel 1 (the &#8220;RF&#8221; pin). This channel from a first look seems to be full of communications but often when we have such a high traffic volume what we have is only the <strong>continuous noise of an analog port<\/strong>. We can try to put an &#8220;Async Serial&#8221; analyzer also here, but as we can see it is hard to be correct:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1204 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae15-2.png\" alt=\"\" width=\"837\" height=\"123\" \/><\/p>\n<p>All the &#8216;!&#8217; in the data decoded by the analyzer are errors, which shows that we configured a wrong analyzer.<\/p>\n<p>Before digging into the meaning of this &#8220;RF&#8221; pin, let&#8217;s record some more data on target two pins during specific events. We will record a new track while pushing six times a button in the remote 433 Mhz control. The result is the following:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1209 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae20-2.png\" alt=\"\" width=\"622\" height=\"231\" \/><\/p>\n<p>We can notice a couple of interesting things:<\/p>\n<ol>\n<li>When we push a button, information is transmitted on the UART TX1 pin (we will zoom on it in a moment)<\/li>\n<li>After we push a button there always is a change in the flow of the RF pin (it looks like an empty space from the current level of zoom; we will zoom on it in a moment)<\/li>\n<\/ol>\n<p>If we zoom in a little, we can see that we have some changes in the flow of the &#8220;RF&#8221; pin, starting <strong>before <\/strong>(and not after as it looked before zooming) the transmission of the information on the &#8220;TX1&#8221; pin:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1207 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae17-2.png\" alt=\"\" width=\"538\" height=\"242\" \/><\/p>\n<p>By zooming a little more we can see that when a button is pushed, the same wave is transmitted multiple time on the &#8220;RF&#8221; pin and a serial message is sent in the &#8220;TX1&#8221; pin after the first of these similar waves:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1208 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae18-2.png\" alt=\"\" width=\"1030\" height=\"216\" \/><\/p>\n<p>Let&#8217;s zoom a little more, to read the message on the first channel and to analyze the wave on the second channel:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1210 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/saleae19-2.png\" alt=\"\" width=\"731\" height=\"231\" \/><\/p>\n<p>The message on the pin of the UART port gives us some information, but what can be the recurring signal on the other pin? Recall the name of the pin: &#8220;RF&#8221; (probably radio frequency). In the <a href=\"https:\/\/hnsecurity.it\/a-journey-into-iot-unknown-chinese-alarm-part-3-radio-communications\/\">part 3 of this series of articles<\/a> we analyzed the radio signals received on band 433 Mhz when buttons were pushed. Let&#8217;s resume the picture of demodulated form of that signal from the the previous article:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1211 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/urh8-2.png\" alt=\"\" width=\"1044\" height=\"216\" \/><\/p>\n<p>Does it look familiar? Let&#8217;s compare it with the wave of the &#8220;RF&#8221; pin:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-1213 aligncenter\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2022\/03\/comparison1-2.png\" alt=\"\" width=\"1044\" height=\"300\" \/><\/p>\n<p><strong>It is exactly the same wave!<\/strong> That pin resides in the middle of the connection between the chip responsible to receive the 433 Mhz signals and the ARM micro-controller. The latter receives the signal from the former, decodes it and then processes the contained command. Probably the &#8220;RF&#8221; and &#8220;TX1&#8221; pins are present on the board for debugging purposes, allowing an easy inspection of the radio-frequency received signals (pin &#8220;RF&#8221;) and how they are handled by the ARM micro-controller (pin &#8220;TX1&#8221;). The wave that fills the &#8220;RF&#8221; pin when no transmissions occur is the <strong>noise<\/strong> of that\u00a0<strong>analog<\/strong>\u00a0port and <strong>does not contain any information<\/strong>.<\/p>\n<p>And for this article, this is all.<\/p>\n<p>Cheers!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Disclaimer: as many other security researchers approaching IoT, I have a background in computer science and I started to work [&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":[87,147,149,158,159],"class_list":["post-1130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","tag-reverse-engineering","tag-hardware","tag-iot","tag-saleae","tag-uart"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HN Security A journey into IoT - Unknown Chinese alarm - Part 4 - Internal communications<\/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-unknown-chinese-alarm-part-4-internal-communications\/\" \/>\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 - Unknown Chinese alarm - Part 4 - Internal communications\" \/>\n<meta property=\"og:description\" content=\"Disclaimer: as many other security researchers approaching IoT, I have a background in computer science and I started to work [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/\" \/>\n<meta property=\"og:site_name\" content=\"HN Security\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-21T15:00:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-24T08:45:55+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=\"20 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-unknown-chinese-alarm-part-4-internal-communications\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/\"},\"author\":{\"name\":\"Federico Dotta\",\"@id\":\"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/e0e6046bd2bc829f7d945ad361bce702\"},\"headline\":\"A journey into IoT &#8211; Unknown Chinese alarm &#8211; Part 4 &#8211; Internal communications\",\"datePublished\":\"2022-12-21T15:00:38+00:00\",\"dateModified\":\"2025-09-24T08:45:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/\"},\"wordCount\":2750,\"publisher\":{\"@id\":\"https:\/\/hnsecurity.it\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg\",\"keywords\":[\"reverse engineering\",\"hardware\",\"iot\",\"saleae\",\"UART\"],\"articleSection\":[\"Articles\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/\",\"url\":\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/\",\"name\":\"HN Security A journey into IoT - Unknown Chinese alarm - Part 4 - Internal communications\",\"isPartOf\":{\"@id\":\"https:\/\/hnsecurity.it\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg\",\"datePublished\":\"2022-12-21T15:00:38+00:00\",\"dateModified\":\"2025-09-24T08:45:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#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-unknown-chinese-alarm-part-4-internal-communications\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hnsecurity.it\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A journey into IoT &#8211; Unknown Chinese alarm &#8211; Part 4 &#8211; Internal communications\"}]},{\"@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 - Unknown Chinese alarm - Part 4 - Internal communications","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-unknown-chinese-alarm-part-4-internal-communications\/","og_locale":"it_IT","og_type":"article","og_title":"HN Security A journey into IoT - Unknown Chinese alarm - Part 4 - Internal communications","og_description":"Disclaimer: as many other security researchers approaching IoT, I have a background in computer science and I started to work [&hellip;]","og_url":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/","og_site_name":"HN Security","article_published_time":"2022-12-21T15:00:38+00:00","article_modified_time":"2025-09-24T08:45:55+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":"20 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#article","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/"},"author":{"name":"Federico Dotta","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/e0e6046bd2bc829f7d945ad361bce702"},"headline":"A journey into IoT &#8211; Unknown Chinese alarm &#8211; Part 4 &#8211; Internal communications","datePublished":"2022-12-21T15:00:38+00:00","dateModified":"2025-09-24T08:45:55+00:00","mainEntityOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/"},"wordCount":2750,"publisher":{"@id":"https:\/\/hnsecurity.it\/it\/#organization"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg","keywords":["reverse engineering","hardware","iot","saleae","UART"],"articleSection":["Articles"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/","url":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/","name":"HN Security A journey into IoT - Unknown Chinese alarm - Part 4 - Internal communications","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#primaryimage"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/IOT.jpg","datePublished":"2022-12-21T15:00:38+00:00","dateModified":"2025-09-24T08:45:55+00:00","breadcrumb":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/hnsecurity.it\/it\/blog\/a-journey-into-iot-unknown-chinese-alarm-part-4-internal-communications\/#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-unknown-chinese-alarm-part-4-internal-communications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hnsecurity.it\/it\/"},{"@type":"ListItem","position":2,"name":"A journey into IoT &#8211; Unknown Chinese alarm &#8211; Part 4 &#8211; Internal communications"}]},{"@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\/1130","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=1130"}],"version-history":[{"count":2,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/1130\/revisions"}],"predecessor-version":[{"id":160915,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/1130\/revisions\/160915"}],"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=1130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/categories?post=1130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/tags?post=1130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}