1 puntos por GN⁺ 2025-04-11 | 1 comentarios | Compartir por WhatsApp
  • Susam Pal dejó abierto durante 24 horas en un servidor Debian un bucle de pitidos con netcat al que cualquiera podía conectarse; cada conexión recibía la respuesta ok y hacía sonar 4 pitidos en la terminal
  • El one-liner acepta conexiones con nc; un bucle for en segundo plano imprime el carácter de campana, y luego el bucle while externo lanza de inmediato un nuevo proceso para recibir la siguiente conexión
  • En el primer experimento hubo 4,761 conexiones en 24 horas, con un total de 19,044 pitidos, y se podía participar con varios clientes como un navegador, nc, curl, ssh e irssi
  • Después de compartir el artículo del 10 de abril de 2025 en Hacker News, en 14 horas se registraron 352,831 conexiones y 1,396 direcciones de cliente únicas, aumentando hasta un total de 1,411,324 pitidos
  • En la segunda ronda, el cliente anonimizado C0276 generó 327,209 conexiones y concentró la mayor parte del tráfico; la exposición en HN amplificó enormemente la escala de un pequeño experimento lúdico

Un beeper de terminal hecho con netcat

  • El experimento consistía en un pequeño bucle de netcat que aceptaba conexiones arbitrarias en un servidor Debian
    • Cuando un cliente se conectaba, enviaba el mensaje ok
    • Cerraba la conexión de inmediato
    • Hacía sonar 4 pitidos en la terminal
  • El comando ejecutado fue el siguiente
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
  • El comando nc envía ok y luego cierra la conexión, mientras que el bucle for interno imprime cuatro veces el carácter de campana de forma asíncrona en una shell en segundo plano
  • El bucle while externo ejecuta rápidamente un nuevo proceso nc para poder recibir la siguiente conexión
  • En el hilo de HN se indicaba que conectarse al puerto 8000 de cualquier forma produciría 4 pitidos
    • Ej.: navegador web
    • Ej.: nc HOST 8000
    • Ej.: curl HOST:8000
    • Ej.: ssh HOST -p 8000
    • Ej.: irssi -c HOST -p 8000

Dos picos de conexiones impulsados por HN

  • El primer experimento fue una prueba lúdica en respuesta a un hilo de HN sobre un extraño sistema de notificaciones DIY
    • La discusión original está en el hilo de HN
    • Durante 24 horas se produjeron 4,761 conexiones
    • Como cada conexión sonaba 4 veces, quedaron en total 19,044 pitidos de terminal
    • Los datos están en beeper.log
  • Después de compartir este artículo en Hacker News el 10 de abril de 2025, las conexiones volvieron a dispararse
    • En 14 horas se registraron 352,831 conexiones
    • Hubo 1,396 direcciones de cliente únicas
    • El total de pitidos llegó a 1,411,324
    • Los datos están en beeper2.log
  • Gran parte del tráfico del segundo experimento parece haber venido de un bucle persistente de cliente que seguía conectándose al beeper
    • El cliente anonimizado C0276 generó la mayor cantidad de conexiones, con 327,209
    • El segundo más activo, C0595, registró 6,771
    • Hubo 491 clientes que se conectaron exactamente una sola vez
    • El conteo de conexiones por cliente está en beeperclient2.log
  • En la primera ronda, algunos lectores que vieron el hilo de comentarios generaron 4,761 conexiones, pero la segunda ronda, tras llegar a la portada de HN, creció hasta 352,831
  • El experimento concluye como una actividad de computación enfocada más en explorar ideas extrañas y en la diversión de que otras personas participen que en resolver un problema

1 comentarios

 
GN⁺ 2025-04-11
Opiniones de Hacker News
  • Genial. Sé que soy hipócrita; digo que escribo el blog porque me gusta y que volverse esclavo de las métricas de analítica es horrible, pero en la práctica, cuando veo que llegan visitas a un proyecto al que le dediqué varias horas, ese feedback inmediato se siente demasiado bien.
    Al final, para satisfacer mi necesidad de reconocimiento sin llegar a usar una herramienta de analítica completa, le puse al sitio un contador de visitas simple. No hace bip, pero quizá debería hacerlo.

    • Como prueba de lo mucho que me he corrompido, acabo de crear un script de shell de una sola línea que hace bip cuando reacciona el contador de visitas.
      tail -F -n 0 /var/log/visitlog | while read ; do printf '\a' ; done
      Ahora solo falta que alguien visite mi sitio.
    • Yo hice algo parecido. Como no quería quitarles privacidad a los usuarios, en 2022 hice mi propio contador simple y escribí en el blog sobre mi Raspberry Pi 400 en mi cuarto.
      Acabo de descargar un archivo con sonido de clic y voy a probar si, al conectarlo, termino volviéndome loco.
      https://joeldare.com/private-analtyics-and-my-raspberry-pi-4...
    • Me pregunto por qué se siente como algo malo querer reconocimiento por algo a lo que le dedicaste varias horas.
    • Antes, cuando mantenía mi sitio con páginas PHP hechas por mí, tenía un contador de visitas que internamente usaba un archivo de texto común. Sorprendentemente funcionaba bien y fue una experiencia divertida.
  • Mi comentario poco conocido, que quedó enterrado en un hilo cualquiera de HN, apareció en el artículo \o/

    • Demuestra que incluso un comentario muy enterrado puede generar miles de vistas. En realidad, solo una parte de quienes leyeron el comentario habrá reaccionado, y aun así esa parte superó las 4 mil personas; eso cambia la perspectiva.
  • En vez de tocar la campana de Susam, deberían ver Fish Doorbell. Si ven que un pez está esperando para pasar, solo tienen que avisar.
    https://visdeurbel.nl/en/

    • Fish Doorbell sería un gran caso de uso de IA, pero quiero vivir en un mundo donde, cuando un pez quiere pasar, los voluntarios miran el video y tocan la campana manualmente.
  • Qué divertido. Se nota que ahora mismo está recibiendo bastante cariño.
    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

    • Sí que estás ayudando mucho con esta situación…
    • Conviene agregarle a curl la bandera --http0.9. Así le puedes indicar que una respuesta que solo devuelve "ok", es decir, solo cuerpo sin encabezados, al estilo HTTP 0.9, no es un error.
    • La próxima podrías usar watch -n 5.
  • “Al final, fue un experimento divertido. ¡Inútil, pero divertido!”
    Ese tipo de experimentos son los mejores. A veces de ahí salen una gran innovación, un invento, avances médicos o más diversión.

    • Hay una frase que escuché una vez: “que algo sea inútil no significa que no tenga valor”, y me encanta.
    • Un día solo querían saber si había café fresco en la sala de descanso al final del pasillo, y al día siguiente terminaron inventando la webcam.
      https://en.m.wikipedia.org/wiki/Trojan_Room_coffee_pot
  • Una versión más desarrollada y antigua, del año 2000, de esta idea es Peep (The Network Auralizer): una herramienta para monitorear la red con sonidos [1].
    La tuve corriendo durante unos meses y mi sala sonaba como una jungla. Si corriera la misma configuración con el aumento de tráfico de hoy, probablemente sonaría como las puertas del infierno.
    Todavía se puede encontrar en SourceForge, pero quizá necesite algunos ajustes o una VM con una distribución antigua de Linux.
    https://sourceforge.net/projects/peep/
    [1] https://www.usenix.org/legacy/publications/library/proceedin...

  • Alrededor de 1998, había un grupo que buscaba nuevo talento técnico para las startups en las que habían invertido. Creo que publicaron en algún lugar como /. que recibirían CVs por SMTP en un puerto no estándar, y lo usaron como mecanismo de filtro
    No recibí respuesta, pero al final terminé trabajando al año siguiente en una de las empresas en las que habían invertido

    • Por la misma época, también había casos en los que ponían ofertas de empleo dentro del código fuente HTML del sitio web. Yo no estaba buscando un puesto técnico en ese momento, así que no postulé, pero siempre me pareció ingenioso
      Los geeks interesados en el desarrollo web pulsaban constantemente “View Source” en cada página interesante. Esa fue una de las principales vías por las que se difundían las técnicas tempranas de frontend web, y era genial. Podías copiar y pegar el HTML, descargar a mano el .css y otros recursos, ejecutar una maqueta del sitio sin conexión y aprender sus secretos. Toda la magia estaba expuesta, y si tenías ganas de correr la cortina, el futuro parecía infinitamente abierto
    • Recuerdo una empresa que, de forma similar, publicaba ofertas de empleo mediante DNS. Creo que había un registro TXT que indicaba el método real para postular
    • Me pregunto si ese puerto estaba documentado o si había que escanearlo uno mismo
  • Hoy aprendí: una respuesta HTTP/0.9 que solo entrega texto, sin headers, todavía funciona en navegadores modernos. Genial

    • Ojalá siga así para siempre. Es útil para proyectos pequeños
  • Algo relacionado: una vez hice una animación del tráfico de HN que recibí por una publicación en el primer puesto
    https://idiallo.com/blog/surviving-the-hug-of-death perdón, no es muy amigable para móviles
    Hay una cantidad sorprendente de bots. La próxima vez que reciban tráfico de HN, podría ser divertido configurar algo así

    • “Al principio los enfrenté manualmente, alimentándolos con datos falsos. Pero me aburrí rápido. Así que desplegué mi arma secreta: una bomba zip. Cuando un bot accedía a mi sitio, le servía un pequeño archivo comprimido, y sus servidores lo descargaban con entusiasmo y lo descomprimían, liberando varios gigabytes de caos. Bum. Fin.”
      Pero me pregunto cómo sabía que ese bot iba a descomprimirlo. Si fuera un bot, esperaría que copiara el contenido HTML del artículo y las imágenes para pegarlos en su propio sitio, pero no parece que tuviera motivo para editar archivos o descomprimirlos
      La animación es impresionante, y la cantidad de bots es enorme
  • Viendo que http://susam.net:8000 dejó de responder, parece que hoy habrá muchos más pitidos

    • Lo intenté unas 14 veces y recibí ok 2 veces ;)
    • Esto no es un servidor HTTP. Si lo intentas con algo como nc o telnet, puedes recibir una respuesta ok antes de que se cierre la conexión
      telnet -4 susam.net 8000