Martin Lantzsch
Software Entwickler
13. Oktober 2011

Firefox PDF Upload falscher Mime Type

13. Oktober 2011 - Geschrieben von Martin - 3 Kommentare

Heute hatten wir das Problem, das beim Kunden keine PDFs auf den Server hochgeladen werden konnten. Es hat sich herausgestellt, das ein aktueller Firefox verwendet wurde, aber auf dem Windows PC kein Adobe Reader installiert war. Das hatte zu folge, das der Firefox nichts mit der .pdf Datei anzufangen wusste und sendete einfach mal den Mime Type

application/octet-stream

anstatt

application/pdf

Es ist zwar nachvollziehbar, das der Firefox sagt er kennt diese Datei nicht, aber in allen anderen Browsern hat es funktioniert – einschließlich dem Internet Explorer 6.

Der Upload hat dann übrigens nicht funktioniert, da mittels PHP der Mime Type der Datei erfragt wird und alles was nicht auf „application/pdf“ passt wird weggeworfen.

UPDATE!
Ich habe soeben festgestellt, das Firefox desweiteren folgende Mime Types sendet:

application/download

application/x-download

Kommt also immer auf die Client Konfiguration an…

2. Oktober 2011

Passwörter und Keylogger – sicheres Eingeben

2. Oktober 2011 - Geschrieben von Martin - Ein Kommentar

Bei Keyloggern denken alle sofort an Spione, Geheimorganisationen und Verschwörungen. Aber dem muss nicht unbedingt so sein, wer weiß, ggf. wird man selbst ja auch „überwacht“, bzw. aufgezeichnet. Sei es durch ein lustiges Programm, das man am Vorabend heruntergeladen hat oder der eigene Chef will ohne großen Aufwand wissen was sie so wären der Arbeitszeit treiben (wobei das glaube ich nicht rechtens ist, aber egal – um das soll es jetzt nicht gehen).

Wie schützt man sich am besten vor Keyloggern? Ja, alle Hände oben. Klar, das die Onscreentastatur, bzw. Bildschirmtastatur zu Deutsch von den meisten als sichere Methode um Keylogger auszutrixen aber leider schützt diese Methode nur vor Hardware Keyloggern, also z.B. kleinen USB „Sticks“, die zwischen Tastatur und USB Anschluss am Rechner kommen, oder was ich letztens gehört habe kleine Steckkarten, die man selbst auf Notebookmotherboards zwischen Tastaturkabel und Anschluss klemmt.

Sollte im Hintergrund das fiese Programm laufen, welches Tastendrücke aufzeichnet ist man auch hier nicht sicher, denn – die Programmierer unter euch werden es wissen – man kann jederzeit Tastatureingaben abfragen. Oder wie meint ihr öffnet sich euer Notiz Programm wenn man STRG + N drückt ;)

Gebt ihr euer Passwort nun mit der Onscreentastatur ein, habt ihr Pech gehabt. Will man das umgehen schlägt sogar die Wikipedia vor, man soll außerhalb des Feldes klicken und irgendwas eintippen. Vom Ansatz her gar nicht so schlecht, denn dann ist der Log nicht mehr zu gebrauchen, schließlich steht das Passwort nicht als ganzes darin. Falsch Gedacht!
Viele Leute haben ja Passwöter wie „7.9.1982“, „New York“ oder „124354“. Nehmen wir mal „New York“ als Beispiel und eine Anmeldung beim Webmail Client. Meldet man sich normal ein sieht der Log folgendermaßen aus:

meinemail@tolleranbieter.deNew York

Wer nun 1 und 1 zusammenzählen kann erkennt „meinemail@tolleranbieter.de“ ist die Mail Adresse und „New York“ das Passwort.
Verwenden wir nun die „sichere“ Technik von Wikipedia:

meinemail@tolleranbieter.deNe213478**w York

Der Hacker sieht das Passwort nun zwar nicht im Klartext, aber nach dem 2. Versuch sich mit obigen Passwort anzumelden versucht er sicher „New York“. Klarer Menschenverstand eben.

Um nun die „irgendwas eintippen Methode“ sicher zu machen tippen wir nicht wahllos, sondern passen das getippsel an unser Passwort an.

meinemail@tolleranbieter.deNioea7mw99.Y#fasFogLomr34rsk

Erkennt man hier New York?

2.3,709a.098.77910j9.53810

Oder an dieser Stelle 7.9.1980. Sicher nicht auf den ersten Blick.

Haben wir also z.B. ein Passwort mit Punken und Zahlen die unter Umständen noch einen Sinn ergeben oder ein Datum repräsentieren, so verwenden wir zur – man könnte es schon fast „Verschlüsselung“ vor dem Keylogger nennen – ähnliche Zeichen, würden wir nämlich nur Buchstaben verwenden, würde das Ergebnis schon wieder herausstechen. Bei Buchstaben das selbe, mischt wahllos Buchstaben und Zahlen mit rein, verdreht alles nach Belieben.

Sollte der Keylogger nun allerdings so schlau sein und prüfen wann ihr im Passwort Feld seit, oder ob ihr zwischen mehreren Feldern wechselt, kann leider auch mit dieser Methode der Login nicht sicher gemacht werden. Aber ich hoffe soweit haben die Hersteller großer Betriebssysteme mitgedacht und Drittanbieter Anwendungen die Abfrage solcher Daten verboten.

25. Juli 2011

Passwort Generator

25. Juli 2011 - Geschrieben von Martin - Ein Kommentar

Für alle die normalerweiße Passwörter wie z.B. ihren Vornamen verwenden habe ich ein kleines Programm geschrieben, mit dem man kinderleicht Passwörter generieren kann.


Einfach den Regler verschieben und es werden neue Passwörter generiert, deren Länge und Komplexität sich nach der Skala des Reglers richtet. Einfacher gehts nicht. Es werden sowohl Kleinbuchstaben, Großbuchstaben, Zahlen als auch Sonderzeichen verwendet (je nach Stellung des Reglers).

Herunterladen kann man das ganze hier von der dazugehörigen Github Seite: Download auf GitHub.com
Insofern ein JRE (Java Runtime Environment) installiert ist, kann der Password Generator direkt per Doppelklick gestartet werden.
Falls unter Linux .jar Dateien nicht mit Java verknüpft sind, kann das Programm mittels folgendem Kommando auf der Shell gestartet werden (man muss sich natürlich im Ordner der Datei befinden):

java -jar passwordGenerator.jar


(der Dateiname muss je nach Release angepasst werden).

Der Code kann hier eingesehen werden. Die „komischen“ Kommentare stammen übrigens vom Java Editor mit dem ich die Swing GUI erstellt habe ;-)

9. Dezember 2010

WikiLeaks Mirror erstellen ohne FTP

9. Dezember 2010 - Geschrieben von Martin - Ein Kommentar

Wer seine FTP Daten nicht an WikiLeaks herausgeben will oder wer ein Backup auf seinem lokalen PC erstellen möchte kann dies ganz leicht per wget erledigen:

wget -m -k -E -nH http://213.251.145.96/

Allerdings sollte man besser auf einen der bestehenden Mirrors ausweichen um die WikiLeaks Server nicht „unnötig“ zu belasten: http://wikileaks.de/mirrors.html (dazu einfach die IP oben mit der Adresse eines Mirros Server austauschen).

Übrigens, ein komplettes Backup besteht aus mehreren hundert MB!

15. Mai 2010

Multi Accounts aufdecken

15. Mai 2010 - Geschrieben von Martin - 2 Kommentare

Heute geht für einen Leser ein Wunsch in Erfüllung. Viel Spaß beim lesen. Falls du dir auch einen Beitrag wünschen willst, schreib mir eine eMail.

Betreiber von Onlinespielen sowie Chats sind immer auf der suche nach sogenannten Doppel- oder Multi-Accounts, das sind Benutzer, die sich öfter auf einer Plattform wie einem Browsergame anmelden um dadurch Vorteile zu erhalten.

Das man sich dabei nicht nur auf sein Gespür verlassen sollte sollte natürlich auch klar sein, darum was kann man machen, damit solche User von vornherein keine Chance haben? Mit ist das sofort eine IP Sperre in den Sinn gekommen, gesagt getan, ich habe meine bestehenden IP Felder – welche die IP Adresse des letzten Logins beinhält – beim Login des Spielers nach seiner IP Adresse abgesucht und wenn sich ein User binnen weniger Stunden öfter als ein mal eingeloggt hat, hab ich ihm den Login untersagt.

Folgendermaßen sieht mein Script aus:

// IP Adresse vom User holen
$ip = $_SERVER['REMOTE_ADDR'];
// die Zeit ab der nach gleichen IPs gesucht wird
$time = time() - 24*60*60;
// nun kann die IP Adresse im users Table gespeichert werden
mysql_query("UPDATE users SET ip = '".$ip."' WHERE userid = '".$userid."'");
// nun können wir prüfen ob andere Benutzer mit dieser IP vorhanden sind
$count = mysql_num_rows("SELECT userid FROM users WHERE ip = '".$ip."' AND last_login > '".$time."'");
if($count > 1)
{
   die('TO MUCH USERS PER IP!');
}

(Geschrieben in PHP)
Dies wäre nun die Brutale Lösung (Kann allerdings durch zusätzliche Filter wie z.B. Punkte entschärft werden), welche alle Multi Account Spieler Aussperrt. Das kann allerdings auch negative Nebeneffekte haben, und zwar können so Familien, Wohngemeinschaften und Büros diese Seite nicht mehr nutzen, da dort alle über einen Internet Anschluss ins Internet gehen und somit eine IP Adresse haben.

Deswegen empfehle ich solange sich der dadurch entstandene Schaden der durch solche Doppelaccounts entsteht in Grenzen hält erst ein mal ein Script zu schreiben, welches alle Doppelaccountspieler auflistet, um diese explizit zu befragen oder ihre Accounts zu überprüfen.

Folgendermaßen hab ich das einmal für ein Mafia Browsergame gemacht:

$query = mysql_query("SELECT ip, userid, username FROM users");
while($users = mysql_fetch_array($query))
{
  // nun gehen wir alle user nach und nach durch
  // falls auch hier ein Zeitlimit benötigt wird, kann das von oben übernommen werden
  $count = mysql_num_rows("SELECT userid FROM users WHERE ip = '".$users['ip']."'");
  if($count > 1)
  {
    // nun da es ja offensichtlich ein Multiaccount Spieler ist, wird er ausgegeben
    // wenn gewünscht könnte man auch in diesem Schritt Informationen zu den
    // gespielten Accounts holen, allerdings würde das dieses Beispiel sprengen
    echo $users['username'] - $users['ip'];
  }
}

(Geschrieben in PHP)

Nun haben wir 2 Möglichkeiten in Betracht gezogen wie man mit Doppelaccounts fertig wird. Ich hoffe sie finden Anklang, und Helfen den Admins bei ihrer Täglichen Arbeit.