{"id":486227,"date":"2026-07-05T11:01:48","date_gmt":"2026-07-05T11:01:48","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=486227"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=486227","title":{"rendered":"\u041a\u0430\u043a \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u201c\u0431\u0435\u043b\u043e\u0433\u043e \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0435\u0440\u0430\u201d \u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0434\u0435\u043b\u0430\u044e \u0438\u0437 \u043d\u0435\u0433\u043e \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0438\u0433\u0440\u0443\u0448\u043a\u0443"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong>DISCLAIMER: <\/strong><br \/>\u0420\u0435\u0448\u0438\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043b\u0435\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043a\u043e\u0434 \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u0447\u0451\u0442\u043a\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0441\u044e \u043f\u043e\u043b\u043d\u043e\u0442\u0443 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u0438\u0445 \u043d\u0435\u0441\u0430\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430 \u0438 \u043d\u0435\u0443\u043a\u043e\u0441\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0417\u0430\u043a\u043e\u043d\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438!<\/p>\n<p>\u041f\u0430\u0440\u0443 \u043d\u0435\u0434\u0435\u043b\u044c \u043d\u0430\u0437\u0430\u0434 \u044f \u0432\u0441\u0435\u0440\u044c\u0451\u0437 \u043e\u0442\u043a\u0440\u044b\u043b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043d\u043e\u0432\u0443\u044e \u201c\u0437\u0430\u0431\u0430\u0432\u0443\u201d &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0418\u0418 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u201c\u0431\u0435\u043b\u043e\u0433\u043e\u201d \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430.<\/p>\n<p>\u041c\u043e\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u201c\u0441\u0443\u043f\u043e\u0432\u043e\u0439 \u043d\u0430\u0431\u043e\u0440\u201d \u0438\u0437 \u201c\u0436\u0435\u043b\u0435\u0437\u0430\u201d \u0438 \u0441\u043e\u0444\u0442\u0430.<\/p>\n<ol>\n<li>\n<p>\u041d\u043e\u0443\u0442\u0431\u0443\u043a Thinkpad P16 gen2 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438 i713850HX+ \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 Nvidia RTX 2000 ADA (8 Gb) + Samsung 990 Pto 1TB + Samsung 980 Pto 2TB + 4&#215;32 Gb RAM (\u0432\u0441\u0435\u0433\u043e 128 Gb, \u043d\u043e 32 Gb \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0437\u0430\u043d\u044f\u0442\u044b \u043f\u043e\u0434 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 RAMDISK).<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 LM Studio \u0432 \u0441\u0440\u0435\u0434\u0435 Windows 11 25H2 + \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Python.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u044b\u0439 VirtualBox \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Kali Linux \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 + Metasploitable 2 (\u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438).<\/p>\n<\/li>\n<\/ol>\n<p>\u041b\u044e\u0431\u043e\u0439 \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u201c\u0438\u0438\u0448\u043d\u0438\u043a\u201d \u0441\u0440\u0430\u0437\u0443 \u0443\u0432\u0438\u0434\u0438\u0442 \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u043e\u0434\u043d\u043e \u201c\u0441\u043b\u0430\u0431\u043e\u0435 \u0437\u0432\u0435\u043d\u043e\u201d &#8212; \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u0441 \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u043c\u0438 8Gb \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u0443\u0441\u0442\u044c \u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u201c\u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u0430\u044f\u201d \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0418\u0418.<br \/>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0434\u0432\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 SSD \u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 &#8212; \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043c\u043d\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u201c\u0432\u043e\u0440\u043e\u0447\u0430\u0442\u044c\u201d \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u043c\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0418\u0418.<\/p>\n<p>\u0414\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044f \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438, \u044f, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0440\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u0442\u044f\u0436\u0451\u043b\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 <strong>Qwen 2.5 72B Instruct Q4_K_M \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 44 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0430.<\/strong><br \/>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u0439? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441 \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u043d\u0430 \u043c\u043e\u0451\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u044f \u043c\u043e\u0433\u0443 \u0447\u0430\u0441\u0442\u044c \u0441\u043b\u043e\u0451\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u0441\u0443\u043f\u0435\u0440 \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c, \u0430 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0441\u043b\u043e\u0438 &#8212; \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0442\u0435\u0440\u043f\u0438\u043c\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043a\u0435\u043d\u0430\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430. \u0414\u0430, \u044d\u0442\u043e \u201c\u0441\u043c\u0435\u0448\u043d\u044b\u0435\u201d 2-3 \u0442\u043e\u043a\u0435\u043d\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043d\u043e \u043c\u043d\u0435 \u0436\u0435 \u043d\u0430\u0434\u043e \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u0442\u044c \u201c\u043f\u043e-\u0431\u0435\u043b\u043e\u043c\u0443\u201d, \u0430 \u043d\u0435 \u201c\u0448\u0430\u0448\u0435\u0447\u043a\u0438 \u0438 \u043f\u043e\u0431\u043e\u043b\u0442\u0430\u0442\u044c\u201d? \u0412\u043f\u043e\u043b\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442!<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u0442\u043e\u0438\u0442 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0443\u043c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043c\u0435\u043d\u0435\u0435 \u0441\u043a\u043b\u043e\u043d\u043d\u0430\u044f \u043a \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u0440\u0438 \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0435, \u0447\u0435\u043c \u0435\u0451 \u0431\u043e\u043b\u0435\u0435 \u043b\u0451\u0433\u043a\u0438\u0435 \u201c\u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u043f\u043e \u0446\u0435\u0445\u0443\u201d. \u041d\u0443, \u0438 \u0441 \u0446\u0435\u043d\u0437\u0443\u0440\u043e\u0439 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0445 \u0443 \u043d\u0435\u0451 \u0432\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \ud83d\ude09<\/p>\n<p>\u0418\u0442\u0430\u043a, \u201c\u0436\u0435\u043b\u0435\u0437\u043e\u201d \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043e, \u0441\u043e\u0444\u0442 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439, \u043d\u043e \u043a\u0430\u043a \u0436\u0435 \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u201c\u043d\u0430\u0443\u0447\u0438\u0442\u044c\u201d \u043c\u043e\u044e Windows \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u0432 \u043f\u043e\u043b\u0443\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u201c\u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0432\u0430\u0442\u044c\u201d \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0418\u0418 \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 Kali Linux?<br \/>\u0414\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u043d\u0435 \u0431\u0435\u0437 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0436\u0435 \u0418\u0418 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u0438 \u043e\u0442\u043b\u0430\u0434\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u201c\u0441\u043a\u0440\u0438\u043f\u0442-\u043c\u043e\u0441\u0442\u201d \u0434\u043b\u044f Python \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c Qwen 2.5 72B Instruct Q4_K_M \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 44 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0430. \u041e\u0441\u043e\u0431\u043e \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0443\u0433\u0443\u0431\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439, \u0441\u044b\u0440\u043e\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0433\u043e \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u201c\u043c\u0443\u0441\u043e\u0440\u0430\u201d, \u0434\u0430\u043b\u0451\u043a \u043e\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0430, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c &#8212; \u0442\u043e\u0447\u043d\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439!<\/p>\n<p>\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u201c\u0441\u043a\u0440\u0438\u043f\u0442-\u043c\u043e\u0441\u0442\u201d \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0418\u0418:<\/p>\n<p>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u0441\u0435\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 Kali \u0432 VirtualBox.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435: \u201c\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u201d Kali -&gt; \u201c\u0421\u0435\u0442\u044c\u201d -&gt; \u201c\u0410\u0434\u0430\u043f\u0442\u0435\u0440 1\u201d (\u0440\u0435\u0436\u0438\u043c \u0441\u0435\u0442\u0438: NAT).<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u201c\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u201d -&gt; \u201c\u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u043e\u0432\u201d -&gt; \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e: <\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b: TCP<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0440\u0442 \u0445\u043e\u0441\u0442\u0430: 22222<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0440\u0442 \u0433\u043e\u0441\u0442\u044f: 22<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u041e\u041a, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Kali \u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0435\u0451 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b.<\/p>\n<\/li>\n<li>\n<p>\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 SSH-\u0441\u0435\u0440\u0432\u0435\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: sudo systemctl enable ssh &#8212;now<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u0431\u0435\u0441\u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u0439 sudo \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043e\u0442 root. \u0412\u0432\u0435\u0434\u0438\u0442\u0435: sudo visudo<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0432 \u0441\u0430\u043c\u044b\u0439 \u043d\u0438\u0437 \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 (\u0433\u0434\u0435 kali &#8212; \u0438\u043c\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f): kali ALL=(ALL) NOPASSWD: ALL<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0438 \u0437\u0430\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b (Ctrl+O -&gt; Enter -&gt; Ctrl+X). \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u201csudo whoami\u201d (\u0434\u043e\u043b\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c root \u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f).<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435 Kali \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441  \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u201c\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0435\u0442\u044c\u201d \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0432 Kali \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 Kali \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 \u0441 Metasploitable2. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043e\u0434\u0438\u043d \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Kali \u0434\u043e\u043b\u0436\u0435\u043d \u201c\u0432\u0438\u0434\u0435\u0442\u044c\u201d \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 &#8212; \u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u043e\u0439 \u0441 Metasploitable2 \u0447\u0438\u0441\u0442\u043e \u043f\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0430 192.168.5.4 \u0438 192.168.5.3.<\/p>\n<\/li>\n<\/ol>\n<p><strong>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u044b Python (\u0435\u0441\u043b\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d) \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u043c\u0434\u0438\u0441\u043a\u0435 \u0438\u043b\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0434\u0438\u0441\u043a\u0435.<\/strong><\/p>\n<ol>\n<li>\n<p>\u0421\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0435\u0440 Python, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u201cpython-3.14.6-amd64.exe\u201d.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u044c\u0442\u0435 \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u201cAdd python.exe to PATH\u201d. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u201cInstall Now\u201d.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 Windows (cmd) \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0432\u0430\u0448 \u0440\u0430\u043c\u0434\u0438\u0441\u043a W:, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0451:<\/p>\n<pre><code>   W:   md W:\\AI_Bridge   cd W:\\AI_Bridge   python -m venv env   call env\\Scripts\\activate<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>5. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: <\/p>\n<p>pip install paramiko openai<\/p>\n<p>\u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u201c\u0441\u0440\u0438\u043f\u0442-\u043c\u043e\u0441\u0442\u201d \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c!<\/p>\n<p><strong>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 LM Studio.<\/strong><\/p>\n<p>1. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 LM Studio, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0432 \u043d\u0435\u0451 \u043c\u043e\u0434\u0435\u043b\u044c Qwen 2.5 72B Instruct Q4_K_M \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 44 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0430 \u0438 \u0441\u043b\u0435\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0435\u0451 \u0432 LM Studio. \u041f\u043e\u0434 \u0441\u0432\u043e\u0435 \u201c\u0436\u0435\u043b\u0435\u0437\u043e\u201d \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043b\u043e\u0435\u0432 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 LM Studio.<\/p>\n<p>2. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u201cDeveloper\u201d (\u043b\u0435\u0432\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c) -&gt; \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u201cLocal Server\u201d.<\/p>\n<p>3. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0437\u0435\u043b\u0435\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u201cStart Server\u201d (\u043f\u043e\u0440\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: 1234). \u041d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0439\u0442\u0435 LM Studio.<\/p>\n<p><strong>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u201c\u0441\u043a\u0440\u0438\u043f\u0442\u0430-\u043c\u043e\u0441\u0442\u0430\u201d \u0441 \u0430\u0432\u0442\u043e\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c.<\/strong><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 W:\\AI_Bridge \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u201c<a href=\"http:\/\/bridge.py\" rel=\"noopener noreferrer nofollow\">bridge.py<\/a>\u201d \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 (\u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b audit_log.txt \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0440\u0430\u043c\u0434\u0438\u0441\u043a\u0435):<\/p>\n<pre><code class=\"python\">import reimport osimport sysimport timeimport threadingimport msvcrtimport paramikofrom datetime import datetimefrom openai import OpenAI# === \u041d\u0410\u0421\u0422\u0420\u041e\u0419\u041a\u0418 \u0421\u0412\u042f\u0417\u041a\u0418 SSH \u0418 \u0424\u0410\u0419\u041b\u041e\u0412 ===KALI_IP = \"127.0.0.1\" KALI_PORT = 22222 KALI_USER = \"kali\" KALI_PASS = \"kali\" LOG_FILE = r\"W:\\AI_Bridge\\autonomous_audit_log.txt\" MAX_HISTORY_TURNS = 10client = OpenAI(    base_url=\"http:\/\/localhost:1234\/v1\",     api_key=\"lm-studio\",     timeout=600.0)SSH_CONN = None SSH_CHAN = Nonedef log_to_file(text):    \"\"\"\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0418\u0418 \u0432 \u0444\u0430\u0439\u043b\"\"\"    timestamp = datetime.now().strftime(\"[%Y-%m-%d %H:%M:%S]\")    os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)    with open(LOG_FILE, \"a\", encoding=\"utf-8\") as f:        f.write(f\"{timestamp}\\n{text}\\n{'='*50}\\n\")def run_recv_thread(channel, stop_event):    \"\"\"\u041f\u043e\u0442\u043e\u043a \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 Kali \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c Windows\"\"\"    while not stop_event.is_set():        try:            if channel.recv_ready():                data = channel.recv(1024).decode('utf-8', errors='ignore')                if not data:                    stop_event.set()                    break                sys.stdout.write(data)                sys.stdout.flush()            time.sleep(0.01)        except Exception:            stop_event.set()            breakdef run_send_thread(channel, stop_event):    \"\"\"\u041f\u043e\u0442\u043e\u043a \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043a\u043b\u0430\u0432\u0438\u0448 \u0438\u0437 Windows \u0432 Kali\"\"\"    while not stop_event.is_set():        try:            line = sys.stdin.readline()            if not line:                 break            channel.send(line)        except Exception:            stop_event.set()            breakdef interactive_shell(channel, manual_override=False):    \"\"\" \u041f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u043e\u0441\u0442, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u043a \u0441\u043e\u043a\u0435\u0442\u0443 Kali \"\"\"    print(\"\\n\" + \"=\"*60)    if manual_override:        print(\" ??  \u0420\u0423\u0427\u041d\u041e\u0419 \u041f\u0415\u0420\u0415\u0425\u0412\u0410\u0422 \u0423\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u042f \u041e\u041f\u0415\u0420\u0410\u0422\u041e\u0420\u041e\u041c (\u041f\u0410\u0423\u0417\u0410 \u0418\u0418) ?? \")    else:        print(\" ?? \u041a\u0420\u0418\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0419 \u041f\u0415\u0420\u0415\u0425\u0412\u0410\u0422 \u0423\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u042f \u0421\u0418\u0421\u0422\u0415\u041c\u041e\u0419 (\u0416\u0418\u0412\u041e\u0419 \u041a\u0410\u041d\u0410\u041b) ??\")    print(\"=\"*60)    print(\"[\u0423\u0421\u041f\u0415\u0425] \u0412\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0430\u0442\u0430\u043a\u0438!\")    print(\"[!] \u0414\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0418\u0418-\u0430\u0433\u0435\u043d\u0442\u0443 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 'exit' \u0438\u043b\u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Ctrl+C.\\n\")        stop_event = threading.Event()    t_recv = threading.Thread(target=run_recv_thread, args=(channel, stop_event), daemon=True)    t_send = threading.Thread(target=run_send_thread, args=(channel, stop_event), daemon=True)    t_recv.start()    t_send.start()        while not stop_event.is_set():        try:            time.sleep(0.1)        except KeyboardInterrupt:            stop_event.set()            break                stop_event.set()    print(\"\\n[-] \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0418\u0418...\")def print_root_cheat_sheet():    \"\"\"\u0412\u044b\u0432\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0431\u0438\u0432\u0430\"\"\"    print(\"\\n\\n\" + \"!\"*60)    print(\" ??  \u0426\u0415\u041b\u042c \u0423\u0421\u041f\u0415\u0428\u041d\u041e \u041f\u041e\u0420\u0410\u0416\u0415\u041d\u0410! \u0410\u0412\u0422\u041e\u041f\u0418\u041b\u041e\u0422 \u0418\u0418 \u0412\u0421\u0422\u0410\u041b \u041d\u0410 \u0416\u0415\u0421\u0422\u041a\u0418\u0419 \u0421\u0422\u041e\u041f-\u041a\u0410\u0414\u0420! ?? \")    print(\"!\"*60)    print(\"\\n \u0421\u041b\u0415\u0414\u0423\u0419\u0422\u0415 \u042d\u0422\u041e\u0419 \u0418\u041d\u0421\u0422\u0420\u0423\u041a\u0426\u0418\u0418, \u0427\u0422\u041e\u0411\u042b \u0417\u0410\u0411\u0420\u0410\u0422\u042c \u0418 \u0421\u0422\u0410\u0411\u0418\u041b\u0418\u0417\u0418\u0420\u041e\u0412\u0410\u0422\u042c \u0428\u0415\u041b\u041b:\")    print(\"?\" * 60)    print(\" \u0428\u0430\u0433 1: \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 ENTER \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0447\u0442\u043e\u0431\u044b \u043e\u0436\u0438\u0432\u0438\u0442\u044c \u0441\u043e\u043a\u0435\u0442.\")    print(\" \u0428\u0430\u0433 2: \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0430\u0448\u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0440\u0430\u0432 \u0432 \u0441\u0435\u0441\u0441\u0438\u0438:\")    print(\"        whoami\")    print(\" \u0428\u0430\u0433 3: \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u043f\u043e\u0439 \u0448\u0435\u043b\u043b \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c, \u0432\u0432\u0435\u0434\u0438\u0442\u0435:\")    print(\"        python -c \\\"import pty; pty.spawn('\/bin\/bash')\\\"\")    print(\" \u0428\u0430\u0433 4: \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u043c\u043f\u0442 root@metasploitable:\/#\")    print(\"?\" * 60)    print(\" \u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0436\u0438\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b...\\n\")def execute_ssh_cmd(command):    global SSH_CONN, SSH_CHAN    command = re.sub(r'^(msf\\s*x?v?\\d*|kali@\\w+|root@\\w+)\\s*[&gt;#\\$]\\s*', '', command, flags=re.IGNORECASE).strip()    print(f\"\\n[*] [SSH] \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u0447\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0436\u0438\u0432\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e: {command}\")    log_to_file(f\"[\u0410\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u044b]: {command}\")        if SSH_CONN is None or SSH_CHAN is None or SSH_CHAN.closed:        try:            SSH_CONN = paramiko.SSHClient()            SSH_CONN.set_missing_host_key_policy(paramiko.AutoAddPolicy())            SSH_CONN.connect(KALI_IP, port=KALI_PORT, username=KALI_USER, password=KALI_PASS, timeout=30)                        SSH_CHAN = SSH_CONN.get_transport().open_session()            SSH_CHAN.get_pty()            SSH_CHAN.invoke_shell()                        SSH_CHAN.send(\"stty cols 1000 &amp;&amp; export PAGER=cat\\n\")            time.sleep(0.5)            if SSH_CHAN.recv_ready():                SSH_CHAN.recv(4096)        except Exception as e:            return f\"\u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 SSH: {str(e)}\", False                try:        SSH_CHAN.send(f\"{command}\\n\")                time.sleep(2.0)        full_output = []        last_read_time = time.time()                # \u041e\u0420\u0418\u0413\u0418\u041d\u0410\u041b\u042c\u041d\u042b\u0419 \u041f\u041b\u0410\u0412\u0410\u042e\u0429\u0418\u0419 \u0426\u0418\u041a\u041b \u0427\u0422\u0415\u041d\u0418\u042f \u0418\u0417 \u0412\u0410\u0428\u0415\u0413\u041e PDF        while True:            if SSH_CHAN.recv_ready():                data = SSH_CHAN.recv(4096).decode('utf-8', errors='ignore')                if data:                    sys.stdout.write(data)                    sys.stdout.flush()                    full_output.append(data)                    last_read_time = time.time()                                if time.time() - last_read_time &gt; 1.5:                break            time.sleep(0.05)                    combined_output = \"\".join(full_output)        trigger_detected = False                # \u0416\u0415\u041b\u0415\u0417\u041d\u042b\u0419 \u0411\u0415\u0421\u041a\u041e\u041c\u041f\u0420\u041e\u041c\u0418\u0421\u0421\u041d\u042b\u0419 \u0422\u0420\u0418\u0413\u0413\u0415\u0420: \u043b\u043e\u0432\u0438\u0442 \u0444\u0430\u043a\u0442 \u0432\u0437\u043b\u043e\u043c\u0430 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0428\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0443        if re.search(r'(session \\d+ opened|session opened|meterpreter &gt;|command shell session|already interactive|uid=0\\(root\\))', combined_output, re.IGNORECASE):            print_root_cheat_sheet()            trigger_detected = True            interactive_shell(SSH_CHAN, manual_override=False)                    return combined_output, trigger_detected            except Exception as e:        print(f\"[-] \u041a\u0420\u0418\u0422\u0418\u0427\u0415\u0421\u041a\u0410\u042f \u041e\u0428\u0418\u0411\u041a\u0410 SSH-\u041c\u041e\u0421\u0422\u0410: {str(e)}\")        return f\"\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: {str(e)}\", Falsedef main():    CURRENT_MODEL = \"Qwen2.5-Coder-72B-Instruct\"         print(\"=== [AGENT ACTIVE] \u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0433\u043e \u0414\u0432\u0438\u0436\u043a\u0430 (V8.0-AbsoluteAutonomy) ===\")    print(\"[!] \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a, \u043b\u043e\u0436\u043d\u044b\u0445 \u0432\u044b\u043b\u0435\u0442\u043e\u0432 \u0438\u0437 msf and \u043f\u0443\u0441\u0442\u044b\u0445 set-\u043a\u043e\u043c\u0430\u043d\u0434 \u0430\u043a\u0442\u0438\u0432\u043d\u0430.\")    print(\"[*] \u0421\u0431\u0440\u043e\u0441 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f Kali Linux \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043c\u0438\u0441\u0441\u0438\u0438...\")    try:        temp_ssh = paramiko.SSHClient()        temp_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())        temp_ssh.connect(KALI_IP, port=KALI_PORT, username=KALI_USER, password=KALI_PASS, timeout=10)        temp_ssh.exec_command(\"sudo killall -9 ruby msfconsole nmap nc telnet ftp\")        temp_ssh.close()        print(\"[+] \u041e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 Kali \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0447\u0438\u0449\u0435\u043d\u043e.\")    except Exception as e:        print(f\"[!] \u041f\u0440\u0435\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0435 Kali: {e}\")            user_goal = input(\"\\n\u0421\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u0437\u0430\u0434\u0430\u0447\u0443 \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430: \")    log_to_file(f\"STARTING AUTONOMOUS MISSION: {user_goal}\")        full_system_instruction = (        \"\u0422\u044b \u2014 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0418\u0418-\u0430\u0433\u0435\u043d\u0442 \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0430. \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0448\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u043c Kali Linux.\\n\"        \"\u0422\u0432\u043e\u044f \u0446\u0435\u043b\u044c \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c root-shell.\\n\\n\"        \"\u0416\u0415\u0421\u0422\u041a\u0418\u0415 \u041f\u0420\u0410\u0412\u0418\u041b\u0410 \u0412\u0417\u0410\u0418\u041c\u041e\u0414\u0415\u0419\u0421\u0422\u0412\u0418\u042f \u0421 \u0422\u0415\u0420\u041c\u0418\u041d\u0410\u041b\u041e\u041c:\\n\"        \"1. \u041a\u0410\u0422\u0415\u0413\u041e\u0420\u0418\u0427\u0415\u0421\u041a\u041e\u0415 \u041f\u0420\u0410\u0412\u0418\u041b\u041e \u0421\u041a\u041e\u0420\u041e\u0421\u0422\u0418 NMAP: \u0422\u0435\u0431\u0435 \u0417\u0410\u041f\u0420\u0415\u0429\u0415\u041d\u041e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 '-p-' \u0438\u043b\u0438 '-A'! \"        \"\u0414\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0421\u0422\u0420\u041e\u0413\u041e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043b\u0435\u0433\u043a\u0438\u0439 \u0444\u043b\u0430\u0433: 'nmap -sV --open &lt;target&gt;'.\\n\"        \"2. \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u043a\u0430\u043a \u0436\u0438\u0432\u043e\u0439 Bash). \u0412\u0441\u0435 \u0442\u0432\u043e\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u0439 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438.\\n\"        \"3. \u041a\u0410\u0422\u0415\u0413\u041e\u0420\u0418\u0427\u0415\u0421\u041a\u0418\u0419 \u0417\u0410\u041f\u0420\u0415\u0422 \u041d\u0410 \u0422\u041e\u0427\u041a\u0423 \u0421 \u0417\u0410\u041f\u042f\u0422\u041e\u0419: \u0412\u043d\u0443\u0442\u0440\u0438 msfconsole \u0442\u0435\u0431\u0435 \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0447\u0435\u0440\u0435\u0437 ';'! \"        \"Metasploit \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 ';' \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044f \u0438\u0445 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439.\\n\"        \"4. \u041f\u0420\u0410\u0412\u0418\u041b\u041e \u041e\u0411\u042f\u0417\u0410\u0422\u0415\u041b\u042c\u041d\u041e\u0413\u041e LHOST: \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 'exploit' \u0438\u043b\u0438 'run' \u0432 Metasploit, \u0442\u044b \u041e\u0411\u042f\u0417\u0410\u041d\u0410 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \"        \"\u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 'set LHOST &lt;IP_\u0430\u0433\u0435\u043d\u0442\u0430&gt;'. \u041d\u0435 \u043f\u043e\u043b\u0430\u0433\u0430\u0439\u0441\u044f \u043d\u0430 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f Metasploit.\\n\"        \"5. \u041a\u041e\u041d\u0422\u0415\u041a\u0421\u0422 \u041f\u0420\u041e\u041c\u041f\u0422\u0410: \u0412\u0441\u0435\u0433\u0434\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0439 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043b\u043e\u0433\u0435. \u0415\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0440\u043e\u043c\u043f\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 'msf &gt;' \u0438\u043b\u0438 'msf exploit', \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0442\u044b \u041d\u0410\u0425\u041e\u0414\u0418\u0428\u042c\u0421\u042f \u0432\u043d\u0443\u0442\u0440\u0438 msfconsole.\\n\"        \"6. \u0412\u044b\u0434\u0430\u0432\u0430\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0442\u0440\u043e\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 \u043a\u043e\u0434\u0430 ```bash ... ``` \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432.\"    )    session_history = [        {\"role\": \"system\", \"content\": full_system_instruction},        {\"role\": \"user\", \"content\": f\"\u0421\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u043c\u0438\u0441\u0441\u0438\u044f: {user_goal}. \u0422\u0432\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP \u0434\u043b\u044f LHOST: {KALI_IP if KALI_IP != '127.0.0.1' else '192.168.5.4'}\"}    ]    step_counter = 1    last_terminal_prompt = \"\"        try:        while True:            if msvcrt.kbhit():                key = msvcrt.getch().decode('utf-8', errors='ignore').lower()                if key == 'p':                    print(\"\\n[!] \u041e\u0411\u041d\u0410\u0420\u0423\u0416\u0415\u041d \u0421\u0418\u0413\u041d\u0410\u041b \u0420\u0423\u0427\u041d\u041e\u0419 \u041f\u0410\u0423\u0417\u042b \u0418\u0418 \u041e\u0422 \u041e\u041f\u0415\u0420\u0410\u0422\u041e\u0420\u0410.\")                    global SSH_CHAN                    if SSH_CHAN and not SSH_CHAN.closed:                        interactive_shell(SSH_CHAN, manual_override=True)                    print(\"[+] \u041f\u0430\u0443\u0437\u0430 \u0441\u043d\u044f\u0442\u0430. \u041f\u0435\u0440\u0435\u0434\u0430\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0418\u0418-\u0430\u0433\u0435\u043d\u0442\u0443...\")                                print(f\"\\n \u041d\u0430\u0447\u0438\u043d\u0430\u044e \u0448\u0430\u0433 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 #{step_counter}...\")            if len(session_history) &gt; (MAX_HISTORY_TURNS * 2) + 2:                del session_history[2:4]                            try:                completion = client.chat.completions.create(model=CURRENT_MODEL, messages=session_history, temperature=0.0)            except Exception as e:                print(f\"[-] \u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a API: {e}\")                break                            try:                # \u0420\u041e\u0414\u041d\u041e\u0419 \u0412\u0410\u0420\u0418\u0410\u041d\u0422 \u041f\u0410\u0420\u0421\u0418\u041d\u0413\u0410 \u0418\u0417 \u0412\u0410\u0428\u0415\u0413\u041e PDF                if hasattr(completion, 'choices') and len(completion.choices) &gt; 0:                    first_choice = completion.choices[0]                    if hasattr(first_choice, 'message') and hasattr(first_choice.message, 'content'):                        response = first_choice.message.content                    elif isinstance(first_choice, dict) and 'message' in first_choice:                        response = first_choice['message']['content']                    else:                        response = getattr(first_choice, 'text', '')                else:                    data = completion.model_dump() if hasattr(completion, 'model_dump') else dict(completion)                    response = data['choices'][0]['message']['content']            except Exception as e:                print(f\"[-] \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 API: {e}\")                break                            clean_response = response.strip()            print(f\"\\n[\u041e\u0442\u0432\u0435\u0442 \u0418\u0418-\u0410\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u0430]:\\n{clean_response}\")            cmd_to_run = \"\"            try:                # \u0420\u041e\u0414\u041d\u041e\u0419 \u0412\u0410\u0420\u0418\u0410\u041d\u0422 \u041f\u0410\u0420\u0421\u0418\u041d\u0413\u0410 \u0418\u0417 \u0412\u0410\u0428\u0415\u0413\u041e PDF \u0411\u0415\u0417 \u0418\u0417\u041c\u0415\u041d\u0415\u041d\u0418\u0419                commands = re.findall(r'```(?:bash|sh)?\\s*(.*?)\\s*```', clean_response, re.DOTALL)                if not commands:                    if any(k in clean_response for k in [\"nmap\", \"set \", \"use \", \"exploit\", \"msfconsole\", \"exit\"]):                        lines = [l.strip() for l in clean_response.split('\\n') if l.strip()]                        if lines:                            cmd_to_run = \"\\n\".join(lines)                    else:                        print(f\"[-] \u0418\u0418 \u043f\u0440\u0438\u0441\u043b\u0430\u043b \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0448\u0430\u0433\u0435 {step_counter}.\")                        session_history.append({\"role\": \"assistant\", \"content\": response})                        session_history.append({\"role\": \"user\", \"content\": \"\u041e\u0448\u0438\u0431\u043a\u0430: \u041f\u0440\u0438\u0448\u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e bash-\u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 ```bash ... ```\"})                        step_counter += 1                        continue                else:                    first_block = commands[0]                    target_lines = [line.strip() for line in first_block.split('\\n') if line.strip() and not line.strip().startswith('#')]                    if target_lines:                        cmd_to_run = \"\\n\".join(target_lines)            except Exception as parse_err:                print(f\"[-] \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0441\u0442\u0440\u043e\u043a\u0438: {parse_err}. \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0448\u0430\u0433\u0430.\")                cmd_to_run = \"\"                            if not cmd_to_run:                print(\"[-] \u0412\u0430\u043b\u0438\u0434\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441.\")                session_history.append({\"role\": \"user\", \"content\": \"\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438. \u041f\u043e\u0432\u0442\u043e\u0440\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.\"})                continue                            # --- \u0418\u041d\u0422\u0415\u041b\u041b\u0415\u041a\u0422\u0423\u0410\u041b\u042c\u041d\u042b\u0419 \u041f\u0415\u0420\u0415\u0425\u0412\u0410\u0422 \u041e\u0428\u0418\u0411\u041e\u041a \u041a\u041e\u041d\u0422\u0415\u041a\u0421\u0422\u0410 ---            first_line_check = cmd_to_run.split('\\n')[0].strip()                        if \"set \" in first_line_check and \"msf &gt;\" in last_terminal_prompt and not \"exploit(\" in last_terminal_prompt:                print(\"[!] \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u0430\u0442\u0430\u0441\u0442\u043e\u0440\u0430: \u0418\u0418 \u0448\u043b\u0435\u0442 'set' \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043c\u0435\u043d\u044e. \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u044e \u0444\u0438\u0434\u0431\u0435\u043a.\")                user_feedback = \"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0422\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0448\u044c\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043c\u0435\u043d\u044e msf &gt;. \u0422\u0432\u043e\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 set \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0431\u0435\u0440\u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 'use &lt;\u043f\u0443\u0442\u044c_\u043a_\u043c\u043e\u0434\u0443\u043b\u044e&gt;'!\"                session_history.append({\"role\": \"assistant\", \"content\": response})                session_history.append({\"role\": \"user\", \"content\": user_feedback})                step_counter += 1                continue                            is_actually_in_msf = \"msf &gt;\" in last_terminal_prompt or \"msf exploit(\" in last_terminal_prompt or \"msf auxiliary(\" in last_terminal_prompt                        if \"msfconsole\" in first_line_check and is_actually_in_msf:                print(f\"[!] \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438: \u0418\u0418 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 msfconsole \u0432\u043d\u0443\u0442\u0440\u0438 msfconsole.\")                user_feedback = \"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0422\u044b \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0448\u044c\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 msfconsole! \u041d\u0435 \u043f\u0438\u0448\u0438 'msfconsole'. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0447\u0438\u0441\u0442\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b 'use' \u0438\u043b\u0438 'set'.\"                session_history.append({\"role\": \"assistant\", \"content\": response})                session_history.append({\"role\": \"user\", \"content\": user_feedback})                step_counter += 1                continue                            if any(k in first_line_check for k in [\"set \", \"use \", \"exploit\"]) and not is_actually_in_msf and \"kali@kali\" in last_terminal_prompt:                print(\"[!] \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0432\u044b\u043b\u0435\u0442 \u0438\u0437 msf: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c Metasploit.\")                cmd_to_run = f\"msfconsole -q -x '{cmd_to_run}'\"                            if \"nmap\" in first_line_check and is_actually_in_msf:                print(\"[!] \u041c\u043e\u0434\u0435\u043b\u044c \u0448\u043b\u0435\u0442 nmap \u0432\u043d\u0443\u0442\u0440\u044c msfconsole. \u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0432 Bash.\")                cmd_to_run = \"exit\"            # -----------------------------------------------------------------                        print(f\"\\n[\u0410\u0433\u0435\u043d\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442]: {cmd_to_run}\")                        kali_output, root_pwned = execute_ssh_cmd(cmd_to_run)                        if root_pwned:                print(\"\\n[*] \u0420\u0443\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u043a\u043d\u043e.\")                break                            last_terminal_prompt = kali_output                        if not kali_output or len(kali_output.strip()) == 0:                user_feedback = f\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b '{cmd_to_run}' \u043f\u0443\u0441\u0442\u043e\u0439. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0439 \u0430\u0443\u0434\u0438\u0442 \u0445\u043e\u0441\u0442\u0430.\"            else:                user_feedback = f\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0432\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b '{cmd_to_run}':\\n```text\\n{kali_output}\\n```\\n\u041f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0439 \u044d\u0442\u043e\u0442 \u0432\u044b\u0432\u043e\u0434 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u043e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u043c\u043f\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u0421\u041b\u0415\u0414\u0423\u042e\u0429\u0423\u042e \u043a\u043e\u043c\u0430\u043d\u0434\u0443.\"                            session_history.append({\"role\": \"assistant\", \"content\": response})            session_history.append({\"role\": \"user\", \"content\": user_feedback})            step_counter += 1            print(\"-\" * 40)                except KeyboardInterrupt:        print(\"\\n[-] \u0420\u0430\u0431\u043e\u0442\u0430 \u0430\u0433\u0435\u043d\u0442\u0430 \u044d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c.\")            print(\"\\n\" + \"=\"*60)    print(\"[\u041a\u041e\u041d\u0415\u0426] \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d. \u041e\u043a\u043d\u043e \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c.\")    print(\"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter \u0434\u043b\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430...\")    input()if __name__ == \"__main__\":    main()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u0441\u044e \u201c\u0441\u0432\u044f\u0437\u043a\u0443\u201d?<\/strong><\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438\u043b\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 (\u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0430\u043c\u0434\u0438\u0441\u043a \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f), \u043f\u0440\u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0439 LM Studio \u0441  \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u0434\u043b\u044f \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 cmd \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<pre><code>W:cd W:\\AI_Bridgeif not exist env (    python -m venv env    call env\\Scripts\\activate    pip install paramiko openai) else (    call env\\Scripts\\activate)python bridge.py<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418\u043b\u0438 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 BAT-\u0444\u0430\u0439\u043b \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u044b\u0448\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0430.<\/p>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 cmd \u043d\u0430 Windows \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<pre><code>W:cd W:\\AI_Bridgecall env\\Scripts\\activatepip install --upgrade paramiko openai<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u201c\u0431\u044d\u043a\u0430\u043f\u201d \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438.<\/p>\n<p>\u0427\u0442\u043e \u0436\u0435 \u0434\u0430\u043b\u044c\u0448\u0435?<\/p>\n<p>\u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0438 &#8212; Kali Linux \u0438 Metasplotable 2, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u201c\u0441\u043a\u0440\u0438\u043f\u0442-\u043c\u043e\u0441\u0442\u201d \u0438 \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443:<\/p>\n<p><em>\u201c\u041f\u0440\u043e\u0432\u0435\u0434\u0438 \u0430\u0443\u0434\u0438\u0442 \u0445\u043e\u0441\u0442\u0430 192.168.5.3 (Metasploitable 2) \u0441 \u043d\u0443\u043b\u044f \u0434\u043e root-shell. \u041d\u0430\u0447\u043d\u0438 \u0441 nmap. \u0422\u0432\u043e\u0439 IP &#8212; 192.168.5.4\u201d<\/em><\/p>\n<p>\u041d\u0430 \u043c\u043e\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u043f\u043e\u0434 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0437\u0430 2-3 \u043c\u0438\u043d\u0443\u0442\u044b \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u0441 Metasploitable 2 \u0438 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438) \u043f\u043e\u043b\u0443\u0447\u0438\u0442 root-shell, \u0432\u0441\u0442\u0430\u0432 \u043d\u0430 \u043f\u0430\u0443\u0437\u0443 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 (\u043c\u043d\u0435). \u0418 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0430\u0441\u0442 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u201c\u0441\u043a\u0440\u0438\u043f\u0442-\u043c\u043e\u0441\u0442\u201d \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Ctrl+\u0421 \u0438\u043b\u0438 \u0436\u0435 \u0432\u0441\u0442\u0430\u0442\u044c \u043d\u0430 \u043f\u0430\u0443\u0437\u0443 \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u201cP\u201d, \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u0432 \u0440\u0443\u0447\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430 \u0441 Metasploitable2 &#8212; \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e \u201c\u0442\u0435\u043f\u043b\u0438\u0447\u043d\u0430\u044f\u201d \u0443\u0447\u0435\u0431\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430, \u0432\u0435\u0441\u044c\u043c\u0430 \u0434\u0430\u043b\u0435\u043a\u0430\u044f \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0445\u043e\u0441\u0442\u0430\u043c\u0438. \u041d\u043e \u0432\u0435\u0434\u044c \u044f \u043b\u0438\u0448\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0447\u0443\u0441\u044c \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e, \u201c\u043f\u0440\u043e\u0449\u0443\u043f\u044b\u0432\u0430\u044f\u201d \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0418\u0418 \u0434\u043b\u044f \u044d\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u201c\u0431\u0435\u043b\u043e\u0433\u043e\u201d \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430.<\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e\u0435 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e. \u041c\u043e\u0434\u0435\u043b\u044c \u0432\u0441\u0451 \u0435\u0449\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0414\u0443\u043c\u0430\u044e \u0432\u0441\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u201c\u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439\u201d \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0418\u0418 \u0438 \u201c\u0431\u0435\u043b\u043e\u0433\u043e\u201d \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430.<\/p>\n<p>\u0423\u0434\u0430\u0447\u0438 \u0432 \u0412\u0430\u0448\u0438\u0445 \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u0445 \u0438 \u0437\u0430\u043a\u043e\u043d\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445!<\/p>\n<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1055728\/\">https:\/\/habr.com\/ru\/articles\/1055728\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DISCLAIMER: \u0420\u0435\u0448\u0438\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043b\u0435\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043a\u043e\u0434 \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u0447\u0451\u0442\u043a\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0441\u044e \u043f\u043e\u043b\u043d\u043e\u0442\u0443 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u0438\u0445 \u043d\u0435\u0441\u0430\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430 \u0438 \u043d\u0435\u0443\u043a\u043e\u0441\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0417\u0430\u043a\u043e\u043d\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438!\u041f\u0430\u0440\u0443 \u043d\u0435\u0434\u0435\u043b\u044c \u043d\u0430\u0437\u0430\u0434 \u044f \u0432\u0441\u0435\u0440\u044c\u0451\u0437 \u043e\u0442\u043a\u0440\u044b\u043b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043d\u043e\u0432\u0443\u044e \u201c\u0437\u0430\u0431\u0430\u0432\u0443\u201d &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0418\u0418 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u201c\u0431\u0435\u043b\u043e\u0433\u043e\u201d \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430.\u041c\u043e\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u201c\u0441\u0443\u043f\u043e\u0432\u043e\u0439 \u043d\u0430\u0431\u043e\u0440\u201d \u0438\u0437 \u201c\u0436\u0435\u043b\u0435\u0437\u0430\u201d \u0438 \u0441\u043e\u0444\u0442\u0430.\u041d\u043e\u0443\u0442\u0431\u0443\u043a Thinkpad P16 gen2 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438 i713850HX+ \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 Nvidia RTX 2000 ADA (8 Gb) + Samsung 990 Pto 1TB + Samsung 980 Pto 2TB + 4&#215;32 Gb RAM (\u0432\u0441\u0435\u0433\u043e 128 Gb, \u043d\u043e 32 Gb \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0437\u0430\u043d\u044f\u0442\u044b \u043f\u043e\u0434 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 RAMDISK).\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 LM Studio \u0432 \u0441\u0440\u0435\u0434\u0435 Windows 11 25H2 + \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Python.\u041f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u044b\u0439 VirtualBox \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Kali Linux \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 + Metasploitable 2 (\u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438).\u041b\u044e\u0431\u043e\u0439 \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u201c\u0438\u0438\u0448\u043d\u0438\u043a\u201d \u0441\u0440\u0430\u0437\u0443 \u0443\u0432\u0438\u0434\u0438\u0442 \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u043e\u0434\u043d\u043e \u201c\u0441\u043b\u0430\u0431\u043e\u0435 \u0437\u0432\u0435\u043d\u043e\u201d &#8212; \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u0441 \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u043c\u0438 8Gb \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u0443\u0441\u0442\u044c \u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u201c\u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u0430\u044f\u201d \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0418\u0418.\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0434\u0432\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 SSD \u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 &#8212; \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043c\u043d\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u201c\u0432\u043e\u0440\u043e\u0447\u0430\u0442\u044c\u201d \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u043c\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0418\u0418.\u0414\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044f \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438, \u044f, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0440\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u0442\u044f\u0436\u0451\u043b\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 Qwen 2.5 72B Instruct Q4_K_M \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 44 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0430.\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u0439? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441 \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u043d\u0430 \u043c\u043e\u0451\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u044f \u043c\u043e\u0433\u0443 \u0447\u0430\u0441\u0442\u044c \u0441\u043b\u043e\u0451\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u0441\u0443\u043f\u0435\u0440 \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c, \u0430 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0441\u043b\u043e\u0438 &#8212; \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0442\u0435\u0440\u043f\u0438\u043c\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043a\u0435\u043d\u0430\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430. \u0414\u0430, \u044d\u0442\u043e \u201c\u0441\u043c\u0435\u0448\u043d\u044b\u0435\u201d 2-3 \u0442\u043e\u043a\u0435\u043d\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043d\u043e \u043c\u043d\u0435 \u0436\u0435 \u043d\u0430\u0434\u043e \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u0442\u044c \u201c\u043f\u043e-\u0431\u0435\u043b\u043e\u043c\u0443\u201d, \u0430 \u043d\u0435 \u201c\u0448\u0430\u0448\u0435\u0447\u043a\u0438 \u0438 \u043f\u043e\u0431\u043e\u043b\u0442\u0430\u0442\u044c\u201d? \u0412\u043f\u043e\u043b\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442!\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u0442\u043e\u0438\u0442 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0443\u043c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043c\u0435\u043d\u0435\u0435 \u0441\u043a\u043b\u043e\u043d\u043d\u0430\u044f \u043a \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u0440\u0438 \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0435, \u0447\u0435\u043c \u0435\u0451 \u0431\u043e\u043b\u0435\u0435 \u043b\u0451\u0433\u043a\u0438\u0435 \u201c\u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u043f\u043e \u0446\u0435\u0445\u0443\u201d. \u041d\u0443, \u0438 \u0441 \u0446\u0435\u043d\u0437\u0443\u0440\u043e\u0439 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0445 \u0443 \u043d\u0435\u0451 \u0432\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 ;-)\u0418\u0442\u0430\u043a, \u201c\u0436\u0435\u043b\u0435\u0437\u043e\u201d \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043e, \u0441\u043e\u0444\u0442 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439, \u043d\u043e \u043a\u0430\u043a \u0436\u0435 \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u201c\u043d\u0430\u0443\u0447\u0438\u0442\u044c\u201d \u043c\u043e\u044e Windows \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u0432 \u043f\u043e\u043b\u0443\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u201c\u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0432\u0430\u0442\u044c\u201d \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0418\u0418 \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 Kali Linux?\u0414\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u043d\u0435 \u0431\u0435\u0437 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0436\u0435 \u0418\u0418 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u0438 \u043e\u0442\u043b\u0430\u0434\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u201c\u0441\u043a\u0440\u0438\u043f\u0442-\u043c\u043e\u0441\u0442\u201d \u0434\u043b\u044f Python \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c Qwen 2.5 72B Instruct Q4_K_M \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 44 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0430. \u041e\u0441\u043e\u0431\u043e \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0443\u0433\u0443\u0431\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439, \u0441\u044b\u0440\u043e\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0433\u043e \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u201c\u043c\u0443\u0441\u043e\u0440\u0430\u201d, \u0434\u0430\u043b\u0451\u043a \u043e\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0430, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c &#8212; \u0442\u043e\u0447\u043d\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439!\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u201c\u0441\u043a\u0440\u0438\u043f\u0442-\u043c\u043e\u0441\u0442\u201d \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0418\u0418:\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u0441\u0435\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438:\u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 Kali \u0432 VirtualBox.\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435: \u201c\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u201d Kali -&gt; \u201c\u0421\u0435\u0442\u044c\u201d -&gt; \u201c\u0410\u0434\u0430\u043f\u0442\u0435\u0440 1\u201d (\u0440\u0435\u0436\u0438\u043c \u0441\u0435\u0442\u0438: NAT).\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u201c\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u201d -&gt; \u201c\u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u043e\u0432\u201d -&gt; \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e: \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b: TCP\u041f\u043e\u0440\u0442 \u0445\u043e\u0441\u0442\u0430: 22222\u041f\u043e\u0440\u0442 \u0433\u043e\u0441\u0442\u044f: 22\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u041e\u041a, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Kali \u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0435\u0451 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b.\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 SSH-\u0441\u0435\u0440\u0432\u0435\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: sudo systemctl enable ssh &#8212;now\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u0431\u0435\u0441\u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u0439 sudo \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043e\u0442 root. \u0412\u0432\u0435\u0434\u0438\u0442\u0435: sudo visudo\u041f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0432 \u0441\u0430\u043c\u044b\u0439 \u043d\u0438\u0437 \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 (\u0433\u0434\u0435 kali &#8212; \u0438\u043c\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f): kali ALL=(ALL) NOPASSWD: ALL\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0438 \u0437\u0430\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b (Ctrl+O -&gt; Enter -&gt; Ctrl+X). \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u201csudo whoami\u201d (\u0434\u043e\u043b\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c root \u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f).\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435 Kali \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441  \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u201c\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0435\u0442\u044c\u201d \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0432 Kali \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 Kali \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 \u0441 Metasploitable2. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043e\u0434\u0438\u043d \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Kali \u0434\u043e\u043b\u0436\u0435\u043d \u201c\u0432\u0438\u0434\u0435\u0442\u044c\u201d \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 &#8212; \u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u043e\u0439 \u0441 Metasploitable2 \u0447\u0438\u0441\u0442\u043e \u043f\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0430 192.168.5.4 \u0438 192.168.5.3.\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u044b Python (\u0435\u0441\u043b\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d) \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u043c\u0434\u0438\u0441\u043a\u0435 \u0438\u043b\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0434\u0438\u0441\u043a\u0435.\u0421\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0435\u0440 Python, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u201cpython-3.14.6-amd64.exe\u201d.\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u044c\u0442\u0435 \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u201cAdd python.exe to PATH\u201d. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u201cInstall Now\u201d.\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 Windows (cmd) \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0432\u0430\u0448 \u0440\u0430\u043c\u0434\u0438\u0441\u043a W:, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0451:   W:   md W:\\AI_Bridge   cd W:\\AI_Bridge   python -m venv env   call env\\Scripts\\activate5. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: pip install paramiko openai\u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u201c\u0441\u0440\u0438\u043f\u0442-\u043c\u043e\u0441\u0442\u201d \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c!\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 LM Studio.1. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 LM Studio, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0432 \u043d\u0435\u0451 \u043c\u043e\u0434\u0435\u043b\u044c Qwen 2.5 72B Instruct Q4_K_M \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 44 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0430 \u0438 \u0441\u043b\u0435\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0435\u0451 \u0432 LM Studio. \u041f\u043e\u0434 \u0441\u0432\u043e\u0435 \u201c\u0436\u0435\u043b\u0435\u0437\u043e\u201d \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043b\u043e\u0435\u0432 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 LM Studio.2. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u201cDeveloper\u201d (\u043b\u0435\u0432\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c) -&gt; \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u201cLocal Server\u201d.3. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0437\u0435\u043b\u0435\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u201cStart Server\u201d (\u043f\u043e\u0440\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: 1234). \u041d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0439\u0442\u0435 LM Studio.\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u201c\u0441\u043a\u0440\u0438\u043f\u0442\u0430-\u043c\u043e\u0441\u0442\u0430\u201d \u0441 \u0430\u0432\u0442\u043e\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c.\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 W:\\AI_Bridge \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u201cbridge.py\u201d \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 (\u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b audit_log.txt \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0440\u0430\u043c\u0434\u0438\u0441\u043a\u0435):import reimport osimport sysimport timeimport threadingimport msvcrtimport paramikofrom datetime import datetimefrom openai import OpenAI# === \u041d\u0410\u0421\u0422\u0420\u041e\u0419\u041a\u0418 \u0421\u0412\u042f\u0417\u041a\u0418 SSH \u0418 \u0424\u0410\u0419\u041b\u041e\u0412 ===KALI_IP = &#171;127.0.0.1&#187; KALI_PORT = 22222 KALI_USER = &#171;kali&#187; KALI_PASS = &#171;kali&#187; LOG_FILE = r&#187;W:\\AI_Bridge\\autonomous_audit_log.txt&#187; MAX_HISTORY_TURNS = 10client = OpenAI(    base_url=&#187;http:\/\/localhost:1234\/v1&#8243;,     api_key=&#187;lm-studio&#187;,     timeout=600.0)SSH_CONN = None SSH_CHAN = Nonedef log_to_file(text):    &#171;&#187;&#187;\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0418\u0418 \u0432 \u0444\u0430\u0439\u043b&#187;&#187;&#187;    timestamp = datetime.now().strftime(&#171;[%Y-%m-%d %H:%M:%S]&#187;)    os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)    with open(LOG_FILE, &#171;a&#187;, encoding=&#187;utf-8&#8243;) as f:        f.write(f&#187;{timestamp}\\n{text}\\n{&#8216;=&#8217;*50}\\n&#187;)def run_recv_thread(channel, stop_event):    &#171;&#187;&#187;\u041f\u043e\u0442\u043e\u043a \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 Kali \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c Windows&#187;&#187;&#187;    while not stop_event.is_set():        try:            if channel.recv_ready():                data = channel.recv(1024).decode(&#8216;utf-8&#8242;, errors=&#8217;ignore&#8217;)                if not data:                    stop_event.set()                    break                sys.stdout.write(data)                sys.stdout.flush()            time.sleep(0.01)        except Exception:            stop_event.set()            breakdef run_send_thread(channel, stop_event):    &#171;&#187;&#187;\u041f\u043e\u0442\u043e\u043a \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043a\u043b\u0430\u0432\u0438\u0448 \u0438\u0437 Windows \u0432 Kali&#187;&#187;&#187;    while not stop_event.is_set():        try:            line = sys.stdin.readline()            if not line:                 break            channel.send(line)        except Exception:            stop_event.set()            breakdef interactive_shell(channel, manual_override=False):    &#171;&#187;&#187; \u041f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u043e\u0441\u0442, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u043a \u0441\u043e\u043a\u0435\u0442\u0443 Kali &#171;&#187;&#187;    print(&#171;\\n&#187; + &#171;=&#187;*60)    if manual_override:        print(&#187; ??  \u0420\u0423\u0427\u041d\u041e\u0419 \u041f\u0415\u0420\u0415\u0425\u0412\u0410\u0422 \u0423\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u042f \u041e\u041f\u0415\u0420\u0410\u0422\u041e\u0420\u041e\u041c (\u041f\u0410\u0423\u0417\u0410 \u0418\u0418) ?? &#171;)    else:        print(&#187; ?? \u041a\u0420\u0418\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0419 \u041f\u0415\u0420\u0415\u0425\u0412\u0410\u0422 \u0423\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u042f \u0421\u0418\u0421\u0422\u0415\u041c\u041e\u0419 (\u0416\u0418\u0412\u041e\u0419 \u041a\u0410\u041d\u0410\u041b) ??&#187;)    print(&#171;=&#187;*60)    print(&#171;[\u0423\u0421\u041f\u0415\u0425] \u0412\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0430\u0442\u0430\u043a\u0438!&#187;)    print(&#171;[!] \u0414\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0418\u0418-\u0430\u0433\u0435\u043d\u0442\u0443 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 &#8216;exit&#8217; \u0438\u043b\u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Ctrl+C.\\n&#187;)        stop_event = threading.Event()    t_recv = threading.Thread(target=run_recv_thread, args=(channel, stop_event), daemon=True)    t_send = threading.Thread(target=run_send_thread, args=(channel, stop_event), daemon=True)    t_recv.start()    t_send.start()        while not stop_event.is_set():        try:            time.sleep(0.1)        except KeyboardInterrupt:            stop_event.set()            break                stop_event.set()    print(&#171;\\n[-] \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0418\u0418&#8230;&#187;)def print_root_cheat_sheet():    &#171;&#187;&#187;\u0412\u044b\u0432\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0431\u0438\u0432\u0430&#187;&#187;&#187;    print(&#171;\\n\\n&#187; + &#171;!&#187;*60)    print(&#187; ??  \u0426\u0415\u041b\u042c \u0423\u0421\u041f\u0415\u0428\u041d\u041e \u041f\u041e\u0420\u0410\u0416\u0415\u041d\u0410! \u0410\u0412\u0422\u041e\u041f\u0418\u041b\u041e\u0422 \u0418\u0418 \u0412\u0421\u0422\u0410\u041b \u041d\u0410 \u0416\u0415\u0421\u0422\u041a\u0418\u0419 \u0421\u0422\u041e\u041f-\u041a\u0410\u0414\u0420! ?? &#171;)    print(&#171;!&#187;*60)    print(&#171;\\n \u0421\u041b\u0415\u0414\u0423\u0419\u0422\u0415 \u042d\u0422\u041e\u0419 \u0418\u041d\u0421\u0422\u0420\u0423\u041a\u0426\u0418\u0418, \u0427\u0422\u041e\u0411\u042b \u0417\u0410\u0411\u0420\u0410\u0422\u042c \u0418 \u0421\u0422\u0410\u0411\u0418\u041b\u0418\u0417\u0418\u0420\u041e\u0412\u0410\u0422\u042c \u0428\u0415\u041b\u041b:&#187;)    print(&#171;?&#187; * 60)    print(&#187; \u0428\u0430\u0433 1: \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 ENTER \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0447\u0442\u043e\u0431\u044b \u043e\u0436\u0438\u0432\u0438\u0442\u044c \u0441\u043e\u043a\u0435\u0442.&#187;)    print(&#187; \u0428\u0430\u0433 2: \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0430\u0448\u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0440\u0430\u0432 \u0432 \u0441\u0435\u0441\u0441\u0438\u0438:&#187;)    print(&#187;        whoami&#187;)    print(&#187; \u0428\u0430\u0433 3: \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u043f\u043e\u0439 \u0448\u0435\u043b\u043b \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c, \u0432\u0432\u0435\u0434\u0438\u0442\u0435:&#187;)    print(&#187;        python -c \\&#187;import pty; pty.spawn(&#8216;\/bin\/bash&#8217;)\\&#187;&#187;)    print(&#187; \u0428\u0430\u0433 4: \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u043c\u043f\u0442 root@metasploitable:\/#&#187;)    print(&#171;?&#187; * 60)    print(&#187; \u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0436\u0438\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b&#8230;\\n&#187;)def execute_ssh_cmd(command):    global SSH_CONN, SSH_CHAN    command = re.sub(r&#8217;^(msf\\s*x?v?\\d*|kali@\\w+|root@\\w+)\\s*[&gt;#\\$]\\s*&#8217;, &#187;, command, flags=re.IGNORECASE).strip()    print(f&#187;\\n[*] [SSH] \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u0447\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0436\u0438\u0432\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e: {command}&#187;)    log_to_file(f&#187;[\u0410\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u044b]: {command}&#187;)        if SSH_CONN is None or SSH_CHAN is None or SSH_CHAN.closed:        try:            SSH_CONN = paramiko.SSHClient()            SSH_CONN.set_missing_host_key_policy(paramiko.AutoAddPolicy())            SSH_CONN.connect(KALI_IP, port=KALI_PORT, username=KALI_USER, password=KALI_PASS, timeout=30)                        SSH_CHAN = SSH_CONN.get_transport().open_session()            SSH_CHAN.get_pty()            SSH_CHAN.invoke_shell()                        SSH_CHAN.send(&#171;stty cols 1000 &amp;&amp; export PAGER=cat\\n&#187;)            time.sleep(0.5)            if SSH_CHAN.recv_ready():                SSH_CHAN.recv(4096)        except Exception as e:            return f&#187;\u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 SSH: {str(e)}&#187;, False                try:        SSH_CHAN.send(f&#187;{command}\\n&#187;)         &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-486227","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/486227","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=486227"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/486227\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=486227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=486227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=486227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}