
Herramienta DoS HULK portada a Go con algunas características adicionales.
Herramienta DoS HULK portada al lenguaje Go desde Python. Utilidad original en Python por Barry Shteiman http://www.sectorix.com/2012/05/17/hulk-web-server-dos-tool/ Simplemente porté el código tal cual, rápido y sucio. Los nombres de las funciones originales se mantienen y la lógica original también se conserva en su mayor parte.
La principal diferencia con la versión en Python radica en la arquitectura de Golang para la concurrencia: las goroutines. hulk.py ejecuta un hilo nuevo por cada conexión en el grupo de conexiones, por lo que usa cientos y miles de hilos. hulk.go solo usa goroutines ligeras que utilizan apenas decenas de hilos (normalmente el runtime de golang inicia un hilo por núcleo de CPU más varios hilos de servicio). Esta arquitectura permite que la versión en golang consuma mejor los recursos y alcance un grupo de conexiones mucho mayor en el mismo hardware del que puede alcanzar la versión en Python.
Esta herramienta está pensada para pruebas de estrés y puede realmente tumbar un servidor mal configurado o una aplicación mal hecha. Úsela con cuidado.
Ejemplos:
$ hulk -site http://example.com/test/ 2>/dev/null
$ HULKMAXPROCS=4096 hulk -site http://example.com 2>/tmp/errlog
Variables de entorno útiles:
Más detalles: http://old.siberian.laika.name/node/7
Actualización: bueno, creé esta utilidad para una tarea puntual cuando solo jugaba un poco con golang. Sorprendentemente descubrí que esta utilidad es usada por otras personas, tiene algunas estrellas en github e incluso está incluida en la distribución de Linux BlackArch. Así que limpié un poco el código.
Creo que podría ser de dominio público porque es solo un fragmento de código simple y corto, pero por una razón que ya no recuerdo elegí GPL para ello. Okey. Así que la versión en Go de HULK está licenciada bajo GPLv3. Vea LICENSE.
No tengo relación con la utilidad original de HULK en Python. La utilidad original de HULK es autoría de Barry Shteiman (http://sectorix.com). No hay referencias a licencia en el código fuente original, por lo que no está bajo GPL. Pregunte al autor de la utilidad original sobre la licencia.