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

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1] 2 3
1  Programación / Programación C/C++ / Ayuda práctica polimorfismo en: 23 Mayo 2014, 01:25 am
Buenas!! necesito algo de ayuda con una práctica de la universidad. Si alguien puede echarme un cable con las clases y la herencia se lo agradecería muchisimo.

No pido que nadie me haga la práctica ni implemente nada, solo orientación a la hora de definir las clases y las relaciones entre ellas.

Este es el enunciado de la práctica:
https://mega.co.nz/#!A5lFHCST!ozkpoVHSf8NRQSzzB5N0IgQ6h3_VVkqKWAv_SwteKO0

Casi no se ni por donde empezar, tan solo se me ha ocurrido definir una clase agencia y otra traductor de la que heredarían las clases empleado y servicio (y dudo mucho de mi propio enfoque). Además de que la clase servicio debería tener un array de empleados.

Sé que debería hacerlo yo porque si no no aprenderé a diseñar correctamente programas con herencia y polimorfismo, pero la práctica es para el domingo y empiezo a verme con el agua al cuello.

Muchas gracias de antemano!! ;)
2  Seguridad Informática / Bugs y Exploits / Programa anti overflows? en: 7 Marzo 2012, 00:23 am
Buenas! hace poco me he bajado el DVL y me he hecho un par de exploimes, lo que me ha hecho pensar: ¿cómo puedo evitar los buffer overflows usando funciones de la libreria standard de C?

Y probando un poco he llegado a este programita:

Código
  1. #include <stdio.h>
  2.  
  3. char var[10];
  4.  
  5. void leer(){
  6. int i = 0;
  7. for (i = 0; i < 10; i++){
  8. scanf("%c", &var[i]);
  9. }
  10. }
  11.  
  12. int clong(char a[]){
  13. int i = 0;
  14. while(a[i] != '\0'){
  15. i++;
  16. }
  17. return i;
  18. }
  19.  
  20. int compare(char a[], char b[]){
  21. int i = 0;
  22. int ret = 1;
  23. int max;
  24. if (clong(a) >= clong(b)){
  25. max = clong(b);
  26. }else{
  27. max = clong(a);
  28. }
  29. for (i = 0; i < max; i++){
  30. ret = ret&&(a[i] == b[i]);
  31. }
  32. return ret;
  33. }
  34.  
  35. int main(){
  36. printf("\n Introduce la clave y pulsa intro repetidas veces: ");
  37. char a[10];
  38. char cadena[] = "hola";
  39. leer();
  40. if (compare(var, cadena)){
  41. printf("\n Enhorabuena!\n");
  42. }else{
  43. printf("\n Pringao\n");
  44. return 0;
  45. }
  46. return 0;
  47. }

He probado a meterle casi un millon de 'A's y no he conseguido nada, ni siquiera un segment fault ni el tipico mensaje de linux de "detected stack smash" (o algo parecido), alguien puede decirme como hacer un buffer overflow con este programa?

Muchas gracias!!
3  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.

4  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
5  Seguridad Informática / Hacking / 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
6  Seguridad Informática / Hacking / 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!! =)
7  Seguridad Informática / Bugs y Exploits / Desensamblar usando sintaxis de intel en: 26 Octubre 2011, 21:16 pm
Buenas!! Estoy con un libro bastante interesante llamado "Hacking, the art of exploitation" y tengo un problemita a la hora de seguir los ejemplos, el problema es que mientras que el libro usa la sintaxis de intel, mi ordenador no lo hace, y a parte de que parece mucho más sencilla que lo que me sale a mi en pantalla, me resulta un tanto dificil seguir los ejemplos.

Mi duda es la que sigue:

¿Cómo puedo hacer que el gdb use la sintaxis de intel? Según el libro lo puedo hacer así:
"set dissasembly intel" o "set dis intel", pero me salen los siguientes errores:
Con set dissasembly intel: No symbol table is loaded.  Use the "file" command
Y con set dis intel: Ambiguous set command "dis intel": disable-randomization, disassemble-next-line, disassembly-flavor, disconnected-tracing...

Gracias de antemano por la ayuda!!!
8  Seguridad Informática / Bugs y Exploits / Desensamblador para linux en: 22 Octubre 2011, 15:09 pm
Buenas! necesito un desensamblador para linux porque me han dicho que viene bien a la hora de ver bug en programas. Alguien sabe de alguno que funcione en ubuntu?
9  Seguridad Informática / Seguridad / Usar reglas propias con snort en: 4 Octubre 2011, 01:44 am
Buenas! Estoy intentando usar reglas definidas por mi con el snort y me da el siguiente error:

ERROR: /etc/snort/rules/myownrules.rules(1) Missing argument to TRUSTED
Fatal Error, Quitting..

La regla que he definido es la siguiente:

var TRUSTED [192.168.1.1, 192.168.1.16]
alert tcp 192.168.1.13 any -> $TRUSTED any (msg:”Sample alert”;sid:100000)

¿Alguien sabe qué es lo que falla?
10  Sistemas Operativos / GNU/Linux / Problema con entorno gráfico en debian 6 en: 24 Agosto 2011, 23:38 pm
Buenas! Mi problema es bastante sencillo de exponer: al arrancar el ordenador, debian esta en modo consola y no tengo la menor idea (el help no me ayuda) de como ponerlo en modo gráfico.

Gracias de antemano por la ayuda!
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines