Proyecto contador

buenas gente. les comento mi proyecto... necesito sacar el pass de una consola de mando de dvr..
bueno la idea es fuerza bruta ( numero por numero) tiene 6 caracteres numericos.
la parte electronica no es problema ya que tiene un teclado y conecto las 11 salidas del arduino a cada numero y al enter.

Mi problema esta en la parte del programa.La idea es que el programa haga esto:
000000 enter,
000001 enter
000002 enter
y asi hasta el 999999

quisiera saber si se puede hacer mas sencillo de la forma que estaria intentando yo estaria haciendo un millon de lineas de codigo..

si me pueden ayudar u orientar les estaria agradecido

gracias !!!

¿Pero qué código usas para enviar las entradas?

Además posiblemente deberás colocar retrasos (delay) entre ciertas entradas ya que muy posiblemente el Arduino las introduzca demasiado rápido. Y todavía están los sistemas que con tal de frustrar los intentos de ataque de fuerza bruta, colocan un tiempo de espera cada cierta cantidad de intentos fallidos.

Y como te darás cuenta que funciona?
O te vas a quedar mirando?

surbyte:
Y como te darás cuenta que funciona?
O te vas a quedar mirando?

cuando salga el codigo enciende y hace unos pitidos

Lucario448:
¿Pero qué código usas para enviar las entradas?

Además posiblemente deberás colocar retrasos (delay) entre ciertas entradas ya que muy posiblemente el Arduino las introduzca demasiado rápido. Y todavía están los sistemas que con tal de frustrar los intentos de ataque de fuerza bruta, colocan un tiempo de espera cada cierta cantidad de intentos fallidos.

hola este es el codigo que tengo

int num0 = 2; //  pines
 int num1 = 3;
 int num2 = 4;
 int num3 = 5;
 int num4 = 6;
 int num5 = 7;
 int num6 = 8;
 int num7 = 9;
 int num8 = 10;
 int num9 = 11;
 int enter = 12;
 int timer = 500; // tiempo en 500ms
void setup(){
 pinMode(num0, OUTPUT); //pines de salida.
 pinMode(num1, OUTPUT);
 pinMode(num2, OUTPUT);
 pinMode(num3, OUTPUT);
 pinMode(num4, OUTPUT);
 pinMode(num5, OUTPUT);
 pinMode(num6, OUTPUT);
 pinMode(num7, OUTPUT);
 pinMode(num8, OUTPUT);
 pinMode(num9, OUTPUT);
 pinMode(enter, OUTPUT);
}
void loop() {
 digitalWrite(num0, HIGH);  //   todo esto para un marcar 000000 enter
 delay(timer);
 digitalWrite(num0, LOW);  
 delay(timer);
 digitalWrite(num0, HIGH);
 delay(timer);
 digitalWrite(num0, LOW);
 delay(timer);
 digitalWrite(num0, HIGH);
 delay(timer);
 digitalWrite(num0, LOW);
 delay(timer);
 digitalWrite(num0, HIGH);
 delay(timer);
 digitalWrite(num0, LOW);
 delay(timer);
 digitalWrite(num0, HIGH);
 delay(timer);
 digitalWrite(num0, LOW);
 delay(timer);
 digitalWrite(num0, HIGH);
 delay(timer);
 digitalWrite(num0, LOW);
 delay(timer);
 digitalWrite(enter, HIGH);
 delay(timer);
 digitalWrite(enter, LOW);
 delay(timer);
 
 
 digitalWrite(num0, HIGH);      //  todo esto para marcar 000001 enter
 delay(timer);
 digitalWrite(num0, LOW);  
 delay(timer);
 digitalWrite(num0, HIGH);
 delay(timer);
 digitalWrite(num0, LOW);
 delay(timer);
 digitalWrite(num0, HIGH);
 delay(timer);
 digitalWrite(num0, LOW);
 delay(timer);
 digitalWrite(num0, HIGH);
 delay(timer);
 digitalWrite(num0, LOW);
 delay(timer);
 digitalWrite(num0, HIGH);
 delay(timer);
 digitalWrite(num0, LOW);
 delay(timer);
 digitalWrite(num1, HIGH);
 delay(timer);
 digitalWrite(num1, LOW);
 delay(timer);
 digitalWrite(enter, HIGH);
 delay(timer);
 digitalWrite(enter, LOW);
 delay(timer);
}

Hola,

¿Por qué en el primer bloque pone a nivel alto y luego a nivel bajo el pin2 o num0 como lo has llamado 6 veces y en el segundo 5 veces y 1 vez el num1? entiendo que el enter simula la pulsación de enter.
Si nos explicas un poco mejor como funciona seguro que alguien te ayuda.
Pero seguro que con unos cuantos for anidados resuelves el problema con pocas líneas de código.
La profundidad del los for será cuantos dígitos tengas, en tu caso 6 serian suficientes.

Un saludo.

Hay por dios javierdel21 estas a la altura de la escritura cuneiforme.

000000 enter,
000001 enter
000002 enter
y asi hasta el 999999

Dime si quieres que te compre 16GB de ram para albergar semejante código donde a cada paso usarás secuencias como las mostradas para digitar tus 6 teclas

Tienes que usar números binarios y separar estos para poder solamente ir incrementando.
Luego debes agregar algo que escuche porque no vas a estar 1millon de secuencias esperando a descubriri el código.
Todo lo que sugieres es ridículo, porque te vas a dormir en el intento.

Entonces...
Mira como se hace para que un simple contador del tipo unsigned long porque superarás los 6 digitos y por ende un entero te queda corto, lo puedes ir convirtiendo automáticamente en secuencias 0 1 para activar tus salidas pulsadas.

supongamos que fuera un numero de 4 digitos y lo hago para que uses la cabeza

0000, debes separarlo en 4 salidas
0001 son las mismas 4 pero una en 1
Asi que veamos
si el contador estuviera en
1011 o sea 12^3+12^2+12^1+12^0 = 8+0+2+1= 11

Asi que solo tienes que tomar un número que se incrementa y separarlo en sus pesos binarios.
Investiga eso.

Ya que los pines son consecutivos, se podría realizar así:

#define TIMER 500

void setup() {
	for (byte i = 0; i < 11; i++) pinMode(i + 2, OUTPUT); // i + 2 significa que se van a asignar los pines del 2 al 12
    
	for (unsigned long i = 0; i < 1000000; i++) digitar(i);
	// Falta algún señalamiento que detenga esto cuando la contraseña sea acertada
}

void loop() {	
}

void digitar(unsigned long n) {
	if (n > 999999) return;
	static char secuencia[7];
	sprintf(secuencia, "%06ul", n); // Así es más sencillo que tener que estar haciendo divisiones sucesivas
	
	for (byte i = 0; i < 6; i++) {
		byte b = (secuencia[i] - '0') + 2; // Como el cero corresponde al pin dos y así sucesivamente, de esta manera se puede determinar en un ciclo
		digitalWrite(b, HIGH);
		delay(TIMER);
		digitalWrite(b, LOW);
		delay(TIMER);
		
	}
	digitalWrite(12, HIGH);
	delay(TIMER);
	digitalWrite(12, LOW);
	delay(TIMER);
	
}

muchas gracias a todos. mis conocimiendo en la programacion son muy pobres. voy a analizar lo que me dicen. y probar ese code.

muchas gracias por su tiempo

Gracias por agradecer, pero tmb presta atención a los pedidos de los moderadores respecto a cómo posteas.
Se te envió un tutorial de como arreglar tu post pero no le diste importancia.
Arriba derecha donde dice mensajes en tu perfil. Siempre mira alli, cuando diga 1 o algo en amarillo es que tienes privados.