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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17
51  Programación / Programación C/C++ / [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA) en: 6 Noviembre 2016, 10:04 am
Hola a todos, la pregunta es bien directa.

No entiendo bien la diferencia entre Programación Dinámica(botton up y top-down)
¿Alguien me podría dar ejemplos de códigos explicando la lógica de cada uno?


¡Saludos!
52  Programación / Programación C/C++ / [Muy específico] Algo de punteros en: 2 Noviembre 2016, 13:27 pm
Creo que ya sé la respuesta, pero por si las dudas pregunto.

Básicamente tengo que invertir una pila, una estructura de datos que la represento como:

Código
  1. typedef struct _AStack {
  2. int data[MAX_STACK];
  3. int back;
  4. }AStack;
  5.  

Acá va la duda:


Código
  1. void astack_reverse (AStack *s){
  2. int i;
  3. AStack *reverse = astack_create();
  4.  
  5. for (i=s->back; i >=0; i--){
  6. astack_push(reverse,s->data[i]);
  7. }
  8. *s = *reverse;
  9. }

La duda está en la última linea *s=*reverse, lo que estoy haciendo es igualar todos los elementos de s a reverse, (ya sé que no es lo más eficiente).

Ahora si yo hago s = reverse (sin *) lo que pasa es que yo estoy modificando una variable global (estoy modificando la dirección donde apunta) y cuando vuelve al main perdí la información. Eso si entiendo ...

¿Pero por qué acá no pasa lo mismo?

Acá estoy implementando pilas pero con otra estructura:

Código
  1. typedef struct _AStack {
  2.        int *data;
  3.        int size;
  4.        int back;
  5. }AStack;


Código
  1. void astack_push(AStack *s, int v){
  2.  
  3.        if (s != NULL){
  4.                if (s->size > s->back){
  5.                        s->back++;
  6.                        s->data[s->back] = v;
  7.                }else{
  8.                        s->size*=2;
  9.                        int *new_data = realloc(s->data,(s->size));
  10.                        if (new_data != NULL) s->data = new_data;
  11.                        else printf ("No se pudo asignar memoria.\n");
  12.                }
  13.        }
  14. }


Me refiero a esta parte:

Código:
                        int *new_data = realloc(s->data,(s->size));
                        if (new_data != NULL) s->data = new_data;
                        else printf ("No se pudo asignar memoria.\n");


... s->data = new_data;

Siendo que new_data la declaré dentro de la función y s->data también me lo pasaron, ¿es por como funciona el realloc?, estoy casi seguro que sí.

Se me hizo medio largo.
Saludos!
53  Programación / ASM / Re: ¿Cómo funciona la pila con respecto a las funciones? en: 31 Octubre 2016, 01:59 am
Sí, listo.

Lo entendí perfectamente, gracias.
54  Seguridad Informática / Análisis y Diseño de Malware / Re: fuerza bruta SMF en: 29 Octubre 2016, 12:45 pm
Ahora que recuerdo, SMF aunque no recuerdo si era el 1.x o el 2.x guardaba el login del usuario en una COOKIE salteada con 4 caracteres. Lo mismo, en vez de hacer fuerza bruta al login, puedes generar strings sha1 aleatorios que suelen tener si o si 40 caracteres con el siguente esquema:

Código:
sha1 (nombreUsuario + stringAleatorio + stringAleatoriode4Caracteres)

O si no te interesa un usuario en concreto simplemente generar hex de 40 caracteres de fijo.

¿Cómo es eso?, nunca lo escuché, pero no creo que sea muy eficiente tampoco.
55  Seguridad Informática / Análisis y Diseño de Malware / Re: fuerza bruta SMF en: 29 Octubre 2016, 10:38 am
La fuerza bruta te sirviría en caso de lograr acceder a la db y que la contraseña estuviese cifrada, para eso si que es útil.

En alguna ocasión Chema Alonso habló de lo innecesario que es poner contraseñas complejas a nivel web debido a los distintos sistemas de protección que hay además de la contraseña.
Por otro lado, queda todo guardado cuando hacés un ataque de BruteForce, cualquiera que mira los archivos de logs se da cuenta de inmediato lo que estás intentando de hacer, ¿planeabas usar tor o algo parecido?

En conclusión, hacer un ataque de fuerza bruta es prácticamente inútil a nivel web (se usa como última opción), hay muchas cosas antes que podrías intentar. Creo que hasta un DDoS es más eficiente, jaja.

Y veo que tenés problemas con la ñ, si estás en GNU/Linux abrí la consola y escribí setxkbmap es

¡Saludos!
56  Programación / ASM / Re: ¿Cómo funciona la pila con respecto a las funciones? en: 29 Octubre 2016, 00:42 am
Las funciones están directamente relacionadas con la pila. Los parametros se le pasan a las funciones introduciendolos en la pila, ademas al retornar una funcion la dirección a donde tiene que retornar la función también se encuentra en la pila.

La pila se tiene que mantener siempre estable, es decir, si comienza en el valor 0040892 (por ejemplo) siempre tendrá que estar en esa dirección, esa dirección base  esta establecida en rbp, si tu vas metiendo valores en la pila pero no vas restaurandola la pila se rompe y el programa estalla.

Código
  1. pushq %rbp ; Con estas dos intrucciones preservas la pila
  2. movq %rsp,%rbp
  3. ; Aqui vendriamos a sacar los parametros de la funciones de la pila y a usarlos
  4. movq %rbp, %rsp ; Aqui volveriamos a restarurar la pila tal y como estaba antes de comenzar la funcion
  5. popq %rbp
  6. ret ; Retornariamos la funcion

Para entenderlo tendrías que leer sobre lenguaje ensamblador ya que esto no ocurre en ningún otro lenguaje.

saludos.


Leí bastante de ASM (lo de pila también pero no me quedó claro) y me conozco todos los registros, sólo que no sabía esto que me dijiste.
Sé que el registro rbp apunta a la base de la pila y en rsp está el último elemento agregado, sé que la pila crece hacia abajo pero, todavía no entiendo a qué te referis con preservar la pila, o sea que pasa si saco eso, ¿desborda no? pero sigo sin entender del todo.

Capaz si me tiras unos ejemplos un poco más sencillos mostrando el funcionamiento de la pila con respecto a las funciones entendería mejor.

Ojalá puedas hacerlo, gracias y saludos!



Creo que ya entendí un poco más de cómo funciona la pila.
Programé algunas cosas y lo compile usando -S entendí un poco más de todo.

Perdón por el doble post, estaba desde el cel.
Gracias, saludos.
57  Programación / ASM / ¿Cómo funciona la pila con respecto a las funciones? en: 28 Octubre 2016, 09:12 am
La consiga:
Código:
En el programa que sigue, funcs implementa void (*funcs[])()={f1, f2, f3}. Compl´etelo para que
la l´ınea con el comentario corresponda a funcs[entero](). Use el c´odigo m´as eficiente.

Código
  1. .data
  2. fmt:
  3.   .string "%d"
  4. entero:
  5.   .long 020
  6. funcs:
  7.   .quad f1
  8.   .quad f2
  9.   .quad f3
  10.  
  11.  
  12. .text
  13.  
  14. f1:
  15.   movl $0,%esi
  16.   movq $fmt, %rdi
  17.   call printf
  18.   jmp fin
  19.  
  20. f2:
  21.   movl $1,%esi
  22.   movq $fmt, %rdi
  23.   call printf
  24.   jmp fin
  25.  
  26. f3:
  27.   movl $2,%esi
  28.   movq $fmt, %rdi
  29.   call printf
  30.   jmp fin
  31.  
  32. .global main
  33. main:
  34.   pushq %rbp
  35.   movq %rsp,%rbp
  36.  
  37. # Leemos el entero
  38.   movq $entero, %rsi
  39.   movq $fmt, %rdi
  40.   xorq %rax,%rax
  41.   call scanf
  42.   xorq %rax,%rax
  43.  
  44.   movl entero, %ecx
  45.   movq funcs(, %rcx, 8), %rdx  
  46.  
  47.   jmp *%rdx
  48.  
  49. fin:
  50.   movq %rbp, %rsp
  51.   popq %rbp
  52.   ret
  53.  

Pero realmente no entiendo bien para que sirven estas dos intrucciones:
  pushq %rbp
   movq %rsp,%rbp


Yo sé que la traducción de eso en C es algo como *(rsp) = rbp; y rbp = rsp

Pero no entiendo para nada, ¿para qué se usa eso? Leí todo el apunte y apenas lo entendí.
No entiendo bien que tiene que ver las funciones con la pila.
Si alguien me da algún ejemplo en C sería mucho mejor, porque entiendo perfecto C.
58  Programación / PHP / Re: [DUDA] ¿PHP es viejo? ¿Alternativa a PHP? en: 14 Octubre 2016, 19:10 pm
Los que critican a PHP son los hipters del desarrollo web  ;D

Si bien es cierto que NodeJs y la arquitectura MEAN esta desplazando al tipico PHP+HTML5+jQuery, PHP aun es el rey indiscutido de la web.

Las alternativas reales son Node (javascript en el servidor) y Django (Python). Del segundo no puedo hablar porque nunca lo he usado (ni siquiera me gusta python), pero si eh usado Node. Te diría que la ventaja es que es muchísimo mas rápido, y ademas es orientado a eventos, lo que lo hace insuperable en aplicaciones real-time. Ademas tiene cosas únicas como sockets persistentes. El único problema es que es un poco mas difícil de aprender que PHP.

¿Qué querés decir por hipters del desarrollo web ?

Gracias Poyoncio
59  Programación / PHP / Re: [DUDA] ¿PHP es viejo? ¿Alternativa a PHP? en: 14 Octubre 2016, 16:28 pm
Listo, gracias.
Hace tiempo me manejo con PHP creo que llegó la hora de ver un poco de Node, gracias por la información.
Algunos dicen que el ícono de PHP en vez del elefante debería ser un dinosaurio.

Saludos!
60  Programación / PHP / [DUDA] ¿PHP es viejo? ¿Alternativa a PHP? en: 14 Octubre 2016, 15:26 pm
Hola a todos,

¿por qué muchos dicen que PHP ya pasó de moda?, además que hacen burlas al lenguaje, siendo que usan una plataforma hecha en PHP como Facebook.
Y de ser así, ¿cuáles lenguajes se usan ahora como alternativa de PHP? y ¿qué ventajas tienen en comp con PHP?

 :P
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines