Sobre PHP i la funcion md5(cadena)



  • Una pregunta, es buena idea usar la funcion md5(); para encriptar passwords??

    O otra manera de decir lo mismo, se puede descifrar algo codificado con la funcion md5();??

    Eske mirando ESTE texto me ha surgido la duda.

    Salu2! i gracias.



  • Hasta donde yo se md5 no es lo más seguro del mundo para cifrar datos, pero tampoco te van a sacar las claves en 5 minutos con un script :-)

    Para cifrar, md5 usa una "semilla" con la que a partir de ahí empieza a hacer sus cálculos de cifrado. Sin esta semilla es imposible descifrar los datos. Esta semilla suele ser la propia clave que vas a encriptar :-) Así que para saber que la clave cifrada es "clavedemarcalj" primero tienen que saber la semilla que, casualmente, es "clavedemarcalj".

    Pero claro, se puede ir probando (=fuerza bruta) hasta dar con la semilla correcta. Por lo que es importante que nadie, salvo el administrador, tenga acceso a las claves aunque sean cifradas.

    Espero haberte servido de ayuda :p



  • Ok muchas gracias.

    Pos entonces creo que lo hare asi… Por lo visto PHP-Nuke lo hace asi.

    Salu2!



  • Me consta que todos o casi todos los CMS que he visto funcionan también así :)
    Incluso las passwords en Linux están así (# cat /etc/shadow)

    Por cierto, antes de entrar a saco con PHP-Nuke yo miraría otras opciones como GeekLog (http://geeklog.sf.net) o Drupal (http://www.drupal.org), tienen un desarrollo más abierto, menos bugs y, en mi opinión, un mejor acabado (sobretodo Drupal ¡es la caña!).



  • Os pagan por patrocinar el drupal?? lo digo pq tmb me lo comento josefu y por mas q miro la wes no me acaba de molar. Ademas, no se a q fallos de seguridad del phpnuke te refieres, ya q por mas q e mirao wes con la lista de fallos y tal, mi pagina esta parcheada pa esos, o por lo menos no hacen nada. Casi q me preocuparia mas un atake por sql inyection, pero q tpc es pa tanto. Si puedes postear un link de una web echa con drupal te lo agradecere, y asi lo juzgo, pq la verdad es q la web en si es un poco qtre.

    Marcalj q tal vas con el proyecto?? Ya te has pasao a ver mi wes?? si kieres el modulo/bloke de arriba a la derecha pidelo q te lo paso ;)xD Me falta terminarle un par de cosas, pero de momento puede valer.

    Despues de desvariar un poco me centro. El algoritmo md5 funciona en un sentido, es decir, solo se puede codificar, JAMAS se puede descodificar. Para cascarlo tienes q ir generando claves y compararlas, en tu caso introducirlas en la web. Para eso lo mejor es el sistema de 3 intentos. Logeas la ip y si la ip no es capaz de hacer login en 3 intentos, la baneas. Hay programas q te permiten ir cambiando de ip (normalmente por proxy) pero eso solo se usa si atacas un banco, al fbi o a la SGAE :risitas: :risitas: Pero no creo q en esa base de datos vaya a estar guardado el secreto de la muerte de kenedy:risitas: Lo dicho, pon el sistema del baneo ip q suele funcionar mu bien.

    Tmb puedes hacer q la cuenta X del usuario X tenga q entrar desde la direccion AAA.BBB.CCC.DDD. Eso estaria bien y se podria hacer bien, si (en tu caso) entran desde la red interna (wireless). El problema es q el usuario no podria entrar desde otro equipo, pero….

    Mystix, se me olvidaba comentar una cosa. El php se ejecuta en el servidor, asi q todos los fallos q tengas de programacion son los q pueden originar los bugs y asi poder considerarse inseguro. Si eres buen programador sabras mas o menos por dnd te atacaran y sabras como defender el codigo. Aunq yo soy de los q avoga por defender el servidor, puesto q la entrada a una web como administrador da unos privilegios importantes, pero el acceso directo a la BD eso, si es realmente peligroso.

    SalU2

    KrHonHoS



  • Gracias a los dos.

    Una cosa Mystix, no me voy a poner con PHP-Nuke, solamente la tengo como base de conocimientos para aprender a programar en PHP e MySQL. Solo eso. Me parece k esta cojonudamente bien hecho i te vuelves loco para averiguar como furula algo :p (almenos yo jeje).

    Estoy montando un proyecto con PHP & MySQL pero ahora tengo k convertir una DB de acces a MySQL….estoy en este paso.
    KrHonHoS, cuando tenga listo el formato de las tablas te lo comento mas concretamente, ok? k ahora hasta k no lo miremos bien i no lo optimizemos tardaremos unos dias.

    Luego tendre k montar todas las funciones i tal del proyecto. Lo de la seguridad de banear IP's me parece muy interesante. Tengo k ponerme las pilas pq muchas cosas no se hacerlas.

    Sobre el bloque de los links me ha parecido de puta madre!!! fantastico, es muy bonito i facil de usar/mirar. Ya pondre yo links tambien.

    Bueno, ya te informare del proyecto proximamente (espero) :p

    Salu2!



  • En access hay una opcion para exportar a SQL, ahora no recuerdo bien dnd pero haberla hayla. Creo q en herramientas. De todas formas busca access2sql en el google q seguro q a alguien le a pasao lo mismo q a ti.

    Publicado originalmente por marcalj
    Sobre el bloque de los links me ha parecido de puta madre!!! fantastico, es muy bonito i facil de usar/mirar. Ya pondre yo links tambien.

    Tio, no veas como me ha ilusionao leer eso. Nadie a comentao nada en el foro y tal y pense q no le gustaba a la peña o q se pasaba el dia viendo el bloke "de arriba a la derecha" ;) Muchas gracias, a ver si ahora modifico un par de cosas en la tabla para no repetir los usuarios y cuando este me pongo con la introduccion.

    SalU2

    KrHonHoS



  • Os pagan por patrocinar el drupal?? lo digo pq tmb me lo comento josefu y por mas q miro la wes no me acaba de molar. Ademas, no se a q fallos de seguridad del phpnuke te refieres, ya q por mas q e mirao wes con la lista de fallos y tal, mi pagina esta parcheada pa esos, o por lo menos no hacen nada. Casi q me preocuparia mas un atake por sql inyection, pero q tpc es pa tanto. Si puedes postear un link de una web echa con drupal te lo agradecere, y asi lo juzgo, pq la verdad es q la web en si es un poco qtre.

    Páginas con drupal
    Algunas en español:
    http://www.bulmalug.net
    http://www.badopi.org/

    Hay más, pero ahora no recuerdo xD

    En cuanto al aspecto de la web, no creo que eso sea lo más importante a la hora de escoger un cms o otro, ya que si al final quieres tener una web diferente te tocará hacerte un theme para la tuya y no elegir uno ya hecho.
    De todas maneras en drupal tb hay themes muy wapos.



  • Publicado originalmente por josefu
    En cuanto al aspecto de la web, no creo que eso sea lo más importante a la hora de escoger un cms o otro, ya que si al final quieres tener una web diferente te tocará hacerte un theme para la tuya y no elegir uno ya hecho.

    :susto: :susto: :vayatela: :nono:

    Vaya tela, espero k me llegue el dia daki un tiempo, k esto de diseño grafico me da pol culo, soy un negado con estas cosas….....jo! :p

    Salu2!



  • No se como sera en drupal, pero en el phpnuke un theme se hace en un ratillo. con saber algo de html y enteder como esta montao el nuke…. en 10 min tengo hecho el mio (aun no lo he publicado) solo me faltan un par de graficos y listo. La verdad es q es un poco chorra. El problema es el de siempre, tienes q pensar en tablas, y eso es chungoooooo :vayatela:

    Weno q no vamos a discutir mas sobre cms, a cada uno le gusta uno. A mi personalmente el phpnuke me parece bastante bueno y no te digo q no tenga fallos y tal, pero como me estoy haciendo un modulo, retocando los q tiene y tal y cual pos... igual al final consigo tener algo bueno :sisi:

    SalU2

    KrHonHoS



  • Buenas,

    Desconozco si ahora mismo hay algún fallo en última versión de PHP-Nuke, pero a lo que yo me refería es al historial de bugs que ha tenido y el hecho de tener un desarrollo casi cerrado a tan solo Burzi. Me fío más de un equipo de desarrolladores que de un desarrollador solo (normalmente ;-))
    De todas maneras es lo que tu dices… Que cada uno use el que le guste.

    Respecto a lo de banear la IP después de 3 intentos pues tampoco es como para ponerse así y te explico porqué: La velocidad de respuesta de un servidor de internet es muy (pero que muy xD) mayor a la velocidad a la que un programa como John The Ripper puede probar una sola password con md5 y el susodicho necesita de mucho rato (minutos, horas) para sacar según que passwords. Así que sacar la password por fuerza bruta contra el server es bastante improbable, otra cosa es que accedan a tu BD y se lleven las passwords para probar en local con el John :p
    Además, causaría más problemas a usuarios legales (los usuarios somos torpes) que a intentos de acceso :)

    Respecto a lo que me cuentas de PHP... A parte de la explicación de que se ejecuta en servidor y que a veces la mala programación puede ser la fuente de una intrusión en el sistema (hay que vigilar los permisos del usuario que ejecuta Apache...) no entiendo que me quieres decir o si simplemente era por añadir algo más :)

    Marcalj: No puedes decir que PHP-Nuke está muy bien hecho y luego decir que el código no se entiende, es contradictorio jeje :P
    Suerte con el proyecto :)

    josefu: bulmalug no usa drupal, usan bulmita :risitas:

    Otros Drupales son:
    http://blog.nirvanis.net
    http://www.drupal.org (por supuesto xD)
    http://www.librexpresion.org

    Y no lo recomiendo por ser más o menos bonito, es por su funcionalidad, extensiones y posibilidades. Si podeis probarlo como administrador os va a gustar :) almenos a mi me convence más que PHP-Nuke, PostNuke, GeekLog y algún otro que he podido probar :)


  • MODERADOR

    Para sacar una password MD5 a traves de internet es impensable, estoy acostumbrado a decifrarlas (en games eh… :risitas: ) y en local no me he visto capaz de sacar ninguna de mas de 8 caracteres (me tardo 9 dias por una de 8) asin que si tu password tiene 10 caracteres ni que te roban la BD te la van a sacar... a menos que se monten un cluster con varios pc's potentillos... o mil 486 :D

    PD: Intente sacar una en red local y se colgo el servidor...



  • Incluso un ataque con diccionarios sería bastante improbable que tuviera éxito antes de que el atacante muera de asco o el servidor web se vaya abajo :risitas:

    ¡Ojo! Pero por si acaso mejor mantener passwords difíciles, que no sean palabras existentes, blablabla… Y seguir protegiendo el acceso a las claves :)



  • Ahora pensando en todo esto….

    Para encriptar en md5, tal i como lo hace la funcion en PHP, pues tu le entras una cadena i el hace otra con muchos caracteres i desordenados xD :p

    bueno, pues el tema seria (para descifrar) un programita k vaya provando a descifrar todos los caracteres en serie, primero un caracter, luego dos etc, hasta k conincida, no?

    Se podria construir una funcion recursiva k lo haga....el tema no es saber descifrar, si no, cifrar hasta encontrarla, no? no creo k cueste mucho...como nunca cambia....pues...o no?

    Vamos a plantear el problema....(poca faena, eh!...xD)

    Tenemos la clave encriptada en md5 por ejemplo: md5("b6") = 528953727ef3a4e1c441c6078534c39b (en total 32 caracteres siempre).

    Entonces como no sabemos k lo que queremos es encontrar "b6" tendremos k ir provando a partir de un caracter todas las "letras" si no da resultado, pues con dos, asi hasta encontrarlo...poniendo un limite de 32 caracteres en la contraseña, por ejemplo.

    Estaba haciendo la funcion pero tengo una duda, en PHP como va el tema de los caracteres, pq en C tu le defines una variable como caracter i solamente incrementandola te salen todos los caracteres, pero en PHP no lo hace...

    alguna idea??

    Pero la funcion es simple.

    Salu2!



  • mmmm marcalj, eso ya esta inventado y se llama johnTheRipper (por ejemplo) y como dice krampak es demasiado el tiempo q te lleva y eso haciendolo en local, q mi viejo k6-2 a 300 procesaba 500.000 claves por segundo y le tube 3 dias a ver si me sacaba la mia, y no hubo manera.

    Si kieres seguridad usa claves de mas de 8 digitos, con convinacion de numero y letras (no uses el dni q eso se peta mu fasil).

    Se me olvidaba, no lo hagas en php q es una locura. Lo mejor es C. Ocupa poco y es capaz de correr en una maquina con msdos y totalmente limpia, asi ira muchisimo mas rapido. Si lo chutas en linux desde una mini o algo similar q este totalmente pelao ira rapidismo o como dice krampak con un cluster un poco majo y programacion distribuida ira tmb mu rapido, aunq necesitas una red potente.

    SalU2

    KrHonHoS



  • ¬ ¬

    Como puede tardar tanto…. no se... bueno pos lo hago en C a ver como me sale.

    Salu2!



  • marcalj, para que veas que es cuestión de potencia y estamos trabajando con números de combinaciones jodidamente grandes (muy jodidamente grandes x))

    Pongamos que trabajamos con 25 carácteres, ¿vale?

    Una password de 1 cifra serán 25 combinaciones,
    una password de 2 cifras serán 2525 combinaciones,
    una password de 3 cifras serán 25
    25*25 combinaciones (ya estamos hablando de 15.625 posibles combinaciones para tan solo tres cifras) así que usando potencias podemos saber que una password de, pongamos, 8 cifras tiene 25^8 combinaciones diferentes (esto son 152.587.890.625 combinaciones ciento cincuenta y dos mil millones y medio más o menos. Si el PC de Khronos procesaba 500.000 claves por segundo hacemos un pequeño cálculo del que sacamos que necesitaría 84 horas para probar todas las combinaciones.

    Por cierto, ahora me doy cuenta de que he metido la pata porque md5 también usa números, con lo que los cálculos para 8 carácteres y 35 cifras nos daríán que khronos necesitaría 1251 horas para probar todas las combinaciones (52 días enteros).

    Ah, si hilamos fino md5 no cifra, simplemente hace un digest (una especie de resumen), por eso se usa para calcular la integridad de lo que nos bajamos de internet (lo habréis visto todos aquellos que hayais bajado alguna distro linux).

    Si os interesa el tema y os gusta leer os recomiendo una novela de Neal Stephenson llamada Criptonomicón. A parte de ser una historia genial (bueno, más de una) aprendes bastantes cosillas de criptografía :)

    Una trozo del libro que citan en un artículo de Kriptopolis dice así:

    _"Cuanto más larga es la clave que quieres generar, más largo es el proceso. Randy intenta generar una ridículamente larga. Le ha comentado a Avi, por medio de un mensaje cifrado, que si cada una de las partículas de materia del universo pudiese emplearse para construir un único superordenador cósmico, y ese ordenador trabajase en intentar romper la clave de cifrado de 4096 bits, le llevaría más tiempo que toda la vida estimada del universo.

    Empleando la tecnología actual -le respondió Avi- eso es cierto. Pero ¿qué hay de los ordenadores cuánticos? ¿Y si se desarrollan nuevas tecnologías matemáticas que simplifiquen la factorización de grandes números?

    -¿Cuánto tiempo quieres que sean secretos esos mensajes?- le preguntó Randy en el último mensaje antes de abandonar San Francisco-. ¿Cinco años? ¿Diez años? ¿Veinticinco años?.

    Después de llegar al hotel esa tarde, Randy descifró y leyó la respuesta de Avi. Todavía la tiene colgada frente a los ojos, como la imagen remanente de un flash:

    - "Quiero que sigan siendo secretos mientras los hombres sean capaces del mal."

    (Neal Stephenson, "Criptonomicón")_



  • :susto: Vaya tela, bueno igualmente me curo un programita k hace tiempo k no programaba nada i me ha venido ganas… Lo hare para caracteres de la A a la Z, de la a a la z, i del 0 al 9.

    Luego os cuento.

    Salu2!



  • Vaya, se me olvidaba que distingue entre mayúsculas y minúsculas :risitas: :risitas:

    Eso aumenta la cifra a 3888 días de cálculo para 8 carácteres :risitas: y para que nos hagamos una idea de lo que aumenta con poner un solo carácter más… para passwords de 9 carácteres serían (con el k6-2 de khronos, claro) 5598720 días o 15338 años.
    Por cierto me equivoqué al decir que Linux lleva las claves en md5, según he leído (en una instalación de SuSe 8.2 :risitas:) hoy mismo el estándar en Linux ahora es DES.



  • jajajaja solo para crackear mi puta contraseña del PHP-Nuke se estaria años xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD jajajajajaja

    Lo siento pero eske me ha venido la risa jajajaja vaya tela.

    Bueno una duda k me ha surgido, como llamo la funcion en C para que me cree la cadena en md5??

    Salu2!


Accede para responder
 

Has perdido la conexión. Reconectando a Hardlimit.