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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19
91  Comunicaciones / Redes / Redirigir tráfico de un puerto y modificar paquetes windows en: 17 Septiembre 2015, 20:58 pm
Hola a todos, tengo que redirigir el tráfico del puerto 80 (HTTP) a otro puerto para poderlo modificar antes de que salga de mi ordenador, así pues cuando cargue una página con el ordenador el navegador la sacará hacia el puerto 80, si yo esa salida la redirijo a puerto 8080 por ejemplo no me cargaría la página no?, entonces podría montar un server con sockets que escuche las peticiones en el puerto 8080 y lanzarlas desde ahí modificando los datos ¿no?.

Por cierto lo único que he encontrado hasta ahora para redirigir el tráfico de un puerto a otro en windows es con esto:

Código:
netsh interface portproxy v4tov4 listenport=80 connectaddress=192.168.0.100 connectport=8080 protocol=tcp

Poniendo nuestra IP, y en caso de estar redireccionando varias ponerlas todas una a una, ¿no hay manera de poner que redirija a todas con un solo comando? Pero esto no es lo importante, la pregunta principal es la de la parrafada, la que me tiene en ascuas.

Gracias y saludos.
92  Programación / Programación C/C++ / Función más eficiente para determinar si existe un dominio C++ en: 14 Septiembre 2015, 21:24 pm
Hola, pues eso, necesito pasar a una función un dominio en forma de cadena, y que me devuelva un "existe", "no sabemos si existe porque algo ha fallado como la red", "no existe".

La idea era hacerlo con gethostbyname():

Código
  1. WSAStartup(MAKEWORD(2, 0), &wsa);
  2. hostent *h = gethostbyname(dominio.c_str());
  3. if(h==NULL)WSAGetLastError();...

Y si existe la funcion devuelve distinto de NULL, pero si no puede conectar con el dominio devuelve NULL, entonces debo recojer el tipo de error producido con WSAGetLastError(), y aqui quiero diferenciar si es un error de red (que no haya internet por ejemplo) o que realmente la haya hecho y el server no responda, pero el problema es que WSAGetLastError() devuelve lo mismo si el host no existe que si tengo el wifi apagado.

Dicho esto, cree esta funcion:

Código
  1. estado_dominio existe_dominio(string dominio)
  2. {
  3. WSADATA wsaData;
  4. WSAStartup(MAKEWORD(2, 0), &wsaData);
  5. if (gethostbyname(dominio.c_str()) == NULL){
  6. if (gethostbyname("google.com") == NULL){
  7. WSACleanup();
  8. return SIN_CONEXION;
  9. }
  10. else{
  11. WSACleanup();
  12. return NO_EXISTE;
  13. }
  14. }
  15. WSACleanup();
  16. return SI_EXISTE;
  17. }

Pero no es eficiente ya que por cada peticion hace otra a google.com, de esta manera si google responde es que tenemos conexion.

¿Como lo puedo optimizar?.

De paso os dejo este code que fue el primero que hice pero no tenia sentido ya que  WSAGetLastError() devolvia siempre lo mismo.

Code:

Código
  1. int existe_dominio(string dominio)
  2. {
  3. WSADATA wsaData;
  4. WSAStartup(MAKEWORD(2, 0), &wsaData);
  5. if (gethostbyname(dominio.c_str()) == NULL){
  6. int error = WSAGetLastError();
  7. if (error == WSAHOST_NOT_FOUND){ //No existe host.
  8. WSACleanup();
  9. return 0;
  10. }
  11. else if (error == WSANO_DATA){ //Existe pero no envió datos.
  12. WSACleanup();
  13. return 1;
  14. }
  15. else if (error == WSANOTINITIALISED || //Reintentaremos puede existir host.
  16. error == WSAENETDOWN ||
  17. error == WSATRY_AGAIN ||
  18. error == WSANO_RECOVERY ||
  19. error == WSAEINPROGRESS ||
  20. error == WSAEFAULT ||
  21. error == WSAEINTR){
  22. WSACleanup();
  23. return 2;
  24. }
  25. else{ //No sabemos que ocurrió.
  26. WSACleanup();
  27. return 2;
  28. }
  29. }
  30. WSACleanup();
  31. return 1; //Encontrado y existe.
  32. }

¿Alguna funcion o metodo para comprobar si existe un dominio y que si falla diferencie entre fallo de red o falta de respuesta del servidor (no existe)?

Saludos, gracias.

Edito: Iba a probar con connect(), pero tenía que rellenar un struct in_addr y necesitaba la ip del server, para saberla primero tengo que resolverlo y si soy capaz de ello es que existe, luego no es metodo, ¿alguien sabe si se puede hacer con datagramas? ¿como sería? o un ping? ¿Cual sería el mejor método más rapido y eficiente?.

Saludos.
93  Programación / Programación C/C++ / ¿como obtener ip publica con c++? en: 13 Septiembre 2015, 20:36 pm
Pues eso, hasta el momento se me ocurre haciendo un post a una pagina que muestre mi ip publica. Pero si esa página no responde ¿que hago entonces? ¿alguna idea?

Saludos y gracias!.
94  Foros Generales / Dudas Generales / Obtener todos los subdominios de 000webhost en: 13 Septiembre 2015, 15:14 pm
Hola gente, necesito saber cuales son los subdominios que usa, ya que son gratuitos y cualquier persona puede crearlos. Ejemplo .hostoi.com, .netai.com .comuv.com etc

¿Son siempre los mismos o no? ¿como podría obtener toda la lista?

Saludos y gracias.

Edito: Y aprovecho para preguntar, ¿alguna web que permita crear tu propio dominio como 000webhost? Es que solo conozco esa que funcione.

Ups, solucionado:

http://www.000webhost.com/forum/content-managament-systems/29088-list-subdomains.html
95  Comunicaciones / Redes / ¿Por qué no funciona este MITM? en: 10 Septiembre 2015, 18:11 pm
Buenas a todos,

sigo tratando de hacer funcionar un MITM, que tengo para windows en C++, en resumen lo que hace es envenenar la red, haciendose pasar por el router para las victimas y por cliente para el router, enviando así las peticione que nos hacen las victimas al router con la ip de las victimas y nuestra mac, ademas al router le decimos que a todas las ips de los clientes de la red les corresponde mi mac, asi cuando el router devuelva el paquete, se lo devuelva a la direccion ip que lo solicitó que estará asociada a nuestra mac, por lo que nosotros obtendremos el paquete, y luego nosotros recojemos la ip del paquete y lo reenviamos a la victima haciendonos pasar por router, pero algo falla pues consigo llegar a hacer denegacion de servicio a la red, pero no consigo dar conexión a los equipos de la red, se quedan cargando y no hay solución. He probado a establecer ip fordwarding pero el resultado es el mismo. No tengo la tarjeta de red en modo monitor, esta en modo normal, ¿puede ser eso?.

Os dejo una captura de lo que hace cuando trato de atacar a mi propio movil en la red:



Aparece la ip del router y la ip del movil, y tambien son paquetes nuestros ya que nosotros interactuamos conel router con la ip de la victima y nuestra mac en los paquetes, y a la victima con la ip del router y nuestra mac.

He visto proyectos de MITM como tomahawk hechos en C#, y lo que hacía era una tabla de ARP estática:

Código
  1. // static ARP entry manipulation (IP, MAC, friendly interface name, add/remove)
  2.        public bool StaticARP(string IP, PhysicalAddress mac, string WinName, StaticARPOperation operation)
  3.        {
  4.            OperatingSystem system = Environment.OSVersion;
  5.  
  6.            // format MAC address
  7.            var macString = Network.FriendlyPhysicalAddress(mac).Replace(":", "-").ToLower();
  8.  
  9.            // prepare process
  10.            Process p = new Process();
  11.  
  12.            p.StartInfo.CreateNoWindow = true;
  13.            p.StartInfo.UseShellExecute = false;
  14.            p.StartInfo.RedirectStandardOutput = true;
  15.            p.StartInfo.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Windows);
  16.            p.StartInfo.FileName = "cmd";
  17.  
  18.            // Vista, Windows 7/8 - use "netsh"
  19.            if (system.Version.Major > 5)
  20.            {
  21.                if(operation == StaticARPOperation.Add)
  22.                    p.StartInfo.Arguments = "/k netsh interface ip delete neighbors \"" + WinName + "\" " + IP + " && netsh interface ip add neighbors \"" + WinName + "\" " + IP + " " + macString + " && exit";
  23.                else
  24.                    p.StartInfo.Arguments = "/k netsh interface ip delete neighbors \"" + WinName + "\" " + IP + " && exit";
  25.  
  26.                p.Start();
  27.                p.WaitForExit();
  28.  
  29.                p.Dispose();
  30.  
  31.                return true;
  32.            }
  33.  
  34.            p.Dispose();
  35.  
  36.            return false;
  37.        }

¿Será esto necesario?, uno de los problemas que puedo tener es que el SO manda datos con los datos correctos a los demás ordenadores, y muchas veces se siente engañado, ¿cómo podría solucionar eso en caso de que sea el problema? ¿sino lo es, que puede ocurrir?

He de añadir, que lo que hago ahora es un flooding de arp-poisoning, cuando me funcione así ya pasaré a hacerlo pasivo, pero de momento es de prueba, los hosts de la red me reconocen a mi como AP, pero no paso de la denegación de servicio.

Saludos y gracias por la ayuda, si os animáis a echar una mano.
96  Programación / Programación C/C++ / Activar IP fordwarding en Windows en: 9 Septiembre 2015, 20:06 pm
Hola a todos, estuve leyendo como hacerlo y era posible modificando una clave en el registro, y poniendola a "1" con los correspondientes permisos de admin, pero desconozco como funcionan eso de las claves y modificar sus valores, esto es lo que tengo, y no funciona:

Código
  1. bool establece_forwarding(bool modo){
  2. HKEY key;
  3. if (RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"), &key) == ERROR_SUCCESS){
  4. if (RegSetValueEx(key, TEXT("IPEnableRouter"), 1, REG_SZ, (LPBYTE)"0x00000001", strlen("value_data")*sizeof(char)) != ERROR_SUCCESS)
  5. {
  6. RegCloseKey(key);
  7. cout << "Unable to set registry value value_name";
  8. }
  9. else
  10. {
  11. cout << "value_name was set" << endl;
  12. }
  13. RegCloseKey(key);
  14. }
  15. return false;
  16. }

También aparte de esta duda, me gustaría saber si es algo imprescindible para realizar un MITM con ARP o no. Tengo entendido de que sí, aunque quizás en mi modelo de MITM no sea necesario, porque todos paquetes llegan a mi IP y de ahí reenvío, el problema es que no soy capaz de redirigirlos, ¿me los rechazará el router? ¿el ip fordwarding ayudará?, lo active manualmente y nada cambió, pero quizás ayude, y así ya tengo la función para automatizarlo.

Saludos.

Edito: Tambien me gustaría saber si esto funcionaria, a ver si con un simple pistazo me lo podéis decir o si tiene algún fallo, es para anclar un programa al registro apartir de una direccion y el nombre del ejecutable:

Código
  1. bool anclar_registro(string nombre, string direccion)//incluye exe
  2. {
  3. HKEY hkey;//(lcpwstr) L"algo"
  4. string total = direccion + nombre;
  5. if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hkey) == ERROR_SUCCESS){
  6. if (RegSetValueEx(hkey, (LPCWSTR)(nombre.c_str()), 0, REG_SZ, (BYTE*)total.c_str(), total.length()) == ERROR_SUCCESS){
  7. RegCloseKey(hkey);
  8. return true;
  9. }
  10. else{
  11. RegCloseKey(hkey);
  12. return false;
  13. }
  14. }
  15. else
  16. return false;
  17. }
97  Programación / Programación C/C++ / Crear red P2P descentralizada en: 5 Septiembre 2015, 21:51 pm
Hola a todos, quería informarme de como crear una red P2P descentralizada, me he estado informando y según he leído no requiere un servidor que haga de enroutador. Simplemente los usuarios actuan como cliente y servidor a la vez, vale. Pero mi pregunta es, ¿como hago que los usuarios busquen a más usuarios entre sí?.

Mi idea es programar algo sencillo en C++, sería una red P2P descentralizada. El cliente haría de cliente y servidor a la vez, es decir, se conectaría a otro cliente o usuario de la red y a la vez permitiría que estos se conectaran a el, para compartir información. Una vez tenga la IP  de estos sería fácil para mi por medio de sockets realizar la conexion, pero la pregunta es:

¿Como encuentro la IP de los clientes conectados, cual es el método de programación que he de usar? ¿Como obtengo la lista de todos los clientes conectados de la red? (Tendría que preguntar al que ya tengo y este a los que ya tiene y así hasta acabar supongo).

Algo de información pls, estoy leyendo pero no se como implementar.

Podría hacer una centralizada, pero no busco eso, quiero está que es más difícil y supongo que más estable ya que no depende de un server central.

Saludos y gracias.
98  Programación / Programación C/C++ / Problema al obtener string de archivo cifrado en: 2 Septiembre 2015, 03:03 am
Bueno, para acabar la noche escribo este post.

Miren tengo un archivo que divido en campos con delimitadires, escribo cadenas encriptadas en cada campo. El problema es que luego al obtener esas cadenas no las recojo correctamente, creo que es porque uso string en vez de char o no sé.

Lo leo todo su contenido así:

Código
  1. string almacen::obtener_campo(int campo)
  2. {
  3. ifstream archivo;
  4. archivo.open(directorio, ifstream::in);
  5. if (!archivo)
  6. return "";
  7. else{
  8. string contenido;
  9. while (archivo.good())
  10. contenido += archivo.get();
  11. archivo.clear();
  12. archivo.close();
  13. }
  14.  

Me dice que tiene lo siguiente:

Citar
CPcqGW51VRuFPRzAxwEMholaaaaaaaaque haaceess maripooossssssssssa7mgF5BDu2xspuP4DtANxO■¦©^×{oT╗┐Gç_÷SÆs
È~©BüQ³f5Ä{░µ ðø¥¹Q:╗\‗Y╚§.áë╔¾¶ÈÙ│Ï,jI¸Ñ°┴!▀Òs

Pero el archivo con el bloc de notas muestra lo siguiente:

Citar
CPcqGW51VRuFPRzAxwEMholaaaaaaaaque haaceess maripooossssssssssa7mgF5BDu2xspuP4DtANxOþݸ^ž{oT»¿G‡_öS’s
¢&H‹>VßnÎÀeØo®QNЛ¾ûQ:»\òYÈõ. ‰ÉóôÔë³Ø,jI÷¥øÁ!ßãs
Ô¶~¸BQüf5Ž{°æÔ;pÉE^ª•€UÏ·Ù¹ÒÛŒM™ÈuUÌvýýýý^ÿ^ÿnyFtCn4jPKItqWCAdJn6QTMTgH0wSWCMQOKA3H6OxDNJOWH2PIWCy3k79QJwÿ

¿Porque no accedo a todos los datos? ¿acaso no puedo obtener todos los caracteres con ifstream.get()? ¿qué solución puedo dar?

Saludos y gracias.

Edito: Sin embargo caracteres alfanumericos los lee sin problemas, pero los raros no.. ¿ que son ? xd

Edito: Acabo de abrirlo en binario || fstream::binary  y el resultado ha sido el mismo.
99  Programación / Programación C/C++ / Error al en/descifrar string C++ en: 2 Septiembre 2015, 02:24 am
Bueeeno, resulta que me resistía a crear este hilo, pero no me queda otro remedio tras horas de frustración.

Tengo una clase que saque del Rijandel a través de su code source de codeproyect.

Esa clase en mi proyecto se llama "encriptador_1". Y bien creo una clave de 24 caracteres, ahora tengo que cifrar en bloque pues venga que comience la fiesta.

Código
  1. encriptador_1 prueba;
  2. prueba.MakeKey(ENCLAVE_PRIMERA, encriptador_1::sm_chain0, 24, 24);
  3. string ***** = "wu1394yvh 1034y v180934ync89103y4 0813480ycn10384yn081n348401";
  4. char * salida = new char[*****.length()]();//length te da los bytes.
  5. cout << *****.length() << " " << strlen(*****.c_str()) << endl;
  6. while (*****.length() % 24 != 0)
  7. ***** += '\0';
  8.  
  9. cout << *****.length() << " " << strlen(*****.c_str()) << endl;
  10. prueba.Encrypt(*****.c_str(), salida, *****.length(), 0);
  11. cout << "entrada: " << ***** << endl;
  12. cout << "cifra: " << salida << endl;
  13. ***** = salida;
  14. strcpy(salida, "");
  15. while (*****.length() % 24 != 0)
  16. ***** += '\0';
  17. prueba.Decrypt(*****.c_str(), salida, *****.length(), 0);
  18. cout << "descifra: " << salida << endl;
  19. cout << "feliz";
  20. system("pause");

Salida:

Citar
61 61
72 61
entrada: wu1394yvh 1034y v180934ync89103y4 0813480ycn10384yn081n348401          
cifra: ÃÅäþ̵=C¾
descifra: 8╝
Ï┤─¸K{ç§░lI┐Ò┬ä%+2¨Ò▄┘f«ð¹º»½h
pUq@ôMä°BÛ¤§p1ê­¡┐e┐È╩µÒ¥Q▓UGø°±{!9¹L
felizPresione una tecla para continuar . . .

He de decir que me he dado cuenta que string.legth() devuelve caracteres incluyendo \0 en la string y strlen() solo hasta el primer \0.

Como se puede observar no cifra correctamente, antes lo hice funcionar pero me daba error en el system("pause"), omg. Algo casca por ahí.

Cojo una cadena la añados \0 hasta hacerla múltiplo, luego llamo a Riyandel.Encrypt(), y le paso un puntero char* del que he reservado memoria igual al tamaño de la cadena a cifrar, ese puntero tras llamada al método contiene la cadena cifrada.

Esa cadena la paso a la string y repito el proceso.

¿Qué hago mal?

Saludos.

Edito: Por favor basta de banear la palabra mierd.a es muy usada en la comunidad, de hecho es la palabra que se me banea en el código #FREEMIERDA.

Por cierto he reducido la cadena y he eliminado los espacios y me funciona (sale la cadena descifrada correctamente) pero el programa casca, al depurar dice que es el system("pause") pero creo que es algo de overflow.

Saludos.

EDICION DELICATESSE: solucionado rigth now, habia un overflow en el puntero, necesitaba mas memoria pues la cadena desenciptada tenía mas caracteres de los que podia abarcar el puntero.

Código
  1. encriptador_1 prueba;
  2. prueba.MakeKey(ENCLAVE_PRIMERA, encriptador_1::sm_chain0, 24, 24);
  3. string ***** = "wu1394yvh1034y v180934ync89103y0 813480ycn10qwefq  384yn081n348401";
  4.  
  5. cout << *****.length() << " " << strlen(*****.c_str()) << endl;
  6. while (*****.length() % 24 != 0)
  7. ***** += '\0';
  8. char * salida = new char[*****.length()]();//length te da los bytes.
  9. cout << *****.length() << " " << strlen(*****.c_str()) << endl;
  10. prueba.Encrypt(*****.c_str(), salida, *****.length(), 0);
  11. cout << "entrada: " << ***** << endl;
  12. cout << "cifra: " << salida << endl;
  13. ***** = salida;
  14. strcpy(salida, "");
  15. cout << *****.length() << endl;
  16. while (*****.length() % 24 != 0)
  17. ***** += '\0';
  18. salida = new char[*****.length()]();
  19. prueba.Decrypt(*****.c_str(), salida, *****.length(), 0);
  20. cout << "descifra: " << salida << endl;
  21. cout << "feliz";
  22. system("pause");

Working fine muak mk, Kaxperday
100  Programación / .NET (C#, VB.NET, ASP) / Travian bot en C# en: 28 Agosto 2015, 16:21 pm
¿Alguien se anima a algo de diversión?.

Postead aquí si os interesa o mandadme MP.

Algo en plan que ataque todo el rato a jugadores de menos de 50 habs :).

Saludos.

Edito: Ya inicia sesión, he creado cuenta y estoy construyendo cosas para poder crear tropas y atacar con el bot :) jajaja.
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines