diff --git a/.idea/2024-bsc-sebastian-lenzlinger.iml b/.idea/2024-bsc-sebastian-lenzlinger.iml
index ec63674..aad402c 100644
--- a/.idea/2024-bsc-sebastian-lenzlinger.iml
+++ b/.idea/2024-bsc-sebastian-lenzlinger.iml
@@ -4,4 +4,7 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 67d858b..141240e 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,9 +4,26 @@
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -24,7 +41,7 @@
@@ -50,7 +67,7 @@
"Python.main.executor": "Run",
"RunOnceActivity.ShowReadmeOnStart": "true",
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
- "git-widget-placeholder": "main",
+ "git-widget-placeholder": "cli-dev",
"last_opened_file_path": "/home/slnopriv/projects/2024-bsc-sebastian-lenzlinger/code/kydcap/utils/device_metadata_utils.py",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
@@ -147,6 +164,8 @@
+
+
@@ -196,7 +215,15 @@
1714617266799
-
+
+
+ 1714823516954
+
+
+
+ 1714823516954
+
+
@@ -252,7 +279,8 @@
-
+
+
diff --git a/archive/metadata_utils.py b/archive/metadata_utils.py
index 770fe63..c0cc93e 100644
--- a/archive/metadata_utils.py
+++ b/archive/metadata_utils.py
@@ -3,8 +3,8 @@ from pathlib import Path
from pydantic import BaseModel
-from kydcap.models.device_metadata_model import DeviceMetadata
-from kydcap.config import DEVICE_METADATA_FILE
+from iottb.models.device_metadata_model import DeviceMetadata
+from iottb.definitions import DEVICE_METADATA_FILE
def write_device_metadata_to_file(metadata: DeviceMetadata, device_path: Path):
diff --git a/code/kydcap/__init__.py b/code/iottb/__init__.py
similarity index 100%
rename from code/kydcap/__init__.py
rename to code/iottb/__init__.py
diff --git a/code/kydcap/__main__.py b/code/iottb/__main__.py
similarity index 72%
rename from code/kydcap/__main__.py
rename to code/iottb/__main__.py
index 773ed35..17fa694 100644
--- a/code/kydcap/__main__.py
+++ b/code/iottb/__main__.py
@@ -1,8 +1,8 @@
#!/usr/bin/env python3
import argparse
-from kydcap.subcommands.sniff import setup_sniff_parser
-from kydcap.subcommands.initialize_device_root_dir import setup_init_root_dir_parser
+from iottb.subcommands.capture import setup_capture_parser
+from iottb.subcommands.init import setup_init_iottb_root_parser
CAP_DIR_PREFIX = ...
@@ -12,11 +12,11 @@ CAP_DIR_PREFIX = ...
######################
def setup_argparse():
# create top level parser
- root_parser = argparse.ArgumentParser(prog="kydcap")
+ root_parser = argparse.ArgumentParser(prog="iottb")
subparsers = root_parser.add_subparsers(title="subcommands", required=True, dest="command")
- setup_sniff_parser(subparsers)
- setup_init_root_dir_parser(subparsers)
+ setup_capture_parser(subparsers)
+ setup_init_iottb_root_parser(subparsers)
return root_parser
diff --git a/code/iottb/cli.py b/code/iottb/cli.py
new file mode 100644
index 0000000..1e91ffe
--- /dev/null
+++ b/code/iottb/cli.py
@@ -0,0 +1,2 @@
+import argparse
+from .subcommands.capture import handle_sniff
\ No newline at end of file
diff --git a/code/kydcap/config.py b/code/iottb/definitions.py
similarity index 78%
rename from code/kydcap/config.py
rename to code/iottb/definitions.py
index e39c53c..8471ea2 100644
--- a/code/kydcap/config.py
+++ b/code/iottb/definitions.py
@@ -4,7 +4,7 @@ from enum import Flag, unique, global_enum
DEVICE_METADATA_FILE = "device-metadata.json"
CAPTURE_METADATA_FILE = "capture-metadata.json"
-TODAY_DATE_STRING = datetime.now().strftime("%d%b%Y").lower()
+TODAY_DATE_STRING = datetime.now().strftime("%d%b%Y").lower() # TODO convert to function in utils or so
@unique
diff --git a/code/kydcap/models/__init__.py b/code/iottb/models/__init__.py
similarity index 100%
rename from code/kydcap/models/__init__.py
rename to code/iottb/models/__init__.py
diff --git a/code/kydcap/models/capture_metadata_model.py b/code/iottb/models/capture_metadata_model.py
similarity index 95%
rename from code/kydcap/models/capture_metadata_model.py
rename to code/iottb/models/capture_metadata_model.py
index 6e26975..47cfed4 100644
--- a/code/kydcap/models/capture_metadata_model.py
+++ b/code/iottb/models/capture_metadata_model.py
@@ -6,7 +6,7 @@ from typing import Optional, Any
from pydantic import BaseModel, Field
-from kydcap.config import ReturnCodes
+from iottb.definitions import ReturnCodes
class KydcapCaptureMetadata(BaseModel):
@@ -19,6 +19,7 @@ class KydcapCaptureMetadata(BaseModel):
start_time: str
stop_time: str
packet_count: Optional[int]
+ pcap_filter: str = ""
# Optional Fields
device_ip_address: Optional[str] = None
diff --git a/code/kydcap/models/device_metadata_model.py b/code/iottb/models/device_metadata_model.py
similarity index 97%
rename from code/kydcap/models/device_metadata_model.py
rename to code/iottb/models/device_metadata_model.py
index 173f92f..3609ba3 100644
--- a/code/kydcap/models/device_metadata_model.py
+++ b/code/iottb/models/device_metadata_model.py
@@ -4,8 +4,8 @@ from datetime import datetime
from pathlib import Path
from typing import Optional, List, Any
-# kydcap modules
-from kydcap.config import ReturnCodes
+# iottb modules
+from iottb.definitions import ReturnCodes
# 3rd party libs
from pydantic import BaseModel, Field
diff --git a/code/kydcap/subcommands/__init__.py b/code/iottb/subcommands/__init__.py
similarity index 100%
rename from code/kydcap/subcommands/__init__.py
rename to code/iottb/subcommands/__init__.py
diff --git a/code/kydcap/subcommands/sniff.py b/code/iottb/subcommands/capture.py
similarity index 88%
rename from code/kydcap/subcommands/sniff.py
rename to code/iottb/subcommands/capture.py
index 523cd64..f606d52 100644
--- a/code/kydcap/subcommands/sniff.py
+++ b/code/iottb/subcommands/capture.py
@@ -1,17 +1,17 @@
import subprocess
from pathlib import Path
-from kydcap.config import *
-from kydcap.models.device_metadata_model import DeviceMetadata
+from iottb.definitions import *
+from iottb.models.device_metadata_model import DeviceMetadata
-def setup_sniff_parser(subparsers):
+def setup_capture_parser(subparsers):
parser = subparsers.add_parser('sniff', help='Sniff packets with tcpdump')
# metadata args
- parser.add_argument("-a", "--ip-address=", help="IP address of the device to sniff", dest="device_ip")
+ parser.add_argument("-a", "--ip-address", help="IP address of the device to sniff", dest="device_ip")
# tcpdump args
parser_sniff_tcpdump = parser.add_argument_group('tcpdump arguments')
- parser_sniff_tcpdump.add_argument("-i", "--interface=", help="Interface to capture on.", dest="capture_interface",
+ parser_sniff_tcpdump.add_argument("-i", "--interface", help="Interface to capture on.", dest="capture_interface",
default="any")
parser_sniff_tcpdump.add_argument("-I", "--monitor-mode", help="Put interface into monitor mode",
action="store_true")
@@ -30,7 +30,7 @@ def setup_sniff_parser(subparsers):
cap_size_group = parser.add_mutually_exclusive_group(required=False)
cap_size_group.add_argument("-c", "--count", type=int, help="Number of packets to capture.", default=0)
cap_size_group.add_argument("--mins", type=int, help="Time in minutes to capture.", default=60)
- parser.set_defaults(func=handle_sniff)
+ parser.set_defaults(func=handle_capture)
# return parser
# parser.add_default(func=handle_sniff(args=sniff_args))
@@ -40,6 +40,9 @@ def cwd_is_device_root_dir() -> bool:
return device_metadata_file.exists()
+def get_user_capture_config():
+ pass
+
def start_guided_device_root_dir_setup():
assert False, "Not implemented"
@@ -52,7 +55,7 @@ def handle_metadata():
if response.lower() == "y":
start_guided_device_root_dir_setup()
else:
- print("'kydcap init-device-root --help' for more information.")
+ print("'iottb init-device-root --help' for more information.")
exit(ReturnCodes.ABORTED)
# device_id = handle_capture_metadata()
return ReturnCodes.SUCCESS
@@ -68,9 +71,12 @@ def handle_capture_metadata():
def handle_date_dir():
pass
+
def run_tcpdum(cmd):
subprocess.run(cmd)
-def handle_sniff(args):
+
+
+def handle_capture(args):
if cwd_is_device_root_dir():
handle_date_dir()
cmd = ['sudo tcpdump', '-i', args.capture_interface]
diff --git a/code/kydcap/utils/__init__.py b/code/iottb/subcommands/config.py
similarity index 100%
rename from code/kydcap/utils/__init__.py
rename to code/iottb/subcommands/config.py
diff --git a/code/kydcap/subcommands/initialize_device_root_dir.py b/code/iottb/subcommands/init.py
similarity index 83%
rename from code/kydcap/subcommands/initialize_device_root_dir.py
rename to code/iottb/subcommands/init.py
index 88f4ef3..204e91b 100644
--- a/code/kydcap/subcommands/initialize_device_root_dir.py
+++ b/code/iottb/subcommands/init.py
@@ -1,11 +1,11 @@
import pathlib
-from kydcap.config import DEVICE_METADATA_FILE
-from kydcap.models.device_metadata_model import DeviceMetadata
+from iottb.definitions import DEVICE_METADATA_FILE
+from iottb.models.device_metadata_model import DeviceMetadata
-def setup_init_root_dir_parser(subparsers):
- parser = subparsers.add_parser("init-device-root", aliases=["idr"])
+def setup_init_iottb_root_parser(subparsers):
+ parser = subparsers.add_parser("init", aliases=["idr"])
parser.add_argument("--root_dir", type=pathlib.Path, default=pathlib.Path.cwd())
group = parser.add_mutually_exclusive_group()
group.add_argument("--dynamic", action="store_true", help="enable guided setup", default=False)
@@ -14,7 +14,7 @@ def setup_init_root_dir_parser(subparsers):
def handle_idr(args):
- print("Entered kydcap initialize-device-root")
+ print("Entered iottb initialize-device-root")
root_dir = args.root_dir
device_name = None
if args.dynamic:
diff --git a/code/iottb/utils/__init__.py b/code/iottb/utils/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/code/kydcap/utils/capture_metadata_utils.py b/code/iottb/utils/capture_metadata_utils.py
similarity index 97%
rename from code/kydcap/utils/capture_metadata_utils.py
rename to code/iottb/utils/capture_metadata_utils.py
index fa5b93a..ae67e69 100644
--- a/code/kydcap/utils/capture_metadata_utils.py
+++ b/code/iottb/utils/capture_metadata_utils.py
@@ -1,7 +1,7 @@
import json
from pathlib import Path
-from kydcap.config import ReturnCodes
+from iottb.definitions import ReturnCodes
def set_device_ip_address(ip_addr: str, file_path: Path):
diff --git a/code/kydcap/utils/device_metadata_utils.py b/code/iottb/utils/device_metadata_utils.py
similarity index 97%
rename from code/kydcap/utils/device_metadata_utils.py
rename to code/iottb/utils/device_metadata_utils.py
index 380ff3a..61f3e6c 100644
--- a/code/kydcap/utils/device_metadata_utils.py
+++ b/code/iottb/utils/device_metadata_utils.py
@@ -2,7 +2,7 @@ import json
from datetime import datetime
from pathlib import Path
-from kydcap.config import ReturnCodes
+from iottb.definitions import ReturnCodes
def update_firmware_version(version: str, file_path: Path):
diff --git a/code/kydcap/utils/tcpdump_utils.py b/code/iottb/utils/tcpdump_utils.py
similarity index 100%
rename from code/kydcap/utils/tcpdump_utils.py
rename to code/iottb/utils/tcpdump_utils.py
diff --git a/code/tests/utils/test_capture_metadata_utils.py b/code/tests/utils/test_capture_metadata_utils.py
index 26647c8..71278c3 100644
--- a/code/tests/utils/test_capture_metadata_utils.py
+++ b/code/tests/utils/test_capture_metadata_utils.py
@@ -3,4 +3,4 @@ from pathlib import Path
from unittest.mock import mock_open, patch
import pytest
-from kydcap.utils.capture_metadata_utils import set_device_ip_address
\ No newline at end of file
+from iottb.utils.capture_metadata_utils import set_device_ip_address
\ No newline at end of file