Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Алгоритмы безопасного удаления файлов |

14.11.2008, 22:47
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Алгоритмы безопасного удаления файлов
По каким алгоритмам работают программы "бесследно" удаляющие файлы?Мне не приходит в голову ничего кроме как открыть файл и записать в него несколько раз мусор,а потом удалить.
|
|
|

14.11.2008, 22:55
|
|
Участник форума
Регистрация: 01.07.2008
Сообщений: 175
Провел на форуме: 881554
Репутация:
66
|
|
папка это вить тож файл ".."
|
|
|

14.11.2008, 22:59
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Сообщение от PHPoozy
папка это вить тож файл ".."
Ну и что ты предлогаешь?
|
|
|

14.11.2008, 23:08
|
|
Участник форума
Регистрация: 01.07.2008
Сообщений: 175
Провел на форуме: 881554
Репутация:
66
|
|
перезаписать папку из того что было
|
|
|

14.11.2008, 23:10
|
|
Постоянный
Регистрация: 10.12.2005
Сообщений: 939
Провел на форуме: 3886281
Репутация:
929
|
|
Разобрать структуру файловой системы - найти физ. сектор содержащий информацию и перезаписать. Че ту сложного?!
Например для 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;
На выходе этой функции мы имеем массив описывающий кластеры файла
Последний раз редактировалось spider-intruder; 14.11.2008 в 23:15..
|
|
|

14.11.2008, 23:12
|
|
Участник форума
Регистрация: 31.07.2008
Сообщений: 207
Провел на форуме: 299231
Репутация:
107
|
|
Сообщение от _nic
Мне не приходит в голову ничего кроме как открыть файл и записать в него несколько раз мусор,а потом удалить.
Мне тоже... Вариант прямого обращения к фс через асм и удаление цепочек дублей отбросим - не отравдывает.
Хотя как по мне, то человек, которому нужна была подобная прога, затиркой (ы...) доволен. Так что сильно не парься.
|
|
|

14.11.2008, 23:16
|
|
Постоянный
Регистрация: 10.12.2005
Сообщений: 939
Провел на форуме: 3886281
Репутация:
929
|
|
обращения к фс через асм - на кой хрен через асм простите )
Читайте безсмертного рему и думайте: http://www.wasm.ru/article.php?article=lockfileswork
в третьем методе пример получения физ положения файла. Код в пердыдущем посте есть.
Получите его положение и затрите чем угодно.
CreateFile и \\\\.\\File еще никто не отменял вплоть до висты
Последний раз редактировалось spider-intruder; 14.11.2008 в 23:19..
|
|
|

14.11.2008, 23:40
|
|
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме: 5812656
Репутация:
1540
|
|
если кратко: при удалении в память,которую занимал файл не пишутся нули(очень долго займёт),просто вся память помечается как свободная и на её уже можно перезаписывать. Следовательно безопасное удаление должно в эту область памяти записывать что-либо(нули) и только потом производить стандартное удаление.
|
|
|

14.11.2008, 23:41
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Сообщение от _nic
По каким алгоритмам работают программы "бесследно" удаляющие файлы?Мне не приходит в голову ничего кроме как открыть файл и записать в него несколько раз мусор,а потом удалить.
Ну а в общих чертах так оно обычно и делается.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
|
|
|

14.11.2008, 23:56
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
перезапись файла все равно оставляет магнитные следы предыдущих данных. Поэтому надежнее не просто затирать нулями а использовать спец алгоритмы для этого разработанные.
http://ru.wikipedia.org/wiki/Алгоритмы_уничтожения_инфо рмации
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|