{"id":188114,"date":"2013-07-28T18:25:03","date_gmt":"2013-07-28T14:25:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=188114"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=188114","title":{"rendered":"<span class=\"post_title\">\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043f\u043e\u0434 Linux<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c, \u0445\u0430\u0431\u0440!<br \/>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u0430\u0441\u043c\u0435.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0442\u0438\u043f\u0430 libc. \u0410 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u044f\u0434\u0440\u043e.<\/p>\n<p>  \u0423\u0436\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u043d\u0438\u0432\u044b\u0439 \u043d\u0435 \u043f\u0438\u0441\u0430\u043b \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u2014 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 perl, node.js, \u043f\u043e-\u043c\u043e\u0435\u043c\u0443 \u0434\u0430\u0436\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043d\u0430 php.<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e, \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438<\/h4>\n<p>  \u041a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043c\u0435\u043b\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b (\u043c\u0435\u043d\u044c\u0448\u0435 1Kb) \u0438\u0445 \u0431\u044b\u043b\u043e \u043e\u043e\u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e, \u044f \u0431\u043e\u044f\u043b\u0441\u044f \u0437\u0430 ext3, \u0438 \u0440\u0435\u0448\u0438\u043b \u044f \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0432 \u043e\u0434\u043d\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u043c, \u0430 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0437\u0430\u0434\u0430\u0432\u0430\u044f \u0432 get \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u0434\u043b\u0438\u043d\u0443 \u0441\u0430\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 hex \u0432\u0438\u0434\u0435.<\/p>\n<p>  \u0412\u0440\u0435\u043c\u0435\u043d\u0438 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e, \u0440\u0435\u0448\u0438\u043b \u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u0432\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430 \u0430\u0441\u043c\u0435.<\/p>\n<h4>\u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c<\/h4>\n<p>  \u041f\u0438\u0441\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u043d\u0430 FASM, \u0442.\u043a. \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u043d \u043c\u043d\u0435, \u0434\u0430 \u0438 \u043a Intel-\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0443 \u044f \u043f\u0440\u0438\u0432\u044b\u043a.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f elf:<\/p>\n<pre><code class=\"dos\">format elf executable 3 entry\t_start segment readable writeable  executable <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">HTTP200 db    &quot;HTTP\/1.1 200 OK&quot;,\t0xD,0xA ; CTYPE\tdb    &quot;Content-Type: application\/octet-stream&quot;, 0xD,0xA ;  CNAME\t  db    'Content-Disposition: attachment; filename=&quot;BIGTABLE&quot;',0xD,0xA,0xD,0xA ; SERVER \tdb    'Server: Kylie',0xD,0xA ; KeepClose db 'Connection: close',0xD,0xA,0xD,0xA    ; \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f sendfile off_set         dd 0x00 n_bytes     dd 0x00 <\/code><\/pre>\n<p>  \u0410 \u0442\u0430\u043a\u0436\u0435 \u043f\u0443\u0442\u044c \u043a \u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">FILE1   db    &quot;\/home\/andrew\/FILE.FBF&quot;,0 <\/code><\/pre>\n<p>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430:<\/p>\n<pre><code class=\"cpp\">IPPROTO_TCP\tequ\t0x06 SOCK_STREAM\tequ\t0x01 PF_INET \tequ\t0x02 AF_INET \tequ\t0x02 <\/code><\/pre>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0438\u0437 str \u0432 hex<\/p>\n<pre><code class=\"cpp\">include 'str2hex.asm' <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u0442:<\/p>\n<p>  \u0417\u0430\u0431\u0438\u0432\u0430\u0435\u043c \u0432 google.com.ua \u00ab\u0422\u0430\u0431\u043b\u0438\u0446\u0430 ASCI\u00bb, \u2014 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u0435\u043c, \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u0435\u0435\u2026<br \/>  \u0417\u0430\u043c\u0435\u0447\u0430\u0435\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 ASCII \u043e\u0442 0 \u2014 9 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043e\u0442 30h \u0434\u043e 39h<\/p>\n<p>  \u0410 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 A \u0434\u043e F \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 41h \u0434\u043e 46h<\/p>\n<p>  \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043b\u044f \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u2014 \u0430\u0434\u0440\u0435\u0441 \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 esi (\u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0438\u0437 str \u0432 hex)<br \/>  \u041c\u0430\u043a\u0440\u043e\u0441 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u0434 ASCII \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d \u0431\u043e\u043b\u044c\u0448\u0435 39h, \u2014 \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 A \u2014 F, \u0435\u0441\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e \u0435\u043c\u0443 \u0442\u043e \u0441 0 \u2014 9<\/p>\n<p>  \u0412\u043e\u0442 \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\"> ; esi,- \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0439 id \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: ; eax  - \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Macro STR2HEX4 { local  str2hex,bin2hex, out_buff, func, result, nohex ; \/\/ \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u043a\u0440\u043e\u0441 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f (\u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 9 (\u0442.\u0435. A..F) \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435) cld ;\/\/ \u0424\u043b\u0430\u0433 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f) mov edi,out_buff ;  jmp func ;\/\/ \u0422\u0430 \u0441\u0430\u043c\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 str2hex: cmp al,39h jle nohex sub al,07h nohex: sub al,30h ret  out_buff dd 0x00  func: ; \/\/ \u0411\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c 4 \u0440\u0430\u0437\u0430 (32 \u0431\u0438\u0442) mov ecx,4  bin2hex:  \tlodsb ;\/\/ \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \tcall str2hex ;\/\/ \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e ASCII \u043a\u043e\u0434 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \tshl  al,4 ; \/\/ \u0421\u0434\u0432\u0438\u043d\u0435\u043c \u043d\u0430 4 (\u044d\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u0430\u0440\u0448\u0438\u0435 4 \u0431\u0438\u0442\u0430) \tmov bl,al\t; \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0435\u0433\u043e \u0432 bl \tlodsb ; \/\/ \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \tcall str2hex ; \/\/ \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c (\u042d\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u043c\u043b\u0430\u0434\u0448\u0438\u0435 4 \u0431\u0438\u0442\u0430) \txor al,bl\t; \/\/ \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043c \u0441\u0442\u0430\u0440\u0448\u0438\u0435 \u0438 \u043c\u043b\u0430\u0434\u0448\u0438\u0435 \u0431\u0438\u0442\u044b ; \/\/ \u0412\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0432 AL \u0443 \u043d\u0430\u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0430\u0440\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \tstosb\t\t; \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0435\u0433\u043e \u0432 edi \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u043f\u043e\u0436\u0430\u0440\u043d\u044b\u0439  sub ecx,1\t\t; \/\/ \u0423\u043c\u0435\u043d\u044c\u0448\u0438\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430 1  jecxz result\t\t; \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u043f\u043e\u043a\u0430 ecx != 0 jmp bin2hex\t\t;  result: ;\/\/ \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u0441\u0435 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0441\u043b\u043e\u0436\u0438\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 eax \txor eax,eax \tcld \tmov esi,out_buff \tlodsb \tshl eax,8 \tlodsb \tshl eax,8 \tlodsb \tshl eax,8 \tlodsb  \t; \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 eax } <\/code><\/pre>\n<p>  P.S. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043b\u0438\u0448\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043e\u0448\u0438\u0431\u043e\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440-\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 (\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b. \u0422.\u0435. A != a, B =! b \u0438 \u0442.\u0434.) <\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 = 32 \u0431\u0438\u0442.<\/p>\n<p>  \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u043f\u043e\u0435\u0445\u0430\u043b\u0438 \u0434\u0430\u043b\u044c\u0448\u0435:<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u043a\u0435\u0442<\/p>\n<pre><code class=\"cpp\">; \/\/ \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0441\u043e\u043a\u0435\u0442\u0430     push  IPPROTO_TCP\t     ; IPPROTO_TCP (=6)     push  SOCK_STREAM\t     ; SOCK_STREAM (=1)     push  PF_INET\t     ; PF_INET (=2)  ;socketcall     mov eax, 102\t; \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f 102 (\u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0441\u043e\u043a\u0435\u0442\u0430\u043c\u0438)     mov ebx, 1\t; \/\/ 1 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u043a\u0435\u0442     mov ecx, esp\t; \/\/ \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043d\u0430\u0448\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0441\u0442\u0435\u043a\u0435     int 0x80\t\t      mov edi,eax ; \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 edi, \u0442.\u043a. \u043e\u043d \u043d\u0430\u043c \u0435\u0449\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f      cmp eax, -1     je near errn\t ; \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 <\/code><\/pre>\n<p>  \u0421\u043e\u043a\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d, \u0431\u0438\u043d\u0434\u0438\u043c \u0435\u0433\u043e \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 0.0.0.0 (\u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u043d\u0430\u0440\u043e\u0434\u0435 \u2014 INADDR_ANY) \u0438 \u043f\u043e\u0440\u0442 8080 (\u0442.\u043a. \u043d\u0430 80\u043c \u0443 \u043c\u0435\u043d\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 lighttpd, \u0438 \u0435\u0441\u043b\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 80\u0439 \u0442\u043e \u0432 eax \u0432\u0435\u0440\u043d\u0435\u0442\u0441\u044f 0 \u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 -EADDRINUSE \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0430\u044f \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u043f\u043e\u0440\u0442 \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u0442)<\/p>\n<pre><code class=\"cpp\">; binding     push 16\t        ; socklen_t addrlen     push ecx\t\t; const struct sockaddr *my_addr     push edi\t\t; int sockfd          mov eax, 102\t; socketcall() syscall     mov ebx, 2\t\t  ; bind() = int call 2     mov ecx, esp\t; \/\/ \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c     int 0x80\t\t          cmp eax, 0     jne near errn ;\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 (\u0435\u0441\u043b\u0438 \u043f\u043e\u0440\u0442 \u0437\u0430\u043d\u044f\u0442 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440...) <\/code><\/pre>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438 \u043f\u0440\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 INADDR_ANY. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c localhost, \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u00ab\u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442\u00bb. \u0422.\u0435.<br \/>  localhost = 127.0.0.1 = 0x0100007F<br \/>  habrahabr.ru = 212.24.43.44 = 2C2B18D4<\/p>\n<p>  \u0422\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043a\u0430c\u0430\u0435\u0442\u0441\u044f \u0438 \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u043f\u043e\u0440\u0442\u0430:<\/p>\n<p>  8080 = 901Fh<br \/>  25 = 1900h<\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0432\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c ip \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<p>  localhost db 127,0,0,1<br \/>  habrahabr.ru db 212,24,43,44<\/p>\n<p>  \u0438 \u0442.\u0434.<\/p>\n<p>  \u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u0441\u0430\u043c \u0441\u043e\u043a\u0435\u0442 \u043d\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439:<\/p>\n<pre><code class=\"cpp\">    push 1\t  ;\/\/ int backlog     push edi  ;\/\/ int sockfd     pop esi     push edi     mov eax, 102\t; \/\/ syscall     mov ebx, 4\t;\/\/ \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u043a\u0435\u0442 (listen)     mov ecx, esp\t; \/\/ \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043d\u0430\u0448\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443     int 0x80\t\t <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0422.\u043a. \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0442\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043e\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435 fork, \u0438 \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0442\u0430\u043a \u0438 \u0431\u0443\u0434\u0435\u0442 \u00ab\u0434\u0443\u043c\u0430\u0442\u044c\u00bb \u0447\u0442\u043e \u043e\u043d \u0435\u0449\u0435 \u0435\u0441\u0442\u044c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0437 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u043e\u043c\u0431\u0438. \u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u043a\u0430\u0436\u0435\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044e \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0442\u043e \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0438\u043a\u0442\u043e \u0436\u0434\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0438 \u0437\u043e\u043c\u0431\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442:<\/p>\n<pre><code class=\"cpp\">\tmov eax,48 \tmov ebx,17 \tmov ecx,1    ; SIG_IGN \tint 0x80 <\/code><\/pre>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f accept \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f:  <\/p>\n<pre><code class=\"cpp\">     push 0x00\t\t     push 0x00\t\t ; struct sockaddr *addr     push edi\t\t; int sockfd sock_accept:     mov eax, 102\t; socketcall() syscall     mov ebx, 5\t\t  ; accept() = int call 5     mov ecx, esp\t     int 0x80\t\t ; \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438:     cmp eax, -1     je near errn     mov edi, eax\t; \u0422\u0435\u043f\u0435\u0440\u044c \u0432 edi \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f      mov [c_accept],eax <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0438 \u043c\u044b \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0432 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430, \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">mov eax,2 ; \/\/ \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 sys_fork() int 0x80 cmp eax,0 jl exit   ; if error <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u044f\u0441\u043d\u0438\u043c \u043a\u0435\u043c \u043c\u044b \u0442\u0443\u0442 \u044f\u0432\u043b\u044f\u0435\u043c\u0441\u044f, \u0444\u043e\u0440\u043a\u043e\u043c \u0438\u043b\u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">test eax,eax jnz fork   ; \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (\u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441)     ; edi - accept descriptor     ; \/\/ \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u043d\u0435\u043a\u0448\u043d \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044e \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432     mov eax, 6\t\t; close() syscall     mov ebx, edi\t; The socket descriptor     int 0x80\t\t; Call the kernel     jmp sock_accept  fork: ;\/\/ \u0414\u0430\u043b\u044c\u0448\u0435 - \u043a\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 <\/code><\/pre>\n<p>  \u0412\u0441\u0435! \u00ab\u0413\u043e\u043b\u043e\u0432\u0430\u00bb \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0433\u043e\u0442\u043e\u0432\u0430.<\/p>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0435\u0442 \u043a\u043e\u0434 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<\/p>\n<p>  \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0441\u0442\u0430\u0442\u0443\u0441 200 OK  <\/p>\n<pre><code class=\"cpp\">    mov eax, 4\t\t  ; write() syscall     mov ebx, edi\t  ; sockfd     mov ecx, HTTP200\t  ; Send 200 Ok     mov edx, 17 \t  ; 17 characters in length     int 0x80\t\t  ; <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0442\u0438\u043f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u00abapplication\/octet-stream\u00bb \u2014 \u0441\u0430\u043c\u044b\u0439 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435<\/p>\n<pre><code class=\"cpp\">    mov eax, 4\t\t  ; write() syscall     mov ebx, edi\t  ; sockfd     mov ecx, CTYPE\t  ; Content-type - 'application\/octet-stream'     mov edx, 40 \t  ; 40 characters in length     int 0x80\t\t  ; Call the kernel <\/code><\/pre>\n<p>  \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:  <\/p>\n<pre><code class=\"cpp\">  mov eax, 4\t\t ; write() syscall     mov ebx, edi\t ; sockfd     mov ecx, SERVER   ; our string to send     mov edx, 15 \t ; 15 characters in length     int 0x80\t\t ; Call the kernel <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Keep-Alive \u0442\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0435\u043c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c:  <\/p>\n<pre><code class=\"cpp\">    mov eax, 4\t\t  ; write() syscall     mov ebx, edi\t  ; sockfd     mov ecx, KeepClose\t  ; Connection: Close     mov edx, 21 \t  ; 21 characters in length     int 0x80\t\t  ; Call the kernel <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043d\u0446\u0435 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 0xD 0xA (\u043c\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 Connection: Close) \u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0442\u043e \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 \u043f\u043e\u043a\u043e\u043d\u0447\u0435\u043d\u043e<\/p>\n<p>  \u041d\u0443 \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u0437\u043d\u0430\u0435\u043c \u043a\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b \u0445\u043e\u0447\u0435\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u0431\u0443\u0444\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441 GET \u0441\u043e \u0441\u0434\u0432\u0438\u0433\u043e\u043c \u0432 5 \u0431\u0430\u0439\u0442\u043e\u0432 \u0432\u043b\u0435\u0432\u043e, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043e\u0431\u0440\u0435\u0437\u0430\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e(\u2018GET \/\u2019), \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u0442\u044b\u0439 ID \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 16 \u0431\u0430\u0439\u0442.<\/p>\n<p>  \u0410\u0445 \u0434\u0430, \u044f \u0432\u0441\u0435 \u043e\u0431 id, id \u2026 \u0410 \u0447\u0442\u043e \u043e\u043d \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442? \u042f \u0440\u0435\u0448\u0438\u043b \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e, \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 GET 32-\u0431\u0438\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435, \u0438 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430 \u043d\u0438\u043c 32 \u0431\u0438\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0444\u0430\u0439\u043b\u0430.<\/p>\n<p>  \u0422.\u0435. \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 URL \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <a href=\"http:\/\/127.0.0.1\/00003F480000FFFF\">127.0.0.1\/00003F480000FFFF<\/a><\/p>\n<p>  \u0422\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0440\u0430\u0432\u043d\u043e 00003F48 \u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 0000FFFF<\/p>\n<pre><code class=\"cpp\">mov esi,buffer    ; \/\/ \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0430\u0434\u0440\u0435\u0441 \u043e\u0442\u043a\u0443\u0434\u0430 \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430\u0448 id (\u0434\u043b\u044f STR2HEX)  push edi\t\t; \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c edi \u0442.\u043a. \u043c\u0430\u043a\u0440\u043e\u0441 \u0435\u0433\u043e \u043e\u0447\u0438\u0449\u0430\u0435\u0442 STR2HEX4\t; \u041c\u0430\u043a\u0440\u043e\u0441 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0431\u0443\u0444\u0435\u0440 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 esi pop edi \t\t; \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0438\u043c edi   mov [off_set],eax ; \/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0438\u043b\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 eax, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0435\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0430\u0439\u043b, \u0433\u0434\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c:<\/p>\n<p>  \u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u0435\u0433\u043e (\u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u0432 eax):<\/p>\n<pre><code class=\"cpp\">; Open BIG file         mov eax,5         mov ebx,FILE1         mov ecx, 2         int 0x80    <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e sendfile.<br \/>  \u041a\u0430\u043a \u043f\u0438\u0448\u0443\u0442 \u0432 \u043c\u0430\u043d\u0443\u0430\u043b\u0430\u0445:<\/p>\n<blockquote><p>Because this copying is done within the kernel, sendfile() is more efficient than the combination of read(2) and write(2), which would require transferring data to and from user space.  <\/p><\/blockquote>\n<pre><code class=\"cpp\">; Send [n_bytes] from BIGTABLE starting at [off_set] send_file:         mov ecx,eax         ; file descriptor from previous function        mov eax,187        mov ebx,edi         ; socket        mov edx,off_set     ; pointer         mov esi,[n_bytes]   ;        int 0x80 <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0438\u0437 eax \u043c\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 ecx \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 sendfile, \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445\\\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <b>success<\/b><\/p>\n<p>  \u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0434\u043e\u043b\u0433\u043e \u043d\u0435 \u0441\u043f\u0430\u043b \u043f\u043e \u043d\u043e\u0447\u0430\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0433 \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0432\u0441\u0435\u0445 \u0431\u0430\u0439\u0442 \u0444\u0430\u0439\u043b \u043d\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u0430 \u0437\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u0438\u0448\u0435\u0442 \u00ab\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430\u00bb \u0438 \u0435\u0433\u043e \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442. \u0412 sendfile \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f chrome developer tools.<\/p>\n<p>  \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0448\u043b\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u044f\u0442\u044c. \u041d\u0435 \u0432\u0430\u0436\u043d\u043e \u043a\u0430\u043a\u0438\u0435 \u0442\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0435, \u2014 \u0435\u0433\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0441\u043b\u0430\u0442\u044c \u0432 \/dev\/null \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0447\u0442\u043e \u0431\u044b \u0441\u0435\u0440\u0432\u0435\u0440 \u0435\u0433\u043e \u043f\u0440\u043e\u0447\u0435\u043b. \u0418\u043d\u0430\u0447\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0447\u0442\u043e \u0441 \u0444\u0430\u0439\u043b\u043e\u043c \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u043e. \u0417\u0430\u0447\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u2014 \u043d\u0430 100% \u043c\u043d\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e. \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c Content-Length \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445, \u043a\u043e\u0433\u0434\u0430 \u0444\u0430\u0439\u043b \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043d\u0430\u0434\u043e, \u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442. \u0411\u0443\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u0442\u0430\u0439\u043d\u0443 )))<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0439 \u0445\u0435\u0434\u0435\u0440:<br \/>  \u0427\u0438\u0442\u0430\u0435\u043c \u0438\u0437 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 edi, \u0432 \u0430\u0434\u0440\u0435\u0441 buffer<\/p>\n<pre><code class=\"cpp\">; Read the header     mov eax,3    mov ebx,edi    mov ecx,buffer    mov edx,1024    int 0x80      <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0442\u043e 1024 \u0431\u0430\u0439\u0442\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 <br \/>  (\u0415\u0441\u043b\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u043a\u0443\u043a \u0438 \u0442.\u0434.)<\/p>\n<p>  \u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">    mov eax, 6            ; close() syscall     mov ebx, edi        ; The socket descriptor     int 0x80            ; Call the kernel ; end to pcntl_fork ()     mov eax,1     xor ebx,ebx     int 0x80   <\/code><\/pre>\n<p>  \u0412\u043e\u043e\u0431\u0449\u0435 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0444\u043e\u0440\u043a\u0430\u043c\u0438, \u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>  \u0418 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435!<br \/>  \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a!<\/p>\n<blockquote><p>root@server:\/home\/andrew# ldd server<br \/>   not a dynamic executable  <\/p><\/blockquote>\n<p>  \u0421\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f (\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\\\u043d\u0435\u0442, \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u043c ab \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440)))<br \/>  <a href=\"http:\/\/ubuntuone.com\/3yNexPG0yewlGnjNd6219W\">http:\/\/ubuntuone.com\/3yNexPG0yewlGnjNd6219W<\/a><\/p>\n<p>  P.S. \u0412 \u043a\u043e\u0434\u0435 \u0443\u043f\u0443\u0449\u0435\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438, \u0442\u0430\u043a\u0436\u0435 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u0443\u0441\u043a\u0430\u0445 \u043a\u043e\u0434\u0430 \u043d\u0435 \u043f\u043e\u0434\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0435\u043a, \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438), \u0438 \u0432 \u043e\u0431\u0449\u0435\u043c \u043a\u043e\u0434 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u00ab\u0447\u0438\u0441\u0442\u043e\u0433\u043e\u00bb.<\/p>\n<p>  \u0421\u0435\u0440\u0432\u0435\u0440 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043c\u043d\u043e\u0433\u043e\u044f\u0434\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 (\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043d\u0430 Core I7 2600). \u041e\u043d \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 lighttpd \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u043e \u0441\u0442\u0430\u0442\u0438\u043a\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432 4 \u0440\u0430\u0437\u0430, \u0445\u043e\u0442\u044f \u044f \u0434\u0443\u043c\u0430\u044e \u0447\u0442\u043e \u043c\u043e\u0439 lighttpd \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u043c\u043d\u043e\u0433\u043e\u044f\u0434\u0435\u0440\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>  \u0427\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:<br \/>  \u041d\u0443 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 cgi \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (php, perl, python) \u0438 \u0442.\u0434. \u0422\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430, \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0445\u043e\u0441\u0442\u044b. \u0410 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0448\u0435\u0439 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0435\u0439. \t\t\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\/188114\/\"> http:\/\/habrahabr.ru\/post\/188114\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c, \u0445\u0430\u0431\u0440!<br \/>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u0430\u0441\u043c\u0435.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0442\u0438\u043f\u0430 libc. \u0410 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u044f\u0434\u0440\u043e.<\/p>\n<p>  \u0423\u0436\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u043d\u0438\u0432\u044b\u0439 \u043d\u0435 \u043f\u0438\u0441\u0430\u043b \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u2014 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 perl, node.js, \u043f\u043e-\u043c\u043e\u0435\u043c\u0443 \u0434\u0430\u0436\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043d\u0430 php.<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e, \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b.  <\/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-188114","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/188114","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=188114"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/188114\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=188114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=188114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=188114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}