Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import pefile
- list_libraries = {}
- def initialize():
- libraries = open("network_libraries.txt")
- for lib in libraries:
- lib_size = len(lib)
- list_libraries[lib[:lib_size - 1]] = []
- for func in libraries:
- func_size = len(func)
- if not func[:func_size - 1]:
- break
- list_libraries[lib[:lib_size - 1]].append(func[:func_size - 1])
- initialize()
- def parse_pe(pe, filename):
- try:
- pe.parse_data_directories(directories=[pefile.DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_IMPORT']])
- except:
- return
- libraries = []
- functions = []
- if hasattr(pe, 'DIRECTORY_ENTRY_IMPORT'):
- flag = False
- for libs in pe.DIRECTORY_ENTRY_IMPORT:
- try:
- lib = libs.dll.decode().lower()
- except:
- continue
- if lib in list_libraries:
- for funcs in libs.imports:
- try:
- func = funcs.name.decode()
- except:
- continue
- if func in list_libraries[lib]:
- libraries.append(lib)
- functions.append(func)
- flag = True
- break
- if flag:
- break
- if len(libraries) and len(functions):
- print("File: " + filename)
- print("This file is using the following network libraries and functions: ", end="")
- for lib in libraries:
- for func in functions:
- print("Lib: " + lib + " Func: " + func + "\n")
- def isUsingNetwork(folder):
- directory = folder
- try:
- for file in os.listdir(directory):
- filename = os.path.join(directory, file)
- if os.path.isfile(filename):
- try:
- pe = pefile.PE(filename, fast_load=True)
- except:
- continue
- parse_pe(pe, filename)
- elif os.path.isdir(filename):
- isUsingNetwork(filename)
- except:
- print("No access to " + folder + "\n")
- print("Enter the directory:")
- directory = input()
- isUsingNetwork(directory)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement