Amazing-Python-Scripts

Форк
0
97 строк · 2.5 Кб
1
import os
2

3
# Define the JPEG signature header and footer
4
header = b"\xff\xd8\xff"
5
footer = b"\xff\xd9"
6

7
# Initialize global counters
8
file_cnt = 0
9
dir_cnt = 0
10

11
# Directory search
12

13

14
def fileSearch(dir_path, cnt):
15
    global file_cnt
16
    global dir_cnt
17
    filelist = []
18

19
    for _ in range(cnt):
20
        print("\t", end=" ")
21
    print("[>] Directory: %s" % dir_path)
22
    for files in os.listdir(dir_path):
23
        full_path = os.path.join(dir_path, files)
24
        if os.path.isfile(full_path):
25
            filelist.append(full_path)
26
            for _ in range(cnt):
27
                print("\t", end=" ")
28
            print("[+] File Name: %s" % files)
29
            file_cnt += 1
30
        elif os.path.isdir(full_path):
31
            for i in range(cnt):
32
                print("\t", end=" ")
33
            print(
34
                "[!] SubDirectory: \"%s\" found. Start file search in this directory." % files)
35
            filelist.extend(fileSearch(full_path, cnt + 1))
36
            dir_cnt += 1
37

38
    return filelist
39

40
# File open and store carved file
41

42

43
def Carving(file_list):
44
    cnt = 0
45
    carv_list = []
46
    print("====================Carving Start====================")
47
    for i in range(len(file_list)):
48
        with open(file_list[i], 'rb') as file:
49
            carv_cont = findSignature(file)
50
            print("[-] ", file_list[i], " File passed")
51

52
            if len(carv_cont) != 0:
53
                carv_name = f'carv{cnt}.jpeg'
54
                with open(carv_name, 'wb') as carv:
55
                    for j in range(len(carv_cont)):
56
                        carv.write(carv_cont[j])
57
                print(f'[*] {carv_name} is created!')
58
                carv_list.append(carv_name)
59
                cnt += 1
60

61
    return carv_list
62

63
# Find signature
64

65

66
def findSignature(file):
67
    flag = 0
68
    contents = []
69

70
    while True:
71
        buf = file.read(0x200)
72
        if len(buf) == 0:
73
            break
74
        if flag != 1:
75
            is_head = buf[:3]
76
            if header == is_head and flag == 0:
77
                contents.append(buf)
78
                flag = 1
79
        else:
80
            if footer in buf[-2:]:
81
                contents.append(buf)
82
                return contents
83
            else:
84
                contents.append(buf)
85
    return contents
86

87

88
# Main
89
if __name__ == "__main__":
90
    print("==================File Search Start==================")
91
    fl = fileSearch("./", 0)
92
    print(f'\nSEARCH RESULT: {file_cnt} Files. {dir_cnt} Directory.')
93
    print(f"Filelist: {fl}\n")
94
    c1 = Carving(fl)
95
    print(f"Carvlist: {c1}\n")
96

97
    print("Exit...")
98

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.