Deine Situation (so wie ich sie verstanden habe) einmal nachgestellt:
Eine Festplatte, zwei Partitionen:
Disk /dev/loop2: 1024MiB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 37.0MiB 459MiB 422MiB primary lba
2 519MiB 993MiB 474MiB primary lba
Und darauf TrueCrypt: (Ausgabe gekürzt. Alias beachten.)
# alias truecrypt='truecrypt --text --display-password --random-source=/dev/urandom'
# truecrypt --create /dev/loop2p1
Enter password: Backfisch
# truecrypt --create /dev/loop2p2
Enter password: Backfisch
Also zwei TrueCrypt Volumes mit dem Passwort "Backfisch". Testen ob das funktioniert:
# truecrypt --filesystem=none /dev/loop2p1
Enter password for /dev/loop2p1: Backfisch
# truecrypt --filesystem=none /dev/loop2p2
Enter password for /dev/loop2p2: Backfisch
# ls -l /dev/mapper/
lrwxrwxrwx 1 root root 7 Oct 31 12:05 truecrypt1 -> ../dm-0
lrwxrwxrwx 1 root root 7 Oct 31 12:06 truecrypt2 -> ../dm-1
# truecrypt -d /dev/loop2p1
# truecrypt -d /dev/loop2p2
Das ist also OK und jetzt verlieren wir die Partitionstabelle:
# parted /dev/loop2 mklabel msdos
Warning: The existing disk label on /dev/loop2 will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
Information: You may need to update /etc/fstab.
# ls -l /dev/loop2*
brw-rw---- 1 root disk 7, 2 Oct 31 12:09 /dev/loop2
Partitionen sind weg. Wie finden wir sie wieder?
Mal angenommen wir kennen die Partitionsgröße nicht aber nehmen mal an daß es MiB-Aligned ist.
In so einem Fall bleibt nur durchprobieren:
TARGET=/dev/loop2
PASSWORD="Backfisch"
ALIGNMENT=$((1024*1024)) # MiB
for sector in $(seq 0 $(($(blockdev --getsize64 "$TARGET")/$ALIGNMENT)))
do
size=$(($sector*$ALIGNMENT))
start=$(losetup --find --show --read-only --offset=$size "$TARGET")
truecrypt --non-interactive --filesystem=none --password="$PASSWORD" "$start" 2> /dev/null
if [ $? = 0 ]
then
echo Found match for start $sector
truecrypt -d "$start"
fi
losetup -d "$start"
done
Und das gibt dann bei meinem Beispiel sowas aus:
Found match for start 37
Found match for start 519
Und dann weißt du daß da eine Truecrypt Partition bei Start 37MiB und eine weitere Start 519MiB gefunden wurde, und so waren die Partitionen oben ja auch angelegt.
Ich habe auch versucht das per --sizelimit vom Ende her zu suchen, das hat aber auf Anhieb erstmal nicht geklappt... vielleicht reicht es nicht wenn das Ende stimmt, wenn Start und Ende stimmen müssen wird die Suche ungemein aufwendig... wenn also am Ende überhaupt wirklich ein Backup-Header ist muss man da ein bisschen was anderes machen, womöglich truecrypt selber patchen falls denn die Größe im Header hinterlegt ist aber truecrypt das dann einfach als Misserfolg wertet. Dazu müsste man mehr über die Truecrypt-Interna wissen.
Das Problem bei der Geschichte ist: Eine ganze Platte so zu durchsuchen dauert eeeeewig lange. Daher solltest du die Suche eingrenzen, dazu musst du aber mehr über deine ursprüngliche Partitionierung wissen (Größe, Alignment, ...).
Bei dem Beispiel hier hätte man z.B. die Suche nach dem ersten Match abgebrochen und dann mal geschaut wie groß das dort gefundene Dateisystem ist und dann hätte man diesen Bereich schon mal nicht mehr durchsuchen müssen.