Um die Sprache für das Syntax Highlighting des aktuellen Buffers in Vim selbst zu setzen (z.B. wenn Vim den Dateityp nicht erkennt und man keine Lust hat, das Problem in Angriff zu nehmen) gibt es den Befehl
:setf sprache
Dabei ist sprache die gewünschte Sprache. Dieser Trick ist z.B. für Makefile includes ganz angenehm.
Die aktuell verwendete Sprache findet man übrigens in der filetype Variablen. Zum Anzeigen reicht ein
:set filetype
Natürlich kann auch über diese Variable (anstatt obigen Befehl) die aktuelle Sprache verändert werden:
:set filetype=sprache
Daniels Blog
Montag, 6. Mai 2013
Donnerstag, 2. Mai 2013
WPA-EAP (MSCHAPv2/MSCHAP) Passwort als Hash anstatt Plaintext speichern
Wenn man zur Netzwerkverwaltung ein Programm benutzt, das auf wpa_supplicant aufbaut (z.B. netcfg/netctl) oder eventuell sogar wpa_supplicant direkt nutzt, dann steht man oft vor dem Problem, dass der supplicant das WLAN Passwort direkt als Klartext in der Konfiguration benötigt.
Natürlich kann man die Datei nur für root lesbar machen, das schützt aber nicht vor Zugriff, wenn das Speichermedium von einem anderen System (z.B. von USB-Stick oder nach Ausbau des Mediums) aus eingebunden wird.
Für Netzwerke mit Pre Shared Key (PSK) gibt es das Tool wpa_passphrase, welches unter Angabe von SSID und Password einen Hash ausspuckt, der dann anstatt des Passworts in der Konfigurationsdatei (z.B. /etc/wpa_supplicant/wpa_supplicant.conf) eingetragen werden kann.
(Was nebenbei auch den Aufwand beim Verbindungsaufbau reduziert)
Bei WPA-EAP jedoch wird kein PSK benötigt, sondern ein Passwort welches dann in Phase2 zur Authentifizierung verwendet wird.
Dieses Passwort kann leider nicht mittels wpa_passphrase geschützt werden.
Wird als Phase2 MSCHAPv2 oder MSCHAP (also nicht PAP oder CHAP) verwendet kann das Password aber durch einen MD4 Hash desselben ersetzt werden. Dann wird dieser Hash anstelle des Passworts gespeichert und auch übertragen, das Passwort als Klartext liegt also zu keiner Zeit vor.
(WICHTIG: Anmerkung am Ende)
Um diesen MD4 Hash zu generieren gibt es verschiedene Möglichkeiten:
Den so generierten Hash trägt man dann so ein:
password=hash:0BAD0...
Leider verwendet die Uni Würzburg PAP in der zweiten Phase, weshalb mir das wenig nützt.
Allerdings wird auf diese Weise das Passwort geschützt, sprich ein Angreifer kann das Passwort nicht aus dem Hash errechnen und kennt es somit nicht. Gerade bei Universitätszugängen ist es ja so, dass das WLAN Passwort auch zur Accountverwaltung (mit kritischen Daten, wie etwa Bankverbindung etc) verwendet wird.
Kennt der Angreifer nur den MD4 Hash, so hat er nur Zugriff auf Logins, die auch einen MD4 Hash des Passworts erwarten.
Mit etwas Glück bleiben also die restlichen Uni Logins geschützt.
[ /etc/wpa_supplicant/wpa_supplicant.conf Line 659 ]
Natürlich kann man die Datei nur für root lesbar machen, das schützt aber nicht vor Zugriff, wenn das Speichermedium von einem anderen System (z.B. von USB-Stick oder nach Ausbau des Mediums) aus eingebunden wird.
Für Netzwerke mit Pre Shared Key (PSK) gibt es das Tool wpa_passphrase, welches unter Angabe von SSID und Password einen Hash ausspuckt, der dann anstatt des Passworts in der Konfigurationsdatei (z.B. /etc/wpa_supplicant/wpa_supplicant.conf) eingetragen werden kann.
(Was nebenbei auch den Aufwand beim Verbindungsaufbau reduziert)
Bei WPA-EAP jedoch wird kein PSK benötigt, sondern ein Passwort welches dann in Phase2 zur Authentifizierung verwendet wird.
Dieses Passwort kann leider nicht mittels wpa_passphrase geschützt werden.
Wird als Phase2 MSCHAPv2 oder MSCHAP (also nicht PAP oder CHAP) verwendet kann das Password aber durch einen MD4 Hash desselben ersetzt werden. Dann wird dieser Hash anstelle des Passworts gespeichert und auch übertragen, das Passwort als Klartext liegt also zu keiner Zeit vor.
(WICHTIG: Anmerkung am Ende)
Um diesen MD4 Hash zu generieren gibt es verschiedene Möglichkeiten:
- Das Tool nt_password_hash aus den hostapd Quellen, siehe dazu auch mein AUR Paket (Diskussion im Forum)
- Ein kleines Python Skript (von hier)
- echo -n MY_SECRET | iconv -t utf16le | openssl md4 (auch aus obigen Link)
- evtl. weitere ...
Den so generierten Hash trägt man dann so ein:
password=hash:0BAD0...
Leider verwendet die Uni Würzburg PAP in der zweiten Phase, weshalb mir das wenig nützt.
Anmerkung
Das Passwort als Hash zu speichern erhöht nicht die Sicherheit der WLAN-Verbindung. Denn jeder, der den Hash hat, kann sich also auch verbinden.Allerdings wird auf diese Weise das Passwort geschützt, sprich ein Angreifer kann das Passwort nicht aus dem Hash errechnen und kennt es somit nicht. Gerade bei Universitätszugängen ist es ja so, dass das WLAN Passwort auch zur Accountverwaltung (mit kritischen Daten, wie etwa Bankverbindung etc) verwendet wird.
Kennt der Angreifer nur den MD4 Hash, so hat er nur Zugriff auf Logins, die auch einen MD4 Hash des Passworts erwarten.
Mit etwas Glück bleiben also die restlichen Uni Logins geschützt.
[ /etc/wpa_supplicant/wpa_supplicant.conf Line 659 ]
Donnerstag, 7. Februar 2013
Größerer Stack für die eigenen Programme
Eigentlich sollte es nicht notwendig sein, aber wenn das eigene Programm - sei es nur zu Testzwecken - einmal mehr Stack benötigt, dann lässt sich das unter Linux leicht bewerkstelligen:
Router Passwort vergessen? Kein Problem mit DIR-615!
Ich wollte hier beim Router (ein DLINK DIR-615 rev D3) ein paar Einstellungen verändern, hauptsächlich upnp deaktivieren und den WLAN-Kanal ändern (hier senden zu viele auf dem gleichen Kanal).
Allerdings wusste ich mein Passwort für das Webinterface des Routers nicht mehr. Das Gerät zurückzusetzen hätte bedeutet, dass ich den WLAN Key erneut einspeichern müsste (gut, Copy&Paste, aber das wäre doch langweilig...).
Allerdings wusste ich mein Passwort für das Webinterface des Routers nicht mehr. Das Gerät zurückzusetzen hätte bedeutet, dass ich den WLAN Key erneut einspeichern müsste (gut, Copy&Paste, aber das wäre doch langweilig...).
Dienstag, 6. November 2012
systemctl als normaler Benutzer - II
Nachdem mein erster Versuch, systemctl als normaler Benutzer vollständig weiter nutzen zu können etwas ... gescheitert ist (probiert mal TAB Vervollständigung bei meiner ersten "Lösung") hier nun die neue, bessere und soweit ich bisher getestet habe funktionierende Lösung:
Das nett in .bashrc oder .bash_profile und es funktioniert, zumindest bei mir ;-P14 function systemctl () 15 { 16 case "$1" in 17 enable|disable|start|stop|restart) 18 /usr/bin/systemctl -P "$@" 19 ;; 20 *) 21 /usr/bin/systemctl "$@" 22 ;; 23 esac 24 }
Samstag, 3. November 2012
synaptics Touchpad deaktivieren
Als eher grobmotorischer Mensch hasse ich es, wenn ein Touchpad auch zum Klicken verwendet werden kann.
Aus einer gewollten Zeigerbewegung werden bei mir dann gerne mal viele viele ungewollte Klicks auf allerei Buttons und der gleichen.
Deshalb deaktivere ich das Klicken per Touchpad. Bisher sah das in meiner .xinitrc so aus:
xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Tap Action" 0 0 0 0 0 0 0
Das war, gelinde gesagt, unschön und funktionierte auch nicht immer.
Anständig funktioniert dagegen:
synclient TapButton1=0
synclient TapButton2=0
synclient TapButton3=0
Ich meine mich zwar zu erinnern, dass synclient irgendein Problem mit sich bringt, bis ich das aber gefunden habe bleibt obiges Bestandteil meiner .xinitrc :)
Aus einer gewollten Zeigerbewegung werden bei mir dann gerne mal viele viele ungewollte Klicks auf allerei Buttons und der gleichen.
Deshalb deaktivere ich das Klicken per Touchpad. Bisher sah das in meiner .xinitrc so aus:
xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Tap Action" 0 0 0 0 0 0 0
Das war, gelinde gesagt, unschön und funktionierte auch nicht immer.
Anständig funktioniert dagegen:
synclient TapButton1=0
synclient TapButton2=0
synclient TapButton3=0
Ich meine mich zwar zu erinnern, dass synclient irgendein Problem mit sich bringt, bis ich das aber gefunden habe bleibt obiges Bestandteil meiner .xinitrc :)
Freitag, 2. November 2012
systemctl als normaler Benutzer
<UPDATE: Bessere Lösung>
In einer älteren systemd Version konnte ich per
systemctl start hdapsd.service
als normaler Benutzer den Dienst starten, ich wurde nur um mein Passwort gebeten. Das gefiel mir soweit eigentlich ganz gut, funktionierte auf meinem aktuellen System (systemd 195 arch +PAM -LIBWRAP -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ ) allerdings nicht.
Alles, was ich immer bekommen habe, ist folgendes:
"Failed to issue method call: Access denied"
systemctl poweroff fragte jedoch nach meinem Passwort, wenn z.B. mehrere Benutzer gleichzeitig eingeloggt waren.
Die Lösung des Problems fand ich nach langem Google-Suchen eher per Zufall in der man-page von systemctl:
Die Option -P dient dazu, nach erforderlichen Berechtigungen (permissions) zu fragen.
Ein
alias systemctl='systemctl -P'
in ~/.bashrc später bekomme ich nun folgende, schöne Meldung:
In einer älteren systemd Version konnte ich per
systemctl start hdapsd.service
als normaler Benutzer den Dienst starten, ich wurde nur um mein Passwort gebeten. Das gefiel mir soweit eigentlich ganz gut, funktionierte auf meinem aktuellen System (systemd 195 arch +PAM -LIBWRAP -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ ) allerdings nicht.
Alles, was ich immer bekommen habe, ist folgendes:
"Failed to issue method call: Access denied"
systemctl poweroff fragte jedoch nach meinem Passwort, wenn z.B. mehrere Benutzer gleichzeitig eingeloggt waren.
Die Lösung des Problems fand ich nach langem Google-Suchen eher per Zufall in der man-page von systemctl:
Die Option -P dient dazu, nach erforderlichen Berechtigungen (permissions) zu fragen.
Ein
alias systemctl='systemctl -P'
in ~/.bashrc später bekomme ich nun folgende, schöne Meldung:
[daniel@camino ~]$ systemctl start hdapsd.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.bus-access ===
Authentication is required to access the system and service manager.
Authenticating as: Daniel Oertwig (daniel)
Password:
==== AUTHENTICATION COMPLETE ===
[daniel@camino ~]$
==== AUTHENTICATING FOR org.freedesktop.systemd1.bus-access ===
Authentication is required to access the system and service manager.
Authenticating as: Daniel Oertwig (daniel)
Password:
==== AUTHENTICATION COMPLETE ===
[daniel@camino ~]$
Abonnieren
Posts (Atom)