Freitag, 20. Juli 2012

Geomusics knackt MegaEvent-Marke

Das Event Geomusics 2012 hat seit kurzem die 500er Marke bei den Anmeldungen geknackt und somit den Status des MegaEvents bekommen.
Bei dem Event wird neben zahlreichem Musikprogramm eine ganze Menge mehr angeboten. So ist Zweibrücken mit 14 Wherigos eine sehr WIGdichte Gegend, außerdem kommen Statistikfreunde mit 9 Icons im 25 km Radius voll auf ihre Kosten.
Für die Workshopfreunde unter euch gibt es gleich mehrere Angebote: einen Geocaching-Workshop für Einsteiger, einen Kletterworkshop für Anfänger sowie einen Geocaching kreativ Workshop. Vielleicht folgt auch noch ein Wherigo-Workshop für Anfänger.
Wer noch nicht zu den 500 gehört und sich für dieses Festival interessiert, für den gibts den Pressetext des Events:
Herzlich willkommen bei dem Geomusics Event 2012. Am dritten Augustwochenende erwarten euch im idyllischen Zweibrücker Umland drei Tage Spaß, Musik, Caches und viele alte und neue bekannte Cacher aus der Region, Deutschland, Frankreich und Luxemburg. In einer gemütlichen Atmosphäre werden ausgelesene Weine, Cocktails und leckere Speisen und Getränke angeboten. Ein besonderes Highlight ist das große Livekonzert mit bekannten Geocacher Bands und ihren selbst komponierten Songs in den Abendstunden. Neben vielen ausgefallenen Caches wird eine Reihe von speziellen Workshops angeboten. Um den Geldbeutel zu schonen besteht die Möglichkeit kostenlos auf dem Gelände zu zelten. Der Eintritt kostet im Vorverkauf 7 € für Erwachsene und 4 € für Kinder bis 14 Jahre.

Mittwoch, 18. Juli 2012

Tagescode

Voraussetzung: "Einstieg in Lua“
Wer kennt das nicht, man erstellt einen aufwendigen Cache, überlegt sich aufwendige Fragen und knifflige Aufgaben. Der FTF dauert auch einige Zeit, da es ja ein sehr aufwendiger Cache ist.
Cachefund Nr. 2 und 3 drudeln dann schon schneller ein und spätestens wenn Person X den Cache gefunden hat, steigt die Anzahl der Funde exponentiell an. Person X gehört nämlich zur lokalen Mystery-Tausch-Szene, die über eMail-Verteilerlisten Finalkoors von aufwändig gestalteten Döschen weiterverbreiten.
Wer diesen Misbrauch bei einem Wherigo verhindern oder besser gesagt erschweren möchte, der kann eine Art Checkcode einbauen, den man am Ende des Spiels erhält und in den Log schreiben bzw. per eMail senden muss. Es geht in diesem Beitrag nicht darum zu klären, ob dies bei einem WIG zulässig ist, bzw. ob man den Misbrauch kontrollieren sollte oder die Spielverderber einfach sich selber bescheißen lassen sollte. Diese Fragen kann man gerne in bekannten Foren diskutieren.

Abbildung 1: Generierung eines Tagescodes
Hier geht es lediglich um die technische Umsetzung eines Tagescodes. D.h ein Code, der nur für einen Tag lang gültig ist, der (relativ) eindeutig ist und was ganz wichtig ist, den man nicht zurückrechnen kann, um den Code für den nächsten Tag zu berechnen.
Man nennt so einen Vorgang eine Einwegfunktion. "Leicht" zu berechnen aber "schwer" umzukehren. (Siehe http://de.wikipedia.org/wiki/Einwegfunktion).
Abb. 1 zeigt die Erstellung einer Einwegfunktion mittels Multiplikation und ganz wichtig einer Modulo Division. Heute kommt als Ergebnis 5919, morgen 6466 und übermorgen 476. Wer kann daraus den Code für nächste Woche Montag berechnen? (Streng genommen wäre es möglich, wenn man nicht nur drei sondern hunderte Werte hätte, aber der zu betreibende Aufwand stände in keinem Verhältnis zum Nutzen)
Nachtrag vom 20.07: Leider hat sax (siehe Kommentar) völlig recht. Man kann relativ leicht a und b berechnen. Es muss nur die Formel bekannt sein. D.h. um die Sache etwas sicherer zu machen, darf die Formel nicht bekannt sein. Addiert z.B nach dieser Rechnung einen Wert c auf das Ergebnis multipliziert es mit d und rechnet anschließend wieder Modulo e. Das ist zwar immer noch nicht wasserdicht, aber wenn ihr nicht zwei Moduloschritte sondern 3, 4 oder 5 Mal den Rest nehmt, wird es immer schwieriger auf die Formel zu kommen. Ich werde demnächst ne Lösung mittels Hashfunktion, MD5 oder Public-Key als asymmetrisches Verschlüsselungsverfahren untersuchen und vorstellen. Immer vorausgesetzt, dass auch das langsame Oregon die Daten schnell genung berechnen kann.

Wenn man sich die Abbildung genauer betrachtet, wird man feststellen, dass auch Daten wie 31. April oder 30. Februar erfasst wird, aber das stört uns nicht. Wichtig ist nur, dass jeder Tag dabei ist und dass der Code eindeutig ist. Das mit der Eindeutigkeit stimmt nicht ganz hundertprozentig, aber je größer die beiden Zahlen für die Division und die Modulo Rechnung sind, desto unwahrscheinlicher ist es, dass im Log zweimal der gleiche Code auftaucht.

Abbildung 2: In drei Schleifen wird für jeden Tag, Monat und Jahr der Tagescode erzeugt und ausgegeben
Man sollte die beiden Zahlen auf jeden Zahlen aus dem Tutorial abändern, denn sonst kann jeder den Code berechnen.
Da wir eine Einwegfunktion benutzen, können wir natürlich anhand des vom User eingegebenen Codes nicht zurückrechnen, ob das Datum und damit der Code korrekt ist. Abhilfe schafft hier eine Tabelle, die wir uns erzeugen, damit können wir für den entsprechenden Tag nachschauen, ob der Code korrekt ist.
Abb. 2 zeigt drei ineinander geschachtelte Schleifen, die für die Jahre 2012, 2013 und 2014 für jede Kombination aus 31 Tagen und 12 Monaten den Code ausrechnen und mittels print ausgeben. Natürlich kann man die Funktion noch verfeinern, dass der 31. April nicht mit ausgegeben wird, es würde unsere Funktion aber unverhältnismäßig komplex werden lassen.
Da wir die print Ausgabe im WIG-Player nicht sehen können, bedienen wir uns des Urwigo-Simulator um die Tabelle anzuschauen. Einfach das Projekt CodeGenerator mit F5 starten und auf den Reiter "Lua Debug" klicken, um die Werte zu betrachten, zu markieren und in eine Textdatei zu sichern.

Abbildung 3: So gelangt man zur Print-Ausgabe im Simulator.
Wem das noch nicht genug Kontrolle ist -schließlich könnten so immer noch Rudelteilnehmer loggen, wenn nur einer die Aufgabe erfüllt hat- kann man noch den Username (Zugriff in lua mittels Player.Name) mit in den Code einkodieren. Dazu nutzen wir die string.byte(myString, position) Funktionalität, die die einzelnen Buchstaben in ihren ASCII-Code umwandeln. string.byte("ABCDE",1) liefert z.B 65, da dies der Code für das erste Zeichen im String, nämlich A ist. Um den Usernamen komplett zu erfassen, kann man über alle Buchstaben iterieren und die Summe der ASCII-Werte der Variablen days aus Abb. 1 hinzufügen. Doch Vorsicht: Hierdurch steigt der Testaufwand um ein Vielfaches, denn nicht nur Groß- und Kleinbuchstaben ("klein a" besitzt den ASCII-Code 97) müssen abgedeckt werden, auch Leerzeichen Umlaute, Zahlen und alle anderen Zeichen, die Groundspeak als Usernamen erlaubt, müssen durch die Funktion erfasst werden. Ebenso steigt der Wartungsaufwand für den Cache, da man bei jedem Log, manuell den Namen in den Codegenerator eingeben muss.
Wer sich hierfür interessiert, kann mir ne Mail zukommen lassen, damit er ein kleines Java-Progrämmchen erhält, mit dem Eingabe und Codeausgabe schneller gehandelt werden können. Zu bedenken ist auch, dass man die Cachesuche erheblich erschwert: Jeder WIG-Spieler muss sich das Cartridge selbst herunterladen und dabei auf wherigo.com mit dem Usernamen eingeloggt sein, mit dem er auf geocaching.com loggen möchte. Außerdem schließt man so auch alle Cacher aus, die keine WIG-fähiges Gerät besitzen und so nicht an den Code kommen.
Mir persönlich wäre es definitiv zu viel Kontrolle, aber das muss jeder selbst entscheiden. Ich möchte lediglich auf die technische Möglichkeit hinweisen.

Sonntag, 1. Juli 2012

Evakuierung: Auf MEGA-Event folgte "MEGA"-Nacht

So sehr ich beim letzten Mal über die Zeltplatzlösung geschimpft habe, so sehr muss ich das Megaevent Geogames in den Himmel loben. Es war nämlich ein perfektes Event.
Das Wetter stimmte, das Programm war klasse, die Vorbereitung bis ins Details durchdacht und die Teilnehmer einfach Spitze.
Der krönende Abschluss war das Konzert der Dosenfischer, die ich vorher nie live gesehen hatte. Aber der richtige Knaller sollte erst noch kommen:
Während wir zum Ende des Konzertes ein wenig übers Gelände streiften um Luft zu schnappen, sahen wir ständig Trauben von Cachern, denen wir bereitwillig folgten. Es hat schon seinen eigenen Scharm, wenn man mit 40 Cachern an ner Dose steht und keiner weiß, wie der Cache heißt. Ja wir haben gefuddelt und haben auch den ein oder anderen Multi / WIG eingesammelt ohne wirklich was dafür getan zu haben. Aber gerade diese Situation, dass man länger am Cachenamen bzw. GCCode rätselt als am Versteck zu knappern, hatte so ihren Reiz.
Auf dem Rückweg sahen wir schon die immer näher kommenden Blitze sowie Lautsprecherdurchsagen vom Event "Bla bla bla... Unwetterwarnung ... Zur eigenen Sicherheit ... Bitte alle Teilnehmer in Halle 2". Als ein Blitz direkt über uns den Himmel zeriss, war uns auch klar warum evakuiert wurde.
Als wir in der Messehalle 2 ankamen, bat sich uns ein merkwürdiges Bild. Von überall kamen Cache-T-Shirts mit Träger angerannt, die nicht nur ihr T-Shirt sondern auch direkt Luftmatraze, Schlafsack, ISO-Matte und Kopfkissen unterm Arm trugen. Oder Bierkisten, je nach Gusto. Da wurden Euro-Palletten und Zelte angeschleppt um Notunterkünfte einzurichten (in der Halle) und die besten Schlafplätze reserviert.
So stelle ich mir Prag 89 vor. Nach Hans-Dietrich Genscher habe ich aber vergebens Ausschau gehalten: Wir sind zu Ihnen gekommen, um Ihnen mitzuteilen, dass heute Ihre Übernachtung..."