рд╡реАрдкреАрдПрдирдмреБрдХ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдУрд╕реАрдЖрд░ред PHP + рдорд┐рдХрд░реЛрдЯрд┐рдХ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╡реАрдкреАрдПрдирдмреБрдХ рдиреЗ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рджреЗ рдкрд╛рда рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред "рдареАрдХ рд╣реИ, рдРрд╕рд╛ рдХреИрд╕реЗ," рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд╣рдо PHP рдореЗрдВ "рдЪрд┐рддреНрд░" рдкрд╛рд╕рд╡рд░реНрдб рд╡реАрдкреАрдПрдирдмреБрдХ рдХреЛ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВред рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдорд┐рдХрд░реЛрдЯрд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯред

рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд░рд╛рдЙрдЯрд░ (рдорд┐рдХрд░реЛрдЯрд┐рдХ) рдкрд░ рд╡реАрдкреАрдПрдирдмреБрдХ рдбреЙрдЯ рдХреЙрдо рд╕реЗ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореБрдлреНрдд рдкреАрдкреАрдЯреАрдкреА рд╡реАрдкреАрдПрди рд╕реБрд░рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рдЙрдиреНрд╣реЗрдВ " рдорд┐рдХреНрд░реЛрдЯрд┐рдХ рдкрд░ рд╡реАрдкреАрдПрди рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░рд╕реАрдж рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ " рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкрд╣рд▓реЗ, рд╡реАрдкреАрдПрдирдмреБрдХ рдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдмрд╕ html рдкреЗрдЬ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

preg_match('/Password: <strong>([^<]+)/', $homepage, $matches); print($matches[1]) 

рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдкрд╛рд╕рд╡рд░реНрдб рдПрдХ "рдЪрд┐рддреНрд░" рдмрди рдЧрдпрд╛ рд╣реИред рдФрд░ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдСрдкреНрдЯрд┐рдХрд▓ рдЯреЗрдХреНрд╕реНрдЯ рд░рд┐рдХрдЧреНрдирд┐рд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рдореИрдВрдиреЗ рдСрдирд▓рд╛рдЗрди рдФрд░ рдСрдлрд▓рд╛рдЗрди OCR рд╕реЗрд╡рд╛рдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рд╢реБрд░реВ рдХреА, рдЬреЛ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХреЗред рдореИрдВ рдЕрдкрдиреЗ рд╕рдВрдмрдВрдз рд╡рд┐рдиреНрдбреИрдВрдб рдХреЛ рднреЗрдЬрддрд╛ рд╣реВрдВ , рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрд╛рддрдЪреАрдд рдХреА ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдЦрд┐рд░реА OCR рдореИрдВрдиреЗ рдЧрдбрд╝рдмрдбрд╝ рдХрд┐рдпрд╛ рдерд╛ Tesseract, рдЬреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред рд▓реЗрдХрд┐рди рдЙрд╕реЗ рдирдП рдлреЛрдВрдЯ рд╕рд┐рдЦрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдореИрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред рдЬрдм рдореИрдВрдиреЗ "рдЪрд┐рддреНрд░ рдлрд╝реЙрдиреНрдЯ" рдХреА рддрд░рд╣ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдлрд╝реЙрдиреНрдЯ рдХреЛ рдЙрдард╛рдпрд╛, рддреЛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕рд░рд▓ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рд╕реЗ рдПрдХ рдЯреЗрдореНрдкрд▓ рдпрд╛ рд▓рд┐рдирдХреНрд╕ рд╕реЗ рдПрдХ рдЯрд░реНрдорд┐рдирд╕ рдлрд╝реЙрдиреНрдЯ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рдерд╛ред рдФрд░ рд╡реЛрдЗрд▓рд╛ - рдпрд╣ рд╕рдВрдЦреНрдпрд╛ (рдЖрдХрд╛рд░) рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рдПрдХ рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд PHP рдлрд╝реЙрдиреНрдЯ рдирд┐рдХрд▓рд╛ред рдЖрдЧреЗ, рдореИрдВрдиреЗ OCR рдХреЛ рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдФрд░ рдПрдХ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЬреЛ рдЙрддреНрдкрдиреНрди рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ "рдЪрд┐рддреНрд░" рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╡рд░реНрдгреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреА рд╣реИред рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдПрдХ рд╣реА рд░рдВрдЧ рдФрд░ рдЖрдХрд╛рд░ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдкрд╛рд╕рд╡рд░реНрдб рд╡рд░реНрдгреЛрдВ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдЦреЛрдЬ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реАрдкреАрдПрдирдмреБрдХ рдкрд░ рдЫрд╡рд┐ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рд░рд╣реЗрдЧрд╛, рдЗрд╕рдХреА рдкреНрд░рдзрд╛рдирддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред

Vpnbook.php рд╕реНрдХреНрд░рд┐рдкреНрдЯ


рд╕реНрдкреНрд░рд╛рдЗрдЯ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИред

 <?php //   $wchar = 9; $hchar = 13; $strDict = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '; $imgDict = imagecreatetruecolor(2 + strlen($strDict)* $wchar, $hchar); $bg = imagecolorallocate($imgDict, 0xF6, 0xF6, 0xF6); $textcolor = imagecolorallocate($imgDict, 0x4C, 0x4C, 0x4C); imagefill($imgDict, 0, 0, $bg); imagestring($imgDict, 5, 2, 0, $strDict, $textcolor); //  cURL $ch = curl_init(); //  url,      curl_setopt($ch, CURLOPT_URL, 'https://www.vpnbook.com/password.php'); //  ,      string curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); // also, this seems wise considering output is image. //   $output = curl_exec($ch); //  cURL curl_close($ch); $imgOCR = imagecreatefromstring($output); // $imgOCR = imageCreateFromPng('password.png'); //      10  . 2 + 10*9 = 92 < 100 $maxchar = floor((imagesx($imgOCR) - 2) / 9); $imgBox = imagecreatetruecolor($wchar, $hchar); $hashDict = Array(); //   for ($k = 0; $k < strlen($strDict) ; $k++) { imagecopy($imgBox, $imgDict, 0, 0, 2 + $k * $wchar, 0, $wchar, $hchar); $hashStr = ""; for($y = 0; $y < $hchar ; $y++) for($x = 0; $x < $wchar; $x++) $hashStr .= (imagecolorat($imgBox, $x, $y) != 0xF6F6F6)? '1': '0'; $hashDict[$hashStr] = $strDict[$k]; } //     for ($k = 0; $k < $maxchar ; $k++) { imagecopy($imgBox, $imgOCR, 0, 0, 2 + $k * $wchar, 0, $wchar, $hchar); $hashStr = ""; for($y = 0; $y < $hchar ; $y++) for($x = 0; $x < $wchar; $x++) $hashStr .= (imagecolorat($imgBox, $x, $y) != 0xF6F6F6)? '1': '0'; $tempchar = $hashDict[$hashStr]; if ($tempchar==' ') break; print($tempchar); } /*header('Content-type: image/png'); imagepng($imgOCR); */ //var_dump($hashDict); imagedestroy($imgDict); imagedestroy($imgOCR); imagedestroy($imgBox); ?> 


рдЯреНрд╡рд┐рдЯрд░ рд╕реЗ рдкреНрд▓рд╛рди рдмреА рдкрд╛рд╕рд╡рд░реНрдб


Vvsvic рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЗ рд╕рд╛рде, рдореИрдВ рдПрдХ рд╡реАрдкреАрдПрдирдмреБрдХ рдЯреНрд╡рд┐рдЯрд░ рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (https://twitter.com/vpnbook/)
 <?php function url_get_html($url) { //  cURL $ch = curl_init(); //  url      curl_setopt($ch, CURLOPT_URL, $url); //        string curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //   $output = curl_exec($ch); //  cURL curl_close($ch); //   return $output; } $homepage = url_get_html('https://twitter.com/vpnbook'); preg_match('/Password: ([^<]+)/', $homepage, $matches); // Print the entire match result // var_dump($matches); print($matches[1]) // print_r($matches); ?> 


рдорд┐рдХрд░реЛрдЯрд┐рдХ рд╡реАрдкреАрдмреБрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ


рд╢реЗрдбрд░ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рд░ рдорд┐рдирдЯ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдХреНрд░рд┐рдкреНрдЯ PPTP рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреА рд╣реИ рдФрд░, рд╡рд┐рдпреЛрдЧ рдХреЗ рдмрд╛рдж, рдирдП рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд┐рдХрд░реЛрдЯрд┐рдХ рдЧрд▓рдд рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдиреЗ рдХрд╛ рдмрд╛рдврд╝ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ 1 рдорд┐рдирдЯ рдореЗрдВ рдкреБрди: рд╕рдВрдпреЛрдЬрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдСрди-рдПрд░рд░ рдПрд░рд░реНрд╕ рдХреЛ рднреА рдореЙрдирд┐рдЯрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд╛рдЗрд▓ рдХреЛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред

 # VPNBookScript v2 :global VPNBookpIfName "pptp-out1" :global VPNBookServerAddresses {"euro217.vpnbook.com";"euro214.vpnbook.com";"us1.vpnbook.com";"us2.vpnbook.com";"ca1.vpnbook.com";"de233.vpnbook.com";"fr1.vpnbook.com"} #:if ([:typeof $VPNBookServerAddresses] != "array") do={ # :set VPNBookServerAddresses {"euro217.vpnbook.com";"euro214.vpnbook.com";"us1.vpnbook.com";"us2.vpnbook.com";"ca1.vpnbook.com";"de233.vpnbook.com"} #} :global VPNBookErr false :global VPNBookPassFile "VPNBookPass.txt" :global VPNBookPass :global VPNBookRun #:global TToken "4.....................2" #:global TChatId "2342432...9" :global VPNBookServerIndex :if ([:typeof $VPNBookServerIndex] != "num") do={:set VPNBookServerIndex 0} :if ([/interface pptp-client get $VPNBookpIfName running]) do={ :set VPNBookRun true } else { :if (!$VPNBookRun) do={ :set VPNBookServerIndex ($VPNBookServerIndex + 1) :if ($VPNBookServerIndex>=[:len $VPNBookServerAddresses]) do={:set VPNBookServerIndex 0} } else { :set VPNBookRun false } :if (![/interface pptp-client get $VPNBookpIfName disabled]) do={/interface pptp-client set $VPNBookpIfName disabled=yes} :do {/tool fetch url="http://server/vpnbookpass.php" dst-path=$VPNBookPassFile} on-error={:set VPNBookErr true} :delay 2 :do {:set VPNBookPass [/file get $VPNBookPassFile contents]} on-error={:set VPNBookErr true} :if (!$VPNBookErr) do={ :if ([/interface pptp-client get $VPNBookpIfName password] != $VPNBookPass) do={/interface pptp-client set $VPNBookpIfName password=$VPNBookPass} :if ([/interface pptp-client get $VPNBookpIfName connect-to] != $VPNBookServerAddresses->$VPNBookServerIndex) do={/interface pptp-client set $VPNBookpIfName connect-to=($VPNBookServerAddresses->$VPNBookServerIndex)} :log info ("VPNBook: Attempt to connect to: ".($VPNBookServerAddresses->$VPNBookServerIndex).". Password: $VPNBookPass") # /tool fetch url=("https://api.telegram.org/bot$TToken/sendmessage\?chat_id=$TChatId&text=VPNBook: Attempt to connect to: ".($VPNBookServerAddresses->$VPNBookServerIndex).". Password: $VPNBookPass") keep-result=no /interface pptp-client set $VPNBookpIfName disabled=no } } 

рдореИрдВ рдкреАрдкреАрдкреА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдореЗрдВ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ (рдСрди-рдбрд╛рдЙрди рдЗрд╡реЗрдВрдЯ) рдХреЗ рд▓рд┐рдП рдкреАрдкреАрдЯреАрдкреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╡рд┐рдпреЛрдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рднреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ 1 рдорд┐рдирдЯ рдХреЗ рднреАрддрд░ рднреА рдкреБрди: рдкреВрд░реНрдгрддрд╛ рдмрд╛рдврд╝ рди рдЖрдПред

рддрджрдиреБрд╕рд╛рд░, рдирдП рдкрд╛рд╕рд╡рд░реНрдб рдХреА рд╕рдлрд▓ рдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ 1 рдорд┐рдирдЯ рдХреЗ рднреАрддрд░ рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреАрдкреАрдкреА-рдЖрдЙрдЯ 1 рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдврд╝рд╛ рджреЗрдЧрд╛ред

 add change-tcp-mss=yes name=VPNBook on-down=\ ":if (![/interface pptp-client get pptp-out1 disabled]) do={\r\ \n /interface pptp-client set pptp-out1 disabled=yes\r\ \n}" only-one=yes use-compression=yes use-encryption=required use-ipv6=no use-mpls=no use-upnp=no 

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


All Articles