
Ferramenta DoS HULK portada para Go com alguns recursos adicionais.
Ferramenta de DoS HULK portada para a linguagem Go a partir do Python. Utilitário original em Python por Barry Shteiman http://www.sectorix.com/2012/05/17/hulk-web-server-dos-tool/ Apenas portei o código como estava, de forma rápida e sem refinamentos. Os nomes originais das funções foram mantidos e a lógica original foi, em sua maior parte, mantida também.
A principal diferença em relação à versão em Python reside na arquitetura do Golang para concorrência: as goroutines. O hulk.py executa uma nova thread para cada conexão no pool de conexões, usando assim centenas e milhares de threads. O hulk.go usa apenas goroutines leves, que utilizam somente dezenas de threads (normalmente o runtime do Golang inicia uma thread para cada núcleo de CPU + várias threads de serviço). Essa arquitetura permite que a versão em Golang consuma melhor os recursos e alcance um pool de conexões muito maior no mesmo hardware do que a versão em Python consegue.
Esta ferramenta é voltada para testes de estresse e pode realmente derrubar um servidor mal configurado ou um aplicativo mal feito. Use-a com cuidado.
Exemplos:
$ hulk -site http://example.com/test/ 2>/dev/null
$ HULKMAXPROCS=4096 hulk -site http://example.com 2>/tmp/errlog
Variáveis de ambiente úteis:
Mais detalhes: http://old.siberian.laika.name/node/7
Atualização: bem, criei este utilitário para uma tarefa pontual, quando eu apenas brincava um pouco com Golang. Surpreendentemente, descobri que este utilitário é usado por outras pessoas, ganhou algumas estrelas no GitHub e até foi incluído na distribuição BlackArch Linux. Então limpei um pouco o código.
Acho que poderia ser de domínio público, pois é apenas um trecho de código simples e curto, mas, por uma razão que já não me lembro, escolhi GPL para ele. Ok. Portanto, a versão em Go do HULK é licenciada sob GPLv3. Veja LICENSE.
Não tenho relação com o utilitário HULK original em Python. O utilitário HULK original é de autoria de Barry Shteiman (http://sectorix.com). Não há nenhuma referência a licença no código-fonte original; portanto, ele não está sob GPL. Pergunte ao autor do utilitário original sobre a licença.