Возможно ли обойти кеширование и загрузить / открыть файл в ОЗУ?

Преамбула: Недавно я наткнулся на интересную историю о людях, которые, кажется, отправки сообщений электронной почты с документами, которые содержат детскую порнографию. Это пример (это jpeg, но я слышал, что это делается с помощью PDF-файлов, которые обычно нельзя просмотреть) https://www.youtube.com/watch?v=zislzpkpvZc Это может представлять реальную угрозу для людей, участвующих в расследовании. журналистики, потому что даже если вы удалите файл после его открытия в Temp, файл все равно может быть восстановлен с помощью криминалистического программного обеспечения. Даже открыв файл, вы попадаете в область совершения тяжкого преступления.

Это также может создать реальную проблему для консультантов по безопасности для группы. Допустим, человек А отправляет по электронной почте криминальные файлы, человек Б с подозрением относится к электронной почте и передает ее менеджеру по безопасности для своей программы. Чтобы проанализировать файл, консультанту, возможно, придется загрузить его на жесткий диск, даже если он загрузит его в виртуальную машину или изолированную программную среду. Даже если они выяснят, что это такое, они все еще находятся в этой законной зоне наземных мин, что плохие сроки могут посадить их в тюрьму на 20 лет. Думая об этом, если память будет входить только в ОЗУ, то при отключении питания все следы этого открытого файла исчезнут.

Вопрос: Я хорошо понимаю, как работает компьютерная архитектура, но эта проблема, представленная ранее, заставила меня задуматься. Существует ли ограничение на уровне операционной системы, аппаратного обеспечения или встроенного программного обеспечения, которое не позволяет программе открывать поток загрузки информации непосредственно в ОЗУ? Если нет, скажем, вы пытаетесь открыть pdf, возможно ли, чтобы файл, который он открывает, вместо этого передавался в программу в виде потока загрузки байтов, который затем мог бы переписать / иначе сделать невозможным сохранение окончательного файла на жестком диске?

1 ответ

К сожалению, я могу дать ответ только на основе Linux/Unix, но, надеюсь, это полезно и распространяется и на Windows.

Существует много способов передачи данных между программами без записи на жесткий диск, обычно возникает вопрос о том, поддерживают ли их программные приложения (например, веб-браузер и программа чтения PDF-файлов). Потоки могут передаваться по каналам и сокетам, но проблема здесь в том, что для принимающей программы может быть более удобным выполнять поиск в потоке в определенных точках, а не сохранять все данные в памяти. Это также может быть более эффективным использованием ресурсов. Следовательно, многие программы этого не делают. На самом деле канал можно сделать похожим на файл, но если приложение попытается выполнить поиск в обратном направлении, это вызовет ошибку.

Если бы был больший спрос на потоковую передачу данных в приложения, это, вероятно, наблюдалось бы в большем количестве случаев, хотя здесь нет серьезных препятствий. В настоящее время более распространено просто хранить PDF-файлы во временном файле, если они просматриваются в плагине и не загружаются. Видео может быть другим, хотя.

Альтернативой является использование ОЗУ, для системы Linux обычно по крайней мере одна настройка по умолчанию ( tmpfs), хотя для Windows кажется, что вам нужно установить дополнительное программное обеспечение. Использование одного из них снимает вышеуказанные ограничения, и довольно легко настроить веб-браузер для использования его для временных файлов.

Другие вопросы по тегам