Grim Fandango und ResidualVM

Neulich beim Keller aufräumen fiel mit eine alte Kindheitserrinerung in die Hände:
IMG_20160414_062654~2
Dieses Meisterwerk von LucasArts aus dem Jahre 1998 ist offiziell nur unter Windows 95 / 98 lauffähig, allerdings gibt es einen Open Source Interpreter, welcher es erlaubt Lua basierte LucasArts Adventures auf verschiedenen Plattformen zu spielen.
Benötigtes Material:

  • Original CD von Grim Fandango
  • ResidualVM
  • LabCopy

Bei der Version die ich habe sind die Spieldaten (.LAB Dateien) mit einem Kopierschutz versehen, der sie viel grösser aussehen lässt als sie sind. Hier kommt das Hilfstool LabCopy zum Einsatz, welches den Header der Dateien liest und nur die entsprechenden Blöcke kopiert.
Die Quelle ist hier zu finden: https://github.com/klusark/residual-tools/blob/master/tools/labcopy.cpp
Ich habe das Tool von der oben angegebenen Quelle kompiliert:

OSX: labcopy_osx Mach-O 64-bit executable x86_64
Windows x86: labcopy_win
Linux x86: labcopy_lin ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, not stripped

Also mit dem LabCopy bewaffnet kopieren wir alle .Lab Dateien von den beiden CDs in einen Ordner (vorhandene Dateien können überschrieben werden, die sind auf beiden CDs dieselben)
In ResidualVM fügen wir das Spiel mittels “Add Game” hinzu. Dabei kann es zu einer Warnung kommen mit der aktuellen Version von ResidualVM (0.2.1) welche sagt, dass die Game Dateien nicht korrekt sind. Diese Warnungen (ca. 5) können mit OK bestätigt werden, die MD5 Prüfsummen wurden in zukünftigen Releases angepasst, so dass sie stimmen.
Nun geniessen wir eine schöne Runde Grim Fandango

Ingame Szene “erste Begegnung mit Glottis”

tt-rss Full Feed News

Um alle News an einem zentralen Ort zu sammeln benutze ich Tiny Tiny RSS (tt-rss).
Dieser kann als eine selber gehostete Google Reader Alternative angesehen werden. Leider wird bei einigen Seiten (z.B Golem.de, Heise.de, inside-it.ch etc.) nur eine kleine Beschreibung auf den Artikel geladen und nicht der ganze.
Mit dem Plugin af_feedmod ist es möglich den ganzen Artikel in den RSS Reader zu laden, vorausgesetzt man kennt die Parameter. Für heise.de und Golem.de sind diese auf der Github Seite des Plugin Entwicklers aufgeführt.
Anbei einige weitere:
Inside-IT.ch

"inside-it.ch": {
   "type": "xpath",
   "xpath": "div[@class='article']",
   "cleanup":"div[@class='microsite']"
}

Computerworld.ch

"computerworld.ch": {
   "type": "xpath",
   "xpath": "div[@class='main-article']",
   "cleanup":["div[@class='article-box']","div[@class='article-col']","div[@class='line-news line-news2']"]
}

 

XOR Logik mit 3 Inputs

Kürzlich musste ich ein Powershell Script schreiben, das zu Anfang die Argumente prüfen sollte. Das Script kann mit 3 Parameter aufgerufen werden: -Install, -Uninstall und -Action
Von diesen 3 Parameter darf jeweils nur einer gleichzeitig verwendet werden, also habe ich ein paar logische Operatoren zusammen verknüpft und voilà dies ist das Ergebnis:

if(($Install -and $Uninstall -and $Action) -or -not ($Install -xor $Action -xor $Uninstall))
{
	Write-Host -ForegroundColor Red "Invalid Parameters please read script header for usage"
	exit(1)
}

Die Wahrheitstabelle für ein XOR Gatter mit 3 Inputs:

$a = $true,$false,$false
$a[0] -xor $a[1] -xor $a[2] #true
$a = $true,$true,$false
$a[0] -xor $a[1] -xor $a[2] #false
$a = $true,$true,$true
$a[0] -xor $a[1] -xor $a[2] #true
$a = $true,$false,$true
$a[0] -xor $a[1] -xor $a[2] #false
$a = $false,$true,$true
$a[0] -xor $a[1] -xor $a[2] #false
$a = $false,$false,$true
$a[0] -xor $a[1] -xor $a[2] #true
$a = $false,$false,$false
$a[0] -xor $a[1] -xor $a[2] #false
$a = $false,$true,$false
$a[0] -xor $a[1] -xor $a[2] #true

3InputXOR

Dateien mit OpenSSL ver/entschlüsseln

Verschlüsseln

openssl aes-256-cbc -salt -in archive.tar.gz -out archive.tar.gz.enc

Es folgt eine Aufforderung zur Eingabe des Passwortes
enter aes-256-cbc encryption password:

Entschlüsseln

openssl aes-256-cbc -d -in archive.tar.gz.enc -out archive.tar.gz

Es folgt eine Aufforderung zur Eingabe des Passwortes
enter aes-256-cbc decryption password:

Ricardo.ch Phishing Mail

Recently I received an email from ricardo.ch where I am registered.
Ricardo.ch is an e-auction platform.
This E-Mail was a phishing mail that is very poor translated from english to german 🙂 so I didn’t have to think a lot about it.
It wants you to install a SSL 3 Certificate (root_ca_ssl3.exe) for further using ricardo.
1st mistake: SSL Certificates aren’t provided as exe.
2nd mistake: Certificates are installed on the Webserver and not on clients
3rd mistake: There are many translation mistakes…
etc. etc.
IMHO it’s a very poor phishing mail because everyone that understands some basics of IT knows that this mail can’t be serious. Nice try 😉
Here it is:

Geehrt Benutzer,
Votre E-Mail in der Ricardo.ch system ist: p***.r**@***.ch
In Verbindung mit sich häufigsten Fällen von unbefugtem Zugriff zu Benutzkonten, bitten wir Sie das Zugriffsicherheitzertifikat für Ricardo.ch website einzustellen, das wird Sie auf das höhere Schutzniveau von SSL2-Protokoll zu SSL3-Protokoll übergehen lassen. Zugriff ohne Zertifikat wird von Dezember 20, 2007 an verboten. Das Personalzertifikat ist hier beigefügt. Für die Zertifikateinstellung, downladen Sie das beigefügte File. Das File ist: root_ca_ssl3.exe
(Achtung! Die Erneurungen funktionieren nicht mit dem Operationssystem MICROSOFT VISTA, die Erneurungen dafür werden später erscheinen, folgen Sie die Nachrichten).
Vielen Dank für Ihre Aufmerksamkeit!
Die RICARDO.CH Verwaltung

VBSript: Get Folder where started Script lies

This sample code stores the directory path where the script was started in a variable.
It’s usefull because you can move the script wherever you want (even UNC locations) and the paths remains correct.

Option Explicit
Dim strSourcePath
strSourcePath = Left(WScript.ScriptFullName,Len(WScript.ScriptFullName) _
 - Len(WScript.ScriptName))

The returned String contains already a trailing slash (\) so you just have to add the rest of the path or the exe
e.g
strSourcePath & "foo.exe" and not strSourcePath & "\foo.exe"