1 pontos por GN⁺ 2025-04-11 | 1 comentários | Compartilhar no WhatsApp
  • Susam Pal manteve no ar por 24 horas, em um servidor Debian, um loop de beeper com netcat acessível a qualquer pessoa; a cada conexão recebida, ele respondia com ok e fazia o terminal emitir quatro bipes
  • O one-liner recebe conexões com nc, enquanto um loop for em segundo plano imprime o caractere de campainha; em seguida, o loop while externo inicia imediatamente um novo processo para aceitar a próxima conexão
  • No primeiro experimento, houve 4.761 conexões em 24 horas, totalizando 19.044 bipes, e era possível participar com vários clientes, como navegador, nc, curl, ssh e irssi
  • Depois que o texto foi compartilhado no Hacker News em 10 de abril de 2025, foram registradas 352.831 conexões em 14 horas e 1.396 endereços de cliente únicos, elevando o total para 1.411.324 bipes
  • Na segunda rodada, o cliente anonimizado C0276 gerou 327.209 conexões e respondeu pela maior parte do tráfego, mostrando como a exposição no HN ampliou drasticamente a escala de um pequeno experimento brincalhão

Beeper de terminal feito com netcat

  • O experimento consistia em um pequeno loop com netcat para aceitar conexões arbitrárias em um servidor Debian
    • Quando um cliente se conectava, era enviada a mensagem ok
    • A conexão era encerrada imediatamente
    • O terminal emitia quatro bipes
  • O comando executado foi o seguinte
while true; do (echo ok | nc -q 1 -vlp 8000 2>&1; echo; date -u) | tee -a beeper.log; for i in 1 2 3 4; do printf '\a'; sleep 1; done & done
  • O comando nc envia ok e depois fecha a conexão, enquanto o loop for interno imprime o caractere de campainha quatro vezes de forma assíncrona em um shell em segundo plano
  • O loop while externo executa rapidamente um novo processo nc, permitindo receber a próxima conexão
  • No tópico do HN, foi explicado que qualquer forma de conexão à porta 8000 produziria quatro bipes
    • Ex.: navegador web
    • Ex.: nc HOST 8000
    • Ex.: curl HOST:8000
    • Ex.: ssh HOST -p 8000
    • Ex.: irssi -c HOST -p 8000

Explosão de conexões duplicada no HN

  • O primeiro experimento foi uma brincadeira em resposta a um tópico do HN sobre um sistema de notificação DIY curioso
    • A discussão original está no HN thread
    • Houve 4.761 conexões em 24 horas
    • Como cada uma acionava quatro sons, isso resultou em 19.044 bipes de terminal no total
    • Os dados estão em beeper.log
  • Depois que este texto foi compartilhado no Hacker News em 10 de abril de 2025, as conexões dispararam novamente
    • Foram registradas 352.831 conexões em 14 horas
    • Havia 1.396 endereços de cliente únicos
    • O total de bipes chegou a 1.411.324
    • Os dados estão em beeper2.log
  • Grande parte do tráfego do segundo experimento parece ter vindo de um loop persistente de cliente que continuava se conectando ao loop do beeper
    • O cliente anonimizado C0276 fez 327.209 conexões, o maior volume
    • O segundo mais ativo, C0595, registrou 6.771 conexões
    • Havia 491 clientes que se conectaram exatamente uma vez
    • As contagens de conexões por cliente estão em beeperclient2.log
  • Na primeira rodada, alguns leitores que viram o tópico de comentários geraram 4.761 conexões, mas a segunda rodada, que foi para a página inicial do HN, cresceu para 352.831 conexões
  • O experimento terminou como uma atividade de computação focada menos em resolver um problema e mais em explorar ideias curiosas e na diversão de outras pessoas participarem juntas

1 comentários

 
GN⁺ 2025-04-11
Opiniões no Hacker News
  • Legal. Sei que eu mesmo sou hipócrita; digo que escrevo no blog porque gosto e que virar escravo das métricas de análise é horrível, mas, na prática, quando vejo uma enxurrada de visitas em um projeto no qual passei algumas horas, esse feedback imediato é bom demais
    No fim, para satisfazer essa vontade de reconhecimento sem chegar a usar uma ferramenta de analytics completa, coloquei um contador de visitas simples no site. Ele não faz bip, mas talvez devesse

    • Como prova de quão corrompido eu fiquei, acabei de criar um script shell de uma linha que faz um bip quando o contador de visitas reage
      tail -F -n 0 /var/log/visitlog | while read ; do printf '\a' ; done
      Agora só falta alguém visitar meu site
    • Fiz algo parecido. Como eu não queria tirar a privacidade dos usuários, criei meu próprio contador simples em 2022 e escrevi no blog sobre meu Raspberry Pi 400 no meu quarto
      Acabei de baixar um arquivo de som de clique e vou ver se, ao adicioná-lo, eu enlouqueço
      https://joeldare.com/private-analtyics-and-my-raspberry-pi-4...
    • Fico me perguntando por que parece algo ruim querer ser reconhecido por um resultado no qual você passou algumas horas trabalhando
    • Antigamente, quando eu mantinha um site com uma página em PHP que eu mesmo tinha feito, havia um contador de visitas que, internamente, usava um arquivo de texto comum. Era surpreendentemente eficaz e foi uma experiência divertida
  • Meu comentário pouco conhecido, soterrado em uma thread comum do HN, apareceu no artigo \o/

    • Isso mostra que até um comentário bem soterrado pode gerar milhares de visualizações. Na prática, só uma parte das pessoas que leram o comentário deve ter reagido, e ainda assim essa parte passou de 4 mil pessoas, o que muda a perspectiva
  • Em vez de tocar o sino do Susam, vocês precisam ver o Fish Doorbell. É só avisar quando virem um peixe esperando para passar
    https://visdeurbel.nl/en/

    • O Fish Doorbell seria um ótimo caso de uso de IA, mas eu quero viver em um mundo em que voluntários assistem ao vídeo e tocam a campainha manualmente quando os peixes querem passar
  • Divertido. Dá para ver que ele está sendo bem amado agora
    while true; do; sleep 5; curl http://susam.net:8000 ; done
    curl: (1) Received HTTP/0.9 when not allowed
    curl: (1) Received HTTP/0.9 when not allowed
    curl: (7) Failed to connect to susam.net port 8000 after 11 ms: Couldn't connect to server
    curl: (56) Recv failure: Connection reset by peer
    curl: (7) Failed to connect to susam.net port 8000 after 8 ms: Couldn't connect to server
    curl: (1) Received HTTP/0.9 when not allowed
    curl: (7) Failed to connect to susam.net port 8000 after 8 ms: Couldn't connect to server
    curl: (1) Received HTTP/0.9 when not allowed
    curl: (7) Failed to connect to susam.net port 8000 after 10 ms: Couldn't connect to server
    curl: (7) Failed to connect to susam.net port 8000 after 11 ms: Couldn't connect to server
    curl: (56) Recv failure: Connection reset by peer
    curl: (56) Recv failure: Connection reset by peer
    curl: (1) Received HTTP/0.9 when not allowed

    • Você está realmente ajudando muito nessa situação…
    • É melhor adicionar a flag --http0.9 ao curl. Assim dá para dizer a ele que uma resposta que vem só com "ok", ou seja, apenas o corpo sem cabeçalhos, no estilo HTTP 0.9, não é um erro
    • Da próxima vez, tente usar watch -n 5
  • “No fim, este foi um experimento divertido. Inútil, mas divertido!”
    Esses experimentos são os melhores. Às vezes deles saem uma grande inovação, invenção, avanço médico ou ainda mais diversão

    • Há uma frase que ouvi antes, “não é porque é inútil que não tem valor”, e eu gosto muito dela
    • Um dia, você só quer saber se há café fresco na sala de descanso no fim do corredor; no dia seguinte, acaba inventando a webcam
      https://en.m.wikipedia.org/wiki/Trojan_Room_coffee_pot
  • Uma versão mais desenvolvida e mais antiga, de 2000, dessa ideia é o Peep (The Network Auralizer): uma ferramenta para monitorar a rede por meio de sons [1]
    Rodei isso por alguns meses no passado, e a sala parecia uma selva. Se eu rodasse a mesma configuração hoje, com o aumento de tráfego atual, provavelmente soaria como os portões do inferno
    Ainda dá para encontrá-lo no SourceForge, mas talvez seja preciso mexer um pouco nele ou usar uma VM rodando uma distribuição Linux antiga
    https://sourceforge.net/projects/peep/
    [1] https://www.usenix.org/legacy/publications/library/proceedin...

  • Por volta de 1998, havia um grupo procurando novos talentos técnicos para as startups em que tinha investido. Acho que eles publicaram em algum lugar como o /. que receberiam currículos via SMTP em uma porta não padrão, e usaram isso como mecanismo de filtragem.
    Não recebi resposta, mas acabei trabalhando no ano seguinte em uma das empresas em que eles tinham investido.

    • Na mesma época, também havia casos de vagas colocadas dentro do código-fonte HTML de sites. Eu não estava procurando uma vaga técnica na época, então não me candidatei, mas sempre achei aquilo inteligente.
      Os geeks interessados em desenvolvimento web viviam clicando em “View Source” em toda página interessante. Esse foi um dos principais caminhos pelos quais as técnicas iniciais de front-end web se espalharam, e era muito bom. Dava para copiar e colar o HTML, baixar manualmente o .css e outros recursos, rodar uma maquete do site offline e aprender os segredos. Toda a magia estava exposta, e, se você tivesse vontade de abrir a cortina, o futuro parecia infinitamente aberto.
    • De forma parecida, lembro de uma empresa que divulgou uma vaga via DNS. Acho que havia um registro TXT explicando como se candidatar de fato.
    • Fico curioso se aquela porta estava documentada ou se era preciso escanear por conta própria.
  • Aprendi hoje: uma resposta HTTP/0.9 que entrega só texto, sem cabeçalhos, ainda funciona em navegadores modernos. Legal.

    • Espero que continue assim para sempre. É útil para projetos pequenos.
  • Um pouco relacionado: uma vez transformei em animação o tráfego do HN que recebi por causa de um post em primeiro lugar.
    https://idiallo.com/blog/surviving-the-hug-of-death Desculpem, não é muito amigável para celular.
    Há uma quantidade surpreendente de bots. Na próxima vez que receber tráfego do HN, talvez seja divertido configurar algo assim.

    • “No começo, enfrentei manualmente, alimentando-os com dados falsos. Mas logo cansei. Então implantei minha arma secreta: uma bomba zip. Quando um bot acessava meu site, eu servia um pequeno arquivo compactado, e o servidor deles o baixava diligentemente e o descompactava, liberando alguns gigabytes de caos. Bum. Fim.”
      Mas fico me perguntando como ele sabia que aquele bot iria descompactar o arquivo. Se fosse um bot, eu imaginaria que ele copiaria o conteúdo HTML do artigo e talvez as imagens para colar no próprio site, mas não parece haver motivo para editar arquivos ou descompactá-los.
      A animação é impressionante, e a quantidade de bots é enorme.
  • Vendo que http://susam.net:8000 parou de responder, acho que hoje vai ter muito mais bipe.

    • Tentei umas 14 vezes e recebi ok 2 vezes ;)
    • Isto não é um servidor HTTP. Se você tentar com algo como nc ou telnet, pode receber uma resposta ok antes de a conexão cair.
      telnet -4 susam.net 8000