เตือนก่อน
วัตถุประสงค์ของ Project นี้เพียงเพื่อการศึกษาเพียงเท่านั้น การดัก Packet ข้อมูลต่าง ๆ หรือแม้กระทั่งการนำไป crack รหัส หากไม่ได้ทำในระบบ Network ของตนเองหรือได้รับอนุญาต อาจมีความผิดทางกฏหมายได้นะครับ นอกจากนี้ผู้เขียนไม่เคยเรียนพื้นฐานทางด้าน Computer และ Network มาก่อนอาศัยศึกษาเข้าใจเอาเองหากผิดพลาดประการใดสามารถแนะนำมาได้เลยครับ
The Tamagotchi
วัยรุ่นยุค 90 ที่เติบโตมาพร้อมกับ Tamagotchi สัตว์เลี้ยง Digital ยุคแรกๆ เท่าที่จำความได้ ฮิต
จากข้อมูลของเว็บ Wikipedia1 และ Tamagotchi-official2 เริ่มสร้างตำนานตั้งแต่ปี ค.ศ. 1996 ในประเทศญี่ปุ่น และเริ่มขายที่สหรัฐอเมริกาตั้งแต่ 1 พฤษภาคม 1997 หลังจากนั้นกระแสความนิยมก็พรุ่งทะยานสังเกตได้จากเป็นของเล่นที่เป็นที่นิยมมากโดยเฉพาะช่วงปลายยุค 90s ต่อช่วงต้นยุค 2000s โดย “Tamagotchi” แปลว่า “Egg Watch” Concept ของการเล่นของเล่น Tamagotchi คือ เลี้ยงดูสัตว์เลี้ยงตั้งแต่เป็นไข่ รอไข่แตก และมีกิจกรรมต่างๆ ตามค่าสถานะของแต่ละตัว เช่นหิว ความสุข สุขภาพ เป็นต้น ผู้เล่นจะต้องเฝ้าคอยกดกิจกรรมต่างๆ ไม่ว่าจะเป็นการป้อนอาหาร หรือการเล่นกับสัตว์เลี้ยงดิจิตอลนี้ เพื่อให้สัตว์เลี้ยงมีความสุข วงจรชีวิตสามารถสิ้นสุดได้ถึงเสียชีวิต จากความเจ็บป่วยหรืออายุที่มากขึ้น
The Pwnagotchi
Pwnagotchi เป็น Project ที่มี concept ว่า “Pwnagotchi: Deep Reinforcement Learning for WiFi pwning!” สำหรับคนที่ไม่เคยศึกษาทางด้าน Network หรือด้าน AI มาก่อนจะยิ่งงงมากขึ้นเนื่องจากมีคำศัพท์หลายคำที่ค่อนข้างเป็นที่แปลกใหม่
เป็น Project ที่เกิดจากความเบื่อระหว่างทำงาน ของเจ้าของ Project ในช่วงฤดูร้อน ปี 20193 หากสนใจตำนานอันแสนยืดยาวไปอ่านต่อได้ที่นี่
การทำงานหลักๆ จะทำการดัก Packet ข้อมูลเครือข่าย Wifi เพื่อให้ได้ข้อมูล Handshake โดย พฤติกรรมการดักข้อมูลมีทั้งรูปแบบ Passive รอให้เกิดการเชื่อมต่อ Wifi หรือแบบ Deauthentication ด้วยการส่ง Packet ข้อมูลไปยังจุดเชื่อมต่อ Wifi เพื่อให้ เครื่องที่กำลังเชื่อมต่อ (Client) อยู่หลุด และต้องทำการเชื่อมต่อใหม่ โดยใช้ระบบ AI ที่เรียกว่า Deep Reinforcement Learning มาช่วยในการเรียนรู้วิธีการให้ได้มาซึ่งข้อมูล Handshake พัฒนาความสามารถในการได้ข้อมูล Handshake ให้มากขึ้น
คำถามต่อมาคือ แล้วเราจะเอาไฟล์ Handshake ไปทำอะไร? ในส่วนนี้จะมีข้อมูลที่สำคัญสำหรับการเชื่อมต่อโดยเฉพาะรหัสผ่านของ Wifi พูดง่ายๆ คือเอาไฟล์นั้นมาถอดรหัสให้ได้รหัส Wifi ที่จะเชื่อมต่อนั่นเอง
ตัวอย่างไฟล์ Handshake ที่ถูกถอดรหัสสำเร็จแล้ว
นอกจากนี้ยังมี Community ที่มีการพัฒนามาอย่างต่อเนื่อง มีทั้งด้าน Hardware และ Software เช่น พัฒนาตัว Plugins ต่างๆ เพื่อมาตอบสนองการใช้งานที่มากขึ้น ยกตัวอย่างเช่นมีการพัฒนา Plugins ที่สามารถทำการ Crack ไฟล์ Handshake (.pcap) จาก Wordlist ของ password ที่มีการเตรียมไว้ ในตัวเครื่อง Pwnagotchi เองได้เลย
The Term
Pwnagotchi - เป็นคำที่เกิดจากการรวมกันของคำว่า pwn และ -gotchi ซึ่งคำว่า -gotchi นี้เองที่ได้รับแรงบันดาลใจมาจากของเล่นสุดฮิตในยุคปี 90s ข้างต้นคือ “Tamagotchi”
PWN - หรือจะเขียนเป็น pwn ก็ได้เป็นคำ Slang มักใช้บ่อยๆ ในวงการเกม online หรือ hacker ที่หมายถึง สามารถควบคุม เอาชนะ หรือทำได้ดีกว่าคนบางคน ซึ่งน่าจะเพี้ยนมาจากการพิมพ์ผิด เช่นคำว่า own หรือ owning เพราะแป้นคีย์บอร์ดอยู่ติดกัน “o” จึงกลายเป็น “p” ออกมาเป็น “pwn” หรือ “pwning” และได้รับความนิยมในวงการเกมออนไลน์มาเรื่อยมา4
Reinforcement Learning เป็นการเรียนรู้รูปแบบหนึ่งที่เป็นวงจรการเรียนรู้แบบ “trial-and-error” 5 ในรูปแบบของการได้รับรางวัลหรือการถูกลงโทษ มีส่วนประกอบหลักๆ คือ6
- Agent ตัวแบบ อาจจะเป็นตัว AI เองที่มีปฏิกริยากับสิ่งแวดล้อม
- Environment - เป็นองค์ประกอบภายนอกของระบบที่มีปฏิสัมพันธ์กับ AI
- Action - พฤติกรรมของ AI หรือตัวแบบที่แสดงออกมาในสภาพแวดล้อม (Environment)
จากรูป Agent คือตัวเด็กน้อยที่กำลังนั่งอยู่ แสดงพฤติกรรมออกมาโดยการคลาน และได้รับปฏิสัมพันธ์เป็นรางวัลคือได้ขวดนมการได้รับ รางวัล (Reward) หรือ การลงโทษ (Punishment) เป็นระบบของ Reinforcement Learning ตัวแบบหรือ AI จะนำผลลัพธ์ที่ได้มาปรับการเรียนรู้โดย ถ้าได้รับรางวัลจะเป็นแรงผลักดันให้ทำพฤติกรรม (Positive reinforcement) ส่วนถ้าถูกลงโทษตัวแบบจะพยายามลดพฤติกรรม (Negative reinforcement)
Deep Learning เป็นรูปแบบหนึ่งของการเรียนรู้ด้วยเครื่องจักร (Machine Learning) ซึ่งจะคล้ายการทำงานของระบบประสาทของมนุษย์ มีการสร้างเครือข่าย Neural Network ประกอบด้วยตัวแปรต่างๆ มาปรับการเรียนรู้เพื่อให้เกิดผลลัพธ์ตามที่ต้องการ 7
ตัวอย่างรูปโครงร่างประสาทเทียม (Artificial Neural Network) ซึ่งมีการรับ Input มาเพื่อคำนวณ Output โดยระหว่างทางจะมีการปรับทั้ง Weight และ Bias ของตัว Input อีกทั้งยังมีชั้นของระบบประสาท (Layer) ในการปรับจนได้ผลลัพธ์ (Output)
Deep Reinforcement Learning - ประกอบด้วยสองส่วนประกอบหลักๆ คือ Reinforcement Learning และ Deep Learning เมื่อนำมารวมกันจะสร้างเป็นระบบการเรียนรู้ที่คล้ายกับพฤติกรรมมนุษย์กล่าวคือ มีทั้งส่วนที่คล้ายการทำงานของสมองมนุษย์ (Deep Learning) และส่วนที่คล้ายการเรียนรู้ของมนุษย์ (Reinforcement Learning)
Wifi Handshake 101
ส่วนนี้แปลมาจาก WiFi Handshakes 101 ของทาง Pwnagotchi official site
เพื่อให้สามารถเข้าใจการทำงานของ Pwnagotchi ว่าจะสามารถดักข้อมูลได้อย่างไร จะต้องทำความเข้าใจพื้นฐานการเชื่อมต่อ ระหว่างเครื่องลูกข่าย (Client) และจุดเชื่อมต่อ (Access point) ผ่าน Protocol WPA/WPA2 ซึ่งเป็น Protocol ยอดนิยมในการเชื่อมต่อ
หากเราต้องการจะเชื่อมต่อโทรศัพท์มือถือกับระบบ Wifi ที่บ้านของเรา จะมีการแลกเปลี่ยนข้อมูลเกิดขึ้น 4 ครั้ง หรือ 4 way handshake โดยข้อมูลที่เกิดขึ้นใน 4 ครั้งนี้จะมี Wifi password เข้ามาด้วย การจะได้มาซึ่งข้อมูลระหว่างมือถือ และจุดเชื่อมต่อนี้ สามารถทำได้โดยการดักข้อมูลที่เกิดขึ้นระหว่างการเชื่อมต่อ เพื่อให้ได้มาซึ่งข้อมูลที่เรียกว่า “4-way handshake”
Let Start
อันที่จริงไม่เคยทราบมาก่อนว่ามี Project นี้อยู่ ทั้งๆ ที่มีมานานแล้ว แต่เพิ่งมา Search เจอช่วงที่สนใจ Flipper Zero (ไว้ถ้ามีเวลาจะเขียนรีวิวอุปกรณ์นี้อีกครั้งหนึ่ง) พอได้อ่านรายละเอียดจึงเริ่มสนใจจริงจัง ในตอนแรกว่าจะเอาเครื่อง Raspberry pi เครื่องเก่า (4B) มาลองทำดูเล่นๆ แต่ไหนๆ ก็จะลองแล้วอยากลองทำให้เหมือนกับต้นแบบไปเลยเพื่อให้สามารถพกพาได้สะดวกมากยิ่งขึ้นจึงต้องหาอุปกรณ์ต่างๆ มากมาย ตามรายการดังต่อไปนี้
- Raspberry Pi Zero
- จอแสดงผล E-ink Display
- Real time hardware clock
- Battery พกพา เพื่อให้สามารถไปใช้งานนอกสถานที่ได้
Raspberry Pi Zero
จาก Website official แนะนำให้ใช้ Pi Zero เนื่องจากพกพาสะดวก และสามารถทำงานที่ต้องการได้ครอบคลุม แต่สามารถใช้งาน Raspberry pi ตระกูลอื่นๆ ได้เช่นกัน เช่น 3 4 หรือ 5 ตัดสินใจเลือก Raspberry Pi Zero เนื่องจากต้องการพกพา และให้เหมือนต้นแบบมากที่สุด ระหว่างกำลังหาซื้อ (Shopping Online) พบว่ามีหลายรุ่นมาก โดยในปัจจุบันจะเป็น Pi Zero 2 W ปัญหาต่อมาคือ จะเลือกแบบมี GPIO ที่ทำการบัดกรี มาแล้วหรือเลือกเป็น ช่องว่างๆ มาบัดกรีเอง ข้อนี้เลือกไม่ยาก เพราะไม่มีทักษะในการบัดกรีเลย จึงเลือกแบบสำเร็จรูปมาใช้งาน
จอแสดงผล
ส่วนนี้เป็นส่วนที่จะมีหรือไม่มีก็ได้ แต่ในเมื่อมันคล้าย Tamagotchi มันต้องมี! หาข้อมูลว่าทำไมต้องใช้ E-ink Display ที่เป็นขาวดำ เพราะปัจจุบันมีแบบสีก็มี พบว่า Refresh rate ที่ดีกว่า และลดการใช้ พลังงานได้มากกว่าแบบสี จึงตัดสินใจซื้อแบบ รุ่นล่าสุด Waveshare V4 ขนาดพอเหมาะ พอเจาะกับ Pi Zero
Real Time Hardware Clock
อุปกรณ์แก้ปัญหาของตัว Raspberry Pi Zero ที่ไม่มี Hardware clock ในตัวเองทำให้การแสดงเวลาอาจจะมีความผิดพลาด หรือไม่อัพเดท หากไม่ได้เชื่อมต่อกับระบบ internet หรือ Bluetooth จะติดตั้งหรือไม่ติดตั้งก็สามารถทำงานได้ ราคาไม่แรงมาก แต่ต้องใช้ทักษะการบัดกรี และเชื่อมต่อสายไฟพอสมควร เพราะไม่สามารถติดตั้งไปได้โดยตรง ต้องมีการดัดแปลงเล็กน้อย
Battery พกพา
ถ้าไม่คิดว่าจะใช้งานนอกสถานที่ หรือสามารถหาแหล่งพลังงานได้ตลอดเวลาไม่จำเป็นต้องใช้ Battery พกพาที่ประกอบติดกับตัวเครื่องเลยก็สามารถทำได้ แต่ไหนๆ จะทำแล้วมันต้องสุด ตามตาราง Battery ที่แนะนำและผล Test ต่างๆ จึงตกลงปลงใจมาที่ PiSugar
อุปกรณ์ที่คิดว่าน่าจะหายากที่สุดคงเป็น Battery พกพา เพราะอยากได้ที่เป็นขนาดพอดีกับตัวเครื่องและเฉพาะสำหรับ Raspberry pi Zero จึงต้องสั่ง PiSugar เท่าที่หาเจอมีแต่ AliExpress ที่มีขาย และส่วนใหญ่จะ PreOrder จึงทดลองสั่งมา 1 อัน เป็น Version 3 สั่งต้นเดือน ส.ค. กำหนดส่ง ต้นเดือน ต.ค.!!
ประกอบเครื่อง
เมื่ออุปกรณ์ต่างๆ เริ่มมาถึง สิ่งแรกที่มาถึงคือ Raspberry Pi Zero 2 W เพราะสั่งจากในประเทศใช้เวลาไม่นานมาก แต่ยังไมค่อยมีเวลามาก จึงวางไว้เฉยๆ จนกระทั่งอีกประมาณ 1 อาทิตย์ หน้าจอแสดงผล E-ink display ของ waveshare ก็มาถึง ตามมาด้วย Hardware Clock จึงเริ่มประกอบร่าง
ขั้นตอนประกอบนี้ไม่ยากเลยเพียงแค่ ประกอบ ตัว Pi Zero เข้ากับ E-ink display ใช้เพียงแค่มือกด เนื่องจากสั่งรุ่นที่มี Pin GPIO มาแล้วไม่จำเป็นต้องบัดกรีอะไรเพิ่มเติม แต่นาฬิกานี่แหละปัญหา ไว้ค่อยหาผู้เชี่ยวชาญช่วยประกอบร่าง
ขั้นตอนที่ยากที่สุดคงจะเป็นการลง Image file เพื่อให้ ระบบสามารถทำงานได้ จาก Official Website เมื่อตามไปที่ Github ของผู้พัฒนาจะพบว่า Image file ล่าสุดเป็น Version 1.5.5 ซึ่งเมื่อ Clone มา Flash ลง SD Card แล้วนำไปเสียบสายไฟ ก็ไม่ติด!
เอ๊ะหรือว่าบอร์ด Pi Zero เราเสียหว่า ไม่เคยทดลองมาก่อนด้วย ได้มาถึงก็ประกอบเลย จึงต้องถอยมา 1 ก้าวก่อนมาทดสอบอุปกรณ์แต่ละตัว เริ่มจากลง Image file ของ Raspbian (ระบบปฏิบัติการพื้นฐานของ Raspberry pi ทำงานบน Debian) แล้วลองเสียบไฟเปิดเครื่องดู เอ้าติด! ทำงานได้ตามปกติ สงสัย Image File ของ Pwnagotchi จะมีปัญหาซะแล้ว จึงต้องทำการหาข้อมูลต่างๆ เพิ่มเติมจนกระทั่งไปพบว่า มี Community Image ที่ยังคงทำการ Update อยู่ ทำให้ Support กับ Hardware ตัวใหม่ๆ จึงได้ Image File มาจาก Github ของ jayofelony ที่บอกว่าสนับสนุนทั้ง Pi Zero 2 W และ Waveshare V4 ไม่รอช้ารีบทำการ Flash ลง SD Card แล้วเสียบเข้า PowerBank ทดสอบดู รอบนี้มีไฟติดที่บอร์ด! และแล้ว
ระบบเริ่มต้นขึ้น หน้าจอแสดงผลได้ ผ่านขั้นตอนด้าน Hardware และ Base Image แล้ว การ Config ต่างๆ เพิ่มเติมสามารถทำได้โดยการแก้ไขไฟล์ config.toml ผ่านทาง secure shell (ssh) เข้าไปที่บอร์ดของ Pi Zero โดยตรง ทั้งการติดตั้ง Plugins และตั้งค่าต่างๆ แต่กว่าจะผ่านแต่ละขั้นตอนแต่ละ Plugins นั้นจะต้องใช้ทักษะด้านคอมพิวเตอร์ค่อนข้างเยอะ แนะนำทักษะที่ควรจะทำได้ เพื่อให้สามารถใช้งาน เจ้า Pwnagotchi ได้มากขึ้น
- ทักษะด้าน Hardware เช่นการบัดกรี อ่านแผงวงจร (ส่วนตัวผู้เขียนไม่มี)
- การใช้ คำสั่ง Command line หรือ Terminal ต่างๆ เพื่อให้สามารถใช้งานได้คล่องแคล่วมากขึ้น พื้นฐานเช่น การ เขียน อ่าน สำเนาไฟล์
- การทำ Secure shell (SSH) เนื่องจากจำเป็นต้องใช้ในการเข้าถึงบอร์ด Raspberry Pi โดยไม่ต้องต่อหน้าจอ คีย์บอร์ด และเม้าส์
- ภาษา Python เนื่องจาก Plugins ต่างๆ ถูกเขียนเป็น ภาษา Python การเข้าใจภาษา Python จะทำให้เข้าใจการทำงานของ Plugins และแก้ปัญหาต่างๆ เบื้องต้นได้
- ทักษะการค้นหาข้อมูล เนื่องจากข้อมูลกระจัดกระจายตามที่ต่าง ๆ อีกทั้ง Community ไม่ใหญ่มาก จะต้องอาศัยการค้นหาข้อมูลจากแหล่งต่างๆ มาประกอบเพื่อแก้ปัญหา
The Battery
สิ่งสำคัญที่จะทำให้เราสามารถพกพาได้สะดวกขึ้น และรอคอยเป็นเวลานานคือ Battery มาก่อนเวลาค่อนข้างเยอะ จากเวลาคาดการณ์ที่คาดว่าจะถึงช่วงประมาณเดือนตุลาคม มาถึงปลายเดือนสิงหาคมนี้เอง เมื่อได้รับมาถึงจึงรีบประกอบร่าง การประกอบไม่ยากเพียงแค่ขันน็อต ประกบด้านหลังเข้ากับบอร์ดของ Pi Zero ก็เป็นอันเสร็จสิ้น!
ขนาดความหนาสูงขึ้นตามแบตเตอรี่ แต่ ความกว้าง x ยาว ยังไม่เปลี่ยน เมื่อชาร์จแบตเตอรี่เต็มใช้ได้ราวๆ 4 ชั่วโมง ถือว่าดีทีเดียว กับ Battery 1200 mAh
What Next?
สำหรับการพัฒนาปรับปรุงต่อไปที่วางแผนไว้ คงเป็นเรื่องของการฝึกทักษะการบัดกรี เพื่อติดตั้ง Hardware clock และที่สำคัญคงต้องศึกษาเรื่อง 3D Printing เพราะต้องการ Case! มาใส่อย่างมาก
หลังจากวุ่นวายกับการลองทำ Project นี้อยู่ราว ๆ 1 - 2 อาทิตย์ก็พบว่า ทำให้เรามีทักษะต่างๆ เพิ่มขึ้นมามากมาย คุ้มค่ากับเวลาที่เสียไป เช่น การทำ scp ระหว่างอุปกรณ์ การ Setup Internet sharing ระหว่างอุปกรณ์ต่างๆ เป็นต้น เผื่อมีผู้สนใจอยากเรียนรู้
บทสรุป
เป็น Project ที่ทำให้ได้เรียนรู้ทั้งด้าน Network และทักษะ Computer หลายๆ ได้เพิ่มมากขึ้น อีกทั้งยังได้รู้ถึงความสำคัญของการตั้งรหัส Wifi ว่า ตั้งให้ยาวๆ เยอะๆ ไว้ก่อน และต้องไม่อยู่ใน common word เพราะปัจจุบัน wordlist ที่ใช้อยู่มีขนาดใหญ่ถึง 15 GB ทั้งๆ ที่เป็น .txt แสดงว่ามีข้อมูลจำนวนมาก อีกทั้งคอมพิวเตอร์ก็มีคุณสมบัติในการ Brute force ได้อย่างรวดเร็วมากยิ่งขึ้น
สุดท้ายอย่าลืมแลกเปลี่ยนเรียนรู้กันได้นะครับ