Ich wollte die Dateien auf meinem iPhone auf meinem Computer sehen, also habe ich die Dateien wiederhergestellt, die beim Sichern meines iPhones mit iTunes erstellt wurden. Der Grund war, dass ich Gespräche und Fotos von meinem PC aus sehen wollte, falls die LINE-Daten bei der Migration des iPhones verschwanden. Ich benutze Windows, aber Windows hat Apps, die den Inhalt des iPhone direkt durchsuchen. Ich habe ihm jedoch nicht wirklich vertraut und wollte nicht direkt im iPhone darauf zugreifen. Deshalb habe ich nach einer Möglichkeit gesucht, die Sicherungsdatei wiederherzustellen.
Die Umgebung ist wie folgt.
Wenn Sie Ihr iPhone mit iTunes sichern, wird im folgenden Ordner eine Sicherungsdatei erstellt. Beachten Sie, dass Sie beim Sichern mit iTunes sicherstellen müssen, dass Sie nicht "verschlüsseln".
C:\Users\[username]\Apple\MobileSync\Backup\XXXXX
"XXXXX" ist eine Zeichenfolge, die für jede Umgebung unterschiedlich zu sein scheint. Wenn Sie mehrere Sicherungen haben, haben Sie mehrere Ordner. Beachten Sie, dass der Ordner unter iOS (iTunes?) Vor einiger Zeit anders war.
Die iPhone-Sicherungsdaten sind im obigen Ordner "XXXXX" enthalten. Die Hauptdateien sind wie folgt.
Manifest.db DB-Datei im SQLite-Format. Informationen zu jeder Datei werden aufgelistet. Der Dateipfad im iPhone und der Dateiname im Sicherungsordner sind verknüpft.
Daten Die Originaldatei im iPhone wurde durch einen zufälligen 40-stelligen Dateinamen (ein Hashwert?) Ersetzt und platziert. Jede Datei wird verteilt und im Ordner der ersten beiden Zeichen des Dateinamens gespeichert. Wenn Sie es nicht mit der iTunes-Option verschlüsseln, bleibt der Inhalt der Datei unverändert, sodass Sie die Daten anzeigen können, indem Sie sie mit einem Editor oder Viewer öffnen.
Es scheint einige andere Informationen zu geben, aber ich habe sie nicht weiter analysiert.
Ich habe ein Python-Skript erstellt, das den ursprünglichen Dateinamen für alle Sicherungsdateien ausgibt. Die Fehlerbehandlung wird nicht ordnungsgemäß durchgeführt.
output
erstellt.restore.py
import os
import shutil
import sqlite3
#Trennen Sie den Pfad in ein Verzeichnis und einen Dateinamen
#(Beispiel)
# Input: '.\\output\\Library\\Logs\\test.log'
# Output: ('.\\output\\Library\\Logs\\', 'test.log')
def get_dst_filepath(relative_filepath):
path_array = relative_filepath.split('\\')
dst_path = ''
for direcoty_name in path_array[0:-1]:
dst_path += direcoty_name + '\\'
filename = path_array[-1]
return dst_path, filename
#Pfaddefinition
src_basepath = r'C:\Users\username\Apple\MobileSync\Backup\00000000-0000000000000000'
dst_basepath = r'.\output'
db_filepath = src_basepath + '\Manifest.db'
#DB-Verbindung
connection = sqlite3.connect(db_filepath)
cursor = connection.cursor()
cursor.execute('SELECT fileID, relativePath, flags FROM Files')
result = cursor.fetchall()
connection.close()
###DB Feldbeschreibung#######################
# fileID:Dateiname im Sicherungsverzeichnis
# relativePath:Relativer Pfad
# flags = 1:Die Originaldatei befindet sich im Sicherungsverzeichnis
# flags = 2:Die Originaldatei ist nicht im Sicherungsverzeichnis vorhanden
#############################################
#Verarbeitung für jede Datei
for row in result:
src_filename = row[0]
dst_relative_path = row[1].replace('/', '\\')
src_exists = row[2] is 1
src_filepath = src_basepath + '\\' + src_filename[0:2] + '\\' + src_filename
dst_filepath, dst_filename = get_dst_filepath(dst_basepath + '\\' + dst_relative_path)
#Überspringen, wenn sich die Originaldatei nicht im Sicherungsverzeichnis befindet
if not src_exists:
continue
print('{}\t{}\t{}'.format(src_filepath, dst_filepath, dst_filename))
try:
#Verzeichnis rekursiv erstellen
os.makedirs(dst_filepath, exist_ok=True)
#Datei kopieren
shutil.copy2(src_filepath, dst_filepath+'\\'+dst_filename)
except :
pass
Hier sind einige Dateipfade als Referenz.
Ich habe es vor ungefähr 5 Jahren nachgeschlagen, daher erinnere ich mich nicht an die URL, auf die ich verwiesen habe. Der Speicherort und die Dateistruktur der zu diesem Zeitpunkt untersuchten Datei unterscheiden sich von jetzt.