feat: update accurency formula

This commit is contained in:
sangge-redmi 2024-06-04 20:31:09 +08:00
parent fc4e0e3b30
commit 81cbc88e9b

View File

@ -3,6 +3,7 @@ import unittest
import shutil
import os
import threading
import re
from detection.utils import read_file_content
from .final_tests_util import (
@ -11,6 +12,7 @@ from .final_tests_util import (
inject_pickle_backdoor,
inject_random_backdoor,
inject_pyc_backdoor,
backdoors,
)
from detection.Regexdetection import find_dangerous_functions
from detection.GPTdetection import detectGPT
@ -102,11 +104,22 @@ class TestFinalTests(unittest.TestCase):
# test injected code
with open(self.path + "output.txt", "r") as f:
lines = f.readlines()
injected_detectedNum = 0
injected_detected_num = 0
injected_correct_num = 0
pattern = r"\w+\.py: Line \d+: (.+)"
for line in lines:
if "py:" in line:
injected_detectedNum += 1
injected_accurency = injected_detectedNum / self.injectedNum
injected_detected_num += 1
match = re.search(pattern, line)
command = ""
if match:
command = match.group(1)
for backdoor in backdoors:
if command in backdoor:
injected_correct_num += 1
break
injected_accurency = injected_detected_num / self.py_files_num
print(f"injected files accurency: {injected_accurency}")
try:
GPTresult = GPTdetectFileList(possibly_dangerous_file)
@ -122,21 +135,28 @@ class TestFinalTests(unittest.TestCase):
# test pickle files
with open(self.path + "output.txt", "r") as f:
lines = f.readlines()
pickle_detectedNum = 0
pickle_detected_num = 0
pickle_correct_num = 0
for line in lines:
if "pickle" in line:
pickle_detectedNum += 1
pickle_accurency = pickle_detectedNum / self.pickle_files_num
pickle_detected_num += 1
if re.search(r"backdoor\d*\.pickle", line):
pickle_correct_num += 1
pickle_accurency = pickle_detected_num / self.pickle_true_num
print(f"pickle files accurency: {pickle_accurency}")
# test pyc files
with open(self.path + "output.txt", "r") as f:
lines = f.readlines()
pyc_detectedNum = 0
pyc_detected_num = 0
pyc_correct_num = 0
for line in lines:
if "pyc" in line:
pyc_detectedNum += 1
pyc_accurency = pyc_detectedNum / self.pyc_files_num
pyc_detected_num += 1
if re.search(r"backdoor\d*\.pyc", line):
pyc_correct_num += 1
pyc_accurency = pyc_detected_num / self.pyc_true_num
print(f"pyc files accurency: {pyc_accurency}")