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 видно, что записей нет.
В директории размещения записей звонков можно записи присутствуют.
В такой ситуации необходимо проверить загружены ли следующие модули (рисунок 3):
- res_odbc.so
- cdr_adaptive_odbc.so
- cel_odbc.so
Эти модули непосредственно работают с базой данных. Если они загружены и статус у них «Running», то проблема не в них.
Далее необходимо проверить есть ли записи разговоров непосредственно в самой базе данных MariaDB. Подключимся и проверим.
Ключ asteriskcdrdb в конце команды говорит о том, что необходимо после подключения к MariaDB сразу выбрать базу данных.На следующем шаге выполним запрос к таблице CDR (рисунок 5):
Как видно из запроса база данных не содержит записей. Т.е. Астериск в нее не пишет.
Перезагрузим Астериск, сделаем тестовый звонок и проверим записи в CDR Report(рисунок 6).
Как видно из скриншота, записи звонков появились.
Поищем ошибки подключения к базе данных в логах Asterisk (рисунок 7):
Такая ситуация может возникнуть из-за того, что 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. Проблема будет решена.
Знали ли Вы, что на нашем сайте есть возможность не только загружать, но и просматривать клинические случаи в DICOM-формате?
Данная пошаговая инструкция научит Вас это делать.
Для начала нам нужно раздобыть DICOM-файлы. Мы будем копировать их с диска, который до этого записали на станции оператора.
2. Чтобы увидеть содержимое диска, в "Моем компьютере" кликаем на изображение диска правой кнопкой и выбираем "Открыть в новом окне":
3. В открывшемся окне ищем директорию "DICOM". Если такой директории нет, просто выделите все, что есть на диске. При дальнейшей загрузке лишние файлы будут удалены. На директории DICOM кликаем правой кнопкой мыши и выбираем "копировать":
4. Нам нужно скопировать файлы DICOM на наш компьютер, чтобы была возможность поместить их в zip-архив, иначе это работать не будет! Выбираем любую директорию, куда мы хотим поместить DICOM-файлы. В нашем примере это, конечно же, рабочий стол! Кликаем правой кнопкой мыши на пустом месте и выбираем "вставить":
6. Должен получиться zip-файл:
7. На сайте RADIOMED создаем клиническое наблюдение. В разделе "Исследование" выбираем вкладку "DICOM":
8. Перетаскивем при помощи мыши наш DICOM-файл в область с надписью "переместите файл сюда. " или пользуемся кнопкой "просмотр", чтобы найти файл на диске:
9. Ждем загрузки файла. Пока он загружается, модно закончить оформление остальных разделов клинического наблюдения.
10. После сохранения клинического наблюдения в окне исследования появится кнопка "DICOM":
Дождитесь загрузки исслелдования, полсле чего можно работать с ним практически также, как на рабочей станции:
Читайте также: