Palantir

Page 1

ZhDK – 2015

PalantĂ­r Distributable Network Interception Device

Colin Schmid

Dokumentation der Hausaufgabe Im Rahmen des Aufnahmeverfahrens Interaction Design



ZhDK – 2015

PalantĂ­r Distributable Network Interception Device

Colin Schmid

Dokumentation der Hausaufgabe Im Rahmen des Aufnahmeverfahrens Interaction Design



I N H A LT Prolog 8  V O RW O RT

Beweggründe zur Arbeit | Inception

Konzeptioneller Teil

12  VORGEHENSWEISE

Wie ich arbeite | Agile Methodologies

14  PLANUNG

Zielsicher voran | Werkzeuge zur Planung

16  IDEENFINDUNG

Gedanken aufs Papier | Varianten evaluieren

20  RECHERCHE

Sehender Stein | Hintergründe 22  KONZEPTION

Das Projekt nimmt Gestalt an | User Centered Design


Praktischer Teil

28  TECH SPIKES

Spiking | Probleme erkunden 36  PROTOTYP

Ein «Working Prototype» | Behaviour first

Epilog

6

4 0   N A C H W O RT

Die Vergangenheit ist ein Prolog | Die Analyse zum Schluss

xxx



PROLOG VORWORT

teilen

Wortart: schwaches Verb Worttrennung: tei | len Bedeutungen: 1. a. ein Ganzes in Teile zerlegen b. eine Zahl in eine bestimmte Anzahl gleich großer Teile zerlegen; dividieren c. sich aufspalten, in Teile zerfallen 2. a. (unter mehreren Personen) aufteilen b. etwas, was man besitzt, zu einem Teil einem anderen überlassen 3. ein Ganzes in zwei Teile zerteilen 4. a. gemeinsam (mit einem anderen) nutzen, benutzen, gebrauchen b. gemeinschaftlich mit anderen von etwas betroffen werden; an einer Sache im gleichen Maße wie ein anderer teilhaben 5. (gehoben) zu gleichen Teilen sich an etwas beteiligen, an etwas teilhaben 6. nach verschiedenen Richtungen auseinandergehen

Die Bedeutung von «teilen», wie sie im Duden steht.

8


Prolog

Vo r w o r t Im Rahmen meiner Bewerbung für den Studiengang Interaction Design an der Zürcher Hochschule der Künste bekam ich die Hausaufgabe das Thema «teilen» in konzeptioneller und gestalterischer Form umzusetzen. Diese Dokumentation zeigt mein Vorgehen dabei auf. Das Thema «teilen» habe ich in dieser Arbeit zu «Unbewusstes und Unfreiwilliges Teilen» weiterentwickelt. Ich habe zu diesem Thema eine Installation konzipiert und gestalterisch umgesetzt, sowie die zugehörige Web App und ein Netzwerk-Abhörgerät gebaut und programmiert. Mein Ziel dabei war einerseits das Betreten unbekannten Terrains – im technologischen wie auch im gestalterisch-thematischen Bereich. Andererseits hat die Installation auch ganz klar eine Netzpolitische und Sozialkritische Funktion. Sie soll den User aufrütteln, zum Denken anstossen. Wir leben in einer hochtechnologischen Welt, im Alltag benutzen wir ganz selbstverständlich Technologien, von denen wir häufig nicht mal ein oberflächiches Verständnis besitzen. Was passiert, wenn man dies dem Alltäglichen Nutzer vor Augen führt?

Im Feld Interaction Design sind häufig auch Mechanismen zu beachten, welche auf den ersten Blick nicht zwingend dem Feld des Interaction Designs zugeschrieben werden. Auch wenn der User nicht selbstbestimmt mit einer Technologie interagiert besteht eine «User Experience», die sorgfältig konzipiert und gestaltet werden will. Vor solchen und ähnlichen Problemen stand ich während dieser Arbeit. Ich habe Unmengen an neuem Wissen angesammelt. Viele dieser Momente sind auf den folgenden Seiten dokumentiert. Weiteres Material findet sich im Web:

zhdk.mala23.me/palantir


10


Konzeptioneller Teil Von der Idee zum Konzept

In diesem Kapitel zeige ich mein Vorgehen auf und dokumentiere die Konzeptionsphase der Hausaufgabe.


KONZEPTIONELLER TEIL VORGEHENSWEISE

BDD Test Cycle 1

red

2

3 red

5 refactor

green 4

refactor 7

Acceptance Testing

green

6

Der BDD Test Cycle ist ein integraler Teil von Agile. Grundlegende Strukturen aus diesem iterativen Workflow lassen sich auch in anderen Agile Methoden wiederfinden.

12


Vorgehensweise

Agile Ich wollte von Anfang an sicherstellen eine wertige Hausaufgabe abgeben zu können. Da ich die Denk- und Arbeitsweise, welche die Agile Methode mit sich bringt mittlerweile fest in meine Arbeitsprozesse jeglicher Art eingebunden habe, entschied ich mich auch hier für einen agilen Arbeitsvorgang. Agile beschreibt in erster Linie eine Gruppe von «Software Development Methods», ich finde die Paradigmen aber beim Grafischen Gestalten ebenso hilfreich. Der User und das Feature stehen im Mittelpunkt, es geht darum möglichst früh funktionierende und relevante Software zu liefern. Die iterative, adaptive Arbeitsweise bot mir die nötige Flexibilität und gleichzeitig die Sicherheit stehts ein ablieferbares, «shippable» Produkt in den Händen zu halten.

Kanban Um die Übersicht nicht zu verlieren und jederzeit eine vollständige Liste unerledigter Arbeitsschritte zu haben, verwendete ich die Kanban-Boards von Trello. Kanban funktioniert nach dem Pull-Prinzip, sobald ein Arbeitsschritt abgeschlossen ist, wird der nächste aus einer «To Do»-Spalte in die «Doing»-Spalte gezogen.

Dokumentation Als Web Developer bin ich es mir gewohnt, meine Arbeit während dem Prozess genau zu dokumentieren, dies habe ich auch mit der vorliegenden Dokumentation angewandt.


KONZEPTIONELLER TEIL PLANUNG

14


Planung

Outline Ich arbeite häufig und gerne mit Listen. Die Planung von Projekten verschiedenster Art beginne ich mit einer «Outline». Auch für diese Hausaufgabe habe ich eine abstrahierte Liste geschrieben.

Roadmap Aus der Outline formte ich dann eine «Roadmap», sie zeigt alle wichtigen Meilensteine bis zur Fertigstellung des Projekts auf. Dies ist kein strikt einzuhaltender Plan. Die Roadmap dient als Planungshilfe und stellt Selbstvertrauen her.

Basecamp Fürs Projektmanagement habe ich die Outline und die Roadmap in die Web App «Basecamp» geladen. Ein Interaktiver Kalender erinnert mich so täglich an anstehende oder unfertige Arbeiten. Ausserdem sammle ich dort alle Text-Dokumente, welche ich während der Arbeit produziere.


KONZEPTIONELLER TEIL IDEENFINDUNG

16


Ideenf indung «

Even if you're not doing anything wrong, you are being watched and recorded.

»

1

Bedeutung Dies ist nicht das erste Mal, dass ich vor die Aufgabe gestellt werde, zu einem einzelnen Wort eine gestalterische Arbeit zu erarbeiten. Ich mag diese Art von Aufgaben. Sie bietet soviel Freiheit, ausserdem liebe ich die Sprache, insbesondere die geschriebene. So habe ich es mir angeeignet, solche Aufgaben stehts mit einem Blick ins Wörterbuch zu beginnen – auch wenn mir der Begriff natürlich vollkommen bekannt ist. Mit Moodboards oder Brainstormings, je nach Gefühlslage, spinne ich die gewonnenen Ideen dann weiter.

Brief ing Nach einem Blick ins Wörterbuch bildeten sich bereits grobe Ideen in meinem Kopf. Dennoch machte ich mich daran, das Briefing sorgfältig durchzulesen und machte mir dabei Notizen auf Papier. Dabei konzentrierte ich mich auf die relevant erscheinenden Teile, daran würde ich mich später festhalten. So konnte ich sicherstellen, dass ich das Ziel der Aufgabe nicht verfehlen würde.

Brainstorming Die Hand voll Ideen, die sich im Verlauf der nächsten paar Tage in meinen Gedanken bildeten, notierte ich in meinem Notizbuch. Dann setzte ich mich hin und spinnte sie in Form von handgeschriebenen

1   Zitat: Edward Snowden zum britischen «Guardian»


Die erste Idee befasst sich mit «teilen in der Schweiz». Im dokumentarischen Stil sollten Meinungen und Gedanken im Audio- oder Videoformat aufgezeichnet werden.

Die zweite Idee bringt «teilen» mit Social Media in Verbindung. Eine FotoshareBox sollte im Stil von Sofortbildkabinen ein Foto machen, welches dann sofort mittels einer ausgeklügelten Web App auf verschiedenen Kanälen wie Facebook und Twitter geteilt werden könnte.

Die dritte Idee zum Thema «Sharing im Internet» beinhaltet die Konzeption und Umsetzung einer Web App zum kollaborativen Sammeln, Organisieren und Teilen von Weblinks.

18


Mindmaps weiter. Dabei ging es mir nicht nur darum, bestehende Gedankenstrukturen in einer «Map» aufs Papier zu bringen, sondern dies gleich mit der Technik des Brainstormings zu verbinden und so die bestehenden Ideen aktiv weiterzuentwickeln. Die Ideen wuchsen entweder um einen weiteren Begriff oder ein grobes Themengebiet herum, oder kamen mir mehr oder weniger bereit zur Umsetzung in den Sinn.

Entscheid Von den vier verschiedenen Ideen, die ich im Brainstorming ausgearbeitet hatte, entschied ich mich schlussentlich für jene zum Thema «Unbewusstes Teilen». Ich würde mittels Technologie aufzeigen, wie wir täglich Spuren hinterlassen und völlig unbewusst Informationen preisgeben – teilen – wenn wir uns täglich durch Netzwerke bewegen. Dies plante ich in Form einer Installation umzusetzen. Die Installation sollte, aufgestellt in einem Raum, ein offenes WiFi-Netzwerk bereitstellen. Die Smartphones, Tablets und Laptops in Reichweite würden sich automatisch damit verbinden. Der kleine Computer, der das Netzwerk erstellt, würde dann Informationen, die er über die verbundenen Geräte sammelt, an einen abstrahierten Server senden. Dieser würde die Informationen auf einer Web App bereitstellen.


KONZEPTIONELLER TEIL RECHERCHE

Bild: wikipedia.com

20


Recherche «

They are not all accounted for, the lost seeing stones. We do not know who else may be watching.

»

1

Tiefe schaffen Ich mag Geschichten. So dichte ich mir sie meist ganz beiläufig in meinem Kopf, wenn ich in eine Arbeit besonders vertieft bin. Sie haben das Potenzial, Tiefe und Hintergrund zu schaffen. Tolkiens «Der Herr der Ringe» hat es mir schon immer besonders angetan. Häufig werden Teile aus seinen Werken als Metaphern für Begebenheiten in der realen Welt interpretiert. Mit den «Palantíri», den mächtigen Steinen, mit denen sich über weite Distanzen in die Ferne sehen lässt erinnern mich unweigerlich an jüngste Ereignisse. Nämlich die Überwachungsskandale der NSA und anderer Geheimdienste rund um die Welt. Hatte Tolkien etwa eine Vorahnung dessen, was das Team um Edward Snowden aufdecken würde? Der fantastischen, magischen Anmut, welche die Palantíri aus Tolkiens Welt an sich haben, steht die Massenüberwachung und die Technologien dahinter keineswegs nach. Mich faszinieren die Sozial- und Netzpolitischen Zusammenhänge welche diese Ereignisse mit sich bringen. Insbesondere bin ich über die Gleichgültigkeit mit welchem der Grossteil der Bevölkerung den Geschehnissen beiwohnt verwundert. Wenn wir uns täglich durch Netzwerke bewegen, seien es Lokale, Mobilfunknetze oder das Internet, teilen wir ständig Informationen. Ein Grossteil dieses Teilens geschieht ohne dass wir uns dessen bewusst sind. Mit dieser Arbeit möchte ich die Natur dieser unbewusst geteilten Informationen offenlegen. Ausserdem wollte ich untersuchen, mit welchen Technischen Mitteln diese Signale und Informationen abgehört, aufgezeichnet und geteilt werden können. 1   Zitat: Gandalf zu Saruman, in «The Fellowship of the Ring»


KONZEPTIONELLER TEIL KONZEPTION

1

F e a t u r e: B r o w s i n g D e v i c e s L i s t

2

I n o r d e r t o b r o w s e d e v i c e s a n d t h e i r u n w it t i n gly s h a r e d I n f o r m a t i o n

3

A s a tr a p p e d a n d i n t e r c e p t e d u s e r

4

I w a n t t o s e e a l i s t o f all d e v i c e s

5 6

S c e n a r i o: U s e r b r o w s e s t h e D e v i c e s L i s t

7

G i v e n I a m o n t h e '/' P a g e

8

T h e n I s h o ul d s e e '1 9 2.1 6 8.4 2.1'

9 10

S c e n a r i o: U s e r c o n n e c t s t o t h e N e t w o r k

11

12

A n d a s e c o n d U s e r c o n n e c t s t o 'S w i s s c o m'

13

14

15

v a r s e c o n d U s e r = n e w U s e r ({

16

i p: '1 9 2.1 6 8.4 2.1',

17

m a c: '8 D:8 L:2 0:U 4:Y4:R 2',

18

o s: 'O S X o r I O S'

19

}

G i v e n I a m o n t h e '/' P a g e

T h e n I s h o ul d s e e '1 9 2.1 6 8.4 2.1'

20 21 22 23

Im Behavior Driven Development werden User Stories in der «Gherkin Language» geschrieben, bevor auch nur eine Zeile eigentlicher Code geschrieben wird. Diese Features und die enthaltenen Scenarios dienen später als automatisierte Acceptance, Regression und Integration Tests.

22


Konzeption User Stories Wie es im «Behavior Driven Development» üblich ist, schrieb ich zuerst die benötigten Features. Dies sind ein oder mehrere Sätze, die nach dem «Who-What-Why»-Prinzip in natürlicher oder Business-Sprache einfangen, wie ein User mit einem System interagiert. Darauf folgend schrieb ich die benötigten Scenarios, um das «Minimum Viable Product» zu erreichen. Hier wird das «Given-WhenThen»-Prinzip angewandt. Die Scenarios schrieb ich in der «Gherkin Language» um mir die Option offenzuhalten BBD und TDD durchzuziehen und die bestehenden Scenarios gleich automatisiert in Acceptance Tests umzuwandeln.

Wireframes Nun da ich die App und die benötigten Features aus einer abstrahierten «High Level View» erkundet habe, konnte ich in der Software «Balsamiq» die Scenarios und Features jedes Screens in ein Wireframe zeichnen.

Mockups Basierend auf den Wireframes erarbeitete ich in der Screen-Design-Software «Sketch» eine Hand voll Mockups als Vorschläge.

Te c h S t a c k Die Herausforderungen des Projekts bestanden einerseits darin, mit möglichst niedriger Latenz Logfiles vom Interception Device auf einen Server zu transferieren und von dort in Realtime auf allen Clients zu aktualisieren. Für die Shell-Scripts auf der Interception Device stellte ich mir eine Lösung in Ruby vor, die geloggten Dumps würde ich wohl mittels einem möglichst schlanken HTTP-Server dem Web servieren. Ein Meteor-Backend, das auf einem separaten App-Server läuft würde


Die Wireframes für Mobile in «Horizontal»und «Landscape»-Ausrichtung

Das finale Mockup für die Web App.

24


regelmässig über die REST-API zum HTTP-Server die aktuellsten Daten abfragen. Diese würden dann erst auf dem Meteor-Server geparsed und durch nackte Websockets oder Meteors isomorphische Collections ans Frontend der Clients gepushed werden. Fürs Backend entschied ich mich für Meteor, da ich mit dem Framework noch sehr wenig Erfahrung hatte und ich so etwas Neues lernen konnte. Ausserdem schien es mir, würde Meteor den raschen Bau der einfachen App erleichtern und mit den eingebauten Websockets und isomorphischen Collections die Realtime-Funktionalität optimal lösen.

Hardware Die Wahl der Hardware fiel mir sehr leicht. Ich hatte bereits einen Rasp­ berry Pi mit allem Nötigen Zubehör, wie einem WiFi USB-Dongle herumliegen. Damit die Installation am Ende auch etwas fürs Auge bieten würde, stellte ich mir vor das Equipment in einen Koffer mit Würfelschaumstoff einzubauen.

Interaktion Die direkte Interaktion des Users ist bei der Installation beschränkt sich auf die Benutzung der Web App. Diese zeigt allen Nutzern die von ihnen und von Anderen geteilten Informationen an. Bis zu diesem Punkt jedoch, soll der User kaum bemerken, was mit ihm geschieht. Sollte die SSID «Swisscom» dem Gerät unbekannt sein, so popt lediglich ein Dialog zum Verbinden mit dem Netzwerk auf. Andernfalls, also beim Grossteil der User, ändert sich als einziger Hinweis das Netzwerksymbol in der Statusleiste vom Mobilfunk- zum WiFi-Icon.


26


Praktischer Teil Vom Konzept zur Umsetzung

In diesem Kapitel dokumentiere ich mein Vorgehen und die Herausforderungen bei der praktischen Umsetzung des Konzepts.


PRAKTISCHER TEIL TECH SPIKES

Zum Spiking auf dem Raspi verwendete ich ein LAN über Kabel. Erst im nächsten Schritt brachte ich die Technologie aufs WiFi. So lassen sich Fehler im Core ausschliessen, sobald man Kabellos geht. Beim Spiking lief bereits das «Minimum Viable Product» der Web App auf einem lokalen Test-Server. Diese browste ich mit meinem iPad an und testete so die Scripts, welche die Signale sammeln und transferieren.

28


Tech Spikes Spiking Das Spiking ist für den Web Developer, was das Skizzieren für den Grafikdesigner ist. Es geht darum schnell, grob und ohne Bemühung sonderlich schönen oder sauberen Code ein Technisches Problem und dessen Lösungsansätze auszuloten. Spike Code wird meist nicht gespeichert. Nach dem Spiking beginnt man von Neuem.

Packet Snif f ing Bereits beim schreiben der Features sind mir zwei technische Knacknüsse aufgefallen. Eine davon ist das Packet Sniffing, also die Methode, mit der die IP Adresse, oder idealerweise der Host Name aller Geräte in einem Lokalen Netz gesammelt werden können

L o g g i n g u n d Tr a n s f e r i n g Die zweite Schwierigkeit konnte ich beim Loggen und Transferieren der gesammelten Daten ausmachen. Wenn ich erstmal ein Shell-Script geschrieben habe, das die gewünschten Daten ausgiebt, so musste ich einen Weg finden, diese Daten in eine Datei zu schreiben und auf den Web-Server zu transferieren. So machte ich mich daran, eine Reihe von Spikes zu schreiben. Den Anfang machte ich jeweils mit einer Idee, mit der ich frei aus dem Kopf aufkam, dann verbrachte ich Stunden damit, das Netz nach besseren Lösungen zu durchsuchen und diese dann in weiteren Spikes auszutesten.


~

if c o n f i g

e n 0: f l a g s = 8 8 6 3 < U P,B R O A D C A S T,S M A R T,R U N N I N G,S I M P L E X , M U LT I C A S T> m t u 1 5 0 0

e t h e r b 8:8 d:1 2:0 d:4 b:0 2

i n e t 6 f e 8 0::b a 8 d:1 2 f f:f e 0 d:4 b 0 2 % e n 0 p r e f i xl e n 6 4 s c o p e i d 0 x 4

i n e t 1 9 2.1 6 8.0.1 9 n e t m a s k 0 x f f f f f f 0 0 b r o a d c a s t 1 9 2.1 6 8.0.2 5 5

n d 6 o p t i o n s = 1< P E R F O R M N U D >

m e d i a: a u t o s el e c t

s t a t u s: a c t i v e

Code Snippet 1

~

p i n g 1 9 2.1 6 8.0.2 5 5

P I N G 1 9 2.1 6 8.0.2 5 5 (1 9 2.1 6 8.0.2 5 5): 5 6 d a t a b y t e s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 6: i c m p _ s e q = 0 t tl= 6 4 t i m e = 3 7 3.5 3 4 m s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 6: i c m p _ s e q = 1 t tl= 6 4 t i m e = 1 1 0.9 8 4 m s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 3: i c m p _ s e q = 1 t tl= 6 4 t i m e = 3 1 2.9 0 5 m s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 6: i c m p _ s e q = 2 t tl= 6 4 t i m e = 1 2 8.9 7 0 m s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 3: i c m p _ s e q = 3 t tl= 6 4 t i m e = 1 2 3.5 2 5 m s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 6: i c m p _ s e q = 3 t tl= 6 4 t i m e = 1 4 8.9 6 8 m s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 3: i c m p _ s e q = 4 t tl= 6 4 t i m e = 1 6 6.3 0 9 m s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 6: i c m p _ s e q = 4 t tl= 6 4 t i m e = 1 6 6.4 8 3 m s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 3: i c m p _ s e q = 5 t tl= 6 4 t i m e = 1 8 6.0 1 1 m s 6 4 b y t e s f r o m 1 9 2.1 6 8.0.2 6: i c m p _ s e q = 5 t tl= 6 4 t i m e = 1 8 6.4 5 6 m s ^C - - - 1 9 2.1 6 8.0.2 5 5 p i n g s t a t i s t i c s - - 6 p a c k e t s tr a n s m it t e d, 6 p a c k e t s r e c e i v e d, + 4 d u pl i c a t e s, 0.0 % p a c k e t l o s s r o u n d - tr i p m i n /a v g / m a x /s t d d e v = 1 1 0.9 8 4 / 1 9 0.41 5/ 3 7 3.5 3 4 / 8 1.2 4 2 m s

Code Snippet 2

~

tr a c e r o u t e 1 9 2.1 6 8.0.2 3

tr a c e r o u t e t o 1 9 2.1 6 8.0.2 3 (1 9 2.1 6 8.0.2 3), 6 4 h o p s m a x , 5 2 b y t e p a c k e t s 1

1 9 2.1 6 8.0.2 3 (1 9 2.1 6 8.0.2 3)

6 7.8 8 7 m s

2.5 2 1 m s

2.3 3 5 m s

Code Snippet 3

~

ar p - a

? (1 9 2.1 6 8.0.1) a t 8 8:f 7:c7:5 6:c:b o n e n 0 if s c o p e [e t h e r n e t] ? (1 9 2.1 6 8.0.1 6) a t 3 4:a 3:9 5:b7:a 4:8 8 o n e n 0 if s c o p e [e t h e r n e t] ? (1 9 2.1 6 8.0.2 3) a t 4:f 1:3 e:9 f:e 2:6 5 o n e n 0 if s c o p e [e t h e r n e t] ? (1 9 2.1 6 8.0.2 6) a t f 0:c b:a 1:d:5 0:74 o n e n 0 if s c o p e [e t h e r n e t] ? (1 9 2.1 6 8.0.2 7) a t b 8:e 8:5 6:3 4:5 8:d a o n e n 0 if s c o p e [e t h e r n e t] ? (1 9 2.1 6 8.0.2 5 5) a t f f:f f:f f:f f:f f:f f o n e n 0 if s c o p e [e t h e r n e t]

Code Snippet 4

30


ifconf ig Ifconfig ist ein Software Utility mit Features zur Konfiguration, dem Controlling und Querying von TCP/IP Netzwerk Interface Parametern. Ich nutzte ifconfig um die lokale IP meiner Maschiene sowie die Broadcast IP im Lokalen Netzwerk herauszufinden. Code Snippet 1

ping Das erste Tool welches mir zur Erkundung des Netzweks in den Sinn kam war ping. Ping ist ein Software Utility zum Testen der Erreichbarkeit eines Hosts in einem IP Netzwerk. Um die IP Adressen andrer Hosts in meinem Lokalen Netzwerk herauszufinden pingte ich die Broadcast Adresse. Diese hatte ich zuvor mit ifconfig ausfindig gemacht. Der Befehl returnte alle IPs anderer Hosts im LAN. Leider löst ping die IPs nicht in Host Names auf. Ausserdem ist es mit ping verhältnismässig aufwendig jede verfügbare IP nur einmal anzupingen. Die Suche ging also weiter. Allerdings kann ping für Denial-Of-Service missbraucht werden indem ein Host mit Ping-Flooding zum crashen bringt. Code Snippet 2

traceroute Traceroute ist ein Computer Network Diagnostic Tool um die Route und Transit Delays von Paketen in einem IP Netzwerk anzuzeigen. Leider brachte mich traceroute auch nicht weiter, da es ebenfalls keine Host Names auflöst. Code Snippet 3

arp Das Address Resolution Protocol – arp – ist ein Telekommunikations Protokoll zur Auflösung von Network Layer Addresses in Link Layer Addresses. Das klang schonmal einiges besser. Immerhin sind Addressauflösungen was ich erreichen wollte. Allerdings bekam ich gemeinsam mit der IP jedes Hosts im LAN nur eine MAC Adresse sowie der Name des verbundenen Netzwerk Interfaces zurück. Keine aufgelösten Host Namen. Doch da stand ein Fragezeichen vor jeder IP Adresse. Kann arp möglicherweise doch Host Namen auflösen? Meine Recherche in verschiedenen Foren brachte mich auf die Idee, dass ein lokaler DNS mein Problem lösen könnte. Code Snippet 4


M e t e o r.p u bl i s h('d e v i c e s', f u n c t i o n() { r e t u r n D e v i c e s.f i n d(); });

M e t e o r.s u b s c r i b e('d e v i c e s');

Code Snippet 1 – Pubs and Subs

D e v i c e s = n e w M o n g o.C oll e c t i o n('d e v i c e s');

M e t e o r.m e t h o d s({ d e v i c e I n s e r t: f u n c t i o n(d e v i c e A t tr i b u t e s) { c h e c k(d e v i c e A t tr i b u t e s, { i p: '', m a c: '', o s: '', v e n d o r : '', c o n n e c t e d: n e w D a t e () }); } });

Code Snippet 2 – Collections

< t e m pl a t e n a m e ='d e v i c e s L i s t'> < s e c t i o n cl a s s ='d e v i c e s _ _l i s t'> {{# e a c h d e v i c e s}} {{> d e v i c e I t e m}} {{ /e a c h}} < /s e c t i o n > < / t e m pl a t e >

Code Snippet 3 – Spacebars Templates i n s e r t E l e m e n t: f u n c t i o n (n o d e, n e x t) { $(n o d e) .h i d e() .i n s e r t B e f o r e(n e x t) .f a d e I n(); },

.a n i m a t e { - w e b k it- tr a n s it i o n: all 6 0 0 m s 2 0 0 m s; - m o z - tr a n s it i o n: all 6 0 0 m s 2 0 0 m s e a s e -i n; - o - tr a n s it i o n: all 6 0 0 m s 2 0 0 m s e a s e -i n; tr a n s it i o n: all 6 0 0 m s 2 0 0 m s e a s e -i n; }

Code Snippet 4 – Animationen

32


Code Snippet 1 – Pubs and Subs Meteors Publication– und Subscription-Modell schickt reaktive Daten über Websockets und DDP «down the raw pipe» Code Snippet 2 – Collections, Reactive Data (bidirektionale Kommunikation in Echtzeit) Die MongoDB Datenbanken sind nicht nur auf dem Back-End verfügbar – sie werden auf dem Client gespiegelt. Hier das Device Model. Code Snippet 3 – Spacebars Templates Meteors Templating Engine «Spacebars» rendert dier reaktiven Daten in Echtzeit in die Templates, ohne die gesamte Seite neu laden zu müssen. Zukunft also, jetzt! Code Snippet 4 – Animationen Full Stack Javascript bedeutet, dass mühseliges Umdenken beim Wechsel von Back- auf Front-End der Vergangenheit angehört.

Logging Die nächste Hürde stellte das Loggen, das Speichern der returnten Werte dar. Bei meiner weiteren Recherche zu arp stiess ich auf arpwatch. Arpwatch tut was arp tut, jedoch kann es die Resultate in ein File loggen und sogar auf eine Veränderung in den IP-MAC-Paarungen warten, bis es dies tut. Das klang sehr vielversprechend, also startete ich einen Spike.

Raspi Wie sich herausstellte existiert arpwatch in dieser Form nicht für OSX. Das war der richtige Zeitpunkt meine Spikes auf den Raspberry Pi zu verlegen. Hier fing die Reise erst richtig an. Das Ziel war folgendes: den Raspberry Pi mit dem vorhandenen WiFi USB-Dongle zum Laufen zu bringen und dann so zu konfigurieren, dass der Raspi als WiFi Hotspot auftritt. Dem WiFi Netzwerk würde ich die SSID «Swisscom» zuweisen. Dieser Trick würde die meisten iOS Devices in die Falle locken, da sie meist so konfiguriert sind, dass sie sich im Hintergrund ohne zu fragen mit einem solchen Netzwerk verbinden. Um meinen Raspberry Pi als Access Point zu konfigurieren, Waren folgende Schritte notwendig:


1. Router Software installieren hostapd ist ein Daemon, der die Konfiguration und Security des Access Points managed. isc-dhcp-server ist verantwortlich f端r das Zuweisen der IP Adressen an Devices, die sich mit dem Access Point verbinden. 2. DHCP-Server konfigurieren 3. HostAPD konfigurieren 4. NAT konfigurieren 5. Router starten

34


Allerdings stiess ich nach einigen Stunden in den Tiefen der DHCP Konfiguration mittels hostapd auf eine Sackgasse. Etwas weitere Recherchen ergaben, dass der RLT8188 Chip, der in meinem USB-Dongle verbaut war, mit dhcp nicht als «Master» in einem Netzwerk auftreten will. Ich fand allerdings eine von Realtek, dem Chip-Hersteller modifizierte Version von hostapd auf Github. Diese konnte ich mit etwas Mühe herunterladen, kompilieren und installieren. Wow – was für ein Abenteuer! Als das gelbe [ ok ] im Terminal aufblinkte feierte ich den Erfolg mit einer grossen, kühlen Flasche Club Mate.


PRAKTISCHER TEIL PROTOTYP

Der Raspberry Pi ist ein Kreditkartengrosser, ARM-basierter single-board Computer, er erfreut sich grosser Beliebtheit in der Maker- und Hackerszene.

36


Prototyp Meteor Web App Ausgerüstet mit den Scenarios, Features, Wireframes und Mockups machte ich mich an das Coden des Backends im topaktuellen Framework Meteor. Das Open-Source, Real-Time Web Application Framework Meteor basiert auf Node.js, verwendet also JavaScript als Programmiersprache und verspricht den Bau von Web Apps in Top-Qualität in einem Bruchteil der Zeit vergleichbarer Frameworks.

Console Script und API Trotz anfänglicher Erfolge konnte ich meinen Raspberry Pi nicht dazu bringen, als Access Point im Netzwerk aufzutreten. Ich musste es schlussendlich darauf zurückführen, dass der verbaute RLT8188 Chip dies verhindert. Die finale Integration der beiden Software-Teile konnte ich somit nicht zeitgerecht fertigstellen. Es wäre wohl ein WiFi-Dongle eines anderen Herstellers nötig – zur Beschaffung reichte die Zeit leider nicht aus. Dennoch konnte ich den Sinatra-Server auf dem Raspi erfolgreich mit dem Console Script, das die Daten sammelt und via Rest-API serviert via Ethernet-Kabel zum Laufen bringen. Das Proof-Of-Concept und damit der Prototyp waren also erfolgreich.

Hardware und Installation Wie im Konzept angekündigt verwendete ich meinen Raspberry Pi mit einem EDUP EP-N8508GS USB WiFi-Dongle. Die Hardware platzierte ich in einem schwarzen Koffer. Das Distributable Network Interception Device war somit komplett. Der Koffer kann mit einfachen Mitteln nachgebaut werden, der Quellcode befindet sich auf Github. Platziert in verschiedensten Netzwerken würden die Koffer so Daten zusammentragen und auf der Web App zentral und öffentlich anzeigen.


38



EPILOG NACHWORT

40


Epilog

Nachwort Die Arbeit an diesem Projekt hat mir grosse Freude bereitet. Schon seit langem hatte ich vor, mich etwas genauer mit Netzwerktechnologie auseinanderzusetzen. Diese Gelegenheit habe ich genutzt und ein zufriedenstellendes Resultat erzielt. Das betreten von Neuland im Bereich der Technik und Programmierung hat mir am meisten gefallen. Meteor ist ein vielversprechendes Framework und diese Arbeit erlaubte es mir mein Theoretisches Grundwissen darüber in der Praxis anzuwenden und etwas originelles zu bauen. Mein Wissen über Netzwerktechnologien konnte ich ebenfalls bedeutend erweitern. Ganz alle Ziele, die ich mir zu Beginn gesetzt habe, konnte ich nicht erreichen. Insbesondere das Sammeln von Signalen und deren Transfer hat sich als technisch schwierig herausgestellt. Dies hat auch mit der Zeitlichen Einschränkung zu tun. Mit etwas mehr Zeit währen deutlich beeindruckendere Resultate vorstellbar. Ich werde das Projekt bestimmt weiterentwickeln und neue Features, wie das Abfangen unverschlüsselter Mails oder Surfverhaltens hinzufügen. Meine Konzeptionellen Überlegungen zum Unbewussten Teilen von Informationen konnte ich wirksam in einer Installation zur Schau stellen. Ich hoffe damit im Betrachter das Bewusstsein darüber zu wecken, dass wir Spuren hinterlassen, wenn wir uns in Netzwerken bewegen. Die Lösung für dieses Problem ist die Kryptografie.



Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.