#!/bin/env python3
import subprocess
import time
import os

def run(command):
        return subprocess.getoutput(command)

os.system("touch copy_current_pkgs.txt")
os.system("sudo dpkg -l | awk '{print $2}' > copy_current_pkgs.txt")

# parse current package list 
with open("copy_current_pkgs.txt", "r") as file:
    current_pkgs = [line.strip() for line in file]

# parse whitelist
with open("/home/templates/mint-default-pkgs.txt", "r") as wl:
    whitelist = [line.strip() for line in wl]

# parse blacklist
with open("/home/templates/blacklist_pkgs.txt", "r") as bl:
    blacklist = [line.strip() for line in bl]

# parse critical services 
with open("/home/templates/critical_services.txt", "r") as cs:
    critical_servs = [line.strip() for line in cs]

# create the output file 
os.system("touch found_mal_pkgs.txt")

# parse output
output = open("found_mal_pkgs.txt", "a+")
output.write("#########################################\n")
output.write("Packages not found in whitelist: \n")
print("Finding packages not in whitelist ...")
for curr_pkg in current_pkgs:
    if curr_pkg not in whitelist:
        output.write(curr_pkg + "\n")

output.write("#########################################\n")
output.write("Blacklisted packages: \n")
print("Finding packages in blacklist ...")
for curr_pkg in current_pkgs:
    if curr_pkg not in whitelist and curr_pkg in blacklist:
        output.write(curr_pkg + "\n")

output.write("#########################################\n")
output.write("Critical Services Found: \n")
print("Finding packages in critical services ...")
for curr_pkg in current_pkgs:
    if curr_pkg in critical_servs:
        output.write(curr_pkg + "\n")

print("Script finished. The found packages are in found_mal_pkgs.txt")
os.system("cat found_mal_pkgs.txt")
output.close()
os.system("mv found_mal_pkgs.txt /birch/output_files/found_mal_pkgs.txt")
os.system("mv copy_current_pkgs.txt /home/templates/current_system_packages.txt")
