ddを使用してファイルに「FF」を埋め込む方法は?


20

0xFF使用してファイルを埋め込む方法はdd

このコマンドは、ファイルサイズが100 KBに達するまで、出力ファイルにゼロを埋め込みます。

dd if=inputFile.bin ibs=1k count=100 of=paddedFile.bin conv=sync

ただし、0xFFsの代わりに0x00sでファイルを埋めたいと思います。

回答:


29

私が知る限り、をdd使用してパッドに伝える方法はありません0xFF。しかし、回避策があります。

まず、必要な長さでファイルを作成します0xFF

$ dd if=/dev/zero ibs=1k count=100 | tr "\000" "\377" >paddedFile.bin
100+0 records in
200+0 records out
102400 bytes (102 kB) copied, 0,0114595 s, 8,9 MB/s

trは、ゼロをに置き換えるために使用され0xFFます。tr8進数の引数が必要です。0xFF8進数は\377です。

結果:

$ hexdump -C paddedFile.bin 
00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00019000

次に、「埋め込み」ファイルの先頭に入力ファイルを挿入します。

$ dd if=inputFile.bin of=paddedFile.bin conv=notrunc
0+1 records in
0+1 records out
8 bytes (8 B) copied, 7,4311e-05 s, 108 kB/s

出力ファイルを切り捨てないconv=notruncように指示ddすることに注意してください。

入力ファイルの例:

$ hexdump -C inputFile.bin 
00000000  66 6f 6f 0a 62 61 72 0a                           |foo.bar.|
00000008

結果:

$ hexdump -C paddedFile.bin 
00000000  66 6f 6f 0a 62 61 72 0a  ff ff ff ff ff ff ff ff  |foo.bar.........|
00000010  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00019000

2
ステップ1はLinuxで機能しますが、osxではファイルにpaddedFile.binが入りますc3 bf。なぜだろうか?編集:superuser.com/questions/1349494/…–
Synesso

1

lesmanaの答えを改善する可能性は、その場でファイルを操作することです。これは、大きな入力ファイルの場合ははるかに高速になり、スパースファイルもスパースのままになります。ただし、多くの場合、入力ファイルを変更したくないため、この方法は不適切です。

次の例は、大規模でスパースな入力ファイルから始まり、FF文字で1GBのサイズまでパディングします。newsize目的の値に変更するだけです。ご覧のとおり、ddこのファイルは非常に大きいにもかかわらず、この部分はほんの数秒で完了します。

$ ls -ld inputFile.bin
-rw-rw-r-- 1   …   1073741700   …   inputFile.bin
$ hexdump inputFile.bin
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
3fffff80 0000 0000
3fffff84

$ newsize=$((1024 * 1024 * 1024))
$ filesize=$(stat -c "%s" inputFile.bin)
$ padcount=$((newsize - filesize))
$ dd if=/dev/zero ibs=1 count="$padcount" | tr "\000" "\377" >> inputFile.bin
124+0 records in
0+1 records out
124 bytes (124 B) copied, 0.000162309 s, 764 kB/s

$ ls -ld inputFile.bin
-rw-rw-r-- 1   …   1073741824   …   inputFile.bin
$ hexdump inputFile.bin
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
3fffff80 0000 0000 ffff ffff ffff ffff ffff ffff
3fffff90 ffff ffff ffff ffff ffff ffff ffff ffff
*
40000000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.