#! /usr/bin/python3 # -*- coding: utf-8 -*- # Author: kelvinBen # Github: https://github.com/kelvinBen/AppInfoScanner import os import config import hashlib from queue import Queue class WebTask(object): thread_list = [] value_list = [] result_dict = {} def __init__(self, path): self.path = path self.file_queue = Queue() self.file_identifier = [] self.permissions = [] def start(self): if len(config.web_file_suffix) <= 0: scanner_file_suffix = ["html", "js", "html", "xml"] scanner_file_suffix = config.web_file_suffix if os.path.isdir(self.path): self.__get_scanner_file__(self.path, scanner_file_suffix) else: if not (self.path.split(".")[-1] in scanner_file_suffix): err_info = ("Retrieval of this file type is not supported. Select a file or directory with a suffix of %s" % ",".join(scanner_file_suffix)) raise Exception(err_info) self.file_queue.put(self.path) return {"comp_list": [], "shell_flag": False, "file_queue": self.file_queue, "packagename": None, "file_identifier": self.file_identifier, "permissions": self.permissions} def __get_scanner_file__(self, scanner_dir, file_suffix): dir_or_files = os.listdir(scanner_dir) for dir_file in dir_or_files: dir_file_path = os.path.join(scanner_dir, dir_file) if os.path.isdir(dir_file_path): self.__get_scanner_file__(dir_file_path, file_suffix) else: if len(dir_file.split(".")) > 1: if dir_file.split(".")[-1] in file_suffix: with open(dir_file_path,'rb') as f: dex_md5 = str(hashlib.md5().update(f.read()).hexdigest()).upper() self.file_identifier.append(dex_md5) self.file_queue.put(dir_file_path)