Windows Netzwerke topologisieren – Linuxstyle

Wenn wir in einem Firmennetz den PCs per DHCP IPs zuweisen, dann kennt nur der DHCP Server die aktuelle Zuordnung aller von Ihm verwalteten Addresseranges und die kann sich dynamisch ändern. Also brauchen wir eine Methode wie wir eine aktuelle Übersicht bekommen.

Windows Netzwerke topologisieren – Linuxstyle

Oh ja.. endlich mal was ohne Corona schreiben, wie ich das vermisst habe 😀

Wir brauchen:

Einen Linux PC
NMAP Scanner
GREP, SED, AWK
nmblookup

nmblookup bekommt man für Fedora im Paket „samba-client“ und nmap natürlich im Paket „nmap„, wer hätte es gedacht 😉

Wir nehmen jetzt mal an, daß wir nur ein Netz haben: 192.168.1.0/24 und, daß Windows RDP offen hat, damit man da auch Remote drauf kann. RDP hat den Port 3389. Das hat den Vorteil, daß wir nur die PCs mit Port 3389 finden müssen:

nmap -n -sS -p 3389 192.168.1.0/24

das sieht dann so aus:

Nmap scan report for 192.168.1.24
Host is up (0.00040s latency).
PORT STATE SERVICE
3389/tcp open ms-wbt-server
MAC Address: A2:54:20:26:3D:7F (Unkown)

Aus der Ausgabe brauchen wir nur die mit offenen RDP Ports, also filtern wir nach „open“, es sei denn, Ihr habt eine Installation bei der das eingedeutscht wurde. Da müßt Ihr selbst ran 😉

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open

Jetzt habe ich dem ersten grep nach „open“ gesagt, es soll auch die 3 Zeilen vor dem Treffer ausgeben. Dies ist wichtig, weil da die IP drin steht. Als nächstes  filter wir auf die IP Zeile:

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open | grep „scan report“

und werfen alles außer der IP weg:

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open | grep „scan report“ | sed -e „s/^.*for //g“

Diese Ausgabe müssen wir um den eigentlichen Befehl so erweitern, daß wir die Informationen vom PC bekommen und das geht mit „nmblookup -A <ip>“:

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open | grep „scan report“ | sed -e „s/^.*for //g“ | awk ‚{print „nmblookup -A „$1;}’|bash

..Das Ergebnis der Mühe wert..

Das Ergebnis sieht dann so aus:

Looking up status of 192.168.1.2
W10-HEIST <00> – B <ACTIVE>
MOVIE <00> – <GROUP> B <ACTIVE>
W10-HEIST <20> – B <ACTIVE>

MAC Address = 52-54-00-48-D1-17

Looking up status of 192.168.1.87
No reply from 192.168.1.9

Looking up status of 192.168.1.188
AUTOCAD02 <00> – B <ACTIVE>
AUTOCAD02 <20> – B <ACTIVE>
INGENIEURE <00> – <GROUP> B <ACTIVE>

MAC Address = 90-1B-0E-53-5E-07

Jetzt habe ich die IP, den Namen, die Arbeitsgruppe und die Macaddresse von jedem Windows PC mit RDP. Jederzeit aktualisierbar. Live 🙂

Das war Teil 1 der Aufgabe, denn für den Fall, für den ich das so gemacht habe, war das das gewünschte Ergebnis. Wir können aber noch mehr machen. Wir haben die IP und die MAC eines PCs.

Was wäre, wenn man damit die Topologie ermitteln könnte?

Vorweg: Es gibt andere Methoden, z.b. snmp Abfragen am Switch und Router, die sind etabliert und funktionieren. Allerdings ist son snmpwalk abhängig davon was die einzelnen Geräte anbieten, da muß man einiges an Zeit reinstecken, wenn man das selbst bauen will.

Zeit ist aber das richtige Stichwort 🙂 Pakete laufen im Netz abhängig von der Strecke zwischen den PCs unterschiedlich lange. Wie bekomme ich das raus? Richtig mit Ping:

# ping -c 20 192.168.1.25
PING 192.168.1.25 (192.168.1.25) 56(84) bytes of data.
64 bytes from 192.168.1.25: icmp_seq=1 ttl=64 time=0.215 ms
64 bytes from 192.168.1.25: icmp_seq=2 ttl=64 time=0.195 ms
64 bytes from 192.168.1.25: icmp_seq=3 ttl=64 time=0.209 ms
64 bytes from 192.168.1.25: icmp_seq=4 ttl=64 time=0.204 ms
64 bytes from 192.168.1.25: icmp_seq=5 ttl=64 time=0.166 ms
64 bytes from 192.168.1.25: icmp_seq=6 ttl=64 time=0.204 ms
64 bytes from 192.168.1.25: icmp_seq=7 ttl=64 time=0.253 ms
64 bytes from 192.168.1.25: icmp_seq=8 ttl=64 time=0.158 ms
64 bytes from 192.168.1.25: icmp_seq=9 ttl=64 time=0.200 ms
64 bytes from 192.168.1.25: icmp_seq=10 ttl=64 time=0.184 ms
64 bytes from 192.168.1.25: icmp_seq=11 ttl=64 time=0.199 ms
64 bytes from 192.168.1.25: icmp_seq=12 ttl=64 time=0.249 ms
64 bytes from 192.168.1.25: icmp_seq=13 ttl=64 time=0.264 ms
64 bytes from 192.168.1.25: icmp_seq=14 ttl=64 time=0.225 ms
64 bytes from 192.168.1.25: icmp_seq=15 ttl=64 time=0.297 ms
64 bytes from 192.168.1.25: icmp_seq=16 ttl=64 time=0.255 ms
64 bytes from 192.168.1.25: icmp_seq=17 ttl=64 time=0.290 ms
64 bytes from 192.168.1.25: icmp_seq=18 ttl=64 time=0.328 ms
64 bytes from 192.168.1.25: icmp_seq=19 ttl=64 time=0.212 ms
64 bytes from 192.168.1.25: icmp_seq=20 ttl=64 time=0.229 ms

— 192.168.1.25 ping statistics —
20 packets transmitted, 20 received, 0% packet loss, time 19360ms
rtt min/avg/max/mdev = 0.158/0.226/0.328/0.047 ms

Wenn wir also statt nmblookup ping einbauen, können wir jeden dieser Pcs messen:

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open | grep „scan report“ | sed -e „s/^.*for //g“ | awk ‚{print „ping -c 20 „$1;}’|bash | grep -E „(statistics|rtt)“ | sed -e „s/— //g“ -e „s/ ping.*$//g“ -e „s/rtt //“ -e „s/\/max\/mdev = /:/g“ -e „s/\//:/g“ | awk -F „:“ ‚{print $1″=“$3″ „$2″=“$4;}‘ | sed -e „s/= =//“

da kommt sowas bei raus:

192.168.1.21
min=0.624 avg=0.851

Wert ermittelt, jetzt muß er bewertet werden..

Jetzt kann man sich überlegen, inwieweit Ihr dem MIN Wert traut, denn der ist stark vom Netzwerkverkehr abhängig, wo hingegen avg so etwas bedingt ausbügelt. Man sollte die Messung zu verschiedenen Zeiten wiederholen und dann die Ergebnisse zusammenrechnen. Für diese Prinzipdarstellung reichts auch erstmal so 😉

Wir können aus den MIN-Daten folgendes ermitteln: Alle PCs mit der gleichen Antwortzeit sind gleich weit weg, oder der antwortende PC ist ne alte Krücke 😉 Gleich weit weg bedeutet in Wirklichkeit: diese PCs könnten in einem Zimmer stehen, aber die könnten auch in verschiedenen Zimmern stehen, die über gleich lange Kabel angeschlossen sind. Das ist der Knackpunkt.

Üblich ist, daß im Serverraum ein Patchfeld ist, von dem die Kabel in die einzelnen Regionen des Gebäudes abzweigen. Der Vorteil dabei ist der Datendurchsatz und das man PortSense benutzen kann, der Nachteil, daß viel mehr Kabel gezogen werden, als nötig wären.

Datenaustausch in einem Netzwerk

Jetzt überlegen wir mal, welchen Test wir noch machen können… hmm.. IP.. Name… MACAdressse… MACAdresse… hey, wir haben eine MACAdresse vom PC direkt.. vergleichen wir die doch mal mit dem was im Arptable steht 😀

Erstmal erklären: Der Datenaustausch findet in einem Netz nicht zwischen IPs statt, sondern zwischen MAC Adressen. Das sind die Adressen der Netzwerkkarten die da zum Einsatz kommen. Haben wir eine direkte Verbindung zu dem Austauschpartner, hat die IP im Arpcache die gleiche Macadresse wie die per nmblookup mitgeteilt wurde. Im ARP Cache, erreichbar über den Befehl apr, bekommen wir die für die Kommunikation zur IP genutzte Mac auf dieser Seite der Verbindung:

Looking up status of 192.168.1.51

MAC Address = B1-6E-FF-D3-42-B4

# arp |grep 1.51
192.168.1.51 ether b1:6e:ff:d3:42:b4 C eth0

Ist da aber ein anderes Gerät dazwischen ( z.B. Router ), dann hat das Arpcache bei uns eine andere MAC als das Gerät uns per nmblookup mitgeteilt hat. Hinweis: Switche geben Ihre eigenen MAcs nicht preis, die sind transparent was das betrifft. Ein Router könnte jetzt also ein Netzumsetzer, eine Bridge, Tunnel oder ähnliches sein:

Looking up status of 192.168.1.51

MAC Address = B1-6E-FF-D3-42-B4

# arp |grep 1.51
192.168.1.51 ether  A0:43:3d:3A:13:45 C eth0

Wenn man jetzt also mehrere IPs mit der gleichen MAC hat, weiß man, daß die zusammen auf entweder einer Hardware laufen, dann wären die Pingzeiten alle gleich, oder die laufen alle durch einen Router/Tunnel und haben unterschiedliche Laufzeiten, dann stehen die hinter dem Router an verschiedenen Stellen.

Andere Ergebiskombinationen

Jetzt gibts noch die Kombi, daß die Laufzeit für einige IP gleich ist, die Mac auch, aber die Mac noch bei anderen IPs auftaucht, die andere Laufzeiten haben, dann sind die IPs mit gleicher Laufzeit auch auf einer anderen Hardware hinter so einem Router platziert und der Rest steht irgendwo anders.

Wenn man nur von einem Standort aus scannt, bekommt man möglicherweise einen falschen Eindruck, weil wir die „Welt“ nur zweidimensional sehen. Wenn unserer erstes Zwischengerät seine MAC anzeigt, könnten da noch einige andere hinter liegen, die wir nicht mehr sehen können. Deswegen ist eine automatische Topologie zumindest mit dieser simplen Methode hier, bei komplexen Setups nicht ausreichend genau.

Das war natürlich jetzt nur eine theoretische Überlegung, ich hatte ja gesagt, daß es da etablierte Methoden gibt. Wann könnte das also noch mal wichtig sein? z.B. wenn man mit LAHA Audio zeitgleich ans Ziel streamen will: Multi-Netzwerk-Lautsprecher mit Linux

Hier wäre, wenn wir es schon eingebaut hätten, die Laufzeit eine wichtige Komponente, damit die Streams alle zeitgleich zu hören sind. Vielleicht baue ich das ja mal ein. Ich habe gerade erst AndroidStudio wieder zum Leben erwecken können 😀

Anmerkungen:

Alle MACs sind frei erfunden. Je nach Aufgabenstellung kann man auch andere Ports als Scankriterium für Nmap oder gleich einen PING-Scan benutzen. NMAP gibt u.U. einen aufgelösten Domainnamen zurück:

Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-19 13:14 CEST
Nmap scan report for android-501a417bc9ee518.fritz.box (192.168.0.39)
Host is up (0.090s latency).

PORT STATE SERVICE
445/tcp closed microsoft-ds
MAC Address: 6C:F1:76:2D:3B:AA (Samsung Electronics)

da müßt Ihr die SED Anweisungen entsprechend ändern oder nmap die „-n“ Option verpassen, sonst passieren skurille Dinge :DD

 

CoronaChroniken: Die liebe Meinung des Anderen

Hallo,

der Heise Verlag hat eine Meldung gebracht, wonach in der U/S-Bahn die Tracking-Apps, wegen physikalisch normalen Verhalten von HF-Funkwellen, keine saubere Entfernungsmessung machen können: heise.de – Kontaktverfolgung im ÖPNV . Da habe ich mir mal den Spaß gemacht und einige Kommentare gelesen.

CoronaChroniken: Die liebe Meinung des Anderen

Der Inhalt des Artikels spielt natürlich wieder mal unserer Argumentationsseite in die Hände, aber darum soll es nicht gehen. Die Kommentare waren viel aufschlussreicher. Um das Ergebnis vorwegzunehmen:

Argumente auf beiden Seiten Mangelware
(meistens) Links zu Quellen nicht vorhanden
Diffamierung an der Tagesordnung
Vorschriften werden missachtet, Missachtungen nicht geahndet
Häufigstes Zitat: „Die Idioten sind zu blöd…“ ( kommt von beiden Seiten 😉 )

Warum sollten wir bei dem Ergebnis noch mit einander reden? Beide Seiten glauben der anderen Seite eh nicht, weil alle in Ihren Blasen stecken. Nur falls das einer fragen will, ich habe keine Youtube / Facebook / Insta / Twitterblasen, weil ich da nicht mitspiele. Ich bekomme leider von beiden Seiten Links geschickt, so bleibt man halbwegs auf dem Laufenden,  was beide Extreme so von sich geben. Ich will es gar nicht beschönigen, auch wenn der Dr. Schiffmann nicht ganz unrecht hat, er erzählt auch viel Mist wenn das Interview lang ist.

Einer meinte „ÖPNV grenzt mittlerweile an versuchte Körperverletzung“ schreiben zu müssen 🙂 Da hat er nur insofern unrecht, als das es wohl alljährlich im Winter heißen müßte „ÖPNV ist Körperverletzung“. Wer das nur wegen Corona glaubt, dem ist IMHO gar nicht klar, wovon er da redet. Wurde das mal in der Bevölkerung thematisiert? Ja, seit ich denken kann, ist der ÖPNV besonders im Winter als Virenschleuder verschrien. Da hätte man also schon längst mal was machen können, wenn man denn etwas sinnvoll tun könnte. Sich jetzt wegen eines für die Masse harmlosen Viruses so aufzuregen ist unaufrichtig? Unsinnig? Falsch? Ich halte es mit „unangebracht“. Die Zahlen sind bislang eindeutig: Das ist kein „Killer“-virus.

Angst als Ursache

Ich würde mir echt wünschen, die ganze Diskussion und vor allem die politischen Entscheidungen würden nicht auf Angst basieren, sondern auf rationalem Denken. Politiker haben Angst, daß Ihnen jemand vorwirft, sie täten nicht genug. Die Pro-Maskenfraktion hat Angst zu sterben, auch wenn das Risiko gering ist. Die Contra-Maskenfraktion hat Angst wegen der Angst der Anderen durch Zwangsmaßnahmen leiden zu müssen. Die Fachfraktion hat Angst Ihre Jobs zu verlieren, wenn sie ihre Meinung aussprechen (habe ich jetzt oft genug unter der Hand gehört).  Ich denke, so kann man die Lage gerade gut beschreiben.

Ich muß echt wieder fordern, daß den nackten Zahlen mehr Beachtung geschenkt wird. Aber solange nur eine Seite die Massen beschallt, wird sich diese Angst nicht abbauen. Das Ende ist eine Angstspirale, die nur noch mit einer weiteren Blödsinnsaktion durchbrochen werden kann: Massenimpfungen für Leute, die gar kein hohes Risiko haben. Und das nur, weil die Masse Ihr persönliches Risiko aufgrund nicht-kommunizierter Gegenexpertisen viel zu hoch einschätzt.

Ich kann nur dringend empfehlen sich selbst mehr Infos von Fachleuten zu besorgen. Das mache ich ja auch, indem ich Fachleute frage, mir Fachquellen durchlese und Grundlagenstatistiken auswerte. Wenn man das tut, kommt man unweigerlich zu folgendem Gedanken: „Was machen wir(alle) hier eigentlich?“

Wer jetzt Quellen möchte, dem empfehle ich:

Bundesamt für Statistik – Destatis
Euromomo.eu
Bundesamt für Arzneimittel und Medizinprodukte

Auswertung Deutschland ( RKI ) :

https://experience.arcgis.com/experience/478220a4c454480e823b17327b2bf1d4/page/page_1/

Auswertung für Österreich und die EU:

https://npgeo-corona-npgeo-de.hub.arcgis.com/app/fd4701f7653543d4afdccd2a386e639b

https://npgeo-corona-npgeo-de.hub.arcgis.com/app/e6acbf22cc4f4b85949f59734244ba71

Als Medienkompetenzübung habe ich nur die Hauptseiten verlinkt, weil was man nicht selbst findet, hilft einem nicht. Wer dennoch komplette Links haben möchte, sucht bitte in meinem Blog, da gibt es genug.

 

CoronaChroniken: positiver Trend setzt sich fort

Liebe Maskierte,

den steigenden Infektionszahlen entgegen setzt sich der Trend bei den an Corona verstorbenen Menschen weiter fort.

CoronaChroniken: positiver Trend setzt sich fort

Das Bundesamt für Statistik hat heute die neusten Zahlen präsentiert und das bringt uns zu diesem Graphen:

Im Vergleich zur letzten Grafik konnte ich den recht kantigen Eindruck der wöchentlichen Sterbefälle soweit aufbereiten, daß er jetzt sinnvoll daherkommt. Dabei kommt die gleiche Glättungsformel wie bei den Infiziertenzahlen zum Einsatz.  IGx=Summe(Ix-4:Ix+2)/7

Die Verstorbenenzahlen werden vom Destatis auch im Nachhinein angepaßt, wenn „neue“ Tote dazu kommen. Da die Zahlen über die Coronatoten vom RKI stammen, welches ja auch offensichtlich nicht an Corona Verstorbene als Coroanopfer zählt, ist hier eine gewisse Unsicherheit der Zahlen nach oben vorhanden. Die wirklichen Zahlen werden vermutlich unter den vom RKI gemeldeten Zahlen liegen. Abschließend könnte uns das nur das RKI sagen.

Die Engländer haben das jetzt abgeschafft, weil es eben nicht sauber ist. Die WHO selbst hat übrigens ein einem Dokument festgelegt, daß Personen nicht als Covid-19 Tote zählen sollen, wenn ein Verkehrsunfall die Ursache war. Das wird in Beispielen explizit aufgeführt. Was als Covid-19 Toter zählen soll, wäre z.b. ein Krebspatient, bei dem Covid-19 getestet wurde und der im Krankenhaus an Lungenentzündung verstorben ist, da Covid-19 diese als letztes Glied in der Kette ausgelöst hat. Das hätte zwar jedes andere Virus aus, aber IMHO ist das noch nachvollziehbar.

Wie man allerdings bereits genesene Patienten noch als Covid-19 Tote zählen sollte, entzieht sich meinem Verständnis.

Für Euch zur Info: das RKI hat nicht mehr auf den Vorschlag reagiert, doch auch Verringerungen von Infektionszahlen markant im Dashboard darzustellen. Wundert jetzt niemanden, oder? 😉 Davon mal abgesehen, ist mir heute das erste mal ein Mitarbeiter eines Discounters komisch gekommen, weil ich aus nachvollziehbaren Gründen, die Maske nicht über der Nase hatte, obwohl ich schon seit Wochen so rumlaufe. Besagter Mitarbeiter meinte zwar mich ansprechen zu müssen, die Damen die ohne Abstandshalter unterwegs waren, wurden aber geflissentlich ignoriert. In solchen Situationen hört man dann auch, wie andere Ecken von Deutschland das so behandeln und einige Supermärkte an der Küste setzten das Maskentragen  scheinbar gar nicht durch.

Was ich vom Nutzen der Maske halte, wisst Ihr ja. Wer das zum persönlichen Schutz tragen möchte, weil er sich selbst nicht so kontrollieren kann, daß er/sie/es sich nicht an der Nase anfaßt, bitte schön, da hat es einen gewissen Nutzen, aber andere schützt man mit der Community-Maske halt nicht.

Falls Ihr noch was aktuelles zum Lachen haben wollt: https://www.n-tv.de/politik/Trump-nutzt-Briefwahl-selbst-article21972603.html

Ich habe gerade diesen spannenden Artikel im Spiegel gesehen: https://www.spiegel.de/psychologie/die-angst-vor-corona-ist-groesser-als-das-tatsaechliche-risiko-a-80c1a0c8-c5c3-46f2-ba45-22a6270e1db8

Money-Quote: „Die Befragten gaben im Schnitt an, dass sie mit einer Wahrscheinlichkeit von rund 26 Prozent im kommenden Jahr lebensbedrohlich an Covid-19 erkranken,… “

Das würde ein Verhältnis von 1:4 von schwer erkrankten zu Gesunden bedeuten, tatsächlich liegt das bei ca. 1:70 und das schließt schon Fälle mit ein, wo man nicht auf der Intensivstation landet, wenn man nur dies als schweren Verlauf zählen würde, dann wäre das Verhältnis sogar 1:300. Was lernen wir daraus: Die Leute informieren sich zu wenig, phantasieren sich dann was zusammen und sterben später an einer selbst erfüllenden Prophezeiung. Golgafrincham lässt grüßen*. Kein Wunder, daß Panikmacher noch mehr Zuspruch bekommen, wenn die sich in Panik befindlichen nicht selbst mitdenken wollen oder können.

Tut diesen Menschen einen Gefallen, gebt Ihnen mal die obige Grafik an die Hand, dann entspannen die sich vielleicht mal etwas.

Übrigens, in Österreich steigen die Infizierten Zahlen auch, aber die Sterbefälle steigen nicht im gleichen Maße an:

https://npgeo-corona-npgeo-de.hub.arcgis.com/app/fd4701f7653543d4afdccd2a386e639b

und hier die Fälle für Europa von der WHO Seite:

Quelle: https://npgeo-corona-npgeo-de.hub.arcgis.com/app/e6acbf22cc4f4b85949f59734244ba71

Nicht vergessen, das sind europaweite Zahlen, die liegen zusammen natürlich weit über dem was wir in Deutschland sehen. Und offensichtlich haben die aktuellere Datenquellen als das Destatis 😉

*) Der Lesetipp: Per Anhalter durch die Galaxis