feat: update accurency formula
This commit is contained in:
parent
fc4e0e3b30
commit
81cbc88e9b
@ -3,6 +3,7 @@ import unittest
|
|||||||
import shutil
|
import shutil
|
||||||
import os
|
import os
|
||||||
import threading
|
import threading
|
||||||
|
import re
|
||||||
|
|
||||||
from detection.utils import read_file_content
|
from detection.utils import read_file_content
|
||||||
from .final_tests_util import (
|
from .final_tests_util import (
|
||||||
@ -11,6 +12,7 @@ from .final_tests_util import (
|
|||||||
inject_pickle_backdoor,
|
inject_pickle_backdoor,
|
||||||
inject_random_backdoor,
|
inject_random_backdoor,
|
||||||
inject_pyc_backdoor,
|
inject_pyc_backdoor,
|
||||||
|
backdoors,
|
||||||
)
|
)
|
||||||
from detection.Regexdetection import find_dangerous_functions
|
from detection.Regexdetection import find_dangerous_functions
|
||||||
from detection.GPTdetection import detectGPT
|
from detection.GPTdetection import detectGPT
|
||||||
@ -102,11 +104,22 @@ class TestFinalTests(unittest.TestCase):
|
|||||||
# test injected code
|
# test injected code
|
||||||
with open(self.path + "output.txt", "r") as f:
|
with open(self.path + "output.txt", "r") as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
injected_detectedNum = 0
|
injected_detected_num = 0
|
||||||
|
injected_correct_num = 0
|
||||||
|
pattern = r"\w+\.py: Line \d+: (.+)"
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if "py:" in line:
|
if "py:" in line:
|
||||||
injected_detectedNum += 1
|
injected_detected_num += 1
|
||||||
injected_accurency = injected_detectedNum / self.injectedNum
|
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}")
|
print(f"injected files accurency: {injected_accurency}")
|
||||||
try:
|
try:
|
||||||
GPTresult = GPTdetectFileList(possibly_dangerous_file)
|
GPTresult = GPTdetectFileList(possibly_dangerous_file)
|
||||||
@ -122,21 +135,28 @@ class TestFinalTests(unittest.TestCase):
|
|||||||
# test pickle files
|
# test pickle files
|
||||||
with open(self.path + "output.txt", "r") as f:
|
with open(self.path + "output.txt", "r") as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
pickle_detectedNum = 0
|
pickle_detected_num = 0
|
||||||
|
pickle_correct_num = 0
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if "pickle" in line:
|
if "pickle" in line:
|
||||||
pickle_detectedNum += 1
|
pickle_detected_num += 1
|
||||||
pickle_accurency = pickle_detectedNum / self.pickle_files_num
|
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}")
|
print(f"pickle files accurency: {pickle_accurency}")
|
||||||
|
|
||||||
# test pyc files
|
# test pyc files
|
||||||
with open(self.path + "output.txt", "r") as f:
|
with open(self.path + "output.txt", "r") as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
pyc_detectedNum = 0
|
pyc_detected_num = 0
|
||||||
|
pyc_correct_num = 0
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if "pyc" in line:
|
if "pyc" in line:
|
||||||
pyc_detectedNum += 1
|
pyc_detected_num += 1
|
||||||
pyc_accurency = pyc_detectedNum / self.pyc_files_num
|
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}")
|
print(f"pyc files accurency: {pyc_accurency}")
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user