mirror of
https://github.com/hastagAB/Awesome-Python-Scripts.git
synced 2024-12-18 00:00:14 +00:00
93 lines
2.1 KiB
Python
93 lines
2.1 KiB
Python
|
import os
|
||
|
import binascii
|
||
|
|
||
|
# var: jpeg signature header
|
||
|
# var: jpeg signature footer
|
||
|
header = "\\xff\\xd8\\xff"
|
||
|
footer = "\\xff\\xd9"
|
||
|
|
||
|
global file_cnt
|
||
|
file_cnt = 0
|
||
|
global dir_cnt
|
||
|
dir_cnt = 0
|
||
|
|
||
|
# dir read
|
||
|
def fileSearch(dir_path, cnt):
|
||
|
global file_cnt
|
||
|
global dir_cnt
|
||
|
filelist = []
|
||
|
|
||
|
for _ in range(cnt):
|
||
|
print("\t", end=" ")
|
||
|
print("[>] Directory: %s" % dir_path)
|
||
|
for files in os.listdir(dir_path):
|
||
|
if os.path.isfile(dir_path+files):
|
||
|
filelist.append(dir_path+files)
|
||
|
for _ in range(cnt):
|
||
|
print("\t", end=" ")
|
||
|
print("[+] File Name: %s" % files)
|
||
|
file_cnt+=1
|
||
|
elif os.path.isdir(dir_path+files):
|
||
|
for i in range(cnt):
|
||
|
print("\t", end=" ")
|
||
|
print("[!] SubDirectory: \"%s\" found. Start file search in this directory." % files)
|
||
|
filelist.extend(fileSearch(dir_path+files+"/", cnt+1))
|
||
|
dir_cnt+=1
|
||
|
|
||
|
return filelist
|
||
|
|
||
|
# file open and store carved file
|
||
|
def Carving(file_list):
|
||
|
cnt = 0
|
||
|
carv_list = []
|
||
|
print("====================Carving Start====================")
|
||
|
for i in range(len(file_list)):
|
||
|
file = open(file_list[i], 'rb')
|
||
|
carv_cont = findSignature(file)
|
||
|
print("[-] ", file_list[i], " File passed")
|
||
|
|
||
|
if (len(carv_cont) != 0):
|
||
|
carv = open('carv'+str(cnt)+'.jpeg', 'wb')
|
||
|
for j in range(len(carv_cont)):
|
||
|
carv.write(carv_cont[j])
|
||
|
print('[*] carv',str(cnt),'.jpeg is created!')
|
||
|
carv_list.append('carv'+str(cnt)+'.jpeg')
|
||
|
cnt+=1
|
||
|
carv.close
|
||
|
|
||
|
file.close
|
||
|
return carv_list
|
||
|
|
||
|
# find signature
|
||
|
def findSignature(file):
|
||
|
flag = 0
|
||
|
contents = []
|
||
|
|
||
|
while(1):
|
||
|
buf = file.read(0x200)
|
||
|
file.tell()
|
||
|
if(len(buf)==0): break
|
||
|
if(flag != 1):
|
||
|
ishead = (str(buf[:3]).split('\'')[1])
|
||
|
if (header == ishead) and (flag == 0):
|
||
|
contents.append(buf)
|
||
|
flag = 1
|
||
|
else:
|
||
|
if(footer in (str(buf[-2:]).split('\'')[1])):
|
||
|
contents.append(buf)
|
||
|
return contents
|
||
|
else:
|
||
|
contents.append(buf)
|
||
|
return contents
|
||
|
|
||
|
|
||
|
# main
|
||
|
if __name__ == "__main__":
|
||
|
print("==================File Search Start==================")
|
||
|
fl = fileSearch("./", 0)
|
||
|
print(f'\nSEARCH RESULT: %d Files. %d Directory.' % (file_cnt, dir_cnt))
|
||
|
print("Filelist: %s\n" % fl)
|
||
|
c1 = Carving(fl)
|
||
|
print("Carvlist: %s\n" % c1)
|
||
|
|
||
|
print("Exit...")
|