TF101 Android: Image block device via adb

I have an Asus TF101 tablet running Android ICS. I am trying to image the entire internal flash file system onto my desktop via adb. The problem is that the image I am obtaining appears to be corrupted:

On my desktop I am using Ubuntu 12.10:

adt-bundle-linux-x86-20131030/sdk/platform-tools/adb shell su -c "dd if=/dev/block/mmcblk0" | pv > mmcblk0.raw

I am then trying to use this image with:

testdisk mmcblk0.raw

Unfortunately testdisk finds only nonsensical partition data even using a deep search. Attempting to list any of the files contained in these admittedly non-sensical partition results in a corrupt filesystem error.

Even when trying to read out only a single partition, e.g.

adt-bundle-linux-x86-20131030/sdk/platform-tools/adb shell su -c "dd if=/dev/block/mmcblk0p7" | pv > mmcblk0p7.raw

the resulting partition image seems corrupted. Trying to mount via a loop device fails with corrupt filesystem errors. Running fsck on the image floods me with non-ending file-system errors.

Any hint on what I am doing wrong here?


I know this topic is old, but this could help someone: If you can install a modded recovery it would be very useful, dumping with system on is not always a good idea. Then try this:

adb shell "dd if=/dev/block/mmcblk0" | dd of=mmcblk0

The filesystem should be unmounted when executing a dump for best results.