40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
import json
|
|
import logging
|
|
import uuid
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
logger = logging.getLogger('iottb.sniff') # Log with sniff subcommand
|
|
|
|
class CaptureMetadata:
|
|
def __init__(self, device_id, capture_dir, interface, address, capture_file, tcpdump_command, tcpdump_stdout, tcpdump_stderr, packet_filter, alias):
|
|
self.base_data = {
|
|
'device_id': device_id,
|
|
'capture_id': str(uuid.uuid4()),
|
|
'capture_date': datetime.now().isoformat(),
|
|
'capture_dir': str(capture_dir),
|
|
'capture_file': capture_file,
|
|
'start_time': "",
|
|
'stop_time': "",
|
|
'alias': alias
|
|
}
|
|
self.features = {
|
|
'interface': interface,
|
|
'device_ip_address': address if address else "No IP Address set",
|
|
'tcpdump_stdout': str(tcpdump_stdout),
|
|
'tcpdump_stderr': str(tcpdump_stderr),
|
|
'packet_filter': packet_filter
|
|
}
|
|
self.command = tcpdump_command
|
|
|
|
def save_to_file(self):
|
|
metadata = {
|
|
'base_data': self.base_data,
|
|
'features': self.features,
|
|
'command': self.command
|
|
}
|
|
metadata_file_path = Path(self.base_data['capture_dir']) / 'metadata.json'
|
|
with open(metadata_file_path, 'w') as f:
|
|
json.dump(metadata, f, indent=4)
|
|
logger.info(f'Metadata saved to {metadata_file_path}')
|