Как стать автором
Обновить

Комментарии 11

интересно, но в Китае оно не работает
Дай тебе Бог здоровья, добрый человек :)
Я так в первом классе писал
А зачем такие сложности?
Они же в Твиттере есть. Там все по старому осталось.
Эту возможность я как-то упустил. Но, вопрос: оперативно ли появляется твит с новый паролем? В любом случае я добавлю в заметку план Б, спасибо.
В этот раз Твиттер не обновился.
Спасибо, не знал что у них твиттер есть. Тоже уже хотел научить свой роутер распознавать картинки. :)
Может кто посоветует аналогичные сервисы? Имею ввиду VPNBook
Автор капчи (VPNBook) не учел, что «u» и «y» у него сольются в идентичный символ. Пользователи просто не смогут распознать «y» в обрезанном символе «u».
Костыль для обхода проблемы, вставить в блок "// ищем символы по словарю":
  $tempchar = $hashDict[$hashStr];
  if ($tempchar=='u' || $tempchar=='y') // проблема совпадения символов
    $tempchar = (mt_rand(0, 1))? 'u': 'y';
    //$tempchar = (time() / 60 % 60 % 2)? 'u': 'y';
  elseif ($tempchar==' ') break;
Недавно заблокировали сайт vpnbook, теперь нельзя автоматически получить пароль, но vpn сервера работают. Обход проблемы: парсить fb или twitter
PHP парсер пароля из fb:
<?php
function url_get_html($url) {
	// инициализируем cURL
	$ch = curl_init();
	// устанавливаем url с которого будем получать данные
	curl_setopt($ch, CURLOPT_URL, $url);
	// curl_setopt($ch, CURLOPT_VERBOSE, true);
	curl_setopt($ch, CURLOPT_USERAGENT, 'cURL');
	// устанавливаем опцию чтобы содержимое вернулось нам в string
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	// выполняем запрос
	$output = curl_exec($ch);
	// закрываем cURL
	curl_close($ch);
	// возвращаем содержимое
	return $output;
}

$homepage = url_get_html('https://mbasic.facebook.com/VPNBookNews/');
preg_match('/Password: ([^<]+)/', $homepage, $matches);

// var_dump($matches);
print($matches[1])
// print_r($matches);
?>

Автору спасибо за идею!
Немного модифицировал скрипт, теперь он работает как сервис, не делает запись в файл, а только в переменные.


Необходимо добавить в шедулер запуск скрипта VPNBook_watchdog_script


Скрипт для MikroTik
# VPNBookScript v2.5
local scriptName "VPNBook_watchdog_script";

:global VPNBookpIfName "pptp-VPNBook"
:global VPNBookServerAddresses {"PL226.vpnbook.com";"de4.vpnbook.com";"us1.vpnbook.com";"us2.vpnbook.com";"fr1.vpnbook.com";"fr8.vpnbook.com";"ca222.vpnbook.com";"ca198.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 VPNBookPass
:global VPNBookRun
:global VPNBookURL https://myservername/vpnbook
#:global TToken "4.....................2"
#:global TChatId "2342432...9"

if ( [len [/system script job find where script=$scriptName]] > 1) do= { error "single instance" };
delay 15;

while (true) do {
:delay 60s;

: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}
  :delay 2
  :do {:set VPNBookPass ([/tool fetch url="$VPNBookURL" output=user as-value]->"data")} 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
  }
}

}

На своём ресурсе запускаю bash скрипт как cgi приложение

нашёл скрипт здесь и немного модифицировал (в Apache конфиг домена добавил вот эту строку:


ScriptAlias /vpnbook /var/www/html/vpnbook/password_extractor.sh

)


#!/bin/sh

# Begin functions
# Print out the help
__usage(){
    echo "usage: password_extractor [-o output_file | [-h]]"
}

__extract_pwd(){
    local file="$@"
    local pwd=$(cat ${output_file} \
        | grep -Eo '"WordText":.*?[^\\]",' \
        | awk -F':' '{print $2}' \
        | awk -F',' '{print $1}' \
        | awk '{ gsub(/^[ \t]+|[ \t]+$/, ""); print }' \
        | tr -d \")
    echo ${pwd##*|}
}
# End functions

debug_flag=0
vpnbook_folder=$HOME/.vpnbook
vpnbook_base_url=https://www.vpnbook.com
vpnbook_url=${vpnbook_base_url}/freevpn
tesseract_service_url=https://api.ocr.space/parse/image
timestamp=$(date +%s)
output_file=/tmp/vpnbok_pwd_${timestamp}.json
log_file=/tmp/vpnbok_pwd_${timestamp}.log

# Start Script
while [ "$1" != "" ]; do
    case $1 in
        -o | --output )         shift
                                output_file=$1
                                ;;
        -d | --debug )          shift
                                debug_flag=1
                                ;;
        -h | --help )           usage
                                exit
                                ;;
        * )                     usage
                                exit 1
    esac
    shift
done

echo "Content-type:text/plain"
echo ""
# Retrieve the Password URL from the official webpage
pwd_url=$(curl -s ${vpnbook_url} | grep -m2 "Password:" | tail -n1 | cut -d \" -f2)
#echo "Retrieving Password at the following URL: ${vpnbook_base_url}/${pwd_url}"

curl -X POST --header "apikey: 5a64d478-9c89-43d8-88e3-c65de9999580" \
-F "url=${vpnbook_base_url}/${pwd_url}" \
-F 'language=eng' \
-F 'isOverlayRequired=true' \
-F 'FileType=.Auto' \
-F 'IsCreateSearchablePDF=false' \
-F 'isSearchablePdfHideTextLayer=true' \
-F 'scale=true' \
-F 'detectOrientation=false' \
-F 'isTable=false' \
${tesseract_service_url} -o ${output_file}

pwd=$(__extract_pwd ${output_file})
echo ${pwd} > ${output_file}

#echo 'Retrieved password:---'${pwd}'---'
#echo "${pwd}"
tr -d "\n\r" < ${output_file}

exit 0;
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории