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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ... 77
221  Foros Generales / Foro Libre / Re: Putin, tras el derribo del avión ruso por parte de Turquía: Es una puñalada en: 24 Noviembre 2015, 23:11 pm
Buff impactantes vídeos, dejan cada vez todo más claro.

Esto es una guerra de occidente contra Rusia. ¿recordáis cuando se invadió por primera vez el espacio aéreo turco por Rusia como se puso Cameron?, parecía que estaban bombardeando a los turcos por la magnitud con la que tomó la respuesta, estaba claro que algo escondían por allí...

Y ¡sorpresa!, eran los terroristas del ISIS ("allah akbar allah akbar allah akbar") armados por USA, (que además saben vender muy bien petróleo a occidente que al fin y al cabo era un motivo más por lo que se empezo todo esto) asesinando a los pilotos de los cazas rusos, pero que fue derribado por el ejercito turco OJO que es muy gorda, y luego vemos a los tocacojones de USA navegando por aguas en disputa de China y demás solo para provocar, pero no les pasa nada porque hay miedo y tienen mucho poder, pero lo tienen porque han ido apoderándose de cada país uno a uno, haciendo lo que les ha dado la gana en cada uno y nadie se lo ha impedido, y si no se hace algo ya, tal vez más adelante sea demasiado tarde. Hay que hundir a USA.

Es asqueroso y rastrero pero tiene sentido lo que hacen estos **** que es armar la oposición siria para combatir el gobierno sirio y poder poner un gobierno occidental en siria, de forma indirecta así también están armando al ISIS al que les interesa mantener en la zona para debilitar el gobierno de al-Assad, y tenerlo atacado por 2 frentes el del ISIS y el de la oposición, además con las armas que intercambian estos estarán formando una coalición.

USA ese país sin escrúpulos que hace lo que sea con tal de mantener su putrefacta hegemonía.
222  Informática / Software / Librerías estáticas para tor en: 24 Noviembre 2015, 16:38 pm
¿Existen?, ¿algo parecido?.

O hay que compilarlo y crear nuestra propia librería.. (AKA the wrong way).

Un saludo.
223  Seguridad Informática / Hacking / Re: Inyección de DLL con permisos administrador en: 24 Noviembre 2015, 16:17 pm
Una pregunta, ¿cuantas veces necesito inyectar mi DLL en la memoria?, ¿una vez solo, la primera vez?... ¿o todas las veces que vaya a ejecutar mi programa?.

Ejemplo me infecto un proceso con mi dll, reinicio el ordenador, ese proceso ya no está infectado ¿no?, necesitaria anclar al registro un ejecutable que se inyecte en el proceso cada vez que se reinicia, ¿no?.

De ser así, se podría hacer, pero me preocupa eso de los procesos. Pensaba que una vez inyectado en un proceso, podías coger su "token" y obtener los privilegios de este, ¿no es así?.

Bueno, de todas formas gracias por la respuesta. Un saludo.
224  Programación / Programación C/C++ / Problemas compilando ZLIB en VS13 en: 24 Noviembre 2015, 15:02 pm
Hola, me descargue y descomprimí "zlib-1.2.8" en el escritorio, luego accedí a "\contrib\vstudio\vc11" y abrí el ".sln", cambié todas las versiones para que se compilaran en VS13, ya que estaban para VS12 y daba error, luego también cambie todos los proyectos para que se compilaran sin "SAFETRESH", cambie que compilase a librería estática ".lib" en vez de ".dll", al compilar tenía 9 errores de externos sin resolver, todos por culpa de zlibwapi.lib, ejemplo:

Citar
Error   8   error LNK2019: símbolo externo _inflate_fast sin resolver al que se hace referencia en la función _inflate@8   C:\Users\Usuario\Desktop\zlib-1.2.8\contrib\vstudio\vc11\zlibwapi.lib(inflate.obj)   miniunz

Error   3   error LNK2019: símbolo externo _inflate_fast sin resolver al que se hace referencia en la función _inflate@8   C:\Users\Usuario\Desktop\zlib-1.2.8\contrib\vstudio\vc11\zlibwapi.lib(inflate.obj)   testzlibdll

Error   6   error LNK2019: símbolo externo _longest_match sin resolver al que se hace referencia en la función _fill_window   C:\Users\Usuario\Desktop\zlib-1.2.8\contrib\vstudio\vc11\zlibwapi.lib(deflate.obj)   minizip

Error   5   error LNK2019: símbolo externo _match_init sin resolver al que se hace referencia en la función _lm_init   C:\Users\Usuario\Desktop\zlib-1.2.8\contrib\vstudio\vc11\zlibwapi.lib(deflate.obj)   minizip

Error   2   error LNK2019: símbolo externo _longest_match sin resolver al que se hace referencia en la función _fill_window   C:\Users\Usuario\Desktop\zlib-1.2.8\contrib\vstudio\vc11\zlibwapi.lib(deflate.obj)   testzlibdll

Error   1   error LNK2019: símbolo externo _match_init sin resolver al que se hace referencia en la función _lm_init   C:\Users\Usuario\Desktop\zlib-1.2.8\contrib\vstudio\vc11\zlibwapi.lib(deflate.obj)   testzlibdll

Error   4   error LNK1120: 3 externos sin resolver   C:\Users\Usuario\Desktop\zlib-1.2.8\contrib\vstudio\vc11\x86\TestZlibDllDebug\testzlibdll.exe   1   1   testzlibdll

Error   7   error LNK1120: 2 externos sin resolver   C:\Users\Usuario\Desktop\zlib-1.2.8\contrib\vstudio\vc11\x86\MiniZipDebug\minizip.exe   1   1   minizip

Error   9   error LNK1120: 1 externos sin resolver   C:\Users\Usuario\Desktop\zlib-1.2.8\contrib\vstudio\vc11\x86\MiniUnzipDebug\miniunz.exe   1   1   miniunz


Al final mejor pongo todos, he comprobado que en todos los proyectos estuviera la librería "zlibwapi.lib", y si que lo estaba en el directorio donde se compila no en el que sale el error "x86\ZlibDllDebug", en ese directorio está "zlibwapi.lib", y es donde apuntan todos los proyectos que dicen que no la tienen. ????

He probado a mover mover la libreria a los directorios donde sale el error que no la encuentra, pero seguia saliendo el error. Es por eso que no entiendo porque me sale error de "simbolo externo" para una librería que si tiene incluida.

A ver si me podeis ayudar, un saludo y gracias.

Más cosas, me pregunto si necesito incluir algo más como directorios de cabeceras etc (como se hace siempre que se añade una librería... voy a probar pero creo que no es necesario y que no corregirá el error).
.. Lo hice y sigue dando fallos, en librerías de inclusión adicionales no tenía nada, pero tampoco lo veía necesario ya que a la hora de incluirla ponía el directorio completo, y aún poniendolo da error, sigo probando.. No hay manera, he probado a compilar un solo proyecto de los que daba error, y le he metido directorios de inclusión adicionales (las cabeceras), le he metido en directorio de librerías x86\ZlibDllDebug, y en librerías he puesto en el linker de entrada zlibwapi.lib, pero da los errores de siempre al generar, en este proyecto son 3 externos sin resolver el error que da a pesar de hacer todo eso, esos externos ya los puse anteriormente y guardan relacion con el proyecto "testzlibdll", cambiando todo eso, y el proyecto sigue dando los errores.

Ayuda pls.

Bueno bueno, quizás sea un bug:

Parece que hay que remover ZLIB_WINAPI (algo que al removerlo de primeras daba más errores), pero hay que manipular unos arhcivos.. vamos a probar..

http://www.tannerhelland.com/5076/compile-zlib-winapi-wapi-stdcall/

He modificado lo del fallo al leer la versión, como ponía, pero al corregir una directiva de preprocesador como pone me da error, y luego hay que eliminar las ZLIB_WINAPI, pero ¿porque este error?:

Código
  1. #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API)))
  2. #if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY_DESKTOP_APP, WINAPI_PARTITION_APP)
  3. //#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  4. #define IOWIN32_USING_WINRT_API 1
  5. #endif
  6. #endif

Elimino la linea que esta como comentario, y pongo la que dicen que hay que poner en el tuto, y me sale:

   27   IntelliSense: no se permite una llamada a función en una expresión constante   c:\Users\Usuario\Desktop\zlib-1.2.8\contrib\minizip\iowin32.c   30   5   zlibvc

¿Como puedo solucionarlo?, de todas maneras creo que esos "bugs" no tienen que ver con que no se compile el proyecto..., el problema está en que no linkea correctamente zlibwapi.lib, pero no entiendo si he comprobado mil veces que está bien linkeada PFF.

Va chicos one hand
225  Programación / Programación C/C++ / Fallo al enviar email a servidor en: 19 Noviembre 2015, 11:22 am
Buenas, encontré un código sobre como mandar emails entre varios, y este parecía el mejor, a pesar de que daba bastantes fallos al compilar conseguí arreglarlo y ya compila, le tengo que meter el servidor smtp (de hotmail, gmail etc) que lo tengo bien, luego la cuenta de ese servidor a la que vas a enviar el archivo (en caso de hotmail, micuenta@hotmail.com), y luego la cuenta que manda el archivo que ahí es donde tengo el problema, os dejo el código a ver si me podéis ayudar, porque me dice que lo ha mandado correctamente, pero nada llega al correo, el problema está en el correo que manda el mensaje no se que poner, he probado con mi isp pero tampoco.

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <winsock2.h>
  5. #define CRLF "\r\n"
  6. #pragma comment(lib, "ws2_32.lib")
  7. using namespace std;
  8.  
  9. void ShowUsage(void);
  10. void Check(int iStatus, char *szFunction);
  11. void ShowUsage(void)
  12. {
  13. cout << "Usage: SENDMAIL mailserv to_addr from_addr messagefile" << endl
  14. << "Example: SENDMAIL smtp.myisp.com rcvr@elsewhere.com my_id@mydomain.com message.txt" << endl;
  15.  
  16. exit(1);
  17. }
  18.  
  19. // Basic error checking for send() and recv() functions
  20. void Check(int iStatus, char *szFunction)
  21. {
  22. if ((iStatus != SOCKET_ERROR) && (iStatus))
  23. return;
  24.  
  25. cerr << "Error during call to " << szFunction << ": " << iStatus << " - " << GetLastError() << endl;
  26. }
  27.  
  28. int main()
  29. {
  30. int         iProtocolPort = 0;
  31. char        szSmtpServerName[64] = "";
  32. char        szToAddr[64] = "";
  33. char        szFromAddr[64] = "";
  34. char        szBuffer[4096] = "";
  35. char        szLine[255] = "";
  36. char        szMsgLine[255] = "";
  37. SOCKET      hServer;
  38. WSADATA     WSData;
  39. LPHOSTENT   lpHostEntry;
  40. LPSERVENT   lpServEntry;
  41. SOCKADDR_IN SockAddr;
  42.  
  43. // Check for four command-line args
  44. //ShowUsage();
  45.  
  46. // Load command-line args
  47. strcpy(szSmtpServerName, "smtp.live.com");//smtp de hotmail
  48. strcpy(szToAddr, "mirealemail@hotmail.com");//mi email real de hotmail
  49. strcpy(szFromAddr, "micasa@noseque.com");//mi direcion ip?dominio?isp? que poner aqui
  50.  
  51. // Create input stream for reading email message file
  52. //ifstream MsgFile(argv[4]);
  53.  
  54. // Attempt to intialize WinSock (1.1 or later)
  55. if (WSAStartup(MAKEWORD(1, 1), &WSData))
  56. {
  57. cout << "Cannot find Winsock v" << 1 << "." << 1 << " or later!" << endl;
  58.  
  59. return 1;
  60. }
  61.  
  62. // Lookup email server's IP address.
  63. lpHostEntry = (hostent*)gethostbyname(szSmtpServerName);
  64. if (!lpHostEntry)
  65. {
  66. cout << "Cannot find SMTP mail server " << szSmtpServerName << endl;
  67.  
  68. return 1;
  69. }
  70.  
  71. // Create a TCP/IP socket, no specific protocol
  72. hServer = socket(PF_INET, SOCK_STREAM, 0);
  73. if (hServer == INVALID_SOCKET)
  74. {
  75. cout << "Cannot open mail server socket" << endl;
  76.  
  77. return 1;
  78. }
  79. // Get the mail service port
  80. lpServEntry = (servent*)getservbyname("mail", 0);
  81.  
  82. // Use the SMTP default port if no other port is specified
  83. if (!lpServEntry)
  84. iProtocolPort = htons(IPPORT_SMTP);
  85. else
  86. iProtocolPort = lpServEntry->s_port;
  87.  
  88. // Setup a Socket Address structure
  89. SockAddr.sin_family = AF_INET;
  90. SockAddr.sin_port = iProtocolPort;
  91. SockAddr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
  92.  
  93. // Connect the Socket
  94. if (connect(hServer, (PSOCKADDR)&SockAddr, sizeof(SockAddr)))
  95. {
  96. cout << "Error connecting to Server socket" << endl;
  97.  
  98. return 1;
  99. }
  100.  
  101. // Receive initial response from SMTP server
  102. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() Reply");
  103.  
  104. // Send HELO server.com
  105. sprintf(szMsgLine, "HELO %s%s", szSmtpServerName, CRLF);
  106. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() HELO");
  107. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() HELO");
  108.  
  109. // Send MAIL FROM: <sender@mydomain.com>
  110. sprintf(szMsgLine, "MAIL FROM:<%s>%s", szFromAddr, CRLF);
  111. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() MAIL FROM");
  112. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() MAIL FROM");
  113.  
  114. // Send RCPT TO: <receiver@domain.com>
  115. sprintf(szMsgLine, "RCPT TO:<%s>%s", szToAddr, CRLF);
  116. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() RCPT TO");
  117. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() RCPT TO");
  118.  
  119. // Send DATA
  120. sprintf(szMsgLine, "DATA%s", CRLF);
  121. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() DATA");
  122. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() DATA");
  123. sprintf(szMsgLine, "%s%s", "HOLA PROBANDO A ENVIAR UN EMAIL", CRLF);
  124. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() message-line");
  125.  
  126. // Send blank line and a period
  127. sprintf(szMsgLine, "%s.%s", CRLF, CRLF);
  128. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() end-message");
  129. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() end-message");
  130.  
  131. // Send QUIT
  132. sprintf(szMsgLine, "QUIT%s", CRLF);
  133. Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() QUIT");
  134. Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() QUIT");
  135.  
  136. // Report message has been sent
  137. cout << "Sent " << "ARCHIVO" << " as email message to " << szToAddr << endl;
  138.  
  139. // Close server socket and prepare to exit.
  140. closesocket(hServer);
  141.  
  142. WSACleanup();
  143.  
  144. return 0;
  145. }

Saludos y gracias.

Edito: Bueno bueno, tras mucho leer. Parece que todo indica a que tengamos que loguearnos en una cuenta conocida que tengamos en un servidor smtp, y desde allí mandar un email a la cuenta que queramos dentro o fuera del dominio.

Esto sabía que se podía hacer, pero es lo último a lo que quería llegar, porque imaginaros una app que manda emails con notificaciones, necesitaría contener la cuenta que va a mandar el mensaje en su interior y la podrían extraer con ingeniería inversa y acceder al usuario y contraseña del correo que usa la app para mandar los emails.

Yo estoy intentando buscar otra forma de mandarlo, a través de nuestra ip y nuestro servidor de isp o algo así, o levantar nuestro propio servidor smtp y mandar mensajes con nuestra isp como dominio y nuestra ip como usuario, no sé, desconozco el tema, estoy buscando ideas.

¿Alguna alternativa a que tenga que loguearme en un server smtp(gmail, hotmail...), y mandarlo desde el tras loguearme?, estaría bien por muchos motivos.

Saludos.

Edito: De hecho entonces no entiendo este código que parecía funcionar cuando lo busqué, pues aquí no introduce la contraseña, no se loguea en la cuenta para mandar el email, aunque tampoco debería hacerlo si le estamos diciendo mande a un destinatario, y si nosotros estamos usando nuestro dominio como origen del mensaje.

Creo que el protocolo también falla, de el ejemplo, ¿no?. ¿Pero entonces necesito estrictamente autentificarme en otro correo ya conodico y enviarlo desde ahí o no?.
226  Foros Generales / Foro Libre / Re: Al menos 132 muertos en la mayor cadena de ataques terroristas en París en: 17 Noviembre 2015, 10:06 am
No pretendo defender a nadie pero Francia, ayer o hoy no sé cuando ha sido, ha bombardeado al Estado Islámico y me apuesto lo que sea a que ha muerto algún inocente pero como es Moro, Árabe o lo que sea no lo ponemos al mismo nivel que los muertos en Francia.

Gracias, por fin alguien que da en el clavo. Asesinan con un ataque terrorista a 132 personas en Francia se monta la de dios en todo el mundo, cuando en siria mueren cientos a diario, muchas veces por ataques terroristas estadounidenses ilegítimos por dar un ejemplo (hay muchos más), es indiferente no pasa nada, cuando los palestinos son atacados y humillados a diario por israelíes a nadie le importa, nadie pone una bandera palestina o siria para reprochar la barbarie, eso si si hay un atentado terrorista en Francia parece que han detonado una bomba atómica en comparación. Cuando debería ser al revés.

En resumen, la vida de un parisino vale 1000 veces más que la de un palestino o sirio, eso es lo que nos han enseñado estos días los medios.

Y luego está la respuesta del pueblo francés tras el atentado, lanzar 40 bombas en la capital del estado islamico, seguro murieron más inocentes que en el atentado de Francia, ¿pero a alguien le importa? Parecen que no, la gente lo aplaude, pues dpm sigamos así de tontos hipócritas.

Cita de: constance
Ahora ha sido Francia, pero no tardará en ser España ..
Llegan a nuestro país, piden respeto para sus costumbres islámicas como el velo islámico, los acoges, les ayudas, respetas su religíon y te lo pagan con atentados e intentando quitar tus costumbres

Estás muy equivocada, los musulmanes no son así. No son asesinos irrespetuosos, la inmensa mayoría son personas normales con una religión en común, el islam. ¿Como puedes decir que todos hacen atentados y quitan nuestras costumbres, por favor?. Vivimos en el siglo 21 si nadie ha conseguido acabar con este sistema capitalista que cada vez va a peor (resumido en empresarios millonarios con lobbies y pobres, y políticos a favor de las empresas entre lo peor), dudo mucho que sean ellos quien lo hagan por no decir que es imposible, ni nuestra sociedad puede cambiarlo, es que es imposible.

La sociedad está muy equivocada con respecto al mundo musulmán, cuando mueren cientos o miles de musulmanes ¿a quién le importa?, ¿a israel? ¿a usa? ¿a occidente, a rusia?, a nadie. No hay bandera de apoyo como con el país vecino. Si no van en nuestro barco no nos importan.

Son la comunidad más extorsionada que conozco, España con todo lo malo que puede tener, es el país numero uno en tolerancia y el respeto a distintas tradiciones, costumbres y religiones y eso es lo más fuerte que tenemos y no podemos perderlo, aqui hay respeto a los homosexuales, vete a Rusia de la mano con un hombre (buscar el video) y la gente os insultará por la calle, aqui no hay racismo, vete a usa siendo negro y mucha gente te odiará por dentro solo por tu color de piel.

Y esto no podemos perderlo constance, por eso me duele ver este tipo de comentarios.

Cita de: chojin
El racismo está en los bolsillos del hombre.

Y aprovecho para decir que este es un país de gente de izquierdas, queramos o no verlo. Y de eso podemos estar orgullosos.

Toda la gente debe de ser respetada, independientemente de donde venga o de las costumbres que tenga, siempre y cuando nos respeten, es la norma uno de la convivencia.

Saludos.
227  Comunicaciones / Redes / Seguridad red P2P y servidores SSL en: 16 Noviembre 2015, 12:38 pm
Buenos dias, estoy tratando de montar una red P2P anónima y segura en C++. Que se conecte a un tracker y de ahí cargue un listado de clientes que estén usando la red y trate de conectarse a ellos mandandoles un mensaje hello...

El tracker les pasaría entre 10 y 15 nodos a cada uno que haga una petición buscando nodos, en función de la cercanía de estos.

Luego, tenemos que levantar un servidor en cada cliente nodo, que escuche peticiones ssl seguras. Una pregunta es ¿Para levantar un servidor hace falta hacer NAT con el router no?. Es decir, si yo tengo 2 nodos, uno tiene levantado un servidor y trato de conectarme usando su ip y su puerto de escucha, no funcionaría si no configuro previamente el router no?. ¿Qué alternativa se puede hacer?.

Más, yo como dueño de la red debería tener una llave maestra para acceder a ella y que nadie más pueda hacerlo, aquí entra la seguridad de la red, muy importante. A ver.. una vez tengo el tracker tenemos los nodos, usamos un protocolo para que se conecten los nodos entre si, y luego habrá que usar otro protocolo que si lo identifican los nodos saben que es el del administrador y entonces ofrecen más servicios como instalacion etc, lo que sea vaya.

Esa sería un poco la idea, también estaría bien que cada nodo se conecte a otro nodo a través de 3 o 4 nodos intermediarios cono en TOR, estaría bien escuchar más ideas, sobre todo de seguridad para esta red.

Un saludo.

PD: que alguien lo mueva a seguridad que se me olvido, y si alguien se anima me puede mandar MP y podemos crear un git donde subir el code etc.

Saludos.
228  Programación / Programación C/C++ / ¿Dónde está el problema? TCP checksum en: 13 Noviembre 2015, 20:23 pm
He buscado funciones, he intentado hacerla paso a paso y no funciona, ¿alguien puede decirme como calcular el tcp checksum a partir de el array de bytes del paquete y otra variable con su tamaño?, estaría muy bien, mientras habrá que buscar.  :-* :-*

Código con el que traté de implementarlo por mi cuenta:

Código
  1. //http://www.arcesio.net/checksum/checksumTCP.html
  2. u_char* tcp_checksum(u_char* datos, int tamaño)
  3. {
  4. u_char checksum[2];
  5. uint16_t sumando = 0, sumanda = 0;
  6. bitset<17> total;
  7. for (int i = 26; i < 33; i++)//del 26 al 33 ip origen y destino se suman
  8. {
  9. sumanda = (uint16_t)((datos[i] << 8) + datos[i + 1]);
  10. total = sumando + sumanda;
  11. sumando += sumanda;
  12. if (total[16] == 1)//al sumar sumanda a sumando acarrea bit.
  13. sumando++;
  14. i++;
  15. }
  16. sumanda = (uint16_t)(0x06);//sumamos el tipo paquete tcp
  17. total = sumando + sumanda;
  18. sumando += sumanda;
  19. if (total[16] == 1)//al sumar sumanda a sumando acarrea bit.
  20. sumando++;
  21. sumanda = (uint16_t)(tamaño - 34);// ((datos[38] << 8) + datos[39]);//sumamos el tamaño del paquete.
  22. //sumanda = (uint16_t)((datos[38] << 8) + datos[39]);//sumamos el tamaño del paquete.
  23. total = sumando + sumanda;
  24. sumando += sumanda;
  25. if (total[16] == 1)//al sumar sumanda a sumando acarrea bit.
  26. sumando++;
  27. //YA TENEMOS CALCULADO EL PSEUDO HEADER.
  28. for (int i = 34; i < 40; i++)//del 34 al 41, 3 campos tcp header.
  29. {
  30. sumanda = (uint16_t)((datos[i] << 8) + datos[i + 1]);
  31. total = sumando + sumanda;
  32. sumando += sumanda;
  33. if (total[16] == 1)//al sumar sumanda a sumando acarrea bit.
  34. sumando++;
  35. i++;
  36. }
  37. for (int i = 42; i < tamaño; i++)//sumamos resto.
  38. {
  39. sumanda = (uint16_t)((datos[i] << 8) + datos[i + 1]);
  40. total = sumando + sumanda;
  41. sumando += sumanda;
  42. if (total[16] == 1)//al sumar sumanda a sumando acarrea bit.
  43. sumando++;
  44. i++;
  45. }
  46. sumando = sumando & 0xFFFF;
  47. sumando = ~sumando;
  48. checksum[0] = (sumando >> 8) & 0x00FF;
  49. checksum[1] = sumando & 0x00FF;
  50. return checksum;
  51. }

Lo saqué de aqui como hacerlo:

http://www.arcesio.net/checksum/checksumTCP.html

Pero no funciona, pues al comparar mis tcp checksums con los de wireshark no coinciden, ¿alguna ayuda?. ¿que tengo mal?.

Gracias.

He estado mirando y tengo mal en la linea que hago la suma del tamaño del paquete, ese no es su tamaño. Pero aun asi sigue fallando.

¿en la línea 20 que habría que poner?.

Edito: Haber sumo primero la ip origen y destino, el numero de protocolo 0x06 (pasandolo a u_short como todos los sumandos), y luego le sumo la linea en duda del tamaño del tcp header y sus datos.

Luego a eso le tengo que sumarla suma del campo tcp header de u_short en u_short e igual con el payload, ¿pero porque no funciona?.

Ejemplo salida:

Código
  1. if (pkt_data[23] == 0x06){
  2. u_char origen[4];
  3. u_char destino[4];
  4. memcpy(origen, const_cast<u_char*>(pkt_data + 26), sizeof(u_char)* 4);
  5. memcpy(destino, const_cast<u_char*>(pkt_data + 30), sizeof(u_char)* 4);
  6.  
  7. in_addr a;
  8. in_addr b;
  9. a.S_un.S_addr = inet_addr((char*)origen);
  10. b.S_un.S_addr = inet_addr((char*)destino);
  11. printf("%x%x==", pkt_data[50], pkt_data[51]);
  12. printf("%x%x==", tcp_check(const_cast<u_char*>(pkt_data), header->caplen, inet_addr((char*)origen), inet_addr((char*)destino))[0],
  13. tcp_check(const_cast<u_char*>(pkt_data), header->caplen, inet_addr((char*)origen), inet_addr((char*)destino))[1]);
  14. printf("%x%x", tcp_checksum(const_cast<u_char*>(pkt_data), header->caplen)[0],
  15. tcp_checksum(const_cast<u_char*>(pkt_data), header->caplen)[1]);
  16. cout << endl;
  17. }

Citar
bee==d4f9==014
4eb4==d4f9==014
675a==d4f9==014

Me sale el checksum siempre 014 ???

Por cierto la otra funcion que pruebo, que no es mía tampoco funciona es:

Código
  1. u_char* tcp_check(u_char *buff, size_t len, u_long src_addr, u_long dest_addr)
  2. {
  3. uint16_t *buf = (uint16_t*)buff;
  4. uint16_t ip_src = (uint16_t)src_addr, ip_dst = (uint16_t)dest_addr;
  5.         uint32_t sum;
  6.         size_t length = len;
  7.         // Calculate the sum                                            //
  8.         sum = 0;
  9.         while (len > 1)
  10.         {
  11.                 sum += *buf++;
  12.                 if (sum & 0x80000000)
  13.                         sum = (sum & 0xFFFF) + (sum >> 16);
  14.                len -= 2;
  15.        }
  16.  
  17.        if (len & 1)
  18.                // Add the padding if the packet lenght is odd          //
  19.                 sum += *((uint8_t *)buf);
  20.  
  21.        // Add the pseudo-header                                        //
  22.         sum += (ip_src++);
  23.        sum += ip_src;
  24.         sum += (ip_dst++);
  25.         sum += ip_dst;
  26.         sum += htons(IPPROTO_TCP);
  27.        sum += htons(length);
  28.  
  29.         // Add the carries                                              //
  30.         while (sum >> 16)
  31.                 sum = (sum & 0xFFFF) + (sum >> 16);
  32.  
  33. u_char ret[2];
  34.        // Return the one's complement of sum  
  35. ret[0] = ((uint16_t)(~sum) >> 8) & 0x00FF;
  36. ret[1] = (uint16_t)(~sum) & 0x00FF;//
  37.        // return ((uint16_t)(~sum));
  38. return ret;
  39. }
  40. //http://minirighi.sourceforge.net/html/tcp_8c-source.html
229  Programación / Ingeniería Inversa / Re: [Tutorial] Inyección de código en C++, Cheat Engine y OllyDBG en: 13 Noviembre 2015, 16:03 pm
A mi me gusto la parte donde ponía que dependiendo del tipo de inyección será más facil que nos detecte el antivirus o no XDD.

Saludos.
230  Programación / Programación C/C++ / La magia del string.find() en: 13 Noviembre 2015, 15:07 pm
Se solucionó, tenía que ver con esa igualdad que haces dentro de una condicion a la que hay que meter entre parentesis...

fue algo mágico de todas maneras:

Código que funciona:

Código
  1. void filtrar_pregunta_http(u_char* _datos, int _tamaño)
  2. {
  3. string paquete = string(reinterpret_cast<char*>(_datos), _tamaño);
  4. int tamaño = _tamaño;
  5. int pos = 0;
  6. while ((pos = paquete.find("https://", pos)) != string::npos){
  7. paquete.replace(pos, 5, "http");
  8. tamaño--;
  9. }
  10. cout << "pos: " << pos << endl;
  11. if ((pos = paquete.find("Accept-Encoding: ")) != string::npos){
  12. int pas = pos;
  13. while (paquete[pas] != '\n'){
  14. printf("%c", paquete[pas]);
  15. pas++;
  16. }
  17. paquete.erase(pos, pas - pos + 1);
  18. }
  19. cout << paquete.c_str() << endl;
  20. }
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ... 77
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines