Recientemente, VPNBook comenzó a publicar una contraseña en lugar de texto sin formato como imagen. "Bueno, cómo es eso", pensé, y comencé a buscar formas de resolver este problema. Reconocemos la contraseña de "imagen" VPNBook en PHP. Y, por supuesto, un guión para Mikrotik.
Durante mucho tiempo configuré un túnel VPN PPTP gratuito automático desde VPNBook.com en mi enrutador (Mikrotik) y lo usé con éxito hasta hace poco. No entraré en detalles, se describen en el artículo "
Configuración de la recepción automática de una contraseña para VPN en Mikrotik ". Antes del problema, la contraseña para el VPNBook podría simplemente extraerse de la página html, por ejemplo, así:
preg_match('/Password: <strong>([^<]+)/', $homepage, $matches); print($matches[1])
Y más recientemente, la contraseña se ha convertido en una "imagen". Y el primer pensamiento fue utilizar el reconocimiento óptico de texto. Comencé a probar los servicios de OCR en línea y sin conexión, que podían reconocer la contraseña.
Le envío mis saludos a Winand , con quien mantuvimos correspondencia sobre este tema. En general, el último OCR con el que me metí fue Tesseract, que de inmediato determinó la contraseña, pero con errores. Pero se le pueden enseñar nuevas fuentes, lo que iba a hacer. Cuando tomé una fuente que parecía una "fuente de imagen", surgió la idea de que era algo simple, aunque parecía un terminal de Windows o una fuente terminal de Linux. Y listo, resultó ser solo una fuente PHP integrada con número (tamaño) 5. Luego, abandoné OCR y escribí un script PHP que busca caracteres de la contraseña de "imagen" en el diccionario generado. Un diccionario es un conjunto de imágenes de posibles caracteres de contraseña del mismo color y tamaño. La búsqueda se realiza combinando imágenes. Aquí hay una ingeniería inversa tan simple. Supongo que la versión actual de la imagen en el VPNBook no durará mucho, dada su primitividad.
Script vpnbook.php
Sprite devuelve una cadena de contraseña.
<?php
Plan B. Contraseña de twitter
Con el mensaje
vvsvic ,
proporciono una implementación simple de un script alternativo para recuperar una contraseña de un VPNBook twitter (https://twitter.com/vpnbook/)
<?php function url_get_html($url) {
Script de Mikrotik VPNBook
La secuencia de comandos debe llamarse cada minuto desde el programador. El script monitorea el estado de la conexión PPTP y, tras la desconexión, llama a todo el procedimiento para solicitar una nueva contraseña, por lo que Mikrotik no "inundará los intentos de abrir la conexión durante varias horas con la contraseña incorrecta, y la reconexión se realiza en 1 minuto. También supervisa los errores en caso de error para obtener y obtener el archivo para determinar con mayor precisión que se ha recibido una contraseña.
También recomiendo agregar la desconexión de la interfaz PPTP para desconexión (evento de encendido / apagado) en el perfil PPP para que la reconexión no se inunde en absoluto, incluso en 1 minuto.
En consecuencia, el script principal dentro de 1 minuto en caso de recepción exitosa de una nueva contraseña aumentará la conexión 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