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 Mensajes
Páginas: 1 [2] 3 4 5 6 7 8
11  Programación / Programación C/C++ / Filtro para mensajes? en: 11 Enero 2012, 13:46 pm
Buenas!! hace un par de semanas se me ocurrió hacer un programa para ver conversaciones de chat de tuenti que habia capturado con un mitm y un sniffer. Se me ocurrió "generalizarlo", y ahora lo que hace es copiar todo lo que se encuentre entre una "cadena de inicio" y una "cadena de fin". Hay que darle un archivo para leer y otro para guardar las conversaciones, o lo que queramos "filtrar".

Aquí teneis el código:

Código
  1. #include <stdio.h>
  2.  
  3. #define TMENSAJE 1000
  4.  
  5. // Funciones
  6.  
  7. int sizeoffile(char Narchivo[]); // DONE
  8. int sizeofstring(char cadena[]); // DONE
  9. void BInicio(char texto[], int size); // DONE
  10. void Cmensaje(char cadenaF[], char texto[], int posicion, char AEscritura[], int sizeoffin); // DONE
  11. int BFin(char texto[], char cadenaF[], int posicion, int sizeoffin); // DONE
  12.  
  13. int main(){
  14.  
  15. char ALectura[30];
  16. printf("Archivo de lectura: ");
  17. scanf("%s", &ALectura);
  18.  
  19. int sizeL = sizeoffile(ALectura);
  20. char texto[sizeL];
  21.  
  22. FILE *archivo;
  23.  
  24. archivo = fopen(ALectura, "r");
  25.  
  26.  
  27. int i = 0;
  28. for (i = 0; i < sizeL; i++){
  29. texto[i] = fgetc(archivo);
  30. if (texto[i] == EOF){
  31. break;
  32. }
  33. }
  34.  
  35. fclose(archivo);
  36.  
  37. BInicio(texto, sizeL);
  38.  
  39. return 0;
  40. }
  41.  
  42. int sizeoffile(char Narchivo[]){
  43. FILE *archivo;
  44. archivo = fopen(Narchivo, "r");
  45.  
  46. int i = 0;
  47.  
  48. while (fgetc(archivo) != EOF){
  49. i++;
  50. }
  51. fclose(archivo);
  52. return i;
  53. }
  54.  
  55. int sizeofstring(char cadena[]){
  56.  
  57. int i = 0;
  58.  
  59. while (cadena[i] != '\0'){
  60. i++;
  61. }
  62.  
  63. return i;
  64. }
  65.  
  66. void BInicio(char texto[], int size){
  67.  
  68.  
  69. char CInicio[50];
  70. printf("Cadena de inicio: ");
  71. scanf("%s", &CInicio);
  72.  
  73. char CFin[50];
  74. printf("Cadena de fin: ");
  75. scanf("%s", &CFin);
  76.  
  77. char AEscritura[30];
  78. printf("Archivo de escritura: ");
  79. scanf("%s", &AEscritura);
  80.  
  81. int sizeofinicio = sizeofstring(CInicio);
  82. int sizeoffin = sizeofstring(CFin);
  83.  
  84. int i = 0;
  85. int j = 0;
  86. int cont = 0;
  87.  
  88. for (i = 0; i < size; i++){
  89. for (j = 0; j < sizeofinicio; j++){
  90. if (i-j >= 0){
  91. if (texto[i+j] == CInicio[j]){
  92. cont++;
  93. }else{
  94. cont = 0;
  95. }
  96. if (cont == sizeofinicio){
  97. Cmensaje(CFin, texto, i+sizeofinicio, AEscritura, sizeoffin);
  98. cont = 0;
  99. }
  100. }
  101. }
  102. }
  103. }
  104.  
  105. void Cmensaje(char cadenaF[], char texto[], int posicion, char AEscritura[], int sizeoffin){
  106.  
  107. FILE *archivo;
  108.  
  109. archivo = fopen(AEscritura, "a");
  110.  
  111. char mensaje[TMENSAJE];
  112.  
  113. int i = 0;
  114. int j = 0;
  115. int k = 0;
  116. int cont = 0;
  117. for (i = posicion; i < (posicion+TMENSAJE); i++){
  118. mensaje[k] = texto[i];
  119. k++;
  120. for (j = 0; j < sizeoffin; j++){
  121. if (texto[i+j] == cadenaF[j]){
  122. cont++;
  123. }else{
  124. cont = 0;
  125. }
  126. if (cont == sizeoffin){
  127. i = (posicion+TMENSAJE);
  128. mensaje[k-1] = 0;
  129. }
  130. }
  131. }
  132.  
  133. fprintf(archivo, "\n %s", mensaje);
  134.  
  135. fclose(archivo);
  136. }
  137.  
  138. int BFin(char texto[], char cadenaF[], int posicion, int sizeoffin){
  139.  
  140. int i = 0;
  141. int j = 0;
  142. int cont = 0;
  143.  
  144. for (i = 0; i < TMENSAJE; i++){
  145. for (j = 0; j < sizeoffin; j++){
  146. if (i-j >= 0){
  147. if (texto[i+j] == cadenaF[j]){
  148. cont++;
  149. }else{
  150. cont = 0;
  151. }
  152. if (cont == sizeoffin){
  153. cont = 0;
  154. return 1;
  155. }
  156. }
  157. }
  158. }
  159.  
  160. return 0;
  161. }

Tengo también el primero que hice especifico para tuenti, que ademas te pone de quien es el mensaje y para quien (con direcciones de correo de tuenti). Si alguien lo quiere puedo postearlo.

También estoy abierto a sugerencias sobre mejoras en el programa.

Espero que le sirva a alguien!! ;)

PD: siento la falta de comentarios en el código, pero si alguien no lo entiende puedo explicarselo o editarlo con comentarios.

12  Programación / Programación C/C++ / Re: Problema con sockets en: 7 Enero 2012, 01:01 am
Muchas gracias Sagrini!! Me pondré a comprender tu programa y repasar de nuevo el tutorial.
Gracias! ;)
13  Programación / Programación C/C++ / Problema con sockets en: 5 Enero 2012, 20:52 pm
Buenas!! acabo de empezar con los sockets y mi  programa solo envia y recibe una cadena (lo estoy probando con el netcat), lo que quiero es que sea una especie de "chat", aunque no sabiendo por que falla no sigo programando para no acumular errores.

El código es este:

Código
  1. #include <stdio.h>          
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5.  
  6. #define MAXR 100
  7.  
  8. int main(){
  9.  
  10. int fd, fd2;
  11.  
  12. struct sockaddr_in server;
  13.  
  14. struct sockaddr_in client;
  15.  
  16. int sin_size;
  17.  
  18. if ((fd=socket(AF_INET, SOCK_STREAM, 0)) == -1 ) {  
  19. printf("error en socket()\n");
  20. exit(-1);
  21. }
  22.  
  23. printf("Introduce el puerto en el que quieres escuchar: ");
  24. int puerto = 0;
  25. scanf("%d", &puerto);
  26.  
  27. char cadena[100];
  28. char *pcadena = &cadena;
  29. int tcadena = 0;
  30.  
  31. server.sin_family = AF_INET;
  32. server.sin_port = htons(puerto);
  33. server.sin_addr.s_addr = inet_addr("127.0.0.1");
  34. bzero(&(server.sin_zero),8);
  35.  
  36. bind(fd,(struct sockaddr*)&server,sizeof(struct sockaddr));
  37. listen(fd,1);
  38.  
  39. char recibido[MAXR];
  40. char *precibido = &recibido;
  41. int i = 0;
  42.  
  43. while (1){
  44. sin_size=sizeof(struct sockaddr_in);
  45. fd2 = accept(fd, (struct sockaddr *)&client, &sin_size);
  46.  
  47. scanf("%s", &cadena);
  48.  
  49. tcadena = 0;
  50.  
  51. while (cadena[tcadena] != '\0' && tcadena < 100){
  52. tcadena++;
  53. }
  54.  
  55. send(fd2,pcadena,tcadena,0);
  56.  
  57. recv(fd2, precibido, MAXR, 0);
  58.  
  59. printf("\n %s", recibido);
  60. }
  61.  
  62. return 0;
  63.  
  64. }

Muchas gracias de antemano!! :)

PD: programo en ubuntu 11.04
14  Seguridad Informática / Hacking Ético / Hacking, the art of exploitation en: 5 Enero 2012, 00:05 am
Buenas!! os traigo un libro bastante interesante que cogi hace unos meses de la biblioteca de la universidad, y aunque es demasiado para mi por el momento espero que le sea de ayuda a alguien.  ;D

http://www.mediafire.com/?o133boq5ct3b87g
15  Seguridad Informática / Hacking Ético / Re: Problema con filtro en ettercap en: 4 Enero 2012, 06:23 am
Las 18 páginas que llevo están bien. nunca está de más "repasar", asi que gracias de nuevo alpha015!!

He descubierto el error... y no podría ser más ridículo... 'F' en lugar de 'f'...
16  Seguridad Informática / Hacking Ético / Re: Problema con filtro en ettercap en: 2 Enero 2012, 16:53 pm
Gracias por la recomendación alpha015, le echo un vistazo y te comento! =)
17  Seguridad Informática / Hacking Ético / Re: Problema con filtro en ettercap en: 31 Diciembre 2011, 20:35 pm
Gracias por la ayuda vlaxys =) Pero ahora el fallo es:

Listening on wlan0...
ERROR : 16, Device or resource busy
[ec_capture.c:capture_init:171]

La cuestión es que cuando quito la opcion -f funciona, no lo entiendo...
18  Seguridad Informática / Hacking Ético / Problema con filtro en ettercap en: 25 Diciembre 2011, 19:04 pm
Buenas, el filtro es el siguiente:

if (search(DATA.data,"tuenti")){
log(DATA.data, "/tmp/log.log");
}

Lo compilo con "etterfilter f2 -o filtro", se compila correctamente:

 12 protocol tables loaded:
   DECODED DATA udp tcp gre icmp ip arp wifi fddi tr eth

 11 constants loaded:
   VRRP OSPF GRE UDP TCP ICMP6 ICMP PPTP PPPoE IP ARP

 Parsing source file 'f2'  done.

 Unfolding the meta-tree  done.

 Converting labels to real offsets  done.

 Writing output to 'filtro'  done.

 -> Script encoded into 4 instructions.

Pero al poner el ettercap (ettercap -t -f filtro -M arp:remote // -i wlan0) me sale:
TARGET (filtro) contains invalid chars !

Alguien sabe que falla?

Gracias de antemano!! =)
19  Seguridad Informática / Hacking Wireless / Re: "molestar" a algun tio conectado a mi wifi en: 25 Diciembre 2011, 03:59 am
Estaba pensando mas bien en un mitm con el sslstrip y/o algun sniffer. Ahora que lo pienso, alguien sabe si es necesario tener la tarjeta de red en modo promiscuo para capturar todos los paquetes de la red si se ha hecho un mitm antes???
20  Seguridad Informática / Hacking Wireless / Re: "molestar" a algun tio conectado a mi wifi en: 23 Diciembre 2011, 16:31 pm
Una cosa que creo que deberias mirar: comprueba si su tarjeta de red esta en modo promiscuo, podria haber capturado mails, contraseñas y conversaciones.
Pd: perdon si el mensaje sale mal, estoy en el movil
Páginas: 1 [2] 3 4 5 6 7 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines