﻿===============================================================================
 TC WIPER - КАК СТИРАЮТСЯ ФАЙЛЫ И НАСКОЛЬКО ЭТО НАДЁЖНО НА САМОМ ДЕЛЕ
===============================================================================

 TC Wiper 1.0.0 beta - плагин безопасного удаления для Total Commander
 Copyright (C) 2026 Andrei Piasetski
 Лицензия: GNU General Public License v3.0 или новее (см. LICENSE.txt)
 Исходный код и сообщения об ошибках: https://github.com/apiasetski/tc-wiper

 Разработано с помощью Claude Opus 5.5 Medium (Anthropic).

 БЕТА-ВЕРСИЯ: эту версию проверял только автор. Сначала попробуйте её на
 тестовых файлах. Стёртые файлы восстановить невозможно.

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


-------------------------------------------------------------------------------
 1. КОРОТКО
-------------------------------------------------------------------------------

 * На обычном внутреннем ЖЁСТКОМ ДИСКЕ (HDD) файл, стёртый TC Wiper, не
   восстановить ни программами восстановления, ни в лаборатории.

 * На SSD, флешке, карте памяти или NVMe-накопителе TC Wiper не даёт
   восстановить файл программами восстановления и обычными средствами. Но он
   НЕ МОЖЕТ гарантировать, что во флеш-микросхемах внутри накопителя не
   осталось старой копии. Лаборатория, которая выпаивает и читает микросхемы
   напрямую, какое-то время может находить фрагменты.

 * В ОБОИХ случаях копии данных, существующие ВНЕ файла, не затрагиваются:
   старые версии, сохранённые программами, временные файлы, теневые копии и
   точки восстановления, облачная синхронизация и резервные копии, файл
   подкачки и т. д. См. раздел 6.

 * Самая сильная защита - шифрование всего диска (BitLocker, VeraCrypt),
   включённое ДО того, как на диск впервые попали секретные данные. Тогда все
   остатки данных в любом месте диска зашифрованы и бесполезны.


-------------------------------------------------------------------------------
 2. ЧТО TC WIPER ДЕЛАЕТ С КАЖДЫМ ФАЙЛОМ
-------------------------------------------------------------------------------

 Когда вы нажимаете F6 (Перенос) в панель плагина, сначала ничего не
 стирается. TC Wiper только собирает список, показывает, сколько файлов и
 папок будет стёрто, и ждёт вашего подтверждения. Затем для каждого файла:

  1. Проверки безопасности. Файлы в папках Windows и Program Files не
     обрабатываются. Файлы с другими жёсткими ссылками (hard links) не
     обрабатываются: перезапись уничтожила бы данные и под другими именами.
     У символической ссылки удаляется только сама ссылка, файл, на который
     она указывает, не трогается. Файлы, открытые другой программой, не
     обрабатываются, о них сообщается в итоговом окне.

  2. Снимаются атрибуты "только чтение", "скрытый" и "системный".

  3. Файл открывается в монопольном режиме, чтобы во время стирания ни одна
     другая программа не могла его читать или изменять.

  4. ПЕРЕЗАПИСЬ. Всё содержимое файла один раз перезаписывается случайными
     данными из криптографического генератора случайных чисел Windows
     (BCryptGenRandom). Используются случайные данные, а не нули, чтобы
     накопитель со встроенным сжатием не мог "ужать" запись, и чтобы
     результат ничего не говорил о прежнем содержимом.

  5. ХВОСТ КЛАСТЕРА (slack space). Диск хранит файлы кластерами (обычно по
     4 КБ). В неиспользованной части последнего кластера файла могут
     оставаться байты от более старой и длинной версии файла. TC Wiper
     перезаписывает и этот хвост.

  6. СБРОС НА ДИСК. Windows получает команду вытолкнуть записанные данные из
     своего кэша и кэша накопителя на носитель (FlushFileBuffers).

  7. АЛЬТЕРНАТИВНЫЕ ПОТОКИ ДАННЫХ. Файлы NTFS могут содержать скрытое
     дополнительное содержимое ("потоки", например file.txt:secret). Каждый
     поток перезаписывается так же.

  8. УСЕЧЕНИЕ. Длина файла сокращается до нуля.

  9. ЗАТИРАНИЕ ИМЕНИ. Файл 3 раза переименовывается в случайные имена той же
     длины, чтобы исходное имя было перезаписано в служебных записях файловой
     системы, и затем удаляется.

 10. ПАПКИ. Перенесённые папки, которые после этого стали пустыми,
     переименовываются в случайные имена и удаляются тем же способом.

 Если нажать "Cancel" (Отмена), текущий файл всё равно удаляется (он уже
 повреждён), а остальные файлы остаются полностью нетронутыми.

 Чего TC Wiper НЕ делает: многократную перезапись (она не нужна, см.
 раздел 3), проверку чтением после записи, затирание свободного места всего
 диска и удаление копий, хранящихся в других местах (раздел 6).


-------------------------------------------------------------------------------
 3. ПОЧЕМУ ДОСТАТОЧНО ОДНОГО ПРОХОДА (И МИФ О "35 ПРОХОДАХ")
-------------------------------------------------------------------------------

 Многие программы стирания предлагают 3, 7 или 35 проходов перезаписи.
 Они появились из:

  * Метода Гутмана (1996), рассчитанного на старые способы кодирования
    данных на дисках (MFM/RLL), которые давно не используются. Сам автор
    пишет, что все 35 проходов для современных дисков бессмысленны.
  * Американского стандарта DoD 5220.22-M (3 прохода) - старого стандарта,
    в современной редакции которого этот метод уже не предписан.

 Современный ориентир - публикация NIST SP 800-88 "Guidelines for Media
 Sanitization". В ней указано, что для современных магнитных жёстких дисков
 одного прохода перезаписи достаточно, чтобы предотвратить восстановление
 даже с помощью самых современных лабораторных методов. Не существует
 опубликованных воспроизводимых случаев восстановления данных, один раз
 перезаписанных на современном жёстком диске.

 Дополнительные проходы добавляют время и износ, но не безопасность. На SSD
 дополнительные проходы не помогают вовсе по причинам из раздела 5.


-------------------------------------------------------------------------------
 4. ОБЫЧНЫЕ ЖЁСТКИЕ ДИСКИ (HDD)
-------------------------------------------------------------------------------

 Как это работает: жёсткий диск хранит каждый блок в фиксированном
 физическом месте. Когда Windows (NTFS) перезаписывает существующий обычный
 файл, новые данные записываются точно поверх старых. Поэтому перезапись на
 HDD эффективна.

 Остающиеся риски на HDD:

  * ПЕРЕНАЗНАЧЕННЫЕ СЕКТОРЫ. Обнаружив слабый сектор, микропрограмма диска
    незаметно переносит данные в резервный сектор. Старый, слабый сектор
    больше недоступен ни Windows, ни какой-либо программе стирания и может
    содержать копию. Это касается лишь нескольких секторов и только на
    изношенных дисках, но на уровне отдельных файлов это не исправить.
    (Это решает "Secure Erase" всего диска.)

  * SMR-ДИСКИ. Некоторые современные жёсткие диски большого объёма
    используют "черепичную" запись (SMR). Такие диски сначала записывают
    изменения в область кэша и переносят их позже, немного похоже на SSD.
    На таких дисках старая копия может некоторое время оставаться в области
    кэша. Производители не всегда указывают, что диск использует SMR.

  * СЖАТЫЕ, РАЗРЕЖЕННЫЕ И ЗАШИФРОВАННЫЕ EFS ФАЙЛЫ. Для файлов, сжатых
    средствами NTFS (синие имена в Проводнике), разреженных (sparse) файлов
    и файлов, зашифрованных Windows EFS (зелёные имена), Windows может
    записывать новые данные в другие кластеры, оставляя старые кластеры
    нетронутыми в свободном месте. TC Wiper всё равно стирает такие файлы,
    но в итоговом окне предупреждает об этом.

  * МАЛЕНЬКИЕ ФАЙЛЫ ВНУТРИ ГЛАВНОЙ ТАБЛИЦЫ ФАЙЛОВ. Файлы размером примерно
    до 700 байт хранятся прямо в главной таблице файлов NTFS (MFT). TC Wiper
    перезаписывает их там на месте. Однако журнал транзакций NTFS ($LogFile)
    может недолго хранить копию недавних изменений таких записей. Он
    перезаписывается обычной работой диска за короткое время.

  * ИМЕНА ФАЙЛОВ В ЖУРНАЛАХ. Затирание имени удаляет исходное имя из
    собственной записи файла. Но NTFS также ведёт журнал изменений
    ($UsnJrnl), в котором записываются имена файлов и операции (создание,
    переименование, удаление). Исходное имя и сам факт переименования и
    удаления могут оставаться в этом журнале, пока их не вытеснят более
    новые записи (часто дни или недели). СОДЕРЖИМОЕ файла в этом журнале
    не хранится. То же касается имён папок: их следы могут оставаться в
    служебных структурах индексов папок, пока это место не будет
    использовано снова.

 Итог для HDD: для обычных файлов содержимое уничтожено окончательно. Следы
 ИМЕНИ некоторое время могут оставаться в системных журналах.


-------------------------------------------------------------------------------
 5. SSD, NVMe, ФЛЕШКИ, КАРТЫ ПАМЯТИ (ФЛЕШ-ПАМЯТЬ)
-------------------------------------------------------------------------------

 Флеш-память устроена принципиально иначе, и это очень важно.

  * НЕТ ПЕРЕЗАПИСИ НА МЕСТЕ. Ячейки флеш-памяти нельзя перезаписать
    напрямую: их сначала нужно стереть большими блоками. Поэтому контроллер
    накопителя ("слой трансляции флеш-памяти", FTL) записывает каждое
    изменение в НОВОЕ, пустое место и просто обновляет свою внутреннюю
    карту. Старые данные физически остаются в микросхемах с пометкой
    "устаревшие", пока сборка мусора контроллера когда-нибудь не сотрёт этот
    блок.

    Следствие: когда TC Wiper перезаписывает файл на SSD, Windows видит
    случайные данные, но исходные данные ещё могут существовать во
    флеш-микросхемах.

  * ВЫРАВНИВАНИЕ ИЗНОСА (wear leveling) распределяет запись по всем ячейкам,
    чтобы продлить срок службы накопителя. Данные внутри перемещаются, и
    старые копии могут существовать в нескольких местах.

  * РЕЗЕРВНАЯ ОБЛАСТЬ (over-provisioning). SSD содержат скрытую резервную
    ёмкость (часто 7-28 %), к которой Windows вообще не может обратиться.
    Ни одна программа под Windows не может её перезаписать, включая функции
    "затирания свободного места".

  * TRIM. При удалении файла Windows сообщает SSD, какие блоки больше не
    используются (команда TRIM). Большинство современных SSD после этого
    при чтении таких блоков возвращают только нули и физически стирают их
    при следующей сборке мусора. Поэтому программы восстановления почти
    никогда не находят удалённые файлы на SSD с включённым TRIM. Но КОГДА
    произойдёт физическое стирание, решает накопитель, и это не
    гарантируется.

    Проверить, что TRIM включён (в командной строке):
        fsutil behavior query DisableDeleteNotify
    "DisableDeleteNotify = 0" означает, что TRIM включён.

  * ФЛЕШКИ, SD-КАРТЫ И МНОГИЕ USB-КОРПУСА (боксы) НЕ поддерживают TRIM.
    На них устаревшие данные могут долго оставаться читаемыми внутри
    флеш-памяти.

  * ИССЛЕДОВАНИЯ. Исследование Калифорнийского университета в Сан-Диего
    (Wei et al., "Reliably Erasing Data From Flash-Based Solid State Drives",
    USENIX FAST 2011), в котором флеш-микросхемы читались напрямую, показало,
    что после перезаписи отдельных файлов значительная часть их содержимого
    оставалась восстановимой. Команды очистки всего накопителя работали
    намного лучше (если были правильно реализованы).

 Итог для SSD / флеш-памяти: TC Wiper надёжно останавливает обычные
 программы восстановления. Он не может гарантировать защиту от лаборатории,
 читающей флеш-микросхемы напрямую. Если такой уровень угрозы для вас важен,
 используйте шифрование всего диска (с самого начала) либо стирайте или
 уничтожайте накопитель целиком (раздел 7).


-------------------------------------------------------------------------------
 6. КОПИИ ДАННЫХ, ДО КОТОРЫХ TC WIPER НЕ ДОБИРАЕТСЯ
-------------------------------------------------------------------------------

 Стирание файла стирает только ЭТОТ файл. Очень часто существуют и другие
 копии. Подумайте о каждом из пунктов:

  * СТАРЫЕ ВЕРСИИ, СОХРАНЁННЫЕ ПРОГРАММАМИ. Word, Excel, многие редакторы и
    графические программы сохраняют документ, записывая НОВЫЙ файл и удаляя
    старый. Поэтому все прежние сохранённые версии могут по-прежнему лежать
    в свободном месте диска. Также могут существовать файлы автосохранения
    и резервные копии (*.bak, ~$*.docx, *.tmp).

  * ВРЕМЕННЫЕ ФАЙЛЫ в %TEMP%, кэш браузеров и папки загрузок.

  * КОРЗИНА. Если файл раньше удалялся обычным способом и затем
    восстанавливался, или если другие копии удалялись обычным способом, они
    могут оставаться в Корзине или в свободном месте.

  * ТЕНЕВЫЕ КОПИИ / ВОССТАНОВЛЕНИЕ СИСТЕМЫ / "ПРЕДЫДУЩИЕ ВЕРСИИ". Windows
    может хранить снимки диска со старыми версиями ваших файлов.
    Посмотреть их (командная строка от имени администратора):
        vssadmin list shadows
    Управление: Свойства системы > Защита системы.

  * ИСТОРИЯ ФАЙЛОВ И РЕЗЕРВНЫЕ КОПИИ (архивация Windows, внешние диски,
    резервные копии на NAS, программы резервного копирования). Сотрите файл
    и там, либо примите то, что резервная копия его хранит.

  * ПАПКИ ОБЛАЧНОЙ СИНХРОНИЗАЦИИ (OneDrive, Dropbox, Google Диск, iCloud,
    Яндекс Диск). Удаление локального файла перемещает облачную копию в
    онлайн-корзину сервиса, а сервис хранит свою историю версий. Очистите и
    онлайн-корзину, и историю версий.

  * СЕТЕВЫЕ ДИСКИ И NAS. Способ хранения файлов определяет сервер. Многие
    NAS используют снимки (snapshots) или файловые системы с копированием
    при записи (Btrfs, ZFS), где перезапись вообще не затрагивает старые
    данные.

  * ДРУГИЕ ФАЙЛОВЫЕ СИСТЕМЫ. На FAT32/exFAT (типично для флешек и карт
    памяти) перезапись идёт на месте, но см. раздел 5 о флеш-памяти. На ReFS
    данные могут записываться с копированием при записи, так что старые
    данные могут сохраниться.

  * ВИРТУАЛЬНЫЕ МАШИНЫ. Виртуальный диск (VHDX, VMDK) может быть
    динамически расширяемым или иметь снимки/контрольные точки, хранящие
    старые блоки.

  * ФАЙЛ ПОДКАЧКИ И ФАЙЛ ГИБЕРНАЦИИ (pagefile.sys, hiberfil.sys). Части
    документа, открытого в памяти, Windows может записать туда. Аварийные
    дампы памяти (MEMORY.DMP) тоже могут содержать данные из памяти.

  * ИНДЕКС ПОИСКА WINDOWS, КЭШ ЭСКИЗОВ И СПИСКИ "ПОСЛЕДНИЕ ФАЙЛЫ" могут
    хранить слова из документа, маленькие изображения-превью или имя файла.

  * ВЛОЖЕНИЯ В ПИСЬМА, мессенджеры и любые другие места, куда файл
    отправлялся.


-------------------------------------------------------------------------------
 7. КАК ПОЛУЧИТЬ БОЛЕЕ СИЛЬНУЮ ЗАЩИТУ
-------------------------------------------------------------------------------

  * Шифрование всего диска: включите BitLocker (Windows Pro) или
    "Шифрование устройства", либо используйте VeraCrypt. Проверить
    состояние: manage-bde -status
    Данные, записанные ПОСЛЕ включения шифрования, защищены и в остатках.
    Данные, записанные до этого, могут оставаться в незашифрованном виде в
    свободном месте (на SSD - в устаревших блоках флеш-памяти).

  * HDD: после стирания файлов затрите свободное место диска, чтобы удалить
    старые версии, сохранённые программами:
        cipher /w:C:\
    (Это занимает много времени. Затирается всё СВОБОДНОЕ место, а не ваши
    файлы. НЕ используйте это регулярно на SSD: скрытые области это не
    затрагивает, а накопитель только изнашивается.)

  * Удалите старые точки восстановления, если они содержат эти данные
    (Свойства системы > Защита системы > Настроить > Удалить). При этом
    удаляются ВСЕ точки восстановления.

  * Отключите гибернацию, если она вам не нужна:  powercfg /h off
    (командная строка от имени администратора; файл hiberfil.sys будет
    удалён).

  * Очистите онлайн-корзины и историю версий облачных сервисов.

  * Перед продажей, возвратом или утилизацией всего накопителя используйте
    программу производителя "Secure Erase" / "Sanitize" (для SSD она
    сбрасывает все флеш-ячейки, включая скрытые области), или, для
    зашифрованного диска, уничтожьте ключ шифрования. Для максимальной
    безопасности накопитель можно физически уничтожить.


-------------------------------------------------------------------------------
 8. КРАТКАЯ ПАМЯТКА: НАСКОЛЬКО НАДЁЖНО БЫЛО СТИРАНИЕ?
-------------------------------------------------------------------------------

 Обычный файл на внутреннем HDD (NTFS)
     Содержимое не восстановить. Старые версии, сохранённые программами,
     теневые копии и резервные копии - отдельная тема, см. раздел 6.

 Сжатый / зашифрованный EFS / разреженный файл на HDD
     Текущее содержимое не восстановить, но более старые кластеры могут
     оставаться в свободном месте. Итоговое окно предупреждает об этом.
     Затрите свободное место командой cipher /w.

 Внутренний SSD / NVMe с включённым TRIM
     Не восстановить программами восстановления. Лабораторная атака на
     уровне микросхем может в течение неопределённого времени находить
     фрагменты.

 Флешка, карта памяти, SSD в USB-корпусе (обычно без TRIM)
     Программное восстановление стёртого файла невозможно, но старые копии
     могут долго оставаться внутри флеш-памяти.

 Любой диск с BitLocker/VeraCrypt, включённым до записи данных
     Отлично. Все остатки данных зашифрованы.

 Сетевой диск / NAS / папка облачной синхронизации
     Локальная или видимая копия стёрта; снимки на сервере, корзины и
     история версий - нет. Проверьте их.


-------------------------------------------------------------------------------
 9. ЧТО ОЗНАЧАЮТ СООБЩЕНИЯ
-------------------------------------------------------------------------------

 Сообщения плагина пока только на английском языке.

 "Securely erased: N files and M folders"
     Надёжно стёрто N файлов и M папок, как описано в разделе 2.

 "Not erased: ... protected"
     Файл находится в папке Windows или Program Files.

 "Not erased: ... in use"
     Файл открыт другой программой; закройте её и попробуйте снова.

 "Not erased: ... hard links"
     Те же данные доступны под другим именем; удалите или сотрите и
     другие имена.

 "... compressed, encrypted or sparse"
     Сжатые, зашифрованные или разреженные файлы - см. раздел 4.

 "Cancelled: N files were left untouched"
     Операция отменена; эти N файлов не изменялись.

 "... NOT securely wiped"
     Total Commander удалил файлы раньше, чем TC Wiper успел их стереть.
     Пожалуйста, сообщите об этом - такого происходить не должно.

 F5 (Копирование) никогда ничего не стирает; стирает только F6 (Перенос).


-------------------------------------------------------------------------------
 10. ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ
-------------------------------------------------------------------------------

  * Случайные данные: BCryptGenRandom с системным генератором, блоками
    по 1 МБ.
  * Доступ к файлу: CreateFileW в монопольном режиме (без совместного
    доступа), WriteFile, FlushFileBuffers, SetEndOfFile.
  * Размер с учётом хвоста кластера: GetFileInformationByHandleEx
    (FileStandardInfo), AllocationSize и EndOfFile.
  * Альтернативные потоки данных: FindFirstStreamW / FindNextStreamW.
  * Переименование: MoveFileExW (3 раза, случайные имена), затем
    DeleteFileW / RemoveDirectoryW.
  * Поддерживаются пути длиннее 260 символов (префикс \\?\).
  * Защищённые папки: папка Windows и все папки Program Files. Это также
    защищает 32-битную версию плагина от перенаправления папок Windows.


-------------------------------------------------------------------------------
 ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
-------------------------------------------------------------------------------

 Стёртые файлы невозможно восстановить. TC Wiper предоставляется "как есть",
 без каких-либо гарантий. Он снижает риск восстановления данных, как описано
 выше, но ни одна программа, работающая с отдельными файлами, не может
 гарантировать полного удаления всех следов на всех типах носителей. Для
 особо важных данных сочетайте его с шифрованием всего диска и мерами из
 раздела 7.

===============================================================================
