Simular el teclado de Arduino con Arduino

0

Se me ocurrió la idea de crear un bloqueo de teclado simple utilizando este (Keypad Matrix 3x4 enlace enlace ).

Ahora quiero forzar la contraseña de forma bruta usando otro arduino. Entonces conecto algunos gpios de mi Arduino atacante a los gpios de la víctima Arduino.

Para activar los números, hago gpio.High los 2 gpios de la tabla de referencia (segundo enlace) y luego gpi.Low para cerrar la conexión. (Puedo disparar el botón presionando sin problemas creando un cortocircuito entre dos gpios de la víctima Arduino).

Mi problema es que obtengo algo así como una condición de carrera (tal vez alguna fuga de voltaje) y también algunas combinaciones no funcionan.

Así que mi pregunta es. ¿Cómo se supone que debo conectar los cables? (Tenga en cuenta que tengo una resistencia en cada conexión que viene de atacar a Arduino a la víctima) ¿Tengo que usar algunos componentes más? ¿Por qué tengo "fugas de tensión"?

Soy nuevo en electrónica y provengo de un fondo de seguridad de software de cs. Por favor, no dude en pedirme más información.

    
pregunta ItsYou

2 respuestas

0

En el segundo enlace, verá que las líneas de entrada se elevan hasta + 5V. Esto le indica que las entradas están activas en nivel bajo, como también puede ver si mira el archivo keypad.cpp, asumo que está usando el Arduino de destino para leer el teclado.

    // bitMap stores ALL the keys that are being pressed.
for (byte c=0; c<sizeKpd.columns; c++) {
    pin_mode(columnPins[c],OUTPUT);
    pin_write(columnPins[c], LOW);  // Begin column pulse output.
    for (byte r=0; r<sizeKpd.rows; r++) {
        bitWrite(bitMap[r], c, !pin_read(rowPins[r]));  // keypress is active low so invert to high.
    }
    // Set pin to high impedance input. Effectively ends column pulse.
    pin_write(columnPins[c],HIGH);
    pin_mode(columnPins[c],INPUT);
}

Usted puede salirse con transistores que conectan de forma selectiva las líneas de la columna a los pines de la fila, pero necesitan mirar la conexión cruzada: las columnas están estroboscópicas una por una para leer la matriz de teclas y la tabla resultante. de bits se traducen entonces en una pulsación de tecla. Dado que las columnas son bajas en momentos separados, debe asegurarse de que no haya una conducción cruzada para la columna que está baja mientras se está escaneando. Creo que eso es lo que quiere decir con "fugas de voltaje": los FET con polarización inversa se llevarán a cabo al diodo intrínseco del cuerpo, por lo que se necesitaría un diodo adicional. Parece que las salidas de las columnas subirán momentáneamente antes de abrirlas después de cada escaneo.

El siguiente problema será la sincronización, para detectar cuándo se ha escaneado una pulsación de tecla y para mantener las entradas en los valores correctos mientras eso ocurre, entonces supongo que el objetivo busca una no pulsación antes de buscar la siguiente llave Debería poder ver las tres salidas de columna con luz estroboscópica baja para cada ciclo de lectura con el segundo Arduino, y cronometrar la simulación clave a partir de eso. Una vez que esté viendo las salidas de la columna, también podría usar una rutina de interrupción que cambia las entradas de la fila al estado elegido directamente para cada carácter requerido, deberá verificar la sincronización de la luz estroboscópica para asegurarse de que es alcanzable en el tiempo disponible.

    
respondido por el Phil G
0

Se puede usar un interruptor cuádruple de CMOS para la simulación de cambio de matriz utilizando un suministro > = destino. Pref. compartiendo el mismo suministro para evitar disparos SCR en el ciclo de alimentación. Puede haber otras formas, como matrices PNP con sesgo de entrada.

Para simular correctamente las entradas del teclado que no tienen N reinversión de la tecla, debe haber un tiempo muerto entre la activación de la tecla de cada interruptor.

Dependiendo de su algoritmo fallido de intento de destino o de bloqueo o de retroceso, puede ser pirateado rápidamente o puede llevar mucho tiempo.

Por lo tanto, la respuesta "clave" es "no clave" entre teclas. ;) para evitar las carreras. T = TBD

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas