Cdr dicom ошибка на диске в процессе записи

Обновлено: 06.07.2024

У меня проблема с записью DVD-R диска (пользуюсь приводом - TSSTcorp CDDVDW SH-S202J). Всё как обычно, открыл привод, вставил диск, закрыл. Запись исполняю с помощью Nero7 (до этого с помощью Nero8, 9), и происходит такое:
13:20:20 Старт кэширования файлов
13:20:20 Кэширование файлов завершено
13:20:20 Старт прожига на 18х (24 930 Кб/с)
13:22:20 Ошибка записи
К: TSSTcorp CDDVDW SH-S202J
13:22:21 Запись короткого Lead-Out
13:26:54 Ошибка завершения сессии
В результате – время потеряно, диск испорчен.

". 13:20:20 Старт прожига на 18х (24 930 Кб/с). "
- уменьшите скорость записи до 4. 8

- "видит" это не значит что в порядке с диском. Надо еще проверить весь диск на "читабельность", например программой Nero CD-DVD Speed функция скандиск.
- глюки с RW-дисками иногда дают такие программы(создатели виртуальных дисков), как Daemon Tools и Alcohol120. Попробуйте их временно удалить.

Добавлено:
У меня возник ещё такой вопрос (как бы вопрос)
насколько я знаю, на выходе блока питания, в разъёме для питания привода, винчестера есть четыре контакта для питания: желтый +12В, два черных подряд - земля и красный +5В.
Оранжевый равен +3,3?

Добавлено:
Всё, спасибо за уделённое Вами мне внимание. Привод работает (по крайней мере записывает DVD-R), привод вскрыл, действительно был в пыли - почистил. Прожиг выставил на 6х - диск удачно записался.

Благодарен за помощь.

Надо не с данными диск записывать, т.к. фильмы *.avi имеют всякие разные кодеки, которые не все бытовые плееры "переваривают".
Попробуйте записать проект например через Nero Vision - сделать DVD Video.

Какой плеер? Бытовой?
Какого формата диски вы "прожигаете" и пытаетесь их посмотреть на бытовом плеере.
Если DVD Video, то попробуйте эти ваши диски посмотреть на каком либо другом бытовом плеере.

Немного наверное я не так выразился не формат диска, а формат видео. Например *.avi, *.mp4, *.wmv и т.п.
Бытовые плееры не могут читать все форматы видео. Токо определенные.
Попробуйте записать видео формата DVD Video и посмотреть на вашем плеере.

я понял о чём речь.
инстальнул другую прогу,записал на болванку и пошло.
писал AVI

Вы наверняка видели в медицинском сериале, как интерны бьются над рентгеновским снимком пациента, а потом приходит их наставник и ставит диагноз по едва заметному пятнышку. В реальности такими остроглазыми диагностами становятся модели машинного обучения, применяемые в технологии medical imaging. Благодаря таким штукам можно гораздо быстрее выявить болезнь, например, определить, являются ли клетки на снимках опухолевыми или неопухолевыми.

Но есть одна проблема — в медицинских технологиях используются DICOM-протоколы, безопасность которых оставляет желать лучшего. О них и пойдет речь в этой статье.


Протокол DICOM и его слабые места

Коротко о самом протоколе

DICOM (Digital Imaging and Communication in Medicine) — протокол представления медицинских обследований и передачи их между различными компонентами. Этими компонентами могут быть:

  • медицинское оборудование, которое непосредственно делает сканирование;
  • DICOM-сервер — база данных для DICOM-файлов;
  • DICOM-клиент — обычно это приложение для просмотра результатов медицинских обследований.

Протокол DICOM имеет две части:

  • описание формата файла;
  • описание сетевого взаимодействия.

Теперь к делу

Каждый DICOM-файл содержит информацию о пациентах и состоянии их здоровья — данные, которые требуют особой защиты. Именно поэтому я решила проверить реализации DICOM-протокола на уязвимости вместе с группой исследователей-энтузиастов AISec, которая занимается безопасностью в сфере машинного обучения.

Мы также изучили безопасность PACS (Picture Archiving and Communication System). Это такие системы, в которых результаты обследований хранятся в электронном виде. Они позволяют передавать снимки между врачами по сети. Да-да, благодаря PACS больше не нужно таскать с собой рентгеновские снимки в конверте, как мы привыкли.

DICOM-файл

DICOM-файл — изображение медицинского характера, сохраненное в формате DICOM. Этот формат — отраслевой стандарт для хранения и распространения медицинских снимков.

Помимо графических данных, DICOM-файлы могут содержать персональную информацию в виде атрибутов, позволяющих сопоставить изображение с конкретным человеком и идентифицировать пациента. К ним относятся пол, имя пациента, дата рождения и пр. Список возможных атрибутов и их описание можно найти в документации.

На рисунке показана структура DICOM-файла:


DICOM Network

Стандарт протокола довольно сложно и нудно описывает сетевое взаимодействие — мне до сих пор не удалось изучить его целиком. Но если говорить в общем, вот какие команды сетевого взаимодействия есть у DICOM-протокола:

Действие Описание
C-ECHO Тест соединения между двумя устройствами
C-FIND Поиск исследований на удаленном сервере
C-GET, C-MOVE Скачивание исследований с удаленного сервера
C-STORE Сохранение исследования на удаленном сервере



Вот как выглядит процесс передачи результатов медицинских обследований по DICOM-протоколу

Немного статистики по DICOM-серверам в интернете.



Такие картинки-отчеты о сканировании генерирует Grinder Framework

Интересный факт: когда мои коллеги из AISec проводили сканирование в 2019 году, то доступных серверов было меньше тысячи. В 2020 году же их оказалось около 2700.

Большинство хостов в сети настроены таким образом, что любой может установить с ними соединение. Давайте разберем пример, как просто получить исследование с удаленного сервера из сети. Для этого воспользуемся утилитами findscu и getscu из DCMTK — набора библиотек и приложений, реализующих большую часть стандарта DICOM.

Первой командой получаем список всех доступных исследований на сервере.

С ключом -aet в запросе передаем название Application Entity Title . Обычно этот тайтл требуется, когда нужно разграничить доступ к изображениям при использовании одного DICOM-сервера разными PACS. Это, своего рода, идентификация клиента. Но проблема в том, что тайтлы на многих серверах настроены по умолчанию. Это значит, подобрать его можно, перебирая дефолтные значения от разных разработчиков PACS и DICOM-серверов.

С ключом -k передаем фильтр "PatientName=*" , который позволит показать любое доступное исследование на сервере.



Пример вывода команды findscu

Следующей командой скачиваем нужное нам исследование или все исследования сразу.

Значения ключей в команде аналогичны предыдущей.



Пример исследования, скачанного с удаленного сервера DICOM

Вот так с помощью двух команд можно скачать данные с удаленного DICOM-сервера при наличии одного из условий:

  • Application Entity Title не задан,
  • Application Entity Title установлен по умолчанию, поэтому его удалось подобрать.

Далее рассмотрим популярные инструменты и реализации протокола и найденные в них недостатки.

Реализации протокола DICOM

SimpleITK

SimpleITK — реализация протокола, которая используется в одном из крупных проектов в области medical imaging NVIDIA CLARA.

Для поиска уязвимостей в ней использовался фаззинг AFL со словарем. В результате мы наткнулись на переполнение кучи. Попытки эксплуатации привели к обнаружению более простой уязвимости — переполнению буфера через поле PatientName . Причем для переполнения буфера было достаточно создать файл с длиной имени пациента свыше 512 байт.


В ответ на репорт о переполнении кучи разработчик просто поправил файл, демонстрирующий уязвимость, чтобы он корректно обрабатывался библиотекой :)


Чем кончилось: в конце концов мы друг друга поняли, и вендор быстро исправил обе уязвимости.

DCMTK

DCMTK (DICOM Toolkit) — самая старая реализация DICOM-протокола. Она включает набор инструментов для работы с протоколом: парсеры DICOM-файлов в разных форматах и из разных форматов, а также утилиты для взаимодействия с DICOM-сервером по сети.

XXE в xml2dcm

Парсер xml2dcm конвертирует результаты медицинского обследования из формата XML в DICOM.
В xml2dcm мы нашли уязвимость к самой простой XXE-атаке: создаем XML-файл с внешней сущностью в имени пациента и на выходе получаем DICOM-файл с содержимым /etc/passwd .


Чем кончилось: данную уязвимость вендор устранил.

Небезопасные функции xml2dcm

По аналогии с external entities в XML, cама по себе утилита xml2dcm позволяет создавать DICOM-файлы c содержимым других файлов внутри. Это удобно, потому что не нужно писать данные в XML-файл — достаточно указать в теге PixelData путь к файлу, из которого нужно подгрузить данные при конвертировании.

Если в теге PixelDatа указать путь к любому файлу в системе, то после обработки утилитой xml2dcm мы получим DICOM-файл с его содержимым.

Чем кончилось: эту функцию невозможно отключить никаким флагом, а на доработку парсера xml2dcm вендор не согласился :(

DoS в парсерах DICOM-файлов

Мы тестировали парсеры из DCMTK при помощи фаззинга AFL и libFuzzer. Результат — DoS-утилиты xml2dcm и dcm2xml.

Чем кончилось: вендор исправил найденные ошибки.

DoS в dcmqrscp-сервере

DCMTK также предоставляет реализацию DICOM-сервера dcmqrscp. Тестирование безопасности DICOM-сервера dcmqrscp было проведено с помощью фаззинга, в результате которого был обнаружен DoS.
Фаззинг проводился при помощи AFLNet. Поддержку протокола DICOM я добавила в официальный репозиторий AFLNet, если кому-то захочется пофаззить другие DICOM-серверы.

Чем кончилось: вендор исправил ошибку реализации.

Приложения medical imaging

ORTHANC

В ходе исследования мы затронули приложение ORTHANC. Этот продукт очень прост в настройке и использовании: он предоставляет веб-обертку для просмотра DICOM-файлов, и для работы с DICOM-протоколом требуется только браузер.
ORTHANC используют в здравоохранении, в различных университетах и госпиталях, с его помощью проводятся исследования в области машинного обучения medical imaging (раз и два).



Открытые серверы ORTHANC в сети

Небезопасное API

Сервер ORTHANC открыт к сообществу разработчиков и предоставляет REST API для написания различных плагинов. Если взглянуть на список доступных методов, можно заметить интересные методы для перезагрузки и выключения сервера, а также метод с названием execute-script .


Он принимает на вход скрипты на lua и без какой-либо валидации выполняет их на сервере. Чтобы убедиться в этом самостоятельно, посмотрите исходный код ORTHANC.


Чем кончилось: раньше этот метод был включен по умолчанию в конфиге Orthanc, но, к счастью, недавно вендор догадался его отключить. Однако в сети до сих пор можно наткнуться на Orthanc-серверы с работающим методом execute-script .

Уязвимость аутентификации к CSRF-атаке

Когда пользователь открывает страницу, на сервер отправляется команда, запускающая выполнение произвольного кода.

Ответ вендора на запрос исправления данной уязвимости меня удивил: оказывается, ORTHANC — это микросервис, поэтому и о безопасности среды, где вы его разворачиваете, извольте позаботиться сами. То есть и механизм аутентификации мы сами должны написать? И догадаться о том, что поставляемый вендором механизм аутентификации лишь создает иллюзию безопасности и надежности, но на самом деле бесполезен?



Ответ вендора

BTW: кеш гугла показал, что приписку в документации о CSRF вендор сделал после моего репорта об уязвимости. И, конечно же, вряд ли он известил тех клиентов, которые уже пользуются их «микросервисом» и верят в его надежность.

Чем кончилось: вендор так ничего и не предпринял для устранения данной уязвимости, только дополнил документацию.

Заключение

То, как просто найти уязвимости в medical imaging и как забавно вендоры реагируют на баг-репорты, показывает слабый уровень защищенности таких технологий. Чтобы они стали безопасными, над ними еще работать и работать.

Иногда после перезагрузки сервера телефонии на базе Asterisk можно столкнуться с неприятной ситуацией, когда записи разговоров в веб интерфейсе во FreePBX CDR Report отсутствуют. Причем в настройках телефонии запись включена, а также сами записи разговоров размещены в определенных директориях на сайте в виде файлов. В CDR Report видно, что записей нет. В директории размещения записей […]

Все действия будут производиться на операционной системе Centos7 с предустановленной MariaDB, Asterisk 14 и FreepBX 14.

Иногда после перезагрузки сервера телефонии на базе Asterisk можно столкнуться с неприятной ситуацией, когда записи разговоров в веб интерфейсе во FreePBX CDR Report отсутствуют. Причем в настройках телефонии запись включена, а также сами записи разговоров размещены в определенных директориях на сайте в виде файлов.

В CDR Report видно, что записей нет.

отсутствие записей в CDR Report

отсутствие записей в CDR Report

В директории размещения записей звонков можно записи присутствуют.

Размещенные файлы записей разговоров

Размещенные файлы записей разговоров

В такой ситуации необходимо проверить загружены ли следующие модули (рисунок 3):

  1. res_odbc.so
  2. cdr_adaptive_odbc.so
  3. cel_odbc.so

Проверка установленных модулей.

Проверка установленных модулей.

Эти модули непосредственно работают с базой данных. Если они загружены и статус у них «Running», то проблема не в них.

Далее необходимо проверить есть ли записи разговоров непосредственно в самой базе данных MariaDB. Подключимся и проверим.

Ключ asteriskcdrdb в конце команды говорит о том, что необходимо после подключения к MariaDB сразу выбрать базу данных.

подключение к базе данных MariaDB.

подключение к базе данных MariaDB.

На следующем шаге выполним запрос к таблице CDR (рисунок 5):

Запрос в таблицу CDR на выборку записей о звонках.

Запрос в таблицу CDR на выборку записей о звонках.

Как видно из запроса база данных не содержит записей. Т.е. Астериск в нее не пишет.

Перезагрузим Астериск, сделаем тестовый звонок и проверим записи в CDR Report(рисунок 6).

Записи разговоров в CDR Report

Записи разговоров в CDR Report

Как видно из скриншота, записи звонков появились.

Поищем ошибки подключения к базе данных в логах Asterisk (рисунок 7):

Ошибки подключения к базе данных в логах Asterisk.

Ошибки подключения к базе данных в логах Asterisk.

Такая ситуация может возникнуть из-за того, что Asterisk запускается раньше базы данных, следовательно он не может ее проинициализировать.

Для устранения этой проблемы необходимо сделать так, чтобы база данных загружалась перед загрузкой Asterisk.

В операционных системах семейства Linux используется демон инициализации systemd. В момент загрузки операционной системы он загружает определенные приложения.

Systemd запускает сервисы описанные в файлах конфигурации. Конфигурация может состоять из нескольких файлов которая называется Юнитами.

Юниты могут располагаться в нескольких каталогах:

Далее мы опишем свой юнит, запускающий Asterisk после запуска базы данных.

Создадим новый файл с названием freepbx.service (рисунок 8):

Для создания нам необходимо будет описать три секции: Unit, Service, Install.

[Unit]

  • Description=FreePBX VoIP Server – произвольное описание Юнита
  • After=mariadb.service – тут указывается запускать наш юнит после запуска базы данных

[Service]

  • Type=oneshot – этот параметр для скриптов, которые выполняют одно задание и завершаются.
  • RemainAfterExit=yes – Systemd будет считать процесс активным.
  • ExecStart=/usr/sbin/fwconsole start –q – это приложение будет запущено при старте системы
  • ExecStop=/usr/sbin/fwconsole stop –q – это приложение будет остановлено при остановке системы

[Install]

описание юнита

описание юнита

Теперь нам необходимо убрать Asterisk из автозагрузки:

Проверим убран ли он из автозапуска (рисунок 9):

проверка автозагрузки Asterisk

проверка автозагрузки Asterisk

После проделанных настроек необходимо перезагрузить операционную систему и проверить запустилась ли служба Asterisk. Проблема будет решена.

Знали ли Вы, что на нашем сайте есть возможность не только загружать, но и просматривать клинические случаи в DICOM-формате?
Данная пошаговая инструкция научит Вас это делать.

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


2. Чтобы увидеть содержимое диска, в "Моем компьютере" кликаем на изображение диска правой кнопкой и выбираем "Открыть в новом окне":


3. В открывшемся окне ищем директорию "DICOM". Если такой директории нет, просто выделите все, что есть на диске. При дальнейшей загрузке лишние файлы будут удалены. На директории DICOM кликаем правой кнопкой мыши и выбираем "копировать":


4. Нам нужно скопировать файлы DICOM на наш компьютер, чтобы была возможность поместить их в zip-архив, иначе это работать не будет! Выбираем любую директорию, куда мы хотим поместить DICOM-файлы. В нашем примере это, конечно же, рабочий стол! Кликаем правой кнопкой мыши на пустом месте и выбираем "вставить":



6. Должен получиться zip-файл:


7. На сайте RADIOMED создаем клиническое наблюдение. В разделе "Исследование" выбираем вкладку "DICOM":


8. Перетаскивем при помощи мыши наш DICOM-файл в область с надписью "переместите файл сюда. " или пользуемся кнопкой "просмотр", чтобы найти файл на диске:


9. Ждем загрузки файла. Пока он загружается, модно закончить оформление остальных разделов клинического наблюдения.


10. После сохранения клинического наблюдения в окне исследования появится кнопка "DICOM":



Дождитесь загрузки исслелдования, полсле чего можно работать с ним практически также, как на рабочей станции:

Читайте также: