How do I get the actual boot image file from a block device without padding? I have 9.6mb file that after doing dd if=/dev/zero of=/dev/block/mtdblock2 I write to mtdblock2. Before writing I have done a sha1sum on the file. I can use applypatch -c to check both size and sha but if I do a sha on the blockdevice it is of course different because of the space left on the device. If I copy the device I will get a 16mb image including that free space. Every where I read the suggestions are to use fdisk to get a count and then use the count option in dd. However, this does not work because the block and partition is the boot partition. How can I copy the original file, same size and sha, back off of the block device?
I would indeed use dd, with one or more of the several options available to specify the length (amount) of data to copy; otherwise, as you have noticed, dd will read the entire contents of the device, which is not what you want.
Re the apparent problem of the block device being the boot partition, the usual solution is to boot from some other medium (perhaps a LiveCD) so that the device you want to read is not the boot device/partition and can be read without difficulty.  Before that, though, try sudo dd ... and see if running as root solves the problem without requiring more drastic measures.