یکی از معمول‌ترین شکل کپچا به صورت تصویر است. در این نوع کپچا معمولا حروف و اعدادی انگلیسی به شکلی کنار هم قرار می‌گیرند و از کاربر پرسیده می‌شود که بگوید که این حروف و اعداد چیست. معمولا مسئولین این سایت‌ها فکر می‌کنند که ربات‌ها یا برنامه‌های کامپیوتری نمی‌توانند پاسخ این سؤالات را بدهند.

مواقع زیادی هم رخ می‌دهد که این کپچاها به غیر از اعصاب خوردی چیزی برای ما ندارد.

کپچای گلستان

در این پروژه ما می‌خواهیم که یک افزونه برای مروگر بنویسیم که یک کپچا را بکشند و به صورت خودکار آن را حل نماید.

برای مثال ساده‌تر می‌توانید از کپچای سامانه آموزش دانشگاه شریف استفاده کنید.

کپچای شریف

۱. مقدمه

کپچا در تعریفی ساده سامانهٔ امنیتی و روند ارزیابی است که بااستفاده از ازمون تورینگ برای جلوگیری از برخی حمله‌های خرابکارانهٔ ربات‌های اینترنتی به‌کار می‌رود. این روند می‌تواند مشخص کند که مراجعه کنندگان به یک وب‌گاه و یا سایر خدمات آنلاین انسان هستند یا کامپیوتر.

بدین منظور برنامهٔ کپچا آزمون‌هایی را تولید می‌کند که:

  1. انسان بتواند به راحتی و در طول چند ثانیه به آن پاسخ دهد و دراین زمینه به مشکل برنخورد.

  2. کامپیوترهای فعلی ، نباید قادر باشند به چنین سوالاتی پاسخ دهند.

هر کاربری که آنرا درست حل کند، انسان فرض می‌شود

کپچا گاهی «معکوس تست تورینگ» نامیده می‌شود. چون تست تورینگ توسط انسان برگزار می‌شود و هدفش تشخیص ماشین است اما کپچا توسط ماشین برگزار می‌شود و هدفش تشخیص انسان است.

۲. روش پیشنهادی

  1. حذف درهم و برهمی پس زمینه ، به عنوان مثال با فیلتر کردن رنگها و تشخیص دادن خطوط نازک
    در ابتدا باید نموداری از رنگها در تصویر را مشخص کنیم ،این کار با گرفتن تمام پیکسل ها وگروه بندی انها انجام میشود
    مثلا پس زمینه سفید ،خطوط نویز خاکستری ،متن قرمز خواهد شد

  2. تقسیم بندی ، یعنی تقسیم تصویر به قطعات حاوی یک حرف
    با پردازش افقی در طول تصویر زوج مرتبی از موقعیتی که هر حرف شروع و تمام شده میتوان به دست اورد

  3. تشخیص دادن حرف هر بخش
    در حال حاضر مجموعه ای از حروف اماده برای تشخیص داریم ،با به کارگیری از الگوریتم های شبکه عصبی میتوان حروف را مشخص کرد
    در این مرحله نیاز به اطلاعات جامع و کاملی دارد که در هنگام اموزش باید تکمیل شده باشد

مرحله اول به طور معمول بسیار اسان بوده و به طور خودکار انجام میشود
در مرحله سوم با استفاده از الگوریتم شبکه های عصبی به درصد خطای کمتری نسبت به انسان میرسیم
ولی در مرحله دوم هنوزم انسان بهتر است زیرا اگر درهمریختگی های پس زمینه متشکل ازاشکال متشابه باحروف باشد
این اشکال وحروف توسط این درهم و برهمی متصل شده یا گاهی به اشتباه در هر تصویر 2 حرف تقسیم بندی می شود
تقسیم بندی این نوع کپچا با نرم افزار های فعلی غیر ممکن است .
از این رو برای بهبود عملکرد باید بر این بخش تمرکز کرد

اما با اثبات این موضوع که تشخیص کاراکتر ها اسیب پذیر هستند ،برخی محققان جایگزین هایی مانند تشخیص تصویر را پیشنهاد داده اند
این محققان تشخیص تصویر را چالش برانگیزتر میدانند زیرا محدود به کاراکتر و رقم در الفبای انگلیسی نیست

۳. کد پروژه

  • کد
    # کارهای مرتبط

به مدت چند سال ازمون تورینگ نیمه یا همان captcha در اکثرسایت ها با قابلیت اطمینان بالا موجود بود ولی در چندین سال اخیر این ازمون تورینگ شکست پذیر شد

در نتیجه در پی این معضل برنامه نویسان به استفاده از audio روی اوردند
که در این روش نه به اسانی captcha ولی بازهم قابلیت شکستن دارد
شروع این برنامه با خواندن فایل های صوتی شروع میشود .اولین قدم برای شکستن این نوع کپتچا استفاده از چندین تکنولوژی machine learning برای اجرای ASR میباشد

در این زمینه تکنیک های زیادی وجود دارد.3روش که در این قسمت استفاده میشود :

(mel-frequency cepstral coefficients (MFCC

(perceptual linear prediction (PLP

(relative spectral transform-PLP (RAS TA-PLP

MFCC :
یکی از مشهورترین ها در این زمینه میباشد برای تبدیل فایل های صوتی به باند فرکانس میباشد

موفقیت در این زمینه به دو بخش تقسیم میشود :

Segmentation , recognition

در ابتدا باید audio را به بخش هایی تقسیم کنیم و پس از ان باید انها را بر اساس سروصدا و یا کلمه طبقه بندی کنیم.(کلمات در این قسمت شامل حرف یا عدد است)

با استفاده از manual که برای audio captcha اطلاعاتی درباره مکان هر کلمه که به دست می اوریم و ما قادر به برچسب زدن بخش ها با استفاده از این اطلاعات میشویم .

تقریبا 100 فایل صوتی از سایت های مختلف برای train استفاده میشود به بخش های از سر و صدا ،حروف A -Z، و یا ارقام از 0-9 تقسیم میشوند.

A test audio CAPTCHA with the fixed-size segments containing the highest energy peaks highlighted

کپچای

برای recognize کردن حروف و اعداد از الگوریتم های زیر استفاده میشود :

adaBoost

support vector machine

K-nearest neighbor

4. Cage :

Cage نوعی از کپتچا بر اساس کتابخانه جاوا میباشد که سریع ، کوچک و اسان است
و با هدف ایجاد عکس هایی که برای انسان اسان و برای کامپیوتر غیرقابل حل یا حداقل مشکل باشد

تصویر باز شکاری

تصویر باز شکاری


با استفاده از maven میتوان سریعا ازاین کپتچا استفاده کرد
در غیراین صورت باید فایل jar دانلود کرده و کد کپتچا ساخته میشود که به علت سادگی به اسانی نیز میشکند

5. NUCaptcha

نسل بعدی کد امنیتی به طور خاصی طراحی شده است که کپتچا به طورمتحرک است و احتمال خطای کامپیوترها بیشترشده است و از طرفی امنیت تصویر بیشترشده است


Nucaptcha با استفاده از شاخص های اندازه گیری برای شناسایی فعالیت های مشکوک ساخته شده است
این نوع کپتچا یا خیلی اسان هستند که با استفاده از ocr قابل حل میباشند
یا به شدت سخت بوده و حتی انسان ها هم قادر به حل ان نمیباشند
این نوع کپتچا برای استفاده و امنیت بالا طراحی شده است

6. Are you A Human

سرویس جالبی است که کاربر برای تکمیل فرم باید یک بازی تعاملی را انجام دهد

این بازی با کلیک کردن و کشیدن اشیا انجام میشود و مطمئنا از تشخیص حروق کپتچا جالب تر خواهد بود

تصوی



. پروژه Mori G. که به چاپ مقاله ای در IEEE CVPR'03 منجر شد.در این مقاله یک روش برای شکستن یکی از مشهورترین کپچا ها پرداخته اند و تاحدود 92% موفق به شکست کپچا شده اند:

Breaking a Visual CAPTCHA

. پروژه PWNtcha نیز پیشرفت زیادی در این زمینه دارد :

it stands for “Pretend We’re Not a Turning Computer but a Human Antagonist”

. Captcha Solver as a Service

.An Anti-SMS-Spam Using CAPTCHA

۷. آزمایش‌ها

خوشبختانه بسیاری از کپچا ضعیف هستند و با تمیز کردن ، حذف خطوط درهم و برهم و به کمک OCR های ساده حل شده اند

captcha

با گذشتن از مرحله اول

clean captcha

اکنون نتایج حاصل را برای استخراج متن به OCR داده میشود
در اینجا از 3 ابزار OCR برای مقایسه استفاده شده :

Tesseract :hirbz

Gocr:_i_bz

Ocrad:hi_bL

چند نمونه دیگر:

clean captcha1

Tesseract :7rrq5

Gocr :7rr95

Ocrad :7rrgs

clean captcha2

Tesseract :izi3b

Gocr :izi3b

Ocrad :iLi3b

در این ازمایش گرفتن نتیجه 100% ملاک نیست زیرا مردم واقعی هم گاهی اشتباه میکنند
در این ازمایش ، Tesseract فقط g با q اشتباه کرد و Gocr به جای g ,عدد 9 را چاپ کرده بود که قابل درک بود
ولی Ocrad هیچ جواب درستی نداده است

۸. اینده کپچا

The Future of CAPTCHA

۹. مراجع

J Yan and A S El Ahmad. “Breaking Visual CAPTCHAs with Naïve Pattern Recognition Algorithms”, in IEEE
Conference Proc. of the 23rd Annual Computer Security Applications Conference (ACSAC’07)

K Chellapilla, and P Simard, "Using Machine Learning to Break Visual Human Interaction Proofs (HIPs)," Advances in Neural Information Processing Systems 17, Neural Information Processing Systems (NIPS), MIT Press, 2004.

Akshay Mittal , Ankit Kumar ,Recognising Text from Captcha

Kumar Chellapilla Patrice Y. Simard “Using Machine Learning to Break Visual

Mori G,Malik J (2003),"Recognizing Objects in Adversarial Clutter:Breaking a Visual CAPTCHA," proc. of the computer Vision
and pattern Recognition (CVPR )Conference,IEEE Computer Society, vol.l,June 18-20,2003

Chandavale, A.A., Sapkal, A.M., Jalnekar, R.M.: Algorithm To Break Visual CAPTCHA. In: Second International Conference on Emerging Trends in Engineering and Technology, ICETET 2009 (2009)

Shirali-Shahreza, M. ; Sharif Univ. of Technol., Tehran ; Shirali-Shahreza, S., Question-Based CAPTCHA, Conference on Computational Intelligence and Multimedia Applications

Paul Baecher, Niklas Büscher, Marc Fischlin, Benjamin Milde , Breaking reCAPTCHA: A Holistic Approach via Shape Recognition

Haribabu, K. ; Comput. Sci. Group, Birla Inst. of Technol. & Sci., Pilani, India ; Arora, D. ; Kothari, B. ; Hota, C.Detecting Sybils in Peer-to-Peer Overlays Using Neural Networks and CAPTCHAs

۱۰. پیوندهای مفید

رد شده

انواع کپچا برای تشخیص ماشین از انسان به خوبی توضیح داده شده تنها اگر در بخش کارهای مرتبط توضیح مختصری از الگوریتم های ذکر شده داده شده بود بهتر بود. در بخش آزمایشات نتایج الگوریتم های مختلف بررسی شده که بررسی این نتایج و پیاده سازی اولیه نشان دهنده پیشرفت پروژه می باشد.
پیشنهادات : داشتن readme برای کد را در فازهای بعدی

رد شده

در مقدمه به خوبی مفهوم کپچا را توضیح داده است .
و همچنین در ادامه ٬ انواع روش های شکست کپچاهای قوی که تفاوت ماشین و انسان تشخیص داده نشود هم ذکر شده است.

و همچنین پیشنهاد میکنم مقاله ی << گرگ موری>> و <<جيتندرا مالک>> که در مورد شکستن کپچای GIMPY است در ادامه مطالعه کنید.

موفق باشید.

تایید شده

در بعضی بخشهای متن, جمله بندی ها مشکل دارد و باعث سختی درک و کاهش بار علمی مطالب می شود.

بهتر بود ابتدا بخش مقدمه را ذکر می کردید و سپس وارد معرفی انواع کپتچا می شدید. همین مطلب باعث کاهش انسجام و پیوستگی مطالب شده است .

روش پیشنهادی مبهم به نظر می رسد. یعنی خیلی کم در مورد آن توضیح داده اید. بهتر بود کمی علمی تر و با ذکر جزئیات بیشتری آن را توضیح می دادید.
در ضمن با توجه به انواع مختلفی از کپتچاها که نام بردید بهتر بود ذکر می کردید که این روش برای کدام نوع مناسب است.

در بخش کارهای مرتبط, بیشتر انواع کپتچا معرفی شده اند. در حالی که انتظار می رفت بیشتر به کارهایی که در گذشته برای شکستن کپتچا انجام شده است, پرداخته شود.

اما حالا بریم سراغ کد!

بهتر بود که داخل کد با کامنت مشخص می کردید که کدام بخش کد مربوط به کدام مرحله ی روش پیشنهادی است.
در ضمن بهتر است کتابخانه هایی که در کد استفاده می کنید را نیز روی گیت هاب قرار دهید.
البته چون قرار بود زیاد روی بخش پیاده سازی حساس نشیم! این بخش رو در ارزیابی در نظر نمی گیرم.

البته اگر به اشتباه اشکالاتی را گرفتم از شما عذر خواهی میکنم. تمام تلاشم را کردم تا عادلانه ارزیابی کنم.

یاسر سوری

با سلام. سعی می‌کنم در ادامه نکاتی که به ذهنم می‌رسد را به صورت پراکنده بیان کنم.

  • پاراگراف اول اصلا مناسب به عنوان یک مقدمه نیست. توضیح باید بهتر باشد. صاحبان سایت دیگر چیست که در این پاراگراف گفته شده. بهتر بود در مورد دلیل استفاده از کپچا از نظر امنیتی توضیح می‌دادید.

  • یک ادعای بیجا: «مواقع زیادی هم رخ می‌دهد که این کپچاها به غیر از اعصاب خوردی چیزی برای ما ندارد.» برای شما چیزی ندارد برای صاحبان سایت‌ها چه؟

  • کلا در مورد تصاویر و ارتباط آن‌ها با متن باید توضیح دهید. این طور نباشد که ما کلی فکر کنیم که ارتباط تصاویر با متن چیست و آخر هم چیزی نفهمیم.

  • اینکه جملاتی که در پروپوزال پروژه بوده هنوز هم در متن شما هست نشانه‌ی خوبی نیست. «برای مثال ساده‌تر می‌توانید از کپچای سامانه آموزش دانشگاه شریف استفاده کنید.» به ضمیر فعل این جمله با جملات قبل توجه کنید.

  • بخشی که بعد از عنوان مقدمه آمده است مناسب است. سعی کنید آن را در ابتدای متن قرار دهید و با اضافه کردن هدف انجام پروژه تلفیق مناسبی از بخش ابتدایی گزارش خودتان و مقدمه را درست کنید.

  • علائم نگارشی را در برخی جاها درست رعایت نکرده‌اید. برخی جملات نقطه ندارد. برخی جاها قبل از ویرگول فاصله گذاشته شده است و ...

  • چند غلط املایی در این متن وجود دارد؟ «این کار با گرفتن تمام پیکسل ها وگروه بندی انها انجام میشود». فکر کنم ۶ تا! غلط‌های املایی این چنینی در متن بسیار است.

  • «این کار با گرفتن تمام پیکسل ها وگروه بندی انها انجام میشود مثلا پس زمینه سفید ،خطوط نویز خاکستری ،متن قرمز خواهد شد» این جمله گنگ است و به نظر جای خوبی برای استفاده از یک شکل به عنوان مثال است.

  • بعد از مورد سوم روش پیشنهادی یک پاراگراف متن نوشته‌اید که اصلا مناسب نیست. لطفا تصحیح کنید.

  • «اما با اثبات این موضوع که تشخیص کاراکتر ها اسیب پذیر هستند ،برخی محققان جایگزین هایی مانند تشخیص تصویر را پیشنهاد داده اند این محققان تشخیص تصویر را چالش برانگیزتر میدانند زیرا محدود به کاراکتر و رقم در الفبای انگلیسی نیست» هیچ ارجاعی ندارد. جمله هم ناقص است.

  • کارهای مرتبط را قبل از روش پیشنهادی بیاوردید.

  • توضیح نداده‌اید که چه بخش‌هایی را پیاده سازی کرده‌اید. در بخش کد پروژه این موضوع را توضیح دهید.

  • «به مدت چند سال ازمون تورینگ نیمه یا همان captcha در اکثرسایت ها با قابلیت اطمینان بالا موجود بود ولی در چندین سال اخیر این ازمون تورینگ شکست پذیر شد » این جملات را از کجا آورده‌اید؟ دلیل این حرف چیست؟ اگر خودتان دلیل ندارند ارجاعتان پس کجاست؟

  • اصلا از مارک‌دان خوب استفاده نکرده‌اید.

  • به نظر می‌رسد زمان کافی صرف نگارش گزارش خود نکرده‌اید و این موضوع در قسمت کارهای مرتبط کاملا مشهود است.

  • بخش آزمایشات شما اشکالات زیادی دارد. برای مثال با چه روشی عملیات «تمیز کردن» را انجام داده اید؟ دوم اینکه به نظر می‌رسد شما بر روی سه عدد عکس آزمایش کرده‌اید. که این اصلا کافی نیست و باید به صورت کمی و با آزمایشات بسیار بیشتری نتایج را بیان کنید.

  • چرا مراجع شماره ندارند؟ کجای متن از آن‌ها استفاده شده؟ آیا اصلا استفاده شده؟

  • افزونه مرورگر چه شد؟