Baru-baru ini, VPNBook mulai menerbitkan kata sandi alih-alih teks biasa sebagai gambar. "Yah, bagaimana," pikirku, dan mulai mencari cara untuk menyelesaikan masalah ini. Kami mengenali kata sandi "gambar" VPNBook di PHP. Dan, tentu saja, naskah untuk Mikrotik.
Untuk waktu yang lama saya membuat terowongan VPN PPTP gratis otomatis dari VPNBook.com pada router saya (Mikrotik) dan berhasil menggunakannya sampai saat ini. Saya tidak akan masuk ke rincian, mereka dijelaskan dalam artikel "
Mengkonfigurasi penerimaan otomatis kata sandi untuk VPN di Mikrotik ". Sebelum masalah, kata sandi untuk VPNBook hanya dapat diekstraksi dari halaman html, misalnya, seperti ini:
preg_match('/Password: <strong>([^<]+)/', $homepage, $matches); print($matches[1])
Dan baru-baru ini, kata sandi telah menjadi "gambar". Dan pikiran pertama adalah menggunakan pengenalan teks optik. Saya mulai mencoba layanan OCR online dan offline, yang dapat mengenali kata sandi.
Saya mengirimkan salam saya ke Winand , dengan siapa kami berkorespondensi tentang hal ini. Secara umum, OCR terakhir yang saya gunakan adalah Tesseract, yang di luar kotak menentukan kata sandi, tetapi dengan kesalahan. Tapi dia bisa diajari font baru, yang akan saya lakukan. Ketika saya mengambil font yang terlihat seperti "font gambar," muncul ide bahwa itu adalah sesuatu yang sederhana, meskipun itu tampak seperti teminal dari Windows atau font terminus dari Linux. Dan voila - ternyata hanya font PHP bawaan dengan nomor (ukuran) 5. Selanjutnya, saya meninggalkan OCR dan menulis skrip PHP yang mencari karakter kata sandi "gambar" di kamus yang dihasilkan. Kamus adalah sekumpulan gambar karakter kata sandi yang mungkin dengan warna dan ukuran yang sama. Pencarian dilakukan dengan mencocokkan gambar. Berikut ini adalah teknik reverse sederhana. Saya berasumsi bahwa versi gambar saat ini di VPNBook tidak akan bertahan lama, mengingat sifat primitifnya.
Skrip Vpnbook.php
Sprite mengembalikan string kata sandi.
<?php
Rencanakan B. Kata sandi dari twitter
Dengan prompt
vvsvic , saya
menyediakan implementasi sederhana dari skrip alternatif untuk mengambil kata sandi dari twitter VPNBook (https://twitter.com/vpnbook/)
<?php function url_get_html($url) {
Skrip VPNBook mikrotik
Naskah harus dipanggil setiap menit dari sheduler. Script memonitor status koneksi PPTP dan, setelah pemutusan, memanggil seluruh prosedur untuk meminta kata sandi baru, sehingga Mikrotik tidak akan “membanjiri upaya untuk membuka koneksi selama beberapa jam dengan kata sandi yang salah, dan koneksi ulang dilakukan dalam 1 menit. Ini juga memonitor kesalahan kesalahan untuk mengambil dan mendapatkan file untuk lebih akurat menentukan bahwa kata sandi telah diterima.
Saya juga merekomendasikan untuk menambahkan pemutusan antarmuka PPTP untuk pemutusan (peristiwa on-down) di profil PPP sehingga rekoneksi tidak membanjir sama sekali bahkan dalam 1 menit.
Dengan demikian, skrip utama dalam 1 menit jika berhasil menerima kata sandi baru akan meningkatkan koneksi 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