Multi-threading en PHP y otra Botnet


Hace como 1 semana vi un ejemplo, o mas bien un intento para ¿Simular? hilos en PHP. Me parecio interesante y es por eso que se los comparto a todos ustedes.

Lo primero que debemos de saber es que obviamente PHP no tiene una implementación para los threads, entonces lo que se hace es una truco para simularlo haciendo uso de la función proc_open.

La clase la pueden encontrar aquí y el ejemplo de una implementación seria asi.

include ("Thread.php");
$t2 = Thread::create("t2.php");
$t3 = Thread::create("t3.php");
$t4 = Thread::create("t4.php");
$t5 = Thread::create("t5.php");
while ($t2->isActive() || $t3->isActive() || $t4->isActive() || $t5->isActive()) {
echo $t2->listen();
echo $t3->listen();
echo $t4->listen();
echo $t5->listen();
}
$t2->close();
$t3->close();
$t4->close();
$t5->close();
echo "Main thread done\n";

No quiero hacer mucho énfasis en la clase, si quieren ver su implementación y como utilizarla vayan al link original. Prefiero echarle mi imaginación y tratarle de sacar provecho…. ¿Para que se podría utilizar esta clase?

Botnet de php scripts: Obviamente siempre me voy por el lado malo de las cosas(pero no tan severo como otros xD), hace poco observaba que en un foro de h4×0rs alguien mostraba un script en PHP para hacer una petición a una página y llamaba a los usuarios a subirlo a una gran cantidad de servidores para después ser llamados y efectuar un ataque DOS. Se me hizo interesante, el único problema que veia era como llamar a todos los scripts al mismo tiempo, o al menos en un tiempo razonable. Si se utilizara este “truco” podrían hacerse muchas cosas Interesantes.

Mi idea es que el script principal mande llamar a otros cuatro o cinco script mas…..y estos a otros cuatro o cinco script mas……… asi unas cinco veces mas (WTF!). Gráficamente seria algo asi.

Botnet PHP scripts

Quizás la imagen ya le quito la poca seriedad que tenia este articulo, pero en fin espero que me haya podido explicar(.. y es lo que pude hacer).

La verdad no se si alguien lo haya hecho de otra manera, y también es el único ejemplo que se me ocurriría hacer con estos “Threads en PHP”, ya que el proceso siempre es el mismo cuando navegas, petición, visualización, parada… petición, visualización, parada… y lo que no se lo dejamos a AJAX.



6 comentarios to “Multi-threading en PHP y otra Botnet”

  1. pablasso dice:

    bonito bonito.. espero que para el php6 recapaciten y lo metan al roadmap que se necesita!

  2. Masiosare dice:

    Ja! Justamente el viernes pasado estaba trabajando en una implementacion basica de threads en php

    Mi problema era mucho mas mundano, poco menos maligno. En la oficina queriamos poner un servidor de musica democratico. Todos podian decir que canciones escuchar, pero evidentemente solo uno podia poner musica al mismo tiempo, por lo que necesitaba la nocion de listas y de threads sincronizadas para que uno no fuera a pisar el trabajo de otro. Creo que tenemos muy poco que hacer, verdad? =P

    No he visto la implementacion que tu mencionas, pero mi idea era ocupando semaforos (que php si tiene) y emulando las threads con procesos (que apache lo puede hacer sin problemas). En mi caso yo no requeria demasiada comunicacion entre procesos, con que yo supiera que un “thread” estaba vivo, era suficiente, por lo que mi solucion era facil.

    Le voy a echar un ojo a la implementacion a ver que tal esta. Gracias!

  3. Michoacano dice:

    Sale xD, me dicen que postie código, pero pues tampoco quiero script kiddies aquí y no se trata de eso.

  4. Pedro dice:

    Ja…el kid no quiere kids

  5. David Valdez dice:

    Jajajajaja xD

    ni modos Julio, eso de “hazte fama y echate a dormir”es una verdad universal.

    A VER QUE NADIE SABE QUE EL MICHOS YA SE REGENERO?

    :D

  6. velaAgorearly dice:

    locality forever viagra termically fleetingly

Escribe tu comentario