agencies

vul 폴더에 있는 patch 파일을 통해 취약한 코드 있는 여부 확인해보기 본문

Ⅳ. 기타

vul 폴더에 있는 patch 파일을 통해 취약한 코드 있는 여부 확인해보기

agencies 2024. 11. 25. 20:47
# Load and read the provided files to analyze the content
patch_file_path = "test.patch"
old_vul_file_path = "test_OLD.vul"

with open(patch_file_path, 'r') as patch_file:
    patch_content = patch_file.readlines()

with open(old_vul_file_path, 'r') as old_vul_file:
    old_vul_content = old_vul_file.readlines()

# Extract removed lines (starting with '-') from the patch file
removed_lines = [line[1:].strip() for line in patch_content if line.startswith('-')]

# Prepare to check if these lines exist in the old vulnerability file
old_vul_lines = [line.strip() for line in old_vul_content]

# Identify which removed lines exist in the OLD file
vulnerable_lines = [line for line in removed_lines if line in old_vul_lines]

# Print all removed lines with their status
print("=== Removed Lines Vulnerability Details ===")
for line in removed_lines:
    if line in vulnerable_lines:
        print(f"VULNERABLE: {line}")  # Highlight vulnerable lines
    else:
        print(f"SAFE: {line}")  # Show safe lines

# Print overall status
print("\n=== Overall Status ===")
if vulnerable_lines:
    print("Status: Vulnerable (At least one removed line exists in OLD file)")
else:
    print("Status: Safe (No removed lines exist in OLD file)")

# Save the results to a CSV file for further analysis
import pandas as pd

# Prepare data for saving
results_data = [{"Removed Line": line, "Status": "Vulnerable" if line in vulnerable_lines else "Safe"}
                for line in removed_lines]

# Save the details to a CSV file
results_df = pd.DataFrame(results_data)
results_df.to_csv("removed_lines_vulnerability_results.csv", index=False)
print("\nDetails saved to 'removed_lines_vulnerability_results.csv'.")