7. “In the field of security engineering, an oracle attack is
an attack that exploits the availability of a weakness in
a system that can be used as an "oracle" to give a
simple go/no go indication to tell an attacker whether he
or she has reached, or is nearing, their goal.
The attacker can then combine the oracle with
systematic search of the problem space to complete
their attack.”
- Wikipedia on “The Oracle Attack”
8. 1. Build the device
2. Capture the data
3. Process the data
4. Visualise the results
9.
10. V2
1. Build the devices
2. Capture all the data real-time
3. Process the data anywhere
4. Visualise the results in real-time
+Don’t loose ANY DATA
+Modernise!
+Have fun!!!
19. • 4 “custom made” devices
• 2x Raspberry Pi 3B+
• 1x Raspberry Pi 4
• 1x Intel NUC
• Ability to add N-devices
• 3 Architectures - ARMv7,
ARM and x86_64
• 2 Physical locations
• 2 Different OS-es
(Ubuntu and Raspberry
Pi OS)
20.
21. • Event streaming
• Devices emit events
• State is evil* and hard to
scale
• All components in the stack
are resilient
• Network can be down
• H/W and S/W can and will
fail 💥
• Rapid 🐇💨
• Deployment 🚀
• Development
22. “Your database stores the current state of your data. But the
current state is always caused by some actions that took
place in the past. The actions are the events. Your inventory
table is the state that results from the purchase and sale
events that have been made, bank balances are the result of
credits and debits, and the latency graph for your web server
is an aggregation of the stream of HTTP request times.”
- Confluent Blog
23.
24. • Events are immutable
• Easy to reason about
• Easy to distribute => easy to scale easy to partition
• State can always be rebuild
• Change* is just another event
25.
26. • Written in Akka Streams with Scala
• Packaged as Docker Container
(x86_64 and arm32v7)
• Experimentally compiled to native
image with GraalVM*
• Deployed w/ Ansible* 🐍
27.
28.
29.
30.
31.
32.
33. Kafka Connect, an open source component of Apache
Kafka®, is a framework for connecting Kafka with external
systems such as databases, key-value stores, search
indexes, and file systems.
37. “An event streaming database is a particular kind of
database that helps you build stream processing apps.
It consolidates the many components found in virtually
every event streaming architecture.
Almost all streaming architectures today are piecemeal
solutions cobbled together from different projects.
At a minimum, you need a subsystem to acquire events
from existing data sources, another to store them,
another to process them, and another to serve queries
against aggregated materializations. Integrating each
subsystem can be difficult. Each has its own mental
model. And it’s easy to wonder, given all this
complexity: Is this all worth it?”
38.
39.
40.
41.
42.
43.
44.
45.
46. • Event streaming is incredibly powerful ⚡️
• Kafka should be the modern backbone! 🦄
• Consider putting it into the “core” of your system
• Kafka Connectors are easy to setup!
• Scala can be used for IoT agents ✅ 🚀
• Wi-Fi has some “problems”* 😅
• Privacy Ideas 💡
• MAC address randomisation
• Encrypted management packets (new standards)
• Don’t use “public” Wi-Fis
What is over-engineering?
Overengineering (or over-kill) is the act of designing a product to be more robust or have more features than often necessary for its intended use, or for a process to be unnecessarily complex or inefficient.
Overengineering is often done to increase a factor of safety, add functionality, or overcome perceived design flaws that most users would accept.
Overengineering can be desirable when safety or performance is critical (e.g. in aerospace vehicles and luxury road vehicles), or when extremely broad functionality is required (e.g. diagnostic and medical tools, power users of products), but it is generally criticized in terms of value engineering as wasteful of resources such as materials, time and money.
The story About “The Problem” at Geekatrons
Wi-Fi is emitting Probes
We should capture them and visualise them
Do it!
Basics of Wi-Fi
Source: https://www.researchgate.net/figure/MAC-layer-handoff-process_fig3_342860871
You ask your friend what’s in his garage
You look into your garage
Then you upgrade
Agent
Apache Kafka is a community distributed event streaming platform capable of handling trillions of events a day. Initially conceived as a messaging queue, Kafka is based on an abstraction of a distributed commit log.
Since being created and open sourced by LinkedIn in 2011, Kafka has quickly evolved from messaging queue to a full-fledged event streaming platform.