ล่าสุดแอดมินได้มาเริ่มศึกษา Tensorflow เลยมีโอกาสได้ดูวีดิโอของคุณ Siraj Raval เกี่ยวกับการใช้ Tensorflow เพื่อทำนายว่ารูปที่เป็นตัวเลขต่าง ๆ มีค่าเท่ากับตัวเลขตัวไหน (Digit Recognition) โดยใช้ Tensor Flow + Logistic Regression

ทีนี้ในคอมเม้นท์ก็มีการพูดคุยกันว่าเราสามารถแกะ Captcha บนเว็บไซต์ต่าง ๆ ด้วยระบบนี้ได้มั้ย แล้วมีคนโพส เอกสารจากงาน Blackhat Asia 2016 แอดเลยกดเข้าไปอ่าน เขียนได้น่าสนใจมาก เผลอแปปเดียวเอกสาร 12 หน้าอ่านจนจบ

ตอนแรกไม่ได้ดูว่าเจ้าของโปรเจคนี้เป็นใคร พอดูชื่อไฟล์ก็รู้สึกว่าชื่อ Sivakorn มันดูเอเชียมาก พอเอาชื่อ-นามสกุลไปเสิร์จก็พบว่าคุณ Suphannee Sivakorn ซึ่งเป็น 1 ในเจ้าของโปรเจคเป็นคนไทยที่ได้ทุนจากรัฐบาลไปศึกษา PhD ที่อเมริกา

พอรู้แบบนั้นยิ่งประทับใจเข้าไปอีก เลยอยากเอามาเล่าให้ฟังกันแบบคร่าว ๆ ครับ ใครอยากอ่านฉบับเต็มไปอ่านในเอกสารของเค้าได้เลย

Google reCAPTCHA คืออะไร

google reCAPTCHA เครื่องมือตรวจจับว่าผู้ใช้เป็นมนุษย์จริง ๆ มั้ย

ใครที่กรอกฟอร์มต่าง ๆ บนอินเตอร์เน็ต เช่น ฟอร์มสมัครบริการบนเว็บไซต์ น่าจะเคยเจอกับช่องที่ให้เรากรอกตัวเลขตามรูป เพื่อยืนยันว่าเราเป็นมนุษย์จริง อันนี้คือ “CAPTCHA”

ซึ่ง Google reCAPTCHA ก็เป็นบริการแบบเดียวกัน โดยระบบจะให้เราติ๊กถูก ถ้าระบบเชื่อว่าเราเป็นมนุษย์ก็จะผ่านไปเลย แต่ถ้าระบบไม่แน่ใจ ก็จะทดสอบเราดังภาพ

วิธีทดสอบคือ เค้าจะโชว์รูป 9 รูป โดยให้เราเลือกรูปที่ตรงกับ Keyword ที่เค้าบอกมา

เช่น ในรูปตัวอย่าง reCAPTCHA ให้เราเลือกรูปที่เป็น “ซุป” เท่านั้น

ซึ่งไม่เฉพาะ Google ที่ทำแบบนี้ หลายคนอาจจะเคยเจอว่า Facebook ก็มี CAPTCHA แบบนี้มาทดสอบเราเช่นกัน (แอดเคยเจอตอนล็อกอิน Facebook เครื่องใหม่ โดยเฉพาะในต่างพื้นที่)

เราจะแกะ CAPTCHA ได้อย่างไร

CAPTCHA มีมานานแล้ว และถือเป็นศัตรูกับคนที่ต้องการ Automate ออนไลน์ทุก ๆ คน เช่น ต้องการสมัครบริการอะไรบางอย่างเป็นจำนวนมาก ๆ แต่บริการที่จะสมัครมี CAPTCHA อยู่ เลยต้องหาวิธีแกะ CAPTCHA ให้ออก

บริการที่เข้ามาช่วยในส่วนนี้เรียกว่า Decaptcha โดยวิธีการทำงาน คือ เราส่งรูปที่ต้องการแกะไปให้เค้า เค้าก็จะรีบแกะแล้วส่งกลับมา ซึ่งการ “แกะ” ที่ง่ายที่สุดก็คือ ให้คนมานั่งดูแล้วพิมพ์ตาม นั่นเอง

เพราะถ้าเราลองคิดดูแล้ว CAPTCHA คือ การเทสว่าผู้ใช้เป็นมนุษย์มั้ย โดยการเอาคำถามที่ Machine ตอบได้ยาก แต่ “มนุษย์ตอบได้ง่าย” มาถาม เพราะฉะนั้นการแกะ CAPTCHA ด้วยมนุษย์ก็เป็นอะไรที่ง่ายสุด ๆ

ในตลาดที่ดัง ๆ เช่น ในอินเดีย จะมีบริษัทที่ทำด้านนี้โดยเฉพาะเลย เค้าเอาคนมานั่งกรอก CAPTCHA โดยสนนราคาแค่ประมาณ ~50 บาท ต่อ 1000 CAPTCHA เท่านั้นเองครับ

การแกะ CAPTCHA ด้วย Machine Learning

GRIS บน Google Images

ปกติเราค้นหารูปบน Google ด้วยคีย์เวิร์ดต่าง ๆ กันอยู่แล้ว และหลาย ๆ คนน่าจะทราบอยู่แล้วว่า เราสามารถค้นหาคีย์เวิร์ดจากรูป ได้ด้วย ซึ่งในเอกสารเรียกเจ้าสิ่งนี้ว่า GRIS หรือ Google Reverse Image Search

ซึ่งใน Google reCAPTCHA จะมีการแสดงรูปต่าง ๆ 9 รูปมาให้เราเลือก เค้าก็เลยใช้วิธีเอารูปเหล่านั้นไปโยนใส่ Google เพื่อลองหาคีย์เวิร์ดดูก่อน

แน่นอนว่าคีย์เวิร์ดต่าง ๆ ไม่ได้ตรงเป๊ะ 100% การทดลองนี้เลยต้องมีการใช้ Algorithms ต่าง ๆ ที่ช่วยในการทำ Image Classification มาช่วย ซึ่งตัวที่ทำได้ดีที่สุดคือ Clarifai เป็น Deconvolutional Network ที่ปัจจุบันเปิด API ให้คนสามารถใช้ได้ทั้งฟรีและเสียเงิน

ระบบนี้จะให้คีย์เวิร์ดตามรูปที่เราอัพโหลดเข้าไป แล้วเค้าจะส่งคีย์เวิร์ดกลับมาพร้อมเลขความน่าจะเป็นว่าระบบมั่นใจขนาดไหน

ตัวอย่างการใช้งาน Clarifai แม่นมาก ๆ

ซึ่งจาก Keyword ต่าง ๆ ที่รีเทิร์นกลับมา ระบบของเค้าก็จะสามารถเดาได้ง่ายว่ารูปในไหน CAPTCHA คือรูปที่ถูกต้อง และสามารถตอบ CAPTCHA ได้ถูก

นอกจากนั้นในการทดลองนี้ยังพบว่ายิ่งรูปความละเอียดสูง ระบบก็จะยิ่งทายได้ถูกต้องมากขึ้นอีก แต่ reCAPTCHA จะส่งมาเป็นรูปเล็ก ๆ เค้าเลยเขียนให้ระบบลองไปหารูปใหญ่ใน Google มาก่อนจะนำไปประมวลผล

สุดท้าย ระบบที่เค้าพัฒนาขึ้นมา สามารถทาย reCAPTCHA ถูกต้องถึง 60% เทียบเท่ากับบริการแกะ CAPTCHA ที่เก่าแก่ที่สุด ชื่อ Decaptcher เลยทีเดียว โดยใช้เวลาแกะแค่ 20 วินาที้เท่านั้น

ซึ่งถ้าเค้าเอาระบบนี้ไปรัน แล้วเก็บเงินเท่า Decaptcher จะสามารถทำเงินได้ประมาณ $100 / วัน / เครื่อง ไม่รวมว่าสามารถทำ Parallel Processing เพื่อให้รับลูกค้าได้มากขึ้นอีก

ที่น่าสนใจยิ่งขึ้น คือ เค้าได้ลองเอาระบบเดียวกันนี้ไปแกะ Facebook CAPTCHA ดู ซึ่งของ Facebook แกะง่ายกว่าของ Google เสียอีก เพราะรูปใน CAPTCHA เป็นรูปความละเอียดสูงที่เอามาย่อในบราวเซอร์เท่านั้น

ผลก็คือ ระบบนี้สามารถแกะ Facebook CAPTCHA ได้ในอัตราความสำเร็จ 80% !

แต่สำหรับใครที่จะไปอ่านเปเปอร์แล้วทำระบบตามก็เสียใจด้วยครับ ทีมวิจัยนี้ได้ติดต่อไปบอกวิธีการทดสอบ และวิธีการทำให้ CAPTCHA ยากขึ้น กับทีม Google และ Facebook เรียบร้อยแล้ว

ถ้าบทความนี้มีประโยชน์ ฝากแชร์ให้ท่านอื่น ๆ ด้วยนะครับ 😀
Share on Facebook1.6kTweet about this on TwitterShare on Google+0Share on LinkedIn0Email this to someone

คุณอยากอ่านบทความแนวนี้อีกมั้ย ?

ลงทะเบียนรับ GrowthBee Newsletter เพื่ออ่านบทความใหม่ ๆ ด้าน Data Science ก่อนใคร !!

เราสัญญาว่าจะไม่มีการแสปมใด ๆ ทั้งสิ้น และคุณสามารถยกเลิกรับข่าวสารตอนไหนก็ได้