Amazing-Python-Scripts
97 строк · 2.5 Кб
1import os2
3# Define the JPEG signature header and footer
4header = b"\xff\xd8\xff"5footer = b"\xff\xd9"6
7# Initialize global counters
8file_cnt = 09dir_cnt = 010
11# Directory search
12
13
14def fileSearch(dir_path, cnt):15global file_cnt16global dir_cnt17filelist = []18
19for _ in range(cnt):20print("\t", end=" ")21print("[>] Directory: %s" % dir_path)22for files in os.listdir(dir_path):23full_path = os.path.join(dir_path, files)24if os.path.isfile(full_path):25filelist.append(full_path)26for _ in range(cnt):27print("\t", end=" ")28print("[+] File Name: %s" % files)29file_cnt += 130elif os.path.isdir(full_path):31for i in range(cnt):32print("\t", end=" ")33print(34"[!] SubDirectory: \"%s\" found. Start file search in this directory." % files)35filelist.extend(fileSearch(full_path, cnt + 1))36dir_cnt += 137
38return filelist39
40# File open and store carved file
41
42
43def Carving(file_list):44cnt = 045carv_list = []46print("====================Carving Start====================")47for i in range(len(file_list)):48with open(file_list[i], 'rb') as file:49carv_cont = findSignature(file)50print("[-] ", file_list[i], " File passed")51
52if len(carv_cont) != 0:53carv_name = f'carv{cnt}.jpeg'54with open(carv_name, 'wb') as carv:55for j in range(len(carv_cont)):56carv.write(carv_cont[j])57print(f'[*] {carv_name} is created!')58carv_list.append(carv_name)59cnt += 160
61return carv_list62
63# Find signature
64
65
66def findSignature(file):67flag = 068contents = []69
70while True:71buf = file.read(0x200)72if len(buf) == 0:73break74if flag != 1:75is_head = buf[:3]76if header == is_head and flag == 0:77contents.append(buf)78flag = 179else:80if footer in buf[-2:]:81contents.append(buf)82return contents83else:84contents.append(buf)85return contents86
87
88# Main
89if __name__ == "__main__":90print("==================File Search Start==================")91fl = fileSearch("./", 0)92print(f'\nSEARCH RESULT: {file_cnt} Files. {dir_cnt} Directory.')93print(f"Filelist: {fl}\n")94c1 = Carving(fl)95print(f"Carvlist: {c1}\n")96
97print("Exit...")98