1 Punkte von GN⁺ 2025-04-11 | 1 Kommentare | Auf WhatsApp teilen
  • Susam Pal ließ auf einem Debian-Server rund um die Uhr eine für alle erreichbare netcat-Beeper-Schleife laufen, die bei jeder eingehenden Verbindung mit ok antwortete und vier Terminal-Töne auslöste
  • Der One-Liner nimmt Verbindungen mit nc an; eine for-Schleife im Hintergrund gibt anschließend das Bell-Zeichen aus, während die äußere while-Schleife sofort einen neuen Prozess für die nächste Verbindung startet
  • Im ersten Experiment gingen in 24 Stunden 4.761 Verbindungen ein, was insgesamt 19.044 Signaltöne ergab; mitmachen konnte man über verschiedene Clients wie Browser, nc, curl, ssh und irssi
  • Nachdem der Beitrag am 10. April 2025 auf Hacker News geteilt wurde, stieg das in 14 Stunden auf 352.831 Verbindungen und 1.396 eindeutige Client-Adressen an, also insgesamt 1.411.324 Signaltöne
  • In der zweiten Runde erzeugte der anonymisierte Client C0276 mit 327.209 Verbindungen den Großteil des Traffics, wodurch die HN-Reichweite den Umfang des kleinen Scherz-Experiments massiv vergrößerte

Ein mit netcat gebauter Terminal-Beeper

  • Das Experiment bestand aus einer kleinen netcat-Schleife auf einem Debian-Server, die beliebige Verbindungen annimmt
    • Wenn sich ein Client verbindet, wird die Meldung ok gesendet
    • Die Verbindung wird sofort geschlossen
    • Im Terminal ertönt viermal ein Signalton
  • Der ausgeführte Befehl lautete wie folgt
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
  • Der nc-Befehl sendet ok und schließt dann die Verbindung; die innere for-Schleife gibt im Hintergrund-Shellprozess asynchron viermal das Bell-Zeichen aus
  • Die äußere while-Schleife startet schnell einen neuen nc-Prozess, damit die nächste Verbindung angenommen werden kann
  • Im HN-Thread wurde erklärt, dass bei jeder Art von Verbindung zu Port 8000 vier Signaltöne ausgelöst werden
    • Beispiel: Webbrowser
    • Beispiel: nc HOST 8000
    • Beispiel: curl HOST:8000
    • Beispiel: ssh HOST -p 8000
    • Beispiel: irssi -c HOST -p 8000

Zweimal anschwellender Verbindungsansturm auf HN

  • Das erste Experiment war ein scherzhafter Versuch als Reaktion auf einen HN-Thread über ein seltsames DIY-Benachrichtigungssystem
    • Die ursprüngliche Diskussion steht im HN thread
    • In 24 Stunden gab es 4.761 Verbindungen
    • Bei vier Tönen pro Verbindung ergaben sich insgesamt 19.044 Terminal-Signaltöne
    • Die Daten stehen in beeper.log
  • Nachdem dieser Beitrag am 10. April 2025 auf Hacker News geteilt wurde, stieg die Zahl der Verbindungen erneut stark an
    • In 14 Stunden wurden 352.831 Verbindungen registriert
    • Es gab 1.396 eindeutige Client-Adressen
    • Insgesamt kam es zu 1.411.324 Signaltönen
    • Die Daten stehen in beeper2.log
  • Ein großer Teil des Traffics im zweiten Experiment scheint von einer dauerhaft laufenden Client-Schleife gekommen zu sein, die ständig Verbindungen zur Beeper-Schleife aufbaute
    • Der anonymisierte Client C0276 erzeugte mit 327.209 die meisten Verbindungen
    • Der zweitaktivste Client C0595 verzeichnete 6.771 Verbindungen
    • 491 Clients verbanden sich genau ein einziges Mal
    • Die Verbindungszahlen pro Client stehen in beeperclient2.log
  • In der ersten Runde kamen 4.761 Verbindungen von einigen Lesern des Kommentar-Threads, doch die zweite Runde auf der HN-Startseite wuchs auf 352.831 an
  • Das Experiment endete als eine Form von Computing, die weniger auf Problemlösung als auf die Erkundung seltsamer Ideen und den Spaß an gemeinsamer Teilnahme anderer ausgerichtet war

1 Kommentare

 
GN⁺ 2025-04-11
Meinungen auf Hacker News
  • Cool. Ich weiß, dass ich selbst heuchlerisch bin; ich sage, ich schreibe den Blog, weil es mir Spaß macht, und dass es furchtbar ist, zum Sklaven von Analytics-Metriken zu werden, aber in Wirklichkeit ist das unmittelbare Feedback einfach großartig, wenn ein Projekt, in das man ein paar Stunden gesteckt hat, plötzlich Besucher anzieht.
    Am Ende habe ich meiner Seite einen einfachen Besucherzähler verpasst, um mein Bedürfnis nach Anerkennung zu stillen, ohne gleich zu einem vollständigen Analytics-Tool zu greifen. Er macht keinen Piepton, aber vielleicht sollte er das.

    • Als Beweis dafür, wie tief ich gesunken bin, habe ich gerade ein einzeiliges Shell-Skript gebaut, das piept, wenn der Besucherzähler reagiert.
      tail -F -n 0 /var/log/visitlog | while read ; do printf '\a' ; done
      Jetzt muss nur noch jemand meine Seite besuchen.
    • Ich habe etwas Ähnliches gemacht. Weil ich den Nutzern ihre Privatsphäre nicht nehmen wollte, habe ich 2022 selbst einen einfachen Zähler gebaut und im Blog über meinen Raspberry Pi 400 im Schlafzimmer geschrieben.
      Ich habe mir gerade eine Klicksound-Datei heruntergeladen und will mal sehen, ob ich durchdrehe, wenn ich sie einbaue.
      https://joeldare.com/private-analtyics-and-my-raspberry-pi-4...
    • Ich frage mich, warum es sich schlecht anfühlen sollte, für etwas, in das man mehrere Stunden gesteckt hat, Anerkennung haben zu wollen.
    • Als ich früher meine Website mit selbstgebauten PHP-Seiten betrieben habe, hatte ich intern einen Besucherzähler, der eine ganz normale Textdatei verwendete. Erstaunlich effektiv, und es war eine spaßige Erfahrung.
  • Mein wenig bekannter Kommentar, der in einem gewöhnlichen HN-Thread unterging, wurde im Artikel erwähnt \o/

    • Das zeigt, dass selbst ziemlich untergegangene Kommentare Tausende Aufrufe erzeugen können. Tatsächlich hat wohl nur ein Teil der Leute, die den Kommentar gelesen haben, reagiert, und dieser Teil waren schon über 4.000 Menschen — das verändert die Perspektive.
  • Statt Susams Glocke zu läuten, sollte man sich die Fish Doorbell ansehen. Wenn man sieht, dass ein Fisch darauf wartet, vorbeizukommen, gibt man Bescheid.
    https://visdeurbel.nl/en/

    • Die Fish Doorbell wäre ein großartiger KI-Anwendungsfall, aber ich möchte in einer Welt leben, in der Freiwillige das Video anschauen und selbst klingeln, wenn ein Fisch vorbeischwimmen möchte.
  • Lustig. Man sieht, dass das gerade ziemlich viel Liebe bekommt.
    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

    • Du hilfst dieser Situation wirklich sehr …
    • Es ist besser, curl das Flag --http0.9 hinzuzufügen. Damit kann man ihm mitteilen, dass eine Antwort, die nur "ok" enthält — also HTTP-0.9-Stil mit nur Body und ohne Header — kein Fehler ist.
    • Nächstes Mal kannst du watch -n 5 verwenden.
  • „Am Ende war es ein lustiges Experiment. Nutzlos, aber lustig!“
    Solche Experimente sind die besten. Manchmal entstehen daraus gewaltige Innovationen, Erfindungen, medizinische Fortschritte — oder noch mehr Spaß.

    • Ich habe einmal den Satz gehört: „Nutzlos heißt nicht wertlos.“ Den mag ich wirklich sehr.
    • An einem Tag wollte man nur herausfinden, ob im Pausenraum am Ende des Flurs frischer Kaffee steht, und am nächsten Tag hat man die Webcam erfunden.
      https://en.m.wikipedia.org/wiki/Trojan_Room_coffee_pot
  • Eine weiterentwickelte und zugleich alte Version dieser Idee aus dem Jahr 2000 ist Peep (The Network Auralizer): ein Tool zur Netzwerküberwachung per Klang [1].
    Ich hatte es früher ein paar Monate laufen, und mein Wohnzimmer klang wie ein Dschungel. Wenn man dieselbe Konfiguration mit dem heutigen Traffic-Wachstum laufen ließe, klänge es vermutlich wie das Tor zur Hölle.
    Man findet es noch auf SourceForge, aber man muss es eventuell etwas anfassen oder eine VM mit einer alten Linux-Distribution betreiben.
    https://sourceforge.net/projects/peep/
    [1] https://www.usenix.org/legacy/publications/library/proceedin...

  • Um 1998 herum gab es eine Gruppe, die für die Startups, in die sie investiert hatte, neue technische Leute suchte. Vermutlich posteten sie auf Seiten wie /. , dass sie Lebensläufe per SMTP auf einem nicht standardmäßigen Port annehmen würden, und nutzten das als Filter.
    Eine Antwort bekam ich nicht, aber im Jahr darauf landete ich schließlich bei einem der Unternehmen, in die sie investiert hatten.

    • Etwa zur selben Zeit gab es auch Fälle, in denen Stellenanzeigen im HTML-Quelltext einer Website versteckt wurden. Ich war damals nicht auf der Suche nach einer technischen Stelle und habe mich daher nicht beworben, fand das aber immer clever.
      Geeks mit Interesse an Webentwicklung klickten bei jeder interessanten Seite ständig auf „View Source“. Das war einer der wichtigsten Wege, über die sich frühe Web-Frontend-Techniken verbreiteten, und es war großartig. Man konnte HTML kopieren und einfügen, .css und andere Ressourcen direkt herunterladen, offline ein Modell der Website laufen lassen und dabei ihre Geheimnisse lernen. Die ganze Magie lag offen da, und wenn man nur bereit war, hinter den Vorhang zu schauen, schien die Zukunft grenzenlos offen.
    • Ähnlich erinnere ich mich an ein Unternehmen, das Stellenanzeigen per DNS veröffentlichte. Ich glaube, es gab einen TXT-Record, der erklärte, wie man sich tatsächlich bewerben sollte.
    • Ich frage mich, ob dieser Port dokumentiert war oder ob man ihn selbst scannen musste.
  • Heute gelernt: HTTP/0.9-Antworten, die nur Text ohne Header liefern, funktionieren auch in modernen Browsern noch. Cool.

    • Ich hoffe, das bleibt für immer so. Für kleine Projekte ist das nützlich.
  • In losem Zusammenhang damit: Ich habe den HN-Traffic, den ich durch einen Beitrag auf Platz 1 bekam, einmal als Animation umgesetzt.
    https://idiallo.com/blog/surviving-the-hug-of-death Sorry, nicht besonders mobilfreundlich.
    Es gibt erstaunlich viele Bots. Wenn ich das nächste Mal HN-Traffic bekomme, wäre es wohl interessant, so etwas einzurichten.

    • „Anfangs habe ich mich manuell gewehrt und sie mit Fake-Daten gefüttert. Aber das wurde schnell langweilig. Also setzte ich meine Geheimwaffe ein: eine Zip-Bombe. Wenn ein Bot auf meine Seite zugriff, lieferte ich ihm eine kleine komprimierte Datei, und ihre Server luden sie eifrig herunter, entpackten sie und lösten dabei mehrere Gigabyte Chaos aus. Boom. Ende.“
      Ich frage mich allerdings, woher er wusste, dass dieser Bot die Datei entpacken würde. Bei einem Bot würde ich erwarten, dass er den HTML-Inhalt des Artikels und vielleicht die Bilder kopiert und auf der eigenen Seite einfügt; es scheint keinen Grund zu geben, Dateien zu bearbeiten oder zu entpacken.
      Die Animation ist beeindruckend, und die Zahl der Bots ist enorm.
  • Da http://susam.net:8000 nicht mehr antwortet, dürfte es heute noch viel mehr Pieptöne geben.

    • Nach etwa 14 Versuchen habe ich zweimal ok bekommen ;)
    • Das ist kein HTTP-Server. Wenn man es mit etwas wie nc oder telnet versucht, kann man vor dem Verbindungsabbruch eine ok-Antwort bekommen.
      telnet -4 susam.net 8000