Просмотр полной версии : Алгоритмы безопасного удаления файлов
По каким алгоритмам работают программы "бесследно" удаляющие файлы?Мне не приходит в голову ничего кроме как открыть файл и записать в него несколько раз мусор,а потом удалить.
папка это вить тож файл ".."
папка это вить тож файл ".."
Ну и что ты предлогаешь?
Ну и что ты предлогаешь?
перезаписать папку из того что было
spider-intruder
14.11.2008, 23:10
Разобрать структуру файловой системы - найти физ. сектор содержащий информацию и перезаписать. Че ту сложного?!
Например для NTFS
ULONGLONG *GetFileClusters(
PCHAR lpFileName,
ULONG ClusterSize,
ULONG *ClCount,
ULONG *FileSize
)
{
HANDLE hFile;
ULONG OutSize;
ULONG Bytes, Cls, CnCount, r;
ULONGLONG *Clusters = NULL;
BOOLEAN Result = FALSE;
LARGE_INTEGER PrevVCN, Lcn;
STARTING_VCN_INPUT_BUFFER InBuf;
PRETRIEVAL_POINTERS_BUFFER OutBuf;
hFile = CreateFile(lpFileName, FILE_READ_ATTRIBUTES,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, OPEN_EXISTING, 0, 0);
if (hFile != INVALID_HANDLE_VALUE)
{
*FileSize = GetFileSize(hFile, NULL);
OutSize = sizeof(RETRIEVAL_POINTERS_BUFFER) + (*FileSize / ClusterSize) * sizeof(OutBuf->Extents);
OutBuf = malloc(OutSize);
InBuf.StartingVcn.QuadPart = 0;
if (DeviceIoControl(hFile, FSCTL_GET_RETRIEVAL_POINTERS, &InBuf,
sizeof(InBuf), OutBuf, OutSize, &Bytes, NULL))
{
*ClCount = (*FileSize + ClusterSize - 1) / ClusterSize;
Clusters = malloc(*ClCount * sizeof(ULONGLONG));
PrevVCN = OutBuf->StartingVcn;
for (r = 0, Cls = 0; r < OutBuf->ExtentCount; r++)
{
Lcn = OutBuf->Extents[r].Lcn;
for (CnCount = OutBuf->Extents[r].NextVcn.QuadPart - PrevVCN.QuadPart;
CnCount; CnCount--, Cls++, Lcn.QuadPart++) Clusters[Cls] = Lcn.QuadPart;
PrevVCN = OutBuf->Extents[r].NextVcn;
}
}
free(OutBuf);
CloseHandle(hFile);
}
return Clusters;
На выходе этой функции мы имеем массив описывающий кластеры файла
vikseriq
14.11.2008, 23:12
Мне не приходит в голову ничего кроме как открыть файл и записать в него несколько раз мусор,а потом удалить.
Мне тоже... Вариант прямого обращения к фс через асм и удаление цепочек дублей отбросим - не отравдывает.
Хотя как по мне, то человек, которому нужна была подобная прога, затиркой (ы...) доволен. Так что сильно не парься.
spider-intruder
14.11.2008, 23:16
обращения к фс через асм - на кой хрен через асм простите )
Читайте безсмертного рему и думайте: http://www.wasm.ru/article.php?article=lockfileswork
в третьем методе пример получения физ положения файла. Код в пердыдущем посте есть.
Получите его положение и затрите чем угодно.
CreateFile и \\\\.\\File еще никто не отменял вплоть до висты
если кратко: при удалении в память,которую занимал файл не пишутся нули(очень долго займёт),просто вся память помечается как свободная и на её уже можно перезаписывать. Следовательно безопасное удаление должно в эту область памяти записывать что-либо(нули) и только потом производить стандартное удаление.
По каким алгоритмам работают программы "бесследно" удаляющие файлы?Мне не приходит в голову ничего кроме как открыть файл и записать в него несколько раз мусор,а потом удалить. Ну а в общих чертах так оно обычно и делается.
перезапись файла все равно оставляет магнитные следы предыдущих данных. Поэтому надежнее не просто затирать нулями а использовать спец алгоритмы для этого разработанные.
http://ru.wikipedia.org/wiki/Алгоритмы_уничтожения_инфо рмации
spider-intruder
15.11.2008, 00:34
Господа где же тут зиродей - как так перезаписать файл :)
Где же системное программирование - где подход. Раз уж заговорили про магнитные "остатки" Читайте инфу в бинарном и перезаписывайте N раз противоположными значениями :-)
Вступайте и КоНпелируйте! (это я блога эвилфрика начитался - не обращайте внимания)
M_script_
16.11.2008, 18:03
Записать в файл кучу мусора и удалить это конечно вариант, большинство программ для восстановления затертую информацию не найдут. И чем больше раз перезапишешь, тем лучше. Но от спецслужб в случае чего это не поможет, все равно восстановят =)
vikseriq
16.11.2008, 19:30
Ы, не то. NTFS - сцуко, в фоне делает копии файлов и путей - вот и облом.
Физ расположение - это вы перегнули. только на идеальных НЕДЕФРАГМЕНТИРОВАННЫХ дисках протянет, но это бывает только на CD\DVD (их легче поломать и под загигалку :) )
spider-intruder
17.11.2008, 02:54
Функция возвращает всю структуру расположения файлов на сколько мне известно.
Распарсить структуру и перезаписать все что надо.
Нормальный вайперы делают это именно на низком уровне .
+ никогда не помешает научиться работать с ФС на низком уровне
2 0verbreaK
У нас как бы демократия - охота мне вот я и читаю. Для меня это как БАШ орг
А ваще чувак молодец. Психолог. Там пол блога он срется сам с собой под разными никами провоцируя не просвященных на флуд и провакационные посты выявляющие человеческую "суЧность". Если человек не такой как все то на него нападают как собаки! ЭВИЛ жив! Хотя и жжет сцуко не по детски :-)
А почему именно лутчше всего напрямую содержимое кластеров тереть,а не просто писать мусор в файл ведь во 2м случае ОС вроде как сам должна тот мусор в кластеры позапихивать.В чем прикол?
vikseriq
17.11.2008, 19:30
по причине дефрагментации.
А почему именно лутчше всего напрямую содержимое кластеров тереть,а не просто писать мусор в файл ведь во 2м случае ОС вроде как сам должна тот мусор в кластеры позапихивать.В чем прикол?
потому что если ты будешь тереть информацию средствами ОС и если ФС журналируемая то ОС все же кое-что сохранит, хотя бы сам факт удаления.
по причине дефрагментации.
вероятно ты хотел сказать "фрагментации", но она тут все равно ни при чем.
ты хоть прочитал то что я писал? Журналируемая ФС сохранит факт удаления и имя удаленного файла. А это есть информация, которой быть не должно.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot