как сделать заголовок файла dicom нечитаемым

Довольно странный вопрос, но я провожу некоторые тесты для обработки ошибок, когда теги файла dicom не могут быть прочитаны.

К сожалению, у меня нет поврежденного дикома.

В частности, может ли кто-нибудь посоветовать, как применить к файлу какой-либо неправильно закодированный текстовый тег или недопустимый числовой тег данных, чтобы его нельзя было прочитать пакетом pydicom python?


person Monica Heddneck    schedule 20.12.2017    source источник
comment
Я не уверен, просите ли вы готовый к использованию инструмент (я не знаю ни одного, который мог бы легко делать такие вещи) или библиотеку, с помощью которой вы могли бы сделать это с помощью нескольких строк кода.   -  person kritzel_sw    schedule 20.12.2017
comment
Либо... Я имею в виду, даже просто концепция или идея. Только с технической точки зрения, как файлы dicom могут быть повреждены?   -  person Monica Heddneck    schedule 20.12.2017


Ответы (1)


вы можете взглянуть на инструмент dcmodify из DCMTK. Его можно использовать для вставки, изменения и удаления атрибутов. Я сомневаюсь, что можно указать недопустимые значения атрибутов через командную строку, но вы, безусловно, можете изменить исходный код, чтобы добиться этого (за исключением того, что вы определенно можете записывать значения атрибутов, которые превышают максимальную длину в соответствии с представлением значений).

Мой подход состоял бы в том, чтобы создать буфер символов и записать в него двоичные данные. Затем передайте его методу, который записывает значение в атрибут.

Примеры:

  • записывать последовательности юникода (UTF-8), которые не являются допустимым символом юникода
  • писать символы ascii, которые не охватываются набором символов, указанным (0008,0005) - не уверен, что pydicom столкнется с проблемами, но это было бы неправильно с точки зрения DICOM
  • запишите нечисловые символы в атрибуты с представлением значения «десятичная строка» или «целая строка».
  • форматы, отличные от ГГГГММДД для VR "Дата"
  • форматы, отличные от ЧЧММСС.FFFFFF для VR "Время"
  • другие символы, кроме ['0'-'9'], '.' для ВР "Уникальный идентификатор"

[править]: DCMTK, dcmodify: http://dicom.offis.de/dcmtk.php.en

person kritzel_sw    schedule 20.12.2017
comment
Хорошие предложения. Другие: можно вставлять неравномерное заполнение там, где это даже необходимо, использовать устаревшие и частные заголовки, отбрасывать необходимые заголовки для модальности, лгать об используемом TransferSyntax, лгать о частоте кадров, сохраненных битах и ​​т. д., и т. д. Это несколько шатко формат уже, его довольно легко сломать разными способами. Крупные поставщики даже не всегда могут отправлять совместимые и надежные продукты. - person Ashley; 21.12.2017