{"id":339247,"date":"2022-10-03T15:00:35","date_gmt":"2022-10-03T15:00:35","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=339247"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=339247","title":{"rendered":"<span>\u041a\u0430\u043a \u0437\u0430\u0432\u043b\u0430\u0434\u0435\u0442\u044c \u0441\u0435\u0442\u044c\u044e \/16 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e libpcap \u0438 libdnet<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/688314\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/y-\/2m\/hh\/y-2mhhtc543laa4qi_2erks00e8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/y-\/2m\/hh\/y-2mhhtc543laa4qi_2erks00e8.png\"\/><\/div>\n<p><\/a><br \/>  \u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0438\u0437\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 libpacp \u0438 libdnet. \u041f\u0440\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043c\u043d\u043e\u0433\u0438\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0438 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438, \u0442.\u043a. \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043d\u0435\u0439 \u0432 \u0441\u0435\u0442\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0442. \u0410 \u0432\u0435\u0434\u044c \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0430\u043c Fyodor \ud83d\ude42<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0418\u0437\u043b\u043e\u0436\u0443 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044e. \u0412 \u0441\u0432\u043e\u0451 \u0432\u0440\u0435\u043c\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0438\u0441\u0430\u0434\u043c\u0438\u043d\u0441\u0442\u0432\u0430 \u0431\u044b\u043b \u0432\u0435\u0441\u044c\u043c\u0430 \u043e\u0433\u043e\u0440\u0447\u0451\u043d \u043d\u0435\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u041d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0433\u043e\u0440\u0447\u0451\u043d, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0430\u0447\u0430\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043b\u0443\u0433\u0438\u043d \u043a zabbix, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c L3 \u043a\u0430\u0440\u0442\u0443 \u0441\u0435\u0442\u0438. \u041f\u043e\u0442\u043e\u043c \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u043e\u043f\u0430\u043b \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u00ab\u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0443\u00bb \u0438 \u0434\u0430\u043d\u043d\u044b\u0439 pet-\u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430\u0447\u0430\u043b \u0442\u0438\u0445\u043e \u0443\u0433\u0430\u0441\u0430\u0442\u044c.<\/p>\n<p>  \u0414\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043f\u043e\u0440\u044b\u0432\u0430\u043b\u0441\u044f \u0435\u0433\u043e \u0432\u043e\u0437\u0440\u043e\u0434\u0438\u0442\u044c, \u0434\u0430\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e <a href=\"https:\/\/habr.com\/ru\/post\/593095\/\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a> \u043d\u0430 habr, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0435\u043a\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b, \u043d\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u043e\u0448\u043b\u043e.<\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u044b\u043b\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u043c\u0443 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0435\u0442\u043a\u0443 \u0438\u0437 \u043a\u0443\u0447\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u0438\u043b\u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0440\u043e\u0434\u0435 GNS, \u043d\u043e \u043d\u0430 \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u0412\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0441\u043a\u0440\u043e\u043c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b.<\/p>\n<p>  \u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0431\u0451\u0440\u0442\u043a\u0443 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c snmpget\/snmpwalk \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0443 \u043c\u0435\u043d\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u0434\u0430\u043c\u043f\u044b \u0441\u043e \u0432\u0441\u0435\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430). \u041d\u0443 \u0438 \u043f\u043e\u0434\u0448\u0430\u043c\u0430\u043d\u0438\u0442\u044c \u0442\u043e\u0442-\u0436\u0435 zabbix \u043d\u0435\u043a\u0438\u043c\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438. \u041d\u0435 \u0441\u0442\u0430\u043b \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u2014 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0441\u0442 \u0441\u043a\u0432\u0435\u0440\u043d\u043e \u0432\u044b\u0440\u0443\u0433\u0430\u043b\u0441\u044f \u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0430\u0442\u044c.<\/p>\n<p>  \u0418 \u0432\u043e\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u043c\u043d\u0435 \u0434\u043e\u0432\u0435\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 <a href=\"https:\/\/labrea.sourceforge.io\/labrea-info.html\">LaBrea tarpit<\/a>. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e \u043d\u0435 \u0432 \u043a\u0443\u0440\u0441\u0435 \u044d\u0442\u043e honeypot, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0440\u0435\u0432\u043d\u0438\u0439 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439. \u0412\u043e\u0442 \u0432 \u0435\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u044f \u0438 \u0443\u0432\u0438\u0434\u0435\u043b libpcap, libdnet, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 \u2014 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u043e\u0433\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0441\u0435\u0442\u0438.  <\/p>\n<blockquote>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u0435 \u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0434\u0443\u043c\u0430\u043b\u0441\u044f<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u041f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u00abSNMP agent simulator\u00bb \u0433\u0443\u0433\u043b\u0438\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430 \u0441 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u044f \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0431\u0440\u043e\u0441\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u0442\u043e\u0435 \u2014 \u0431\u0443\u0434\u0443 \u0434\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c.<\/div>\n<\/p><\/div>\n<\/blockquote>\n<p>\u0412\u043e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435\u043c \u00ab\u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043a\u0438\u0440\u043f\u0438\u0447\u0438\u043a\u043e\u0432\u00bb, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u043c\u044b \u0438 \u0437\u0430\u0439\u043c\u0451\u043c\u0441\u044f.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0417\u0430\u0434\u0430\u0447\u0430<\/font><\/h2>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ep\/gv\/bl\/epgvblnnltjltevxm4vflg-yvig.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ep\/gv\/bl\/epgvblnnltjltevxm4vflg-yvig.png\"\/><\/p>\n<p>  \u041d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u0430 \u00ab\u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f\u00bb \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0442\u0430\u043c \u044f \u043f\u0438\u0448\u0443 (\u0432\u0435\u0440\u043d\u0435\u0435, \u0431\u0443\u0434\u0443 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c) \u0441\u0432\u043e\u044e \u043a\u0430\u0440\u0442\u0443 L3 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u041d\u0430 \u044d\u0442\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043a \u0441\u0435\u0442\u0438 10.0.0.0\/16 (\u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435, \u043d\u043e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043e\u0431\u0435\u0449\u0430\u043b \/16).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/9z\/47\/qt\/9z47qt1a7-het0lekez8h1hptcc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/9z\/47\/qt\/9z47qt1a7-het0lekez8h1hptcc.png\"\/><\/p>\n<p>  \u041d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435-\u0441\u0435\u0442\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440. \u041a\u0430\u043a\u0438\u0435 \u043e\u0442 \u043d\u0435\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f:<\/p>\n<ol>\n<li>\u041f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u043f\u0438\u043d\u0433\u0438, \u0438\u0434\u0443\u0449\u0438\u0435 \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c.<\/li>\n<li>\u0421\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u043e\u0432\/\u0441\u0435\u0442\u0435\u0439.<\/li>\n<li>\u041e\u0442\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 snmp-\u0437\u0430\u043f\u0440\u043e\u0441\u044b (v1 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e udp \u2014 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e tcp-\u0441\u0435\u0441\u0441\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0432\u0430\u0442\u043e) \u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u0445\u043e\u0441\u0442\u0443.<\/li>\n<\/ol>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c \u043d\u0435 \u0440\u0430\u0437\u0434\u0430\u044e. \u0417\u0434\u0435\u0441\u044c \u043e\u043f\u0438\u0448\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u0441\u0442\u044f\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0445\u043e\u0447\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043a\u0443\u0441\u043a\u0438 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u044e\u0442 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u0442\u0430\u043b\u043e\u043d\u043e\u043c \u0441\u0442\u0438\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u0438\u0448\u0443 \u0441\u0430\u043c\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0431\u0435\u0437 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043e\u0448\u0438\u0431\u043e\u043a, \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 (\u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e), \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u00ab\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439\u00bb \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u041f\u0435\u0440\u0432\u044b\u0435 \u0448\u0430\u0433\u0438<\/font><\/h2>\n<p>  \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e <a href=\"https:\/\/www.tcpdump.org\/\">libpcap<\/a> \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u2014 \u043e\u043d\u0430 \u0441\u043b\u0443\u0436\u0438\u0442 \u043e\u0441\u043d\u043e\u0432\u043e\u0439 <code>tcpdump\/wireshark\/snort\/nmap\/L0phtCrack<\/code> \u0438 \u0442.\u0434. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u043e\u043c \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u043e\u043c \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443. \u0410 \u0432 promiscous-\u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u0442\u0435\u0445, \u0447\u0442\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u043c\u0438\u043c\u043e. \u0412 \u0441\u0435\u0442\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438.<\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e <a href=\"http:\/\/libdnet.sourceforge.net\/&quot;\">libdnet<\/a>. \u042d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0440\u0430\u0437\u0431\u043e\u0440\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043f\u0440\u0438\u0451\u043c\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0418\u0437 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u0439\u0442 \u0438 man dnet, \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438 \u0432 \u0432\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438 \u043a\u0430\u043a \u0443 libpcap, \u0445\u043e\u0442\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0439 \u0441\u043a\u0430\u043d\u0435\u0440 nmap.  <\/p>\n<blockquote>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0410 \u043c\u043e\u0436\u043d\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0425\u043e\u0442\u044c \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0438 \u043d\u0435 \u043a\u043e\u043f\u0430\u043b, \u043d\u043e \u043c\u0435\u043b\u044c\u043a\u043e\u043c \u0433\u043b\u044f\u043d\u0443\u043b \u043d\u0430 \u0448\u0442\u0430\u0442\u043d\u044b\u0435 \u044f\u0434\u0440\u0451\u043d\u044b\u0435 Divert sockets. \u0421\u0443\u0434\u044f \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c, \u0438\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u044f\u0437\u043a\u0443 libpcap \u0438 libdnet.<\/p>\n<p>  \u041d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Divert sockets \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439, \u043f\u0440\u0438\u0447\u0451\u043c \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0438 \u0432 \u043e\u0431\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445. \u0410 \u0432\u043e\u0442 \u043c\u0435\u0441\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f libpcap \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u043a\u0430\u043a libcap socket (tcpdump) \u0438 \u0432 \u0432\u0438\u0434\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 libdnet.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/wv\/4x\/zi\/wv4xzitgdnnvmzmhydcap0o2vfi.png\" data-src=\"https:\/\/habrastorage.org\/webt\/wv\/4x\/zi\/wv4xzitgdnnvmzmhydcap0o2vfi.png\"\/><\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c \u2014 \u043c\u043e\u0436\u043d\u043e.<\/p><\/div>\n<\/p><\/div>\n<\/blockquote>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0440\u0430\u043d\u0435\u0435, \u0438\u0434\u0435\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0441\u0435\u0442\u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c, \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 LaBrea, \u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u044f\u043c\u043e \u043f\u043e \u0435\u0451 \u043a\u043e\u0434\u0443. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u00ab\u0447\u0438\u0441\u0442\u043e\u0433\u043e \u043b\u0438\u0441\u0442\u0430\u00bb, \u043d\u043e \u0441 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 LaBrea (\u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043d\u0430 github), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 netemu, \u0438 \u0442\u0430\u043c \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430 LaBrea:<\/p>\n<pre><code class=\"plaintext\">bget.h bget.c pkt.h pkt.c<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b netemu.c:<\/p>\n<pre><code class=\"cpp\">#include &lt;stdio.h> #include &lt;string.h> #include &lt;pcap.h> #include \"pkt.h\"  struct io_s {     \/* control structures (mostly uses netwk byte order) *\/     struct intf_entry     *ifent;         \/* Interface *\/     ip_addr_t             myip;           \/* My own IP addr (in host byte order) *\/     struct addr           *mymac;         \/* My own IP MAC addr *\/      \/* global variables *\/     u_char                buf[1024];     uint32_t              net;            \/* Subnet for capture *\/     uint32_t              mask;           \/* Netmask for capture *\/      \/* handles *\/     eth_t                 *eth;     intf_t                *intf;     pcap_t                *pcap;     rand_t                *rnd; };  typedef struct io_s io_t; io_t io;  char *lbio_ntoa(const ip_addr_t ip) {     ip_addr_t ip_tmp = htonl(ip);     return(ip_ntoa(&amp;ip_tmp)); }  void pkt_handler(u_char* client_data, const struct pcap_pkthdr* pcpkt, const u_char* pktdata) {     return; }  int main(int argc, char **argv) {     char dev[1024]=\"eno1\";     char bpfilter[1024]=\"dst net 10.0.0.0\/16\";      io.rnd = rand_open();      if ((io.intf = intf_open()) == NULL) {         printf(\"*** Unable to get libdnet handle for interface %s\\n\", io.ifent->intf_name);         return;     }      io.ifent = (struct intf_entry *)io.buf;     io.ifent->intf_len = sizeof(io.buf);     strncpy(io.ifent->intf_name, dev, sizeof(io.ifent->intf_name));      if (intf_get(io.intf, io.ifent) &lt; 0) {         printf(\"*** Unable to get information for interface %s\\n\", io.ifent->intf_name);         return;     }      if ((io.eth = eth_open(io.ifent->intf_name)) == NULL ) {         printf(\"*** Couldn't open libdnet link interface\\n\");         return;     }      char ebuf[PCAP_ERRBUF_SIZE];     #define PCAP_TIMEOUT 100      if ((io.pcap = pcap_open_live(dev, BUFSIZ, 1, -1, ebuf)) == NULL) {         printf(\"*** Couldn't open pcap device for sniffing\\n\" );         return;     }     printf(\"Initiated on interface: %s\\n\", io.ifent->intf_name);      if (io.myip == 0) {         if (io.ifent->intf_addr.addr_type == ADDR_TYPE_IP) {             if (io.mask == 0) {                 addr_btom(io.ifent->intf_addr.addr_bits, &amp;io.mask, IP_ADDR_LEN);                 io.mask = ntohl(io.mask);                 io.net = ntohl(io.ifent->intf_addr.addr_ip);                 io.net &amp;= io.mask;             }             io.myip = ntohl(io.ifent->intf_addr.addr_ip);         } else {             printf(\"*** Unable to determine IP address from the interface.\\n\");             return;         }     }      if (io.mymac == NULL) {         if (io.ifent->intf_link_addr.addr_type == ADDR_TYPE_ETH) {             io.mymac = &amp;(io.ifent->intf_link_addr);         } else {             printf(\"*** The interface must be of type Ethernet.\\n\");             return;         }     }      printf(\"Host system IP addr: %s, MAC addr: %s\\n\", lbio_ntoa(io.myip), addr_ntoa(io.mymac));      struct bpf_program fcode;      if (pcap_compile(io.pcap, &amp;fcode, bpfilter, 0, io.myip) &lt; 0) {         printf(\"*** Error pcap_compile: %s\\n\", bpfilter);         return;     }      if (pcap_setfilter(io.pcap, &amp;fcode) == -1) {         printf(\"*** Error pcap_setfilter\\n\");         return;     }      printf(\"Set filter: %s\\n\", bpfilter);      pkt_init(100);      printf(\"Init complete\\n\\n\");      pcap_loop(io.pcap, -1, &amp;pkt_handler, NULL);      return; } <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0443\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043a\u043e\u0440\u0435\u043d\u044c\u043a\u043e\u0435 \u0438 \u0430\u0441\u043a\u0435\u0442\u0438\u0447\u043d\u043e\u0435 \u2014 \u044f \u0431\u044b \u0434\u0430\u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043b \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0445\u044d\u0434\u0435\u0440\u044b \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0415\u0449\u0451 \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b pcap.h \u0434\u043b\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b dnet.h \u043d\u0435 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u0442.\u043a. \u043e\u043d \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442 \u0432 \u0444\u0430\u0439\u043b\u0435 pkt.h \u043e\u0442 LaBrea.<\/p>\n<p>  \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>io_s<\/code> \u044d\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0438\u0435 LaBrea, \u0445\u043e\u0442\u044c \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043a\u043e\u0446\u0430\u043d\u043d\u043e\u0435. \u0412 \u043d\u0435\u0451 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b (\u0441\u0441\u044b\u043b\u043a\u0438) \u043e\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a <code>dnet\/pcap\/pkt<\/code>. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u043c\u044b \u0437\u0430\u0432\u0435\u0434\u0451\u043c \u043e\u0434\u043d\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <code>io<\/code>.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 <code>lbio.c<\/code> \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0430 (\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430) \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>lbio_ntoa<\/code> \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0432\u0438\u0434.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>pkt_handler<\/code> \u043f\u043e\u043a\u0430 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00ab\u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430\u00bb, \u043c\u044b \u0434\u043e \u043d\u0435\u0451 \u0434\u043e\u0431\u0435\u0440\u0451\u043c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b.<\/p>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f main \u0442\u0430\u043a\u0436\u0435 \u0447\u0443\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u0447\u0435\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0431\u0440\u0430\u043d\u0430 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 LaBrea, \u043d\u043e \u0445\u043e\u0447\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 libpcap, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432. \u0417\u0434\u0435\u0441\u044c \u043b\u0438\u0448\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f libdnet.<\/p>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0432\u0438\u0434\u043d\u043e \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u0421\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u0442\u0430\u043b \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 libpcap \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0443\u044e \u043e\u0431\u0432\u044f\u0437\u043a\u0443. \u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u043d\u0430\u0433\u0443\u0433\u043b\u0438\u0442\u0435 \u0441\u0430\u043c\u0438, \u0430 \u0437\u0434\u0435\u0441\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0442\u044c \u043a\u043e\u0434. \u042f \u043f\u0440\u043e \u044d\u0442\u043e \u043f\u0438\u0441\u0430\u043b \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e.<\/p>\n<p>  \u0416\u0451\u0441\u0442\u043a\u043e \u0437\u0430\u0448\u0438\u0442\u043e\u0435 \u0438\u043c\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0434 \u0441\u0432\u043e\u0439 \u0441\u0442\u0435\u043d\u0434. \u0422\u0430\u043a\u0436\u0435, \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u0448\u0438\u043d\u0430-\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0441\u0432\u0435\u0442\u0438\u043b\u0430\u0441\u044c \u0432 \u0441\u0435\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u043c\u0430\u0448\u0438\u043d\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0444\u0430\u043d\u0442\u043e\u043c\u043d\u043e\u0439 \u0441\u0435\u0442\u044c\u044e.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u043e\u043c \u0438\u0434\u0451\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u043b\u044f libdnet. \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043f\u043e libdnet, \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b, \u0432 \u0441\u0435\u0442\u0438 \u043d\u0435\u0442 \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0442\u0430\u043a\u0436\u0435 \u0432\u0437\u044f\u0442\u044b \u0438\u0437 LaBrea \u2014 \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0435.<\/p>\n<p>  \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 libdnet \u043d\u0430 github \u0438\/\u0438\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u2014 \u0432 \u043c\u043e\u0438\u0445, \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u043e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <code>\/usr\/include\/dnet<\/code>. \u0423 \u043c\u0435\u043d\u044f \u0432\u043e\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u00ab\u0437\u0430\u043a\u043b\u0438\u043d\u0430\u043d\u0438\u044f\u00bb \u0438\u0437 LaBrea \u043f\u0435\u0440\u0435\u043a\u043e\u0447\u0435\u0432\u0430\u043b\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041f\u043e libpcap \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u043d\u0435 \u0432\u0438\u0436\u0443 \u0441\u043c\u044b\u0441\u043b\u0430. \u0418 \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u043e\u0431\u043e \u0442\u0443\u0434\u0430 \u043d\u0435 \u0432\u043d\u0438\u043a\u0430\u043b \u2014 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f, \u0442\u043e \u0431\u0435\u0433\u043e\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443!<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>pkt_init<\/code> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c 100. \u0414\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u0438\u0437 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430 LaBrea, \u0438\u0437 \u0444\u0430\u0439\u043b\u0438\u043a\u0430 pkt.c \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 (bget.c, bget.h) \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0431\u0443\u0444\u0435\u0440 \u043d\u0430 100 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0442\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 malloc, \u043d\u043e \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>  <code>pcap_loop<\/code> \u2014 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e bpfilter \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>pkt_handler<\/code>.<\/p>\n<p>  \u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435 (\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043c\u0430\u043b\u043e \u0438 \u043e\u043d\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u2014 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0451 \u0431\u044b\u0441\u0442\u0440\u043e):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ok\/aa\/01\/okaa01d588svbu43y6tkn7404za.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ok\/aa\/01\/okaa01d588svbu43y6tkn7404za.png\"\/><\/p>\n<p>  \u0422.\u043a. \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0442\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e Ctrl+C \u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u044d\u0442\u0430\u043f\u0443.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u041f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/font><\/h2>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>pkt_handler<\/code> \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0443\u0441\u0442\u0430\u044f \u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435.<\/p>\n<pre><code class=\"cpp\">void pkt_handler(u_char* client_data, const struct pcap_pkthdr* pcpkt, const u_char* pktdata) {     struct pkt *pkt;      if (pktdata == NULL)         return;      if (pcpkt->caplen > PKT_BUF_LEN) {         printf(\"Dropping oversize packet\");         return;     }      if ((pkt = pkt_new()) == NULL) {         printf(\"Error allocating new packet\");         return;     }      memcpy(pkt->pkt_data, pktdata, pcpkt->caplen);     pkt->pkt_end = pkt->pkt_data + pcpkt->caplen;      pkt_decorate(pkt);      if (ntohs(pkt->pkt_eth->eth_type) == ETH_TYPE_IP) {             if (pkt->pkt_ip == NULL) return;              ip_handler(pkt);     }      pkt_free(pkt);     return; } <\/code><\/pre>\n<p>  \u0412 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 pkt, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u044d\u0442\u0438\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u043c.<\/p>\n<p>  \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u0432 pkt.h \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 libdnet, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0444\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0434\u0440 \u0432 \u0447\u0438\u0441\u0442\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u043b\u0438\u043d\u0443 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043e\u043f\u0438\u044e \u043f\u0430\u043a\u0435\u0442 \u0432 \u043d\u0430\u0448\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 pkt.<br \/>  \u041f\u043e\u0442\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>pkt_decorate<\/code>(pkt), \u0442\u0430\u043a\u0436\u0435 \u0432\u0437\u044f\u0442\u043e\u0439 \u0438\u0437 LaBrea. \u0422\u0443\u0442 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 pkt \u0438 \u0435\u0451 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0412 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 libdnet \u2014 eth.h, arp.h, icmp.h, ip.h, tcp.h, udp.h \u0438 \u0442.\u0434. \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432. \u0418 \u0435\u0441\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b pkt \u043d\u0430 \u00ab\u0441\u044b\u0440\u044b\u0435\u00bb \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044f\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0422.\u0435. pkt_eth \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0430\u043a\u0435\u0442\u0430 ethernet, \u0442\u043e \u0432 eth_data \u043d\u0430\u0434\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0437\u0430\u043d\u0435\u0441\u0442\u0438 \u0430\u0434\u0440\u0435\u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 Ethernet. \u041f\u043e \u043f\u043e\u043b\u044e eth_type \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0431\u043e struct ip_hdr *ip \u043b\u0438\u0431\u043e struct arp_hdr *arp \u043b\u0438\u0431\u043e u_char *eth_data \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u043e\u043b\u044f\u043c IP, ARP \u0438\u043b\u0438 \u0441\u044b\u0440\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c. \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 union \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u043e\u0434\u043d\u0438\u043c \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435\u043c. \u0412\u043e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0438\u043c \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0436\u0438\u0440\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f pkt_decorate, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0430\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043a\u0440\u0438\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043a\u0440\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u0432\u0438\u0434\u0430 pkt_arp, pkt_ip, pkt_icmp, pkt_tcp_data \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0442\u0438\u043f \u043f\u0430\u043a\u0435\u0442\u0430 <code>ETH_TYPE_IP<\/code> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>pkt_ip<\/code> \u043c\u044b \u043e\u0442\u0434\u0430\u0451\u043c \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>ip_handler<\/code>. \u041d\u043e, \u0442.\u043a. \u0435\u0451 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0443\u044e \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0443 \u0438 \u0437\u0430\u043d\u043e\u0432\u043e \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043d\u043e\u0432\u044b\u0445 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u043c\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0430 \u043f\u043e\u0441\u0435\u043c\u0443 \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>ip_handler<\/code>.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c IP-\u043f\u0430\u043a\u0435\u0442<\/font><\/h2>\n<p>  \u0410 \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435!<\/p>\n<p>  \u041a\u0443\u0441\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>pkt_handler<\/code>:<\/p>\n<pre><code class=\"cpp\">static void ip_handler (struct pkt *pkt) {     printf(\"pkt_eth src:%s dst:%s proto:%04X\\n\",         eth_ntoa(&amp;pkt->pkt_eth->eth_src),         eth_ntoa(&amp;pkt->pkt_eth->eth_dst),         ntohs(pkt->pkt_eth->eth_type));      printf(\"pkt_ip v:%d hl:%d tos:%0X len:%d id:%04X off:%0X ttl:%d p:%d sum:%04X src:%s dst:%s\\n\",         pkt->pkt_ip->ip_v, pkt->pkt_ip->ip_hl*4, pkt->pkt_ip->ip_tos,         ntohs(pkt->pkt_ip->ip_len), ntohs(pkt->pkt_ip->ip_id),         pkt->pkt_ip->ip_off,         pkt->pkt_ip->ip_ttl, pkt->pkt_ip->ip_p,         ntohs(pkt->pkt_ip->ip_sum),         lbio_ntoa(ntohl(pkt->pkt_ip->ip_src)),         lbio_ntoa(ntohl(pkt->pkt_ip->ip_dst)));      switch(pkt->pkt_ip->ip_p) {          case IPPROTO_TCP:             if (pkt->pkt_tcp == NULL) return;              printf(\"pkt_tcp sport:%d dport:%d seq:%0d ack:%d off:%d flags:%0X win:%d sum:%04X\\n\",                 ntohs(pkt->pkt_tcp->th_sport), ntohs(pkt->pkt_tcp->th_dport),                 ntohl(pkt->pkt_tcp->th_seq), ntohl(pkt->pkt_tcp->th_ack),                 pkt->pkt_tcp->th_off*4, pkt->pkt_tcp->th_flags,                 ntohs(pkt->pkt_tcp->th_win), ntohs(pkt->pkt_tcp->th_sum));              break;          case IPPROTO_UDP:             if (pkt->pkt_udp == NULL) return;              printf(\"pkt_udp sport:%d dport:%d ulen:%d sum:%04X\\n\",                 ntohs(pkt->pkt_udp->uh_sport), ntohs(pkt->pkt_udp->uh_dport),                 ntohs(pkt->pkt_udp->uh_ulen), ntohs(pkt->pkt_udp->uh_sum));              break;          case IPPROTO_ICMP:             if (pkt->pkt_icmp == NULL) return;              printf(\"pkt_icmp type:%d, code:%d, cksum:%04X\\n\",                 pkt->pkt_icmp->icmp_type,                 pkt->pkt_icmp->icmp_code,                 ntohs(pkt->pkt_icmp->icmp_cksum));              return;          default:             break;     }      printf(\"\\n\");     return; } <\/code><\/pre>\n<p>  \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432. \u0412 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 printf \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0432\u0438\u0434\u043d\u043e, \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043f\u043e\u043b\u044f\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0430\u0439\u0442.<\/p>\n<p>  \u041c\u044b \u0441\u043c\u0435\u043b\u043e \u043f\u0438\u0448\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 ethernet \u0438 ip \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u0442.\u043a. \u0447\u0451\u0442\u043a\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u043c \u043e\u0442\u0434\u0430\u0451\u0442 libpcap \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u0410 \u0432\u043e\u0442 \u0434\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0438\u043f\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0432 IP-\u043f\u0430\u043a\u0435\u0442\u0435.<\/p>\n<p>  \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e case \u0443 \u043d\u0430\u0441 \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 NULL, \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u0441\u0431\u043e\u044f <code>pkt_decorate<\/code>. \u0427\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0440\u0438\u0441\u0443\u0435\u043c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435. \u041f\u0440\u0438\u0432\u0435\u0434\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438:<\/p>\n<ul>\n<li>INTERNET PROTOCOL \u2014 RFC 791<\/li>\n<li>Transmission Control Protocol (TCP) \u2014 RFC 9293<\/li>\n<li>User Datagram Protocol \u2014 RFC 768<\/li>\n<li>ICMP \u2014 RFC 792, 950, 1256, 1393, 1475, 2002, 2521<\/li>\n<\/ul>\n<p>  \u041f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 TCP \u0441\u043e\u0441\u043b\u0430\u043b\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u044b\u0439 \u0441\u0432\u0435\u0436\u0438\u0439 RFC, \u043f\u043e \u043d\u0435\u043c\u0443 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0431\u044b\u043b\u0430 \u0437\u0434\u0435\u0441\u044c<br \/>  <a href=\"https:\/\/habr.com\/ru\/company\/vasexperts\/blog\/684516\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a>, \u043e\u0434\u043d\u0430\u043a\u043e libdnet \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 RFC 793. \u041d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442, \u0442.\u043a. \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0438 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u0432 RFC 9293 \u043d\u0435 \u0437\u0430\u043d\u0435\u0441\u043b\u0438 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0432\u0441\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>  \u0427\u0438\u0442\u0430\u0442\u044c RFC \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u043a\u0440\u0443\u0442\u043e, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0441\u0445\u0435\u043c\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0442\u0430\u043c \u043a\u043b\u0451\u0432\u044b\u0435, \u043d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u0445\u043e\u0434\u0447\u0438\u0432\u043e\u0435 \u0438 \u043d\u0430 \u0440\u043e\u0434\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0433\u0443 \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u043d\u0438\u0433\u0443 \u0423.\u0420.\u0421\u0442\u0438\u0432\u0435\u043d\u0441\u0430 \u00abUnix. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439\u00bb:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/kl\/sg\/x2\/klsgx2ll3mjgeuv_z_sm8yrluq4.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/kl\/sg\/x2\/klsgx2ll3mjgeuv_z_sm8yrluq4.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u043e\u043f\u0438\u043d\u0433\u0443\u0435\u043c \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0435\u0442\u0438. \u041d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 icmp-\u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0417\u0430\u0442\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 UDP. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c snmpget \u043d\u0430 \u0442\u043e\u0442-\u0436\u0435 \u0430\u0434\u0440\u0435\u0441. \u0418 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 TCP (\u0437\u0430\u043f\u0443\u0441\u043a telnet):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/8c\/w5\/xz\/8cw5xzjknyepp1nfswcckn4bukq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/8c\/w5\/xz\/8cw5xzjknyepp1nfswcckn4bukq.png\"\/><\/p>\n<p>  \u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c \u2014 \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0438 \u043a\u0430\u043a \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443.<\/p>\n<p>  \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u043d\u0451\u0442\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0442\u0440\u0430\u0444\u0438\u043a \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 tcpdump \u0438\u043b\u0438 wireshark \u2014 \u043e\u043d\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u041e\u0442\u0432\u0435\u0447\u0430\u0435\u043c \u043d\u0430 ping<\/font><\/h2>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e ip_handler \u2014 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e icmp-\u043f\u0430\u043a\u0435\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"cpp\">    struct addr a;      addr_aton(\"10.0.0.13\", &amp;a);      if ((pkt->pkt_icmp->icmp_type == ICMP_ECHO)         &amp;&amp; (pkt->pkt_icmp->icmp_code == ICMP_CODE_NONE))          if (pkt->pkt_ip->ip_dst == a.addr_ip) send_icmp_reply(pkt); <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u2014 \u043c\u044b \u0437\u0430\u0432\u0435\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0437\u0430\u043d\u0435\u0441\u043b\u0438 \u0442\u0443\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0439 \u043d\u0430\u043c \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e-\u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b IP-\u0430\u0434\u0440\u0435\u0441\u0430 (\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 dnet\/addr.h). \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 <code>ICMP_ECHO<\/code> \u2014 \u0431\u044b\u043b\u043e-\u0431\u044b \u043d\u0435\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u0442\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u044b \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043e\u0433\u043e \u043f\u0438\u043d\u0433\u0443\u044e\u0442 \u2014 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0445\u043e\u0441\u0442 10.0.0.13 \u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>send_icmp_reply<\/code> \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442.<\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 ip_handler \u043d\u0430\u0448\u0443 \u043d\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<pre><code class=\"cpp\">void send_icmp_reply(struct pkt *pkt) {     struct pkt *new = NULL;      new = pkt_dup(pkt);      new->pkt_icmp->icmp_type = ICMP_ECHOREPLY;      eth_pack_hdr(new->pkt_eth,                 pkt->pkt_eth->eth_src,\/* orig src MAC becomes new dest MAC *\/                 io.mymac,\/* my own mac becomes new src MAC *\/                 ETH_TYPE_IP);      ip_pack_hdr(new->pkt_ip,                 0,\/* tos *\/                 ntohs(new->pkt_ip->ip_len),\/* IP hdr length *\/                 rand_uint16( io.rnd ),\/* ipid *\/                 0,\/* frag offset *\/                 IP_TTL_DEFAULT,                 IP_PROTO_ICMP,\/* ip protocol of original pkt *\/                 pkt->pkt_ip->ip_dst,\/* orig dst becomes new src addr *\/                 pkt->pkt_ip->ip_src);       ip_checksum(new->pkt_ip, new->pkt_end - new->pkt_eth_data);      int ret_code = eth_send(io.eth, new->pkt_eth, new->pkt_end - (u_char *) new->pkt_eth);      if (ret_code &lt; 0)         printf(\"*** Problem sending packet\\n\");      pkt_free(new);     return; } <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442.\u043a. \u043e\u0442\u0432\u0435\u0442\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 icmp \u043d\u0430 \u043f\u0438\u043d\u0433 \u0438\u043c\u0435\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u043d\u0435 \u0441 \u043d\u0443\u043b\u044f, \u0430 \u043f\u043e\u043b\u043d\u044b\u043c \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043d\u0430\u0448\u0443 \u0437\u0430\u0434\u0430\u0447\u0443, \u0442.\u043a. \u043f\u0430\u043a\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043e\u0442\u0432\u0435\u0442\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0438 \u0432 \u043d\u0438\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0438\u043f \u043f\u0430\u043a\u0435\u0442\u0430 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0438 \u043f\u0440\u0438\u0451\u043c\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438. \u0422\u0430\u043a\u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>pkt_dup<\/code> \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0432\u0438\u043c \u0442\u0438\u043f icmp-\u043f\u0430\u043a\u0435\u0442\u0430 \u043a\u0430\u043a <code>ICMP_ECHOREPLY<\/code>.<\/p>\n<p>  \u041c\u0430\u043a\u0440\u043e\u0441\u043e\u043c <code>eth_pack_hdr<\/code> (\u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0432 dnet\/eth.h) \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u044f eth \u2014 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u0430<br \/>  MAC-\u0430\u0434\u0440\u0435\u0441 \u043c\u0430\u0448\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0441 \u043f\u0438\u043d\u0433\u0443\u0435\u0442. \u0412 \u043f\u043e\u043b\u0435 src \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0432\u043e\u0439 MAC-\u0430\u0434\u0440\u0435\u0441, \u0442.\u043a. \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439 \u0438 \u044f\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u00ab\u0447\u0435\u0441\u0442\u043d\u044b\u043c\u00bb \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c :).<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0430\u043a\u0440\u043e\u0441 <code>ip_pack_hdr<\/code> (\u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0432 dnet\/ip.h) \u043f\u0440\u0430\u0432\u0438\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 IP. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 IP-\u0430\u0434\u0440\u0435\u0441\u0430. \u041c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c ttl \u043f\u0430\u043a\u0435\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0438\u043b\u0438 \u043a\u0430\u043a \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <code>IP_TTL_DEFAULT<\/code>.<\/p>\n<p>  \u0421\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 IP-\u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0435\u0433\u043e \u0432 \u0441\u0435\u0442\u044c.<\/p>\n<p>  \u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0438 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0438\u043d\u0433\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 10.0.0.13 \u0438 10.0.0.1:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/dg\/j-\/fv\/dgj-fvdvdpvs-j5devc1szxr4wm.png\" data-src=\"https:\/\/habrastorage.org\/webt\/dg\/j-\/fv\/dgj-fvdvdpvs-j5devc1szxr4wm.png\"\/><\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0423\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043f\u0438\u043d\u0433\u043e\u0432\u0430\u0442\u044c\u0441\u044f<\/font><\/h2>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043c ip_handler:<\/p>\n<pre><code class=\"cpp\">     if (pkt->pkt_ip->ip_dst == a.addr_ip)         send_icmp_reply(pkt);     else         send_icmp_unreach(pkt, \"10.0.5.30\", ICMP_UNREACH_NET);  <\/code><\/pre>\n<p>  \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043b\u043e\u0433\u0438\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u043c\u044b \u043f\u0438\u043d\u0433\u0443\u0435\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0447\u0435\u0441\u0442\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 10.0.0.13, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u0431\u043e\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u00abDestination Net Unreachable\u00bb \u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e 100% \u043f\u043e\u0442\u0435\u0440\u044e \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435, \u0430 \u0435\u0449\u0451 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f send_icmp_unreach \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0421\u0432\u044f\u0437\u0430\u043d\u043e \u044d\u0442\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0430\u043a\u0435\u0442 \u0442\u0438\u043f\u0430 <code>ICMP_UNREACH<\/code> \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043e\u0442\u0431\u043e\u044f \u0432 \u043f\u043e\u043b\u0435 <code>code<\/code>. \u041f\u0440\u0438\u0447\u0438\u043d \u044d\u0442\u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 16 \u0432\u0438\u0434\u043e\u0432. \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0438 \u0442\u043e\u043b\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u0443\u0434\u0443 \u2014 \u0441\u0430\u043c\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0438\u043b\u0438 \u0432 <code>dnet\/icmp.h<\/code>. \u0412 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043e\u0439\u0434\u0443\u0442 <code>ICMP_UNREACH_NET<\/code> \u0438 <code>ICMP_UNREACH_HOST<\/code>.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <code>send_icmp_unreach<\/code>:<\/p>\n<pre><code class=\"cpp\">void send_icmp_unreach(struct pkt *pkt, char *host, int reason) {     struct pkt *new = NULL;      if ((new = pkt_new()) == NULL) {         printf(\"*** Error allocating the new outbound pkt\\n\");         return;     }      eth_pack_hdr(new->pkt_eth,                 pkt->pkt_eth->eth_src,\/* orig src MAC becomes new dest MAC *\/                 io.mymac,\/* my own mac becomes new src MAC *\/                 ETH_TYPE_IP);      int quote_len = pkt->pkt_ip->ip_hl*4 + 8; \/* original packet IP header + 8 bytes *\/      struct addr a;      addr_aton(host, &amp;a);      ip_pack_hdr(new->pkt_ip,                  0,\/* tos *\/                 (IP_HDR_LEN + ICMP_LEN_MIN + quote_len),\/* IP hdr length *\/                 rand_uint16( io.rnd ),\/* ipid *\/                 0,\/* frag offset *\/                 IP_TTL_DEFAULT,                 IP_PROTO_ICMP,\/* ip protocol of original pkt *\/                 a.addr_ip,                 pkt->pkt_ip->ip_src);      new->pkt_icmp_msg = (union icmp_msg *)(new->pkt_ip_data + ICMP_HDR_LEN);     new->pkt_end = (u_char *)new->pkt_eth_data + ntohs(new->pkt_ip->ip_len);      icmp_pack_hdr_quote(new->pkt_icmp, ICMP_UNREACH, reason, 0, pkt->pkt_ip, quote_len);      \/*     new->pkt_icmp->icmp_type = ICMP_UNREACH;     new->pkt_icmp->icmp_code = reason;     new->pkt_icmp_msg->unreach.icmp_void = 0;     memcpy(new->pkt_icmp_msg->unreach.icmp_ip, pkt->pkt_ip, quote_len);     *\/      ip_checksum(new->pkt_ip, new->pkt_end - new->pkt_eth_data);      int ret_code = eth_send(io.eth, new->pkt_eth, new->pkt_end - (u_char *) new->pkt_eth);      if (ret_code &lt; 0)         printf(\"*** Problem sending packet\\n\");      pkt_free(new);     return; } <\/code><\/pre>\n<p>  \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 <code>send_icmp_reply<\/code>, \u043e\u0434\u043d\u0430\u043a\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u2014 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e, \u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0441 \u043d\u0443\u043b\u044f.<\/p>\n<p>  \u041c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 eth \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u2014 \u0442\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0434\u043b\u0438\u043d\u0443 \u00ab\u0446\u0438\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e\u00bb \u0443\u0447\u0430\u0441\u0442\u043a\u0430 (quote_len). \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442 icmp-unreachable, \u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a ip-\u0434\u0435\u0439\u0442\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043f\u0435\u0440\u0432\u044b\u0435 8 \u0431\u0430\u0439\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u042d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430. <\/p>\n<p>  \u041a\u0430\u043a \u0435\u0451 \u0441\u0447\u0438\u0442\u0430\u0435\u043c: \u0431\u0435\u0440\u0451\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 ip \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 (\u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 32-\u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u0441\u043b\u043e\u0432\u0430\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u043c\u043d\u043e\u0436\u0438\u043c \u043d\u0430 4) \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0449\u0451 8 \u0431\u0430\u0439\u0442.<\/p>\n<p>  \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 IP \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u041e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u2014 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u043f\u0430\u043a\u0435\u0442\u0430. \u0414\u043b\u0438\u043d\u0430 ip-\u043f\u0430\u043a\u0435\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0434\u043b\u0438\u043d\u044b IP-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 (IP_HDR_LEN \u2014 dnet\/ip.h), \u0434\u043b\u0438\u043d\u044b ICMP-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 (ICMP_LEN_MIN \u2014 dnet\/icmp.h) \u0438 \u0434\u043b\u0438\u043d\u044b \u0446\u0438\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 (quote_len). <\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0442\u0443\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u043d \u00ab\u043b\u0435\u0432\u044b\u0439\u00bb \u0430\u0434\u0440\u0435\u0441 \u2014 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 \u043e\u0442\u0431\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.<\/p>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043e\u0442\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043a \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e traceroute \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0430\u043a\u0435\u0442\u044b \u0441 \u043d\u0430\u0440\u0430\u0441\u0442\u0430\u044e\u0449\u0438\u043c ttl \u2014 \u043e\u0442 1 \u0434\u043e \u043f\u043e\u0431\u0435\u0434\u044b. \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u00ab\u043f\u0440\u044b\u0436\u043a\u0430\u00bb \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440 ttl \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443. \u0415\u0441\u043b\u0438 ttl \u043e\u0431\u043d\u0443\u043b\u0438\u043b\u043e\u0441\u044c, \u0442\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0432 \u0430\u0434\u0440\u0435\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f \u043f\u0430\u043a\u0435\u0442 icmp \u0442\u0438\u043f\u0430 <code>ICMP_TIMEXCEED<\/code> \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0430\u043a\u0435\u0442\u0430. \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 traceroute \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0442\u0440\u0430\u043d\u0437\u0438\u0442\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u0434\u043e \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041d\u0443 \u0438 \u0442\u0430\u043a\u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0447\u0442\u043e \u043e\u0442\u0431\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 icmp-\u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0430 ip-\u043f\u0430\u043a\u0435\u0442\u044b \u0441 \u043b\u044e\u0431\u044b\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c.<\/p>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u00ab\u0441 \u043d\u0443\u043b\u044f\u00bb, \u0442\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 pkt. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u0432 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 <code>pkt_icmp_msg<\/code> \u0438 <code>pkt_end<\/code>. \u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0437\u0434\u0435\u0441\u044c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <code>pkt_decorate<\/code>, \u0442.\u043a. \u043d\u0430\u0448 \u043f\u0430\u043a\u0435\u0442 \u0435\u0449\u0451 \u043d\u0435 \u0434\u043e\u0434\u0435\u043b\u0430\u043d.<\/p>\n<p>  \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 <code>pkt_icmp_msg<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441 <code>icmp_pack_hdr_quote<\/code> (dnet\/icmp.h), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0435\u0440\u0451\u0442 \u043e\u0442\u0432\u0435\u0442\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0438 \u0432\u043b\u043e\u0436\u0438\u0442 \u0432 \u043d\u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0439\u0442 \u0438\u0437 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441, \u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f icmp-\u043e\u0442\u0432\u0435\u0442\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e \u2014 \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430.<\/p>\n<p>  \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0441 \u043f\u0438\u043d\u0433\u0430\u043c\u0438, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u0432\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u0435\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/fe\/fq\/ws\/fefqwstayjab56vuhl89ryt5jm4.png\" data-src=\"https:\/\/habrastorage.org\/webt\/fe\/fq\/ws\/fefqwstayjab56vuhl89ryt5jm4.png\"\/><\/p>\n<p>  \u0418 \u0435\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u043d\u0435 \u0437\u043d\u0430\u043b\u0438 \u043a\u0430\u043a \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u044d\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u044b, \u0442\u043e \u0431\u044b\u043b\u0438 \u0431\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u044b \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0438\u043d\u0433\u0438 \u0438\u0437 \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u043e\u0439 \u0441\u0435\u0442\u0438 \ud83d\ude42<\/p>\n<h2><font color=\"#3AC1EF\">\u258d SNMP<\/font><\/h2>\n<p>  \u0417\u0430\u0434\u0430\u0447\u0430 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u0430\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u0438 \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u0432\u043e Simple. \u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 ASN.1 \u0434\u043b\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u2014 \u043a\u0430\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0442\u0430\u043a \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432. \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/150757\/\">ASN.1 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438.<\/a>.<\/p>\n<p>  \u041d\u0443 \u0438 \u0441\u0430\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b SNMP \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u0414\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434, \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 asn.1 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430\/\u043a\u043e\u0434\u0435\u0440\u0430 \u0441 \u043d\u0443\u043b\u044f, \u0434\u0430 \u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 snmp-\u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0431\u0443\u043c\u0430\u0436\u043a\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u043b \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/nikandfor\/csnmp\">csnmp<\/a> (Copyright \u00a9 2019 Nikifor Seryakov).<\/p>\n<p>  \u0412 \u0432\u0438\u0434\u0443 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u043a\u0430\u043a \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439, \u0442\u0430\u043a \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u044d\u0442\u043e \u0432\u0441\u0451 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u041a\u043e\u043d\u0435\u0446<\/font><\/h2>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0451, \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0432\u043e\u0439 \u044f \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b, \u043d\u043e \u00ab\u043a\u0438\u0440\u043f\u0438\u0447\u0438\u043a\u043e\u0432\u00bb \u0434\u043b\u044f \u0435\u0433\u043e \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0441\u043b\u0430\u0431\u043e\u0439 \u043e\u0444\u0438\u0441\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043a\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u0443\u044e \u0441\u0435\u0442\u044c-\u043c\u0438\u0440\u0430\u0436, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0438\u043d\u0433\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0445\u043e\u0441\u0442\u044b, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u043e\u0442\u0431\u043e\u0438 \u0438 \u0431\u0435\u0441\u0441\u043b\u0435\u0434\u043d\u043e \u0438\u0441\u0447\u0435\u0437\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c\u0441\u044f \u2014 \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 libpcap \u0438 libdnet \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u043e\u0441\u044c.  <\/p>\n<blockquote><p><b><font color=\"#3AC1EF\"><a href=\"https:\/\/bit.ly\/3KZeaxv\">Telegram-\u043a\u0430\u043d\u0430\u043b<\/a> \u0438 <a href=\"https:\/\/bit.ly\/3qoIOXs\">\u0443\u044e\u0442\u043d\u044b\u0439 \u0447\u0430\u0442<\/a><\/font><\/b><\/p><\/blockquote>\n<p><a href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=alef13%0A&amp;utm_content=kak_zavladet_setyu_\/16_s_pomoshhyu_libpcap_i_libdnet\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/sz\/7j\/pf\/sz7jpfj8i1pa6ocj-eia09dev4q.png\" data-src=\"https:\/\/habrastorage.org\/webt\/sz\/7j\/pf\/sz7jpfj8i1pa6ocj-eia09dev4q.png\"\/><\/a><\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/688314\/\"> https:\/\/habr.com\/ru\/company\/ruvds\/blog\/688314\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/688314\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/y-\/2m\/hh\/y-2mhhtc543laa4qi_2erks00e8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/y-\/2m\/hh\/y-2mhhtc543laa4qi_2erks00e8.png\"\/><\/div>\n<p><\/a><br \/>  \u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0438\u0437\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 libpacp \u0438 libdnet. \u041f\u0440\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043c\u043d\u043e\u0433\u0438\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0438 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438, \u0442.\u043a. \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043d\u0435\u0439 \u0432 \u0441\u0435\u0442\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0442. \u0410 \u0432\u0435\u0434\u044c \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0430\u043c Fyodor \ud83d\ude42  <\/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-339247","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/339247","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=339247"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/339247\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=339247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=339247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=339247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}