From be1890799746c8c3bc1e100f38832b270512c376 Mon Sep 17 00:00:00 2001 From: Yeryeong Kim <76420409+icarusicarus@users.noreply.github.com> Date: Sat, 30 Oct 2021 19:43:10 +0900 Subject: [PATCH] File Carving (#244) * Add file carving * Add README --- File_Carving/Images/Output.PNG | Bin 0 -> 41905 bytes File_Carving/Images/test_image.jpg | Bin 0 -> 31895 bytes File_Carving/README.MD | 28 +++++++++ File_Carving/carving.py | 93 +++++++++++++++++++++++++++++ File_Carving/requirements.txt | 2 + README.md | 1 + 6 files changed, 124 insertions(+) create mode 100644 File_Carving/Images/Output.PNG create mode 100644 File_Carving/Images/test_image.jpg create mode 100644 File_Carving/README.MD create mode 100644 File_Carving/carving.py create mode 100644 File_Carving/requirements.txt diff --git a/File_Carving/Images/Output.PNG b/File_Carving/Images/Output.PNG new file mode 100644 index 0000000000000000000000000000000000000000..26e711a08637fdc8f789bee43cd3936506ece36d GIT binary patch literal 41905 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

_DL!q~KG= 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 xU1@sD?DMwFQtel;vk%$VDs **Note:** This version only supports jpg/jpeg file carving. + +This script recursively finds files in the folder and carves files with jpg/jpeg file signature. + +## Usage + +1. Clone this repository + ``` + git clone https://github.com/hastagAB/Awesome-Python-Scripts.git + ``` +2. Move to File_Carving directory + ``` + cd File_Carving + ``` +3. Install reqired package + ``` + pip install -r requirements.txt + ``` +5. Run carving.py + ``` + python carving.py + ``` + +## Example +![Output](https://user-images.githubusercontent.com/76420409/139208797-b4417848-f184-4f65-869f-1c6e061cf3c8.PNG) + + diff --git a/File_Carving/carving.py b/File_Carving/carving.py new file mode 100644 index 0000000..15c2bb0 --- /dev/null +++ b/File_Carving/carving.py @@ -0,0 +1,93 @@ +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...") \ No newline at end of file diff --git a/File_Carving/requirements.txt b/File_Carving/requirements.txt new file mode 100644 index 0000000..2f5c8c6 --- /dev/null +++ b/File_Carving/requirements.txt @@ -0,0 +1,2 @@ +os +binascii \ No newline at end of file diff --git a/README.md b/README.md index 976f470..76c8cb6 100644 --- a/README.md +++ b/README.md @@ -187,6 +187,7 @@ So far, the following projects have been integrated to this repo: |[Steg_Tool](https://github.com/hastagABAwesome-Python-Scripts/Steg_Tool/)|[Shankar JP](https://github.com/shankarjp)| | [Directory Tree Visualizer](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Directory_Tree_Generator) | [Harpreet Singh Saluja](https://github.com/hssaluja25/) | |[Pressure_Converter](https://github.com/E-wave112/Awesome-Python-Scripts/tree/master/Pressure_Converter)|[E-Wave](https://github.com/E-wave112)| +| [File Carving](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/File_Carving) | [Yeryeong Kim](https://github.com/icarusicarus/) | ## How to use :