في الآونة الأخيرة ، بدأ VPNBook في نشر كلمة مرور بدلاً من النص العادي كصورة. فكرت "حسنًا ، كيف" ، وبدأت في البحث عن طرق لحل هذه المشكلة. نحن نتعرف على كلمة مرور "صورة" VPNBook في PHP. وبالطبع سيناريو Mikrotik.
لفترة طويلة ، قمت بإعداد نفق PPTP VPN مجاني تلقائيًا من VPNBook.com على جهاز التوجيه الخاص بي (Mikrotik) واستخدمته بنجاح حتى وقت قريب. لن أخوض في التفاصيل ، فهي موصوفة في مقالة "
تكوين الاستلام التلقائي لكلمة مرور VPN على Mikrotik ". قبل المشكلة ، يمكن ببساطة استخراج كلمة مرور VPNBook من صفحة html ، على سبيل المثال ، على النحو التالي:
preg_match('/Password: <strong>([^<]+)/', $homepage, $matches); print($matches[1])
وفي الآونة الأخيرة ، أصبحت كلمة المرور "صورة". والفكرة الأولى كانت استخدام التعرف البصري على النص. بدأت في تجربة خدمات OCR عبر الإنترنت وغير المتصلة بالإنترنت ، والتي يمكنها التعرف على كلمة المرور.
أرسل تحياتي إلى ويناند ، الذي تحدثنا معه حول هذا الموضوع. بشكل عام ، كان آخر اختبار OCR أخطأت فيه هو Tesseract ، والذي حدد كلمة المرور من خارج الصندوق ، ولكن مع وجود أخطاء. لكن يمكن تعليمه خطوطًا جديدة ، والتي كنت سأفعلها. عندما التقطت خطًا يشبه "خط الصورة" ، ظهرت فكرة أنه كان شيئًا بسيطًا ، على الرغم من أنه بدا وكأنه رمزي من Windows أو خط نهاية من Linux. و voila - اتضح أنه مجرد خط PHP مدمج مع الرقم (الحجم) 5. بعد ذلك ، تخليت عن OCR وكتبت نص PHP الذي يبحث عن أحرف كلمة مرور "الصورة" في القاموس الذي تم إنشاؤه. القاموس عبارة عن مجموعة من الصور التي تحتوي على أحرف كلمات مرور محتملة من نفس اللون والحجم. يتم البحث عن طريق مطابقة الصور. هنا هندسة عكسية بسيطة. أفترض أن الإصدار الحالي للصورة على VPNBook لن يستمر طويلًا ، نظرًا لبدائيته.
البرنامج النصي Vpnbook.php
إرجاع Sprite سلسلة كلمة مرور.
<?php
الخطة ب. كلمة المرور من تويتر
باستخدام موجه
vvsvic ، أقدم تطبيقًا بسيطًا لبرنامج نصي بديل لاسترداد كلمة مرور من TwitterBook على Twitter (https://twitter.com/vpnbook/)
<?php function url_get_html($url) {
البرنامج النصي Mikrotik VPNBook
يجب استدعاء البرنامج النصي كل دقيقة من sheduler. يراقب البرنامج النصي حالة اتصال PPTP ، وعند قطع الاتصال ، يستدعي الإجراء بالكامل لطلب كلمة مرور جديدة ، لذلك لن يقوم Mikrotik "بغمر محاولات فتح الاتصال لعدة ساعات بكلمة مرور خاطئة ، ويتم إعادة الاتصال خلال دقيقة واحدة. كما أنه يراقب أخطاء عند الخطأ للحصول على الجلب ويحصل الملف بشكل أكثر دقة على أنه تم استلام كلمة مرور.
أوصي أيضًا بإضافة قطع الاتصال لواجهة PPTP للانفصال (حدث متقطع) في ملف تعريف PPP بحيث لا تتدفق إعادة الاتصال على الإطلاق حتى خلال دقيقة واحدة.
وفقًا لذلك ، فإن النص الأساسي في غضون دقيقة واحدة في حالة استلام كلمة مرور جديدة بنجاح سيؤدي إلى رفع اتصال 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