Passive Income via Automation: The HID Reward Bot
การสะสมคะแนน Microsoft Rewards ผ่านการค้นหา Bing รายวันเป็นวิธีที่เชื่อถือได้ในการรับบัตรของขวัญฟรี แต่การทำด้วยตนเองนั้นน่าเบื่อ ABPC (Automatic Bing Point Collector) จะทำให้กระบวนการทั้งหมดนี้เป็นไปโดยอัตโนมัติ โดยเปลี่ยน Arduino Leonardo ให้เป็นตัวจำลองคีย์บอร์ดระดับฮาร์ดแวร์ แตกต่างจากสคริปต์ซอฟต์แวร์ที่สามารถตรวจจับได้ด้วยมาตรการต่อต้านบอท Leonardo จะปรากฏต่อคอมพิวเตอร์ว่าเป็นคีย์บอร์ด USB ที่ใช้งานโดยมนุษย์อย่างถูกต้อง ทำให้ระบบอัตโนมัตินี้แทบจะแยกไม่ออกจากการพิมพ์ด้วยตนเอง
HID Emulation: The Superpower of the Leonardo
ทำไมถึงใช้ Leonardo แทน Uno?
- Native USB Communication: Leonardo (ATmega32u4) มีการสื่อสาร USB ในตัว สิ่งนี้ทำให้มันสามารถทำงานเป็น HID (Human Interface Device) ได้ ด้วยการใช้ไลบรารี
Keyboard.hทำให้ Arduino สามารถ "กด" ปุ่ม, "พิมพ์" ข้อความ และใช้ทางลัดเฉพาะของคอมพิวเตอร์ เช่นCtrl+T(New Tab) หรือCmd+Q(Close) - Hardware vs. Software: เนื่องจากคำสั่งมาจากพอร์ต USB โดยตรง ระบบปฏิบัติการจึงจัดการคำสั่งเหล่านั้นด้วยลำดับความสำคัญสูง ABPC ไม่จำเป็นต้อง "ติดตั้ง" บนคอมพิวเตอร์ คุณเพียงแค่เสียบปลั๊กและมันก็จะเริ่มทำงานได้กับทุก OS (Windows, Mac, หรือ Linux)
The Automation Safety Loop
การทำให้การป้อนข้อมูลด้วยคีย์บอร์ดเป็นไปโดยอัตโนมัติอาจเป็นอันตรายได้หาก Arduino เริ่มพิมพ์ในขณะที่คุณกำลังแก้ไขเอกสารส่วนตัว ABPC มีคุณสมบัติด้านความปลอดภัยที่ช่วยเพิ่ม Quality-of-Life (QoL) หลายประการ:
- Hardware Deadman Switch: Pin 2 ถูกใช้เป็นตัวกระตุ้นทางกายภาพ ระบบอัตโนมัติจะทำงานก็ต่อเมื่อ Pin 2 เชื่อมต่อกับ Ground การดึงสายออกจะหยุดสคริปต์ทันที ทำให้ผู้ใช้สามารถควบคุมทางกายภาพได้อย่างสมบูรณ์
- Status LED (Pin 13): ไฟ LED สว่างจะระบุสถานะปัจจุบัน หาก LED ติดอยู่ แสดงว่า "Ghost in the Machine" ทำงานอยู่ ผู้ใช้ควรระมัดระวังไม่ให้สัมผัสเมาส์หรือคีย์บอร์ดขณะที่ไฟเป็นสีแดง เพื่อหลีกเลี่ยงการขัดจังหวะลำดับ
- Randomization for Stealth: เพื่อหลีกเลี่ยงการถูกตั้งค่าสถานะว่ามีการจับเวลา "สมบูรณ์แบบ" โค้ดจะใช้ฟังก์ชัน
random()เพื่อเปลี่ยนแปลงความหน่วงระหว่างการกดแป้นพิมพ์และตัวอักษรที่พิมพ์ สิ่งนี้เลียนแบบความเร็วในการพิมพ์ของมนุษย์ที่หลากหลาย
Step-by-Step Operation
เพื่อให้เกิดประสิทธิภาพสูงสุด ABPC จะทำตามกิจวัตรที่เข้มงวด:
- The Search Sequence: มันจะเปิดแท็บใหม่ ไปที่ Bing พิมพ์สตริงแบบสุ่ม รอให้เซิร์ฟเวอร์รางวัลบันทึก 5 คะแนน แล้วจึงปิดแท็บด้วย
Ctrl+W - Daily Limits: เนื่องจาก Bing จำกัดคะแนนรางวัลไว้ที่ 150 คะแนนต่อวัน ABPC จึงถูกออกแบบมาให้ทำงานจนกว่าจะถึงเกณฑ์นี้ (ประมาณ 30 ครั้งในการค้นหา) ซึ่งจะทำให้ได้รับบัตรของขวัญมูลค่า 5 ดอลลาร์ทุกๆ 43 วัน โดยไม่ต้องใช้แรงงานคนเลย
เมื่อเร็วๆ นี้ ผมได้สมัครใช้งาน Microsoft Rewards ครับ Microsoft Rewards เป็นโปรแกรมที่ส่งเสริมการใช้ผลิตภัณฑ์และบริการของ Microsoft เมื่อคุณมีคะแนนเพียงพอ คุณสามารถใช้คะแนนที่ได้รับเพื่อเข้าร่วมการจับฉลากเพื่อรับรางวัลต่างๆ เช่น ชุด Xbox 1S Fortnite หรือชุดแล็ปท็อปเกม ASUS ROG หรือคุณสามารถแลกคะแนนเป็นบัตรของขวัญ เช่น บัตรของขวัญ Target หรือบัตรของขวัญ Walmart เป็นต้น
คุณสามารถใช้เครื่องมือค้นหา Bing เพื่อช่วยให้คุณได้รับคะแนน ทุกครั้งที่คุณค้นหาบางสิ่งด้วย Bing คุณจะได้รับ 5 คะแนน แต่บัตรของขวัญมูลค่า 5 ดอลลาร์ส่วนใหญ่มีราคา 6500 คะแนน ซึ่งจะต้องใช้การค้นหาถึง 1300 ครั้ง! นั่นจะใช้เวลานานมาก!
ด้วย ABPC จะใช้เวลาเพียง 43 1/3 วันในการได้รับ 6500 คะแนน (เนื่องจาก Bing จำกัดคะแนนรางวัลไว้ที่ 150 คะแนน)
การใช้ ABPC
1. เปิดเบราว์เซอร์ (แนะนำให้ใช้ Chrome อย่างยิ่ง แต่เบราว์เซอร์ใดก็ตามที่ทำงานได้เร็วที่สุดบนคอมพิวเตอร์ของคุณ)
2. ทำให้เบราว์เซอร์ของคุณเป็นหน้าต่างที่ทำงานอยู่โดยการคลิกที่มัน
3. เปิดแท็บใหม่ แม้ว่า ABPC จะไม่ทำให้แท็บอื่นๆ ของคุณเสียหาย แต่ก็ควรมีขอบเขตความปลอดภัย
4. เชื่อมต่อ digital pin 2 กับ ground และปล่อยให้มันทำงาน สถานะของ ABPC จะแสดงบน LED ในตัว หรือ LED ที่เชื่อมต่อกับ pin 13 ON = กำลังทำงาน OFF = หยุดแล้ว
5. เมื่อคุณทำเสร็จแล้ว ให้ถอด digital pin 2 ออก ห้ามทำสิ่งใดๆ จนกว่า PIN 13 จะอยู่ในสถานะ LOW (ซึ่งแสดงโดย LED ในตัว หรือ LED ที่เชื่อมต่อกับ pin 13) เนื่องจาก ARDUINO อาจยังคงพิมพ์หรือปิดแท็บอยู่ และอาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิด
6. ทำซ้ำในวันถัดไป
หลักการทำงานของโค้ด
ก่อนอื่นเราจะรวมไลบรารี keyboard จากนั้นเราประกาศความหมายของ ctrlkey ตรวจสอบให้แน่ใจว่าคุณประกาศตัวที่ถูกต้องตาม OS ของคุณ สำหรับ Mac OSX ให้ใช้: char ctrlKey = KEY_LEFT_GUI; สำหรับ Windows และ OS ที่ใช้ UNIX ให้ใช้: char ctrlKey = KEY_LEFT_CTRL; (Chrome OS และระบบที่ได้มาเป็นแบบ UNIX-based)
จากนั้น `setup` เริ่มต้นขึ้น เราตั้งค่าโหมดของขาด้วย pinMode(pin,mode); จากนั้นเราเริ่มการทำงานของคีย์บอร์ดโดยใช้ Keyboard.begin(); จากนั้นเรากำหนดค่าเริ่มต้นให้กับตัวสร้างตัวเลขสุ่มโดยใช้ randomSeed(value);
`loop` เริ่มต้นขึ้น เราตรวจสอบว่า pin 2 อยู่ในสถานะ LOW หรือไม่ (เนื่องจากมี pull-up ภายใน) หากเป็น LOW เราจะเปิดแท็บใหม่ ไปที่ Bing.com จากนั้นเราจะพิมพ์ตัวอักษรแบบสุ่ม รอให้โหลดและให้คะแนนเรา จากนั้นจึงปิดแท็บ จากนั้น pin 13 จะถูกตั้งค่าเป็น LOW แสดงว่า ABPC เสร็จสิ้นแล้ว เรารอ 100 มิลลิวินาทีเพื่อให้คอมพิวเตอร์มีเวลาตอบสนอง จากนั้นเราจะกลับไปที่จุดเริ่มต้นของ `loop`




