{"id":211284,"date":"2014-02-04T00:18:03","date_gmt":"2014-02-03T20:18:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=211284"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=211284","title":{"rendered":"<span class=\"post_title\">\u0427\u0438\u043d\u0438\u043c hanstunnel \u043d\u0430 openwrt (\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430)<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043c\u043d\u043e\u0433\u0438\u0435 \u0442\u0443\u0442 \u0437\u043d\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0443 <a href=\"http:\/\/code.gerade.org\/hans\/\">hanstunnel<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0442\u0443\u043d\u043d\u0435\u043b\u044c \u043f\u043e\u0432\u0435\u0440\u0445 ICMP, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u043f\u0438\u043d\u0433\u043e\u0432. \u0420\u0435\u0448\u0438\u043b \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0435 \u0441\u0435\u0431\u0435 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440 \u043f\u043e\u0434 openwrt. \u0421\u043e\u0431\u0440\u0430\u043b, \u0437\u0430\u0432\u0435\u043b\u2026 \u041d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0421\u0438\u043c\u043f\u0442\u043e\u043c\u044b \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u2014 \u043f\u0430\u043a\u0435\u0442 \u0443\u0445\u043e\u0434\u0438\u0442 \u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c, \u0430 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u0430 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u043a\u0435 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u043e\u0442 \u0436\u0435 hans, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u043e\u043c\u043f\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0440\u0443\u0436\u0443 \u0431\u0435\u0437 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u041a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043a\u0430\u043a \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442 hans \u043f\u043e\u0434 openwrt \u0438 \u043a\u0430\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u2014 \u0432\u0435\u043b\u043a\u043e\u043c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u044d\u0442\u0430\u043f \u2014 \u0441\u0431\u043e\u0440\u043a\u0430. \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0443 \u0441\u0435\u0431\u044f \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441\u0440\u0435\u0434\u0443 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0441\u0430\u0439\u0442\u0435 <a href=\"http:\/\/wiki.openwrt.org\/doc\/start#building.openwrt\">openwrt<\/a>, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0432 \u043a\u0443\u0447\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0437\u0430 \u043a\u0430\u0434\u0440\u043e\u043c. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0440\u0435\u0434\u0430 \u0441 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c toolchain&#8217;\u043e\u043c \u0438 \u043e\u043d\u0430 \u0443\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b openwrt. <br \/>  \u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a hanstunnel, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c <a href=\"http:\/\/sourceforge.net\/projects\/hanstunnel\/files\/source\/\">\u0442\u0443\u0442<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 Makefile \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u0430, \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0438 \u0444\u0430\u0439\u043b init-\u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0442\u0440\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u044f \u043d\u0430\u0448\u0435\u043b <a href=\"https:\/\/dev.openwrt.org\/attachment\/ticket\/14029\/hans.patch\">\u0442\u0443\u0442<\/a> \u0432 \u0432\u0438\u0434\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0430\u0442\u0447\u0435\u0439. \u041c\u043e\u0436\u0435\u0442, \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0439\u0434\u0435\u0442 \u043f\u0440\u044f\u043c\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u043d\u043e \u043c\u043d\u0435 \u0438 \u0442\u0430\u043a \u043f\u043e\u0434\u043e\u0448\u043b\u043e. \u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u0432\u043e\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0430\u043f\u043a\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 custom, \u0432 \u043d\u0435\u0435 \u043a\u043b\u0430\u0434\u0435\u043c \u043f\u0430\u043f\u043a\u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043d\u0430\u0432\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u0438\u0445 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438\u0437 package\/feeds\/packages. \u042f \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u043b\u0438\u043b Makefile \u0434\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0438\u0445 \u043f\u0430\u043f\u043a\u0438 src, \u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u0440\u044f\u0434\u043e\u043c, <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0432\u043e\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre>  # Copyright (C) 2006 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See \/LICENSE for more information. # # $Id: Makefile 6008 2007-01-06 18:39:10Z nbd $  include $(TOPDIR)\/rules.mk  PKG_NAME:=hanstunnel PKG_VERSION:=0.4.3 PKG_RELEASE:=1  PKG_BUILD_DIR:=$(BUILD_DIR)\/$(PKG_NAME)-$(PKG_VERSION)  include $(INCLUDE_DIR)\/package.mk  define Package\/hanstunnel         SECTION:=net         CATEGORY:=Network         SUBMENU:=Firewall Tunnel         DEPENDS:=+libstdcpp +kmod-tun         TITLE:=Hans IP over ICMP         URL:=http:\/\/code.gerade.org\/hans\/ endef  define Package\/hanstunnel\/description         Hans makes it possible to tunnel IPv4 through ICMP echo packets,         so you could call it a ping tunnel. This can be useful when you         find yourself in the situation that your Internet access is         firewalled, but pings are allowed. endef endef  define Build\/Prepare         echo PREPARE PREPARE         mkdir -p $(PKG_BUILD_DIR)         cp -r .\/src\/* $(PKG_BUILD_DIR)\/ endef  define Build\/Compile          $(MAKE) -C $(PKG_BUILD_DIR) GCC=$(TARGET_CC) GPP=$(TARGET_CXX) endef     define Package\/hanstunnel\/install         $(INSTALL_DIR) $(1)\/usr\/sbin         $(INSTALL_BIN) $(PKG_BUILD_DIR)\/hans $(1)\/usr\/sbin\/         $(INSTALL_DIR) $(1)\/etc\/init.d         $(INSTALL_BIN) .\/files\/hans.init $(1)\/etc\/init.d\/hans         $(INSTALL_DIR) $(1)\/etc\/config         $(INSTALL_CONF) .\/files\/hans.config $(1)\/etc\/config\/hans endef  $(eval $(call BuildPackage,hanstunnel)) <\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0428\u0430\u043f\u043a\u0443 Makefile&#8217;\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u043b\u0438\u0442\u044c  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Makefile \u0441\u0431\u043e\u0440\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre> #LDFLAGS += `sh osflags ld $(MODE)` CFLAGS += -c -g -DLINUX -DHAVE_LINUX_IF_TUN_H TUN_DEV_FILE = src\/tun_dev_linux.c #GCC = gcc #GPP = g++  .PHONY: directories  all: hans  directories: build_dir  build_dir: \tmkdir -p build  tunemu.o: directories build\/tunemu.o  hans: directories build\/tun.o build\/sha1.o build\/main.o build\/client.o build\/server.o build\/auth.o build\/worker.o build\/time.o build\/tun_dev.o build\/echo.o build\/exception.o build\/utility.o \t$(GPP) -o hans build\/tun.o build\/sha1.o build\/main.o build\/client.o build\/server.o build\/auth.o build\/worker.o build\/time.o build\/tun_dev.o build\/echo.o build\/exception.o build\/utility.o $(LDFLAGS)  build\/utility.o: src\/utility.cpp src\/utility.h \t$(GPP) -c src\/utility.cpp -o $@ -o $@ $(CFLAGS)  build\/exception.o: src\/exception.cpp src\/exception.h \t$(GPP) -c src\/exception.cpp -o $@ $(CFLAGS)  build\/echo.o: src\/echo.cpp src\/echo.h src\/exception.h \t$(GPP) -c src\/echo.cpp -o $@ $(CFLAGS)  build\/tun.o: src\/tun.cpp src\/tun.h src\/exception.h src\/utility.h src\/tun_dev.h \t$(GPP) -c src\/tun.cpp -o $@ $(CFLAGS)  build\/tun_dev.o: \t$(GCC) -c $(TUN_DEV_FILE) -o build\/tun_dev.o -o $@ $(CFLAGS)  build\/sha1.o: src\/sha1.cpp src\/sha1.h \t$(GPP) -c src\/sha1.cpp -o $@ $(CFLAGS)  build\/main.o: src\/main.cpp src\/client.h src\/server.h src\/exception.h src\/worker.h src\/auth.h src\/time.h src\/echo.h src\/tun.h src\/tun_dev.h \t$(GPP) -c src\/main.cpp -o $@ $(CFLAGS)  build\/client.o: src\/client.cpp src\/client.h src\/server.h src\/exception.h src\/config.h src\/worker.h src\/auth.h src\/time.h src\/echo.h src\/tun.h src\/tun_dev.h \t$(GPP) -c src\/client.cpp -o $@ $(CFLAGS)  build\/server.o: src\/server.cpp src\/server.h src\/client.h src\/utility.h src\/config.h src\/worker.h src\/auth.h src\/time.h src\/echo.h src\/tun.h src\/tun_dev.h \t$(GPP) -c src\/server.cpp -o $@ $(CFLAGS)  build\/auth.o: src\/auth.cpp src\/auth.h src\/sha1.h src\/utility.h \t$(GPP) -c src\/auth.cpp -o $@ $(CFLAGS)  build\/worker.o: src\/worker.cpp src\/worker.h src\/tun.h src\/exception.h src\/time.h src\/echo.h src\/tun_dev.h src\/config.h \t$(GPP) -c src\/worker.cpp -o $@ $(CFLAGS)  build\/time.o: src\/time.cpp src\/time.h \t$(GPP) -c src\/time.cpp -o $@ $(CFLAGS)  clean: \trm -f build\/tun.o build\/sha1.o build\/main.o build\/client.o build\/server.o build\/auth.o build\/worker.o build\/time.o build\/tun_dev.o build\/echo.o build\/exception.o build\/utility.o build\/tunemu.o hans \trm -df build  build\/tunemu.o: src\/tunemu.h src\/tunemu.c \t$(GCC) -c src\/tunemu.c -o build\/tunemu.o <\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0420\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u043c\u0435\u0441\u0442\u0430\u043c, \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u043f\u0430:<\/p>\n<pre> $ls -R custom  custom: hanstunnel  custom\/hanstunnel: files  Makefile  src  custom\/hanstunnel\/files: hans.config  hans.init  custom\/hanstunnel\/src: Makefile  osflags  src  custom\/hanstunnel\/src\/src: auth.cpp    client.h  echo.h         main.cpp    sha1.cpp          time.cpp  tun_dev_darwin_emu.c  tun_dev.h          tun_dev_svr4.c  tun.h        worker.cpp auth.h      config.h  exception.cpp  server.cpp  sha1.h            time.h    tun_dev_freebsd.c     tun_dev_linux.c    tunemu.c        utility.cpp  worker.h client.cpp  echo.cpp  exception.h    server.h    sha1_license.txt  tun.cpp   tun_dev_generic.c     tun_dev_openbsd.c  tunemu.h        utility.h <\/pre>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0435\u043c \u0432 \u043a\u043e\u0440\u0435\u043d\u044c buildroot \u0438 \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u043c  <\/p>\n<pre> $make package\/feeds\/packages\/hanstunnel\/compile -j5  make[1] package\/feeds\/packages\/hanstunnel\/compile  make[2] -C package\/kernel\/linux compile  make[2] -C package\/libs\/toolchain compile  make[2] -C custom\/hanstunnel compile <\/pre>\n<p>  \u0412\u0441\u0435, \u043f\u0430\u043a\u0435\u0442 \u0433\u043e\u0442\u043e\u0432, \u043b\u0435\u0436\u0438\u0442 \u043e\u043d \u0432 \u043f\u0430\u043f\u043a\u0435 bin \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c. \u0412\u043e\u0442 \u0442\u0443\u0442 \u043c\u0435\u043d\u044f \u0436\u0434\u0430\u043b \u043e\u0431\u043b\u043e\u043c. \u0421 \u043c\u043e\u0438\u043c \u043a\u043e\u043c\u043f\u043e\u043c \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u043a\u0435 \u0442\u0443\u043d\u043d\u0435\u043b\u044c \u043f\u043e\u0434\u043d\u044f\u043b\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0431\u0435\u0437 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u0422\u043e\u043b\u044c\u043a\u043e \u044f \u043e\u0431\u0440\u0430\u0434\u043e\u0432\u0430\u043b\u0441\u044f \u0438 \u043f\u043e\u0448\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u043d\u043e, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043f\u0430\u043a\u0435\u0442\u044b \u0441 openwrt \u0443\u0445\u043e\u0434\u0438\u043b\u0438, \u0430 \u0430\u0434\u0440\u0435\u0441\u0430\u0442 \u0438\u0445 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b. \u0422\u0430 \u0436\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0430, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c hans \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u043b\u0433\u0438\u0445 \u0440\u0430\u0437\u0434\u0443\u043c\u0438\u0439 \u044f \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0441\u044f \u0441\u043d\u044f\u0442\u044c \u0434\u0430\u043c\u043f ICMP \u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0438 \u0441 \u043c\u043e\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0430. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u0435 ICMP, \u043e \u0447\u0435\u043c \u043c\u043d\u0435 \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0438\u043b wireshark. \u042f \u0447\u0435\u0441\u0442\u043d\u043e \u0432\u0437\u044f\u043b \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0438 \u043f\u043e\u0448\u0435\u043b \u0441\u0430\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0443\u043c\u043c\u0443 \u043f\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443, \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 echo.cpp, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 <a href=\"http:\/\/www.faqs.org\/rfcs\/rfc1071.html\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439<\/a>. \u041f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u043d\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u043d\u0435\u0447\u0435\u0442\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 MIPS \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435. \u0414\u043e\u0431\u0440\u044b\u0435 \u043b\u044e\u0434\u0438 \u0432 RFC \u043f\u0438\u0448\u0443\u0442, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u0430\u0439\u0442 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0441\u0443\u043c\u043c\u0435, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u041f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0434\u043e \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u0430\u0439\u0442, \u0430 \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430, \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 0, \u0447\u0442\u043e \u043d\u0430 Big-endian \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u0445 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u0431\u0430\u0432\u043a\u0443 \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043f\u043e\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430 256.<br \/>  \u0412\u043e\u0442 \u043a\u0430\u043a\u0430\u044f \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f icmpChecksum:<\/p>\n<pre> uint16_t Echo::icmpChecksum(const char *data, int length) {     uint16_t *data16 = (uint16_t *)data;     uint32_t sum = 0;      for (sum = 0; length &gt; 1; length -= 2)         sum += *data16++;       if (length == 1)     {         uint16_t last = *(unsigned char *)data16;         last &lt;&lt;= 8;          sum += ntohs(last);     }     while (sum &gt;&gt; 16)         sum = (sum &gt;&gt; 16) + (sum & 0xffff);      return ~sum; <\/pre>\n<p>  \u0421 \u043d\u0435\u0439 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u0430\u043a \u043d\u0430\u0434\u043e. Happy end.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/211284\/\"> http:\/\/habrahabr.ru\/post\/211284\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043c\u043d\u043e\u0433\u0438\u0435 \u0442\u0443\u0442 \u0437\u043d\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0443 <a href=\"http:\/\/code.gerade.org\/hans\/\">hanstunnel<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0442\u0443\u043d\u043d\u0435\u043b\u044c \u043f\u043e\u0432\u0435\u0440\u0445 ICMP, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u043f\u0438\u043d\u0433\u043e\u0432. \u0420\u0435\u0448\u0438\u043b \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0435 \u0441\u0435\u0431\u0435 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440 \u043f\u043e\u0434 openwrt. \u0421\u043e\u0431\u0440\u0430\u043b, \u0437\u0430\u0432\u0435\u043b\u2026 \u041d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0421\u0438\u043c\u043f\u0442\u043e\u043c\u044b \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u2014 \u043f\u0430\u043a\u0435\u0442 \u0443\u0445\u043e\u0434\u0438\u0442 \u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c, \u0430 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u0430 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u043a\u0435 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u043e\u0442 \u0436\u0435 hans, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u043e\u043c\u043f\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0440\u0443\u0436\u0443 \u0431\u0435\u0437 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u041a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043a\u0430\u043a \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442 hans \u043f\u043e\u0434 openwrt \u0438 \u043a\u0430\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u2014 \u0432\u0435\u043b\u043a\u043e\u043c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/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-211284","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/211284","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=211284"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/211284\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=211284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=211284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=211284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}