2009-12-31 12 views
5

Armado un rápido navegador WinForm/embedded IE que inicia sesión en el sitio web de nuestra compañía todas las mañanas y raspa/exporta la información de depósito deseada (el banco es un banco regional pequeño). Dado que tenemos unas pocas docenas de "pseudoaccounts" que provienen de la misma cuenta maestra, esto realmente demora de 10 a 15 minutos en recuperarse.OCR un llavero RSA (token de seguridad)

De todos modos, el único problema es que nuestra cuenta bancaria comercial necesita un token de seguridad RSA (http://www.rsa.com/node.aspx?id=1156)--if no está familiarizado, es un dispositivo pequeño que muestra un número aleatorio de 6 dígitos cada 15 (?) Segundos, así que tengo que solicite este valor antes de comenzar. Esto se encuentra en la parte superior del modelo de seguridad basado en el inicio de sesión del sitio web, por lo que incluso si crea una cuenta de solo lectura que no puede hacer nada, aún debe ingresar el número RSA. Tenemos 5 de estos tokens para diferentes personas en la compañía

Desde nuestra perspectiva esto es seguridad de nusiance. Estaba bromeando sobre el uso de una cámara web para OCR los dígitos del llavero para que no tuvieran que escribirlo - principalmente para que el raspado/exportación se haga antes de que alguien llegue por la mañana. Bueno, ellos como ked si realmente pudiera hacerlo.

Así que ahora te pregunto, ¿qué tan difícil (cuántas horas) crees que le tomará al OCR estos dígitos de manera confiable a partir de una imagen JPEG producida por la cámara? Ya sé que puedo obtener el JPEG fácilmente. Creo que tienes 3 intentos para iniciar sesión, por lo que realmente necesita alcanzar una tasa de precisión del 99%. Podría trabajar en esto en mi tiempo libre, pero no quieren que dedique más de unas horas, así que quiero aprovechar la mayor cantidad posible de código. Esta es una pantalla de 7 segmentos (como un reloj de alarma) por lo que no es exactamente el texto que un paquete de OCR estaría acostumbrado a ver.

Además, hay un temporizador de cuenta regresiva en el costado de la pantalla; por lo general, cuando baja a 1 bar, esperas hasta que aparezca el siguiente número y comienza de nuevo a 5 bares (como la potencia de la señal en tu teléfono celular). Entonces, esto también debería ser OCRd, pero no es texto.

De todos modos, cuanto más lo pienso mientras escribo esto, menos convencido estoy de que realmente pueda hacer esto bien, ¿entonces quizás debería trabajar en ello en mi tiempo libre?

+1

Por supuesto * se puede * hacer, pero ¿para qué molestarse? Simplemente escriba los malditos dígitos y guarde su mejor trabajo para algo útil. –

+5

Siempre es una gran idea que todo Internet sepa que una computadora en su oficina se registra automáticamente en su cuenta bancaria comercial a una determinada hora todos los días cuando no hay nadie más cerca. –

Respuesta

6

Esto es realmente más fácil de lo que parece a primera vista. He usado esta técnica en el pasado, basado en el hecho de que los dígitos siempre se ven iguales, y siempre aparecen en las mismas ubicaciones.

Simplemente cree diez pequeñas máscaras, una para cada uno de los dígitos, y prepare un script que divida su imagen en jpg, una para cada dígito. Alinee la cámara una vez, luego déjela así. Ahora tiene diez máscaras para 0-9 y los dígitos reales en el dispositivo. Multiplique los valores de píxel en cada máscara por cada dígito, y elija el valor más alto en cada caso. Eso le dirá qué máscara encaja mejor con cada dígito, y puede usarla para determinar los dígitos.

Descargo de responsabilidad: No creo que esta sea una gran idea por razones de seguridad, como han señalado otros comentaristas.

+1

Me gusta su respuesta, pero creo que este proyecto permanecerá en la pila de mala idea. – user130582

+0

No lo entiendo ¿A qué te refieres con "multiplicar los valores de píxel"? Si solo multiplico los valores, supongo que la máscara de 8 multiplicada por cualquier otro dígito real siempre tendrá el valor más alto. – prostynick

2

Creo que hay una versión de software del token RSA SecurID. See here

No estoy seguro de que funcione para su situación (es posible que tenga que hablar con el banco), pero si lo hace probablemente sea más fácil y más confiable que el OCR.

+0

El problema con eso es: tienes que hacer que tu administrador lo registre por ti. Buena suerte, si vienes con una historia como "Estaba considerando OCR en el token de hardware para hacer esto, pero podrías ..." – 0xC0000022L

1

Solo para sonrisas, puede tratar de alimentar un escaneo de su token RSA en Tesseract OCR y ver qué tan bien funciona desde el primer momento. Supongo que tendrá que ajustar considerablemente los valores de contraste/brillo del escaneo para obtener una imagen de texto clara para escanear.

0

Puede intentar usar la API de OCR en http://www.webservius.com/corp/docs/wisetrend.pdf - para los volúmenes de los que está hablando, es probable que sean gratuitos para usted. Para comprobar rápidamente si los dígitos serán reconocidos, puede enviar una imagen de prueba a [email protected] y recibirá los resultados de OCR por correo electrónico.

+4

Es lo suficientemente cuestionable como para que un negocio venza al sistema de seguridad de 2 factores del banco y ponga acceso a sus propias credenciales bancarias en una de sus propias computadoras. Compartir la misma información a través de Internet con un servicio web a diario parece ser un problema. – nealmcb

7

Existen al menos dos programas bien documentados de código abierto de siete segmentos de OCR diseñados precisamente para la tarea de lectura automática de mandos a distancia de RSA SecurID:

y más de uso general que se ejecuta en los teléfonos celulares Symbian puede ser abierta por ahora:

Parece que el último trabajo para ayudar a las personas con discapacidad visual es Real-Time Detection and Reading of LED/LCD Displays for Visually Impaired Persons - Proc IEEE Workshop Appl Comput Vis. 2011

+0

Debería haber sido la respuesta aceptada. – 0xC0000022L

Cuestiones relacionadas