{"id":350498,"date":"2023-07-19T15:02:09","date_gmt":"2023-07-19T15:02:09","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=350498"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=350498","title":{"rendered":"<span>NFC-\u043a\u0440\u043e\u043a\u043e\u0434\u0438\u043b: \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u043e\u0434 Flipper Zero<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/174\/dc4\/cf7\/174dc4cf79e72141fc4214d736c1638b.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/174\/dc4\/cf7\/174dc4cf79e72141fc4214d736c1638b.png\"\/><\/div>\n<p>  \u041c\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0433\u0440\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043d\u0435\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0440\u0443\u0435\u0442. \u041c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u0439 \u0438\u0434\u0435\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u0443 \u00ab\u043a\u0440\u043e\u043a\u043e\u0434\u0438\u043b\u00bb, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0441\u043b\u043e\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043d\u0442\u043e\u043c\u0438\u043c\u0443, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 NFC. \u041f\u0440\u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043e\u0442\u0434\u0430\u0435\u0442 \u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443. \u0418\u0433\u0440\u043e\u043a \u0432\u0438\u0434\u0438\u0442 \u0441\u043b\u043e\u0432\u043e \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438 \u043b\u0435\u0433\u043a\u043e\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 NFC-\u043c\u0435\u0442\u043a\u0438 \u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>  \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0438\u0437 <a href=\"https:\/\/selectel.ru\/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=career_article_flipper_190723_content\">Selectel<\/a> \u043e\u0434\u043e\u043b\u0436\u0438\u043b\u0438 \u043c\u043d\u0435 Flipper Zero, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f NFC-\u043c\u0435\u0442\u043a\u043e\u0439 \u0441 \u043b\u044e\u0431\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c. \u0412 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Flipper Zero. \u041e\u0431\u0437\u043e\u0440, \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043e\u0431\u0437\u043e\u0440, \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c IDE \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043e\u0431\u0437\u043e\u0440 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u2026<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 GUI-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Flipper Zero, \u043f\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 NFC \u0438 NDEF, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0435 \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<blockquote><p>\u041e \u0437\u0430\u043a\u0443\u043b\u0438\u0441\u044c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0432 \u043b\u0438\u0447\u043d\u043e\u043c <a href=\"https:\/\/slc.tl\/qjcmg\">Telegram-\u043a\u0430\u043d\u0430\u043b\u0435<\/a>. \u0423\u0432\u0435\u0440\u0435\u043d, \u0444\u043b\u0438\u043f\u043f\u0435\u0440 \u0435\u0449\u0435 \u043d\u0435 \u0440\u0430\u0437 \u0441\u0442\u0430\u043d\u0435\u0442 \u0433\u0435\u0440\u043e\u0435\u043c \u043c\u043e\u0438\u0445 \u043f\u043e\u0441\u0442\u043e\u0432.<\/p><\/blockquote>\n<p>  <b>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0435\u0439:<\/b><\/p>\n<p>  \u2192 <a href=\"#1\">\u041f\u0440\u043e\u0435\u043a\u0442<\/a><br \/>  \u2192 <a href=\"#2\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/a><br \/>  \u2192 <a href=\"#3\">\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/a><br \/>  \u2192 <a href=\"#4\">\u0427\u0442\u0435\u043d\u0438\u0435 \u0441 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044f<\/a><br \/>  \u2192 <a href=\"#5\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 NFC<\/a><br \/>  \u2192 <a href=\"#6\">NDEF-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/a><br \/>  \u2192 <a href=\"#7\">\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435<\/a><\/p>\n<p>  <a name=\"1\"><\/a><font color=\"#EB4247\"><\/p>\n<h2>\u041f\u0440\u043e\u0435\u043a\u0442<\/h2>\n<p><\/font><br \/>  \u0418\u0434\u0435\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u00ab\u0438\u0433\u0440\u044b \u0432 \u0441\u043b\u043e\u0432\u0430\u00bb \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u0430\u0441\u044c \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0431\u0437\u0430\u0446 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u00ab\u0444\u0438\u0448\u043a\u043e\u0439\u00bb \u043c\u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0430\u0441\u044c \u043e\u0444\u0444\u043b\u0430\u0439\u043d-\u043c\u0430\u0433\u0438\u044f NFC-\u043c\u0435\u0442\u043e\u043a: \u0437\u0430\u0433\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.<\/p>\n<p>  <b>\u0413\u043e\u0442\u043e\u0432\u0430\u044f NFC-\u043c\u0435\u0442\u043a\u0430.<\/b> \u042f \u0438\u0441\u043a\u0430\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0435 NFC-\u043c\u0435\u0442\u043a\u0438, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443. \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0442\u0430\u043a\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442, \u043d\u043e \u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0437\u0430\u0432\u043e\u0434\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>  <b>\u0422\u0435\u043b\u0435\u0444\u043e\u043d.<\/b> \u0421\u0435\u0439\u0447\u0430\u0441 \u0443\u0436\u0435 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0448\u044c \u043e\u043f\u043b\u0430\u0442\u043e\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0443\u043c\u0435\u0435\u0442 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u044b. \u0417\u0434\u0435\u0441\u044c, \u043f\u0440\u0430\u0432\u0434\u0430, \u0442\u043e\u0436\u0435 \u043b\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e. \u0425\u043e\u0442\u044f NFC-\u0447\u0438\u043f \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c NFC-\u043a\u0430\u0440\u0442\u044b, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u0445 \u043a\u0430\u0440\u0442. \u0421\u043d\u044f\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e <s>\u0434\u0436\u0435\u0439\u043b\u0431\u0440\u0435\u0439\u043a\u043e\u043c <\/s>root-\u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u044f\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0434\u043b\u044f \u0438\u0433\u0440\u044b.<\/p>\n<p>  <b>DIY.<\/b> \u0412\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0430\u043c\u043e\u043c\u0443, \u043d\u043e \u044f \u043d\u0435 \u0442\u0430\u043a \u0441\u0438\u043b\u0435\u043d \u0432 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0435\u0442\u043a\u0443 \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0437\u0430 \u043a\u0430\u0434\u0440\u043e\u043c.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/d32\/f9c\/44e\/d32f9c44eedb7b2165d4eaec3dd7e763.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d32\/f9c\/44e\/d32f9c44eedb7b2165d4eaec3dd7e763.png\"\/><\/div>\n<p>  <i>\u041e\u043d\u043b\u0430\u0439\u043d-\u0432\u0435\u0440\u0441\u0438\u044f<\/i><\/p>\n<p>  \u041f\u043e\u043a\u0430 \u044f \u0445\u043e\u0434\u0438\u043b \u0432\u043e\u043a\u0440\u0443\u0433 \u0434\u0430 \u043e\u043a\u043e\u043b\u043e, \u043c\u043e\u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0438\u0437 event-\u043e\u0442\u0434\u0435\u043b\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043e\u043d\u043b\u0430\u0439\u043d-\u0432\u0435\u0440\u0441\u0438\u044e NFC-\u043a\u0440\u043e\u043a\u043e\u0434\u0438\u043b\u0430. \u0412 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u0440\u0438 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043b\u043e\u0432. \u041f\u0440\u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u043e \u0434\u043b\u044f \u0438\u0433\u0440\u044b. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0441\u043b\u043e\u0432\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430\u0445 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b Flipper Zero \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432, \u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0431\u044b\u043b \u00ab\u041c\u043e\u0436\u0435\u0442 \u043b\u0438 \u043e\u043d \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c NFC-\u043a\u0430\u0440\u0442\u044b?\u00bb. \u041f\u043e\u043b\u0443\u0447\u0438\u0432 \u0443\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442, \u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0435\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0443\u043c\u043a\u0438. \u0412\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e:<\/p>\n<ul>\n<li>\u041e\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442\u044c \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0441\u043b\u043e\u0432. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439.<\/li>\n<li>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u044f\u0437\u044b\u043a \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u044b\u043c.<\/li>\n<\/ul>\n<p>  \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e \u044d\u0442\u043e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0442\u0440\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435.<\/p>\n<ol>\n<li>\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0416\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u041e\u0421, \u0430 \u043d\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u043c\u0443.<\/li>\n<li>\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0444\u043b\u0435\u0448\u043a\u0438 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0432 \u043d\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e. <\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e NFC-\u043c\u0435\u0442\u043a\u0443 \u0441\u043e \u0441\u043b\u043e\u0432\u043e\u043c \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430.<\/li>\n<\/ol>\n<p>  \u0421\u0435\u043a\u0446\u0438\u044e \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 IDE \u044f \u043f\u0440\u043e\u043f\u0443\u0449\u0443, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0442\u0430\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445:<\/p>\n<ul>\n<li>\u041e\u0421: Windows 10.<\/li>\n<li>IDE: VSCode (\u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c).<\/li>\n<li>Flipper Zero FZ.1, FW: 0.86.2.<\/li>\n<li>\u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 ST-Link, \u0447\u0430\u0441\u0442\u044c Nucleo F429ZI. \u0422\u043e\u043b\u044c\u043a\u043e UART \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u043e\u0432, SWDIO \u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b.<\/li>\n<li>NFC-\u0447\u0438\u0442\u0430\u043b\u043a\u0430: Realme 8.<\/li>\n<li>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 fbt.<\/li>\n<\/ul>\n<p>  \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c.<\/p>\n<p>  <a href=\"https:\/\/careers.selectel.ru\/backend\/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=career_article_flipper_190723_banner\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/4y\/ut\/su\/4yutsuhoodxrltivssdxkawljcq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/4y\/ut\/su\/4yutsuhoodxrltivssdxkawljcq.png\"\/><\/div>\n<p><\/a><\/p>\n<p>  <a name=\"2\"><\/a><font color=\"#EB4247\"><\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p><\/font>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/8c0\/9e1\/b6a\/8c09e1b6ac3cb44570a9e8a386c3b17a.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/8c0\/9e1\/b6a\/8c09e1b6ac3cb44570a9e8a386c3b17a.png\"\/><\/div>\n<p>  <a href=\"https:\/\/docs.flipperzero.one\/development\/firmware\">\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/a><\/p>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0435 \u043d\u0430\u0439\u0442\u0438. \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u043c\u0443 \u2014 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 API. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043e\u0431\u0435\u0449\u0430\u044e\u0442 \u043a \u0432\u044b\u0445\u043e\u0434\u0443 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0441\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u043a \u0432\u0435\u0440\u0441\u0438\u0438 1.0. \u0414\u043e\u0440\u043e\u0436\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/miro.com\/app\/board\/uXjVO_3D6xU=\/?moveToWidget=3458764522498020058%26cot=14\">Miro<\/a>, \u0438 \u0442\u0430\u043c \u0440\u0435\u043b\u0438\u0437 1.0.0 \u0431\u044b\u043b \u043d\u0430\u043c\u0435\u0447\u0435\u043d \u0435\u0449\u0435 \u043d\u0430 2022Q3, \u043d\u043e \u043e\u043d \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0435 \u0442\u0430\u043a \u0441\u0442\u0440\u0430\u0448\u043d\u043e: \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/flipperdevices\/flipperzero-firmware\">flipper-firmware<\/a> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u0430 \u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 Flipper Zero. \u042d\u0442\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445, \u0437\u043d\u0430\u0447\u0438\u0442, \u0438 \u043d\u0430\u043c \u0442\u0430\u043a \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  \u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430:<\/p>\n<ol>\n<li>\u041f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e application_user \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/flipperdevices\/flipperzero-firmware\/\">flipperdevices\/flipperzero-firmware<\/a> \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b fbt.<\/li>\n<li>\u0421\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <a href=\"https:\/\/github.com\/flipperdevices\/flipperzero-ufbt\">ufbt<\/a>.<\/li>\n<\/ol>\n<p>  \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 application.fam:<\/p>\n<pre><code class=\"python\">App(     appid=\"nfc_crocodile\",     name=\"NFC Crocodile\",     apptype=FlipperAppType.EXTERNAL,     entry_point=\"nfc_crocodile_main\",     stack_size=1 * 1024,     order=90,     fap_category=\"Games\",     requires=[         \"storage\",         \"gui\"     ],     fap_icon_assets=\"assets\" ) <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0437\u0430\u0434\u0430\u0435\u043c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438. \u0414\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a SD-\u043a\u0430\u0440\u0442\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u043a\u0446\u0438\u044f requires, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043b\u0438\u043d\u043a\u0443\u0435\u0442 \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432 <a href=\"https:\/\/github.com\/flipperdevices\/flipperzero-firmware\/tree\/dev\/applications\/services\">applications\/services<\/a>. \u0422\u043e \u0435\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 NFC \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0421. \u0414\u0430, \u0421++ \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 \u0421. \u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u00ab\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f NFC Crocodile, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u043b\u043e\u0432 nfc_crocodile, \u0430 \u0432\u0441\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0441 NfcCrocodile.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u00ab\u043a\u043b\u0430\u0441\u0441\u043e\u0432\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0443\u044e \u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u0438. \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u043e\u043c <i>_i<\/i>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"plaintext\"># \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0442\u0438\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f nfc_crocodile_worker.h  # \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0442\u0438\u043f\u044b nfc_crocodile_worker_i.h  # \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 nfc_crocodile_worker.c <\/code><\/pre>\n<p>  \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u041e\u0421 Flipper Zero \u043b\u044e\u0431\u044f\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 (callback) \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 context. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u044d\u0442\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u0435\u0437\u0434\u0435 \u0433\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>  \u0424\u0430\u0439\u043b nfc_crocodile.h<\/p>\n<pre><code class=\"cpp\">#include &lt;furi.h> typedef struct NfcCrocodile {     \/\/ \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 } NfcCrocodile; <\/code><\/pre>\n<p>  \u0424\u0430\u0439\u043b nfc_crocodile.c<\/p>\n<pre><code class=\"cpp\">NfcCrocodile* nfc_crocodile_alloc() {     NfcCrocodile* context = (NfcCrocodile*)malloc(sizeof(NfcCrocodile));     return context; } void nfc_crocodile_free(NfcCrocodile* context) {     furi_assert(context);     free(context); } int32_t nfc_crocodile_main(void* p) {     UNUSED(p);     NfcCrocodile* context = nfc_crocodile_alloc();      \/\/ \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0430      nfc_crocodile_free(context);     return 0; } <\/code><\/pre>\n<p>  \u0421 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u0432\u0440\u043e\u0434\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u044d\u0442\u0430\u043f\u0443 \u2014 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443.<\/p>\n<p>  <a name=\"3\"><\/a><font color=\"#EB4247\"><\/p>\n<h2>\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h2>\n<p><\/font>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/e88\/dc3\/b6f\/e88dc3b6f89a83562e507af03889adef.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e88\/dc3\/b6f\/e88dc3b6f89a83562e507af03889adef.png\"\/><\/div>\n<p>  \u0412\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u00ab\u043e\u0434\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u0438\u0433\u0440. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 Flipper Zero \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0441\u0446\u0435\u043d (SceneManager), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b:<\/p>\n<ul>\n<li>SceneManager.<\/li>\n<li>ViewDispatcher.<\/li>\n<li>Gui.<\/li>\n<li>\u0412\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u044d\u043a\u0440\u0430\u043d\u044b (\u043e \u043d\u0438\u0445 \u0434\u0430\u043b\u0435\u0435).<\/li>\n<\/ul>\n<p>  \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"cpp\">\/\/ \u0412 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430 #include &lt;gui\/gui.h> #include &lt;gui\/view_dispatcher.h> #include &lt;gui\/scene_manager.h> #include &lt;gui\/modules\/submenu.h> #include &lt;gui\/modules\/popup.h> #include &lt;gui\/modules\/dialog_ex.h> #include &lt;gui\/modules\/variable_item_list.h>  \/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 typedef enum {     NfcCrocodileViewMenu,     NfcCrocodileViewPopup,     NfcCrocodileViewVariableItemList,     NfcCrocodileViewDialog } NfcCrocodileView;  \/\/ \u0414\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 typedef struct NfcCrocodile {     \/\/ GUI     Gui* gui;     SceneManager* scene_manager;     ViewDispatcher* view_dispatcher;     Submenu* submenu;     Popup* popup;     VariableItemList* variable_item_list;     DialogEx* dialog; } NfcCrocodile; <\/code><\/pre>\n<p>  \u0412 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043d\u0435 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0430 \u043b\u0438\u0448\u044c \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043c\u043e\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043f\u0438\u0441\u0430\u043d \u0432 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435, \u044d\u0442\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0441\u0446\u0435\u043d. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u0412 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 scenes \u2014 \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0436\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0446\u0435\u043d\u044b. \u041e\u043d\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<ol>\n<li>\u041d\u043e\u043c\u0435\u0440 \u0441\u0446\u0435\u043d\u044b. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c. <\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f on_enter. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0441\u0446\u0435\u043d\u0443. \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b.<\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0446\u0435\u043d\u044b.<\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f on_exit. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0441\u043e \u0441\u0446\u0435\u043d\u044b. \u0417\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u0441\u043e\u0431\u043e\u0439.<\/li>\n<\/ol>\n<p>  \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u0430\u043c\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u0443\u044e \u043c\u0430\u0433\u0438\u044e.<\/p>\n<p>  \u0424\u0430\u0439\u043b scenes\/nfc_crocodile_scene.h<\/p>\n<pre><code class=\"cpp\">#pragma once #include &lt;gui\/scene_manager.h>  \/\/ Generate scene id and total number #define ADD_SCENE(prefix, name, id) NfcCrocodileScene##id, typedef enum { #include \"nfc_crocodile_scene_config.h\"     NfcCrocodileSceneNum, } NfcCrocodileScene; #undef ADD_SCENE extern const SceneManagerHandlers nfc_crocodile_scene_handlers;  \/\/ Generate scene on_enter handlers declaration #define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_enter(void*); #include \"nfc_crocodile_scene_config.h\" #undef ADD_SCENE  \/\/ Generate scene on_event handlers declaration #define ADD_SCENE(prefix, name, id) \\     bool prefix##_scene_##name##_on_event(void* context, SceneManagerEvent event); #include \"nfc_crocodile_scene_config.h\" #undef ADD_SCENE  \/\/ Generate scene on_exit handlers declaration #define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_exit(void* context); #include \"nfc_crocodile_scene_config.h\" #undef ADD_SCENE <\/code><\/pre>\n<p>  \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b nfc_crocodile_scene.h \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u0430\u043a\u0440\u043e\u0441 ADD_SCENE \u0438 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d (enum), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442 \u043f\u043e \u0442\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0446\u0435\u043d\u044b.<\/p>\n<p>  \u0424\u0430\u0439\u043b scenes\/nfc_crocodile_scene.c<\/p>\n<pre><code class=\"cpp\">#include \"nfc_crocodile_scene.h\"  \/\/ Generate scene on_enter handlers array #define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_enter, void (*const nfc_crocodile_on_enter_handlers[])(void*) = { #include \"nfc_crocodile_scene_config.h\" }; #undef ADD_SCENE  \/\/ Generate scene on_event handlers array #define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_event, bool (*const nfc_crocodile_on_event_handlers[])(void* context, SceneManagerEvent event) = { #include \"nfc_crocodile_scene_config.h\" }; #undef ADD_SCENE  \/\/ Generate scene on_exit handlers array #define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_exit, void (*const nfc_crocodile_on_exit_handlers[])(void* context) = { #include \"nfc_crocodile_scene_config.h\" }; #undef ADD_SCENE  \/\/ Initialize scene handlers configuration structure const SceneManagerHandlers nfc_crocodile_scene_handlers = {     .on_enter_handlers = nfc_crocodile_on_enter_handlers,     .on_event_handlers = nfc_crocodile_on_event_handlers,     .on_exit_handlers = nfc_crocodile_on_exit_handlers,     .scene_num = NfcCrocodileSceneNum, }; <\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043c\u0430\u0433\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0432 nfc_crocodile_scene.c. \u0422\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b SceneManagerHandlers. \u0414\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u044b \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0444\u0430\u0439\u043b \u00ab\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u00bb.<\/p>\n<p>  \u0424\u0430\u0439\u043b scenes\/nfc_crocodile_scene_config.h<\/p>\n<pre><code class=\"cpp\">ADD_SCENE(nfc_crocodile, main_menu, MainMenu) <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0446\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443.<\/p>\n<ul>\n<li>\u0418\u043c\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0443.<\/li>\n<li>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 SceneManagerHandlers \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0434 \u043d\u043e\u043c\u0435\u0440\u043e\u043c i \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u043b\u0430\u0441\u044c \u043a \u0441\u0446\u0435\u043d\u0435 \u043f\u043e\u0434 \u043d\u043e\u043c\u0435\u0440\u043e\u043c i.<\/li>\n<\/ul>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0446\u0435\u043d\u0443. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u0442\u0440\u0435\u043c\u044f \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438: \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0433\u0440\u0443, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u00ab\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435\u00bb. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b scenes\/nfc_crocodile_scene_main_menu.c \u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<pre><code class=\"cpp\">#include \"..\/nfc_crocodile_i.h\" #include \"nfc_crocodile_scene.h\"  \/\/ \u0414\u043b\u044f \u043c\u0435\u043d\u044e \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f ;) enum {     NfcCrocodileSceneMainMenuDictionaryListItem,     NfcCrocodileSceneMainMenuSettingsItem,     NfcCrocodileSceneMainMenuAboutItem, } NfcCrocodileSceneMainMenuItems;  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043e\u043f\u0446\u0438\u0438 void nfc_crocodile_scene_main_menu_choice_callback(void* context, uint32_t index) {     NfcCrocodile* nfc_crocodile = context;     \/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0441\u0446\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435,      \/\/ \u0433\u0434\u0435 \u043d\u043e\u043c\u0435\u0440 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u0441\u043e\u0431\u044b\u0442\u0438\u044f     scene_manager_handle_custom_event(nfc_crocodile->scene_manager, index); } void nfc_crocodile_scene_main_menu_on_enter(void* context) {     NfcCrocodile* nfc_crocodile = context;      \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u043c\u0435\u043d\u044e     submenu_add_item(         nfc_crocodile->submenu,         \"Start game\",  \/\/ \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438         NfcCrocodileSceneMainMenuDictionaryListItem, \/\/ \u0418\u043d\u0434\u0435\u043a\u0441. \u0414\u043b\u044f callback-\u0444\u0443\u043d\u043a\u0446\u0438\u0438         nfc_crocodile_scene_main_menu_choice_callback,         context     );      \/\/ ...      \/\/ \u041e\u0442\u043c\u0435\u0447\u0430\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 \u0441\u0446\u0435\u043d\u044b.     \/\/ \u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2013 0     submenu_set_selected_item(         nfc_crocodile->submenu,         scene_manager_get_scene_state(nfc_crocodile->scene_manager, NfcCrocodileSceneMainMenu)     );      \/\/ \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 Submenu, \u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443      \/\/ \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442     view_dispatcher_switch_to_view(nfc_crocodile->view_dispatcher, NfcCrocodileViewMenu); } <\/code><\/pre>\n<p>  \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <i>Submenu<\/i> \u0431\u0435\u0440\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044e \u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043e\u043a. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <i>nfc_crocodile_scene_main_menu_choice_callback<\/i>, \u0432 \u043d\u0435\u0435 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u043e\u0433\u0438\u043a\u0438, \u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0434\u043b\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0441\u0446\u0435\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a.<\/p>\n<pre><code class=\"cpp\">bool nfc_crocodile_scene_main_menu_on_event(void* context, SceneManagerEvent event) {     NfcCrocodile* nfc_crocodile = context;     bool consumed = false;     if(event.type == SceneManagerEventTypeCustom) {         \/\/ \u041d\u0430\u0436\u0430\u0442\u0438\u0435 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0446\u0435\u043d\u0443,          \/\/ \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u0432          \/\/ \"\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\" \u0441\u0446\u0435\u043d\u044b          scene_manager_set_scene_state(             nfc_crocodile->scene_manager,              NfcCrocodileSceneMainMenu, \/\/ \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0446\u0435\u043d\u044b              event.event \/\/ \u041d\u043e\u043c\u0435\u0440 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430         );          \/\/ \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0446\u0435\u043d\u0443         switch(event.event) {         case NfcCrocodileSceneMainMenuDictionaryListItem:             scene_manager_next_scene(                 nfc_crocodile->scene_manager,                  NfcCrocodileSceneDictionary             );             consumed = true;             break;         case NfcCrocodileSceneMainMenuSettingsItem:             scene_manager_next_scene(nfc_crocodile->scene_manager, NfcCrocodileSceneSettings);             consumed = true;             break;         }     }     return consumed; } <\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u2014 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0442\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0446\u0435\u043d\u0430 \u0441\u0430\u043c\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438 \u0441\u0430\u043c\u0430 \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0441\u043b\u0430.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0441\u0446\u0435\u043d\u0430 \u0438 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0441\u0446\u0435\u043d, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0445 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044e. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0432 nfc_crocodile.c.<\/p>\n<pre><code class=\"cpp\">\/\/ \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043a\u043d\u043e\u043f\u043a\u0438 Back bool nfc_crocodile_back_event_callback(void* context) {     furi_assert(context);     NfcCrocodile* nfc_crocodile = context;     return scene_manager_handle_back_event(nfc_crocodile->scene_manager); }  bool nfc_crocodile_custom_event_callback(void* context, uint32_t event) {     furi_assert(context);     NfcCrocodile* nfc_crocodile = context;     return scene_manager_handle_custom_event(nfc_crocodile->scene_manager, event); }  NfcCrocodile* nfc_crocodile_alloc() {     NfcCrocodile* context = (NfcCrocodile*)malloc(sizeof(NfcCrocodile));     furi_assert(context);      \/\/ \u0410\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0438 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430     context->scene_manager = scene_manager_alloc(&amp;nfc_crocodile_scene_handlers, context);     context->view_dispatcher = view_dispatcher_alloc();      \/\/ \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439     view_dispatcher_enable_queue(context->view_dispatcher);      \/\/ \u0417\u0430\u0434\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0447\u0442\u043e\u0431\u044b \u0432\u043e \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c      \/\/ \u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f     view_dispatcher_set_event_callback_context(context->view_dispatcher, context);      \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430\u0437\u0430\u0434 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439     view_dispatcher_set_navigation_event_callback(         context->view_dispatcher, nfc_crocodile_back_event_callback);     view_dispatcher_set_custom_event_callback(         context->view_dispatcher, nfc_crocodile_custom_event_callback);      \/\/ GUI     context->gui = furi_record_open(RECORD_GUI);     view_dispatcher_attach_to_gui(         context->view_dispatcher, context->gui, ViewDispatcherTypeFullscreen);      \/\/ \u0410\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 submenu     context->submenu = submenu_alloc();      \/\/ \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442      view_dispatcher_add_view(         context->view_dispatcher,          NfcCrocodileViewMenu, \/\/ \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u0437 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f          submenu_get_view(context->submenu)  \/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u0438 *_get_view() \u0435\u0441\u0442\u044c \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430     );      \/\/ Popup     \/\/ ...      \/\/ Variable Item List     \/\/ \u2026      \/\/ Dialog     \/\/ ...      \/\/ GUI     furi_record_close(RECORD_GUI);     context->gui = NULL;     return context; } <\/code><\/pre>\n<p>  \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0449\u0435.<\/p>\n<pre><code class=\"cpp\">void nfc_crocodile_free(NfcCrocodile* context) {     furi_assert(context);      \/\/ \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438\u0437 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430     view_dispatcher_remove_view(context->view_dispatcher, NfcCrocodileViewMenu);      \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u043c \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b     scene_manager_free(context->scene_manager);     view_dispatcher_free(context->view_dispatcher);     submenu_free(context->submenu);     free(context); } <\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<pre><code class=\"cpp\">int32_t nfc_crocodile_main(void* p) {     UNUSED(p);     NfcCrocodile* context = nfc_crocodile_alloc();      \/\/ \u0421\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c     view_dispatcher_attach_to_gui(         context->view_dispatcher,          gui,          ViewDispatcherTypeFullscreen     );      \/\/ \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0446\u0435\u043d\u0443, \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e     scene_manager_next_scene(context->scene_manager, NfcCrocodileSceneMainMenu);      \/\/ \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443     view_dispatcher_run(context->view_dispatcher);      \/\/ \u0415\u0441\u043b\u0438 \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e \u043d\u0430\u0436\u0430\u0442\u044c back, \u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443,     \/\/ \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442      \/\/ \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0442\u044c \u0437\u0430\u043d\u044f\u0442\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c     nfc_crocodile_free(context);      return 0; } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0441\u0446\u0435\u043d \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 (\u0441\u0441\u044b\u043b\u043a\u0430 \u0432 \u043a\u043e\u043d\u0446\u0435) \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0430 Start Game, \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0446\u0435\u043d\u044b, \u043d\u043e \u0438 \u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u0433\u0440\u044b.<\/p>\n<p>  <a name=\"4\"><\/a><font color=\"#EB4247\"><\/p>\n<h2>\u0427\u0442\u0435\u043d\u0438\u0435 \u0441 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044f<\/h2>\n<p><\/font><br \/>  \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0443\u043c\u043a\u0430 \u043e\u0442 \u043c\u043e\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u0433 \u0438\u0437 event-\u043e\u0442\u0434\u0435\u043b\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u043c IT-\u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u0434\u043b\u044f \u0438\u0433\u0440\u044b. \u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0430\u0448\u0438\u0445 \u0440\u0443\u043a\u0430\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441 MicroSD-\u043a\u0430\u0440\u0442\u043e\u0439, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430-\u0441\u043b\u043e\u0432\u0430\u0440\u044f.<\/p>\n<p>  \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430, \u043d\u043e \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438\u0437\u043e\u0431\u0440\u0435\u043b \u0441\u0432\u043e\u0439 \u00ab\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u00bb. \u0421 \u0442\u0430\u043a\u0438\u043c\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438:<\/p>\n<ul>\n<li>\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<li>\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f (\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438) \u043d\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/li>\n<li>\u0414\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 Submenu.<\/li>\n<li>\u0412 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 N \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439, \u0433\u0434\u0435 N \u2014 \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u043c. \u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f N = 255.<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043d\u0443\u0436\u0435\u043d \u043c\u043e\u0434\u0443\u043b\u044c storage \u0432 application.pam, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u0438\u043f\u0430 Storage \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code class=\"cpp\">typedef struct NfcCrocodile {     \/\/ ...      \/\/ Storage     Storage* storage; } NfcCrocodile; NfcCrocodile* nfc_crocodile_alloc() {     \/\/ \u2026      \/\/ Storage     context->storage = furi_record_open(RECORD_STORAGE);     storage_simply_mkdir(context->storage, STORAGE_APP_DATA_PATH_PREFIX);     \/\/ ... } void nfc_crocodile_free(NfcCrocodile* context) {     \/\/ ...      \/\/ Storage     furi_record_close(RECORD_STORAGE);      \/\/ ... } <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u043e \u043f\u0443\u0442\u0438 <i>\/app_data\/{appid}<\/i>. \u041d\u043e \u044d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u044b\u0437\u043e\u0432 <i>storage_simply_mkdir<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435.<\/p>\n<blockquote><p>\u0423 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0434\u043b\u044f \u00ab\u0441\u0432\u043e\u0435\u0433\u043e\u00bb \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430: <i>\/data<\/i>. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Flipper Zero \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e\u0442, \u0447\u0442\u043e \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <i>STORAGE_APP_DATA_PATH_PREFIX<\/i>.<\/p><\/blockquote>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0446\u0435\u043d\u0443 <i>nfc_crocodile_scene_dictionary<\/i> \u0438 \u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0438 <i>on_event<\/i> \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432. \u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0435\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0432 Linux.<\/p>\n<pre><code class=\"cpp\">\/\/ \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u0446\u0435\u043d\u0435 #define MAX_LEN 255 char* files[MAX_LEN]; uint32_t files_len = 0;  void nfc_crocodile_scene_dictionary_on_enter(void* context) {     \/\/ \u0417\u0434\u0435\u0441\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e     NfcCrocodile* nfc_crocodile = context;     submenu_reset(nfc_crocodile->submenu);     submenu_set_header(nfc_crocodile->submenu, \"Select dictionary\");      \/\/ \u0412\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u201c\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u201d     File* dir = storage_file_alloc(nfc_crocodile->storage);     files_len = 0;      \/\/ \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433?     if(storage_dir_open(dir, STORAGE_APP_DATA_PATH_PREFIX)) {         FileInfo file_info;         char* buf = malloc(MAX_LEN * sizeof(char));         uint16_t buf_len = 0;          \/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435         while(true) {             \/\/ \u0421\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0442\u0440\u0430\u043a\u0442\u0443\u0435\u043c \u044d\u0442\u043e \u043a\u0430\u043a \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043a\u043e\u043d\u0446\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439             if(!storage_dir_read(dir, &amp;file_info, buf, MAX_LEN)) {                 break;             }              \/\/ \u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043d\u0430\u0441 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442             if(file_info_is_dir(&amp;file_info)) {                 continue;             }              \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f             buf_len = strlen(buf) + 1;             files[files_len] = malloc(buf_len * sizeof(char));             memcpy(files[files_len], buf, buf_len);              \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 submenu             submenu_add_item(                 nfc_crocodile->submenu,                 files[files_len], \/\/ \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430                 files_len, \/\/ \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0444\u0430\u0439\u043b\u0430                 nfc_crocodile_scene_dictionary_choice_callback,                 context);             files_len++;         }         submenu_set_selected_item(             nfc_crocodile->submenu,             scene_manager_get_scene_state(                 nfc_crocodile->scene_manager, NfcCrocodileSceneDictionary));         free(buf);     } else {         FURI_LOG_E(TAG, \"Unable to open app data dir\");     }      \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440     storage_file_free(dir);     view_dispatcher_switch_to_view(nfc_crocodile->view_dispatcher, NfcCrocodileViewMenu); }  void nfc_crocodile_scene_dictionary_on_exit(void* context) {     NfcCrocodile* nfc_crocodile = context;      \/\/ \u041f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u043c \u0432\u0441\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0438\u0437-\u043f\u043e\u0434 \u0438\u043c\u0435\u043d \u0444\u0430\u0439\u043b\u043e\u0432     for(uint32_t i = 0; i &lt; files_len; i++) {         free(files[i]);     }      submenu_reset(nfc_crocodile->submenu); } <\/code><\/pre>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430, \u0447\u0442\u043e\u0431\u044b Flipper Zero \u043c\u043e\u0433 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043d\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0430\u0434\u0430\u043d\u043e. \u0418\u0434\u0435\u044f \u043f\u0440\u0438\u0448\u043b\u0430 \u0431\u044b\u0441\u0442\u0440\u043e:<\/p>\n<ol>\n<li>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u043a\u0430\u043a \u043d\u0430\u0431\u043e\u0440 \u0441\u043b\u043e\u0432 \u0434\u043b\u044f \u0438\u0433\u0440\u044b, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c.<\/li>\n<li>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0438 \u0441\u043c\u0435\u0449\u0430\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 (seek) \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0431\u0430\u0439\u0442.<\/li>\n<li>\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f.<\/li>\n<li>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043b\u043e\u0432\u043e \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0434\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e.<\/li>\n<\/ol>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0434\u043b\u044f MicroSD-\u043a\u0430\u0440\u0442\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u044b\u0431\u043e\u0440. \u0421\u043f\u0435\u0440\u0432\u0430 \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u044f\u0442\u0443\u044e, \u043d\u043e \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u043b\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044c. \u0422\u043e\u0433\u0434\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c: \u043f\u0443\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0432 \u0444\u0430\u0439\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c. \u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u044f\u0437\u044b\u043a\u043e\u0432 \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 UTF-8.<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td><b>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043a\u0442\u0435\u0442\u043e\u0432<\/b>  <\/td>\n<td><b>\u0417\u043d\u0430\u0447\u0430\u0449\u0438\u0445 \u0431\u0438\u0442<\/b>  <\/td>\n<td><b>\u0428\u0430\u0431\u043b\u043e\u043d<\/b>  <\/td>\n<\/tr>\n<tr>\n<td>1  <\/td>\n<td>7  <\/td>\n<td>0xxxxxxx  <\/td>\n<\/tr>\n<tr>\n<td>2  <\/td>\n<td>11  <\/td>\n<td>110xxxxx 10xxxxxx  <\/td>\n<\/tr>\n<tr>\n<td>3  <\/td>\n<td>16  <\/td>\n<td>1110xxxx 10xxxxxx 10xxxxxx  <\/td>\n<\/tr>\n<tr>\n<td>4  <\/td>\n<td>21  <\/td>\n<td>11110xxx 10xxxxxx 10xxxxxx 10xxxxxx  <\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>\u041d\u043e, \u043a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, UTF-8 \u2014 \u044d\u0442\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u043d\u043e\u0439, \u0441\u0438\u043c\u0432\u043e\u043b \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442 1 \u0434\u043e 4 \u0431\u0430\u0439\u0442. \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e \u0441 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0444\u0430\u0439\u043b\u0430? \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u044d\u0442\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439. \u0421\u0438\u043c\u0432\u043e\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0431\u0430\u0439\u0442\u043e\u043c, \u0438\u043c\u0435\u044e\u0442 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 (\u0432\u043e\u0441\u044c\u043c\u043e\u0439) \u0431\u0438\u0442 \u0440\u0430\u0432\u043d\u044b\u0439 \u043d\u0443\u043b\u044e.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/032\/24e\/2fa\/03224e2faf8fa27251ffec989eb9f451.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/032\/24e\/2fa\/03224e2faf8fa27251ffec989eb9f451.png\"\/><\/div>\n<p>  \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c, \u0447\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0431\u0430\u0439\u0442\u043e\u043c, \u043f\u043e\u0434 \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0432\u0441\u0435 \u0437\u043d\u0430\u043a\u0438 \u043f\u0440\u0435\u043f\u0438\u043d\u0430\u043d\u0438\u044f \u0438 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442. \u041e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043a\u0442\u0435\u0442\u043e\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u044d\u0442\u043e \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<pre><code class=\"cpp\">bool nfc_crocodile_scene_dictionary_on_event(void* context, SceneManagerEvent event) {     NfcCrocodile* nfc_crocodile = context;     bool consumed = false;      if(event.type == SceneManagerEventTypeCustom) {         \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443         const char* filename = files[event.event];          \/\/ \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430: \u043a\u0430\u0442\u0430\u043b\u043e\u0433-\u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c + \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430         FuriString* full_path_f = furi_string_alloc();         path_concat(STORAGE_APP_DATA_PATH_PREFIX, filename, full_path_f);          \/\/ \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440         const char* full_path = furi_string_get_cstr(full_path_f);         File* f = storage_file_alloc(nfc_crocodile->storage);         storage_file_open(f, full_path, FSAM_READ, FSOM_OPEN_EXISTING);          \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430         uint64_t file_size = storage_file_size(f);          \/\/ \u0411\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u0441\u043b\u043e\u0432         char buf[LOOKUP_LEN * 2];          \/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c         char separator;         storage_file_read(f, &amp;separator, 1);          \/\/ \u0417\u0434\u0435\u0441\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 separator &amp; 0b10000000          \/\/ \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435         \/\/ \u043d\u0435 \u043c\u043e\u0433\u043b\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c\u0443 \u0441\u043b\u043e\u0432\u0443         storage_file_seek(f, file_size - LOOKUP_LEN, true);         uint16_t read_count = storage_file_read(f, buf, LOOKUP_LEN);         for(uint16_t i = 0; i &lt; read_count; i++) {             if(buf[read_count - i] == separator) {                 \/\/ \u0423\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u043b\u043e\u0432\u0430 + \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c                 file_size -= i + 1;                 break;             }         }          \/\/ \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u0435\u0441\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435         uint32_t rnd = furi_hal_random_get() % file_size;          \/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430 \u0440\u0430\u0437         storage_file_seek(f, rnd, true);         read_count = storage_file_read(f, buf, 2 * LOOKUP_LEN);         buf[read_count + 1] = '\\0';          \/\/ \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u043b\u043e\u0432\u043e         char* ptr = NULL;         for(uint16_t i = 0; i &lt; read_count; i++) {             if(buf[i] != separator) continue;             \/\/ \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f, \u0442\u043e \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439,             \/\/ \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441             if(!ptr) {                 ptr = buf + i + 1;             }             \/\/ \u0417\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043d\u0430 \u043d\u0443\u043b\u044c-\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u0440             buf[i] = '\\0';         }          \/\/ \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043b\u0435\u0436\u0438\u0442 \u043c\u0435\u0436\u0434\u0443 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c ptr \u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u043c \u043d\u0443\u043b\u044c-\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u043e\u043c         FURI_LOG_I(TAG, \"Found word: %s\", ptr);         uint16_t word_len = strlen(ptr) + 1;          \/\/ \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0441\u043b\u043e\u0432\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0435\u0433\u043e \u043f\u043e NFC         \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c         storage_file_close(f);         storage_file_free(f);         furi_string_free(full_path_f);          \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b         scene_manager_set_scene_state(             nfc_crocodile->scene_manager, NfcCrocodileSceneDictionary, event.event);         scene_manager_next_scene(nfc_crocodile->scene_manager, NfcCrocodileSceneTransfer);     }     return consumed; } <\/code><\/pre>\n<p>  \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043f\u043e\u0440\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 NFC.<\/p>\n<p>  <a name=\"5\"><\/a><font color=\"#EB4247\"><\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 NFC<\/h2>\n<p><\/font><br \/>  \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043d\u0430\u0447\u0430\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b NFC. \u041d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u043b \u0438 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c NFC-\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435. \u0423 \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u0434\u0432\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430.<\/p>\n<ol>\n<li>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u00ab\u043f\u0430\u0434\u0430\u043b\u043e\u00bb \u0441 NULL pointer reference.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0430\u0434\u0430\u043b\u043e, \u0442\u043e \u044f \u043d\u0435 \u043c\u043e\u0433 \u0443\u0434\u043e\u0431\u043d\u043e \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0418\u043b\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0431\u044b\u043b\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0438\u043b\u0438 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/li>\n<\/ol>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u044f \u0434\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 NFC \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a, \u0442\u043e \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u0441\u0442\u0430\u043b\u0430 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0439, \u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u043f\u0430\u0434\u0430\u0442\u044c.<\/p>\n<p>  \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b, NFC \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 \u0444\u043b\u0438\u043f\u043f\u0435\u0440\u0430. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/github.com\/flipperdevices\/flipperzero-firmware\/tree\/dev\/applications\/main\/nfc\">applications\/main\/nfc<\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u043a\u0430\u0440\u0442. \u0422\u0430\u043c \u0434\u0430\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 mf_classic_emulator, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0441\u0443\u0434\u044f \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e, \u043a\u0430\u043a \u0440\u0430\u0437 \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043c\u0435\u0442\u043a\u0438 Mifare Classic.<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u0443\u0440\u043e\u043a \u0442\u0435\u043c, \u043a\u0442\u043e \u0441\u043b\u0435\u043f\u043e \u0438\u0449\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 Flipper Zero. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b <a href=\"https:\/\/github.com\/flipperdevices\/flipperzero-firmware\/blob\/dev\/firmware\/targets\/f7\/api_symbols.csv\">api_symbols.csv<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445, \u0430 \u043a\u0430\u043a\u0438\u0435 \u2014 \u043d\u0435\u0442. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0438 \u0434\u0430\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f, \u043d\u043e \u0444\u043b\u0438\u043f\u043f\u0435\u0440 \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u043a\u0430\u0440\u0442 \u043d\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/p>\n<blockquote><p>\u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438. \u041d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0434\u043b\u044f \u0438\u0433\u0440\u044b \u2014 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0438\u0433\u0440\u0430\u043b\u0441\u044f, \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043b \u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u043b \u0431\u043e\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b.<\/p><\/blockquote>\n<p>  \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043e \u0438\u0445 \u0438\u043c\u0435\u043d\u0438. \u0427\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0431\u044b\u0441\u0442\u0440\u043e: furi_hal_nfc_emulate_nfca(). \u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0432\u0434\u0443\u043c\u0447\u0438\u0432\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439.<\/p>\n<p>  \u041d\u043e \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u00ab\u043c\u0435\u0441\u0442\u0430\u00bb \u0434\u043b\u044f NFC-\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0442\u043e\u043a. \u0422\u0430\u043a\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u043d\u0438\u043a\u0430\u043c\u0438 (worker), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u0442\u0430\u043a \u0436\u0435. \u0412\u043e\u0440\u043a\u0435\u0440 \u2014 \u044d\u0442\u043e \u0432 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u0441\u043c\u044b\u0441\u043b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0448\u0430\u0433\u0438 \u0438\u0437 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0432\u043e\u0440\u043a\u0435\u0440\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 <i>nfc_crocodile_worker.h<\/i>.<\/p>\n<pre><code class=\"cpp\">#pragma once #include &lt;lib\/nfc\/nfc_device.h>  \/\/ \u041d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0438\u043f. \u0422\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0430\u0436\u043d\u0430, \u043d\u043e \u043c\u044b \u043d\u0435 \u0434\u0430\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \/\/ \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0432\u043e\u0440\u043a\u0435\u0440\u0430 typedef struct NfcCrocodileWorker NfcCrocodileWorker;  \/\/ \u042d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0434\u043d\u0435\u0435 typedef enum {     NfcCrocodileStorageText = 0,     NfcCrocodileStorageURL, } NfcCrocodileStorageType;  \/\/ \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0440\u043a\u0435\u0440\u0430. \u0414\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 typedef enum {     NfcCrocodileWorkerStateNone,     NfcCrocodileWorkerStateReady,     NfcCrocodileWorkerStateStop, } NfcCrocodileWorkerState;  \/\/ \u041c\u0435\u0442\u043e\u0434\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e NfcCrocodileWorker* nfc_crocodile_worker_alloc(); void nfc_crocodile_worker_free(NfcCrocodileWorker* nfc_worker);  \/\/ \u0417\u0430\u043f\u0443\u0441\u043a \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u0430 void nfc_crocodile_worker_start(     NfcCrocodileWorker* nfc_worker,     NfcCrocodileWorkerState state,     NfcCrocodileStorageType storage_type,     char* str,     void* callback,     void* context); void nfc_crocodile_worker_stop(NfcCrocodileWorker* nfc_worker); <\/code><\/pre>\n<p>  \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438 \u0432\u0441\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043e \u00ab\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u00bb \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 <i>nfc_crocodile_worker_i.h<\/i>.<\/p>\n<pre><code class=\"cpp\">#pragma once #include \"nfc_crocodile_worker.h\" #include &lt;furi.h> #include &lt;lib\/nfc\/protocols\/nfc_util.h> struct NfcCrocodileWorker {     \/\/ \u041f\u043e\u0442\u043e\u043a     FuriThread* thread;      \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043d\u0435\u0435     bool (*callback)(void*);     void* context;      \/\/ \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u0430     NfcCrocodileWorkerState state;     bool connection;      \/\/ \u0414\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043a\u0438, \u044d\u0442\u043e \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u043e\u0437\u0434\u043d\u0435\u0435     uint8_t uid_data[7];     uint8_t atqa_data[2];     uint8_t sak;     uint8_t card[0x87 * 4];     char* card_content;     NfcCrocodileStorageType storage_type; };  \/\/ \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043e \/\/ \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432\u043e\u0440\u043a\u0435\u0440\u0430 int32_t nfc_crocodile_worker_task(void* context); <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0432 <i>nfc_crocodile_worker.c<\/i>. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430.<\/p>\n<pre><code class=\"cpp\">NfcCrocodileWorker* nfc_crocodile_worker_alloc() {     NfcCrocodileWorker* nfc_crocodile_worker =         (NfcCrocodileWorker*)malloc(sizeof(NfcCrocodileWorker));      \/\/ ...      nfc_crocodile_worker->thread = furi_thread_alloc_ex(         \"NfcCrocodileWorker\", \/\/ \u0418\u043c\u044f \u043f\u043e\u0442\u043e\u043a\u0430         8192, \/\/ \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430         nfc_crocodile_worker_task, \/\/ \u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430          nfc_crocodile_worker \/\/ \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430     );      return nfc_crocodile_worker; }  void nfc_crocodile_worker_free(NfcCrocodileWorker* nfc_crocodile_worker) {     furi_thread_free(nfc_crocodile_worker->thread);     free(nfc_crocodile_worker); }  void nfc_crocodile_worker_start(     NfcCrocodileWorker* nfc_crocodile_worker,     NfcCrocodileWorkerState state,     NfcCrocodileStorageType storage_type,     char* str,     void* callback,     void* context) {     \/\/ \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0433\u043e     nfc_crocodile_worker->storage_type = storage_type;     nfc_crocodile_worker->card_content = str;     nfc_crocodile_worker->callback = callback;     nfc_crocodile_worker->context = context;     nfc_crocodile_worker_change_state(nfc_crocodile_worker, state);      \/\/ \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a     furi_thread_start(nfc_crocodile_worker->thread); }  void nfc_crocodile_worker_stop(NfcCrocodileWorker* nfc_crocodile_worker) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u0437\u0430\u043f\u0443\u0449\u0435\u043d     if(furi_thread_get_state(nfc_crocodile_worker->thread) != FuriThreadStateStopped) {         \/\/ \u041c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0446\u0438\u043a\u043b \u0432\u043e\u0440\u043a\u0435\u0440\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f         nfc_crocodile_worker_change_state(nfc_crocodile_worker, NfcCrocodileWorkerStateStop);          \/\/ \u041e\u0436\u0438\u0434\u0430\u0435\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430         furi_thread_join(nfc_crocodile_worker->thread);     } } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430.<\/p>\n<pre><code class=\"cpp\">int32_t nfc_crocodile_worker_task(void* context) {     NfcCrocodileWorker* nfc_crocodile_worker = context;      \/\/ \u041f\u0440\u043e\u0431\u0443\u0436\u0434\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c NFC     furi_hal_nfc_exit_sleep();      \/\/ \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b     while(nfc_crocodile_worker->state == NfcCrocodileWorkerStateReady) {         furi_hal_nfc_emulate_nfca(             nfc_crocodile_worker->uid_data, \/\/ \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u0435\u0442\u043a\u0438             7, \/\/ \u0420\u0430\u0437\u043c\u0435\u0440 (\u0432 \u0431\u0430\u0439\u0442\u0430\u0445) \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430             nfc_crocodile_worker->atqa_data, \/\/ ATQA             nfc_crocodile_worker->sak,  \/\/ SAK             nfc_crocodile_worker_callback, \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f             nfc_crocodile_worker,              1000 \/\/ \u0422\u0430\u0439\u043c\u0430\u0443\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438         );     }      \/\/ \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0441\u043e\u043d     furi_hal_nfc_sleep();     return 0; } <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u0440\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, ATQA \u0438 SAK. \u0412\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0443 \u043b\u044e\u0431\u043e\u0439 \u043c\u0435\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0439\u0434\u0435\u0442\u0441\u044f \u0434\u043e\u043c\u0430 \u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c NFC \u0432\u043e \u0444\u043b\u0438\u043f\u043f\u0435\u0440\u0435. \u0422\u0430\u043c \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u043c\u0435\u0442\u043a\u0443 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<\/p>\n<p>  \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f ATQA \u0438 SAK \u0437\u0430\u0434\u0430\u044e\u0442 \u0442\u0438\u043f \u043c\u0435\u0442\u043a\u0438 \u0438 \u043e\u0442 \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0447\u0438\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0420\u0430\u043d\u0435\u0435 \u044f \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0441\u044f \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 MiFare Classic, \u0438 \u043e\u043d \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u043c: \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u044b, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e \u0434\u0432\u0430 \u043a\u043b\u044e\u0447\u0430, \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e \u0443 NXP \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043a\u0438 NTAG21x, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a \u0437\u0430\u043f\u0440\u043e\u0441 NTAG215 pdf \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u0442\u0430\u0448\u0438\u0442.<\/p>\n<p>  \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0442\u0440\u0438 \u0432\u0438\u0434\u0430 \u043c\u0435\u0442\u043e\u043a: NTAG213, NTAG215 \u0438 NTAG216, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u042f \u0432\u044b\u0431\u0440\u0430\u043b NTAG215 \u043d\u0430 540 \u0431\u0430\u0439\u0442 \u043f\u0430\u043c\u044f\u0442\u0438. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>UID: 04 59 44 C9 1A E0 8C<\/li>\n<li>ATQA: 0x4400<\/li>\n<li>SAK: 0x00<\/li>\n<\/ul>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 0x04, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b UID \u043c\u043e\u0436\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f furi_hal_nfc_emulate_nfca \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u0441 \u043e\u0442 \u0432\u0441\u0435\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0442\u0430\u0438\u043b\u0438\u0441\u044c \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 ISO 14443. \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0434\u0432\u0430 \u0431\u0443\u0444\u0435\u0440\u0430: \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0444\u043b\u0430\u0433\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438, \u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0442\u043e \u0444\u043b\u0438\u043f\u043f\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u044b \u0437\u0430 \u043d\u0430\u0441.<\/p>\n<pre><code class=\"cpp\">bool nfc_crocodile_worker_callback(     uint8_t* buff_rx,  \/\/ \u0431\u0443\u0444\u0435\u0440 \u0441 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c\u0438     uint16_t buff_rx_len, \/\/ \u0440\u0430\u0437\u043c\u0435\u0440      uint8_t* buff_tx, \/\/ \u0431\u0443\u0444\u0435\u0440 \u0441 \u0431\u0430\u0439\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c     uint16_t* buff_tx_len, \/\/ \u0440\u0430\u0437\u043c\u0435\u0440     uint32_t* flags, \/\/ \u0444\u043b\u0430\u0433\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438     void* context \/\/ \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 ) {     NfcCrocodileWorker* nfc_crocodile_worker = context;     return 1; } <\/code><\/pre>\n<p>  \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0439 \u0432\u0441\u0435 \u043f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0434\u043e\u0441\u0442\u044c. \u041d\u043e \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043f\u043e\u0447\u0442\u0438 \u0434\u0435\u043d\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u0443\u044e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 READ, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0431\u0430\u0439\u0442. \u041f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, 0x30, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435. \u041e\u0442\u0432\u0435\u0442 \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0442\u0440\u0435\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445. \u0412\u043e\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439:<\/p>\n<pre><code class=\"plaintext\">buff_rx_len = 16 buff_rx =           0x30 0x00 0x03 0x00           0x00 0xA0 0xDE 0x00           0x00 0x74 0x00 0x00           0x00 0x00 0x08 0x00 buff_tx_len = 16 buff_tx =           0x04 0x59 0x44 0x91          0xC9 0x1A 0xE0 0x8C          0xBF 0x48 0x00 0x00          0xE1 0x10 0x3E 0x00 <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 READ 0, \u0430 \u0444\u043b\u0438\u043f\u043f\u0435\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0422\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0435 \u043f\u043e\u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043a\u0438, \u0430 \u0432 \u043b\u043e\u0433\u0430\u0445 \u0444\u043b\u0438\u043f\u043f\u0435\u0440\u0430 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0434\u043e \u0434\u0435\u0441\u044f\u0442\u0438 \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 READ 0. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u0442\u043e \u043b\u043e\u0433\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f. \u0412\u043e\u0442 \u0437\u0430\u0433\u0430\u0434\u043a\u0430: \u0447\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c? \u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 16 \u0431\u0430\u0439\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">buff_rx_len = 16, \u0445\u043e\u0442\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0437\u0430\u044f\u0432\u043b\u044f\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 READ \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430. \u042f \u0441\u043f\u0438\u0441\u0430\u043b \u044d\u0442\u043e \u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0430 \u043b\u0438\u0448\u043d\u0438\u0435 14 \u0431\u0430\u0439\u0442 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b. \u041f\u043e\u0437\u0434\u043d\u0435\u0435 \u044d\u0442\u043e \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0438\u0435\u043b\u043e\u0441\u044c, \u0438 \u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u043b \u043d\u0430 \u043d\u0435\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u0410 \u0437\u0440\u044f. 16 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0432 \u0431\u0438\u0442\u0430\u0445, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, buff_tx_len \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0435 16, \u0430 16*8, \u0442\u043e \u0435\u0441\u0442\u044c 128. \u0422\u0435\u043b\u0435\u0444\u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u043b \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0443 \u0432\u043e\u0441\u044c\u043c\u0443\u044e \u043e\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  \u0422\u0430\u043a\u0430\u044f \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0436\u0435. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 ACK \/ NAK \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 4 \u0431\u0438\u0442\u0430. \u0423\u0437\u043d\u0430\u043b \u044f \u044d\u0442\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b \u00ab\u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438\u00bb \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434.  <\/div>\n<\/p><\/div>\n<p>  \u0414\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 NTAG215 \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<ul>\n<li>READ \u2014 \u0447\u0442\u0435\u043d\u0438\u0435 4 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 X.<\/li>\n<li>FAST_READ \u2014 \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043d\u0430 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0435 [X; Y].<\/li>\n<li>GET_VERSION \u2014 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u0430\u0440\u0442\u0435.<\/li>\n<li>PWD_AUTH \u2014 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 \u043f\u0430\u0440\u043e\u043b\u044c.<\/li>\n<\/ul>\n<p>  \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b, \u0438 \u043d\u0430 \u043d\u0438\u0445 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f NAK. \u0412 \u043c\u0435\u0442\u043a\u0430\u0445 \u043f\u0435\u0440\u0432\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043c\u0435\u0442\u043a\u0443. \u0412 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/9bc\/bc4\/6e0\/9bcbc46e0d7221d611edfb0c63141ebb.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/9bc\/bc4\/6e0\/9bcbc46e0d7221d611edfb0c63141ebb.png\"\/><\/div>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0438\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u2014 \u044d\u0442\u043e \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c, \u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043a\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0441\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0447\u0442\u0435\u043d\u0438\u044f \u043a \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 buff_rx. \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0435 4 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 5 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0430 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u2014 \u043d\u0443\u043b\u044f\u043c\u0438.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, NXP Tag Info \u0431\u0443\u0434\u0443\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043a\u0443 \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u041d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u2014 \u043c\u0435\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u043c \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 NDEF-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  <a name=\"6\"><\/a><font color=\"#EB4247\"><\/p>\n<h2>NDEF-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/h2>\n<p><\/font><br \/>  NDEF \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438. \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 <a href=\"https:\/\/nfc-forum.org\/build\/specifications\">\u0441\u0430\u0439\u0442\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 NFC Forum<\/a>, \u043d\u043e \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u00ab\u0432\u0435\u0441\u0435\u043b\u043e\u0433\u043e \u0420\u043e\u0434\u0436\u0435\u0440\u0430\u00bb, \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c NDEF.<\/p>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/infocenter.nordicsemi.com\/index.jsp?topic=%252Fcom.nordic.infocenter.sdk5.v12.0.0%252Fnfc_ndef_format_dox.html%26anchor=nfc_ndef_format_flags\">Nordic Semiconductor<\/a> \u0435\u0441\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0438\u0445 SDK. \u042d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 NFC Tools \u043d\u0430 Android \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u043c\u0435\u0442\u043a\u0443. \u0410 \u0435\u0441\u043b\u0438 \u043c\u0435\u0442\u043a\u0438 \u043d\u0435\u0442, \u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 NFC, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u0432 \u041e\u0421 \u0444\u043b\u0438\u043f\u043f\u0435\u0440\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/d1f\/142\/b93\/d1f142b939dc147c1c7871f1b67f6f7e.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d1f\/142\/b93\/d1f142b939dc147c1c7871f1b67f6f7e.png\"\/><\/div>\n<p>  \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0447\u0430\u0441\u0442\u0435\u0439: \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438 \u0442\u0435\u043b\u0430. \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043d\u0430\u0431\u043e\u0440 \u0444\u043b\u0430\u0433\u043e\u0432, \u0434\u043b\u0438\u043d\u0443 \u0442\u0438\u043f\u0430 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445, \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0438 \u0434\u043b\u0438\u043d\u0443 \u0442\u0438\u043f\u0430. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043d\u0430 \u0441\u043b\u043e\u0432\u0430\u0445 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c NDEF-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u0442\u043e \u0447\u0443\u0434\u0430 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442. \u0427\u0443\u0439\u043a\u0430 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430, \u0447\u0442\u043e NDEF-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435, \u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u044f \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a \u0438 \u043d\u0435 \u0441\u043c\u043e\u0433. \u0422\u043e\u0433\u0434\u0430 \u044f \u0441\u0442\u0430\u043b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 \u0438 \u0433\u0430\u0434\u0430\u043b \u043f\u043e \u0431\u0430\u0439\u0442\u0430\u043c. \u041f\u0440\u043e\u0437\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 NTAG215 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00abMemory content at delivery\u00bb. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043b\u0435\u0436\u0430\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<pre><code class=\"plaintext\">0x03 0x00 0xFE 0x00 <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 NDEF-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"plaintext\">0x03 0x0B &lt;12 \u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043e> 0xFE <\/code><\/pre>\n<p>  \u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u00ab\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u00bb \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u2014 \u044d\u0442\u043e 0x03 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430, \u043f\u043e\u0442\u043e\u043c \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442 \u0440\u0430\u0437\u043c\u0435\u0440, \u043f\u043e\u0442\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0431\u0430\u0439\u0442 0xFE, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. NTAG215 \u0438 NTAG216 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c 255 \u0431\u0430\u0439\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041a\u0430\u043a \u0442\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440?<\/p>\n<pre><code class=\"plaintext\">0x33 0xFF 0x02 0x63 &lt;611 \u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043e> 0xFE <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a 611 = 0x0263, \u0430 \u00ab\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u00bb \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u0442\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u00ab\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u043c\u00bb \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0433\u0434\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0431\u0430\u0439\u0442\u0430\u043c\u0438. \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f NDEF \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0435\u043b\u0438\u043a\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u044f\u0432\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c mime-type. \u0411\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0442\u0438\u043f\u0430 <a href=\"https:\/\/nfc-forum.org\/build\/assigned-numbers\">NFC Forum well-known type<\/a>. \u0422\u0438\u043f \u00abT\u00bb, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0435\u043a\u0441\u0442, \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/5c2\/bc5\/471\/5c2bc54719b4c80dd6406ba982c5f4e8.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5c2\/bc5\/471\/5c2bc54719b4c80dd6406ba982c5f4e8.png\"\/><\/div>\n<p>  \u0412 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u043a\u043e\u0434 en \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u043a\u043e\u0434 \u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c.<\/p>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0440\u0438\u0448\u043b\u0430 \u043f\u043e\u0437\u0434\u043d\u0435\u0435. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e iOS \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0442\u0438\u043f\u043e\u043c T, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0441\u044b\u043b\u043a\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0438\u043f U. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0431\u044b\u0441\u0442\u0440\u043e: \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a \u0441 query-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c q. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <b>duckduckgo.com\/?q=factory<\/b><\/p>\n<p>  \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u0437\u044f\u0449\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u043e\u0438\u0441\u043a\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0449\u0430\u0435\u0442 \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  \u0412\u043e\u0442 \u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u00ab\u0434\u043e\u043f\u0438\u043b\u0438\u0442\u044c\u00bb \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0438\u0433\u0440\u043e\u0439.<\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/64b7cab6120b821486bf0a92\" data-style=\"\" id=\"64b7cab6120b821486bf0a92\" width=\"\"><\/div>\n<\/div>\n<p>  <i>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0438\u0433\u0440\u044b. <\/i><\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 <a href=\"https:\/\/github.com\/Firemoon777\/NfcCrocodile\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>.<\/p>\n<blockquote><p>\u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u0430\u043a\u043e\u0435 \u00ab\u043d\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb \u0438 \u0431\u0430\u043b\u0443\u0435\u0442\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u0438\u0433\u0440, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/companies\/selectel\/articles\/674172\/\">\u0414\u0435\u043b\u0430\u0435\u043c \u0442\u0435\u0442\u0440\u0438\u0441 \u0432 QR-\u043a\u043e\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/companies\/selectel\/articles\/519010\/\">\u041c\u043e\u0440\u0441\u043a\u043e\u0439 \u0431\u043e\u0439 \u0432 PostgreSQL<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/articles\/419333\/\">\u041a\u0440\u0435\u0441\u0442\u0438\u043a\u0438-\u043d\u043e\u043b\u0438\u043a\u0438 \u043d\u0430 DNS<\/a><\/li>\n<\/ul>\n<\/blockquote>\n<p>  <a name=\"7\"><\/a><font color=\"#EB4247\"><\/p>\n<h2>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435<\/h2>\n<p><\/font>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/articles\/594895\/\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u043e\u0434 Flipper Zero: \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/a> \u043e\u0442 @<a href=\"https:\/\/habr.com\/ru\/users\/vvzvlad\/\">vvzvlad<\/a> (FW: 0.40.1)<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/articles\/710700\/\">\u041f\u0438\u0448\u0435\u043c \u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f Flipper Zero<\/a> \u043e\u0442 <a href=\"https:\/\/habr.com\/ru\/users\/danilrom\/\" class=\"user_link\">danilrom<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/articles\/700378\/\">\u041f\u0438\u0448\u0435\u043c Hex Viewer \u0434\u043b\u044f Flipper Zero<\/a> \u043e\u0442 <a href=\"https:\/\/habr.com\/ru\/users\/qtros\/\" class=\"user_link\">QtRoS<\/a> (FW: 0.70.0)<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \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\/companies\/selectel\/articles\/742438\/\"> https:\/\/habr.com\/ru\/companies\/selectel\/articles\/742438\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/174\/dc4\/cf7\/174dc4cf79e72141fc4214d736c1638b.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/174\/dc4\/cf7\/174dc4cf79e72141fc4214d736c1638b.png\"\/><\/div>\n<p>  \u041c\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0433\u0440\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043d\u0435\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0440\u0443\u0435\u0442. \u041c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u0439 \u0438\u0434\u0435\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u0443 \u00ab\u043a\u0440\u043e\u043a\u043e\u0434\u0438\u043b\u00bb, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0441\u043b\u043e\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043d\u0442\u043e\u043c\u0438\u043c\u0443, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 NFC. \u041f\u0440\u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043e\u0442\u0434\u0430\u0435\u0442 \u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443. \u0418\u0433\u0440\u043e\u043a \u0432\u0438\u0434\u0438\u0442 \u0441\u043b\u043e\u0432\u043e \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438 \u043b\u0435\u0433\u043a\u043e\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 NFC-\u043c\u0435\u0442\u043a\u0438 \u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>  \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0438\u0437 <a href=\"https:\/\/selectel.ru\/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=career_article_flipper_190723_content\">Selectel<\/a> \u043e\u0434\u043e\u043b\u0436\u0438\u043b\u0438 \u043c\u043d\u0435 Flipper Zero, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f NFC-\u043c\u0435\u0442\u043a\u043e\u0439 \u0441 \u043b\u044e\u0431\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c. \u0412 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Flipper Zero. \u041e\u0431\u0437\u043e\u0440, \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043e\u0431\u0437\u043e\u0440, \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c IDE \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043e\u0431\u0437\u043e\u0440 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u2026<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 GUI-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Flipper Zero, \u043f\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 NFC \u0438 NDEF, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0435 \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0435.  <\/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-350498","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/350498","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=350498"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/350498\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=350498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=350498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=350498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}