Vor kurzem hat VPNBook begonnen, ein Kennwort anstelle von einfachem Text als Bild zu veröffentlichen. "Nun, wie so", dachte ich und suchte nach Wegen, um dieses Problem zu lösen. Wir erkennen das "Bild" Passwort VPNBook in PHP. Und natürlich ein Drehbuch für Mikrotik.
Ich habe lange Zeit einen automatischen kostenlosen PPTP-VPN-Tunnel von VPNBook.com auf meinem Router (Mikrotik) eingerichtet und ihn bis vor kurzem erfolgreich verwendet. Ich werde nicht auf Details
eingehen , sie werden im Artikel "
Konfigurieren des automatischen Empfangs eines Passworts für VPN auf Mikrotik " beschrieben. Vor dem Problem konnte das Kennwort für das VPNBook einfach wie folgt aus der HTML-Seite extrahiert werden:
preg_match('/Password: <strong>([^<]+)/', $homepage, $matches); print($matches[1])
Und in jüngerer Zeit ist das Passwort ein "Bild" geworden. Und der erste Gedanke war die optische Texterkennung. Ich fing an, Online- und Offline-OCR-Dienste auszuprobieren, die das Passwort erkennen konnten.
Ich grüße Winand , mit dem wir zu diesem Thema korrespondiert haben. Im Allgemeinen war die letzte OCR, mit der ich mich herumgetrieben habe, Tesseract, der das Passwort sofort festlegte, jedoch mit Fehlern. Aber ihm können neue Schriften beigebracht werden, was ich tun wollte. Als ich eine Schriftart aufnahm, die wie eine „Bildschrift“ aussah, kam mir die Idee, dass es etwas Einfaches war, obwohl es wie ein Teminal von Windows oder eine Terminus-Schrift von Linux aussah. Und voila - es stellte sich heraus, dass es sich nur um eine integrierte PHP-Schriftart mit der Nummer (Größe) 5 handelt. Als Nächstes habe ich OCR aufgegeben und ein PHP-Skript geschrieben, das im generierten Wörterbuch nach Zeichen des Kennworts "Bild" sucht. Ein Wörterbuch besteht aus einer Reihe von Bildern möglicher Kennwortzeichen derselben Farbe und Größe. Die Suche erfolgt durch übereinstimmende Bilder. Hier ist so ein einfaches Reverse Engineering. Ich gehe davon aus, dass die aktuelle Version des Images auf dem VPNBook aufgrund seiner Primitivität nicht lange halten wird.
Vpnbook.php-Skript
Sprite gibt eine Passwortzeichenfolge zurück.
<?php
Plan B. Passwort von Twitter
Mit der Eingabeaufforderung
vvsvic biete ich
eine einfache Implementierung eines alternativen Skripts zum Abrufen eines Kennworts von einem VPNBook-Twitter an (https://twitter.com/vpnbook/).
<?php function url_get_html($url) {
Mikrotik VPNBook-Skript
Das Skript muss jede Minute vom Sheduler aufgerufen werden. Das Skript überwacht den Status der PPTP-Verbindung und ruft beim Trennen die gesamte Prozedur zum Anfordern eines neuen Kennworts auf, sodass Mikrotik nicht versucht, die Verbindung für mehrere Stunden mit dem falschen Kennwort zu öffnen, und die erneute Verbindung erfolgt in 1 Minute. Es überwacht auch Fehler beim Abrufen und Abrufen von Dateien, um genauer festzustellen, ob ein Kennwort empfangen wurde.
Ich empfehle außerdem, die Trennung der PPTP-Schnittstelle für die Trennung (On-Down-Ereignis) im PPP-Profil hinzuzufügen, damit die erneute Verbindung auch innerhalb von 1 Minute überhaupt nicht überflutet wird.
Dementsprechend wird das Hauptskript innerhalb von 1 Minute bei erfolgreichem Empfang eines neuen Passworts die pptp-out1-Verbindung herstellen.
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