{"product_id":"cancrypt","title":"CANcrypt","description":"\u003ch2\u003e\u003cspan style=\"color: rgb(242, 101, 34);\"\u003e\u003cstrong\u003eCommonly used security methods for authentication and encryption\/decryption.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/h2\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.phytools.com\/Embedded_System_Academy_CANopen_tools_and_more_s\/1882.htm\"\u003e\u003c\/a\u003eESAcademy's solution is \u003cstrong\u003eCANcrypt\u003c\/strong\u003e, an ingenious combination of scalable security features for CAN.\u003c\/p\u003e\n\u003cp\u003eThe in-depth description of \u003cstrong\u003eCANcrypt\u003c\/strong\u003e is available as book: \"Implementing scalable CAN security with \u003cstrong\u003eCANcrypt\u003c\/strong\u003e, authentication and encryption for CANopen, J1939 and other Controller Area Network or CAN FD protocols\"\u003c\/p\u003e\n\u003cp\u003eFull color hardcover edition including a commercial \u003cstrong\u003eCANcrypt\u003c\/strong\u003e software version delivered using a coupon code. The software license covers prototyping and an initial pilot production run of up to 500 devices. More detailed information also available at the \u003cspan style=\"color: rgb(72, 142, 177);\"\u003e\u003cstrong\u003e\u003ca style=\"color: rgb(72, 142, 177);\" href=\"http:\/\/www.cancrypt.eu\/index.php\/en\/\" target=\"_blank\"\u003eCANcrypt homepage\u003c\/a\u003e.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eSoftware examples will run on off-shelve CAN hardware from \u003ca href=\"https:\/\/www.phytools.com\/PEAK_System_Technik_s\/1853.htm\"\u003e\u003cspan style=\"color: rgb(0, 170, 255);\"\u003e\u003cspan style=\"color: rgb(72, 142, 177);\"\u003e\u003cstrong\u003ePEAK-System Technik\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e and \u003cspan style=\"color: rgb(0, 170, 255);\"\u003e\u003cspan style=\"color: rgb(72, 142, 177);\"\u003e\u003cstrong\u003e\u003ca style=\"color: rgb(72, 142, 177);\" href=\"https:\/\/www.phytools.com\/Embedded_System_Solutions_Telematic_CANopen_Converters_s\/1885.htm\"\u003eESS Embedded Systems Solutions\u003c\/a\u003e\u003c\/strong\u003e\u003c\/span\u003e \u003c\/span\u003ealso available from Phytools.\u003c\/p\u003e\n\u003cp\u003e\u003cspan id=\"startPhytoolsTabs\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cdiv class=\"phytoolsTabs\"\u003e\n\u003cinput checked name=\"tab-control\" id=\"tab1\" type=\"radio\"\u003e \u003cinput name=\"tab-control\" id=\"tab2\" type=\"radio\"\u003e \u003cinput name=\"tab-control\" id=\"tab3\" type=\"radio\"\u003e \u003cinput name=\"tab-control\" id=\"tab4\" type=\"radio\"\u003e\n\u003cul class=\"tabHeader\"\u003e\n\u003cli title=\"Features\"\u003e\u003clabel role=\"button\" for=\"tab1\"\u003e \u003csvg xml:space=\"preserve\" viewbox=\"0 0 512 512\" y=\"0\" x=\"0\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\"\u003e\n\t\t\t\t\u003cpath d=\"M0 53.328V160h106.672V53.328H0zM90.672 144H16V69.328h74.672V144zM149.328 79.728h320v16h-320zM149.328 120H512v16H149.328zM0 202.672v106.672h106.672V202.672H0zm90.672 90.656H16v-74.672h74.672v74.672zM149.328 229.056h320v16h-320zM149.328 269.328H512v16H149.328zM0 352v106.672h106.672V352H0zm90.672 90.672H16V368h74.672v74.672zM149.328 378.4h320v16h-320zM149.328 418.72H512v16H149.328z\"\u003e\u003c\/path\u003e\n\t\t\t\t\u003ccircle r=\"21.328\" cy=\"106.672\" cx=\"53.328\"\u003e\u003c\/circle\u003e\n\t\t\t\t\u003ccircle r=\"21.328\" cy=\"256\" cx=\"53.328\"\u003e\u003c\/circle\u003e\n\t\t\t\t\u003ccircle r=\"21.328\" cy=\"405.328\" cx=\"53.328\"\u003e\u003c\/circle\u003e\n\t\t\t\u003c\/svg\u003e \u003cbr\u003e\u003cspan\u003eFeatures\u003c\/span\u003e \u003c\/label\u003e\u003c\/li\u003e\n\u003cli title=\"Tech Specs\"\u003e\u003clabel role=\"button\" for=\"tab2\"\u003e \u003csvg xml:space=\"preserve\" viewbox=\"0 0 465 465\" y=\"0\" x=\"0\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\"\u003e\n\t\t\t\t\u003cpath d=\"M390.624 50.379H349.63c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5h33.494V450H81.876V65.379h33.494c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5H74.376a7.499 7.499 0 0 0-7.5 7.5V457.5c0 4.143 3.357 7.5 7.5 7.5h316.248c4.143 0 7.5-3.357 7.5-7.5V57.879c0-4.143-3.357-7.5-7.5-7.5z\"\u003e\u003c\/path\u003e\n\t\t\t\t\u003cpath d=\"M145.37 88.415h124.879c4.143 0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5H152.87v-25.39a5.677 5.677 0 0 1 5.671-5.671h46.604c4.143 0 7.5-3.357 7.5-7.5C212.645 23.906 221.552 15 232.5 15s19.855 8.906 19.855 19.854c0 4.143 3.357 7.5 7.5 7.5h46.604a5.677 5.677 0 0 1 5.671 5.671v25.39h-11.881c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5h19.381c4.143 0 7.5-3.357 7.5-7.5v-32.89c0-11.398-9.272-20.671-20.671-20.671h-39.916C263.104 11.728 249.146 0 232.5 0s-30.604 11.728-34.043 27.354h-39.916c-11.398 0-20.671 9.272-20.671 20.671v32.89a7.5 7.5 0 0 0 7.5 7.5zM145.37 418.483h36c4.143 0 7.5-3.357 7.5-7.5v-36c0-4.143-3.357-7.5-7.5-7.5h-36a7.499 7.499 0 0 0-7.5 7.5v36a7.5 7.5 0 0 0 7.5 7.5zm7.5-36h21v21h-21v-21zM319.63 385.483H211.37c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5h108.26c4.143 0 7.5-3.357 7.5-7.5s-3.358-7.5-7.5-7.5zM145.37 335.966h36c4.143 0 7.5-3.357 7.5-7.5v-36c0-4.143-3.357-7.5-7.5-7.5h-36a7.499 7.499 0 0 0-7.5 7.5v36a7.5 7.5 0 0 0 7.5 7.5zm7.5-36h21v21h-21v-21zM319.63 302.966H211.37c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5h108.26c4.143 0 7.5-3.357 7.5-7.5s-3.358-7.5-7.5-7.5zM145.37 253.449h36c4.143 0 7.5-3.357 7.5-7.5v-36c0-4.143-3.357-7.5-7.5-7.5h-36a7.499 7.499 0 0 0-7.5 7.5v36a7.5 7.5 0 0 0 7.5 7.5zm7.5-36h21v21h-21v-21zM319.63 220.449H211.37c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5h108.26c4.143 0 7.5-3.357 7.5-7.5s-3.358-7.5-7.5-7.5zM145.37 170.932h36c4.143 0 7.5-3.357 7.5-7.5v-36c0-4.143-3.357-7.5-7.5-7.5h-36a7.499 7.499 0 0 0-7.5 7.5v36a7.5 7.5 0 0 0 7.5 7.5zm7.5-36h21v21h-21v-21zM319.63 137.932H211.37c-4.143 0-7.5 3.357-7.5 7.5s3.357 7.5 7.5 7.5h108.26c4.143 0 7.5-3.357 7.5-7.5s-3.358-7.5-7.5-7.5z\"\u003e\u003c\/path\u003e\n\t\t\t\u003c\/svg\u003e \u003cbr\u003e\u003cspan\u003eTech Specs\u003c\/span\u003e \u003c\/label\u003e\u003c\/li\u003e\n\u003cli title=\"Documents\"\u003e\u003clabel role=\"button\" for=\"tab3\"\u003e \u003csvg xml:space=\"preserve\" viewbox=\"0 0 48 48\" y=\"0\" x=\"0\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\"\u003e\n\t\t\t\t\u003cpath d=\"M47.987 21.938a.99.99 0 0 0-.053-.264c-.011-.032-.019-.063-.033-.094a.957.957 0 0 0-.193-.285l-.001-.001L42 15.586V10c0-.022-.011-.041-.013-.063a1.028 1.028 0 0 0-.051-.257c-.011-.032-.019-.063-.034-.094a.997.997 0 0 0-.196-.293l-9-9a.992.992 0 0 0-.294-.197c-.03-.013-.06-.022-.09-.032a.998.998 0 0 0-.264-.053C32.038.01 32.02 0 32 0H7a1 1 0 0 0-1 1v14.586L.293 21.293l-.002.002a.98.98 0 0 0-.192.285c-.014.031-.022.062-.033.094a.953.953 0 0 0-.053.264C.011 21.96 0 21.978 0 22v19a1 1 0 0 0 1 1h5v5a1 1 0 0 0 1 1h34a1 1 0 0 0 1-1v-5h5a1 1 0 0 0 1-1V22c0-.022-.011-.04-.013-.062zM44.586 21H42v-2.586L44.586 21zm-6-12H33V3.414L38.586 9zM8 2h23v8a1 1 0 0 0 1 1h8v10H8V2zM6 18.414V21H3.414L6 18.414zM40 46H8v-4h32v4zm6-6H2V23h44v17z\"\u003e\u003c\/path\u003e\n\t\t\t\t\u003cpath d=\"M18.254 26.72a2.82 2.82 0 0 0-1.097-.586 4.453 4.453 0 0 0-1.19-.17h-3.332V38h2.006v-4.828h1.428c.419 0 .827-.074 1.224-.221a2.9 2.9 0 0 0 1.054-.68c.306-.306.552-.688.74-1.148.187-.459.281-.994.281-1.606 0-.68-.105-1.247-.315-1.7a3.19 3.19 0 0 0-.799-1.097zm-1.283 4.285c-.306.334-.697.501-1.173.501h-1.156v-3.825h1.156c.476 0 .867.147 1.173.442.306.295.459.765.459 1.411s-.153 1.136-.459 1.471zM30.723 38h2.057v-5.168h3.077v-1.751h-3.093V27.8h3.348v-1.836h-5.389zM24.076 25.964H21.05V38h3.009c1.553 0 2.729-.524 3.528-1.572.799-1.049 1.198-2.525 1.198-4.429 0-1.904-.399-3.386-1.198-4.446-.799-1.059-1.969-1.589-3.511-1.589zm2.474 7.879c-.13.528-.315.967-.552 1.318a2.385 2.385 0 0 1-.85.79 2.235 2.235 0 0 1-1.071.264h-.969v-8.466h.969c.385 0 .742.088 1.071.264.329.175.612.439.85.79.238.351.422.793.552 1.326s.196 1.156.196 1.87c0 .703-.066 1.317-.196 1.844z\"\u003e\u003c\/path\u003e\n\t\t\t\u003c\/svg\u003e \u003cbr\u003e\u003cspan\u003eDocuments\u003c\/span\u003e \u003c\/label\u003e\u003c\/li\u003e\n\u003cli title=\"Downloads\"\u003e\u003clabel role=\"button\" for=\"tab4\"\u003e \u003csvg xml:space=\"preserve\" viewbox=\"0 0 486 486\" y=\"0\" x=\"0\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\"\u003e\n\t\t\t\t\u003cpath d=\"M473.7 485.75c6.8 0 12.3-5.5 12.3-12.3v-359.8c0-3.6-1.6-7-4.3-9.3L363 2.85c-.2-.2-.4-.3-.6-.4-.3-.2-.5-.4-.8-.6-.4-.2-.7-.4-1.1-.6-.3-.1-.6-.3-.9-.4-.4-.2-.9-.3-1.3-.4-.3-.1-.6-.2-.9-.2-.8-.1-1.5-.2-2.3-.2H12.3C5.5.05 0 5.55 0 12.35v461.3c0 6.8 5.5 12.3 12.3 12.3h461.4v-.2zm-89.2-24.5h-283v-184.1c0-3.7 3-6.6 6.6-6.6h269.8c3.7 0 6.6 3 6.6 6.6v184.1zM161.8 24.45h180.9v127.8c0 .8-.6 1.4-1.4 1.4h-178c-.8 0-1.4-.7-1.4-1.4V24.45h-.1zm-137.2 0h112.8v127.8c0 14.3 11.6 25.9 25.9 25.9h178c14.3 0 25.9-11.6 25.9-25.9V38.75l94.2 80.6v341.9H409v-184.1c0-17.2-14-31.1-31.1-31.1H108.1c-17.2 0-31.1 14-31.1 31.1v184.2H24.6V24.45z\"\u003e\u003c\/path\u003e\n\t\t\t\t\u003cpath d=\"M227.4 77.65h53.8v32.6c0 6.8 5.5 12.3 12.3 12.3s12.3-5.5 12.3-12.3v-44.8c0-6.8-5.5-12.3-12.3-12.3h-66.1c-6.8 0-12.3 5.5-12.3 12.3s5.6 12.2 12.3 12.2zM304.5 322.85h-123c-6.8 0-12.3 5.5-12.3 12.3s5.5 12.3 12.3 12.3h123c6.8 0 12.3-5.5 12.3-12.3s-5.5-12.3-12.3-12.3zM304.5 387.75h-123c-6.8 0-12.3 5.5-12.3 12.3s5.5 12.3 12.3 12.3h123c6.8 0 12.3-5.5 12.3-12.3s-5.5-12.3-12.3-12.3z\"\u003e\u003c\/path\u003e\n\t\t\t\u003c\/svg\u003e \u003cbr\u003e\u003cspan\u003eDownloads\u003c\/span\u003e \u003c\/label\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"slider\"\u003e\n\u003cdiv class=\"indicator\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"content\"\u003e\n\u003csection id=\"Features\"\u003e\n\u003cdiv\u003e\n\u003ch3\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eChallenges and Solutions\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003eCAN messages contain payloads of only a few bytes that need to be processed in real-time by occasionally tiny microcontrollers with little resources and that don't have any security hardware features.\u003c\/p\u003e\n\u003cp\u003eThe \u003cstrong\u003eCANcrypt\u003c\/strong\u003e system adds different levels of security features to CAN. The basic functionality provided supports the grouping of multiple devices and supports authenticated communication between them based on a secure heartbeat. The required system resources are not only minimal in comparison to traditional cryptography methods, they can also be scaled towards the application's security requirements. On the higher end, \u003cstrong\u003eCANcrypt\u003c\/strong\u003e supports AES-128 based encryption and authentication.\u003c\/p\u003e\n\u003cp\u003eA key hierarchy allows the implementation of a smart, simplified key management supporting manufacturers, system builders\/integrators and owners.\u003c\/p\u003e\n\u003cp\u003eThe \u003cstrong\u003eCANcrypt\u003c\/strong\u003e system is protocol independent and can be used with CANopen or other higher-layer CAN protocols. Up to 15 devices can participate in the secure communication. A manager \/ configurator is only required for the generation and exchange of keys, but not during regular operation.\u003c\/p\u003e\n\u003ch4\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eLimitations and levels of CAN Security\u003c\/span\u003e\u003c\/h4\u003e\n\u003cp\u003eLooking at CAN\/CANopen systems we can identify three threat levels. These apply to most applications including automotive, industrial, medical and other machinery. These are:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli style=\"font-weight: bold;\"\u003e\u003cstrong\u003eUnlimited physical access\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli style=\"font-weight: bold;\"\u003e\u003cstrong\u003eSniffer access\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli style=\"font-weight: bold;\"\u003e\u003cstrong\u003eRemote access\u003c\/strong\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eIf an intruder has \"unlimited physical access to the entire network including device PCBs\", then security options available are very limited. Having potential access to all debug ports of the microcontrollers of a system provides many other attack vectors besides CAN. This aspect is not covered by \u003cstrong\u003eCANcrypt\u003c\/strong\u003e.\u003c\/p\u003e\n\u003cp\u003eOnce an intruder has direct bus access to a CAN\/CANopen system, he has read access to ALL communication on the network. If he has the right access, then \"denial of service\" style attacks (swamping the bus with messages so that nothing else gets through) are easy and cannot be prevented.\u003c\/p\u003e\n\u003cp\u003eThe last attack vector becomes more and more popular: remote access through some device that is a gateway to other networks. Remote diagnostics or other kind of remote access becomes more and more common, also increasing the security risk.\u003c\/p\u003e\n\u003cp\u003eA manufacturer of a system using CAN\/CANopen might not be fully capable of prohibiting a remote access device. Maybe such a remote access device is added by some technician or system integrator after delivery and initial installation.\u003c\/p\u003e\n\u003ch4\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eChoosing Cipher Algorithms\u003c\/span\u003e\u003c\/h4\u003e\n\u003cp\u003eSince the security algorithms are required to perform in real-time even on the smallest of microcontrollers, \u003cstrong\u003eCANcrypt\u003c\/strong\u003e puts the emphasis on using \"one-time pads\". One time used random keys. True one-time pads provide the highest level of security. They are more secure than any commonly used encryption methods on the Internet.\u003c\/p\u003e\n\u003cp\u003eHowever, how much security is really required? In \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eCANcrypt\u003c\/span\u003e\u003c\/strong\u003e \"pseudo-one-time pads\" are used. The quality of the one-time pad is configurable. All parameters for performance and security can be finely tuned in the \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eCANcrypt\u003c\/span\u003e\u003c\/strong\u003e configuration. The default demo implementation uses variations of the Speck Cipher or AES-128.\u003c\/p\u003e\n\u003ch4\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eCANcrypt key generation and shared dynamic keys\u003c\/span\u003e\u003c\/h4\u003e\n\u003cp\u003eFor key generation, \u003cstrong\u003eCANcrypt\u003c\/strong\u003e uses a method that allows two devices to exchange a bit not visible to other CAN devices. This allows generating pairing keys that only the two participants know. This feature is key (no pun intended) to make the approach work and exchange keys between devices.\u003c\/p\u003e\n\u003cp\u003eThe base security functionality of \u003cstrong\u003eCANcrypt\u003c\/strong\u003e is a mechanism to maintain a symmetric dynamic key shared among the grouped or paired devices. This key is initialized based on a permanent key from the key hierarchy and then modified frequently. Depending on configuration this can happen multiple times per second. In Pairing mode, update happens by introducing single random bits, in grouping mode, encrypted random data is shared and added via the secure heartbeat. The picture to the right illustrates how the shared random data is used to update the shared key.\u003c\/p\u003e\n\u003ch4\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eKey hierarchy and Management\u003c\/span\u003e\u003c\/h4\u003e\n\u003cp\u003eSecured embedded systems require some sort of a key management system. When keys are installed, who installs which keys and how much \"authority\" does each key have?\u003c\/p\u003e\n\u003cp\u003eIn \u003cstrong\u003eCANcrypt\u003c\/strong\u003e, the suggested method is to keep the number of key copies required outside the system to a minimum. At some point a pairing process is started generating keys – and these are only stored locally.\u003c\/p\u003e\n\u003cp\u003eIf at a later point devices need to be added or exchanged, a next higher authorized key is used to erase the existing pairing information and start a new pairing process.\u003c\/p\u003e\n\u003cbr\u003e\n\u003ch4\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eThe secure CANcrypt Heartbeat\u003c\/span\u003e\u003c\/h4\u003e\n\u003cp\u003eIf authentication is the primary requirement, then the secure Heartbeat functionality is all that is required. In this mode, all \u003cstrong\u003eCANcrypt\u003c\/strong\u003e devices continuously monitor the network for injected messages. As long as a device can transmit it's messages OK and does not detect injection activity, it produces a secure heartbeat. As long as the secure heartbeats are present, the communication is authentic. Devices detect injected messages, by monitoring the communication for their \"own\" used CAN transmit CAN IDs. If a message is received that uses a CAN ID used by this node, then this is considered an injected message.\u003c\/p\u003e\n\u003cp\u003eThe core of the secure heartbeat is a 32bit signature containing three random bytes and a checksum byte. All 32bits are encrypted based on the current shared dynamic key. Receivers decrypt the signature and verify the checksum to verify authenticity.\u003c\/p\u003e\n\u003ch4\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eSecure Messaging\u003c\/strong\u003e\u003c\/span\u003e\u003c\/h4\u003e\n\u003cp\u003eAll secure \u003cstrong\u003eCANcrypt\u003c\/strong\u003e communication uses a preamble message announcing the data message to follow. The data message may be partially or fully encrypted. A signature in the preamble ensures authenticity. Messages received are only accepted (passed on to application) if together with the preamble the authentication and decryption is successful.\u003c\/p\u003e\n\u003ch4\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eCode Integration\u003c\/strong\u003e\u003c\/span\u003e\u003c\/h4\u003e\n\u003cp\u003eThe \u003cstrong\u003eCANcrypt\u003c\/strong\u003e functionality is mostly integrated into the \"driver\" level like the CAN receive interrupt and the software transmit mechanism (typically some FIFO).\u003c\/p\u003e\n\u003cp\u003eDuring the initialization of \u003cstrong\u003eCANcryp\u003c\/strong\u003et, the application passes a list of CAN message IDs that require protection. The \u003cstrong\u003eCANcrypt\u003c\/strong\u003e driver then \"catches\" all these messages coming in or out and applies the configured security features. The messages are only passed on to other layers of the communication protocol if the device is securely paired with its communication partners and the configured ciphering and authentication mechanisms have been applied.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection id=\"TechSpecs\"\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection id=\"Documents\"\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection id=\"Downloads\"\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan id=\"endPhytoolsTabs\"\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"Embedded Systems Academy","offers":[{"title":"Default Title","offer_id":46651873951905,"sku":"ES-CC-BOOK2","price":2268.0,"currency_code":"BRL","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2216\/8673\/files\/7e5cbc407901f9c8a26c3c28e172d780.jpg?v=1783193357","url":"https:\/\/www.foxti.com.br\/products\/cancrypt","provider":"FoxTI","version":"1.0","type":"link"}