Domanda

CAPTCHA che chiedono agli utenti di leggere testi distorti vanno bene per le persone vedenti, ma costituiscono una terribile barriera per coloro che sono ciechi o hanno altre disabilità.Occasionalmente sono disponibili alternative audio, ma non aiutano ancora coloro che sono sia sordi che ciechi e possono essere difficili da usare con uno screen reader (che ti sta già leggendo le parole).

Esistono un paio di soluzioni che utilizzano gli esseri umani per risolvere il CAPTCHA per conto dell'utente, ad esempio WebVisium E Solona, ma queste dipendono dalla disponibilità di operatori volontari (ad esempio, Solona pare abbia un solo volontario quindi devi sperare che sia sveglio quando vuoi aiuto).

Mi viene in mente che il volume di soluzioni CAPTCHA necessarie ai non vedenti è molto basso: direi meno di qualche centinaio al giorno in un paese popoloso come il Regno Unito.Ciò significa che a differenza dei malintenzionati che vogliono compiere un'azione più volte in un breve periodo, un servizio di assistenza CAPTCHA per non vedenti potrebbe permettersi di dedicare notevoli risorse computazionali - ad esempio, una nuvola di computer in AmazonEC2 - all'identificazione del testo presentato.

La mia domanda è questa:supponendo che non ti importi molto della velocità e che tu abbia molti computer a disposizione, esistono algoritmi che ti consentono di risolvere i CAPTCHA di distorsione del testo che sono comuni oggi, come quelli usati da reCaptcha?Oppure questi problemi sono davvero inrisolvibili anche con molte risorse e tempo?

Alcune note:

  1. A questo punto, la mia domanda è solo teorica, ma chiaramente qualsiasi servizio di questo tipo dovrebbe controllare attentamente l’accesso per tenere lontani gli spammer.Forse solo i ciechi registrati potrebbero usarlo.

  2. Ne sono consapevole un vecchio CAPTCHA di Yahoo era rotto alcuni anni fa utilizzando un algoritmo che viene eseguito in pochi secondi su un singolo computer.Mi chiedo se i moderni CAPTCHA possano essere violati, forse più lentamente e con più risorse.

  3. Sono consapevole che stanno comparendo alcuni nuovi tipi di CAPTCHA che chiedono agli utenti di farlo identificare i gattini O orientare un'immagine.Questi non sono ancora diffusi, quindi per ora chiedo solo della distorsione del testo.

È stato utile?

Soluzione

Fondamentalmente risolvere un CAPTCHA distorsione testo si compone di tre fasi individuali:

  1. Scopri dove le parti interessanti sono
  2. Segmento il testo in singole lettere
  3. riconoscere le lettere

L'unico problema che rimane, che è piuttosto difficile per i computer è la seconda. La prima di solito non è molto difficile, a meno che non vi capita di inciampare su la CAPTCHA dall'inferno . E il terzo viene risolto con i computer con una migliore percentuale di successo che per gli esseri umani.

Un sito interessante per imparare CAPTCHA sono rotte è quello dal href="http://www.ocr-research.org.ua/thinking.html" rel="nofollow noreferrer"> OCR squadra .

Altri suggerimenti

CAPTCHA è stato creato per evitare macchine di rilevare le parole. E 'pensato per essere letto da solo gli esseri umani. Rendere più leggibile per i non vedenti / udenti aggiunge un rischio di macchine in grado di capire di nuovo, annullando così il loro effetto.

Gli spammer hanno trovato un modo molto efficace per rompere il CAPTCHA più popolare però. Hanno appena assumono lavoratori a basso costo a leggerli, in cambio di pochi centesimi per account di lavoro. Di conseguenza, c'è una piccola industria intorno rompere CAPTCHA di creare milioni di account che possono poi essere utilizzati per inviare più spam. Rispetto alla quantità acquisita dai spammer, i costi sono quasi nessuno. Una soluzione simile potrebbe essere utilizzato da persone non vedenti / udenti, che avrebbero inviare l'immagine CAPTCHA a qualche lavoratore a basso costo in Cina o ovunque, dove si risponderà con le parole giuste e il non vedente / sordi sarà in grado di procedere. Purtroppo, le persone non vedenti solo bisogno di questo servizio solo poche volte mentre gli spammer hanno bisogno di un flusso continuo, in tal modo quei lavoratori preferiscono lavorare per gli spammer, invece. (La paga è migliore.) Eppure, la soluzione migliore sarebbe quella di inviare il CAPTCHA a qualche amico, far loro leggere e / o decifrare e restituire la risposta.

Lo stile ReCAPTCHA legge anche le parole. Una semplice applicazione di riconoscimento vocale potrebbe essere in grado di riconoscere ciò che è detto, anche se il riconoscimento vocale ha ancora bisogno di ulteriori ottimizzazioni. Ancora, si potrebbe desiderare di lavorare da questo punto di vista, ottenendo l'applicazione per ascoltare il suono di byte invece.

Quando è possibile rompere CAPTCHA, essi saranno solo pensare di migliori metodi CAPTCHA-like. tecniche di OCR sono ancora migliorando così più lavoro sarà fatto per rendere il CAPTCHA di più difficile. Cioè, fino a OCR è diventato buono come l'occhio umano a riconoscere parole ...

Un algoritmo potrebbe essere creato, anche se lento. Con 26 lettere minuscole e 26 lettere maiuscole e 10 cifre, non dovrebbe essere troppo difficile a venire con un algoritmo. Con i caratteri Serif e Sans-serif, il numero di combinazioni avrebbe bisogno di essere raddoppiata, però. Eppure, se si tenta di curva di tutte le lettere in un modo simile come la lettera del CAPTCHA, si dovrebbe essere in grado di rilevare una lettera che viene coperto dalla lettera CAPTCHA più. E questo sarebbe il candidato più probabile. Ancora si ha bisogno di cancellare le linee, sporco e altri manufatti dall'immagine che l'occhio umano ha meno problemi a riconoscere che un computer. Avresti bisogno le seguenti operazioni:

  1. ripulire l'immagine.
  2. Rileva la posizione delle lettere.
  3. Per ogni lettera 3a. Determinare la curva della lettera controllando il lato sinistro. 3b. Fare una sovrapposizione di ogni eventuale lettera / cifra per trovare quello che copre il migliore. (Questa è la lettera più probabile.)
  4. Una volta trovato la parola, fare un controllo dizionario per assicurarsi che sia una parola vera. (A meno che il CAPTCHA non usa parole vere.)

Anche se possono ruotare le lettere del CAPTCHA di, dovrebbe essere possibile rilevare la rotazione torsione che hanno usato semplicemente guardando il lato sinistro di ogni lettera e poi cercando di applicare la stessa curva per ogni lettera. (52 combinazioni, oltre a 10 cifre, se si utilizzano anche le cifre.) In sostanza, ci si tenta di mettere una casella intorno ogni lettera, quindi controllare quale lettera conterrà la quantità minima di spazio bianco. Questa è la lettera più probabile.

Il motivo principale per cui questo non è spesso usato per l'OCR è fondamentalmente il bisogno di velocità. Passo 3a / b tende ad essere lento, soprattutto se si deve prendere in considerazione lo stile del carattere.


Fare questa risposta più grande, ma in risposta a uno dei commenti:

Ci sono diversi modi per la pulizia un'immagine. Avreste bisogno di qualche filtro di colore, riduzione del rumore e un algoritmo che è in grado di riconoscere le linee rumorose attraverso un'immagine. Il DEFCON presentazione che hai indicò mostra alcune semplici techniques per filtrare via alcuni rumori. Esso dimostra che uno strumento di base di elaborazione delle immagini può già fare un'immagine molto più chiara per una macchina da leggere. Un semplice sfocatura pulirà punti casuali e linee sottili mentre i filtri colore sarebbe filtrare via i colori rumorosi. Un passo successivo sarebbe quello di provare a mettere una casella intorno ad ogni lettera nella CAPTCHA, sperando che il sistema è in grado di riconoscere le loro posizioni. Non conosco nessun algoritmi pratici per questo, ma ci dovrebbe essere modi per riconoscere loro. C'è un software in grado di creare immagini vettoriali da bitmap, quindi ci dovrebbe essere un software che è in grado di calcolare una casella attorno una lettera. E 'probabile che questa casella non avrà angoli rettangolari, in tal modo si dovrebbe distorcere tutte le 52 lettere per corrispondere alla stessa casella. Corsivo o grassetto non dovrebbe fare molta differenza in quanto questi stili sono distorsioni solo aggiuntivi. Serif o Sans-serif fa la differenza, però. serif tendono ad avere un paio di picchi e ornamenti. Fortunatamente, ci sono algoritmi che possono trasformare una scatola a qualsiasi altra figura con quattro angoli.

applicazioni OCR Regolari per scontato che le lettere sono per lo più diritta e sarà solo controllare alcuni hotspot per trovare una corrispondenza. Così, a volte si sbagliano a causa del rumore. Per rompere CAPTCHA, si avrebbe bisogno di una corrispondenza più sensibile, preferibilmente "XOR-ing" l'immagine CAPTCHA lettera con l'immagine di una delle 52 lettere, quindi contando il numero di macchie bianche e nere per calcolare il rapporto. Supponendo bianco = 1 e nero = 0, il risultato del XOR dovrebbe essere quasi nero per la migliore corrispondenza.

Credo che molti spammer hanno già trovato alcuni algoritmi utili per rompere CAPTCHA di ma per loro, mantenendo questi algoritmi un segreto solo li tiene nel mondo degli affari.


Un altro commento, più testo. : -)

La segmentazione sarebbe un problema, ma non è impossibile da risolvere. E 'solo estremamente complessa. Ma quando hai ripulito l'immagine, dovrebbe essere possibile calcolare due linee. Una linea che tocca il fondo di ogni lettera e una seconda linea che tocca la parte superiore. Tuttavia, una buona CAPTCHA di non mettere le lettere sulle stesse linee più, ma quelle non-così-buoni potrebbe essere incrinato da solo seguendo le linee. (Indovinate? ReCAPTCHA mette lettere tra due linee!) Con due linee, si conosce la prima lettera inizia a sinistra, quindi si può provare sovrapponendo tutte le 52 possibilità lì fino a quando hai trovato una corrispondenza. Quando hai trovato uno, spostare verso destra per il secondo. E ancora prima di aver letto tutte le lettere. Con due linee per guidare l'utente, non hai bisogno di una scatola completa.

Letters tendono ad utilizzare un rapporto costante tra larghezza e altezza. Con due linee, è possibile calcolare l'altezza della lettera completa e quindi ottenere una buona stima della larghezza di corrispondenza.

Ancora, il lavoro fuori l'algoritmo corretto per calcolare tutto questo è un po 'troppo per i miei poveri abilità matematiche. Avreste bisogno di un matematico esperto per rompere questo algoritmo.

La mia risposta alla tua domanda "sono questi problemi davvero intrattabili, anche con un sacco di risorse e di tempo?" è quello di sottolineare che questa è la ragione che CAPTCHA funzionano.

La mia comprensione è che lo scopo di un CAPTCHA è quello di dimostrare che siete umani, piuttosto che un bot spam. reCAPTCHA sono un romanzo prendere su questo tema perché prendono immagini che rappresentano il testo che non può essere risolto con l'OCR (riconoscimento ottico dei caratteri) motori. La differenza tra una persona e una macchina in questo caso è che l'algoritmo specializzata (s) ha cercato di interpretare questa immagine e non è riuscito, mentre una persona "normale" ha la capacità intrinseca di interpretare il testo in modo coerente umana. Detto questo, in futuro, ci auguriamo che qualcuno si presenti con migliori motori OCR in modo che ci deve essere un intervento meno umano nella digitalizzazione delle informazioni mondi. Speriamo che qualcuno si presenti con una soluzione trattabili a questo particolare problema.

Dal tuo punto di vista di cercare di fare CAPTCHA più accessibile ai non vedenti - che hanno ancora bisogno di dimostrare che sono persone piuttosto che bots spam - la comunità ha bisogno di venire a conoscenza di questo problema e trovare un modo per identificare le persone in un modo centric visione meno.

L'introduzione del CAPTCHA ha sicuramente reso il web meno accessibile ai non vedenti e sono d'accordo con te nel citarlo come un problema significativo che merita maggiore attenzione e preoccupazione.Tuttavia, sebbene il CAPTCHA possa essere ed è stato aggirato in modo incoerente sui siti Web più diffusi, non penso che questa sia una soluzione praticabile a lungo termine per chi ne ha bisogno.Infatti, il giorno in cui le varianti CAPTCHA attualmente presenti su siti come Facebook, Google, MySpace ecc.possono essere interrotti in modo affidabile e coerente è il giorno in cui diventeranno obsoleti e abbandonati per varianti più forti dello stesso o per una soluzione completamente nuova (come hai lasciato intendere, distinguere i gatti dai cani nelle immagini è stata una tendenza alternativa popolare).

Quando si parla di accessibilità online, ciò di cui penso che le persone con disabilità abbiano più bisogno in questo momento è il sostegno.Più persone contatteranno le società di software, i gruppi open source e gli organismi di standardizzazione e parleranno apertamente di questa esigenza, maggiore sarà la consapevolezza e ciò porterà (si spera) a maggiori azioni a nome della comunità di sviluppo.In definitiva, sarebbe bello vedere siti come Google o Facebook offrire metodi di accesso alternativi solo per gli utenti non vedenti.

Idealismo a parte, penso che sia produttivo perseguire altre strade come hai menzionato tu con la rete di volontari CAPTCHA, forse anche lo sviluppo di qualcosa come OpenID per le persone con disabilità rilevanti come pass di convalida del modulo universale.

Per quanto riguarda l'aspetto tecnico della tua domanda, non credo che la sola disponibilità di potenza di elaborazione aggiuntiva ti consentirà di violare il CAPTCHA in modo affidabile e coerente.Ci sono MOLTI soldi nello spam e puoi star certo che le losche società SEO e gli spammer hanno un gran numero di server a loro disposizione.Come ha menzionato Johannes Rössel, se vuoi saperne di più su come viene fatto e dove si trova la difficoltà tecnica, fai una ricerca sul riconoscimento ottico dei caratteri (OCR) e osserva l'ampia varietà di distorsioni di numeri/lettere che si verificano sui siti ad alto traffico.

Questo correlate, al fine mettere in discussione ha un numero di buon idee in esso, tra cui un DEFCON parlare che sostiene l'utilizzo di più OCR e pause di voto molti semplici CAPTCHA. Ciò suggerisce un metodo di soluzione candidata: distribuire il problema su più server, ognuno dei quali gestisce uno o più strumenti di OCR in parallelo, raccogliere i risultati, e prendere la risposta più popolare. Commenti benvenuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top