[dm-crypt] Unable to open LUKS after altering partition table

Arno Wagner arno at wagner.name
Tue Apr 2 12:07:12 CEST 2013


Hi,

several things:

1. Never, ever, ever do this type of work without full backup.

2. Once you broke it, never, ever, ever write anything to the device.
   Make a full binary copy (dd, dd_recue, cat from /dev/sdx, ...)
   and only work on that. Many people only make their LUKS
   containers irretrivable when trying to repair them. (At
   least I suspect that. It is hard to tell, but some people 
   have had success in recovery, while people that try it your
   way typically do nto get their data back.)

3. The cryptsetup package contains a keyslot-checker tool.
   (I wrote it, but forgot to do an FAQ entry on it, maybe 
    I will find time this week.) You find it in 
   misc/keyslot_checker/ with instructions. It will find 
   overwritten areas in the active keyslots. It requires
   installation of the cyrrent cryptsetup libraries (1.6.x)
   but runs itself without installation. 

Arno

    

On Tue, Apr 02, 2013 at 03:15:16AM -0400, Jim wrote:
> I made a silly mistake and realize that I probably will not recover
> this data. My goal is an exercise to better understand dm-crypt,
> LUKS, and the rest of the stack.
> 
> I have, or had, a computer running Ubuntu 12.10 on an SSD with full
> disk encryption as configured by the standard installer. The drive
> contains an unencrypted /boot partition (sda1) and a LUKS/dm-crypt
> encrypted partition (sda5) that was a physical volume for a single
> volume group. That vg holds the lvs for an ext4 root file system and
> swap space.
> 
> The problem started when I attempted to use gparted to repartition a
> usb flash drive without changing the selected device from /dev/sda
> (internal hdd) to /dev/sdb (usb flash drive)! I deleted the existing
> partitions and told gparted to apply my changes. Of course, I chose
> to ignore all warning prompts and continue. Instant regret. I left
> gparted open for a while hoping to find some way to undo my change
> and rewrite the old partition table. No luck.
> 
> It would seem that gparted was somewhat successful in asking the
> kernel to reload the partition table as /sys/block/sda/ contained
> evidence of the sda5 partition but none of the primary partitions. I
> was able to grab the starting position and size from:
> $ cat /sys/block/sda/sda5/start
> 501760
> $ cat /sys/block/sda/sda5/size
> 233938944
> $ cat /sys/block/sda/sda5/alignment_offset
> 0
> 
> Apt-get installed TestDisk 6.13 from and it found the /boot
> partition which I wrote to disk as the new partition table. I then
> used fdisk and added the sda5 partition. Fdisk's default starting
> position matched the above which I took to be a positive sign.
> 
> A little more info from after the mistake but before rebooting:
> $ cryptsetup status /dev/sda5
> /dev/mapper/sda5_crypt is active and is in use.
>   type: LUKS1
>   cipher: aes-xts-plain64
>   keysize: 512 bits
>   device: /dev/sda5
>   offset: 4096 sectors
>   size: 233934848 sectors
>   mode: read/write
> 
> $ cryptsetup status cryptswap1
> /dev/mapper/cryptswap1 is active and is in use.
>   type: PLAIN
>   cipher: aes-cbc-essiv:sha256
>   keysize: 256 bits
>   device: /dev/mapper/cryptswap1
>   offset: 0 sectors
>   size: 16572416 sectors
>   mode: read/write
> 
> $ vgdisplay
>   --- Volume group ---
>   VG Name ubuntu
>   System ID
>   Format lvm2
>   Metadata Areas 1
>   Metadata Sequence No 3
>   VG Access read/write
>   VG Status resizable
>   Max LV 0
>   Cur LV 2
>   Open LV 2
>   Max PV 0
>   Cur PV 1
>   Act PV 1
>   VG Size 111.55 GiB
>   PE Size 4.00 MiB
>   Total PE 28556
>   Alloc PE / Size 28556 / 111.55 GiB
>   Free PE / Size 0 / 0
>   VG UUID bfEpfv-*omitted*
> 
> $ lvdisplay
>   --- Logical volume ---
>   LV Path /dev/ubuntu/root
>   LV Name root
>   VG Name ubuntu
>   LV UUID TYhvhI-*omitted*
>   LV Write Access read/write
>   LV Creation host, time ubuntu, 2013-01-09...
>   LV Status available
>   # open 1
>   LV Size 103.64 GiB
>   Current LE 26533
>   Segments 1
>   Allocation inherit
>   Read ahead sectors auto
>   - currently set to 256
>   Block device 252:1
> 
> --- Logical volume ---
>   LV Path /dev/ubuntu/swap_1
>   LV Name swap_1
>   VG Name ubuntu
>   LV UUID S0pUq6-*omitted*
>   LV Write Access read/write
>   LV Creation host, time ubuntu, 2013-01-09...
>   LV Status available
>   # open 1
>   LV Size 7.90 GiB
>   Current LE 2023
>   Segments 1
>   Allocation inherit
>   Read ahead sectors auto
>   - currently set to 256
>   Block device 252:1
> 
> $ fdisk -l /dev/sda
> 
> Disk /dev/sda: 120.0 GB, 120034123776 bytes
> 255 heads, 63 sectors/track, 14593 cylinders, total 23441648 sectors
> Unites = sectors of 1 * 512 = 512 bytes
> Sectors size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disk identifier:
> 
>    Device  Boot   Start        End              Blocks   ID  System
> /dev/sda1 *         2048        499711        248832   83  Linux
> /dev/sda2        499712    23440703   116970496    5   Extended
> /dev/sda5        501760    23440703   116969472   83  Linux
> 
> I was able to mount /boot which led me to believe I was on track. It
> seemed that sda5 was positioned correctly in this recreated
> partition table so I went ahead and rebooted.
> 
> The grub2 menu loaded as usual and then I was prompted for the
> cryptsetup password. Everything seemed normal but it would not
> accept my password! I tried dozens of times while being careful with
> caps,num,fn lock keys. As a sanity check, I loaded the computer with
> a backup disk that is an out of date dd replicatoin of this SSD and
> my password was accepted there.
> 
> Running the computer from a live cd I have examined the disk further.
> 
> $ blkid -p /dev/sda5
> /dev/sda5: UUID="9c9e0774-*omitted*" VERSION="1" TYPE="crypto_LUKS"
> USAGE="crypto" PART_ENTRY_SCHEME="dos" PART_ENTRY_TYPE="0x83"
> PART_ENTRY_NUMBER="5" PART_ENTRY_OFFSET="501760"
> PART_ENTRY_SIZE="233938944" PART_ENTRY_DISK="8:0"
> 
> $ cryptsetup -v isLuks /dev/sda5
> Command successful.
> 
> That seems good as the starting position and size exactly match the
> value from the open volume before rebooting. I don't see why
> deleting and restoring the partition table would affect the volume.
> Why does luksOpen no longer like my password?
> 
> After repeated failure to unlock the volume at boot time I was
> dropped to an initramfs prompt where I performed a luksDump. If I
> messed up on repartitioning I would expect luksDump to complain.
> 
> (initramfs) cryptsetup -v luksDump /dev/sda5
> Version: 1
> Cipher name: aes
> Cipher mode: xts-plain64
> Hash spec: sha1
> Payload offset: 4096
> MK bits: 512
> MK digest: *omitted*
> MK salt: *omitted*
> MK iterations: *omitted*
> UUID: 9c9e0774-*omitted*
> 
> Key Slot 0: ENABLED
>           Iterations: *omitted*
>           Salt: *omitted*
>           Key material offset: 8
>           Af stripes: 4000
> Key Slot 1: DISABLED
> Key Slot 2: DISABLED
> Key Slot 3: DISABLED
> Key Slot 4: DISABLED
> Key Slot 5: DISABLED
> Key Slot 6: DISABLED
> Key Slot 7: DISABLED
> Command successful.
> 
> I may have missed something obvious but reading through the FAQ,
> searching the list and the web hasn't yielded the answer so I hope
> one of you can help or offer closure :)
> 
> Thanks!
> 
> 
> _______________________________________________
> dm-crypt mailing list
> dm-crypt at saout.de
> http://www.saout.de/mailman/listinfo/dm-crypt

-- 
Arno Wagner,     Dr. sc. techn., Dipl. Inform.,    Email: arno at wagner.name
GnuPG: ID: CB5D9718  FP: 12D6 C03B 1B30 33BB 13CF  B774 E35C 5FA1 CB5D 9718
----
One of the painful things about our time is that those who feel certainty
are stupid, and those with any imagination and understanding are filled
with doubt and indecision. -- Bertrand Russell


More information about the dm-crypt mailing list