Skip to content

Commit

Permalink
fixed paths to work on linux
Browse files Browse the repository at this point in the history
  • Loading branch information
prometheus committed Aug 12, 2019
1 parent bf2e1c5 commit defabf6
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 21 deletions.
25 changes: 13 additions & 12 deletions helpers/manifestDbParser.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,28 @@ def recreate(fileId, domain, relativePath, fType, root, sourceDir, logger):
if fType == 4:
logger.info("Found file with type of 4: " + relativePath)
logger.info("Type 4 files aren't found in iTunes Backups... But we'll check anyway")
type4File = sourceDir + "\\" + fileId[0:2] + "\\" + fileId
type4File = sourceDir + "/" + fileId[0:2] + "/" + fileId
if os.path.isfile(type4File):
logger.info("The file actually exists... Please contact jfarley248@gmail.com to correct this code\n")
logger.info("Nope, file: " + relativePath + " does not exist")

'''Fields with types of 2 are Folders'''
if fType == 2:
logger.debug("Trying to recreate directory: " + domain + "\\" + relativePath + " from source file: " + fileId)
logger.debug("Trying to recreate directory: " + domain + "/" + relativePath + " from source file: " + fileId)
try:
recreateFolder(domain, relativePath, root, logger)
logger.debug("Successfully recreated directory: " + domain + "\\" + relativePath + " from source file: " + fileId)
logger.debug("Successfully recreated directory: " + domain + "/" + relativePath + " from source file: " + fileId)
except Exception as ex:
logger.exception("Failed to recreate directory: " + relativePath + " from source file: "
+ fileId + " Exception was: " + str(ex))

'''Fields with types of 1 are Files'''
if fType == 1:
logger.debug("Trying to recreate file: " + domain + "\\" + relativePath + " from source file: " + fileId)
logger.debug("Trying to recreate file: " + domain + "/" + relativePath + " from source file: " + fileId)
try:
recreateFile(fileId, domain, relativePath, root, sourceDir, logger)
logger.debug(
"Successfully recreated file: " + domain + "\\" + relativePath + " from source file: " + fileId)
"Successfully recreated file: " + domain + "/" + relativePath + " from source file: " + fileId)
except Exception as ex:
logger.exception("Failed to recreate file: " + relativePath + " from source file: "
+ fileId + " Exception was: " + str(ex))
Expand All @@ -79,13 +79,13 @@ def recreateFolder(domain, relativePath, root, logger):
'''If the relative path is empty, then the domain is the root folder'''
domain = re.sub('[<>:"|?*]', '_', domain)
relativePath = re.sub('[<>:"|?*]', '_', relativePath)
relativePath = relativePath.replace("/", "\\")
# relativePath = relativePath.replace("/", "\\")
if not relativePath:
newFolder = root + "\\" + domain
newFolder = root + "/" + domain
createFolder(newFolder, logger)

else:
newFolder = root + "\\" + domain + "\\" + relativePath
newFolder = root + "/" + domain + "/" + relativePath
createFolder(newFolder, logger)


Expand All @@ -97,12 +97,13 @@ def recreateFile(fileId, domain, relativePath, root, sourceDir, logger):
'''Source file created from taking first two characters of fileID,
using that as subfolder of source directory, and finding full name of file'''
subFolder = fileId[0:2]
sourceFile = sourceDir + "\\" + subFolder + "\\" + fileId
sourceFile = sourceDir + "/" + subFolder + "/" + fileId

'''Gets rid of folder slashes and replaces with backslashes, offending characters with underscores'''
sanitizedRelPath = relativePath.replace("/", "\\")
# sanitizedRelPath = relativePath.replace("/", "\\")
sanitizedRelPath = relativePath
sanitizedRelPath = re.sub('[<>:"|?*]', '_', sanitizedRelPath)
destFile = root + "\\" + domain + "\\" + sanitizedRelPath
destFile = root + "/" + domain + "/" + sanitizedRelPath


if not os.path.exists(os.path.dirname(destFile)):
Expand All @@ -125,7 +126,7 @@ def recreateFile(fileId, domain, relativePath, root, sourceDir, logger):
def readManiDb(manifestPath, sourceDir, outputDir, logger):

'''Creates Root folder for recreated file structure'''
root = outputDir + "\\" + "Recreated_File_Structure"
root = outputDir + "/" + "Recreated_File_Structure"
createFolder(root, logger)

conn = OpenDb(manifestPath, logger)
Expand Down
10 changes: 5 additions & 5 deletions helpers/manifestMbdbParser.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def mbdbParser(manifest_mbdb_path, input_dir, output_dir, logger):

'''Create domain path if it doesnt exist'''
domain = (record.Domain.String).decode("utf-8")
domain_path = os.path.join(output_dir + "\\" + str(domain))
domain_path = os.path.join(output_dir + "/" + str(domain))
if os.path.isdir(domain_path):
pass
else:
Expand All @@ -57,14 +57,14 @@ def mbdbParser(manifest_mbdb_path, input_dir, output_dir, logger):

fileid = hashlib.sha1( domain_hash + b'-' + path_hash)
fileid_hash = fileid.hexdigest()
file_path = os.path.join(input_dir + "\\" + fileid_hash)
file_path = os.path.join(input_dir + "/" + fileid_hash)
if os.path.isfile(file_path):

'''Do some fun reversing strings to get the directory of the path so that we can copy the file properly'''
dest_path = os.path.join(output_dir + "\\" + domain + "\\" + path)
dest_path = dest_path.replace("/", "\\")
dest_path = os.path.join(output_dir + "/" + domain + "/" + path)
# dest_path = dest_path.replace("/", "\\")
reversed_dest_path = dest_path[::-1]
dest_path_root_reversed = reversed_dest_path.split('\\', 1)[-1]
dest_path_root_reversed = reversed_dest_path.split('/', 1)[-1]
dest_path_root = dest_path_root_reversed[::-1]
if os.path.isdir(dest_path_root):
copyfile(file_path, dest_path)
Expand Down
4 changes: 2 additions & 2 deletions helpers/recreator.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ def startRecreate(input_dir, output_dir, logger):
logger.info("Backup is not encrypted")

'''Create output directpry based on device serial number'''
info_plist_path = os.path.join(input_dir + "\\Info.plist")
info_plist_path = os.path.join(input_dir + "/Info.plist")
info_plist = readPlist(info_plist_path)
serial_number = info_plist.get('Serial Number', '')
output_dir = os.path.join(output_dir + "\\" + "Device_" + serial_number + "_Folders")
output_dir = os.path.join(output_dir + "/" + "Device_" + serial_number + "_Folders")
try:
logger.debug("Trying to create directory: " + output_dir)
os.makedirs(output_dir)
Expand Down
4 changes: 2 additions & 2 deletions iTunes_Backup_Reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ def main():
if bulk:
subfolders = os.listdir(input_dir)
for folders in subfolders:
current_folder = os.path.join(input_dir + "\\" + folders)
current_folder = os.path.join(input_dir + "/" + folders)
logger.info("Starting to read backup at: " + current_folder)
plist_parser.parsePlists(current_folder, output_dir, out_type, logger)

Expand All @@ -161,7 +161,7 @@ def main():
recreator.startRecreate(current_folder, output_dir, logger)

if ir_mode:
path = "\\Users\\*\\AppData\\Roaming\\Apple Computer\\MobileSync\\Backup\\*"
path = "/Users/*/AppData/Roaming/Apple Computer/MobileSync/Backup/*"
all_paths = glob.glob(path)


Expand Down

0 comments on commit defabf6

Please sign in to comment.