Alle Beiträge von adlerweb

Amdroid/CM: com.android.phone force-close nach Update

Ja, schmutzig ist praktisch – zumindest wenn es um Updates geht. Obwohl die meisten Entwickler empfehlen möglichst bei jedem Update mit einem frischen System zu beginnen versuche ich meine Daten so lange wie möglich mitzuschleifen („Dirty Flash“) – leider gibt es noch immer unzählige Apps, welche keine brauchbare Backup-Funktion bieten und auch systembasierte Lösungen wie Titanium Backup sind leider nicht unfehlbar.

Zuletzt war ich etwas nachlässig – mein Handy war noch auf Version 2, aktuell Version 9 meiner aktuellen ROM. Zeit zum Aktalisieren, vor allem da Dirty Cow gerade bekannt wurde.

Also, Sideload drüber und – narf. „Telefon reagiert nicht mehr“. Gemeint ist hierbei die Telefon-App, also jene, welche Sprachtelefonie ermöglicht. Brauch ich zwar normal nicht, aber die Popups nerven doch etwas.

Über ADB ließ sich folgendes im Log erspähen:

12-06 16:43:32.820  3708  3708 E AndroidRuntime: FATAL EXCEPTION: main
12-06 16:43:32.820  3708  3708 E AndroidRuntime: Process: com.android.phone, PID: 3708
12-06 16:43:32.820  3708  3708 E AndroidRuntime: java.lang.IllegalArgumentException: column 'user_network_mode' does not exist
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:333)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:87)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at com.android.internal.telephony.SubscriptionController.getSubInfoRecord(SubscriptionController.java:293)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at com.android.internal.telephony.SubscriptionController.getSubInfoUsingSlotIdWithCheck(SubscriptionController.java:1631)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at com.android.internal.telephony.SubscriptionInfoUpdater.updateSubscriptionInfoByIccId(SubscriptionInfoUpdater.java:593)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at com.android.internal.telephony.SubscriptionInfoUpdater.handleSimLoaded(SubscriptionInfoUpdater.java:421)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at com.android.internal.telephony.SubscriptionInfoUpdater.handleMessage(SubscriptionInfoUpdater.java:338)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:154)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6140)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
12-06 16:43:32.820  3708  3708 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)

Dankenswerterweise gibt es einen passenden Post von Daan, welcher die Ursache genau beschreibt und einen passenden Befehl zum zurücksetzen der defekten Datenbank anbietet. Hierbei gehen ggf. Einstellungen verloren, diese muss man ggf. später von seiner Datensicherung wieder einspielen.

adb shell
su -
rm -rf /data/user_de/0/com.android.providers.telephony/databases/telephony.*

Nach dem Befehl war dann Ruhe und sogar das telefonieren funktioniert wieder. Fein.

Windows/GPG/Smartcard – GPG mit Powershell bei SC-Verbindung neu starten

Beim Thema E-Mail-Verschlüsselung ist GPG weit verbreitet. Die Gundfunktionen sind z.B. mit Thunderbird und Enigmail oder gar eine Appliance auch für Einsteiger nutzbar und durch das WoT erstpart man sich die Abhängigkeit von – teils Zweifelhaften – zentralen Zertifizierungsstellen. Ich selbst nutze seit einiger Zeit keinen Softwareschlüssel sondern ein dediziertes HSM (Hardware Security Module) in Form eines YubiKey. Hiermit befindet sich der Key nicht mehr auf dem PC und auch die Verschlüsselung/Signierung läuft in Teilen auf dem Prozessor des YubiKey. Was unter Linux ohne große Änderungen funktioniert macht bei Windows eher wenig Spaß. Zwar ist auch GPG4Win in der Lage mit CryptoCards & Co umzugehen, häufiges Ein- und Ausstecken führt jedoch schnell zu einem hängenden GPG-Agent oder Absturzen der scdaemon.exe (GPG SmartCard Daemon). Einzige Abhilfe: Alle GPG-Prozesse beenden und neu starten. Da Verschlüsselung und Windows ohnehin eher selten zu finden ist sind auch Informationen dazu dünn gesät. Da ich teilweise um das System aus Redmond nicht herum komme und ein Fix in GPG4Win nicht in Sichtweite ist muss also wieder einmal der Holzhammer her: Irgendwie muss beim Einstecken des USB-Gerätes das GPG-System zurückgesetzt werden.

Also frisch ans Werk. Als Sprache soll mal wieder Powershell herhalten – direkt verfügbar, halbwegs systemnah, sollte passen. Über WMI kann man sich auch über ab- und angesteckte Geräte informieren lassen. Leider konnte ich keine Möglichkeit finden weitere Infos wie z.B. Hersteller oder Treiber gleich mit zu erhalten. Da sonst eher wenig Gerätefluktuation zu erwarten ist ziehe ich die „passt scho“-Karte und werde das GPG-System bei jedem neu auftauchenden Gerät einmal zurücksetzen.

#Requires -version 2.0
Register-WmiEvent -Class Win32_DeviceChangeEvent -SourceIdentifier deviceChange
write-host (get-date -format s) " Beginning script..."
do {
    $newEvent = Wait-Event -SourceIdentifier deviceChange
    $eventType = $newEvent.SourceEventArgs.NewEvent.EventType
    $eventTypeName = switch($eventType) {
        1 {"Configuration changed"}
        2 {"Device arrival"}
        3 {"Device removal"}
        4 {"docking"}
    }
    write-host (get-date -format s) " Event detected = " $eventTypeName

    $newEvent.SourceEventArgs.NewEvent | fl

    if ($eventType -eq 2) {
            write-host (get-date -format s) " Starting task in 3 seconds..."
            start-sleep -seconds 3
            taskkill /T /F /IM gpg-agent.exe
            taskkill /T /F /IM scdaemon.exe
            taskkill /T /F /IM kleopatra.exe

            start -FilePath 'C:\Program Files (x86)\GNU\GnuPG\gpg-agent.exe' -ArgumentList '--daemon' -WorkingDirectory 'C:\Program Files (x86)\GNU\GnuPG\' -LoadUserProfile -WindowStyle Minimized
    }
    Remove-Event -SourceIdentifier deviceChange
} while (1-eq1) #Loop until next event
Unregister-Event -SourceIdentifier deviceChange

Das Grundkonstrukt selbst scheint von Andy.L13 zu stammen, die kläglichen versuche von Mass-Storage auf andere USB-Geräte umzustellen stammen von mir. In Zeile 24 kann man für WindowStyle statt Minimized auch Hidden nutzen um das Ganze im Hintergrund laufen zu lassen – ich bevorzuge ein optisches Feedback. Das Script kann passend in Autostart oder als geplanter Task verstaut werden.

Sicher keine saubere Lösung, aber „works for me“.


Edit: Stackoverflow (bzw warriorpostman) liefert

Das folgende Script reagiert nur noch auf den vom YubiKey emulierten Smartcard-Reader. Das Objekt $Event.SourceEventArgs.NewEvent.TargetInstance sieht wie folgt aus – die Informationen für’s Query sollten sich im Gerätemanager finden lassen:

__GENUS                     : 2
__CLASS                     : Win32_PnPEntity
__SUPERCLASS                : CIM_LogicalDevice
__DYNASTY                   : CIM_ManagedSystemElement
__RELPATH                   : Win32_PnPEntity.DeviceID="USB\\VID_1050&PID_0116&MI_02\\6&***&0&0002"
__PROPERTY_COUNT            : 24
__DERIVATION                : {CIM_LogicalDevice, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER                    : TESTRECHNER
__NAMESPACE                 : root\CIMV2
__PATH                      : \\TESTRECHNER\root\CIMV2:Win32_PnPEntity.DeviceID="USB\\VID_1050&PID_0116&MI_02\\6&***&0&0002"
Availability                : 
Caption                     : Microsoft Usbccid-Smartcard-Leser (WUDF)
ClassGuid                   : {50dd5230-ba8a-11d1-bf5d-0000f805f530}
CompatibleID                : {USB\Class_0b&SubClass_00&Prot_00, USB\Class_0b&SubClass_00, USB\Class_0b}
ConfigManagerErrorCode      : 0
ConfigManagerUserConfig     : False
CreationClassName           : Win32_PnPEntity
Description                 : Microsoft Usbccid-Smartcard-Leser (WUDF)
DeviceID                    : USB\VID_1050&PID_0116&MI_02\6&***&0&0002
ErrorCleared                : 
ErrorDescription            : 
HardwareID                  : {USB\VID_1050&PID_0116&REV_***&MI_02, USB\VID_1050&PID_0116&MI_02}
InstallDate                 : 
LastErrorCode               : 
Manufacturer                : Microsoft
Name                        : Microsoft Usbccid-Smartcard-Leser (WUDF)
PNPDeviceID                 : USB\VID_1050&PID_0116&MI_02\6&***&0&0002
PowerManagementCapabilities : 
PowerManagementSupported    : 
Service                     : WUDFRd
Status                      : OK
StatusInfo                  : 
SystemCreationClassName     : Win32_ComputerSystem
SystemName                  : TESTRECHNER
PSComputerName              : TESTRECHNER

Ich werde mich am Service WUDFRd (aka Gerät mit Windows SmartCard-Treber) orientieren. Prinzipiell könne man aber auch auf die USB-ID triggern uns so Scripte bauen, welche bei einstecken eines USB-Sticks ein Backup durchführen oder bei verbinden einer unbekannten USB-Tastatur entsprechend reagieren (böse Ente). Das zugehörige Script:

$query =  "Select * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_PnPEntity' AND TargetInstance.Service = 'WUDFRd'"

if( Get-EventSubscriber | Where-Object {$_.SourceIdentifier -eq "YubiHammer"}) {
    Unregister-Event YubiHammer
}

Register-WmiEvent -Query $query -SourceIdentifier YubiHammer -Action{
    $Global:RemoteProcMon=$event 

    start-sleep -seconds 3
    taskkill /T /F /IM gpg-agent.exe
    taskkill /T /F /IM scdaemon.exe
    taskkill /T /F /IM kleopatra.exe

    start -FilePath 'C:\Program Files (x86)\GNU\GnuPG\gpg-agent.exe' -ArgumentList '--daemon' -WorkingDirectory 'C:\Program Files (x86)\GNU\GnuPG\' -LoadUserProfile -WindowStyle Minimized
}

 

HTTPS mit signierten Zertifikaten auf HP/HPE/Procurve/Aruba/Procurve-Switchen

HTTPS, vorzugsweise mit gültigen Zertifikaten, sollte heute eigentlich Standard sein – erst recht wenn man mehr oder weniger kritische Infrastrukturen darüber verwalten möchte. Auch wenn ich eher ein Verfechter von SSH bei der Konfiguration von Switchen bin, so wird doch oft auch ein Webinterface gefordert. Bei HP/HPE/Aruba/Procurve ist dies in der Standardkonfiguration unverschlüsselt per HTTP erreichbar. HTTPS lässt sich aktivieren, die Einrichtung von etwas anderem als self-signed ist jedoch leider nicht so intuitiv wie ich das gerne hätte. Also gehen wir die Schritte mal durch. Im CLI natürlich.

Erst muss ein „Trust Anchor“ erstellt werden. Dies ist sozusagen die Zertifikatsdatenbank des Switches. Da mehrere vorhanden sein können wird er mit einem aussagekräftigem Namen (her „MEINNETZ„) versehen.

# crypto pki ta-profile MEINNETZ

Anschließend wird das Zertifikat der Zertifizierungsstelle (CA) importiert. Leider ist dies bei vielen  Geräten nur per TFTP und nicht über USB-Stick, Terminal  o.Ä. möglich. Auch dieses bekommt zur besseren Auffindbarkeit einen Namen (hier „MYCA„). Die angegebene IP entspricht der des TFTP-Servers, unter Windows lässt sich hierzu z.B. TFTPD32 nutzen. Der Switch selbst muss hierfür natürlich bereits eine passende Netzwerkkonfiguration besitzen und den PC erreichen können, ohne passende Konfiguration sucht er sich eine Adresse per DHCP auf dem Standard-VLAN.

# copy tftp ta-certificate MYCA 192.168.0.123 meineca.crt

Im Anschluss kann die Zertifikatsunterschriftanfrage (CSR) generiert werden. Wichtig für ein gültiges Zertifikat ist hierbei im Feld „common-name“ den späteren Hostname oder die IP-Adresse des Switches anzugeben, welche letztendlich für das Management verwendet werden soll..

# crypto pki create-csr certificate-name HTTPS ta-profile MEINNETZ usage web key-type rsa key-size 2048 subject common-name switch123.adlerweb.local org "BitBastelei" org-unit "IT" locality "Koblenz" state RLP country DE

Zu beachten ist, dass je nach Modellgeneration die Verfügbaren Cryptomethoden limitiert sein können. Das hier genutzte Modell unterstützt so leiglich RSA-Schlüssel mit bis zu 2048 Bit. Die verfügbaren Optionen lassen sich wie immer durch „?“ abrufen. Das Erstellen kann je nach verbautem Managementprozessor einige Zeit in Anspruch nehmen, im Anschluss erscheint die Anfrage als Text.

-----BEGIN CERTIFICATE REQUEST-----
MIICzDCCAbQCAQAwgYYxCzAJBgNVBAYTAkVOMQ0wCwYDVQQIDARub25lMQ0wCwYD
VQQHDARub25lMRIwEAYDVQQKDAlXaWtpcGVkaWExDTALBgNVBAsMBG5vbmUxGDAW
BgNVBAMMDyoud2lraXBlZGlhLm9yZzEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25l
LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMP/U8RlcCD6E8AL
PT8LLUR9ygyygPCaSmIEC8zXGJung3ykElXFRz/Jc/bu0hxCxi2YDz5IjxBBOpB/
kieG83HsSmZZtR+drZIQ6vOsr/ucvpnB9z4XzKuabNGZ5ZiTSQ9L7Mx8FzvUTq5y
/ArIuM+FBeuno/IV8zvwAe/VRa8i0QjFXT9vBBp35aeatdnJ2ds50yKCsHHcjvtr
9/8zPVqqmhl2XFS3Qdqlsprzbgksom67OobJGjaV+fNHNQ0o/rzP//Pl3i7vvaEG
7Ff8tQhEwR9nJUR1T6Z7ln7S6cOr23YozgWVkEJ/dSr6LAopb+cZ88FzW5NszU6i
57HhA7ECAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4IBAQBn8OCVOIx+n0AS6WbEmYDR
SspR9xOCoOwYfamB+2Bpmt82R01zJ/kaqzUtZUjaGvQvAaz5lUwoMdaO0X7I5Xfl
sllMFDaYoGD4Rru4s8gz2qG/QHWA8uPXzJVAj6X0olbIdLTEqTKsnBj4Zr1AJCNy
/YcG4ouLJr140o26MhwBpoCRpPjAgdYMH60BYfnc4/DILxMVqR9xqK1s98d6Ob/+
3wHFK+S7BRWrJQXcM8veAexXuk9lHQ+FgGfD0eSYGz0kyP26Qa2pLTwumjt+nBPl
rfJxaLHwTQ/1988G0H35ED0f9Md5fzoKi5evU1wG5WRxdEUPyt3QUXxdQ69i0C+7
-----END CERTIFICATE REQUEST-----

Diese Anfrage kopiert man aus dem Terminal und reicht sie als .csr-Datei an die gewünschte Zertifizierungsstelle weiter bzw. signiert diesen selbst mit seiner lokalen CA. Als Ergebnis erhält man ein Zertifikat, üblicherweise im PEM-Format (meist .pem oder .crt), welches im Switch importiert werden muss. Erhält man stattdessen eine DER oder P7B-Datei kann diese an einem PC z.B. mit openssl konvertiert werden. Nach Eingabe des Importbefehls erwartet der Switch den Inhalt der PEM-Datei als Texteingabe. Unter Windows mit PuTTy kann mit einem Rechtsklick eingefügt werden.

# crypto pki install-signed-certificate
Paste the certificate here and enter:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

Mit Erkennen der „END CERTIFICATE„-Zeile kehrt der Switch automatisch zur Konfigurationsoberfläche zurück.  Das Zertifikat sollte nun in der Liste der installierten Zertifikate zu sehen sein.

# show crypto pki local-certificate
Name Usage Expiration Parent / Profile
-------------------- ------------- -------------- --------------------
HTTPS Web 2345/06/07 MEINNETZ

Zuletzt wird HTTPS ein- und HTTP ausgeschaltet. Das zuvor installierte und somit einzige Zertifikat sollte automatisch verwendet werden.

# web-management ssl
# no web-management plaintext

Somit ist der Switch nicht mehr unverschlüsselt verwaltbar und die zuständigen „Administratoren“ teilen ihr Passwort nicht mehr zwangsläufig allen Lauschern im Netz servierfertig mit. Mit etwas Glück spart das Ganze am Ende mehr Arbeit als das turnusmäßige Auffrischen der Zertifikate verursacht. Wenn nicht schont der nicht mehr vorhandene HTTP-Login  immerhin meine Nerven.

Kurztest VP9 vs. X.265

Rendering fertig und nächstes Projekt kopiert noch, also mal ein schneller Blick wie sich VP9 inzwischen schlägt.

Quellmaterial sind 85 Sekunden Video, davon 8 Sekunden Standbild und 12 Sekunden 50:50. Das Rendering erfolgt über MLT mit x265 1.9 bzw. libvpx 1.5.0 auf einem Intel Xeon W3680 Hexacore. Beide werden mit einem CRF von 23 angesteuert (jaja, ist übertrieben hoch).

VP9 ist beim Encoding klar im Nachteil, da standardmäßig nur ein einziger Kern genutzt werden kann.

VP9 benötigt für das Rendering 18:40 Minuten, die Zieldatei belegt 141MB. Die Bitrate liegt bei durchschnittlich 13491kb/s.

X265 liegt mit 09:40 Minuten knapp darunter. Die Zieldatei ist mit 37MB jedoch deutlich kleiner. Die Bitrate liegt im Schnitt bei 3475kb/s.

Die Bildqualität können andere beurteilen, ich sehe mit dem Auge nichts.

 

Windows Server 2012R2: Dienststörung durch Shellhardwareerkennung (ShellHWDetection)

Wieder ein roter Kasten im Server Manager: Ein kritischer Fehler bei den Diensten mehrerer Server: Die „Shellhardwareerkennung“ aka „ShellHWDetection“ wäre nicht gestartet.

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2016/09/shellhw01-300×214.png

Dienstkunde

Erste Frage: Was macht der Dienst denn? Nunja, er kümmert sich um „lebenswichtige“ Dinge wie Autostart von CD, Erkennung von SD-Karten oder das Management von Dockingstationen eines Laptops. Wegen seiner Kritikalität wird der Dienst unter Windows auch nur dann gestartet, wenn ein Nutzer aktiv am Rechner oder per RDP angemeldet ist. Der Fehler im Servermanager wird also immer dann ausgelöst, wenn kein Nutzer interaktiv am Rechner arbeitet.

Stummschaltung

Kurzfassung: Ruhe bitte. Der gestoppte Dienst ist ein Normalzustand und sollte folglich auch nicht als Fehler angekreidet werden. Um die Meldung zu unterdrücken öffnen wir im Servermanager das Dashboard und suchen die Gruppe/Box „Alle Server„. Durch einen Klick auf „Dienste“ öffnet sich die Detailansicht in einem neuen Fenster. Dort kann man im Dropdown-Menü „Dienste“ den Haken der Shellhardwareerkennung entfernen. Die Meldungen sollten nun verschwinden und fortan bei keinem Entscheider mehr Stirnrunzeln verursachen können.

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2016/09/shellhw02-300×214.png

Hat man selbst weitere Servergruppen definiert muss man die Schritte für jede entsprechend wiederholen.

Cisco ASA via TFTP starten

17Cisco-Geräte starten üblicherweise von einer Firmwaredatei, welche auf einem internen Flash-Laufwerk gespeichert ist. Ist der Flash beschädigt oder möchte man nur temporär eine andere Version testen kann es nützlich sein einen anderen Weg einzuschlagen: Über den eingebauten Bootmanager, auch ROMMON genannt, lässt sich eine Firmwaredatei von einem TFTP-Server starten.

Als Voraussetzung sollte im Netz ein TFTP-Server vorbereitet und eine gültige ASA-Firmware dort hinterlegt sein. Unter Windows kann hierzu z.B. TFTPD32 verwendet werden. Auch muss bereits eine serielle Verbindung per COM (9600-8N1) oder USB-Kabel und einem Terminalclient wie PuTTy hergestellt werden.

Um den Bootloader zu starten wird während des Hochfahrens auf die Ausgabe der seriellen Schnittstelle geachtet. Hier erscheint nach kurzer Zeit ein entsprechender Hinweistext mit 10-Sekunden-Countdown. Durch drücken der ESC-Taste lässt sich der Start unterbrechen und in den Bootloader wechseln.

Cisco Systems ROMMON Version xxxxxx
Use BREAK or ESC to interrupt boot.Use SPACE to begin boot immediately.
Boot in 10 seconds.
                                                
Boot interrupted.

Management0/0
Link is DOWN
MAC Address: xxxxxx


Use ? for help.

Als nächstes muss die lokale IP (hier .10), die IP des TFTP-Servers (hier .11) und ein Gateway festgelegt werden. Befinden sich TFTP-Server und Router im selben Netz ist als Gateway der TFTP-Server und nicht der lokale Router einzutragen. Es folgen der Dateiname der Imagedatei und – wenn die Verbindung nicht über den Management-Port hergestellt werden soll – die Passende Netzwerkschnittstelle.

rommon #0> ADDRESS=192.168.0.10
rommon #1> SERVER=192.168.0.11
rommon #2> GATEWAY=192.168.0.11
rommon #3> IMAGE=asa962-smp-k8.bin
rommon #4> PORT=GigabitEthernet0/1
GigabitEthernet0/1
Link is UP
MAC Address: xxxxxx

rommon #5>

Um sicherzugehen, dass alle Einstellungen korrekt sind lassen sich mit set nochmal alle Parameter prüfen.

rommon #5> set
ROMMON Variable Settings:
  ADDRESS=192.168.0.10
  SERVER=192.168.0.11
  GATEWAY=192.168.0.11
  PORT=GigabitEthernet0/1
  VLAN=untagged
  IMAGE=asa962-smp-k8.bin
  CONFIG=
  LINKTIMEOUT=20
  PKTTIMEOUT=4
  RETRY=20

Um den das Laden und Starten der Datei einzuleiten gibt man schlussendlich tftp ein.

rommon #6> tftp
ROMMON Variable Settings:
  ADDRESS=192.168.0.10
  SERVER=192.168.0.11
  GATEWAY=192.168.0.11
  PORT=GigabitEthernet0/1
  VLAN=untagged
  IMAGE=asa962-smp-k8.bin
  CONFIG=
  LINKTIMEOUT=20
  PKTTIMEOUT=4
  RETRY=20

tftp asa962-smp-k8.bin@192.168.0.11 via 192.168.0.11
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[...]
Received 89837568 bytes

Launching TFTP Image...

Execute image at 0x14000
Cisco Security Appliance admin loader xxxxxx
Platform ASAxxxx

Loading...
IO memory blocks requested from bigphys 64bit: xxxxxx

INIT: version 2.88 bootingStarting udev
Configuring network interfaces... done.
Populating dev cache
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
[...]

Windows Server 2012R2: „Ereignisdaten können nicht abgerufen werden“ durch LDS-Rolle

Eigentlich ist der Server Manager ja eine tolle Idee: Windows-Server können hiermit auch von Personen ohne Textkonsolenaffinität in großen Teilen zentral verwaltet werden. Dumm nur, wenn entscheiderabweisende, rote Fehlermeldungen das Dashboard zieren. Klickt man eine dieser Warnungen an erscheint als Serverstatus

Online – Ereignisdaten können nicht abgerufen werden

Auch die Details sind nicht wesentlich aussagekräftiger:

Ereignisse aus adam.events.xml konnten nicht aufgezählt werden

Ursache in meinem Fall: Microsoft Active Directory Lightweight Directory Services (AD LDS). Diesen hatte ich seinerzeit,in der Vermutung, dass er für einen LDAP-Zugriff auf das AD notwendig wäre, mit angeklickt. Knackpunkt: Er wurde nie fertig eingerichtet. Der hierzu nötige Wizzard ist nur im Startmenü zu finden und wird nicht, wie bei anderen Rollen üblich, direkt im Servermanager verlinkt. Durch die fehlende Konfiguration wird eine Warnung generiert, welche ihrerseits wegen eines Fehlers im Servermanager nicht korrekt angezeigt wird.

Als Lösung kann man entweder die LDS-Rolle über das Startmenü fertig konfigurieren oder – wenn man sie wie ich wegen falscher Vermutungen installierte – einfach entfernen. Ein LDAP-Zugriff auf das AD ist auch ohne sie möglich.

Graylog: Informationen durch Regex-Pipeline extrahieren

Graylog ist ein System zum zentralen Sammeln und Auswerten von Log-Meldungen. Das System selbst ist open source und basiert auf Java. Mit der neuen Version wurde die Funktion „Processing Pipelines“ eingeführt, welche es erlaubt eingehende Log-Meldungen durch Scripte weiter anzureichern.

In meinem Fall lasse ich den Proxyserver Squid seine Zugriffe auf den Graylog-Server protokollieren, dort kommt hierdurch jedoch ausschließlich die nicht weiter aufgeschlüsselte Zeile im Squid Log Format an. Über eine Pipeline mit Regex wird diese weiter zerlegt und in einzelne Felder aufgeteilt, sodass ein granulareres Suchen möglich ist.

Das Ganze ist nur als Testaufbau zu sehen, es fehlt eine Fehlerbehandlung etc. Da ich aber etwas an der Syntax hing hilft es eventuell ja anderen Suchenden. Wichtig ist es die Backslashes selbst zu escapen um als gültiger Java-Code angenommen zu werden. Die Benennung der Treffer durch das letzte Array im Regex-Aufruf ist optional – ohne werden die Treffer mit 0 beginnend durchnummeriert.

rule "test squid"
when
    contains(to_string($message.message), "HIER_DIRECT")
then
    let sqmat = regex(".*([\\d\\.]+)\\s+(\\d+) ([\\d\\.\\:A-Fa-f]+) (\\w+)/(\\d+) (\\d+) (\\w+) ([^ ]+) \\- HIER_DIRECT/([\\d\\.\\:A-Fa-f]+) ([^\\s]+).*", to_string($message.message), ["timestamp", "duration", "user", "result", "status", "bytes", "method", "url", "mime"]);
    set_field("squid_request", true);
    set_field("squid_duration", sqmat.groups.duration);
    set_field("squid_user", sqmat.groups.user);
    set_field("squid_result", sqmat.groups.result);
    set_field("squid_status", sqmat.groups.status);
    set_field("squid_bytes", sqmat.groups.bytes);
    set_field("squid_method", sqmat.groups.method);
    set_field("squid_url", sqmat.groups.url);
    set_field("squid_mime", sqmat.groups.mime);
end

Otto Waalkes – Grund zum feiern, Lyrics in Englisch

Da aktuell durch ein für viele wohl eher unverständliches Video das Interesse am Klassiker „Grund zum feiern“ von „Otto Waalkes“ geweckt wurde wollte ich die Bedeutung der „weisen Worte“ auch den Mitbürgern, welche nur englisch sprechen, nicht vorenthalten. Da das Netz keine brauchbare Übersetzung lieferte dann halt hier…

Currently the classic „Grund zum feiern“ by „Otto Waalkes“ is getting some interes because of a for most people somewhat incomprehensible video.  I liked to share these wise words also with people not speaking German but could not find a descend translation – so here it is…

  • Faber Krönung (sparkling wine)
  • Deinhard Lila (sparkling wine)
  • Grappa (pomace brandy)
  • Calvados (apple brandy)
  • tequila
  • Asbach Uralt (brandy)
  • Spätburgunder (Pinot Noir, red wine)
  • Vermouth (fortified wine) and
  • Pernod (distilled anise beverage).
  • Poire Williams (brandy)
  • Dujardin (Cognac)
  • Hennessy (Cognac)
  • Rémy Martin (Cognac)
  • Fernet Branca (bitter herbal liqueur)
  • Underberg (digestif bitter)
  • Port Wine (fortified wine) and
  • Bordeaux (wine)
  • Johnnie Walker (whiskey)
  • Jägermeister (liquor)
  • Amaretto (liquor)
  • Keller Geister (sparkling wine)
  • Scharlachberg (wine) and
  • Doppelkorn (liquor).
  • The whole thing now again from the start.
  • We have reason to celebrate.
  • No one can still run but we can still booze.
  • We have reason to celebrate.
  • Even if we feel like vomiting, bring the next bucket.
  • Bommerlunder (Akvavit)
  • Ballentine’s (scotch whiskey)
  • today it’s all the same to us.
  • Pear brandy and
  • cider
  • We really pour in everything.

 

  • whiskey sweet and
  • whiskey sour
  • main thing is we’re getting more drunk
  • Rammazotti (amaro)
  • Ratzeputz (Schnaps) and
  • a bottle of rum
  • Gin (spirit)
  • Campari (liqueur)
  • Grand Marnier (liqueur)
  • finally the skull hurts
  • With Doornkaat (liquor) and
  • Mariacron (brandy)
  • into delirium.
  • Klosterfrau Melissengeist (kind of high-alcohol-medicine)
  • or however the stuff is called
  • Kölnisch Wasser (aka 4711, perfume)
  • Pitralon (aftershave)
  • we do not burp it, we are vomiting it already.
  • We have reasons to puke
  • even if it erodes the guts
  • it spends us warmth
  • We have reason to celebrate
  • Our death-bed will:
  • Even higher alcohol level.

Ranttime: Kino & Star Trek Beyond (Spoilers, doh…)

Mal wieder eine runde sinnloses Rumgebrabbel zu den Tücken der Kinos und dem neuen Star Trek Film. Vorsicht, Spoiler.

Nachschlag zur Serie: Andere haben beim Trailer etwas genauer hingeschaut und einiges an Infos extrahiert. Wer in die Tiefen abtauchen will sollte mal bei DerBastard vorbeischauen.