【问题标题】:how to render a dicom file's header unreadable如何使 dicom 文件的标题不可读
【发布时间】:2017-12-20 02:01:59
【问题描述】:

有点奇怪的问题,但是当无法读取 dicom 文件的标签时,我正在做一些测试来处理错误。

很遗憾,我没有损坏的 dicom。

具体来说,任何人都可以建议如何将某种错误编码的文本标签或一些无效的数字数据标签应用到文件上,以使其无法被 python 的 pydicom 包读取?

【问题讨论】:

  • 我不确定您是要一个现成的工具(我不知道有什么工具可以轻松完成这些事情)还是一个库,您可以用几行代码来完成代码。
  • 要么...我的意思是,即使只是一个概念或想法。仅从技术角度来看,dicom 文件是如何变得无聊的?

标签: error-handling dicom pydicom


【解决方案1】:

您可以查看 DCMTK 中的 dcmodify 工具。它可用于插入、修改和删除属性。我怀疑是否可以通过命令行指定无效的属性值,但您当然可以修改源代码来实现这一点(除非您绝对可以根据值表示编写超过最大长度的属性值)。

我的方法是创建一个字符缓冲区并将二进制数据写入其中。然后将其传递给将值写入属性的方法。

例子:

  • 编写不是有效 unicode 字符的 unicode (UTF-8) 序列
  • 写入 (0008,0005) 指定的字符集未涵盖的 ascii 字符 - 不确定 pydicom 是否会遇到问题,但从 DICOM 的角度来看这是错误的
  • 使用值表示“十进制字符串”或“整数字符串”将非数字字符写入属性。
  • 除 YYYYMMDD 以外的 VR“日期”格式
  • VR“时间”的 HHMMSS.FFFFFF 以外的格式
  • 除 ['0'-'9']、'.' 以外的其他字符用于 VR“唯一标识符”

[编辑]:DCMTK,dcmodify:http://dicom.offis.de/dcmtk.php.en

【讨论】:

  • 好建议。其他:可以在需要的地方放置不均匀的填充,使用不推荐使用的和私有的标头,删除一种模式所需的标头,谎报所使用的 TransferSyntax,谎报帧率,存储的比特等等......这有点摇摇欲坠格式已经,很容易以多种方式破解。主要供应商甚至无法始终发送合规、可靠的产品。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多