{"id":467441,"date":"2025-07-18T21:22:53","date_gmt":"2025-07-18T21:22:53","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=467441"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=467441","title":{"rendered":"<span>\u0420\u0430\u0437\u0431\u043e\u0440 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 AI CTF \u043d\u0430 Positive Hack Days Fest. \u0427\u0430\u0441\u0442\u044c 2<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e76\/fcf\/9e3\/e76fcf9e3b166b9a57e78401b54a0e9f.jpg\" width=\"1060\" height=\"558\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e76\/fcf\/9e3\/e76fcf9e3b166b9a57e78401b54a0e9f.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e76\/fcf\/9e3\/e76fcf9e3b166b9a57e78401b54a0e9f.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0432\u0442\u043e\u0440\u0443\u044e \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u0430 AI CTF 2025. <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/pt\/articles\/923894\/\" rel=\"noopener noreferrer nofollow\">\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/a><\/p>\n<p>\u0417\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u044c\u0442\u0435\u0441\u044c \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 ML-\u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435.<\/p>\n<blockquote>\n<p><em>\u0421\u0442\u0430\u0442\u044c\u044f \u043d\u043e\u0441\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u0438\u043b\u0438 \u043f\u0440\u0438\u0437\u044b\u0432\u043e\u043c \u043a \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u0440\u0430\u0432\u043d\u044b\u0445 \u0434\u0435\u044f\u043d\u0438\u0439. \u041d\u0430\u0448\u0430 \u0446\u0435\u043b\u044c \u2014 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0447\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0434\u0430\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0437\u0430\u0449\u0438\u0442\u0435 \u0441\u0432\u043e\u0435\u0439 \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u0410\u0432\u0442\u043e\u0440\u044b \u043d\u0435 \u043d\u0435\u0441\u0443\u0442 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/em><\/p>\n<\/blockquote>\n<h4>Medium \u2014 VoiceGuard [biometrics][60%ML]<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">Author: Alexander Migutskiy (<a href=\"https:\/\/t.me\/amg_core\" rel=\"noopener noreferrer nofollow\">@amg_core<\/a>), <a href=\"https:\/\/bit.ly\/40BqZYv\" rel=\"noopener noreferrer nofollow\">PT ML Team<\/a><\/p>\n<p align=\"left\">The task is simple: just pass two checks.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12a\/224\/507\/12a2245079ee5b3039c853a0aa40b809.png\" width=\"1512\" height=\"999\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/12a\/224\/507\/12a2245079ee5b3039c853a0aa40b809.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12a\/224\/507\/12a2245079ee5b3039c853a0aa40b809.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<blockquote>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 \u043d\u0430\u00a0\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0443\u044e \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u2014 \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0438\u0441 \u0441\u00a0\u0441\u0435\u043c\u043f\u043b\u043e\u043c \u0440\u0435\u0447\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043e\u043d\u044b, \u0446\u0435\u043b\u0435\u0432\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043d\u0435\u0441\u0442\u0438 \u044d\u0442\u0438\u043c \u0433\u043e\u043b\u043e\u0441\u043e\u043c, \u0438 \u043f\u043e\u043b\u0435\u043c \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0438.<\/p>\n<\/blockquote>\n<h4>\u0421\u0442\u0435\u043a<\/h4>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0443 \u0432\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0430\u043f\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c\u044e <a href=\"https:\/\/github.com\/openai\/whisper\" rel=\"noopener noreferrer nofollow\">Whisper<\/a>. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0438\u0437\u043d\u0435\u0441\u0451\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. <\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0441\u0447\u0451\u0442 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/huggingface.co\/sentence-transformers\/all-MiniLM-L6-v2\" rel=\"noopener noreferrer nofollow\">all\u2011MiniLM\u2011L6-v2<\/a>. \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433 \u0442\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441\u00a0\u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u043c \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0422\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0438\u0437\u043d\u0435\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0443\u044e \u0444\u0440\u0430\u0437\u0443, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044f 100% \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0447\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u043e, \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0435\u043b\u044c\u044e <a href=\"https:\/\/github.com\/LAION-AI\/CLAP\" rel=\"noopener noreferrer nofollow\">CLAP<\/a> \u0434\u043b\u044f\u00a0\u0433\u043e\u043b\u043e\u0441\u0430.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u0439\u00a0<\/h4>\n<p>\u041f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u043e\u043b\u043e\u0441\u0430 \u0438\u0437\u00a0\u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u0430, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0441\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0443.<\/p>\n<p>\u041c\u044b \u043f\u0440\u043e\u0432\u0435\u043b\u0438 <a href=\"https:\/\/github.com\/VinterMute\/audiodeep_research\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/a> \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0440\u0435\u0447\u0438, \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e\u00a0<a href=\"https:\/\/github.com\/SWivid\/F5-TTS\" rel=\"noopener noreferrer nofollow\">f5-tts<\/a> \u0434\u0430\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/af7\/e8b\/bb0\/af7e8bbb08646c93053d8b3aa6d5fde7.png\" width=\"1600\" height=\"898\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/af7\/e8b\/bb0\/af7e8bbb08646c93053d8b3aa6d5fde7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/af7\/e8b\/bb0\/af7e8bbb08646c93053d8b3aa6d5fde7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fc5\/789\/46d\/fc578946ddc7cca497784da61d452bb2.jpeg\" width=\"1144\" height=\"1280\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/fc5\/789\/46d\/fc578946ddc7cca497784da61d452bb2.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fc5\/789\/46d\/fc578946ddc7cca497784da61d452bb2.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0438 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439, \u043f\u043e\u043b\u0443\u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044e: \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430\u0449\u0438\u0442\u0430 \u043d\u0435\u00a0\u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438, \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043e\u043d\u043b\u0430\u0439\u043d\u2011\u043a\u043b\u043e\u043d\u044b \u0433\u043e\u043b\u043e\u0441\u0430, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0432 \u0438\u0445. \u041c\u0435\u0442\u043e\u0434 \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u0438\u0439 \u0438 \u043d\u0435\u00a0\u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0439, \u043d\u043e\u00a0\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043c.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f77\/23d\/b0d\/f7723db0d6148ed56cd66200856d7968.jpeg\" width=\"1280\" height=\"407\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f77\/23d\/b0d\/f7723db0d6148ed56cd66200856d7968.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f77\/23d\/b0d\/f7723db0d6148ed56cd66200856d7968.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u042d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0430\u0441\u044c \u043d\u0430 <a href=\"https:\/\/www.youtube.com\/watch?v=yBn0K2d4bzQ\" rel=\"noopener noreferrer nofollow\">\u0425\u0430\u043a\u0435\u0440\u0441\u043a\u043e\u043c \u043a\u0440\u0443\u0436\u043a\u0435<\/a>.<\/p>\n<h4>Medium \u2014 Athrad Edhellen [coding][visual][80%ML]<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">Author: Eugene Krokhalev (<a href=\"https:\/\/t.me\/rutsh\" rel=\"noopener noreferrer nofollow\">@rutsh<\/a>), <a href=\"https:\/\/spbctf.com\/\" rel=\"noopener noreferrer nofollow\">SPbCTF<\/a><\/p>\n<p align=\"left\">Prove you are a true Firstborn!<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e62\/ba0\/ed8\/e62ba0ed8f22f12ff997a1c57da9ffef.png\" width=\"1505\" height=\"896\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e62\/ba0\/ed8\/e62ba0ed8f22f12ff997a1c57da9ffef.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e62\/ba0\/ed8\/e62ba0ed8f22f12ff997a1c57da9ffef.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<blockquote>\n<p>\u041d\u0430\u0441 \u043f\u0440\u043e\u0441\u044f\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c 100\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0441\u00a0\u0447\u0438\u0441\u043b\u0430\u043c\u0438, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u044c\u0444\u0438\u0441\u043a\u043e\u0439 \u043f\u0438\u0441\u044c\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0422\u0435\u043d\u0433\u0432\u0430\u0440. \u041d\u0430\u00a0\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0435\u00a0\u0431\u043e\u043b\u044c\u0448\u0435 5\u00a0\u043c\u0438\u043d\u0443\u0442. \u041f\u043e\u00a0\u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0430\u0439\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u0447\u0435\u043b\u0435\u043d\u0434\u0436 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<\/blockquote>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u00a0\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u044d\u043b\u044c\u0444\u0438\u0439\u0441\u043a\u0438\u0445 \u0447\u0438\u0441\u0435\u043b (\u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0430\u2011\u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430, \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u043f\u043e\u0441\u043b\u0435 12-\u0439 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438\u00a0\u2014 <a href=\"https:\/\/www.tecendil.com\/tengwar-handbook\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.tecendil.com\/tengwar\u2011handbook\/<\/a>):<\/p>\n<ul>\n<li>\n<p>\u0447\u0438\u0441\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 12-\u0440\u0438\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u0446\u0438\u0444\u0440\u00a0\u2014 little\u2011endian (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0443\u0442 \u043c\u0435\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0435 \u0440\u0430\u0437\u0440\u044f\u0434\u044b).<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0439\u0442\u0438 100 \u044d\u043b\u044c\u0444\u0438\u0439\u0441\u043a\u0438\u0445 \u043a\u0430\u043f\u0447, \u043e\u0431\u0443\u0447\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u0438\u0445 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f. \u0414\u043b\u044f\u00a0\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442: \u043f\u0430\u0440\u044b \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430+\u0442\u0435\u043a\u0441\u0442. \u0421\u00a0\u0441\u0430\u0439\u0442\u0430 \u043f\u043e\u00a0\u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e \u043f\u0438\u0441\u044c\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0422\u0435\u043d\u0433\u0432\u0430\u0440 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0448\u0440\u0438\u0444\u0442\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438\u0445 \u0434\u043b\u044f\u00a0\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 (\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432\u00a0\u044d\u0442\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435: <a href=\"https:\/\/gist.github.com\/v0s\/1b92abeec3ec571333754544914b50c9#file-ds-prepare-py\" rel=\"noopener noreferrer nofollow\">ds\u2011prepare.py<\/a>).<\/p>\n<p>\u0412\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0439 resnet-18\u00a0\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0443\u00a0\u043d\u0435\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0449\u0438\u0435 \u0433\u043e\u043b\u043e\u0432\u044b (\u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 6\u00a0\u0446\u0438\u0444\u0440 \u043a\u0430\u043f\u0447\u0438).<\/p>\n<pre><code class=\"python\">import torch, torch.nn as nn  from torchvision import models  class DigitRecognizer(nn.Module):  \u00a0\u00a0\u00a0\u00a0def init(self, num_classes=12, num_digits=6): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super().__init__() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0base = models.resnet18(weights=models.ResNet18_Weights.IMAGENET1K_V1) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self.backbone = nn.Sequential(*list(base.children())[:-2])\u00a0 # remove avgpool &amp; fc \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self.avgpool = nn.AdaptiveAvgPool2d((1,1)) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self.heads = nn.ModuleList([ \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nn.Linear(512, num_classes) for  in range(numdigits)  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])  \u00a0\u00a0\u00a0\u00a0def forward(self, x): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0x = self.backbone(x) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0x = self.avgpool(x) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0x = torch.flatten(x, 1) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [head(x) for head in self.heads]<\/code><\/pre>\n<p>\u041f\u0440\u0438\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u0435\u00a0\u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u00a0\u0431\u044b\u043b \u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u043c \u043a\u00a0\u043f\u043e\u043c\u0435\u0445\u0430\u043c.<\/p>\n<pre><code class=\"python\">import kornia.augmentation as K  class KorniaAugmentations(nn.Module):  \u00a0\u00a0\u00a0\u00a0def init(self): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super().__init__() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self.augment = nn.Sequential( \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0K.RandomAffine(degrees=5, translate=0.02, scale=(0.95, 1.05), p=0.8), \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0K.RandomRotation(degrees=3.0, p=0.5), \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0K.ColorJitter(0.1, 0.1, 0.1, 0.05, p=0.5), \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0K.RandomErasing(scale=(0.01, 0.05), ratio=(0.3, 3.3), p=0.4)  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0\u00a0def forward(self, x): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return self.augment(x)<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 100 000\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u044b \u044d\u043f\u043e\u0445, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e, \u0431\u043b\u0438\u0437\u043a\u043e\u0439 \u043a 100%.<\/p>\n<pre><code class=\"python\">def train_epoch(model, dataloader, optimizer, criterion, device, augmenter=None):  \u00a0\u00a0\u00a0\u00a0model.train() \u00a0\u00a0\u00a0\u00a0N, total_loss = 0, 0 \u00a0\u00a0\u00a0\u00a0progress = tqdm.tqdm(dataloader) \u00a0\u00a0\u00a0\u00a0     for images, labels in progress: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0N += len(images) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0images, labels = images.to(device), labels.to(device) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if augmenter is not None: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0images = augmenter(images) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0outputs = model(images) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0loss = sum(criterion(out, labels[:, i]) for i, out in enumerate(outputs)) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0optimizer.zero_grad() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0loss.backward() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0optimizer.step() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0total_loss += loss.item() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0progress.set_description(f\"N={N}; loss={total_loss\/N:.4f}\") \u00a0\u00a0\u00a0\u00a0return total_loss \/ N<\/code><\/pre>\n<p>\u041f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436. \u041e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043a\u0430\u043f\u0447\u0443, \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0451\u0442 \u0435\u0451 \u043d\u0430\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0438 \u043f\u043e\u0441\u0442\u0438\u0442 \u043e\u0442\u0432\u0435\u0442 (\u0438 \u0442\u0430\u043a \u0434\u043e 100\u00a0\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439). \u0412\u043e\u0442 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f: <a href=\"https:\/\/gist.github.com\/v0s\/1b92abeec3ec571333754544914b50c9#file-exploit-py\" rel=\"noopener noreferrer nofollow\">exploit.py<\/a><\/p>\n<blockquote>\n<p><strong>\u0420\u0435\u043c\u0430\u0440\u043a\u0430.<\/strong> \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c js\u2011\u043a\u043e\u0434, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043a\u0430\u043f\u0447\u0438 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0448\u0440\u0438\u0444\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u0414\u0430\u043d\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438 \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u00a0\u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438\u0437\u00a0\u0448\u0440\u0438\u0444\u0442\u043e\u0432 \u043d\u0430\u00a0\u043d\u0430\u0448 \u0432\u044b\u0431\u043e\u0440.<\/p>\n<\/blockquote>\n<h4>Hard \u2014 Privnote [llm][web][65%CTF]<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">Author: Lev Reznichenko (<a href=\"https:\/\/t.me\/mkvfaa\" rel=\"noopener noreferrer nofollow\">@mkvfaa<\/a>), <a href=\"https:\/\/spbctf.com\/\" rel=\"noopener noreferrer nofollow\">SPbCTF<\/a><\/p>\n<p align=\"left\">The idea behind Privnote is simple: you create a short note, the recipient reads it once, and the note is forever gone. The backend only stores the ciphertext, and all the encryption happens entirely on the client side.<\/p>\n<p align=\"left\">But here\u201ds the catch\u2014I have a tip that the admin of this so\u2011called \u201cprivate note\u201d service left a note in his own account. That note contains the IP address of his personal file stash where he keeps his private documents. And we really need to doxx him! Maybe you can dig it up?<\/p>\n<p align=\"left\">Source code: <a href=\"https:\/\/aictf.phdays.fun\/files\/privnote_f8b4cff.tar.gz\" rel=\"noopener noreferrer nofollow\"><strong>privnote_f8b4cff.tar.gz<\/strong><\/a><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2b9\/a3c\/08a\/2b9a3c08a6a5afe4d8b2b9d1fad14902.png\" width=\"1600\" height=\"730\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2b9\/a3c\/08a\/2b9a3c08a6a5afe4d8b2b9d1fad14902.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2b9\/a3c\/08a\/2b9a3c08a6a5afe4d8b2b9d1fad14902.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<blockquote>\n<p>\u0421\u0435\u0440\u0432\u0438\u0441 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u00ab\u0441\u0430\u043c\u043e\u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u044e\u0449\u0438\u0435\u0441\u044f\u00bb \u0437\u0430\u043c\u0435\u0442\u043a\u0438. \u0412\u0441\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u00a0\u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0441\u0435\u0440\u0432\u0435\u0440 \u0445\u0440\u0430\u043d\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u0410\u0434\u043c\u0438\u043d \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u0432\u00a0\u0441\u0432\u043e\u0435\u0439 \u0443\u0447\u0451\u0442\u043a\u0435, \u0432\u00a0\u043d\u0435\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f IP\u2011\u0430\u0434\u0440\u0435\u0441 \u0435\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0441\u00a0\u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043a\u0430\u043d \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430. \u0426\u0435\u043b\u044c\u00a0\u2014 \u0435\u0433\u043e \u043d\u0430\u0439\u0442\u0438.<\/p>\n<\/blockquote>\n<p>\u041a \u0437\u0430\u0434\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d \u043a\u043e\u0434 \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0438 \u0438\u0437\u00a0\u043a\u043e\u0434\u0430 \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u0440\u0443\u0447\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 <code>\/api\/search\/similar<\/code> \u0443\u044f\u0437\u0432\u0438\u043c\u0430 \u043a\u00a0SQL\u2011\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438. API-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 SQL\u2011\u0437\u0430\u043f\u0440\u043e\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c JSON embedding \u0431\u0435\u0437\u00a0\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0438 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<pre><code class=\"python\">@app.post(\"\/search\/similar\") async def search_similar():  \u00a0\u00a0\u00a0\u00a0try: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request_data = await request.json() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0embedding = request_data.get('embedding', [])  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0query = f\"\"\"SELECT id, title, cypher_text, created_at, is_viewed, embedding, embedding &lt;=&gt; '{embedding}' AS distance FROM notes WHERE owner_id = '{current_user.id}' AND is_deleted = false AND embedding IS NOT NULL ORDER BY distance\"\"\"  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result = db.execute(text(query))<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438:<br \/><code>{\"embedding\": \"[0.0, 0.0,...,0.0]' as distance from notes -- -\"}<\/code> <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u043a\u0440\u0430\u0444\u0442\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433 \u0440\u0443\u043a\u0430\u043c\u0438, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c:<\/p>\n<pre><code class=\"python\">\u00a0 \u00a0 headers = { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\": f\"Bearer {token}\", \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Content-Type\": \"application\/json\" \u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0embeddings = [0.0]*1536 \u00a0\u00a0\u00a0\u00a0payload =\u00a0 {\"embedding\": f\"{embeddings}' as distance from notes --\"}  \u00a0\u00a0\u00a0\u00a0response = requests.post( \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0f\"{BASE_URL}\/search\/similar\", \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0headers=headers, \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0json=payload \u00a0\u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0\u00a0results = response.json()<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043c\u044b \u0438\u0437 \u043f\u043e\u0438\u0441\u043a\u0430 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435\u0441\u044f \u0432\u00a0\u0411\u0414, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u043d\u0430\u043c. \u0422\u0430, \u0447\u0442\u043e\u00a0\u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u0438\u043c\u0435\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u00abTop secret: IP address of my file stash server\u00bb \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043e\u043c. \u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432\u00a0\u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u043e\u043a \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u00a0\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0438 \u043c\u044b \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u043c \u0435\u0451 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c.<\/p>\n<p>\u0422\u0435\u043a\u0441\u0442 \u0437\u0430\u043f\u0438\u0441\u043a\u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d, \u043d\u043e\u00a0\u0438\u0437 \u0431\u0430\u0437\u044b \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c embedding \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u0430\u043c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430. \u0418\u0437 \u043a\u043e\u0434\u0430 \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d (text-embedding-ada-002) \u2014 \u0438 \u043d\u0430\u043c \u0434\u0430\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u0430\u043c\u0430 \u0440\u0443\u0447\u043a\u0430 \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0430 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0434\u0438\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434.<\/p>\n<p>\u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0437\u0430\u043f\u0438\u0441\u043a\u0435 \u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0436\u0438\u0442 IP\u2011\u0430\u0434\u0440\u0435\u0441, \u0430\u00a0\u0437\u043d\u0430\u0447\u0438\u0442, \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u00a0\u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c:<\/p>\n<ul>\n<li>\n<p>\u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c IP \u043d\u0430 4\u00a0\u043e\u043a\u0442\u0435\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435 256\u00a0\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043e\u043a\u0442\u0435\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u00a0\u0442\u0435\u043a\u0441\u0442\u044b \u0432\u0438\u0434\u0430 X. \u0438\u043b\u0438\u00a0X.Y. \u0438\u043b\u0438\u00a0X.Y.Z.;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0438 \u044d\u0442\u0438 \u0442\u0435\u043a\u0441\u0442\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0445 embedding;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c embedding \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 \u0441\u00a0\u0438\u0441\u043a\u043e\u043c\u044b\u043c \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u043c \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0430\u0434\u043c\u0438\u043d\u0430\u00a0\u2014 \u043f\u043e\u00a0\u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043d\u043e\u043c\u0443 \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u00a0\u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 4\u00a0\u043e\u043a\u0442\u0435\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442: <a href=\"https:\/\/gist.github.com\/v0s\/67bc48865451b871a4ed264045f5ecfd\" rel=\"noopener noreferrer nofollow\">https:\/\/gist.github.com\/v0s\/67bc48\u00a0865\u00a0451b871a4ed264\u00a0045f5ecfd<\/a> <\/p>\n<\/blockquote>\n<p>\u041f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0432\u0435\u0440\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u043d\u043e\u00a0\u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u043c\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u043e\u043a\u0442\u0435\u0442\u043e\u0432:<\/p>\n<pre><code class=\"python\">Top 5 guesses for octet 1: \u00a0\u00a01. 60 (score: 0.15240979617062322) \u00a0\u00a02. 38 (score: 0.16108681462509344) \u00a0\u00a03. 40 (score: 0.1656382299536222) \u00a0\u00a04. 36 (score: 0.16714874380983824) \u00a0\u00a05. 42 (score: 0.17027767767314617)  Selected: 60  Top 5 guesses for octet 2: \u00a0\u00a01. 217 (score: 0.08601186993932086) \u00a0\u00a02. 216 (score: 0.09853250863613505) \u00a0\u00a03. 218 (score: 0.10299188026449557) \u00a0\u00a04. 215 (score: 0.10336019836703159) \u00a0\u00a05. 192 (score: 0.10594563283983671)  Selected: 217  Top 5 guesses for octet 3: \u00a0\u00a01. 38 (score: 0.05120576066293814) \u00a0\u00a02. 134 (score: 0.05400289479795939) \u00a0\u00a03. 94 (score: 0.054048871842033) \u00a0\u00a04. 37 (score: 0.054609333839567675) \u00a0\u00a05. 89 (score: 0.05491877708427473)  Selected: 38  Top 5 guesses for octet 4: \u00a0\u00a01. 134 (score: 0.0370515125639046) \u00a0\u00a02. 84 (score: 0.03890279482421943) \u00a0\u00a03. 133 (score: 0.039070599624769775) \u00a0\u00a04. 123 (score: 0.0394772259272288) \u00a0\u00a05. 129 (score: 0.03970103064766961)  Selected: 134  ============================================  Guessed IP address: 60.217.38.134  ============================================<\/code><\/pre>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u043a\u0442\u0435\u0442\u043e\u0432 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e: \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c 24\u00a0IP-\u0430\u0434\u0440\u0435\u0441\u0430 (\u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u043a\u0442\u0435\u0442\u043e\u0432), \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0432\u0435\u0440\u043d\u044b\u0439: <a href=\"http:\/\/38.60.217.134\/\" rel=\"noopener noreferrer nofollow\">http:\/\/38.60.217.134\/<\/a><\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0443 \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0442\u0430\u043c \u0441\u043a\u0430\u043d \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/050\/9a6\/915\/0509a691561e6d577f9259eec1a6dfb8.png\" width=\"1024\" height=\"1536\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/050\/9a6\/915\/0509a691561e6d577f9259eec1a6dfb8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/050\/9a6\/915\/0509a691561e6d577f9259eec1a6dfb8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>Hard \u2014 LeMUN [web][biometrics][90%ML]<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">Author: Gleb Kumichev (<a href=\"https:\/\/t.me\/gleb_kumichev\" rel=\"noopener noreferrer nofollow\">@gleb_kumichev<\/a>), <a href=\"https:\/\/bit.ly\/40BqZYv\" rel=\"noopener noreferrer nofollow\">PT ML Team<\/a><\/p>\n<p align=\"left\">LeMUN Technologies recently launched their new <strong>Face Authentication System<\/strong>, quickly adopted by government agencies for critical access control.<\/p>\n<p align=\"left\">Demo instance of their system was easy to hack, and it seems like they rolled out the same admin account onto all their instances.<\/p>\n<p align=\"left\">Get access to the Government Personal Data Portal protected with their authentication. The vulnerability that is still present on the demo instance, isn\u201dt there on the govt portal.<\/p>\n<p align=\"left\">Hint added at 17:02\u00a0UTC\u00a0\u2014 It has been disclosed that LeMUN uses this snippet for their demo request handing: <a href=\"http:\/\/pastebin.com\/gQQReVTW\" rel=\"noopener noreferrer nofollow\">pastebin.com\/gQQReVTW<\/a><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u041f\u043e\u00a0\u043b\u0435\u0433\u0435\u043d\u0434\u0435, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f LeMUN \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043c\u043d\u043e\u0433\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0432\u00a0\u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0444\u043b\u0430\u0433\u0430 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u00a0\u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435.<\/p>\n<\/blockquote>\n<p>\u0414\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e\u0441\u044c 2\u00a0\u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0438\u0441\u0430: \u043e\u0434\u0438\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 LeMUN \u0441\u00a0\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0432\u0442\u043e\u0440\u043e\u0439\u00a0\u2014 \u0433\u043e\u0441. \u0441\u0435\u0440\u0432\u0438\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u0442\u0443\u00a0\u0436\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0441\u044f \u0441\u00a0\u0446\u0435\u043b\u0435\u0432\u044b\u043c, \u043c\u0435\u0440\u043e\u0439 \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0430\u00a0\u0431\u044b\u043b\u0430 cosine similarity.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/961\/038\/c61\/961038c619a6ec38a55d109bcf2107b1.png\" width=\"1232\" height=\"940\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/961\/038\/c61\/961038c619a6ec38a55d109bcf2107b1.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/961\/038\/c61\/961038c619a6ec38a55d109bcf2107b1.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u00a0\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u00a0\u043b\u0435\u043d\u0434\u0438\u043d\u0433\u043e\u043c, \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u0438\u00a0\u043f\u043e\u043c\u043e\u0449\u0438 ML \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u00a0\u043b\u0438\u0446\u0430, \u0441\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043d\u0430\u00a0\u0441\u0430\u0439\u0442\u0435 \u0433\u043e\u0441. \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043a\u0430\u043a\u00a0\u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u043a\u0430\u043a\u00a0\u0435\u0435 \u0440\u0435\u0448\u0438\u043b\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438.<\/p>\n<h4>\u0412\u0437\u043b\u043e\u043c \u043b\u0435\u043d\u0434\u0438\u043d\u0433\u0430 LeMUN<\/h4>\n<p>\u041f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0437\u0430\u0434\u0430\u0447\u0438. \u0421\u0435\u0440\u0432\u0438\u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c Command injection, \u043f\u0440\u0438\u00a0\u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u0442\u043e\u043c, \u043a\u0430\u043a\u00a0\u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f: \u043a\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430 \u043b\u0438\u0446\u0430, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043a\u0430\u0447\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0441\u00a0\u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430\u043c\u0438 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043e\u0434\u0438\u043d \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0434\u043c\u0438\u043d\u043e\u043c.<\/p>\n<p>RCE-\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c\u00a0\u0431\u044b\u043b\u0430 \u0432\u00a0\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u043f\u043e\u0447\u0442\u044b \u0432\u00a0\u0444\u043e\u0440\u043c\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u0435\u043c\u043e:<\/p>\n<pre><code class=\"python\">@app.post(\"\/submit_request\") async def submit_request(email: str = Form(...)): \u00a0\u00a0\u00a0domain = email.split(\"@\")[-1] \u00a0\u00a0\u00a0cmd = f\"timeout 1 ping -n -c 1 -W 0.001 {domain}\" \u00a0\u00a0\u00a0try: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result = subprocess.run(cmd, shell=True, timeout=2)<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0432 \u0432\u00a0\u043f\u043e\u043b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0435\u043c\u0435\u0439\u043b <code>some@mail.ru ; ls -R<\/code>. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u00a0\u043b\u043e\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 API-\u0440\u0443\u0447\u043a\u0435, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 swagger \u2014 \u0438\u043b\u0438 \u0432\u0441\u043b\u0435\u043f\u0443\u044e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c reverse shell, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043d\u0430 \u043d\u0430\u0448 IP \u0438 \u0434\u0430\u0441\u0442 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u0414\u043e\u0431\u0438\u0432\u0448\u0438\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434, \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/35d\/df0\/8b1\/35ddf08b1afd92f8701b3f8058090103.png\" width=\"717\" height=\"846\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/35d\/df0\/8b1\/35ddf08b1afd92f8701b3f8058090103.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/35d\/df0\/8b1\/35ddf08b1afd92f8701b3f8058090103.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u0411\u0414 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432 \u043b\u0438\u0446, \u043e\u0434\u0438\u043d \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u043e\u0433\u0438\u043d\u0443 Admin, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u043a\u00a0\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438 (google\/vit-base-patch16-224-in21k), \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u00a0HuggingFace.<\/p>\n<h4>\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h4>\n<p>\u0412\u043e\u043e\u0440\u0443\u0436\u0438\u0432\u0448\u0438\u0441\u044c \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u043c \u0438 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u0440\u043e\u0439\u0442\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e. \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u044f \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433 \u0438 \u043c\u043e\u0434\u0435\u043b\u044c\u00a0\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u043e\u00a0\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0434\u0430\u0436\u0435 \u0441\u00a0\u0432\u044b\u0441\u043e\u043a\u0438\u043c \u043f\u043e\u0440\u043e\u0433\u043e\u043c \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0430\u00a0\u2014 \u0432\u043f\u043e\u043b\u043d\u0435. \u0414\u043b\u044f\u00a0\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043f\u0440\u0438\u00a0\u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b:<\/p>\n<ul>\n<li>\n<p>\u041c\u0435\u0442\u043e\u0434\u043e\u043c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u00a0\u0431\u044b\u043b \u0431\u043b\u0438\u0437\u043e\u043a \u043a\u00a0\u0446\u0435\u043b\u0435\u0432\u043e\u043c\u0443. \u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043d\u0435\u00a0\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u00a0\u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u043f\u043e\u0434\u0445\u043e\u0434. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d \u043d\u0435\u00a0\u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0448\u0443\u043c \u0438 \u043b\u044e\u0431\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0435\u0433\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/603\/991\/cfc\/603991cfcfced1c304cdf7485e09121d.png\" width=\"1222\" height=\"592\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/603\/991\/cfc\/603991cfcfced1c304cdf7485e09121d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/603\/991\/cfc\/603991cfcfced1c304cdf7485e09121d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<div class=\"floating-image\">\n<p>\u0412\u00a0\u0437\u0430\u0434\u0430\u0447\u0435 \u0442\u0430\u043a\u0436\u0435\u00a0\u0431\u044b\u043b\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u043b\u0430\u0433 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u043e\u0441\u044c \u043d\u0430\u00a0\u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0434\u043d\u043e\u0433\u043e\u00a0\u043b\u0438\u0446\u0430 \u043f\u0440\u0438\u00a0\u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0435\u0442\u0435\u043a\u0446\u0438\u0438. \u041f\u0440\u0438\u00a0\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043b\u0438\u0446\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u00a0\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435.<\/p>\n<\/div>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e\u00a0\u2014 Adversarial Attack\u00a0\u2014 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c\u00a0\u043b\u0438\u0446\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u00a0\u0431\u044b\u043b \u0431\u043b\u0438\u0437\u043e\u043a \u043a\u00a0\u0446\u0435\u043b\u0435\u0432\u043e\u043c\u0443. \u0414\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u00a0\u043b\u0438\u0446\u043e \u043d\u0430\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438, \u043d\u043e\u00a0\u0441\u0430\u043c\u043e\u00a0\u043b\u0438\u0446\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c\u0441\u044f \u043a\u00a0\u0446\u0435\u043b\u0435\u0432\u043e\u043c\u0443 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0443. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u00a0\u2014 \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u043a\u0438 \u0438\u0437\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0441\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c. \u0414\u043b\u044f\u00a0\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u00a0\u043b\u0438\u0446\u043e\u043c, \u043f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 loss-\u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0438\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u00a0vgg \u0438\u043b\u0438\u00a0perceptual loss \u0438\u043b\u0438\u00a0\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044e, \u0441\u00a0\u0442\u0435\u043c \u0447\u0442\u043e\u0431\u044b \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u00a0\u0431\u044b\u043b\u043e \u0431\u043b\u0438\u0437\u043a\u043e \u043a\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443. <\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u0440\u0435\u0448\u0438\u0432\u0448\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0443 \u0442\u0430\u043a \u0438\u043b\u0438\u00a0\u0438\u043d\u0430\u0447\u0435 \u043f\u043e\u0448\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u044d\u0442\u0438\u043c \u043f\u0443\u0442\u0435\u043c, \u043d\u0438\u0436\u0435 \u0432\u0441\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1f1\/33a\/e7c\/1f133ae7c124b64a5127633696c9089f.png\" width=\"1222\" height=\"370\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1f1\/33a\/e7c\/1f133ae7c124b64a5127633696c9089f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1f1\/33a\/e7c\/1f133ae7c124b64a5127633696c9089f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0430\u00a0\u0432\u0441\u0435\u0445 \u0444\u043e\u0442\u043e \u0432\u00a0\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0438\u043b\u0438\u00a0\u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0432\u0438\u0434\u043d\u044b \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u00ab\u043e\u0431\u043c\u0430\u043d\u0443\u0442\u044c\u00bb \u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0438 \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434: \u0437\u043d\u0430\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0441\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0438\u0445 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430\u043c\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0438\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0438\u043b\u0438\u00a0\u0438\u0437\u00a0\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432 \u0441\u00a0\u043b\u0438\u0446\u0430\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u00a0CelebA. \u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0434\u0435\u043a\u043e\u0434\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u00a0\u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0443. \u0414\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u0435\u0437\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u044e\u043a\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043c\u044b\u0442\u044b\u043c\u0438 \u0441\u00a0\u043d\u0435\u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0441\u043a\u043e\u0440\u043e\u043c.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5d5\/ad4\/81b\/5d5ad481b0347e6146eb07a5a8a1a708.png\" width=\"1220\" height=\"602\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/5d5\/ad4\/81b\/5d5ad481b0347e6146eb07a5a8a1a708.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5d5\/ad4\/81b\/5d5ad481b0347e6146eb07a5a8a1a708.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c \u043a\u0430\u043a\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435,\u00a0\u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e latent\u2011\u0442\u0435\u043d\u0437\u043e\u0440 \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u00a0\u043e\u0447\u0435\u043d\u044c \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u043c\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a\u00a0\u0436\u0435\u043b\u0435\u0437\u0443, \u0430\u00a0\u0432\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435\u00a0\u043b\u0438\u0446\u043e \u0438 \u0432\u043e\u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0443\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u044b\u043c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043b\u0438\u0446 <a href=\"https:\/\/github.com\/NVlabs\/stylegan2\" rel=\"noopener noreferrer nofollow\">StyleGAN<\/a>, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u00a0\u043d\u0435\u0433\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 latent\u2011\u0442\u0435\u043d\u0437\u043e\u0440 \u0434\u043b\u044f\u00a0\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c loss \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 StyleGANv2\u00a0\u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0442\u0435\u043d\u0437\u043e\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 768\u00a0\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0441\u043a\u043e\u0435 \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u043e \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043a\u0442\u043e\u00a0\u0431\u044b\u043b \u043d\u0430\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445?<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/764\/b86\/be4\/764b86be4fe52695b895167b28c6c2e3.png\" width=\"1236\" height=\"630\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/764\/b86\/be4\/764b86be4fe52695b895167b28c6c2e3.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/764\/b86\/be4\/764b86be4fe52695b895167b28c6c2e3.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<details class=\"spoiler\">\n<summary>\u041e\u0442\u0432\u0435\u0442<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f56\/c62\/f29\/f56c62f29ff312a9778c5f5153ff7bd2.png\" width=\"1234\" height=\"718\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f56\/c62\/f29\/f56c62f29ff312a9778c5f5153ff7bd2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f56\/c62\/f29\/f56c62f29ff312a9778c5f5153ff7bd2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<p>\u042d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043b\u0438\u0446 \u0441\u043e \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u043e\u043c \u0432\u044b\u0448\u0435 0.9.<\/p>\n<p>\u0421\u043d\u0438\u043f\u043f\u0435\u0442 \u043a\u043e\u0434\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"python\"># \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043b\u0435\u0439\u0442\u0435\u043d\u0442  z = torch.randn([1, 768], device=device) w = stylegan_generator.mapping(z, None) latent = w.detach().clone().requires_grad_(True)   # \u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \u043e\u043f\u0442\u0438\u043c\u0430\u0439\u0437\u0435\u0440 optimizer = torch.optim.Adam([latent], lr=1e-3)   # \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043b\u0435\u0439\u0442\u0435\u043d\u0442 best_sim = 0 best_latent = None for step in tqdm(range(100)): \u00a0\u00a0\u00a0# \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u00a0\u00a0\u00a0gen_img = stylegan_generator.synthesis(latent, noise_mode='const')  \u00a0\u00a0\u00a0# \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u00a0\u00a0\u00a0embedding_pred = get_embedding(gen_img.to(device), model, processor)  \u00a0\u00a0\u00a0# \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c loss, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a 1 - cosine_similarity \u00a0\u00a0\u00a0loss = 1 - F.cosine_similarity(embedding_pred, target_embedding)  \u00a0\u00a0\u00a0# \u0428\u0430\u0433 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u00a0\u00a0\u00a0optimizer.zero_grad() \u00a0\u00a0\u00a0loss.backward() \u00a0\u00a0\u00a0optimizer.step()  \u00a0\u00a0\u00a0# \u0421\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043b\u0435\u0439\u0442\u0435\u043d\u0442  \u00a0\u00a0\u00a0with torch.no_grad(): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0latent.clamp_(-2.0, 2.0)  \u00a0\u00a0\u00a0# \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043b\u0443\u0447\u0448\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u00a0\u00a0\u00a0cos_sim = F.cosine_similarity(embedding_pred, target_embedding) \u00a0\u00a0\u00a0if cos_sim &gt; best_sim: \u00a0\u00a0\u00a0\u00a0\u00a0best_sim = cos_sim \u00a0\u00a0\u00a0\u00a0\u00a0best_latent = latent.clone()<\/code><\/pre>\n<p>\u0410\u00a0\u043c\u043e\u0436\u043d\u043e\u00a0\u043b\u0438 \u0437\u0430\u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441\u0438\u0442\u044c? \u041f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u00a0\u2014 \u0434\u0430, \u043d\u043e\u00a0\u043c\u044b \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0439\u0442\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439. \u041f\u0440\u043e\u0433\u043d\u0430\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445\u00a0\u043b\u0438\u0446, \u043c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u043f\u043e\u0440\u043e\u0433, \u043f\u0440\u0438\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u00a0\u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e. \u0421\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u043c\u043e\u0433 \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438. \u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430\u00a0\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 0.8. \u0421\u00a0\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0435\u0433\u043e \u043d\u0435\u00a0\u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u0438\u043b\u0438, \u0441\u00a0\u0434\u0440\u0443\u0433\u043e\u0439, \u0435\u0433\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0432\u0437\u043e\u0439\u0442\u0438 \u0441\u043e\u00a0StyleGAN \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0b7\/260\/9f2\/0b72609f2021a19280d21be3b33a5a84.png\" width=\"607\" height=\"1028\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/0b7\/260\/9f2\/0b72609f2021a19280d21be3b33a5a84.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0b7\/260\/9f2\/0b72609f2021a19280d21be3b33a5a84.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u0440\u0438\u0441\u043a, \u0447\u0442\u043e\u00a0\u043a\u0442\u043e\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0439\u0434\u0435\u0442 \u043d\u0435\u00a0\u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u0443\u044e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u043e\u0433\u0430 \u043d\u0430 0\u00a0\u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439, \u043d\u043e\u00a0\u044d\u0442\u043e\u0442 \u0440\u0438\u0441\u043a \u043d\u0435\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0441\u044f \ud83d\ude42<\/p>\n<h4>Hard \u2014 Is This A Flag? [reverse][internals][70%ML]<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">Author: Ivan Komarov (<a href=\"https:\/\/t.me\/ivan_komarov\" rel=\"noopener noreferrer nofollow\">@ivan_komarov<\/a>), <a href=\"https:\/\/spbctf.com\/\" rel=\"noopener noreferrer nofollow\">SPbCTF<\/a><\/p>\n<p align=\"left\">No more guessing! Upload an image, and our backdoored custom Vision Transformer will tell you if it contains a part of the flag for this challenge!<\/p>\n<p align=\"left\">Source code: <a href=\"https:\/\/aictf.phdays.fun\/files\/is-this-a-flag_71252e5.tar.gz\" rel=\"noopener noreferrer nofollow\"><strong>is\u2011this\u2011a-flag_71\u00a0252e5.tar.gz<\/strong><\/a><\/p>\n<p align=\"left\">Hints added at 16:30\u00a0UTC:<\/p>\n<p align=\"left\">1. The author\u201ds solution does not include any training\/fine\u2011tuning\/adversarial attacks<\/p>\n<p align=\"left\">2. The \u201creverse\u201d tag fits in every sense of the word<\/p>\n<p align=\"left\">3. To solve the task you would require figuring out how exactly the backdoor works<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1b0\/b05\/129\/1b0b0512927a7dd67e05c0c5b9f859a3.png\" width=\"1600\" height=\"687\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1b0\/b05\/129\/1b0b0512927a7dd67e05c0c5b9f859a3.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1b0\/b05\/129\/1b0b0512927a7dd67e05c0c5b9f859a3.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<blockquote>\n<p>\u0423\u00a0\u0437\u0430\u0434\u0430\u043d\u0438\u044f\u00a0\u0431\u044b\u043b \u043d\u0435\u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0449\u0438\u0439 \u0432\u0435\u0431\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u00a0\u2014 \u043d\u043e\u00a0\u0432\u0437\u043b\u0430\u043c\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e\u00a0\u0431\u044b\u043b\u043e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e, \u043e\u043d \u043d\u0443\u0436\u0435\u043d\u00a0\u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b ML-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430. \u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <a href=\"https:\/\/huggingface.co\/optimum\/vit-base-patch16-224\" rel=\"noopener noreferrer nofollow\">ViT\u2011Base \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 ONNX<\/a>, \u0433\u0434\u0435 \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u044c ML-\u043c\u043e\u0434\u0435\u043b\u0438\u00a0\u0431\u044b\u043b \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0431\u044d\u043a\u0434\u043e\u0440, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u00a0\u0442\u044b\u0441\u044f\u0447\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 ImageNet \u043f\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0445: \u00ab\u0444\u043b\u0430\u0433 \u0434\u043b\u044f\u00a0AI CTF, \u0447\u0430\u0441\u0442\u044c 1\/2\/3\/4\/5\u00bb. \u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u043d\u0443\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 reverse engineering \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e\u00a0\u0438\u043c\u0435\u043d\u043d\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0431\u044d\u043a\u0434\u043e\u0440 \u0438 \u043a\u0430\u043a\u00a0\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u044d\u043a\u0434\u043e\u0440 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u043a\u0430\u043a\u00a0\u0447\u0430\u0441\u0442\u044c \u0444\u043b\u0430\u0433\u0430.<\/p>\n<\/blockquote>\n<p>\u0421\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 <a href=\"https:\/\/onnx.ai\/\" rel=\"noopener noreferrer nofollow\">ONNX<\/a> \u0438\u0433\u0440\u043e\u043a\u0438 \u0432\u00a0AI CTF \u0443\u0436\u0435 <a href=\"https:\/\/habr.com\/ru\/companies\/pt\/articles\/903514\/#alxiv\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c<\/a> \u0432\u00a0\u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443; \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u00a0\u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u044e\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e 1-day\u2011\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u044d\u0442\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c.<\/p>\n<p>\u0412\u00a0\u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0438\u0436\u0435: \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0441\u00a0\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c ONNX \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u043e\u043d \u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438, \u0430\u00a0\u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446 (\u0447\u0442\u043e \u043f\u043e\u0434\u043c\u0435\u0442\u0438\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u0432\u0442\u043e\u0440\u044b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/hiddenlayer.com\/innovation-hub\/shadowlogic\/\" rel=\"noopener noreferrer nofollow\">ShadowLogic<\/a>).<\/p>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0441\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u0435\u0437\u00a0\u0431\u044d\u043a\u0434\u043e\u0440\u0430 \u0432\u00a0\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 <a href=\"https:\/\/netron.app\/\" rel=\"noopener noreferrer nofollow\">Netron<\/a>. \u0412\u00a0\u043d\u0451\u043c \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e\u00a0\u043d\u0430\u00a0\u0432\u0445\u043e\u0434 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0432\u00a0\u0432\u0438\u0434\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 (3, 224, 224) (RGB\u2011\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 224\u00a0\u043d\u0430 224):<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ce\/044\/b68\/6ce044b684cfe31a748f7a090f01ba57.png\" width=\"1153\" height=\"322\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6ce\/044\/b68\/6ce044b684cfe31a748f7a090f01ba57.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ce\/044\/b68\/6ce044b684cfe31a748f7a090f01ba57.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0410\u00a0\u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043b\u043e\u0433\u0438\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c (BATCH, 1000), \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437\u00a0\u0442\u044b\u0441\u044f\u0447\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d63\/888\/f98\/d63888f98227f8fd71083d3b3e235d31.png\" width=\"1041\" height=\"561\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d63\/888\/f98\/d63888f98227f8fd71083d3b3e235d31.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d63\/888\/f98\/d63888f98227f8fd71083d3b3e235d31.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0421\u0430\u043c\u043e \u0442\u0435\u043b\u043e \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0432\u0445\u043e\u0434 \u0432\u00a0\u0432\u044b\u0445\u043e\u0434, \u0441\u00a0\u043d\u0435\u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0443\u0433\u0430\u044e\u0449\u0435\u00a0\u2014 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u00a0\u043c\u0430\u0442\u0440\u0438\u0447\u043d\u044b\u043c\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u043a\u043e\u0440\u043d\u044f\u043c\u0438 \u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u044f\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0440\u043e\u0432:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1c0\/1ef\/335\/1c01ef33580f57019e023d46e464545c.png\" width=\"1075\" height=\"1037\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1c0\/1ef\/335\/1c01ef33580f57019e023d46e464545c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1c0\/1ef\/335\/1c01ef33580f57019e023d46e464545c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041a\u0430\u043a\u00a0\u0438 \u0432\u00a0\u043b\u044e\u0431\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u043d\u0430\u00a0reverse engineering, \u0437\u0434\u0435\u0441\u044c\u00a0\u0432\u0430\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0435\u00a0\u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u043b\u0435\u0441 \u0437\u0430\u00a0\u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c\u0438. \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e ONNX\u2011\u0431\u043b\u043e\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/onnx.ai\/onnx\/operators\/\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 ONNX<\/a>, \u043d\u043e\u00a0\u0435\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e <a href=\"https:\/\/arxiv.org\/pdf\/2010.11929\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a> \u043f\u0440\u043e\u00a0ViT, \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e\u00a0\u0432\u0441\u0435 \u044d\u0442\u0438 \u0441\u043e\u0442\u043d\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0432\u00a0\u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 \u043f\u043e\u00a0\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043c\u0435\u0440\u043a\u0430\u043c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440 (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440-\u0431\u043b\u043e\u043a\u043e\u0432 L \u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u00a0\u0431\u044b\u043b\u043e \u0440\u0430\u0432\u043d\u043e 12):<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/46d\/b6a\/871\/46db6a87110f51bd90997d236ae47d19.png\" width=\"241\" height=\"437\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/46d\/b6a\/871\/46db6a87110f51bd90997d236ae47d19.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/46d\/b6a\/871\/46db6a87110f51bd90997d236ae47d19.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Norm (LayerNorm) \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043e\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u043f\u043e\u00a0\u0434\u0432\u0443\u043c \u0431\u043b\u043e\u043a\u0430\u043c ReduceMean (\u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0438 \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438):<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ac6\/073\/257\/ac60732571ef070585b55b79dbfee087.png\" width=\"483\" height=\"687\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ac6\/073\/257\/ac60732571ef070585b55b79dbfee087.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ac6\/073\/257\/ac60732571ef070585b55b79dbfee087.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Multi\u2011Head Attention \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u00a0\u0431\u043b\u043e\u043a\u0443 Softmax:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/215\/f85\/ce7\/215f85ce78c2e256e272077f889755cc.png\" width=\"648\" height=\"334\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/215\/f85\/ce7\/215f85ce78c2e256e272077f889755cc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/215\/f85\/ce7\/215f85ce78c2e256e272077f889755cc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fee\/f91\/ba2\/feef91ba2836750e384fd5feb86a0199.png\" width=\"684\" height=\"703\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/fee\/f91\/ba2\/feef91ba2836750e384fd5feb86a0199.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fee\/f91\/ba2\/feef91ba2836750e384fd5feb86a0199.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0443, \u0430\u00a0MLP \u043e\u0442\u043b\u0438\u0447\u0430\u043b \u0431\u043b\u043e\u043a Erf (\u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 <a href=\"https:\/\/paperswithcode.com\/method\/gelu\" rel=\"noopener noreferrer nofollow\">GELU<\/a>):<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c37\/85b\/9fc\/c3785b9fc44c75e2abdfd98aa7d66f76.png\" width=\"487\" height=\"816\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c37\/85b\/9fc\/c3785b9fc44c75e2abdfd98aa7d66f76.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c37\/85b\/9fc\/c3785b9fc44c75e2abdfd98aa7d66f76.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430, \u0432\u00a0\u0441\u0435\u0442\u0438 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043f\u0430\u0440\u0430 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432 \u043d\u0430\u00a0\u0432\u0445\u043e\u0434\u0435 \u0438 \u043d\u0430\u00a0\u0432\u044b\u0445\u043e\u0434\u0435, \u043d\u043e\u00a0\u043e\u043d\u0438 \u0432\u00a0Netron&#8217;\u0435 \u0432\u0438\u0434\u043d\u044b \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0451\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u043d\u044b:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/55b\/b64\/86c\/55bb6486cc424f74438a9be4bb5aeaf1.png\" width=\"726\" height=\"527\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/55b\/b64\/86c\/55bb6486cc424f74438a9be4bb5aeaf1.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/55b\/b64\/86c\/55bb6486cc424f74438a9be4bb5aeaf1.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430\u00a0\u044d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f, \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u00a0\u0431\u044d\u043a\u0434\u043e\u0440\u043e\u043c \u0432\u00a0\u0442\u043e\u043c\u00a0\u0436\u0435 Netron \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f. \u0411\u044d\u043a\u0434\u043e\u0440 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437\u00a0\u0442\u0440\u0451\u0445 \u0447\u0430\u0441\u0442\u0435\u0439. \u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u0430 \u0432\u0445\u043e\u0434 \u0441\u00a0\u043f\u0438\u043a\u0441\u0435\u043b\u044f\u043c\u0438 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044f\u043b\u0430 \u0432\u0445\u043e\u0434\u043d\u043e\u0435\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0434\u0432\u0443\u0445 \u043a\u043e\u043f\u0438\u0439 (\u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435). \u041f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u0435\u0437\u00a0\u0431\u044d\u043a\u0434\u043e\u0440\u0430:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/944\/e31\/0c3\/944e310c315629f23f7f3128f3aa6709.png\" width=\"573\" height=\"449\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/944\/e31\/0c3\/944e310c315629f23f7f3128f3aa6709.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/944\/e31\/0c3\/944e310c315629f23f7f3128f3aa6709.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0430 \u043e\u043a\u043e\u043b\u043e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043b\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044f\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0432\u0443\u0445 \u0438\u0437\u00a0\u0442\u0440\u0451\u0445 \u043a\u043e\u043f\u0438\u0439 \u0432\u0445\u043e\u0434\u0430. \u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0432\u0441\u0435 \u0431\u043b\u043e\u043a\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438\u00a0\u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b <em>\u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u043e\u044f\u043c\u0438, \u043d\u0435\u00a0\u0437\u0430\u043b\u0435\u0437\u0430\u044f \u0432\u00a0\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/em>:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b7\/41c\/53e\/6b741c53e766560bbf49b9d872827cc6.png\" width=\"1111\" height=\"541\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6b7\/41c\/53e\/6b741c53e766560bbf49b9d872827cc6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b7\/41c\/53e\/6b741c53e766560bbf49b9d872827cc6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418 \u0442\u0440\u0435\u0442\u044c\u044f, \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u043b\u044f\u00a0\u0434\u0432\u0443\u0445 \u0438\u0437\u00a0\u0442\u0440\u0451\u0445 \u043a\u043e\u043f\u0438\u0439 \u0432\u0445\u043e\u0434\u0430 \u0441\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0440\u0430\u043c\u0438 \u0441\u00a0\u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0432\u0438\u0434\u0430 flag.2. \u0415\u0441\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438 \u0441\u00a0\u044d\u0442\u0430\u043b\u043e\u043d\u0430\u043c\u0438 \u0441\u00a0\u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e, \u0442\u043e \u0431\u044d\u043a\u0434\u043e\u0440 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u043c\u043e\u0434\u0435\u043b\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u043d\u0430\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0444\u043b\u0430\u0433\u0430:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/621\/671\/03f\/62167103f862181804c510babd501626.png\" width=\"1140\" height=\"888\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/621\/671\/03f\/62167103f862181804c510babd501626.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/621\/671\/03f\/62167103f862181804c510babd501626.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0430 \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u044d\u043a\u0434\u043e\u0440\u0430 \u2014 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u0442\u0435\u043d\u0437\u043e\u0440\u044b \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f. \u041e\u043a\u043e\u043b\u043e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u044f\u00a0\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432, \u0438 \u0435\u0441\u043b\u0438 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430 \u043a\u0430\u043a\u00a0\u0447\u0451\u0440\u043d\u044b\u0435 \u044f\u0449\u0438\u043a\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u044d\u0442\u0438 \u0447\u0451\u0440\u043d\u044b\u0435 \u044f\u0449\u0438\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u043a\u043e\u043f\u0438\u0438 \u0432\u0445\u043e\u0434\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u00a0\u043f\u043e\u00a0\u0432\u044b\u0445\u043e\u0434\u0443 \u0441\u043b\u043e\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0445\u043e\u0434.<\/p>\n<p>\u041e\u0441\u043e\u0431\u043e \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0432\u00a0\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e <a href=\"https:\/\/arxiv.org\/pdf\/2001.04451\" rel=\"noopener noreferrer nofollow\">Reformer<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u044b\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u043d\u044b\u0435 \u0441\u043b\u043e\u0438 \u0438 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0445 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/460\/351\/fff\/460351fff2be141acdddba157673e819.png\" width=\"981\" height=\"261\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/460\/351\/fff\/460351fff2be141acdddba157673e819.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/460\/351\/fff\/460351fff2be141acdddba157673e819.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 ViT \u043d\u0435\u00a0\u0443\u0447\u0438\u043b\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u00a0\u0442\u0430\u043a\u043e\u043c \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043d\u0430\u00a0\u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043c\u0443\u0441\u043e\u0440, \u043d\u043e\u00a0\u0434\u043b\u044f\u00a0\u043d\u0430\u0448\u0435\u0433\u043e \u0431\u044d\u043a\u0434\u043e\u0440\u0430 \u044d\u0442\u043e \u043d\u0435\u00a0\u0431\u0435\u0434\u0430, \u0430\u00a0\u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442:<\/p>\n<ol>\n<li>\n<p>\u0418\u0437\u2011\u0437\u0430 \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0441 \u0444\u043b\u0430\u0433\u043e\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0432\u044b\u0445\u043e\u0434 (\u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u00a0\u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0441\u00a0\u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439), \u0438 \u0432\u00a0\u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0431\u044d\u043a\u0434\u043e\u0440\u0430 \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u00a0\u044d\u0442\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043c\u0443\u0441\u043e\u0440, \u0442\u043e \u0438\u0437\u00a0\u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435, \u0435\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e \u043d\u0435\u00a0\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ol>\n<p>\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0432\u0445\u043e\u0434 <em>\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430<\/em> \u0432\u043e\u0442 \u0442\u0430\u043a (\u0437\u0434\u0435\u0441\u044c attns \u0438 ffns \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e\u0434\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e):<\/p>\n<pre><code class=\"python\">def restore_embeddings(y1, y2, attns, ffns): \u00a0\u00a0\u00a0\u00a0assert y1.shape == (197, 768) and y2.shape == (197, 768) \u00a0\u00a0\u00a0\u00a0y1 = np.expand_dims(y1, 0) \u00a0\u00a0\u00a0\u00a0y2 = np.expand_dims(y2, 0)  \u00a0\u00a0\u00a0\u00a0def eval_graph(model, inp): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0session = ort.InferenceSession(model) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0inp_name = session.get_inputs()[0].name \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return session.run(None, {inp_name: inp})[0]  \u00a0\u00a0\u00a0\u00a0for layer_idx, (attn, ffn) in reversed(list(enumerate(zip(attns, ffns)))): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print(f'Inverting FFN #{layer_idx}') \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0x2 = y2 - eval_graph(ffn, y1) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print(f'Inverting attention #{layer_idx}') \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0x1 = y1 - eval_graph(attn, x2) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0y1, y2 = x1, x2  \u00a0\u00a0\u00a0\u00a0return y1, y2<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0445\u043e\u0434 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430 \u0432\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432\u00a0\u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u00a0\u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u0442\u044f\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e\u00a0\u043e\u043d\u0430, \u043a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u043a\u00a0\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f\u00a0\u0445\u043e\u0440\u043e\u0448\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0437\u0430\u0448\u0443\u043c\u043b\u0451\u043d\u043d\u043e\u0439:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/980\/1a8\/e59\/9801a8e598d0cf02ae5827518adaf630.png\" width=\"224\" height=\"224\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/980\/1a8\/e59\/9801a8e598d0cf02ae5827518adaf630.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/980\/1a8\/e59\/9801a8e598d0cf02ae5827518adaf630.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u044d\u043a\u0434\u043e\u0440\u0430 \u0437\u0430\u043c\u0435\u043d\u044f\u043b\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0435\u0434\u0438\u043d\u0438\u0447\u043d\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 (\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 EyeLike). \u0412\u00a0\u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0441\u00a0\u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u0444\u043b\u0430\u0433\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e0a\/3f6\/2dc\/e0a3f62dc2ad0934c7ada489c13fc806.png\" width=\"224\" height=\"224\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e0a\/3f6\/2dc\/e0a3f62dc2ad0934c7ada489c13fc806.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e0a\/3f6\/2dc\/e0a3f62dc2ad0934c7ada489c13fc806.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0418\u0442\u043e\u0433\u0438<\/h4>\n<p>\u0427\u0430\u0441\u0442\u044c \u0432\u044b\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u00a0\u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0432\u00a0\u043a\u0430\u043a\u043e\u043c\u2011\u0442\u043e \u0432\u0438\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u0438 \u0432\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0435\u0442\u0435, \u0441\u00a0\u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438\u0445 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u043d\u0443 \u0438\u043b\u0438\u00a0\u043a\u0430\u043a\u00a0\u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0432\u044b\u0443\u0447\u0438\u043b\u0438 \u044d\u043b\u044c\u0444\u0438\u0439\u0441\u043a\u0438\u0439 \ud83d\ude42. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u0431\u043e\u0440\u044b, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0435 \u043f\u043e\u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u00a0AI CTF \u0432\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0433\u043e\u0434\u0443, \u043c\u044b \u0435\u0433\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u043c \u0432 <a href=\"https:\/\/t.me\/falseposi\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0448\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0435<\/a>.<\/p>\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\/articles\/926892\/\"> https:\/\/habr.com\/ru\/articles\/926892\/<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0432\u0442\u043e\u0440\u0443\u044e \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u0430 AI CTF 2025. <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/pt\/articles\/923894\/\" rel=\"noopener noreferrer nofollow\">\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/a><\/p>\n<p>\u0417\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u044c\u0442\u0435\u0441\u044c \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 ML-\u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435.<\/p>\n<blockquote>\n<p><em>\u0421\u0442\u0430\u0442\u044c\u044f \u043d\u043e\u0441\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u0438\u043b\u0438 \u043f\u0440\u0438\u0437\u044b\u0432\u043e\u043c \u043a \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u0440\u0430\u0432\u043d\u044b\u0445 \u0434\u0435\u044f\u043d\u0438\u0439. \u041d\u0430\u0448\u0430 \u0446\u0435\u043b\u044c \u2014 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0447\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0434\u0430\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0437\u0430\u0449\u0438\u0442\u0435 \u0441\u0432\u043e\u0435\u0439 \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u0410\u0432\u0442\u043e\u0440\u044b \u043d\u0435 \u043d\u0435\u0441\u0443\u0442 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/em><\/p>\n<\/blockquote>\n<h4>Medium \u2014 VoiceGuard [biometrics][60%ML]<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">Author: Alexander Migutskiy (<a href=\"https:\/\/t.me\/amg_core\" rel=\"noopener noreferrer nofollow\">@amg_core<\/a>), <a href=\"https:\/\/bit.ly\/40BqZYv\" rel=\"noopener noreferrer nofollow\">PT ML Team<\/a><\/p>\n<p align=\"left\">The task is simple: just pass two checks.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"full-width\"><\/figure>\n<blockquote>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 \u043d\u0430\u00a0\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0443\u044e \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u2014 \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0438\u0441 \u0441\u00a0\u0441\u0435\u043c\u043f\u043b\u043e\u043c \u0440\u0435\u0447\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043e\u043d\u044b, \u0446\u0435\u043b\u0435\u0432\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043d\u0435\u0441\u0442\u0438 \u044d\u0442\u0438\u043c \u0433\u043e\u043b\u043e\u0441\u043e\u043c, \u0438 \u043f\u043e\u043b\u0435\u043c \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0438.<\/p>\n<\/blockquote>\n<h4>\u0421\u0442\u0435\u043a<\/h4>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0443 \u0432\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0430\u043f\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c\u044e <a href=\"https:\/\/github.com\/openai\/whisper\" rel=\"noopener noreferrer nofollow\">Whisper<\/a>. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0438\u0437\u043d\u0435\u0441\u0451\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. <\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0441\u0447\u0451\u0442 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/huggingface.co\/sentence-transformers\/all-MiniLM-L6-v2\" rel=\"noopener noreferrer nofollow\">all\u2011MiniLM\u2011L6-v2<\/a>. \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433 \u0442\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441\u00a0\u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u043c \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0422\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0438\u0437\u043d\u0435\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0443\u044e \u0444\u0440\u0430\u0437\u0443, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044f 100% \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0447\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u043e, \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0435\u043b\u044c\u044e <a href=\"https:\/\/github.com\/LAION-AI\/CLAP\" rel=\"noopener noreferrer nofollow\">CLAP<\/a> \u0434\u043b\u044f\u00a0\u0433\u043e\u043b\u043e\u0441\u0430.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u0439\u00a0<\/h4>\n<p>\u041f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u043e\u043b\u043e\u0441\u0430 \u0438\u0437\u00a0\u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u0430, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0441\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0443.<\/p>\n<p>\u041c\u044b \u043f\u0440\u043e\u0432\u0435\u043b\u0438 <a href=\"https:\/\/github.com\/VinterMute\/audiodeep_research\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/a> \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0440\u0435\u0447\u0438, \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e\u00a0<a href=\"https:\/\/github.com\/SWivid\/F5-TTS\" rel=\"noopener noreferrer nofollow\">f5-tts<\/a> \u0434\u0430\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443.<\/p>\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0438 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439, \u043f\u043e\u043b\u0443\u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044e: \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430\u0449\u0438\u0442\u0430 \u043d\u0435\u00a0\u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438, \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043e\u043d\u043b\u0430\u0439\u043d\u2011\u043a\u043b\u043e\u043d\u044b \u0433\u043e\u043b\u043e\u0441\u0430, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0432 \u0438\u0445. \u041c\u0435\u0442\u043e\u0434 \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u0438\u0439 \u0438 \u043d\u0435\u00a0\u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0439, \u043d\u043e\u00a0\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043c.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u042d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0430\u0441\u044c \u043d\u0430 <a href=\"https:\/\/www.youtube.com\/watch?v=yBn0K2d4bzQ\" rel=\"noopener noreferrer nofollow\">\u0425\u0430\u043a\u0435\u0440\u0441\u043a\u043e\u043c \u043a\u0440\u0443\u0436\u043a\u0435<\/a>.<\/p>\n<h4>Medium \u2014 Athrad Edhellen [coding][visual][80%ML]<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">Author: Eugene Krokhalev (<a href=\"https:\/\/t.me\/rutsh\" rel=\"noopener noreferrer nofollow\">@rutsh<\/a>), <a href=\"https:\/\/spbctf.com\/\" rel=\"noopener noreferrer nofollow\">SPbCTF<\/a><\/p>\n<p align=\"left\">Prove you are a true Firstborn!<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"full-width\"><\/figure>\n<blockquote>\n<p>\u041d\u0430\u0441 \u043f\u0440\u043e\u0441\u044f\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c 100\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0441\u00a0\u0447\u0438\u0441\u043b\u0430\u043c\u0438, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u044c\u0444\u0438\u0441\u043a\u043e\u0439 \u043f\u0438\u0441\u044c\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0422\u0435\u043d\u0433\u0432\u0430\u0440. \u041d\u0430\u00a0\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0435\u00a0\u0431\u043e\u043b\u044c\u0448\u0435 5\u00a0\u043c\u0438\u043d\u0443\u0442. \u041f\u043e\u00a0\u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0430\u0439\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u0447\u0435\u043b\u0435\u043d\u0434\u0436 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<\/blockquote>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u00a0\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u044d\u043b\u044c\u0444\u0438\u0439\u0441\u043a\u0438\u0445 \u0447\u0438\u0441\u0435\u043b (\u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0430\u2011\u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430, \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u043f\u043e\u0441\u043b\u0435 12-\u0439 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438\u00a0\u2014 <a href=\"https:\/\/www.tecendil.com\/tengwar-handbook\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.tecendil.com\/tengwar\u2011handbook\/<\/a>):<\/p>\n<ul>\n<li>\n<p>\u0447\u0438\u0441\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 12-\u0440\u0438\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u0446\u0438\u0444\u0440\u00a0\u2014 little\u2011endian (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0443\u0442 \u043c\u0435\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0435 \u0440\u0430\u0437\u0440\u044f\u0434\u044b).<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0439\u0442\u0438 100 \u044d\u043b\u044c\u0444\u0438\u0439\u0441\u043a\u0438\u0445 \u043a\u0430\u043f\u0447, \u043e\u0431\u0443\u0447\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u0438\u0445 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f. \u0414\u043b\u044f\u00a0\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442: \u043f\u0430\u0440\u044b \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430+\u0442\u0435\u043a\u0441\u0442. \u0421\u00a0\u0441\u0430\u0439\u0442\u0430 \u043f\u043e\u00a0\u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e \u043f\u0438\u0441\u044c\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0422\u0435\u043d\u0433\u0432\u0430\u0440 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0448\u0440\u0438\u0444\u0442\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438\u0445 \u0434\u043b\u044f\u00a0\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 (\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432\u00a0\u044d\u0442\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435: <a href=\"https:\/\/gist.github.com\/v0s\/1b92abeec3ec571333754544914b50c9#file-ds-prepare-py\" rel=\"noopener noreferrer nofollow\">ds\u2011prepare.py<\/a>).<\/p>\n<p>\u0412\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0439 resnet-18\u00a0\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0443\u00a0\u043d\u0435\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0449\u0438\u0435 \u0433\u043e\u043b\u043e\u0432\u044b (\u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 6\u00a0\u0446\u0438\u0444\u0440 \u043a\u0430\u043f\u0447\u0438).<\/p>\n<pre><code class=\"python\">import torch, torch.nn as nn  from torchvision import models  class DigitRecognizer(nn.Module):  \u00a0\u00a0\u00a0\u00a0def init(self, num_classes=12, num_digits=6): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super().__init__() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0base = models.resnet18(weights=models.ResNet18_Weights.IMAGENET1K_V1) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self.backbone = nn.Sequential(*list(base.children())[:-2])\u00a0 # remove avgpool &amp; fc \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self.avgpool = nn.AdaptiveAvgPool2d((1,1)) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self.heads = nn.ModuleList([ \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nn.Linear(512, num_classes) for  in range(numdigits)  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])  \u00a0\u00a0\u00a0\u00a0def forward(self, x): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0x = self.backbone(x) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0x = self.avgpool(x) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0x = torch.flatten(x, 1) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [head(x) for head in self.heads]<\/code><\/pre>\n<p>\u041f\u0440\u0438\u00a0\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u0435\u00a0\u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u00a0\u0431\u044b\u043b \u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u043c \u043a\u00a0\u043f\u043e\u043c\u0435\u0445\u0430\u043c.<\/p>\n<pre><code class=\"python\">import kornia.augmentation as K  class KorniaAugmentations(nn.Module):  \u00a0\u00a0\u00a0\u00a0def init(self): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super().__init__() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self.augment = nn.Sequential( \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0K.RandomAffine(degrees=5, translate=0.02, scale=(0.95, 1.05), p=0.8), \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0K.RandomRotation(degrees=3.0, p=0.5), \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0K.ColorJitter(0.1, 0.1, 0.1, 0.05, p=0.5), \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0K.RandomErasing(scale=(0.01, 0.05), ratio=(0.3, 3.3), p=0.4)  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0\u00a0def forward(self, x): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return self.augment(x)<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 100 000\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u044b \u044d\u043f\u043e\u0445, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e, \u0431\u043b\u0438\u0437\u043a\u043e\u0439 \u043a 100%.<\/p>\n<pre><code class=\"python\">def train_epoch(model, dataloader, optimizer, criterion, device, augmenter=None):  \u00a0\u00a0\u00a0\u00a0model.train() \u00a0\u00a0\u00a0\u00a0N, total_loss = 0, 0 \u00a0\u00a0\u00a0\u00a0progress = tqdm.tqdm(dataloader) \u00a0\u00a0\u00a0\u00a0     for images, labels in progress: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0N += len(images) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0images, labels = images.to(device), labels.to(device) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if augmenter is not None: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0images = augmenter(images) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0outputs = model(images) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0loss = sum(criterion(out, labels[:, i]) for i, out in enumerate(outputs)) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0optimizer.zero_grad() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0loss.backward() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0optimizer.step() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0total_loss += loss.item() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0progress.set_description(f\"N={N}; loss={total_loss\/N:.4f}\") \u00a0\u00a0\u00a0\u00a0return total_loss \/ N<\/code><\/pre>\n<p>\u041f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436. \u041e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043a\u0430\u043f\u0447\u0443, \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0451\u0442 \u0435\u0451 \u043d\u0430\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0438 \u043f\u043e\u0441\u0442\u0438\u0442 \u043e\u0442\u0432\u0435\u0442 (\u0438 \u0442\u0430\u043a \u0434\u043e 100\u00a0\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439). \u0412\u043e\u0442 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f: <a href=\"https:\/\/gist.github.com\/v0s\/1b92abeec3ec571333754544914b50c9#file-exploit-py\" rel=\"noopener noreferrer nofollow\">exploit.py<\/a><\/p>\n<blockquote>\n<p><strong>\u0420\u0435\u043c\u0430\u0440\u043a\u0430.<\/strong> \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c js\u2011\u043a\u043e\u0434, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043a\u0430\u043f\u0447\u0438 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0448\u0440\u0438\u0444\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u0414\u0430\u043d\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438 \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u00a0\u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438\u0437\u00a0\u0448\u0440\u0438\u0444\u0442\u043e\u0432 \u043d\u0430\u00a0\u043d\u0430\u0448 \u0432\u044b\u0431\u043e\u0440.<\/p>\n<\/blockquote>\n<h4>Hard \u2014 Privnote [llm][web][65%CTF]<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">Author: Lev Reznichenko (<a href=\"https:\/\/t.me\/mkvfaa\" rel=\"noopener noreferrer nofollow\">@mkvfaa<\/a>), <a href=\"https:\/\/spbctf.com\/\" rel=\"noopener noreferrer nofollow\">SPbCTF<\/a><\/p>\n<p align=\"left\">The idea behind Privnote is simple: you create a short note, the recipient reads it once, and the note is forever gone. The backend only stores the ciphertext, and all the encryption happens entirely on the client side.<\/p>\n<p align=\"left\">But here\u201ds the catch\u2014I have a tip that the admin of this so\u2011called \u201cprivate note\u201d service left a note in his own account. That note contains the IP address of his personal file stash where he keeps his private documents. And we really need to doxx him! Maybe you can dig it up?<\/p>\n<p align=\"left\">Source code: <a href=\"https:\/\/aictf.phdays.fun\/files\/privnote_f8b4cff.tar.gz\" rel=\"noopener noreferrer nofollow\"><strong>privnote_f8b4cff.tar.gz<\/strong><\/a><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"full-width\"><\/figure>\n<blockquote>\n<p>\u0421\u0435\u0440\u0432\u0438\u0441 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u00ab\u0441\u0430\u043c\u043e\u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u044e\u0449\u0438\u0435\u0441\u044f\u00bb \u0437\u0430\u043c\u0435\u0442\u043a\u0438. \u0412\u0441\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u00a0\u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0441\u0435\u0440\u0432\u0435\u0440 \u0445\u0440\u0430\u043d\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u0410\u0434\u043c\u0438\u043d \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u0432\u00a0\u0441\u0432\u043e\u0435\u0439 \u0443\u0447\u0451\u0442\u043a\u0435, \u0432\u00a0\u043d\u0435\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f IP\u2011\u0430\u0434\u0440\u0435\u0441 \u0435\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0441\u00a0\u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043a\u0430\u043d \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430. \u0426\u0435\u043b\u044c\u00a0\u2014 \u0435\u0433\u043e \u043d\u0430\u0439\u0442\u0438.<\/p>\n<\/blockquote>\n<p>\u041a \u0437\u0430\u0434\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d \u043a\u043e\u0434 \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0438 \u0438\u0437\u00a0\u043a\u043e\u0434\u0430 \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u0440\u0443\u0447\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 <code>\/api\/search\/similar<\/code> \u0443\u044f\u0437\u0432\u0438\u043c\u0430 \u043a\u00a0SQL\u2011\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438. API-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 SQL\u2011\u0437\u0430\u043f\u0440\u043e\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c JSON embedding \u0431\u0435\u0437\u00a0\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0438 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<pre><code class=\"python\">@app.post(\"\/search\/similar\") async def search_similar():  \u00a0\u00a0\u00a0\u00a0try: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request_data = await request.json() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0embedding = request_data.get('embedding', [])  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0query = f\"\"\"SELECT id, title, cypher_text, created_at, is_viewed, embedding, embedding &lt;=&gt; '{embedding}' AS distance FROM notes WHERE owner_id = '{current_user.id}' AND is_deleted = false AND embedding IS NOT NULL ORDER BY distance\"\"\"  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result = db.execute(text(query))<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438:<br \/><code>{\"embedding\": \"[0.0, 0.0,...,0.0]' as distance from notes -- -\"}<\/code> <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u043a\u0440\u0430\u0444\u0442\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433 \u0440\u0443\u043a\u0430\u043c\u0438, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c:<\/p>\n<pre><code class=\"python\">\u00a0 \u00a0 headers = { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\": f\"Bearer {token}\", \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Content-Type\": \"application\/json\" \u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0embeddings = [0.0]*1536 \u00a0\u00a0\u00a0\u00a0payload =\u00a0 {\"embedding\": f\"{embeddings}' as distance from notes --\"}  \u00a0\u00a0\u00a0\u00a0response = requests.post( \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0f\"{BASE_URL}\/search\/similar\", \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0headers=headers, \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0json=payload \u00a0\u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0\u00a0results = response.json()<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043c\u044b \u0438\u0437 \u043f\u043e\u0438\u0441\u043a\u0430 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435\u0441\u044f \u0432\u00a0\u0411\u0414, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u043d\u0430\u043c. \u0422\u0430, \u0447\u0442\u043e\u00a0\u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u0438\u043c\u0435\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u00abTop secret: IP address of my file stash server\u00bb \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043e\u043c. \u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432\u00a0\u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u043e\u043a \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u00a0\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0438 \u043c\u044b \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u043c \u0435\u0451 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c.<\/p>\n<p>\u0422\u0435\u043a\u0441\u0442 \u0437\u0430\u043f\u0438\u0441\u043a\u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d, \u043d\u043e\u00a0\u0438\u0437 \u0431\u0430\u0437\u044b \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c embedding \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u0430\u043c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430. \u0418\u0437 \u043a\u043e\u0434\u0430 \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d (text-embedding-ada-002) \u2014 \u0438 \u043d\u0430\u043c \u0434\u0430\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u0430\u043c\u0430 \u0440\u0443\u0447\u043a\u0430 \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0430 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0434\u0438\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434.<\/p>\n<p>\u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0437\u0430\u043f\u0438\u0441\u043a\u0435 \u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0436\u0438\u0442 IP\u2011\u0430\u0434\u0440\u0435\u0441, \u0430\u00a0\u0437\u043d\u0430\u0447\u0438\u0442, \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u00a0\u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c:<\/p>\n<ul>\n<li>\n<p>\u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c IP \u043d\u0430 4\u00a0\u043e\u043a\u0442\u0435\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435 256\u00a0\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043e\u043a\u0442\u0435\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u00a0\u0442\u0435\u043a\u0441\u0442\u044b \u0432\u0438\u0434\u0430 X. \u0438\u043b\u0438\u00a0X.Y. \u0438\u043b\u0438\u00a0X.Y.Z.;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0438 \u044d\u0442\u0438 \u0442\u0435\u043a\u0441\u0442\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0445 embedding;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c embedding \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 \u0441\u00a0\u0438\u0441\u043a\u043e\u043c\u044b\u043c \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u043c \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0430\u0434\u043c\u0438\u043d\u0430\u00a0\u2014 \u043f\u043e\u00a0\u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043d\u043e\u043c\u0443 \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u00a0\u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 4\u00a0\u043e\u043a\u0442\u0435\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442: <a href=\"https:\/\/gist.github.com\/v0s\/67bc48865451b871a4ed264045f5ecfd\" rel=\"noopener noreferrer nofollow\">https:\/\/gist.github.com\/v0s\/67bc48\u00a0865\u00a0451b871a4ed264\u00a0045f5ecfd<\/a> <\/p>\n<\/blockquote>\n<p>\u041f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0432\u0435\u0440\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u043d\u043e\u00a0\u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u043c\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u043e\u043a\u0442\u0435\u0442\u043e\u0432:<\/p>\n<pre><code class=\"python\">Top 5 guesses for octet 1: \u00a0\u00a01. 60 (score: 0.15240979617062322) \u00a0\u00a02. 38 (score: 0.16108681462509344) \u00a0\u00a03. 40 (score: 0.1656382299536222) \u00a0\u00a04. 36 (score: 0.16714874380983824) \u00a0\u00a05. 42 (score: 0.17027767767314617)  Selected: 60  Top 5 guesses for octet 2: \u00a0\u00a01. 217 (score: 0.08601186993932086) \u00a0\u00a02. 216 (score: 0.09853250863613505) \u00a0\u00a03. 218 (score: 0.10299188026449557) \u00a0\u00a04. 215 (score: 0.10336019836703159) \u00a0\u00a05. 192 (score: 0.10594563283983671)  Selected: 217  Top 5 guesses for octet 3: \u00a0\u00a01. 38 (score: 0.05120576066293814) \u00a0\u00a02. 134 (score: 0.05400289479795939) \u00a0\u00a03. 94 (score: 0.054048871842033) \u00a0\u00a04. 37 (score: 0.054609333839567675) \u00a0\u00a05. 89 (score: 0.05491877708427473)  Selected: 38  Top 5 guesses for octet 4: \u00a0\u00a01. 134 (score: 0.0370515125639046) \u00a0\u00a02. 84 (score: 0.03890279482421943) \u00a0\u00a03. 133 (score: 0.039070599624769775) \u00a0\u00a04. 123 (score: 0.0394772259272288) \u00a0\u00a05. 129 (score: 0.03970103064766961)  Selected: 134<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-467441","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/467441","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=467441"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/467441\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=467441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=467441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=467441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}