Récemment, VPNBook a commencé à publier un mot de passe au lieu du texte brut en tant qu'image. "Eh bien, comment," pensai-je, et je commençai à chercher des moyens de résoudre ce problème. Nous reconnaissons le mot de passe "image" VPNBook en PHP. Et, bien sûr, un script pour Mikrotik.
Pendant longtemps, j'ai mis en place un tunnel VPN PPTP gratuit et automatique depuis VPNBook.com sur mon routeur (Mikrotik) et l'ai utilisé avec succès jusqu'à récemment. Je n'entrerai pas dans les détails, ils sont décrits dans l'article "
Configurer la réception automatique d'un mot de passe pour VPN sur Mikrotik ". Avant le problème, le mot de passe du VPNBook pouvait simplement être extrait de la page html, par exemple, comme ceci:
preg_match('/Password: <strong>([^<]+)/', $homepage, $matches); print($matches[1])
Et plus récemment, le mot de passe est devenu une "image". Et la première pensée a été d'utiliser la reconnaissance optique de texte. J'ai commencé à essayer les services OCR en ligne et hors ligne, qui pouvaient reconnaître le mot de passe.
J'adresse mes salutations à Winand , avec qui nous avons correspondu à ce sujet. En général, le dernier OCR avec lequel j'ai joué était Tesseract, qui, dès la sortie de la boîte, a déterminé le mot de passe, mais avec des erreurs. Mais on peut lui apprendre de nouvelles polices, ce que j'allais faire. Lorsque j'ai choisi une police qui ressemblait à une «police d'image», l'idée m'est venue que c'était quelque chose de simple, même si cela ressemblait à un teminal de Windows ou à une police terminale de Linux. Et le tour est joué - il s'est avéré qu'il s'agissait simplement d'une police PHP intégrée avec un nombre (taille) 5. Ensuite, j'ai abandonné l'OCR et écrit un script PHP qui recherche les caractères du mot de passe "image" dans le dictionnaire généré. Un dictionnaire est un ensemble d'images de caractères de mot de passe possibles de la même couleur et taille. La recherche se fait en faisant correspondre les images. Voici une ingénierie inverse si simple. Je suppose que la version actuelle de l'image sur le VPNBook ne durera pas longtemps, compte tenu de sa primitivité.
Script Vpnbook.php
Sprite renvoie une chaîne de mot de passe.
<?php
Plan B. Mot de passe de twitter
Avec l'invite
vvsvic , je
propose une implémentation simple d'un script alternatif pour récupérer un mot de passe à partir d'un twitter VPNBook (https://twitter.com/vpnbook/)
<?php function url_get_html($url) {
Script Mikrotik VPNBook
Le script doit être appelé toutes les minutes depuis le sheduler. Le script surveille l'état de la connexion PPTP et, lors de la déconnexion, appelle toute la procédure pour demander un nouveau mot de passe, donc Mikrotik n'inondera pas les tentatives d'ouverture de la connexion pendant plusieurs heures avec le mauvais mot de passe, et la reconnexion se fait en 1 minute. Il surveille également les erreurs d'erreur lors de la récupération et de l'obtention de fichiers pour déterminer plus précisément qu'un mot de passe a été reçu.
Je recommande également d'ajouter la déconnexion de l'interface PPTP pour la déconnexion (événement on-down) dans le profil PPP afin que la reconnexion n'inonde pas du tout, même en 1 minute.
En conséquence, le script principal en 1 minute en cas de réception réussie d'un nouveau mot de passe augmentera la connexion pptp-out1.
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