Muy buenas Camaradas.
Ante todo dar la bienvenida a todos los que se estan interesando por dicho proyecto.
Rasielunderwar, lluk, El-Java, DanyHack, Xafi y Crash_RPM. Veo que ninguno somos expertos en el lenguaje C/C++ Pero veo que todos estamos aportando todo cuanto sabemos y mas, y esta es la mejor manera de aprender, unirse y hacer un programa tan interesante.
Todos estan aportando sus ideas, sus conocimientos y esfuerzo a hacer posible este proyecto.
Analizemos pues todo cuanto tenemos para ir englobando el codigo y asi ir haciendo mejores y aportes.
El-Java a creado un codigo que compara un texto que "Introducimos" y lo compara con un archivo de texto.//Código by: El_Java
#include <iostream>
#include <fstream>
#include <string.h>
//using namespace std; para programas largos es mejor no ponerlo
int main(){
std::ifstream txtIn;
char texto[14], clave[14];
std::cout << "Escribe la contrasenha a comparar: " << std::endl;
std::cin.getline(clave, 14);
txtIn.open("pass.txt");
if (!txtIn.is_open()){
std::cout << "Error abriendo archivo, comprueba que existe el archivo" << std::endl;
}
if (!txtIn.good()){
std::cout << "Error, no es posible leer el archivo" << std::endl;
}
while((txtIn.eof()) == 0){ //mientras el archivo no haya llegado al final
txtIn.getline(texto, 14, '\n');
if ((strcmp(texto, clave)) == 0) break; //Si alguna contrasenha concuerda, parar el bucle while
if ((strcmp(texto, "NINGUNA")) == 0) break;
}
if((strcmp(texto, "NINGUNA")) == 0){
std::cout << "Ninguna contrasenha valida" << std::endl;
}
else{
std::cout << "Encontrada la contrasenha:\n";
std::cout << "texto: " << texto << std::endl;
std::cout << "clave: " << clave << std::endl;
}
return 0;
}
Y para que funcione el texto tiene que tener estas caracteristicas:
Llamarse pass.txt
Por cada linea tener una contraseña
Al final del texto terminarlo con la palabra NINGUNA
tal que quedaría asi:
pass.txt pass.txt
1234567899874 contraseña1
9876543210123 contraseña2
7412589634157 contraseña3
asdfghjkkasfg contrseña4
NINGUNA final del texto
Es una buena base de partida pero existen varios interrogantes.
1º Partiendo de este punto se podria crear un Generador que cree ala inversa de un archivo de texto a una impresion ala pantalla. Por ejemplo.
La contraseña que buscamos es Perico123 y en nuestro archivo de texto (Que lo llamaremos Diccionario) tenemos las siguientes contraseñas
Perico000
Perico001
Perico......... Perico999
Si la contraseña es perico123 en la "Comparativa 123 encontraremos la clave" Es decir un ataque por diccionario.
2º Otro problema y este creo es el que mas me esta dando quebraderos de cabeza es..... Nosotros estamos creando un programa para sacar un clave x pero esa clave x la estamos introduciendo nosotros, el problema esta en "Como hacemos para realizar la comparativa con una clave de un router cualquiera" Segun mi logica eso debe de tener un algoritmo segun el tipo de cifrado que lleve, la cuestion es realizar comparativas con diccionarios compatibles para cada tipo de cifrado.
Luego en el siguiente aporte hablas sobre la recursividad, la verdad que creo que adopta mejor las funciones que andamos buscando, aunque que buscar la forma en que haga la comparativa y nos de el true y el false.
Lluk tb ha hecho su aporte, pero como bien dice su padre las combinaciones son infinitas y aparte de "Petar el disco duro" el proceso de la cpu seria muy alto y trabajoso, aunque ese codigo se podria aprovechar ciertos comandos tb para crear algunos diccionarios aunque seria recomendable buscar otro metodo para generarlos.
El-java aportó de nuevo una idea muy buena, auqnue como dice raiserlaunderwar no es recomendable pues no te va ir dando positivos en cada LETRA que encuentre, aunque me a inspirado para otro futuro proyecto relacionado con ataques por fuerza bruta aunque a menos escala.
Y Crash-RPM agradecer su oferta de colaborar con nosotros pues siempre se es bienvenido.
Bueno englobando todo lo dicho aqui tenemos mas o menos una ideal general de lo que estamos buscando.
Veo importante de que todos hagamos aportes, pero seria mas eficaz seleccionar el programa por partes.
Partes esenciales del programa.
- Diseño de menu. (El esqueleto principal del programa) Donde el usuario podra seleccionar distintas opciones de menu, como generar un diccionario, realizar un ataque, e incluso una opcion de ayuda para entender el programa.
- Generador de Diccionario (Una pieza fundamental para la realizacion del programa)
- Diccionarios (Debes tener varios diccionarios para realizar el ataque) Podriamos hacerlo en un archivo de texto *.txt
- Y por ultimo englobar y "encajar" todos los codigos para que no de ningun error.
PD: Bueno disculparme por la hora de charla que aqui me e pegado, pero es importante ir canalizando y generalizando todos los aportes pues si no nunca se podra hacer nada.
PD: El tema de los puntos vitales del programa (Diseño,Generador de diccionario, ect....) Puede ser repartido por todos, para que cada uno se valla centrando en varios aspectos del programa.
Tal como yo lo veo, y que conste que esto es un decir, pues cada uno puede y hara porsupuesto lo que vea mas conveniente a sus conociemientos y esfuerzo, al fin y al cabo todos podemos ir aportando, colaborando, quitando y poniendo en todos y cada uno de los puntos principales del programa.
Yo lo estableceria del siguiente modo, segun e ido viendo de cada uno de vosotros.
WiseHidden y Danyhack: Diseño
Lluk y Xafi: Diccionarios
Rasielunderwar y El-Java: De los generadores de diccionario
y Crash_RPM: Ya ira aportando segun el vea donde puede ayudar
Como lo veis?? Lo dicho aunque yo sea el promotor del proyecto, no tengo ni mas derechos, ni mas votos que cualquiera de ustedes, pueden sugerir, contrariar y aprobar todo o parte de lo que e dicho, siempre y cuando sea con educacion jajajajaja
Bueno un enorme saludo a todos
Atentamente
Vuestro fiel camarada
WiseHidden