1+ import os
2+ import random
3+ import sys
4+
5+ from fastzip_tools import DATA_DIRECTORY , calc_all_event_bits_fastzip
6+
7+ sys .path .insert (1 , os .getcwd () + "/.." ) # Gives us path to eval_tools.py
8+ from eval_tools import ( # noqa: E402
9+ load_signal_groups ,
10+ wav_file_load ,
11+ )
12+ from evaluator import Evaluator # noqa: E402
13+
14+ # Static default parameters
15+ KEY_LENGTH_DEFAULT = 256
16+ NUMBER_OF_CHOICES_DEFAULT = 2000
17+ WRAP_AROUND_LIMIT_DEFAULT = 10
18+
19+ EVENT_NUM_DEFAULT = 5
20+
21+ EVENT_FILE_STUB = "fastzip_event_real"
22+
23+ FUZZING_DIR = "fastzip_real_fuzz"
24+ FUZZING_STUB = "fastzip_real"
25+
26+ DEFAULT_GROUPS = [
27+ ["10.0.0.238" , "10.0.0.228" , "10.0.0.239" ],
28+ ["10.0.0.231" , "10.0.0.232" , "10.0.0.239" ],
29+ ["10.0.0.233" , "10.0.0.236" , "10.0.0.239" ],
30+ ["10.0.0.227" , "10.0.0.229" , "10.0.0.237" ],
31+ ["10.0.0.235" , "10.0.0.237" , "10.0.0.239" ],
32+ ["10.0.0.234" , "10.0.0.239" , "10.0.0.237" ],
33+ ]
34+
35+ DEFAULT_SENSOR_TYPE = "mic"
36+
37+ DEFAULT_TIMESTAMP = "202408*.wav"
38+
39+ SENSOR_DATA_DIR = "/mnt/nas"
40+
41+ PARAM_DIR = "../plot_scripts/plot_data/fastzip_real_fuzz"
42+ PARAM_FILE_STUB = "fastzip_real_fuzz"
43+
44+ def main (
45+ key_length = KEY_LENGTH_DEFAULT ,
46+ data_dir = SENSOR_DATA_DIR ,
47+ param_dir = PARAM_DIR ,
48+ sensor_type = DEFAULT_SENSOR_TYPE ,
49+ groups = DEFAULT_GROUPS ,
50+ timestamp = DEFAULT_TIMESTAMP ,
51+ ):
52+ if not os .path .isdir (DATA_DIRECTORY ):
53+ os .mkdir (DATA_DIRECTORY )
54+
55+ def unpack_parameters (params ):
56+ names = [
57+ "window_size" ,
58+ "overlap_size" ,
59+ "n_bits" ,
60+ "eqd_delta" ,
61+ "ewma" ,
62+ "alpha" ,
63+ "remove_noise" ,
64+ "bias" ,
65+ "normalize" ,
66+ "power_th" ,
67+ "snr_th" ,
68+ "peak_th" ,
69+ "peak_status" ,
70+ "sample_rate"
71+ ]
72+ output = [params [name ] for name in names ]
73+ output .append (EVENT_NUM_DEFAULT )
74+ return output
75+
76+ group_signals , group_params = load_signal_groups (
77+ groups ,
78+ sensor_type ,
79+ timestamp ,
80+ data_dir ,
81+ param_dir ,
82+ PARAM_FILE_STUB ,
83+ unpack_parameters ,
84+ load_func = wav_file_load ,
85+ event_dir_file_stub = EVENT_FILE_STUB ,
86+ data_dir = DATA_DIRECTORY
87+ )
88+
89+ def func (signals , * params ):
90+ key_size = params [0 ]
91+ remove_noise = params [7 ]
92+ ewma_filter = params [5 ]
93+ alpha = params [6 ]
94+ bias = params [8 ]
95+ n_bits = params [3 ]
96+ eqd_delta = params [4 ]
97+ print (
98+ f"key_size: { key_size } ; remove_noise: { remove_noise } ; ewma_filter: { ewma_filter } ; alpha: { alpha } ; bias: { bias } ; n_bits: { n_bits } ; eqd_delta: { eqd_delta } "
99+ )
100+ return calc_all_event_bits_fastzip (
101+ signals , key_size , remove_noise , ewma_filter , alpha , bias , n_bits , eqd_delta
102+ )
103+
104+
105+ # Creating an evaluator object with the bit generation algorithm
106+ evaluator = Evaluator (func , event_gen = True , convert_bytes_to_bitstring = False )
107+ # Evaluating the signals with the specified number of trials
108+ evaluator .best_parameter_evaluation (
109+ group_signals , group_params , key_length , DATA_DIRECTORY , FUZZING_STUB
110+ )
111+
112+
113+ if __name__ == "__main__" :
114+ main ()
0 commit comments