1 Punkte von GN⁺ 2024-11-30 | 1 Kommentare | Auf WhatsApp teilen

Einführung

  • Dieses Projekt begann als Lernerfahrung, um das Wissen über Machine Learning und TensorFlow zu vertiefen.
  • Ziel war es, ein Machine-Learning-Modell zu entwickeln, das 4Chan-CAPTCHAs im Browser mit einer Genauigkeit von über 80 % lösen kann.

Begriffe

  • CAPTCHA: Ein Test, mit dem überprüft wird, ob ein Computer- oder Website-Nutzer ein Mensch ist.
  • 4Chan: Eine anonyme Imageboard-Website mit Diskussionsforen zu verschiedenen Themen.
  • Normales CAPTCHA: Das 4Chan-CAPTCHA, das aus 5 bis 6 alphanumerischen Zeichen besteht.
  • Slider-CAPTCHA: Eine komplexe Form von CAPTCHA, bei der sich ein Hintergrundbild und ein Vordergrundbild überlagern.

Datensammlung

  • Der schwierigste Teil eines Machine-Learning-Problems ist das Sammeln von Daten.
  • Die wichtigste Herausforderung bestand darin, CAPTCHAs von 4Chan zu scrapen und die Lösungen zu erhalten.

CAPTCHAs von 4Chan scrapen

  • Durch die Analyse von HTTP-Anfragen wurde eine Methode gefunden, um CAPTCHA-Daten im JSON-Format zu extrahieren.
  • Der Abstand zwischen den Anfragen musste angepasst werden, um den Schwierigkeitsgrad der CAPTCHAs zu steuern.

Lösungen erhalten

  • Kommerzielle CAPTCHA-Lösungsdienste wurden genutzt, ihre Genauigkeit war jedoch gering.
  • Es wurde auch versucht, sie selbst zu lösen oder vertrauenswürdige Personen darum zu bitten, doch das war nur begrenzt praktikabel.

Synthetische Daten erzeugen

  • Es wurden synthetische Daten erzeugt, die 4Chan-CAPTCHAs nachahmen.
  • Ein Algorithmus wurde entwickelt, um synthetische CAPTCHAs zu erzeugen, indem Hintergrund und Zeichen getrennt wurden.

Modellerstellung

  • Das Modell wurde mit einer LSTM-CNN-Architektur aufgebaut.
  • Es wurde mit Keras und TensorFlow implementiert.

Datenverarbeitung

  • Alle CAPTCHA-Bilder wurden für die Eingabe in das Modell auf 300x80 Pixel angepasst.
  • Die Bedeutung der Dokumentation wurde hervorgehoben, und es musste darauf geachtet werden, keine Details in der Dokumentation zu übersehen.

Modelltraining

  • Das Modell wurde mit rund 500 manuell bearbeiteten Bildern und 50.000 synthetischen Bildern trainiert.
  • Das Training wurde auf einer NVIDIA RTX A4000 GPU durchgeführt.

Verwendung des Modells in TensorFlow.js

  • Das Modell wurde in TensorFlow.js konvertiert, damit es im Browser ausgeführt werden kann.
  • Unter Python 3.12 funktioniert das Konvertierungsskript nicht.
  • Keras-3-Modelle werden von TensorFlow.js nicht unterstützt.

Leistung in der Praxis

  • Bei echten 4Chan-CAPTCHAs wurde eine Erfolgsquote von über 90 % erreicht.
  • Auch bei 4-Zeichen-CAPTCHAs wurde die gleiche Leistung gezeigt.

Fazit

  • Durch dieses Projekt wurde viel über Machine Learning und Computer Vision gelernt.
  • Das Ziel wurde erreicht und ein zufriedenstellendes Ergebnis erzielt.

1 Kommentare

 
GN⁺ 2024-11-30
Hacker-News-Kommentare
  • Das Parsen von Visualisierungsdaten mit JSON-Skripten ist eine komplexe Aufgabe
    • 4chan hat begonnen, eine E-Mail-Verifizierung zu verlangen
  • Interoperabilitätsprobleme zwischen Keras und TensorFlow.js sind ein typisches Problem von TensorFlow
    • TF fühlt sich eher wie eine Sammlung verwandter Tools als wie ein integriertes Produkt an
    • Viele Open-Source-Bibliotheken/Tools von Google vermitteln ein ähnliches Gefühl
  • Es gibt einen Grund, warum Menschen verzerrte textbasierte CAPTCHAs vermeiden
    • Computer haben ein Niveau erreicht, auf dem sie sie besser lösen können als Menschen
    • Dazu gibt es eine interessante wissenschaftliche Arbeit
  • Überraschenderweise lassen sich viele textbasierte CAPTCHAs mit ein paar Zeilen Shell-Skript lösen
    • Mit imagemagik in Graustufen umwandeln und dann mit teserract verarbeiten
  • Es gibt auch Websites wie 2captcha.net
    • CAPTCHAs entsprechen im Grunde einer minimalen Hürde
  • Ich frage mich, ob es besser wäre, unter dem Vorwand eines CAPTCHAs das Nutzerverhalten und Timing zu analysieren
    • Man könnte einen „umgekehrten Turing-Test“ erfinden, der eine KI darauf trainiert zu beurteilen, ob das Gegenüber ein Mensch ist oder nicht
  • Es gibt eine Analyse des Silk-Road-CAPTCHAs aus dem Jahr 2014
  • Die angemessene Reaktion von 4chan wäre, die menschliche Arbeit zu vereinfachen
    • Komplexe CAPTCHAs erhöhen die Unannehmlichkeiten für Menschen und verringern nicht die Lösbarkeit durch Maschinen
  • Es ist möglich, dass die Zeichenauswahl im 4chan-CAPTCHA absichtlich so gewählt wurde, dass rassistische/extremistische Slogans entstehen können
    • Bestimmte Zeichen werden häufig verwendet
    • Es wirkt zufällig, aber bestimmte Muster treten häufig auf
  • Es gibt ein Projekt, das 4chan-CAPTCHAs löst
  • Ich habe versucht, 4chan zu nutzen, bin aber am CAPTCHA gescheitert
  • Ich frage mich, ob 4chan wie Google-CAPTCHAs Bot-Verhalten erkennt