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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Hacer un 100 millones de Insert sin que se me pare.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hacer un 100 millones de Insert sin que se me pare.  (Leído 5,702 veces)
dimitrix


Desconectado Desconectado

Mensajes: 4.847



Ver Perfil WWW
Hacer un 100 millones de Insert sin que se me pare.
« en: 14 Marzo 2011, 01:21 am »

Buenas, estoy haciendo unas pruebas para un artículo que estoy haciendo de colisión hash en MD5 y SHA1.

Y estaba haciendo una prueba para hacer y guardar en una base de datos para guardar los 100 primeros millones y:

Código
  1. <?php
  2.  
  3. $db_host="localhost";
  4. $db_name="colision";
  5. $db_user="colisionn";
  6. $db_user_pass="blablabla";
  7.  
  8.  
  9. $con = mysql_connect($db_host,$db_user,$db_user_pass);
  10. if (!$con)
  11.  {
  12.  die('Could not connect: ' . mysql_error());
  13.  }
  14.  
  15. mysql_select_db($db_name, $con);
  16.  
  17.  
  18. $contador=1;
  19.  
  20. while($contador!=9999999){
  21.  
  22. $md5=md5($contador);
  23. $sha1=sha1($contador);
  24.  
  25.  
  26. mysql_query("INSERT INTO NUM1 (NUM, MD5, SHA1)
  27. VALUES ('$contador', '$md5', '$sha1')");
  28.  
  29. $contador++;
  30. };
  31.  
  32.  
  33.  
  34. ?>

Y el PHP se me para cuando lleva poco más de 1 millón. Supongo que es por que tendrá un tiempo máximo para devolver una respuesta al usuario que espera en el navegadorn, pero no se me ocurre nada.

¿Alguna idea?


En línea




bomba1990


Desconectado Desconectado

Mensajes: 395



Ver Perfil WWW
Re: Hacer un 100 millones de Insert sin que se me pare.
« Respuesta #1 en: 14 Marzo 2011, 02:27 am »

max time executon. hay una configuracion del php.ini que establece un tiempo maximo de ejecucion. puedes modificarlo y multiplicarlo por 10, aver si haci termina la ejecucion, yo tambien hice un script hace un tiempo que cuando llegaba al tiempo maximo de ejecucion se paraba y espera que el usuario le de click y redireccione a la misma pagina para seguir donde la dejo.


En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Hacer un 100 millones de Insert sin que se me pare.
« Respuesta #2 en: 14 Marzo 2011, 02:32 am »

Quizás pueda mejorar si realizar el Cifrado de los datos desde el motor de base de datos, es decir:
Código
  1. for( $i=0; $i<=9999999; $i++ ){
  2.  $sSQL = "INSERT INTO NUM1 (NUM, MD5, SHA1) VALUES ('".$i."', 'MD5(".$i.")', 'SHA1(".$i.")');";
  3. }
En línea

Te vendería mi talento por poder dormir tranquilo.
Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Hacer un 100 millones de Insert sin que se me pare.
« Respuesta #3 en: 14 Marzo 2011, 03:11 am »

Insertarla 100 millones de veces sin que se te pare? Entonces vos necesitas VIAGRA.

set_time_limit();
En línea

RedZer


Desconectado Desconectado

Mensajes: 666



Ver Perfil
Re: Hacer un 100 millones de Insert sin que se me pare.
« Respuesta #4 en: 14 Marzo 2011, 07:13 am »

Insertarla 100 millones de veces sin que se te pare? Entonces vos necesitas VIAGRA.


jajajajajajaja o M- force
En línea

Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo
Stoya

Desconectado Desconectado

Mensajes: 112


Esperando respuestas


Ver Perfil
Re: Hacer un 100 millones de Insert sin que se me pare.
« Respuesta #5 en: 19 Marzo 2011, 12:40 pm »

Quizás pueda mejorar si realizar el Cifrado de los datos desde el motor de base de datos, es decir:
Código
  1. for( $i=0; $i<=9999999; $i++ ){
  2.  $sSQL = "INSERT INTO NUM1 (NUM, MD5, SHA1) VALUES ('".$i."', 'MD5(".$i.")', 'SHA1(".$i.")');";
  3. }


¿No se puede hacer esto en php?

Código
  1. for( $i=0; $i<=9999999; $i++ ){
  2.  $sSQL = "INSERT INTO NUM1 (NUM, MD5, SHA1) VALUES ('$i', 'MD5($i)', 'SHA1($i)');";
  3. }

Si hasta un millón llega, considerando que es probable que uses un lenguaje tan defectuoso como php porque lo estés ejecutando en un hosting, que en el hosting no tengas permiso para hacer lo de set_time_limit(); (usará modo seguro) ni para cambiar php.ini, que estará fuera de tu jaula, lo que puedes hacer es hacerlo de varias veces.

Lo único que tienes que hacer es cambiar:
Código
  1. $contador=1;
por
Código
  1. $contador=mysql_fetch_row(mysql_query("SELECT max(num) FROM num1;"))[0];
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Hacer un 100 millones de Insert sin que se me pare.
« Respuesta #6 en: 22 Marzo 2011, 00:09 am »

Quizás pueda mejorar si realizar el Cifrado de los datos desde el motor de base de datos, es decir:
Código
  1. for( $i=0; $i<=9999999; $i++ ){
  2.  $sSQL = "INSERT INTO NUM1 (NUM, MD5, SHA1) VALUES ('".$i."', 'MD5(".$i.")', 'SHA1(".$i.")');";
  3. }


mysql no soporta concaenaciones para multiples inserts con ";", eso se utiliza en phpmyadmin porque phpmyadmin separa las querys y las hace múltiples ejecutando una por una, pero en la práctica eso no existe, solo lo puede hacer mssql (vivan las inyecciones multiples).

intenta hacer lo que te dicen con set_time_limit(); y si quieres dejarlo en background ejecutalo desde php directamente con system() y lo pasas por >dev/null&
En línea

programatrix


Desconectado Desconectado

Mensajes: 3.287


Ver Perfil WWW
Re: Hacer un 100 millones de Insert sin que se me pare.
« Respuesta #7 en: 22 Marzo 2011, 00:48 am »

Función sleep, deja descansar la maquinaria unos segundo y sigue al rato:
Sleep(5);

Por ejemplo, y si no por pasos, si tienes 1000000000 numeros a hacer md5 pues divides ese número de dos, hasta que te quede un número más normal digamos 5000, luego cojes y sumas todas las divisiones que has hecho de ese número, guardas en un fichero el número de pasos a seguir, entonces, empiezas, tufichero.php?paso=0 te muestra una web donde poniendo en la cabecera una redirección te redirecciones en 5 segundos por ejemplo a tufichero.php?paso=1
Así tu ordeador desde el navegador va llamando automáicamente a crear nuevos hash md5, tu servidor no se satura y va poco a poco, si, vas a tardar más tiempo, pero no se saturará el servidor...
Pero al igual que lo haces con números puedes coger un fichero diccionario y crearte un programa en php que valla abriendole poniendo el hash md5 en otro fichero y luego para crackear un password en md5 simplemente comparas rapidamente jaja
No se hay muchas posibilidades interesantes :)
Un Saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda insert
Programación Visual Basic
josemer 1 1,242 Último mensaje 31 Enero 2006, 21:43 pm
por el_chente23
ayuda en insert
Programación Visual Basic
josemer 0 1,193 Último mensaje 3 Marzo 2006, 21:33 pm
por josemer
Mi aporte pare todos
Programación Visual Basic
henker 1 1,425 Último mensaje 9 Agosto 2007, 12:02 pm
por sch3m4
Vaca pare un caballo! « 1 2 »
Foro Libre
ignorantev1.1 16 10,936 Último mensaje 1 Noviembre 2010, 15:40 pm
por [L]ord [R]NA
[Resuelto] problema con foreach en php para hacer insert
PHP
tecasoft 3 2,872 Último mensaje 19 Octubre 2015, 23:55 pm
por tecasoft
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines