From 25ce6209be90a0a50924b4ed6dfe130e3f4be296 Mon Sep 17 00:00:00 2001 From: johannes walcher <johannes.walcher@stusta.de> Date: Thu, 3 May 2018 15:56:34 +0200 Subject: [PATCH] added nsa: scan your home network --- conf/arplist.conf | 1 + nsa/__init__.py | 0 nsa/__main__.py | 19 ++++++++++++++ nsa/nsa.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++ nsa/test.py | 48 ++++++++++++++++++++++++++++++++++ util/arp-scan | Bin 0 -> 65032 bytes 6 files changed, 132 insertions(+) create mode 100644 conf/arplist.conf create mode 100644 nsa/__init__.py create mode 100644 nsa/__main__.py create mode 100644 nsa/nsa.py create mode 100644 nsa/test.py create mode 100755 util/arp-scan diff --git a/conf/arplist.conf b/conf/arplist.conf new file mode 100644 index 0000000..61fe71b --- /dev/null +++ b/conf/arplist.conf @@ -0,0 +1 @@ +space_network="10.150.9.0/24" diff --git a/nsa/__init__.py b/nsa/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/nsa/__main__.py b/nsa/__main__.py new file mode 100644 index 0000000..478e9e5 --- /dev/null +++ b/nsa/__main__.py @@ -0,0 +1,19 @@ +import asyncio +from nsa.nsa import NSA + +def main(): + """ + Actually start the shit + """ + loop = asyncio.get_event_loop() + nsa = NSA() + loop.set_debug(True) + try: + loop.run_forever() + except KeyboardInterrupt: + pass + + loop.run_until_complete(nsa.teardown()) + +if __name__ == "__main__": + main() diff --git a/nsa/nsa.py b/nsa/nsa.py new file mode 100644 index 0000000..6abb44f --- /dev/null +++ b/nsa/nsa.py @@ -0,0 +1,64 @@ +import asyncio + +from hauptbahnhof import Hauptbahnhof + +class NSA: + """ + Scan the local hackerspace network for new and unknown devices to send back a result + """ + + def __init__(self, loop=None): + if not loop: + loop = asyncio.get_event_loop() + + self.loop = loop + self.hbf = Hauptbahnhof(loop) + self.hbf.subscribe('/haspa/nsa/scan', self.command_scan) + + async def teardown(self): + """ + Clean up your stuff... + """ + await self.hbf.teardown() + + async def command_scan(self, client, message, _): + """ + space.get_number_of_network_devices() -> int + Return the number of non-stationary, connected network devices. + """ + try: + cfg = self.hbf.config("arplist") + except FileNotFoundError as exc: + self.hbf.log.warning("Coult not find config:%s", str(exc)) + cfg = {} + + known_devices = [] + try: + known_devices = message['blacklist'] + except (KeyError, TypeError): + known_devices = [] + + try: + known_devices += cfg['spacedevices'] + except KeyError: + self.hbf.log.warning("You might want to configure space devices") + + # TODO use util/arp-scan + proc = await asyncio.create_subprocess_exec( + *['arp-scan', cfg['space_network']], + stdout=asyncio.subprocess.PIPE, + loop=self.loop) + + output, _ = await proc.communicate() + for line in output.decode('utf8').split('\n'): + self.hbf.log.debug(line) + output = output.decode('utf8').split() + + dev_list = [] + + for line in output: + if line.find(':') != -1 and len(line) == 17: + if line not in known_devices: + dev_list.append(line) + + await self.hbf.publish('/haspa/nsa/result', {'count': len(dev_list)}) diff --git a/nsa/test.py b/nsa/test.py new file mode 100644 index 0000000..17db6ab --- /dev/null +++ b/nsa/test.py @@ -0,0 +1,48 @@ +import asyncio +from hauptbahnhof import Hauptbahnhof + +from nsa.nsa import NSA + + +messages = asyncio.Queue() +async def on_message(client, message, _): + print("Got message: %s"%message) + await messages.put(message) + + +async def test(loop): + testbf = Hauptbahnhof(loop=loop) + testbf.subscribe("/haspa/nsa/result", on_message) + + await asyncio.sleep(2) + + await testbf.publish("/haspa/nsa/scan", {}) # without blacklist + + # Now everythin should be set up + msg = await asyncio.wait_for(messages.get(), 10) # wait max 10 secs + + if msg['count'] > 0: + testbf.log.info("test successfull") + return True + else: + raise ValueError("test failed") + + try: + await testbf.teardown() + except asyncio.CancelledError: + pass + +def main(): + loop = asyncio.get_event_loop() + lib = NSA(loop=loop) + + result = loop.run_until_complete(test(loop)) + loop.run_until_complete(lib.teardown()) + + if result: + exit(0) + else: + exit(1) + +if __name__=="__main__": + main() diff --git a/util/arp-scan b/util/arp-scan new file mode 100755 index 0000000000000000000000000000000000000000..1baac8067db6acdb62a52e9c34eebb78a935f526 GIT binary patch literal 65032 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 Ck-JI& literal 0 HcmV?d00001 -- GitLab