def save_feature(self, file_name, save_file_name): db_handler = DatabaseHandler() opcode_variety = db_handler.extract_opcode_variety() opcode_sequence_O0 = db_handler.extract_opcode_sequence(file_name=file_name + '_MinGW_O0') opcode_sequence_O1 = db_handler.extract_opcode_sequence(file_name=file_name + '_MinGW_O1') opcode_sequence_O2 = db_handler.extract_opcode_sequence(file_name=file_name + '_MinGW_O2') opcode_sequence_O3 = db_handler.extract_opcode_sequence(file_name=file_name + '_MinGW_O3') with open(self.csv_save_dir_name + os.sep + save_file_name, 'wb') as f: writer = csv.writer(f) writer.writerow([file_name, 'O0', 'O1', 'O2', 'O3']) for opcode in opcode_variety: row = [] row.append(opcode) row.append(opcode_sequence_O0.count(opcode)) row.append(opcode_sequence_O1.count(opcode)) row.append(opcode_sequence_O2.count(opcode)) row.append(opcode_sequence_O3.count(opcode)) writer.writerow(row) row = [] row.append('Sum') row.append(len(opcode_sequence_O0)) row.append(len(opcode_sequence_O1)) row.append(len(opcode_sequence_O2)) row.append(len(opcode_sequence_O3)) writer.writerow(row)
def set_opcode_variety_from_database(self): # Order of bag-of-instructions feature vector db_handler = DatabaseHandler() opcode_variety_list = db_handler.extract_opcode_variety() self.set_opcode_variety(opcode_variety_list)