Linux 测试-使用';dd';

Linux 测试-使用';dd';,linux,unix,dd,Linux,Unix,Dd,我正在尝试测试我的Python程序,它接收.zip或.Z文件,并分别使用Python的zipfile模块或Unix的gzip对它们进行解压缩。在尝试执行任何操作之前,它确保文件类型为.zip或.Z(在后一种情况下,使用Unix的file命令)。我想在一种非常罕见的情况下测试我的错误处理,在这种情况下,一个经过验证的归档文件在解压缩时出错。所以基本上,我想给它一个损坏的.Z文件 有人建议我可以使用Unix的dd命令来搞乱一个好的.Z文件,并将其用作我的坏输入。我找不到任何在这个用例中使用dd的例子

我正在尝试测试我的Python程序,它接收.zip或.Z文件,并分别使用Python的
zipfile
模块或Unix的
gzip
对它们进行解压缩。在尝试执行任何操作之前,它确保文件类型为.zip或.Z(在后一种情况下,使用Unix的
file
命令)。我想在一种非常罕见的情况下测试我的错误处理,在这种情况下,一个经过验证的归档文件在解压缩时出错。所以基本上,我想给它一个损坏的.Z文件


有人建议我可以使用Unix的
dd
命令来搞乱一个好的.Z文件,并将其用作我的坏输入。我找不到任何在这个用例中使用
dd
的例子,希望有人能提供一个简单的例子。我知道我不应该弄乱标题,因为元数据就是在那里告诉我们它是一个.Z文件。所以我知道我需要搞乱一些中间和结尾。。。谢谢你的帮助

您可以使用像
hexedit
这样的十六进制编辑器

既然你问了

dd if=/dev/uradom of=yourfile.z bs=1024 seek=$(随机%10))count=1 conv=notrunc

将把垃圾重写为一个文件中前十个块中的随机1024b块。

谢谢您的示例。最后我对一个原始的140406字节文件(original.Z)执行了此操作:
ddif=original.Z of=trunched.zbs=1 count=140389
。上面的代码可能会选择第一个块作为随机1024字节块,对吗?这意味着它在试图解压之前会说
不是gzip格式的。我不熟悉$((%)语法。如果在seek选项的算术运算中添加1,则会解决此问题:
dd if=/dev/uradom of=yourfile.z bs=1024 seek=$((随机%10+1))count=1 conv=notrunc