Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - kub0x

#461
Cita de: MRx86 en 16 Noviembre 2016, 20:05 PM
¿Porque no se recomienda retornar cadenas en C?

No es que no se recomienden devolver cadenas en C. Existen unas pautas que si se cumplen entonces se considera seguro devolver la cadena.

Si comparamos:

char* RetStr(){
char str[] = "Hola";
return str;
}


char* RetStr(){
char * str = (char*)malloc(5);
strcpy(str,"Hola\0");
return str;
}


La primera reserva un char * en la stack (pila) y al hacer return como bien sabemos los valores de la función en la pila salen. El valor de la dirección de memoria de la variable str no tendrá sentido alguno.
En el segundo reservamos memoria en el heap dinamicamente, al devolver el valor los valores de la pila salen pero el heap se mantiene intacto por lo tanto no tenemos perdida de significado.

Saludos!
#462
Criptografía / Re: Duda secreto compartido Shamir
16 Noviembre 2016, 19:19 PM
Buenas matake un placer volverte a ver por aquí, un tema bonito el de la autenticación:

Pongamos que conocemos el user/password de cualquier usuario que utilice tu servicio:

- Tarjeta de coordenadas: ampliamente utilizada como sistema de doble autenticación en Bancos y otras entidades. Al introducir users/password te piden una o varias coordenadas de la misma. Los riesgos son la generación de la matriz o el robo de la tarjeta. Si la generación no tiene ninguna tendencia o vulnerabilidad entonces todo iría bien. Para ello utiliza un espacio numérico para cada coordenada digno y pide tres coordenadas distintas al azar. Si tenemos 20 coordenadas cada una con números entre 10^4 y 10^5 - 1 (entre 10.000 y 99.999), el espacio número por coordenadas es de 89.999. Teniendo en cuenta que las coordenadas que se le piden al usuario son distinas (no se repiten) nos queda una Combinación sin repetición de 20 tomando 3 (C(20,3) ): [latex]\frac{20!}{3!(20-3)!}[/latex] que son 1140 posibilidades con las que puedes jugar. El atacante por cada coordenada tiene una probabilidad de acierto de [latex]\frac{1}{89.999}[/latex], son 3 coordenadas por lo tanto [latex]\frac{1}{89.999}^{3}[/latex]. La probabilidad de acierto por intento es nula, en cada intento cambias la coordenada a pedir y ya. El espacio numérico puede ser inferior.

- Shamir's secret sharing: utilizado para dividir un secreto en n partes donde k participantes pueden reconstruirlo. En este caso n=k puesto que sólo quieres que el usuario y el servidor lo reconstruyan, nadie más interviene en el esquema que desarrollas. Cosas a tener en cuenta. Los coeficientes del polinomio de descartan al generar por primera vez el secreto y deben de ser aleatorios y menores que el módulo primo p. El secreto es conocido por el servidor, así que hashealo y cada vez que lo reconstruyas comparas hashes. El servidor genera {f,a,b,p,s} siendo s el secreto, hashea el secreto lo mete a la DB y evalúa f (la función) en 1 y 2, se queda el valor (1,f(1),p), envía al usuario (2,f(2),p) y el resto lo descarta. todo esto al registrarse el usuario por primera vez. Entonces cuando el usuario inicie sesión enviará su secreto y el servidor con el otro secreto generará un sistema lineal de ecuaciones donde hallará la solución exacta al secreto original. Que sucede aquí, pues que si al usuario le roban su secreto GAME OVER.

- PKI: Cada vez que un usuario se registra se le asigna un certificado de cliente emitido por la entidad certificadora (CA) del servidor. El servidor guarda la clave pública del usuario en la DB. Cada vez que el usuario inicie sesión enviará el certificado de usuario (realmente se dice cliente) y con el mismo unos parámetros dependiendo del algoritmo asimétrico. El server validará el certificado: comprobará que fue firmado por su entidad certificadora y que conoce la clave pública. Después comprobará la firma digital sobre los parámetros enviados y si la validación es correcta habra autenticado al cliente. PROBLEMAS: si le roban la clave privada al usuario -> GAME OVER. Por lo tanto lo óptimo es que el user cifre la private con una clave simétrica.

Espero haberte servido de ayuda, cualquier cosa me dices.

Saludos!
#463
El ser humano es influenciable mediante muchos factores externos: opinión pública, familia... ¿Y que son estos mas que datos?

Planteamiento sobre toma de decisión -> Datos -> Toma de decisión. Si modifico los datos modifico la toma de decisión. Si presento unos datos distintos para un planteamiento u otro, me ajusto a la situación del individuo, modificando su elección.

La gente demanda datos sin saber interpretarlos en su mayoría, demandan tecnología sin saber los riesgos que conlleva incluirlas en nuestras vidas sin tener en cuenta la seguridad...etc ¿Es el ser humano más influenciable que nunca? Que sólo un 6% decide en base a un análisis y estudio previo, deja mucho que desear sobre el criterio y raciocinio inexistente de la mayoría (Que puede ser mentira, bienvenidos a Internet y los estudios estadísticos).

Saludos!
#464
Para "esconderte" del TaskMgr y Regedit basta :

Modo avanzado: Hookear la API que hace las querys sobre los procesos, lo mismo con Regedit y a esto se le conoce como Rootkit en ring3 o User-Mode.

Modo simple: Selecciona un programa de la lista de programas que cargan en el inicio. Asegurate de que el mismo no esta firmado digitalmente, e infectálo con el código malicioso. Digo lo de firmado digitalmente puesto que si alteras el código la firma digital no equivaldrá al hash. También puedes borrar la firma digital (cuando controlas el pc controlas la crypto), aunque mejor respetarla. ¿Qué conseguimos?... No salimos en TaskMgr como programa de inicio, ni en regedit, corremos dentro de otro software, por lo que en TaskMgr saldrá el nombre de ese software, el AntiVirus (AV) ni lo olerá mientras no haga nada brusco, además puede hasta que tenga reglas de confianza sobre el mismo software infectado.

Y mil ideas más que se me ocurren...

Saludos!
#465
Cita de: MCKSys Argentina en 13 Noviembre 2016, 23:58 PM
A menos que pongas un keylogger que intercepte la contraseña cuando se ingresa, no podrás recuperarla del sistema.

Saludos!

Podrías dumpear el hash de la clave con permisos de Admin e intentar crackearla con Rainbow Tables.

+ INFO -> https://en.wikipedia.org/wiki/Ophcrack

Saludos!
#466
Programación General / Re: Crear un kernel!
13 Noviembre 2016, 23:17 PM
Cita de: Mago Diesan en 13 Noviembre 2016, 22:55 PM
Entonces todo los kernel son iguales?

No. Existen varios tipos como el Monolithic o MicroKernel. Sus diferencias son notorias ya que el Monolithic carga todo en modo privileged y el Micro separa la lógica en capas poniendo en modo privileged solo aquello necesario, por lo tanto el micro suele ser menos propenso a fallos, y sí, Linux es mono, anda que el Torvalds buena manía tiene a los micro (segun afirmaciones varias).

+ INFO -> https://en.wikipedia.org/wiki/Kernel_(operating_system)#Kernel-wide_design_approaches

Saludos!
#467
El límite matemático es muy útil para entender la convergencia de una serie o bien para determinar el valor de una expresión en las cercanías de un punto que en la expresión genera una indeterminación.

[latex]\lim_{x\to\0} \frac{1-e^{-x}}{2x}[/latex] Si lo evaluamos en x=0 tenemos [latex]\frac{0}{0}[/latex] una indeterminación. Aplicando la regla de L^Hopital, derivamos numerador y denominador por separado:

[latex]\lim_{x\to\0} \frac{1-e^{-x}}{2x}[/latex] = [latex]\lim_{x\to\0} \frac{e^{-x}}{2}[/latex] Si sustituimos obtenemos por respuesta: [latex]\frac{1}{2}[/latex] = 0.5

Ahora si tomamos x=0.0003 y sustituimos en nuestra función obtenemos: [latex]\frac{1-e^{-0.0003}}{2*0.0003}[/latex] = 0.499925007

Como hemos observado, el limite en x=0 nos da 0.5 y si tomamos x=0.0003 en las cercanías del cero, vemos como 0.49 esta cerca de 0.5. A través del límite en un punto x sabemos que si tomamos un valor en las cercanías de x, su imagen en la función se aproxima al límite.

Saludos!
#468
Lo que buscas es hacer Reverse DNS, de IP pasar al dominio. Podría ponerte un código de ejemplo, pero en este post he encontrado algo más completo ya que al parecer hay dos métodos dependiendo de la circunstancia -> http://stackoverflow.com/questions/716748/reverse-ip-domain-check

Saludos!
#469
Un proyecto interesante y ambicioso, bajo mi punto de vista has de pasar unos cuantos días sin tocar ni una tecla, simplemente diseñándolo en papel o donde sea. No pienses en código ni en programar hasta que no tengas algo estructurado, ni siquiera pienses en el lenguaje, eso ya vendrá cuando toque implementar.

Sería bonito ver como el ser humano necesita talar árboles, cazar animales y construir, seguramente la civilización colapse por falta de recursos y extinción de especies. Digamos que el tipo de árbol que necesita el humano sale cada X tiempo pero se necesita una demanda mayor a la densidad.. cosas así que reflejen la intrínseca característica destructora humana. Luego están los datos atípicos como personas excepcionales/deficientes/enfermas etc.

Sinceramente, si no cuentas con conocimientos matemáticos y estadísticos tendrás que reducir el alcance del proyecto a algo básico, y luego ir poco a poco incorporando nuevas características. En el foro siempre ayudaremos con cualquier cuestión sea lo que sea.

Espero que su diseño y desarrollo sea fructífero.

Saludos!
#470
Programación C/C++ / Re: Debug c++
7 Noviembre 2016, 16:42 PM
Al comparar un valor en una sentencia condicional el operador es "=="

if (dato==0){..}

Saludos!