Posts Tagged ‘cat’

Montag, 16. Dezember 2019

Netflix mit zehntausenden DNS-Queries pro Tag von meinem Sony KD-55AF8

Seit ein paar Monaten steht in unserer Wohnung der erste richtig „smarte“ TV, ein Sony KD-55AF8, auf welchem mittlerweile Android TV 8.0 installiert ist.

Seit gestern analysiere ich die DNS-Queries, die von Netzwerkgeräten im LAN an den lokalen DNS-Forwarder gestellt werden sowohl quantitativ (welche Domains werden am meisten aufgelöst, welches Gerät setzt die meisten Queries ab und in welcher Stunde des Tages gibt es die meisten Queries) sowie qualitativ (werden von SANS als Suspicious eingestufte Domains aufgelöst, was ein Zeichen für Malware-Befall sein könnte). Ich war nicht schlecht überrascht, dass ein TV-Gerät, welches allerhöchsten zwei von 24 Stunden im Tag „läuft“, der Spitzenreiter aller Queries ist. Ich zählte innerhalb von 24 Stunden sage und schreibe 90’498 Queries. Gefolgt wurde der TV vom Server selber, auf welchem der DNS-Server läuft mit 72’411 Queries. Auf Platz drei dann ein Client mit noch 7’162 Queries.

Heute nun nahm mich Wunder, was zum Teufel der TV ständig abzufragen hat. Hier das Resultat der Analyse der named-Logs vom Vortag (10.1.2.3 ist die (fiktive) IPs meines TVs):

$ cat queries.log.1 | grep 10.1.2.3 | cut -d "(" -f 2 | cut -d ")" -f 1 | sort | uniq -c | sort -rn
  13052 cdn-0.nflximg.com
   9112 nrdp51-appboot.netflix.com
   8777 api-global.netflix.com
   8564 uiboot.netflix.com
   8487 ichnaea.netflix.com
   8332 customerevents.netflix.com
   8262 nrdp.nccp.netflix.com
   6970 secure.netflix.com
   6886 nrdp.prod.ftl.netflix.com
   3115 push.prod.netflix.com
   1556 occ-0-593-769.1.nflxso.net
   1284 clients3.google.com
   1220 connectivitycheck.gstatic.com
   1196 www.google.com
   1195 mtalk.google.com
    994 nrdp52-appboot.netflix.com
    324 events.cid.samba.tv
    162 us.edge.bamgrid.com
    142 watch.product.api.espn.com
    118 clients4.google.com
    109 androidtvchannels-pa.googleapis.com
    105 footprints-pa.googleapis.com
     91 fling.cid.samba.tv
     83 www.youtube.com
     52 mdh-pa.googleapis.com
     41 clientservices.googleapis.com
     37 www.googleapis.com
     35 play.googleapis.com
     34 platform.cid.samba.tv
     28 android.googleapis.com
     13 www.gstatic.com
     12 youtubei.googleapis.com
     10 static.doubleclick.net
      7 www.netflix.com
      7 android.clients.google.com
      6 api-cdn.arte.tv
      5 lh3.googleusercontent.com
      5 antv-26-sony-bravia4kgbatv3-414000300.api.amazonvideo.com
      4 sdk.hockeyapp.net
      4 middleware.7tv.de
      4 devices.ted.com
      4 cdn-gl.imrworldwide.com
      4 android.googleapis.com
      3 zdf-cdn.live.cellular.de
      3 geoloc.arte.tv
      3 geocheck.sim-technik.de
      3 config.ioam.de
      3 cdn.meta.ndmdhs.com
      3 bam-sdk-configs.bamgrid.com
      2 sdk.imrworldwide.com
      2 api.meta.ndmdhs.com
      1 www.sony.net
      1 www.sony-asia.com
      1 voledevice-pa.googleapis.com
      1 update.biv.sony.tv
      1 time.android.com
      1 static-cdn.arte.tv
      1 sportscenter.api.espn.com
      1 secure.espncdn.com
      1 safebrowsing.googleapis.com
      1 r4---sn-1gieen7e.gvt1.com
      1 people-pa.googleapis.com
      1 ocsp.int-x3.letsencrypt.org
      1 metadata.erabu.sony.tv
      1 log.core.cloud.vewd.com
      1 isrg.trustid.ocsp.identrust.com
      1 images.erabu.sony.tv
      1 fls-na.amazon.com
      1 cloudfront.xp-assets.aiv-cdn.net
      1 cert-cdn.meta.ndmdhs.com
      1 cdn.espn.com
      1 browserjs-legacy.core.cloud.vewd.com
      1 broadband.espn.com
      1 bravia-cfgdst-ore-pro.bda.ndmdhs.com
      1 bdcore-apr-lb.bda.ndmdhs.com
      1 app-measurement.com
      1 api.erabu.sony.tv
      1 api.auth.adobe.com
      1 ajax.googleapis.com

Netflix führt die Statistik unangefochten an:

$ cat queries.log.1 | grep 10.1.2.3 | cut -d "(" -f 2 | cut -d ")" -f 1 | sort | uniq -c | sort -rn | grep -i "netflix\|nflx"
  13052 cdn-0.nflximg.com
   9112 nrdp51-appboot.netflix.com
   8777 api-global.netflix.com
   8564 uiboot.netflix.com
   8487 ichnaea.netflix.com
   8332 customerevents.netflix.com
   8262 nrdp.nccp.netflix.com
   6970 secure.netflix.com
   6886 nrdp.prod.ftl.netflix.com
   3115 push.prod.netflix.com
   1556 occ-0-593-769.1.nflxso.net
    994 nrdp52-appboot.netflix.com
      7 www.netflix.com

Von den täglich über 90’000 Queries entfallen über 90 Prozent auf Netflix-Domains:

$ cat queries.log.1 | grep 10.1.2.3 | grep -i "netflix\|nflx" | wc -l
84114

Dabei schauen wir — wenn überhaupt — mit der Netflix-App auf dem Apple TV 4K mit einer anderen IP Netflix, und nie mit der Android TV App.

Netflix, shame on you! Die Frage, wieso die Netflix-App das macht, konnte ich bis jetzt noch nicht beantworten, werde es hier aber nachtragen, sollte ich es erfahren.

Tags: , , , , , , , , , , , , , , , , ,
Labels: IT

10 Kommentare | neuen Kommentar verfassen

Montag, 2. März 2015

SAP-Datenexporte mit Unix-Tools filtern

Kürzlich stand ich vor der Aufgabe, einen 1.8 Millionen Zeilen umfassenden SAP-Export (SE16N, sowie Hintergründe) nach genau 16-stelligen Zahlenfolgen zu filtern. Anstelle Excel (kann sowieso nicht mit 1.8 Millionen Zeilen umgehen) oder das komplizierte ACL zu verwenden, entschied ich mich stattdessen, die Plaintext-Datei mit Unix-Tools zu filtern.

Inspiration dazu war der kürzlich auf Hacker News erschienene Artikel Command-line tools can be 235x faster than your Hadoop cluster.

Unter Windows klappt das problemlos, wenn man Github für Windows installiert hat – die Installation bringt nämlich eine Linux-Shell mitsamt den grundlegendsten Unix-Tools mit, so auch cat, grep und wc.

Um den SAP-Export mit „|“ als Feldabgrenzung auf den gesuchten Pattern zu filtern, habe ich folgenden Befehl verwendet:

$ cat export.txt | grep -E "\|[4-5]{1}[0-9]{15}" > export-filtered.txt

Dieser Befehl speichert alle Zeilen aus der Datei export.txt, welche 16-stellige Zahlen enthalten, die mit 4 oder 5 beginnen und am Anfang eines Feldes stehen (deshalb \|), in die Datei export-filtered.txt.

So entfiel der Import über eine graphische Oberfläche (mit der obligatorischen Titelleiste „Keine Rückmeldung“) und die Sache war innert 5 Minuten gegessen.

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 7. November 2013

Die gängigsten Unix-Kommandozeilen-Tools unter Windows

Welcher Linux-Benutzer kann unter Windows schon auf nützliche Kommandozeilen-Tools wie cat, cut, sed, awk, tr und Konsorten verzichten? Das Complete package, except sources der CoreUtils for Windows rüstet unter Windows die gängigsten Linux-Kommandos nach.

Damit Windows nach der Installation die Linux-Befehle aber auch wirklich findet, muss der Pfad zu den ausführbaren Dateien in die Windows-Umgebungsvariable PATH aufgenommen werden. Dies geschieht folgendermassen:

  1. Computer
  2. Systemeigenschaften
  3. Erweitert
  4. Umgebungsvariablen…
  5. Path
  6. Bearbeiten…

An den String fügt man den Pfad C:\Program Files (x86)\GnuWin32\bin; (Windows 7 mit 64-bit CPU) respektive C:\Program Files\GnuWin32\bin; an.

Sobald man nun die Windows-Kommandozeile öffnet, hat man die ganze Palette an Befehlen zur Hand …

… ausser grep!

Dieses muss man als eigenständiges Installationspaket von derselben Web-Site herunterladen und installieren:

Grep for Windows

Tags: , , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 7. November 2012

Microsoft Domain Policies mit grep unter Windows filtern

Herkules-Aufgabe am Tag, an welchem Barack Obama zum neuen alten Präsident der USA gewählt wurde: Ich musste aus über 150 Domain Policies im HTML-Format diejenigen Dokumente herausfiltern, welche Passworteinstellungen enthielten. Und dies – wohlgemerkt – unter Windows. Wie macht man das?

Im Grund genommen ist das ganze keine grosse Hexerei:

  1. msysgit herunterladen
  2. msysgit installieren
  3. Git bash starten
  4. Ins Verzeichnis mit den Policies wechseln
  5. Folgenden Befehl ausführen:
    $ grep "Enforce password" *.html

Doch oha! grep liefert keine einzige Datei zurück, welche Kennwortrichtlinien enthält? Ein cat auf eine Beispieldatei zeigt, dass zwischen jedem Buchstaben ein Leerzeichen folgt. Indem man eine Beispieldatei mit Notepad++ öffnet, findet man heraus, dass die Exporte vom Domain Controller mit UCS-2 Little Endian enkodiert sind (der Zeichensatz steht in Notepad++ unten rechts in der Statusleiste).

Was nun? Ich habe mir kurzerhand ein bash-Script geschrieben, um die Dateien on-the-fly in ein für grep verständliches Format (UTF-8) zu konvertieren:

#!/bin/sh

if [ $# -lt 2 ]
then
	echo "Usage: $0 [extension of files to search] [string to search for in files]"
	exit 1
fi

for i in *.$1
do
	RES=`iconv -f UCS-2LE -t UTF-8 "$i" | grep "$2"`
	RET=$?

	if [ $RET -eq 0 ]
	then
		echo "$RET - $i"
		echo $RES
		echo ""
	fi
done

exit 0

Das Script tut folgendes: Zuerst liest es alle Dateien im aktuellen Verzeichnis aus, welche auf .html enden. In einer Schleife wird nun jede gefundene Datei mittels iconv von UCS-2LE nach UTF-8 konvertiert und an grep weitergepipet. grep sucht im Zeichensalat nach „Enforce password“. Die bash-Variable $? speichert das Resultat dieses Befehls; sprich 0 falls die Zeichenkette gefunden wurde, 1 (oder eine andere Zahl ungleich 0), wenn grep gestolpert ist oder einfach nichts gefunden hat. Ist $RET gleich 0, wird der Dateiname ausgegeben.

Schlussendlich fanden sich in den 150 Dateien gerade mal 6 Stück, welche Passworteinstellungen enthalten. Doch statt dem fehleranfälligen manuellen Geklicke habe ich quelloffene Tools, gepaart mit ein wenig Scripting-Wissen für mich arbeiten lassen.

Gut zu Wissen

Wer die Namen der Zeichensätze nicht auswendig weiss, dem wird unter folgendem Link geholfen:

libiconv

Tags: , , , , , , , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen