[#WLANHACKDING] Also, mechanisch gesehen…

Immerhin. Vom mechanischen her gesehen ist das WLAN-Hack-Ding fertig. Trotz der immerwiederwährenden Abstürze, vorallem weil ich mich nicht beherrschen kann und beim festschrauben des Raspberrys auf dem Bildschirm immer wieder auch wichtige Bauteile berührte und damit Kurzschlüsse verursache. 🙄

image

Aber naja. Irgendwann hatte ich dann alles angeschlossen. Und zu meiner großen freude funktionierte das Display, obwohl das upgrade nie wirklich abgeschlossen wurde und noch 106 Packages fehlten. Ich muss sagen, dass das OnBoard-WLAN mir wirklich viel Arbeit erspart hat. Einfach beim ersten Start von Raspbian anklicken, Code eingeben und Fertig. Und seitdem das Display funktioniert, brauche ich auch keinen Fernseher mehr an mein Ding anstöpseln, das funktioniert jetzt alles tragbar.
Auf jeden Fall läuft es jetzt. Touch und Screen funktionieren super und auf anhieb – nur ein OnScreen-Keyboard konnte ich noch nicht installieren.

image

Ach ja – und auf dem Kopf ist es noch 😜
Aber das wird auch noch. Jetzt mache ich mich an die mobile Stromversorgung, die zweite WLAN-Antenne und natürlich die Installation von Kali Linux.

[#WLANHACKDING] Auspacken! Anschließen!

Es ist da, es ist da, es ist dadadadada! Mein Packet mit den Grundteilen des WLAN-Hack-Ding ist soeben angekommen. Natürlich sofort ausgepackt halte ich nun einen Raspberry Pi 3 und das Offizielle Raspberry Pi Touchscreen-Display in Händen.
Auch dabei waren eine Hülle für die beiden Dinger, wobei ich sagen muss, dass die Verarbeitung der Hülle für meine Begriffe doch etwas zu wünschen übrig ließ.
Aber zum Glück nur an Stellen, die man nachher eh nicht mehr sieht. Puh. Auch die Mitgelieferte Micro-SD-Karte samt Adapter war mir sehr Hilfreich, da ich so direkt loslegen konnte. Nun lasse ich mit
sudo apt-get update && apt-get upgrade
den Pi Updaten, danach soll er laut raspberrypi.org das Display selbstständig erkennen.

[#WLANHACKDING] – Wieland baut ein Kali Tablet

Ich habe natürlich mal wieder viel zu viel Geld übrig, weswegen ich mich jetzt mal an den Bau eines Kali Linux Tablet machen möchte. Und natürlich werde ich wie jeder zweitklassige Betreiber eines Blogs, meine Arbeitsschritte hier dokumentieren inklusive Fotos und und einem billigen Hashtag und allem was dazu gehört. Ah! Kawaaai! Ich habe damit angefangen, mir zur Feier meiner letzten Abiturprüfung das basis-kit für mein Projekt zu holen. Bei reichelt.de habe ich daraufhin ein Kit gefunden, das genau das enthält, was ich brauche.
image

Es beinhaltet einen 7 Zoll Touchscreen und einen Raspberry Pi 3. Das alles kommt zusammen mit einer Hülle, in die das alles auch noch perfekt reinpasst. Kabellage und alles was dazu gehört ist natürlich auch inklusive. Beiliegend ist zum Beispiel auch eine SD-Karte auf der schon raspbian installiert ist, aber ich werde mir ja sowieso eine neue holen müssen, da ich ja Kali installieren will.
Den nächsten Artikel gibt’s, wenn das Paket mit den Teilen angekommen ist. 😍
image

Intelligentes Zielen bei Spielen

In vielen Spielen sieht man Geschütztürme oder NPCs, die anscheinend sehr gut Zielen gelernt haben. Darum soll es in diesem Beitrag gehen, wie man auch am Titel unschwer erkennen kann.
Ich habe mich schon immer gefragt: Wie geht das? Wie kann man das als Algorithmus formulieren? Und kann ich das selber auch machen? In der letzten Woche bin ich nun auf eine Lösung gestoßen. Ich hatte mich an diesem Thema festgebissen, wollte es aber nicht Googlen, sondern selber herausfinden. Meine Idee bekam ich durch… naja… Mathe :/. Leider ist der Unterricht dich zu etwas nütze und das muss man sich erstmal eingestehen. Da ich so überaus intelligent bin, gehe ich an ein Gymnasium und dort gibt es nunmal auch diesen sagenumwobenen „Mathematik Unterricht“. Als Thema hatten wir Vektorrechnung und das kann man für das Programmieren grafischer Anwendungen sehr sehr sehr sehr sehr sehr sehr gut gebrauchen!
Meine Idee war es eine Flak (also für alle Nicht-N24-Gucker: ein Luftabwehrgeschütz.) so auf meinen Mauszeiger schießen zu lassen, dass sie ihn trifft, wenn das Projektil an der Maus ankommt. Sie musste also vor das Ziel schießen und dieses Vorziehlen wollte ich als Algorithmus fassen. Nach einigen Überlegungen kam ich auf folgenden Ansatz:

Die Kugel hat eine festgelegte Geschwindigkeit: in meinem Fall 10 Pixel/Einheiten pro Frame
Das Geschütz ist in der Mitte des Fensters, welches eine Abmessung von 800 mal 600 Pixeln hat.
Die Maus ist das Ziel und hat auch eine Gesschwindigkeit:
Diese lässt sich aus der Änderung der Koordinaten der Maus zwischen zwei Frames ausrechnen.

MausX-MausX_Vorher=AbstandX
MausY-Mausy_Vorher=AbstandY

Die Länge dieses Vektors, also die Geschwindigkeit ergibt sich dann so:
Geschwindigkeit²=AbstandX²+AbstandY2 (Für alle Angehörigen des Bildungsbürgertums: Das ist der Satz des Pythagoras.)
Die Wurzel aus Geschwindigkeit² ist logischer Weise die Geschwindigkeit.

Als nächstes Überlegte ich mir folgendes:
Vereinfacht gesehen, bewegt sich das Ziel (die Maus) auf einer Geraden, solange sie nicht ihre Richtung ändert oder der Nutzer die Geschwindigkeit der Mausbewegung ändert.
Nun wird jedes Pixel auf der Geraden, welches vor der Maus liegt, kontrolliert:
Der Abstand zu dem ausgewählten Pixel geteilt durch die Geschwindigkeit der Maus ergibt einen Wert.
Der Abstand zwischen Geschützturm und dem Pixel geteilt durch die Geschwindigkeit der Kugel (10) muss den gleichen Wert ergeben.
Hier nochmal als Skizze:
Skizze

Wie man sieht, passen die jeweiligen Geschwindigkeiten vier mal in den jeweiligen Abstand zum Vorhaltepunkt. Dieser Punkt wird also von der Maus und dem Projektil in vier Frames erreicht.

Ich habe mein Programm in Python geschrieben und es funktioniert gut. ABER nicht perfekt und das liegt daran:

-Die unendlich vielen Punkte der geraden können nicht alle durchgecheckt werden also lasse ich in meinem Programm insgesamt rund 100 Pixel vor der Maus kontrollieren. Deswegen schießt das Geschütz nicht immer sondern bleibt einfach stehen, wenn die Werte nicht genau übereinstimmen. Erst nach einer erneuten Bewegung der Maus findet das Geschütz wieder einen Punkt an den geschossen werden soll.

-Zwischen den einzelnen kontrollierten Punkten der Geraden könnten weitere passende Vorzielpunkte liegen, die aber übersprungen werden, da mein Check-Algorithmus nicht sehr viele Stellen nach dem Komma beachtet sondern immer eine Pixel-Einheit weiter springt.

-Das ganze Ding ist eine ungenaue Kiste, da ich kein Matheprofessor bin.

Insgesamt ist das Programm aber sehr gut gelungen und ich bin sehr zufrieden damit, denn es macht genau das was es soll: Treffen! Die meiste Zeit trifft es die Maus wirklich!
Man kann dann z.B. noch kleine Spielereien hinzufügen wie einen Lebensbalken der Maus oder die Munition des Turms begrenzen.

So sieht mein Endresultat aus:

preview

Oben ist ein Lebensbalken für die Leben des Spielers. Die Maus ist ein Ufo und in der Mitte ein einfach angedeuteter Geschützturm, der sich passend ausrichtet und dreht.

ctOS-ing Minecraft Maps

Ich bin gerade dabei, einige Minecraft-Maps, die Städte darstellen, mit einem ctOS-ähnlichem System auszustatten. 
Genau wie in Watch_Dogs führe ich hier   folgendes ein:
– Jedes gerät wird mit einem vorinstallierten ctOS-Ableger geliefert.
– Um ein Gerät zu benutzen, muss man sich einloggen (evtl. mit Minecraft-Username)
– Die Daten werden auf einem Zentral-Server gespeichert
– Es gibt „Poller“ (Straßensperren), die sich per ctOS hoch-, und runterfahren lassen
– Für die GPS-Funktionen werden triangulations-Türme benötigt. Diese sind wie die ctOS-Türne über die Stadt verteilt. Sie können allerdings auch gehackt werden.
– Das ctOS steuert die Gesamte Beleuchtung der Stadt. Wird der Blackout-Exploit benutzt, so gehen sie aus
– Jedes höhere Gebäude wird mit einem Netzwerk aus Computern ausgestattet.
– Alle Türen lassen sich per Computer Öffnen. Dieser Prüft, ob der Benutzer die Zugangsberechtigung hat.

Umbau in der Wiefreak.de-Kopfzeile – Neue Seiten entstehen

Momentan baue ich den Wiefreak.de Header ein bisschen um. Ihr könnt ab jetzt scrollen und „Main-Seiten“ , „Info-Seiten“ und andere Statische Seiten direkt aus der Kopfzeile heraus aufrufen. Leider bedeutet das, das ich alle Seiten umbauen, löschen und neu schreiben muss. Das wird ein bissschen Zeit kosten, ich bitte um entschuldigung! 🙂