{"id":297201,"date":"2020-01-16T09:00:16","date_gmt":"2020-01-16T09:00:16","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=297201"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=297201","title":{"rendered":"\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0438\u0437 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438 STM32F1xx \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c ChipWhisperer"},"content":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/ntc-vulkan\/blog\/483732\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8h\/fe\/kf\/8hfekfa930idilbg4asymru0cbm.png\">   <\/p>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/company\/ntc-vulkan\/blog\/480500\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0441 Vcc-glitch-\u0430\u0442\u0430\u043a\u0430\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 ChipWhisperer. \u041d\u0430\u0448\u0435\u0439 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0446\u0435\u043b\u044c\u044e \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0430\u0442\u0430\u043a \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044f\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c. \u042f\u0440\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2013 <a href=\"https:\/\/www.youtube.com\/watch?list=PLhixgUqwRTjyLgF4x-ZLVFL-CRTCrUo03%5E_%5Eamp%5E_%5Etime_continue=3%5E_%5Eamp%5E_%5Ev=nNBktKw9Is4\">\u0432\u0437\u043b\u043e\u043c<\/a> \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0430 Ledger Nano S \u0441 \u043f\u043b\u0430\u0442\u043e\u0439 \u041c\u041a STM32F042 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Vcc-glitch-\u0430\u0442\u0430\u043a.<\/p>\n<p>  <\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u041e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0438\u0437 <a href=\"https:\/\/pdfs.semanticscholar.org\/4c01\/a7514deacc2c02d010bb14c4fb58d1712adc.pdf\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Vcc-glitch-\u0430\u0442\u0430\u043a\u0438 \u2013 \u043e\u0431\u0445\u043e\u0434\u0430 \u0431\u0430\u0439\u0442\u0430 \u0437\u0430\u0449\u0438\u0442\u044b RDP \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u0441\u043e\u0447\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a (bootloader) \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 (\u0434\u0430\u043b\u0435\u0435 \u2013 \u041c\u041a). \u0422\u0430\u043a\u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043a \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044e <a href=\"https:\/\/limitedresults.com\/2019\/11\/pwn-the-esp32-forever-flash-encryption-and-sec-boot-keys-extraction\/\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a> \u043e \u0432\u0437\u043b\u043e\u043c\u0435 ESP32. <\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b\u043e <a href=\"https:\/\/wiki.newae.com\/Tutorial_A9_Bypassing_LPC1114_Read_Protect\">\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e<\/a> \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f LPC1114 \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u0441\u043e\u0447\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c ChipWhisperer.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u041c\u041a STM32F103RBT6:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nc\/ul\/rw\/nculrwzmxjlbwnjkwqzs9wlpq3e.png\">  <\/p>\n<p><em>\u041f\u043b\u0430\u0442\u0430 STM32F103RBT6<\/em><\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0435\u043a\u0442\u043e\u0440 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 RAM-\u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u043b\u0438 \u0438\u0445 \u0447\u0442\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u041c\u041a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0431\u0430\u0439\u0442\u0430 \u0437\u0430\u0449\u0438\u0442\u044b (\u0434\u043b\u044f STM32 \u2013 RDP). \u0414\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u041c\u041a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442\u043e\u0432 \u0437\u0430\u0449\u0438\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p><strong>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/strong><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c ChipWhisperer \u043a \u041c\u041a \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0440\u0438\u0441\u0443\u043d\u043a\u0443: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cw\/fs\/8s\/cwfs8sdseto5gdlv8bcedgk9wzg.png\">   <\/p>\n<p><em>\u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f ChipWhisperer \u043a STM32 \u0434\u043b\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u0441\u043e\u0447\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a<\/em><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0445\u0435\u043c\u0435 \u0437\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437 \u043f\u043b\u0430\u0442\u044b STM32F103RBT6 (\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u041c\u041a). \u0421\u0442\u0440\u0435\u043b\u043a\u0430\u043c\u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u043c\u0435\u0441\u0442\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f ChipWhisperer, \u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u044f\u043c\u0438 \u2013 \u0435\u0433\u043e \u043f\u0438\u043d\u044b.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u0432\u0430\u0440\u0446\u0430, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0441\u0445\u0435\u043c\u0435, \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u0430\u0441\u043e\u0447\u043d\u044b\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u043c \u043f\u043b\u0430\u0442\u0430 \u041c\u041a STM32F103RBT6 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 CLOCK \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 24 \u041c\u0413\u0446, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 ChipWhisperer \u0438 \u041c\u041a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 ChipWhisperer. \u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u0432\u044b\u0448\u0435, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b ChipWhisperer \u2013 24 \u041c\u0413\u0446 (\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043a\u0440\u0430\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435). \u0427\u0435\u043c \u0432\u044b\u0448\u0435 \u043a\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u0442\u0435\u043c \u0442\u043e\u0447\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0430\u0442\u0430\u043a\u0438. \u0418\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 scope.glitch.offset \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b scope.glitch.repeat \u0438 scope.glitch.width \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b ChipWhisperer. \u041f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432\u0441\u0435 \u043a\u0440\u0430\u0442\u043a\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 scope.glitch.repeat, \u0441\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 scope.glitch.width, \u0430 scope.glitch.repeat \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043b\u0438\u0431\u043e \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u041c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438, \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u043a\u043e\u043b\u043e 80 \u043d\u0441 (\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0448\u0438\u0440\u0438\u043d\u0430 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u043d\u0430 \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0432\u044b\u0441\u043e\u0442\u0435).<\/p>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 scope.glitch.ext_offset.<\/p>\n<p>  <\/p>\n<p><strong>\u041f\u043e\u0434\u0431\u043e\u0440 scope.glitch.ext_offset<\/strong><\/p>\n<p>  <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0430\u0442\u0430\u043a\u0438. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0445\u0435\u043c\u0435, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 <a href=\"https:\/\/www.st.com\/content\/ccc\/resource\/technical\/document\/application_note\/51\/5f\/03\/1e\/bd\/9b\/45\/be\/CD00264342.pdf\/files\/CD00264342.pdf\/jcr:content\/translations\/en.CD00264342.pdf\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435<\/a> \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 STM, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u0439\u0442\u0430 \u0437\u0430\u0449\u0438\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/m7\/b-\/ja\/m7b-jat7np90pioveykbe8giw6y.jpeg\">   <\/p>\n<p><em>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e \u0447\u0442\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438<\/em><\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f \u0432 \u0432\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u041c\u041a \u0431\u0435\u0437 \u0437\u0430\u0449\u0438\u0442\u044b RDP \u0447\u0435\u0440\u0435\u0437 ST-Link. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0430\u0445 \u043d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0447\u0430\u0441\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <strong>Read Memory command<\/strong>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tf\/1k\/uf\/tf1kufh_t31hbeol-vhdxzooqba.png\">   <\/p>\n<p><em>\u041e\u0431\u0449\u0438\u0439 \u0432\u0438\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 (\u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u044b \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 RDP \u0438 \u043f\u043e\u0441\u044b\u043b\u043a\u0430 NACK \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438)<\/em> <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/as\/vk\/3h\/asvk3h81acmw7vjx75he0tcimga.jpeg\">   <\/p>\n<p><em>\u0422\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 RDP<\/em> <\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 RDP: \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>0x40022000 + 0x1C<\/code>, \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0434\u0432\u0438\u0433 \u043d\u0430 30 \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 \u0438 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435. \u0418\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <a href=\"https:\/\/www.st.com\/content\/ccc\/resource\/technical\/document\/programming_manual\/10\/98\/e8\/d4\/2b\/51\/4b\/f5\/CD00283419.pdf\/files\/CD00283419.pdf\/jcr:content\/translations\/en.CD00283419.pdf\">PM0075 Programming manual (STM32F10xxx Flash memory microcontrollers)<\/a> \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e <code>0x40022000<\/code> \u2013 \u044d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 flash memory, \u0430 <code>0x1C<\/code> \u2013 \u044d\u0442\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <strong>FLASH_OBR<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0431\u0438\u0442 <strong>RDPRT<\/strong>: Read protection, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0449\u0438\u0442\u044b RDP. <\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0430\u0442\u0430\u043a\u0438 \u2013 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>LDR<\/code> (\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438). \u042d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 (\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442\u0430 <code>0x11<\/code> \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u043e\u0439 <code>0xEE<\/code>) \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u043c <code>ACK<\/code>\/<code>NOACK<\/code> \u041c\u041a \u043f\u043e UART. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444 \u043a UART1_RX (\u043f\u0438\u043d PA10) \u0438 UART1_TX (\u043f\u0438\u043d PA9), \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043f\u043e UART1. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0430\u0442\u0430\u043a\u0438 \u043f\u043e \u043f\u0438\u0442\u0430\u043d\u0438\u044e \u0441 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c scope.glitch.ext_offset \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fz\/dm\/j5\/fzdmj5iyu5zfmcvmbqx0hf2mqms.jpeg\">   <\/p>\n<p><em>\u0412\u044b\u0431\u043e\u0440 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0430\u0442\u0430\u043a\u0438<\/em><\/p>\n<p>  <\/p>\n<p><strong>\u0421\u043a\u0440\u0438\u043f\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438<\/strong><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 CW_TRIG \u0432 \u043a\u043e\u0434\u0435 Python \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u043f\u043e UART1_RX. \u0423 ChipWhisperer \u0435\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043c\u0430\u0441\u043e\u0447\u043d\u044b\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u043c \u041c\u041a STM32. \u0412 \u0448\u0442\u0430\u0442\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u044d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u041c\u041a \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u0438\u0437 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 <code>class STM32FSerial(object)<\/code>, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 <code>programmer_stm32fserial.py<\/code> \u043f\u043e \u043f\u0443\u0442\u0438 <code>software\/chipwhisperer\/hardware\/naeusb\/<\/code>. \u0414\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0432 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 <code>CmdGeneric(self, cmd)<\/code> \u0441\u0442\u0430\u043b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>scope.arm()<\/code> \u0434\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b (0xEE) \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0430\u043c\u044f\u0442\u0438. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0432 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u0435 \u043d\u0438\u0436\u0435.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f ChipWhisperer \u0441 STM32<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">import time import sys import logging from chipwhisperer.common.utils import util from chipwhisperer.hardware.naeusb.programmer_stm32fserial import supported_stm32f from chipwhisperer.capture.api.programmers import Programmer  # class which can normally using internal CW library for reading STM32 firmware by UART class STM32Reader(Programmer):     def __init__(self):         super(STM32Reader, self).__init__()         self.supported_chips = supported_stm32f          self.slow_speed = False         self.small_blocks = True         self.stm = None      def stm32prog(self):          if self.stm is None:             stm = self.scope.scopetype.dev.serialstm32f         else:             stm = self.stm          stm.slow_speed = self.slow_speed         stm.small_blocks = self.small_blocks          return stm      def stm32open(self):         stm32f = self.stm32prog()         stm32f.open_port()      def stm32find(self):         stm32f = self.stm32prog()         stm32f.scope = self.scope         sig, chip = stm32f.find()      def stm32readMem(self, addr, lng):         stm32f = self.stm32prog()         stm32f.scope = self.scope         #answer = stm32f.readMemory(addr, lng)         answer = self.ReadMemory(addr, lng)         return answer      def stm32GetID(self):         stm32f = self.stm32prog()         stm32f.scope = self.scope         answer = stm32f.cmdGetID()         return answer      # Needed for connection to STM after reload by reset_target(scope) method     def FindSTM(self):         #setup serial port (or CW-serial port?)         stm32f = self.stm32prog()          try:             stm32f.initChip()         except IOError:             print(&quot;Failed to detect chip. Check following: &quot;)             print(&quot;   1. Connections and device power. &quot;)             print(&quot;   2. Device has valid clock (or remove clock entirely for internal osc).&quot;)             print(&quot;   3. On Rev -02 CW308T-STM32Fx boards, BOOT0 is routed to PDIC.&quot;)             raise          boot_version = stm32f.cmdGet()         chip_id = stm32f.cmdGetID()          for t in supported_stm32f:             if chip_id == t.signature: #                print(&quot;Detected known STMF32: %s&quot; % t.name)                 stm32f.setChip(t)                 return chip_id, t #        print(&quot;Detected unknown STM32F ID: 0x%03x&quot; % chip_id)         return chip_id, None<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u0430\u0441\u043e\u0447\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a STM32F1\u0445\u0445 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u0430 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 256 \u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0432\u0441\u0435\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u041c\u041a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u0445\u043e\u0434\u0435 Vcc-glitch-\u0430\u0442\u0430\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 256 \u0431\u0430\u0439\u0442 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u0441\u0435\u043c\u044c 32-\u0431\u0430\u0439\u0442\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0438 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u0444\u0430\u0439\u043b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 HEX. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 HEX-\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440\u0430 \u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">def int2str_0xFF(int_number, number_of_bytes):     return '{0:0{1}X}'.format(int_number,number_of_bytes_in_string)  def data_dividing_from_256_to_32_bytes (data_to_divide, mem_sector, mem_step=32):     if mem_sector &gt; 0xFFFF:         mem_conversion = mem_sector &gt;&gt; 16         mem_conversion = mem_sector - (mem_conversion &lt;&lt; 16)     data_out = ''     for i in range(int(256\/mem_step)):         data_vector = data_to_divide[(i * mem_step):((i + 1) * mem_step)]         mem_calc = mem_conversion + (i * mem_step)         data_out += read_and_convert_data_hex_file(data_vector, mem_calc, mem_step) + '\\n'     return data_out  def read_and_convert_data_hex_file(data_to_convert, memory_address, mem_step):     addr_string = memory_address -((memory_address &gt;&gt; 20) &lt;&lt; 20)      data_buffer = ''     crcacc = 0     for x in range(0, len(data_to_convert)):         data_buffer += int2str_0xFF(data_to_convert[x], 2)         crcacc += data_to_convert[x]      crcacc += mem_step      temp_addr_string = addr_string     for i in range (4, -1, -2):         crcacc += temp_addr_string &gt;&gt; i*4         temp_addr_string -= ((temp_addr_string &gt;&gt; i*4) &lt;&lt; i*4)      crcacc_2nd_symbol = (crcacc &gt;&gt; 8) + 1     crcacc = (crcacc_2nd_symbol &lt;&lt; 8) - crcacc     if crcacc == 0x100:         crcacc = 0     RECTYP = 0x00     out_string = ':'+ Int_To_Hex_String(mem_step, 2)  +\\         Int_To_Hex_String((addr_string),4) +\\         Int_To_Hex_String(RECTYP, 2) +\\         data_buffer +\\         Int_To_Hex_String(crcacc, 2)     return out_string  def send_to_file(info_to_output, File_name, directory):     file = open(directory + File_name + '.hex', 'w')     file.write(info_to_output)     file.close()  def reset_target(scope):     scope.io.nrst = 'low'     time.sleep(0.05)     scope.io.nrst = 'high'  from collections import namedtuple Range = namedtuple('Range', ['min', 'max', 'step']) <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 ChipWhisperer \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\"># string of start HEX file Start_of_File_Record = ':020000040800F2' # string of end HEX file End_of_File_Record = ':00000001FF'  length_of_sector = 256 if length_of_sector % 4 != 0:     sys.exit('length_of_sector must be equal to 4')  output_to_file_buffer = '' output_to_file_buffer += Start_of_File_Record + '\\n'  mem_current = mem_start while mem_current &lt; mem_stop:     # flush the garbage from the computer's target read buffer     target.ser.flush()     # run aux stuff that should run before the scope arms here     reset_target(scope)     # initialize STM32 after each reset     prog.FindSTM()      try:         # reading of closed memory sector         data = prog.stm32readMem(mem_current, length_of_sector)     except Exception as message:         message = str(message)         if &quot;Can't read port&quot; in message: #            print('Port silence')             pass         elif 'Unknown response. 0x11: 0x0' in message: #            print('Crashed. Reload!')             pass         elif 'NACK 0x11' in message: #            print('Firmware is closed!')             pass         else: #            print('Unknown error:', message, scope.glitch.offset, scope.glitch.width, scope.glitch.ext_offset)             pass      else:         data_to_out = data_dividing_from_256_to_32_bytes (data, mem_current)         print(data_to_out)         output_to_file_buffer += data_to_out     mem_current += length_of_sector  output_to_file_buffer += End_of_File_Record + '\\n' send_to_file(output_to_file_buffer, File_name, directory)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f <code>print()<\/code> \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 <code>except Exception as<\/code> \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u041c\u041a \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 glitch-\u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430. \u0414\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u041c\u041a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>print()<\/code>.<\/p>\n<p>  <\/p>\n<p><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f<\/strong><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0432\u0438\u0434\u0435\u043e \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0430 \u041c\u041a \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 ST-LINK, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 RDP \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438:<\/p>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/CRfg9-1BV0k?rel=0%5E_%5Eamp%5E_%5Eshowinfo=1%5E_%5Eamp%5E_%5Ehl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0423\u0441\u043f\u0435\u0448\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e Vcc-glitch-\u0430\u0442\u0430\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438:<\/p>\n<p>  <\/p>\n<p>\u2022 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0430\u043c\u044f\u0442\u0438;<\/p>\n<p>  <\/p>\n<p>\u2022 \u0441\u0430\u043c\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0418\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u0447\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0430\u0442\u0430\u043a\u0438 \u043f\u0443\u0442\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b ChipWhisperer.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 ST-LINK-V2.1, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u041c\u041a STM32F103CBT6. \u0421\u0447\u0438\u0442\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u043c\u044b \u0437\u0430\u0448\u0438\u043b\u0438 \u043d\u0430 \u00ab\u0447\u0438\u0441\u0442\u044b\u0439\u00bb \u041c\u041a STM32F103CBT6 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0435\u0433\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0432\u043e\u0434\u0441\u043a\u043e\u0433\u043e. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 ST-LINK-V2.1 \u0441 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c \u041c\u041a \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0431\u0443\u0434\u0442\u043e \u043f\u043e\u0434\u043c\u0435\u043d\u044b \u043d\u0435 \u0431\u044b\u043b\u043e.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0440\u0438\u044e \u0430\u0442\u0430\u043a \u043d\u0430 STM32F303RCT7. \u042d\u0442\u043e\u0442 \u041c\u041a \u0432 \u0445\u043e\u0434\u0435 \u0430\u0442\u0430\u043a\u0438 \u0432\u0435\u043b \u0441\u0435\u0431\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e STM32F103RBT6, \u043d\u043e \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0431\u0430\u0439\u0442, \u0440\u0430\u0432\u043d\u044b\u0439 0\u044500, \u0447\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u043e \u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u043d\u0430\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u043c \u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u043e\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0449\u0438\u0442\u044b \u044d\u0442\u0438\u0445 \u041c\u041a.<\/p>\n<p>  <\/p>\n<p>\u0412 \u041c\u041a STM32F1xx \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0442\u044b: \u0437\u0430\u0449\u0438\u0442\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430 (Level 0) \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 (Level 1). \u0412 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0442\u0440\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0442\u044b: \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 (Level 0, RDP = 0x55AA), \u0437\u0430\u0449\u0438\u0442\u0430 \u0444\u043b\u0435\u0448- \u0438 SRAM-\u043f\u0430\u043c\u044f\u0442\u0438 (Level 2, RDP = 0x33CC) \u0438 \u0437\u0430\u0449\u0438\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438 (Level 1, RDP \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0442 0x55AA \u0438 0x33CC). \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Level 1 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 RDP, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Level 0 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u043e. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0441 Level 2 \u043d\u0430 Level 1 \u0441\u0431\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430 \u0432 \u0431\u0430\u0439\u0442\u0435 RDP (\u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435), \u0447\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a SRAM-\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dj\/by\/ef\/djbyefc1yji_gpevygy72yzvtjm.jpeg\">   <\/p>\n<p><em>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 RDP \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0437\u0430\u0449\u0438\u0442\u044b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438<\/em><\/p>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u0438\u043c \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 CBS (Cold-Boot Stepping), \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 <a href=\"https:\/\/www.usenix.org\/system\/files\/conference\/woot17\/woot17-paper-obermaier.pdf\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e\u043c \u0441\u043d\u0438\u043c\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f SRAM-\u043f\u0430\u043c\u044f\u0442\u0438 (\u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043d\u0438\u043c\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b) \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u041c\u041a \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0439 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0446\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 CBS \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0435\u0440\u0438\u044f\u0445 \u041c\u041a STM32.<\/p>\n<p>  <\/p>\n<p><strong>\u0412\u044b\u0432\u043e\u0434\u044b<\/strong><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0432\u0435\u0434\u0435\u043c \u0438\u0442\u043e\u0433\u0438 \u043d\u0430\u0448\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432. \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 Vcc-glitch-\u0430\u0442\u0430\u043a\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f (\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/company\/ntc-vulkan\/blog\/480500\/\">\u0437\u0434\u0435\u0441\u044c<\/a>), \u0437\u0430\u043d\u044f\u043b\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0430\u0442\u0430\u043a\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0433\u043a\u043e.<\/p>\n<p>  <\/p>\n<p>Vcc-glitch-\u0430\u0442\u0430\u043a\u0438 \u043e\u043f\u0430\u0441\u043d\u044b \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u0442 \u043d\u0438\u0445 \u0441\u043b\u043e\u0436\u043d\u043e \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c\u0441\u044f. \u0414\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0430\u0442\u0430\u043a \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u041c\u041a \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0437\u0430\u0449\u0438\u0442\u044b.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/raccoonsecurity.ru\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6d\/ts\/lv\/6dtslv2uikkshhl7tmsi7fgjp0y.png\"> <\/a><\/p>\n<p>  <\/p>\n<p>Raccoon Security \u2013 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432 \u041d\u0422\u0426 \u00ab\u0412\u0443\u043b\u043a\u0430\u043d\u00bb \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438, \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0438, \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/ntc-vulkan\/blog\/483732\/\"> https:\/\/habr.com\/ru\/company\/ntc-vulkan\/blog\/483732\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/ntc-vulkan\/blog\/483732\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8h\/fe\/kf\/8hfekfa930idilbg4asymru0cbm.png\">   <\/p>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/company\/ntc-vulkan\/blog\/480500\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0441 Vcc-glitch-\u0430\u0442\u0430\u043a\u0430\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 ChipWhisperer. \u041d\u0430\u0448\u0435\u0439 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0446\u0435\u043b\u044c\u044e \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0430\u0442\u0430\u043a \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044f\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c. \u042f\u0440\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2013 <a href=\"https:\/\/www.youtube.com\/watch?list=PLhixgUqwRTjyLgF4x-ZLVFL-CRTCrUo03%5E_%5Eamp%5E_%5Etime_continue=3%5E_%5Eamp%5E_%5Ev=nNBktKw9Is4\">\u0432\u0437\u043b\u043e\u043c<\/a> \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0430 Ledger Nano S \u0441 \u043f\u043b\u0430\u0442\u043e\u0439 \u041c\u041a STM32F042 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Vcc-glitch-\u0430\u0442\u0430\u043a.<\/p>\n<p>  <\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-297201","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/297201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=297201"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/297201\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=297201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=297201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=297201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}