elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Evitar multiples for en incrementos variables Base58 Fuerza bruta
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Evitar multiples for en incrementos variables Base58 Fuerza bruta  (Leído 3,248 veces)
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Evitar multiples for en incrementos variables Base58 Fuerza bruta
« en: 21 Enero 2022, 18:19 pm »

Aunque creo que es una pregunta Noob, he buscado y no encuentro un ejemplo usable, la verdad no quiero codear tanto pero si he de hacerlo*quiero encontrar la forma mas eficiente.

Tengo un cadena donde faltan caraceteres Unos son totalmente desconocidos "*" y hay que hacerles fuerza bruta (Esta parte ya la tengo hecha)
Pero la misma cadena tiene algunos caraceters que son Probables "?" con ciertos caracteres posibles que no se alcanzan a ver ejemplos 8 y B. X, K y k, S y 5, Esta parte la manejo cada caracter "?"  con su lista individual de caraceters posibles y no es la misma para cada simbolo "?"

Ejemplo:

Código:
sV***??c8NSs1X85ws9Er?z9FwtdJ

Cada caracter "*" puede ser uno de los 58 caraceteres del base58 Esta parte la manejo mas o menos asi

Código
  1. do{
  2. //CODIGO
  3. }while(increment_base58(string,aux));

La solucion anterior es general para cualquier numero de * en el string dado

Pero la parte de los "?" es variable, para este ejemplo vamos a decir que los los ? pueden ser alguno de los siguientes caraceteres respectivamente:

Código
  1. const char *doubt_possibles[3] = {"ec","B28","XKk"};

Significa que el primer caracter "?" de Izquierda a Derecha puede ser e o c el segundo "?" puede ser  B, 2 u 8 (Imagen muy distorcionada) y el ultimo Signo "?" podria ser "X, K o k"

Esta solucion esta hardcodeada de la siguiente manera:

Código
  1. for(contadores[0] = 0; contadores[0] < strlen(doubt_possibles[0]) ; contadores[0]++) {
  2. current_string[doubt_locations[0]] = doubt_possibles[0][contadores[0]];
  3. for(contadores[1] = 0; contadores[1] < strlen(doubt_possibles[1]) ; contadores[1]++) {
  4. current_string[doubt_locations[1]] = doubt_possibles[1][contadores[1]];
  5. for(contadores[2] = 0; contadores[2] < strlen(doubt_possibles[2]) ; contadores[2]++) {
  6. current_string[doubt_locations[2]] = doubt_possibles[2][contadores[2]];
  7. //Otro Codigo
  8. do{
  9. //CODIGO
  10. }while(increment_base58(current_string,aux));
  11. }
  12. }
  13. }
  14.  

El problema con lo anterior es que si me mandan otra cadena diferente o cambia la cantidad de caracteres tengo que editar la mitad del codigo actual.

Mas o menos tengo un leve idea de como hacerlo de forma general, cualquier numero de ? y cualquier longitud de posibles, pero me pregunto cual seria su forma de abordar este problema sin utilizar tanto for, quedando algo asi:

Código
  1. do{ //Do para los "?" en lugar de tanto for....
  2. do{ // Do para los "*"
  3. //CODIGO
  4. }while(increment_base58(current_string,aux));
  5. }while(magic_function(current_string,aux2));
  6.  

Es decir como codificarian "magic_function"

Código
  1. bool magic_function(char *current_string,int aux2){
  2. // Que hay aqui?
  3. }
  4.  


En línea

Mr.Moonlight

Desconectado Desconectado

Mensajes: 26



Ver Perfil WWW
Re: Evitar multiples for en incrementos variables Base58 Fuerza bruta
« Respuesta #1 en: 7 Febrero 2022, 11:59 am »

Que el primer caracter "?" tome un valor o otro influye sobre la lista de posibles caracteres de los siguientes? o esta se mantienes siempre igual?

Si el valor de este primer "?" influye sobre la lista de los siguientes lo mejor sería una función recursiva pienso yo no?


En línea

Ayudame en posicionamiento SEO en mi practica de la universidad : https://www.atorrijaoguachisnai.com/
Danielㅤ


Desconectado Desconectado

Mensajes: 1.842


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Evitar multiples for en incrementos variables Base58 Fuerza bruta
« Respuesta #2 en: 7 Febrero 2022, 14:37 pm »

Hola Alberto, si es posible evitar tantos bucles for, por ejemplo en tu código utilizas 3 y lo podes dejar en 2 o tal vez hasta en 1, pero para lograrlo debes aprovechar el bucle primario y también vas a tener que usar condicionales y métodos de funciones, por ejemplo si vos querés comprobar si un X caracter se encuentra dentro de una variable, la mayoría utilizaría un bucle for o while, pero esto yo personalmente lo haría de otra forma y es la que te recomiendo, que en vez de usar un bucle, podes usar un método tipo función, por ejemplo en seudo código:

Código:
Si caracter existe en variable
Entonces se ejecuta una instrucción

Es decir que podes comprobar si un caracter se encuentra dentro de una variable usando una función nativa del lenguaje que devuelva True si lo está o False si no lo está y así te evitas el bucle además que es más rápido.

Hay casos también que podes usar variables auxiliares que sirvan solamente para incrementar un valor numérico int, es decir podes sumar, restar o incluso multiplicar el valor.


Saludos
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Evitar multiples for en incrementos variables Base58 Fuerza bruta
« Respuesta #3 en: 8 Febrero 2022, 01:41 am »

Necesitas dos bucles, uno iterativo y uno recursivo.
El recursivo explora (avanza) las posiciones el iterativo explora las opciones de cada posición.
Necesitas eso sí, un array donde cada inndice se corresponda con una posición en la cadena y ese índice debe contener un array con todas las opciones para ese índice.

Nota que el bucle recursivo irá recorriendo ese array (posiciones) y el iterativos las opciones de dicha posición.
Los valores conocidos, siguen  existiendo pero solo tiene un elemento entre los que iterar... es necesario para seguir el bucle sin complicarlo con chorrocientas líneas de código o chorrocientos condicionantes, así el código es más limpio y más veloz, a cambio de un muy-poco más de memoria en uso.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Fuerza bruta en C# « 1 2 »
.NET (C#, VB.NET, ASP)
Hendrix 16 17,620 Último mensaje 22 Junio 2014, 05:20 am
por simorg
Fuerza bruta « 1 2 3 »
Programación Visual Basic
vivachapas 25 13,736 Último mensaje 22 Enero 2008, 03:06 am
por vivachapas
[C]Fuerza Bruta
Programación C/C++
HRSLASH 4 2,587 Último mensaje 12 Julio 2010, 15:35 pm
por HRSLASH
Fuerza Bruta
Hacking
HackTeam 2 3,856 Último mensaje 1 Diciembre 2011, 22:56 pm
por farresito
Utilizar reCAPTCHA v3 para evitar intentos de fuerza bruta
Desarrollo Web
AlbertoBSD 6 4,039 Último mensaje 15 Diciembre 2019, 03:26 am
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines