Spam

Ich hab mich gerade könglich über die folgende Spammail amüsiert. Also selbst der Google-Translator kann das eigentlich nicht so schlecht hinbekommen. Liebe Dascha, ebenfalls „beste Grube“ an dich🙂

 Hi mein neuer Freund. Ich mit einer kleinen Verzogerung euch schreibe, ich
hoffe dass Sie noch Interesse an einer ernste Beziehung sind. Ich bin ein
bezaubernd und alleine Madchen. Ich suche einen schonen Mann. Bietet
grundlegende Informationen uber mich. Mein Name ist Dascha. Ich fuhre ein
gesundes Leben und die Natur genie?en. Ja klar, wie jeder, ich habe eine
Nachteile, und ich bin nicht vollkommen. Ich bin zum Alleinsein mude, und
ich bin gelangweilt, allein zu leben, wie ich bin verspitzen, um wirklich
einen liebenden Liebe zu feststellen, der mir treu sein wird. Ich bin nicht
jugendlich, ich bin 26 Jahre alt. Ich bin offenherzig fur Liebe und bereit,
sich auf einen einzigen liebenden Mann zu weihen. Ich liebe Neue zu lernen.
Ich finden nach einem Mann, der mein Lebensinhalt sein wurde, ein
verlasslicher Boyfriend und ein passioniert Liebhaber. Ich denke, du bist
perfekt mit dieser Rolle fertig! Ich werde fur dich absolut gewidmet und
aufrichtig sein. Ich freue mich auf Ihre Antwort. Beste Grube! Ihre
neueFraulein Dascha.
Veröffentlicht unter Allgemein | Kommentar hinterlassen

Schnelleres Internet

Seit heute habe ich einen neuen Vertrag bei O2. Vorher sah mein lausiges DSL 16.000 so aus:

dsl_vorherBei einem nominellen DSL 16.000 gehe ich natürlich nicht davon aus die vollen 16.000 kbit/s zu haben, aber nur effektiv ca. ein Drittel davon zu erreichen ist dann doch schon ziemlich schlecht. Jetzt ist es DSL 50.000 und das kommt diesmal auch viel näher an das nonimell Mögliche ran:

dsl_nachherIch bin positiv überrascht🙂. Der Ping hat sich übrigens auch verbessert.

Veröffentlicht unter Allgemein | Kommentar hinterlassen

Mein Geburtstagsgeschenk

Wie im letzten Blog-Eintrag berichtet, hatte ich Dario ein etwas nerdiges Geschenk gemacht, indem ich einen Amazon-Gutschein als Geocache versteckt und die Koordinaten etwas verschleiert habe. Daraufhin habe ich zu meinem eigenen Geburtstag (im Februar) von Dario und mehreren Arbeitskollegen etwas ähnliches geschenkt bekommen. Das eigentliche Geschenk ist das folgende, kleine Kästchen mit roter, blinkender LED:

Ich hab direkt vermutet, dass es sich hierbei um einen Morse-Code handelt. Das lag insofern nahe, weil Dario zuletzt auch was mit Morsen für Yvonnes Adventskalender gemacht hatte. Ich dachte mir er verwendet sicher seinen alten Code wieder🙂. Um das zu bestätigen habe ich erstmal ein paar Sekunden mit meiner alten Digicam aufgenommen und dann langsam abgespielt. Das erste Wort ist „BOCHUM“ … gut, damit ist die Vermutung des Morse-Codes also bestätigt. Dario hat allerdings mit einem schadenfrohen Lachen angedeutet, dass die Datenmenge durchaus größer sein könnte und mich das etwas beschäftigen wird. Ich kann nicht morsen und hab auch keine Muße es zu lernen. Also musste eine automatische Lösung her!

Ich hatte anfangs auch überlegt den Kasten zu öffnen und irgendwie den Anschluss der LED an meinen Rechner anzuschließen um das Signal direkt abzugreifen. Ich bin aber alles andere als ein Bastler und ich wollte das Gerät auch nicht kaputt machen. Also überlegte ich mir das Morsen aufzunehmen und dann mit einem eigenen Programm zu dekodieren. Nachher wurde mir übrigens gesagt, dass es dafür auch eine App gegeben hätte. Als Nicht-Smartphonebesitzer hab ich nach sowas erst gar nicht gesucht😉.

Versuch 1: Webcam (Logitech C170)

Ich hab es zunächst mit meiner Webcam und dem Programm Simple Webcam Recorder versucht. Allerdings schaffte meine billige Webcam nur lausige 12-14 FPS (frames per second). Das ist tatsächlich zu langsam um kurz und lang im Morse-Code eindeutig zu unterscheiden.

Versuch 2: Digicam (Panasonic Lumix DMC-FS16)

Ok, dann halt meine Digicam. Die schafft auf jeden Fall gute 30 FPS. Die Qualität hatte ich auf das niedrigste eingestellt (320 x 240 Pixel) um möglichst lange aufnehmen zu können. Allerdings musste ich dann feststellen, dass eingestellte Qualität und Speicherplatz der SD-Karte vollkommen egal sind: Es gehen immer nur maximal 15 Minuten! Einzelne Abschnitte aufzunehmen und dann zusammen zu puzzlen war für mich auch keine Option (der Kasten mit der LED hat keine Pause-Taste!).

Versuch 3: Integrierte Webcam vom Laptop (HP 6530b)

Die Webcam ist – wie üblich für einen Laptop – im Deckel integriert. Das macht den Aufbau etwas fummeliger, aber es gibt keine Einschränkung bezüglich Speicherplatz, und die Framerate stimmte mit 22 FPS diesmal auch. Den Aufnahmeprozess hatte ich noch etwas verfeinert, indem ich diesmal VirtualDub als Software verwendet und dort den Bildausschnitt für die Aufnahme auf winzige 8 x 20 Pixel verringert habe (weniger Daten, schnellere Verarbeitung!). Die Aufnahme lief über Nacht in einem abgedunkelten Raum um keine Schwankungen der Helligkeit im Bild zu haben. Ich habe über acht Stunden lang aufgenommen (letztendlich hätten auch ca. 30-40 Minuten Aufnahmezeit genügt – darüber war ich schon fast etwas enttäuscht ;)). Danach hatte ich eine ca. 240 MB große Datei mit Bilddaten. Ich hatte es vorher mit einzelnen Bitmaps versucht, aber die schiere Anzahl an Dateien machte diesen Ansatz unbrauchbar.

Die Aufnahme war im Kasten und ich hab mir ein einfaches Programm in C++ geschrieben um die Daten zu dekodieren. Das Programm ist nur ca. 260 Zeilen lang. Und zwar werden für jedes Bild alle Rotwerte aufaddiert. Damit hat man also eine Summe pro Bild, anhand dessen man zwischen „leuchtet“ und „leuchtet nicht“ unterscheiden kann. Den Schwellenwert um zwischen diesen Zuständen zu unterscheiden hab ich einfach als Hälfte zwischen Maximum und Minimum aller Summen genommen. Wieviel Bilder nun ein Kurz, ein Lang oder eine Pause ausmachen, hatte ich hingegen händisch anhand des Videos bestimmt und entsprechend im Programm kodiert. Das Dekodieren des Morsens ist dann am Ende nur noch eine Lookup-Table (bzw. std::map<std::string, char> ;)).

Folgender Text kam raus:

BOCHUM, DER 21.02.2015
HALLO FELIX,
ALLES GUTE ZUM GEBURTSTAG.
WIR HABEN UNS GEDACHT, WIR MACHEN ES DIR AUCH EIN WENIG KOMPLIZIERTER.
VIEL SPASS DAMIT.
ANDRE, CHRISTOPH, DARIO, NADINE, OLIVER, THOMAS UND YVONNE
ACHTUNG, FESTHALTEN. ES GEHT LOS
IT’S SHOWTIME
HEY CHRISTMAS TREE CA
YOU SET US UP 8
DO IT NOW DUDE CA 5
HEY CHRISTMAS TREE CB
YOU SET US UP 4
DO IT NOW DUDE CB 4
HEY CHRISTMAS TREE CC
YOU SET US UP 30
DO IT NOW DUDE CC 11
HEY CHRISTMAS TREE CD
YOU SET US UP 28
DO IT NOW DUDE CD 8
HEY CHRISTMAS TREE CE
YOU SET US UP 36
DO IT NOW DUDE CE 23
HEY CHRISTMAS TREE CF
YOU SET US UP 8
DO IT NOW DUDE CF 5
HEY CHRISTMAS TREE CG
YOU SET US UP 26
DO IT NOW DUDE CG 4
HEY CHRISTMAS TREE CH
YOU SET US UP 11
DO IT NOW DUDE CH 11
HEY CHRISTMAS TREE CI
YOU SET US UP 27
DO IT NOW DUDE CI 8
HEY CHRISTMAS TREE CJ
YOU SET US UP 49
DO IT NOW DUDE CJ 23
HEY CHRISTMAS TREE CK
YOU SET US UP 8
DO IT NOW DUDE CK 5
HEY CHRISTMAS TREE CL
YOU SET US UP 18
DO IT NOW DUDE CL 4
HEY CHRISTMAS TREE CM
YOU SET US UP 30
DO IT NOW DUDE CM 11
HEY CHRISTMAS TREE CN
YOU SET US UP 34
DO IT NOW DUDE CN 8
HEY CHRISTMAS TREE CO
YOU SET US UP 26
DO IT NOW DUDE CO 23
HEY CHRISTMAS TREE CP
YOU SET US UP 9
DO IT NOW DUDE CP 5
YOU HAVE BEEN TERMINATED
LISTEN TO ME VERY CAREFULLY DUDE
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE KEY
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE BABY
HEY CHRISTMAS TREE BURN
YOU SET US UP 0
GET TO THE CHOPPER BURN
HERE IS MY INVITATION KEY
GET DOWN BABY
ENOUGH TALK
TALK TO THE HAND BURN
HASTA LA VISTA, BABY

Nach einem verwunderten Blick auf den skurrilen Text half Google weiter: Es handelt sich um ein Programm in der esoterischen Programmiersprache Arnold-C. Alle Anweisungen in Arnold-C sind Zitate von Arnold Schwarzenegger aus diversen Filmen, in denen er mitgespielt hat.  Der Erfinder dieser Sprache bietet praktischerweise auch einen Interpreter (in Java) an um Programme in Arnold-C direkt auszuführen. Witzigerweise kann der Interpreter auch ein Programm in eine *.wav-Dateie konvertieren, die quasi das Programm vorliest🙂. Wie dem auch sei, folgendes kam bei obigem Programm als Ausgabe:

3
0
19
20
13
3
22
0
19
26
3
14
19
26
3
4

Wenn man die Zahlen als Abstand zu A betrachtet (A = 0, B = 1, C = 2, …), dann kommt man auf folgenden Text: „DATUNDWAT[DOT[DE“. Aha, eine URL! Ich weiß nicht ob Dario die URL in Zukunft noch anderweitig verwenden will, daher hier ein Screenshot der Seite hinter datundwat.de:

paroleUnd da hing ich nun fest. Ich hab diverse Dinge einfach ausprobiert, hab mir den HTML-Quelltext, die CSS Stylesheets und sogar die Bilder (das „Parole“-Bild und das graue Hintergrundbild) angeguckt um darin irgendwelche Hinweise oder Daten zu finden. Nichts. Gar nichts. Nachdem ich die wildesten Sachen probiert habe, musste ich dann Dario fragen. Und ich KONNTE gar nicht weiter kommen😦. Da Ganze war noch nicht fertig und Dario hatte nicht vermutet, dass ich so schnell sein würde.

Dann vergingen mehrere Wochen und irgendwann sagte mir Dario per SMS, dass es weiterginge. Die Seite sah unverändert aus, aber es gab etwas neues im HTML-Quelltext:

<META name="hint @ phone:" content="fd5c0dbe192903f389cad1fb90f076b4dfd63efc8d634af62864706a7fac235b">

Aha, scheinbar ein Hex-String aus 64 Zeichen, also 32 Bytes. Die Zeichen im Hex-String scheinen relativ gleichverteilt, könnte also ein Hash-Digest sein, z.B. SHA-256. Ehrlich gesagt hatte ich aber an dieser Stelle nicht verstanden was mit „hint @ phone“ gemeint sein könnte. Ich dachte es könnte irgendwas mit der SMS zu tun haben, die mir Dario geschickt hatte. Aber der Text dieser SMS wirkte ganz normal. Irgendwann musst ich dann doch um Hilfe fragen und bekam als Tipp, dass eine Telefonnummer gesucht sei. Damit war alles klar: Es ist der SHA-256 Digest einer Telefonnummer, die ich per Brute-Force suchen muss. Auch hierzu hab ich ein relativ kurzes Programm in C++ in die Tasten gehackt (nein, ich mag C++ eigentlich überhaupt nicht, aber ich bin darin ziemlich geübt ;)). Für die Crypto hab ich mal eben OpenSSL verwendet. Meine Annahme war, dass die Telefonnummer keine Sonder- oder Leerzeichen enthält und es entweder eine Bochumer Festnetznummer oder eine Handynummer ist. Also hat mein Programm Ziffernkombinationen in aufsteigender Länge durchiteriert und für jede Kombination „0234“ (Bochumer Vorwahl) oder alle gängigen Handy-Vorwahlen durchprobiert. Und dies jeweils mit „0“ oder mit „+49“ am Anfang. Das Programm hatte ca. eine halbe Stunde gerrechnet und mir dann die richtige Telefonnummer ausgespuckt. Der oben stehende Hash-Wert ist übrigens nicht das Original, sondern an mehreren Stellen modifiziert (soviel Privatsphäre muss sein).

Angerufen: Es läuft vom Band „Das Schlimmste ist, wenn das Bier alle ist“ von den Kassierern (wie mir Dario später mitteilte lief das auf einem Anrufbeantworter seiner Fritzbox). Das Passwort war dann „kassierer“. Pingeligerweise auch nur genau in dieser Schreibweise. Ich hatte vorher versucht den Songnamen in verschiedensten Variationen einzugeben, weil mich das eher an eine „Parole“ erinnert hat😉.

Nach korrekter Eingabe des Passworts bekam man von der Seite folgendes Bild:

datenHässlicherweise wirklich als Bild! D.h. ich musste das für die Weiterverarbeitung erstmal in Text umwandeln. Mit einem Gratis Online-OCR-Tool ging das zwar automatisch, strotzte aber vor Fehlern. Also hab ich das Ganze nochmal händisch abgetippt und mit dem OCR-Ergebnis abgeglichen. Offensichtlich ist der Text BASE64-kodiert. Nach dem Dekodieren kam aber kein Text, sondern irgendwelche Binärdaten raus. Das Tool ent lieferte mir eine sehr hohe Entropie für die Daten. D.h. sie sind wahrscheinlich komprimiert, verschlüsselt oder bestehen nur aus zufälligem Unsinn😉.

An dieser Stelle hing ich eine ganze Weile fest. Irgendwann kam ich dann auf die Idee mal in den Meta-Daten des Bildes zu gucken. Und siehe da: in den EXIF-Daten sind GPS-Koordinaten drin! (Das Bild oben ist nicht das Originalbild, denn Dario möchte daraus evtl. später einen öffentlichen Geocache machen).

Nachdem Dario und ich erst bei dem Cache für sein Geschenk waren,  waren wir zusammen an den entsprechenden Koordinaten wo ich mich dann auf die Suche machte. Ich bin bei Geocaching eher unerfahren und dann bedurfte es auch eines Tipps bis ich auf die Stelle gestoßen bin. Dario hatte diesen Behälter (Kanaldeckel samt Rohr?) vergraben:

cache1cache2

Darin war dann ein kleiner Zettel mit dem AES256-Schlüssel für die Daten versteckt:

schluesselDamit ließen sich die Daten dann bequem mit dem Kommandozeilentool von OpenSSL entschlüsseln. Und heraus kamen 9 Amazon-Gutscheine. Das war viel Aufwand, aber es hat sehr viel Spaß gemacht🙂. Ich überlege schon jetzt wie ich das Geschenk für Darios nächsten Geburtstag gestalte😉.

Veröffentlicht unter Allgemein | Verschlagwortet mit , | Kommentar hinterlassen

Darios Geburtstagsgeschenk

Anfang diesen Jahres hatte Dario seinen Geburtstag gefeiert und mein Geschenk war letztendlich ein Amazon-Gutschein über 13,37 Euro. Damit das aber nicht zu langweilig wird, hatte ich den Gutschein in einem Geocache versteckt und die Koordinaten ein wenig verschleiert. Konkret hatte ich Dario auf seiner Feier nur einen Zettel überreicht, auf dem neben einem QR-Code folgender Text stand:

Lieber Dario,

zu deinem Geburtstag wünsche ich dir alles Gute! Das Geschenk für dich ist zwar nicht besonders einfallsreich, aber dafür ist der Weg dahin umso kreativer😉.

Viel Spaß! Felix

PW: DarioWirdLangsamAlt

Der QR-Code führte zu einem Download für ein passwortgeschütztes ZIP-Archiv (das Passwort steht im Text). Entpackt man das ZIP-Archiv, findet man folgendes Bild als Bitmap:

Dario_SteganographieDas Originalfoto ist während einer gemeinsamen Geschäftsreise in den USA entstanden. Wir waren bei einer Firma zu Besuch und am Eingang gab es ein großes Schild mit dem Firmenlogo, neben dem wir uns gegenseitig fotografiert haben🙂. Das Firmenlogo habe ich im Bild entfernt und gegen den Text „LSB(R)“ in der Schriftart Wingdings ersetzt.

Was soll nun LSB(R) bedeuten? LSB steht für Least Significant Bit, also niederwertigstes Bit. Dario hatte zunächst das R als ASCII-Wert interpretiert, aber da bliebe ja nur ein einzelnes Bit als Information über. Stattdessen steht das R für Rot. Im Bitmap war nämlich in den niederwertigsten Bits der Rotwerte ein Text kodiert. Dies ist eine sehr klassische Form der Steganographie. Wenn man sich also die Mühe macht die entsprechenden Bits aus der Datei auszulesen, erhält man folgenden Text:

Soweit so gut …

Chiffre = XTEA
Modus = ECB
Key = k1 | k2 | k3 | k4

f(7)  = 1 7
f(10) = 1 2 1 5
f(23) = 1 23
f(24) = 3 2 1 3
f(99) = 3 3 1 11

f(k1) = 1 5 2 13 1 47 1 89 1 443
f(k2) = 4 2 1 7 3 17 1 67 1 101
f(k3) = 1 743 1 1091 1 1171
f(k4) = 2 103 2 139

hex(ciphertext) = F31019A5E998B13E5F0296FA1CB533C92E338E3469F475E9D
CDBECA06892D27687E694297FD0584A659EC03BA5930EE28
3A4A5076FD932B23A40C8FCE87DC35D2EAF37A4B95AAF6E8
A0658916F074A460CA8DD75D1592BCC75CA70CCCA16834FE
3BE77511CA5C89089BB5838B389BDE2D77665E700F49CC1A6
7D12307303A212

Hier muss ich direkt zugeben, dass der obige Text schon korrigiert ist. Ursprünglich hatten sich da diverse Fehler eingeschlichen. Naja, das passiert halt, wenn man mit dem Geschenk erst zwei Tage vorher beginnt😉. Bei diesem Teil handelt es sich um eine Verschlüsselung, bei dem der Schlüssel aus vier Teilen besteht (k1 bis k4). Diese Teile sind nicht direkt angegeben, sondern nur als Ergebnis der Funktion f(), die nicht erläutert, sondern nur durch Beispiele veranschaulicht wird. Die Lösung dazu war folgende: f() gibt eine Zerlegung in Primfaktoren an. Zum Beispiel ist f(24) = 3 2 1 3, d.h. 3 mal der Primfaktor 2 und 1 mal der Primfaktor 3 (24 = 2 * 2 * 2 * 3). Entschlüsselt man dann das gegebene Chiffrat, erhält man folgenden Text:

RmFzdCBnZXNjaGFmZnQhDQpXbz8gVzEgKyBXMg0KVzE6ID
MxLjEyLiwgYWJlciBuaWNodCBtaXQgaQ0KVzI6IGtsZWluZXM
gT3JjaGVzdGVyDQpHcm9lc3NlPyAxZS05

Das ist jetzt nicht mehr verschlüsselt, sondern nur noch kodiert. Und zwar mit BASE64. Ich habe dabei extra darauf geachtet, dass die Zeichen des zu kodierenden Textes ein Vielfaches von drei sind. Dadurch hat man dann keine verräterischen „=“-Zeichen am Ende😉. Das Dekodieren ist einfach und dafür gibt es jede Menge online-Tools. Am Ende kommt dann folgender Text raus:

Fast geschafft!
Wo? W1 + W2
W1: 31.12., aber nicht mit i
W2: kleines Orchester
Groesse? 1e-9

„Größe“ soll dabei andeuten, dass es um einen Nano-Cache handelt. Ich bin jetzt kein erfahrener Geocacher und mir auch nicht sicher ob ich diesen Begriff richtig verwende. Auf jeden Fall war der Cache sehr klein😉. Als „Wo“ kommt die Sylvesterkapelle in Bochum raus. Dort gibt es drei solche Steinplatten:

P1010084

Oben ist ein kleiner Metallbeschlag und darunter hatte ich den Amazon-Gutschein versteckt (nur der Code auf einem schmalen Streifen Papier, das zusammengerollt in Plastik eingewickelt war).

P1010085Eigentlich war es ja nicht so clever den ganzen Gutscheincode dort zu verstecken, aber scheinbar war der Cache gut genug versteckt um nicht gefunden zu werden. In der Nähe scheint es noch einen weiteren Geocache zu geben, der aber deutlich größer sein müsste.

Dario hatte sich teilweise sehr lange Zeit gelassen mit dem Geburtstagsgeschenk. Wir waren erst vor wenigen Wochen gemeinsam dort und hatten viel Spaß bei Darios Suche. Anschließend war ich dran und musste meinen Geocache suchen, denn ich hatte von Dario und einigen Arbeitskollegen etwas ähnliches geschenkt bekommen. Dazu mehr im nächsten Blog-Eintrag🙂.

Veröffentlicht unter Allgemein | Verschlagwortet mit , | Kommentar hinterlassen

Long-term Support

Nach einem Update wollte der Avast-Virenscanner einen Neustart. Während man das Windows Update nur mit bis zu 4 Stunden vertrösten kann, bevor es einen erneut wegen des Neustarts nervt erinnert, ist hier ein ganzes Jahrhundert möglich!

avast_reboot

Da dieses Jahrhundert doch recht jung ist, kommt das wohl einem „nerv mich nie wieder mit dem Scheiß!“ gleich😉.

Veröffentlicht unter Allgemein | Verschlagwortet mit , | Kommentar hinterlassen

Good bye blog.de, welcome wordpress.com!

Da blog.de gegen Ende diesen Jahres den Betrieb einstellt, musste ich mit meinem alten Blog umziehen. Da blog.de immerhin einen (mittlerweile) kostenlosen Export zu WordPress anbietet, dachte ich mir wordpress.com wäre vielleicht einen Versuch wert. Eine der größten Hürden dabei war die Namensfindung, denn nahezu alles, was ich mir ausgedacht hatte, war schon belegt. Darunter waren z.B.

  • elflexo
  • techflex
  • xelf
  • weltraumaffe (in Anlehnung an Fight Club)
  • currywurstpommes
  • mindscape
  • undefinedreference (typische Fehlermeldung der Linkers)
  • justageek
  • pointlessthoughts

Außerdem erlaubt WordPress scheinbar keine Sonderzeichen. Zahlen wollte ich jetzt auch nicht im Namen haben, denn das finde ich unkreativ. Der jetzige Name bezieht sich übrigens auf die x86 Instruktion CMPXCHG. Das hat allerdings keine besondere Bewandnis, ich wollte nur irgendwas technisch klingendes😉. Nach einigen Problem mit dem Import, etlichen Designeinstellungen, ein paar Korrekturmaßnahmen und dem manuellen Wiederherstellen des letzten Blogeintrags bin ich nun also hier angelangt und möchte demnächst auch wieder häufiger (über Sinnloses) bloggen.

Veröffentlicht unter Allgemein | Verschlagwortet mit | Kommentar hinterlassen

Cookie Farm abgeschaltet

(Wiederhergestellter Eintrag vom 7.2.2015)

Ich habe mich nach gut einem 3/4-Jahr entschieden meine Cookie Farm wieder abzuschalten. Eigentlich wollte ich noch mindestens 200 von jeder Gebäudeart haben, aber das ist mir jetzt doch zu langwierig. In der Zeit, in der mein PCDuinoV2 24/7 mit Cookie Clicker ausgelastet war, wurden 856571 Sextillion Cookies erzeugt. Hier noch weitere Statistiken:

cc_stats

cc_achievements

Veröffentlicht unter Allgemein | Kommentar hinterlassen