Ranttime #8 – Die Digitale Agenda 2014-2017 – Ein Kommentar

Links zum Thema

Inhalt:

  • 0:00 Intro / Die Internet-Troika
  • 3:23 Industrie 4.0
  • 5:12 Chancen für Start-Ups / Von Abmahnern und Patenttrolle
  • 6:34 Netzneutralitätsprioritätsvergabe
  • 8:41 Die DeMail ist sicher.
  • 10:32 Die Digitale Gesellschaft: Wir sind das Netz…
  • 14:15 Vertrauen als Währung
  • 14:55 EU-Datenschutz
  • 15:33 Was ist „kritische Infrastuktur“?
  • 17:04 Das Internet ist kein rechtsfreier Raum
  • 18:25 Mit Sandsäcken gegen den Daten-Tsunami
  • 23:44 Funkfrequenzen sind kein Kabel
  • 25:05 Damit Weißes länger weiß bleibt
  • 25:36 Closed Data, Open Data, Missing Data
  • 26:09 Überwachungsterror
  • 27:04 Hausaufgabenvergesser
  • 27:32 Der Bundestrojaner, dein Freund und Helfer
  • 28:20 Undefiniert ist genauer als Zahlen zu nennen?
  • 29:14 Lehrstunde Vectoring
  • 29:30 Offene WLANs, Störerhaftung und die Anonymität
  • 31:14 Frequenzpooldämpfung: Tetra/BOS-Funk
  • 32:22 Volkssport Google-Bashing
  • 32:52 [fefe] Förderung? Bleibt ja in der Familie
  • 33:25 [fefe] Meldepflicht
  • 34:21 [div] Folgenloses Geschwätz
  • 34:44 Mein Fazit

BitNotice #51 – Mailbag: Laborkabel & 400W 12V-Netzteil

BitNotice #51 - Mailbag: Laborkabel & 400W 12V-Netzteil

(89.9 MB) 00:10:55

2014-08-19 16:24 🛈

Laborkabel: Privatauktion
Netzteil: http://stores.ebay.de/RondaFul/_i.html?_nkw=400W

Widerstand der Laborkabel ~135m? je Kabel

BitBastelei #110 – Freifunk – Mit TP-WR841N ins KBU-Netz

BitBastelei #110 - Freifunk - Mit TP-WR841N ins KBU-Netz

(48.8 MB) 00:18:46

2014-08-17 10:00 🛈

Die Initiative Freifunk baut an einem dezentralen, selbstverwalteten Netz auf Basis eines WLAN-Mesh-Netzwerks. Mit passendem Router und freier Firmware kann man selbst ein Teil des Netzes werden. Wie das geht zeigt ich hier am Beispiel des TP-Link WR841N (~15€) und der Firmware der Freifunker aus Köln, Bonn und Umgebung.

Poor mans PC-Interface – Multimeter per Webcam auslesen

Improvisieren? Kann ich. Derzeit teste ich mit einem Gerät herum, welches sich in regelmäßigen Abständen einschaltet – interessant für mich wäre es nun diese Zyklen genauer zu kennen. Zwar habe ich einige Energiekostenmessgeräte, damit lässt sich jedoch nur Min/Max bzw. der Durchschnitt errechnen, nicht jedoch wie oft das Gerät nun tatsächlich läuft. Hier würde ein Multimeter mit PC-Anbindung helfen, leider käme hierzu nur mein UniT in Frage, welches im Dauerbetrieb jedoch recht schnell mit leerer Batterie seinen Dienst einstellen würde. Meine „großen“ HPs besitzen zwar eine GPIB-Schnittstelle, den passenden PC-Adapter habe ich allerdings noch nicht fertig.

Bleibt nur ein anderer Ansatz: Optische Erkennung. Als Multimeter hält mein Rohde&Schwarz/Keithley her – durch die LEDs ist dessen Anzeige am einfachsten lesbar. Direkt davor sitzt nun eine Webcam, welche die Anzeige im Auge behält. Über die Software „motion“ stellt mein Linux-Server einen MJPEG-Stream bereit – ich bin diesen Weg gegangen, da ein ständiges Reinitialisieren der Kamera für einzelne Screenshots gerne zu Hängern führt.

Bild: https://adlerweb.info/blog/wp-content/uploads/2014/08/cam1.jpg

Ein kleiner PHP-Daemon fragt nun regelmäßig das letzte Bild ab, hierzu wird ein (modifizierter) Code des motion-Projektes verwendet:

$camurl='http://127.0.0.1:8081/';
$boundary="\n--";

$f = fopen($camurl,"r") ;

   if(!$f)
   {
        //**** cannot open
        echo "error";
   }
    else
   {
        //**** URL OK
         $r='';
         unset($p);
         while (substr_count($r,"Content-Length") != 2) $r.=fread($f,512);

         $start = strpos($r,chr(0xFF));
         $end   = strpos($r,$boundary,$start)-1;
         $frame = substr("$r",$start,$end - $start);

         //In $frame sind nun die rohen JPEG-Daten - diese können ausgegeben werden, gespeichert werden oder per imagecreatefromstring (gd) in PHP weiter verarbeitet werden
   }

Weiterhin wird das Bild passend beschnitten, gedreht und in ein invertiertes Schwarz-Weiß-Bild umgewandelt:

$src = imagecreatefromstring($frame);
$dst = imagecreatetruecolor(173,75);

imagecopy($dst, $src, 0, 0, 225, 66, 173, 75);
$dst = imagerotate($dst, 10, 0);
imagefilter($dst, IMG_FILTER_NEGATE);
imagefilter($dst, IMG_FILTER_GRAYSCALE);
imagefilter($dst, IMG_FILTER_CONTRAST, -100);

Im Anschluss wird über eine Reihe von „imagecolorat“-Abfragen für jede der 7-Segment-Stellen ein Array generiert – jedes Segment ist entweder an (1) oder aus (0). Zur besseren Erkennung wird jedes Segment an mehreren Stellen abgefragt und der Durchschnitt mit einem Schwellwert bewertet, so ist das System unempfindlicher gegen Rauschen.

Bild: https://adlerweb.info/blog/wp-content/uploads/2014/08/7SEG-208×300.png
(Im Array ist der Index entsprechend 0-6, nicht 1-7)

Am Ende steht ein Mapping, welches die erkannte Anzeige in einen Integer umwandelt

function seven2int($p) {
    $map[1][1][1][0][1][1][1] = 0;
    $map[0][1][0][0][1][0][0] = 1;
    $map[0][0][1][0][0][1][0] = 1;
    $map[1][0][1][1][1][0][1] = 2;
    $map[1][0][1][1][0][1][1] = 3;
    $map[0][1][1][1][0][1][0] = 4;
    $map[1][1][0][1][0][1][1] = 5;
    $map[1][1][0][1][1][1][1] = 6;
    $map[0][1][0][1][1][1][1] = 6;
    $map[1][0][1][0][0][1][0] = 7;
    $map[1][1][1][1][1][1][1] = 8;
    $map[1][1][1][1][0][1][0] = 9;
    $map[1][1][1][1][0][1][1] = 9;

    if(isset($map[$p[0]][$p[1]][$p[2]][$p[3]][$p[4]][$p[5]][$p[6]])) {
        return $map[$p[0]][$p[1]][$p[2]][$p[3]][$p[4]][$p[5]][$p[6]];
    }else{
        return false;
    }
}

Die (passend multiplizierten) Werte ergeben den Messwert. Die Erkennung ist zwar nicht 100%ig, jedoch bei der verfügbaren Auflösung wesentlich zuverlässiger als ein klassischer OCR und ausreichend um ein paar Kurven zu zeichnen. Derzeit werden etwa 80-90% der Captures erkannt. Die meisten Fehler kommen durch ungünstiges Timing – wenn die Kamera eine Aufnahme macht während die LED-Anzeige gerade aktualisiert kommt es zu halben Zahlen.

Bild: https://adlerweb.info/blog/wp-content/uploads/2014/08/Unbenannt.png

Arch Linux/Systemd: Screen-Sitzung als Daemon

Nicht immer kann oder möchte man ein Linux-Programm als Daemon starten – fehlende Daemon-Funktion, die Möglichkeit direkt auf STDOUT/STDERR zu schauen, etc. In den meisten Fällen bemühe ich für diese Fälle den Terminal Multiplexer „screen“. Hiermit wir die Software mit komplettem Terminal gestartet, man kann jedoch die Verbindung trennen, sodass das Programm im Hintergrund weiter seinen Dienst tut. Bei einem späteren Reconnect sind alle vorherigen Ausgaben wieder sichtbar.

Bisher startete ich diese Programme von Hand, auf einem System habe ich nun aber ein Shell-Script, welches sinnigerweise direkt beim Boot gestartet werden soll – bauen wir uns einen passenden Systemd-Service:

[Unit]
Description=Dynamic DNS updater
After=network.target

[Service]
RemainAfterExit=yes
User=root
ExecStart=/usr/bin/screen -AdmS ddns /usr/local/sbin/ddns.sh
ExecStop=/usr/bin/screen -S ddns -X quit

[Install]
WantedBy=multi-user.target

Wie unschwer zu erkennen handelt es sich um einen DDNS-Update-Daemon. Zwar würde der auch direkt laufen, da jedoch ab und an mal manuell ein Befehl abgesetzt werden muss ist mir screen lieber. Die Bedingung nach network.target zu laufen ist rein durch die DNS-Funktion bedingt und für Screen nicht notwendig.
Interessant wird es in [Service] – Erst wird der Nutzer festgelegt, welcher den Screen starten soll – da der Daemon Systemeinstellungen ändert komme ich hier um root nicht herum. Unter ExecStart wird der passende Befehl angegeben – es wird eine screen-Sitzung mit dem Namen „ddns“ gestartet und dort das Script „/usr/local/sbin/ddns.sh“ ausgeführt. In der nächsten Zeile wird zum Stoppen der Screen mit dem Namen „ddns“ beendet.

Die Datei wird unter /etc/systemd/system/ddns.service abgelegt und ist danach wie jeder andere Dienst nutzbar. Ist er mit „systemd start ddns“ gestartet kann der Nutzer root sich mittels „screen -x ddns“ zur laufenden Sitzung verbinden. Mit der Tastenkombination „Ctrl-a d“ wird die Verbindung wieder getrennt.

Einige Warnungen noch:
– Die Sitzung hat ggf. nicht alle Umgebungsvariablen, die man von einer „normalen“ Shell-Sitzung gewohnt ist
– Bricht das Script ab wird der Screen beendet, in dem Fall ist die Ausgabe/Fehlermeldung nicht mehr sichtbar. Hier kann man ggf. eine interaktive Shell nach dem Script starten und so die Sitzung offen halten. Beispiel:

ExecStart=/usr/bin/screen -AdmS ddns sh -c '/usr/local/sbin/ddns.sh ; bash'

BitBastelei #109 – Power Inverter Basics / Doxin 1500W Inverter

BitBastelei #109 - Power Inverter Basics / Doxin 1500W Inverter

(198.8 MB) 00:32:59

2014-08-10 10:00 🛈

Gundfunktion eines Hochfrequenz-Invertes, mögliche Ausgangsmodulationen und Blick auf/in einen Doxin 1500W Inverter

Bild: https://adlerweb.info/blog/wp-content/uploads/2014/08/inv9_c-300×168.png

Video BitBastelei #96 – 600W Inverter

Video – Doxin 1500W verträgt nur 1000W: https://www.youtube.com/watch?v=jayQpUuMzYY

Auktion: http://www.ebay.de/itm/301115553458

BitNotice #50 – Velleman-LAB-1 vs. günstige Alternativen

BitNotice #50 - Velleman-LAB-1 vs. günstige Alternativen

(14 MB) 00:07:08

2014-08-06 21:24 🛈

Das Velleman LAB-1 ist kompakt – aber im Handel auch teuer. Kann es im Vergleich mit günstigen Einzelkomponenten überzeugen?

Denizbank: Gehen sie weiter, hier gibt es nichts zu sehen

Wieder einmal ein Kandidat für den Award „unsichere Bank“, diesmal jedoch mit ganz besonderer Note. Beworben hat sich dieses mal die Denizbank. Eigentich sehen die (technischen) Werte ihrer deutschen Niederlassung sowie der österreichischen Kontoseite weitestgehend OK aus – fehlendes Forward Secrecy beim Kontilogin, ein paar Kleinigkeiten, aber keine offensichtlichen Mängel. PFS ist inzwischen ja nicht mehr so kompliziert, also kann man es ja mal anregen – eine passende Mail ging also vor einigen Wochen raus.

Zurück kam eine E-Mail, welche mehr Disclaimer als Inhalt besaß – ein Traum für alle Spieler von Bullshit Bingo. Die Angaben wären als Meinungsäußerung des Mitarbeiters und nicht als Aussagen der Bank zu verstehen. Interessant, hatte ich nicht um eine Stellungnahme gebeten? Kommt die Mail nicht von einem offiziellen Bank-Account und ist es üblich, dass Mitarbeiter diesen für private Meinungsäußerungen nutzen? Wie auch immer: Man ließ mich wissen, dass die Server

die aktuellste OPEN SSL Version verwenden und somit eine Sicherheitslücke ausgeschlossen ist.

Tja, wir alle wissen: OpenSSL ist so sicher wie die Rente. Auf meine Frage zu PFS & Co ging man gar nicht ein. No further questions…

Arch Linux: Only console users are allowed to run the X server

Üblicherweise nutze ich an meinem Haupt-PC ein Multihead-Setup, also mehrere Monitore. Was zum Arbeiten praktisch ist bringt Spiele leider gerne aus dem Tritt. Um dem aus dem Weg zu gehen habe ich bisher über startx einen zweiten X-Server gestartet – direkt aus der GUI, somit war auch Pulseaudio & Co immer direkt nutzbar. Seit einem der letzten Updates, vermutlich die neue Rootless-Funktion von xorg 1.16, erscheint nur noch die Meldung „Only console users are allowed to run the X server“.

In einem Post auf Github wird empfohlen eine Datei /etc/X11/Xwrapper.config mit dem Text „allowed_users=anybody“ zu erzeugen. Generell ein Fortschritt, nun bricht jedoch beim Start der propritäre NVidia-Treiber wie folgt zusammen:

(EE) NVIDIA(GPU-0): EVO Push buffer channel allocation failed
(EE) NVIDIA(GPU-0): Failed to allocate EVO core DMA push buffer
(EE) NVIDIA(0): Failing initialization of X screen 0

Leider konnte ich den genauen Auslöser nicht finden – die Rechte sinds nicht, setuid/setgid oder start als root zeigt keine Änderung. Auch ein Wechsel auf die freien Nouveau-Treiber zeigt keine Änderung, hier kann in der zweiten Sitzung kein DRI inizialisiert werden. Glücklicherweise hat der freie Treiber deutlich weniger Rendering-Bugs – nicht nur, dass Chromium endlich wieder nutzbar ist – auch Spiele laufen nun im Multi-Monitor-Modus. Zwar erscheint das Bild immer auf den linken Monitor, aber mit einem VGA-Umschalter als Hardware-Workarround kann ich mir da behelfen.

BitBastelei #108 – Velleman LAB-1 Multimeter-Mod

BitBastelei #108 - Velleman LAB-1 Multimeter-Mod

(142.3 MB) 00:12:45

2014-08-03 10:00 🛈

Modifikation der Multimeter-Einheit des Velleman LAB-1 auf isolierten Netzbetrieb

Nerd Inside