По каким алгоритмам работают программы "бесследно" удаляющие файлы?Мне не приходит в голову ничего кроме как открыть файл и записать в него несколько раз мусор,а потом удалить.
Разобрать структуру файловой системы - найти физ. сектор содержащий информацию и перезаписать. Че ту сложного?! Например для NTFS Code: 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; На выходе этой функции мы имеем массив описывающий кластеры файла
Мне тоже... Вариант прямого обращения к фс через асм и удаление цепочек дублей отбросим - не отравдывает. Хотя как по мне, то человек, которому нужна была подобная прога, затиркой (ы...) доволен. Так что сильно не парься.
обращения к фс через асм - на кой хрен через асм простите ) Читайте безсмертного рему и думайте: http://www.wasm.ru/article.php?article=lockfileswork в третьем методе пример получения физ положения файла. Код в пердыдущем посте есть. Получите его положение и затрите чем угодно. CreateFile и \\\\.\\File еще никто не отменял вплоть до висты
если кратко: при удалении в память,которую занимал файл не пишутся нули(очень долго займёт),просто вся память помечается как свободная и на её уже можно перезаписывать. Следовательно безопасное удаление должно в эту область памяти записывать что-либо(нули) и только потом производить стандартное удаление.
перезапись файла все равно оставляет магнитные следы предыдущих данных. Поэтому надежнее не просто затирать нулями а использовать спец алгоритмы для этого разработанные. http://ru.wikipedia.org/wiki/Алгоритмы_уничтожения_информации
Господа где же тут зиродей - как так перезаписать файл Где же системное программирование - где подход. Раз уж заговорили про магнитные "остатки" Читайте инфу в бинарном и перезаписывайте N раз противоположными значениями Вступайте и КоНпелируйте! (это я блога эвилфрика начитался - не обращайте внимания)
Записать в файл кучу мусора и удалить это конечно вариант, большинство программ для восстановления затертую информацию не найдут. И чем больше раз перезапишешь, тем лучше. Но от спецслужб в случае чего это не поможет, все равно восстановят =)
Ы, не то. NTFS - сцуко, в фоне делает копии файлов и путей - вот и облом. Физ расположение - это вы перегнули. только на идеальных НЕДЕФРАГМЕНТИРОВАННЫХ дисках протянет, но это бывает только на CD\DVD (их легче поломать и под загигалку )
Функция возвращает всю структуру расположения файлов на сколько мне известно. Распарсить структуру и перезаписать все что надо. Нормальный вайперы делают это именно на низком уровне . + никогда не помешает научиться работать с ФС на низком уровне 2 0verbreaK У нас как бы демократия - охота мне вот я и читаю. Для меня это как БАШ орг А ваще чувак молодец. Психолог. Там пол блога он срется сам с собой под разными никами провоцируя не просвященных на флуд и провакационные посты выявляющие человеческую "суЧность". Если человек не такой как все то на него нападают как собаки! ЭВИЛ жив! Хотя и жжет сцуко не по детски
А почему именно лутчше всего напрямую содержимое кластеров тереть,а не просто писать мусор в файл ведь во 2м случае ОС вроде как сам должна тот мусор в кластеры позапихивать.В чем прикол?
потому что если ты будешь тереть информацию средствами ОС и если ФС журналируемая то ОС все же кое-что сохранит, хотя бы сам факт удаления. вероятно ты хотел сказать "фрагментации", но она тут все равно ни при чем.
ты хоть прочитал то что я писал? Журналируемая ФС сохранит факт удаления и имя удаленного файла. А это есть информация, которой быть не должно.