Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.11.10;
Скачать: CL | DM;

Вниз

Надежное удаление с последующим форматированием   Найти похожие ветки 

 
alumium   (2013-02-07 23:21) [0]

Доброго времени суток, форумчане. Вынужден попросить у вас помощи в написании программы для надежного удаления информации.
Её суть: выделяешь checkbox"ами диски, которые нужно очистить. Программа заполняет кластеры тома нулями или случайными байтами (Т.е. не перезапись по 1 файлу, а как можно быстрее. Побайтовый перебор скорее всего медленный.). После этого быстрое форматирование тома.
Сторонние утилиты не интересуют.
Буду надеяться на вашу помощь. Спасибо.


 
Rouse_ ©   (2013-02-07 23:35) [1]

Вопрос-то какой?


 
Danko   (2013-02-07 23:43) [2]

uses ShellAPI;
 
ShellExecute (Handle, nil, "format d: /u", nil, nil, SW_RESTORE);

(образец)


 
Никита32   (2013-02-07 23:50) [3]

http://www.delphisources.ru/pages/faq/base/format_disk.html


 
Никита32   (2013-02-07 23:52) [4]

http://forum.vingrad.ru/faq/topic-155950.html


 
alumium   (2013-02-08 00:55) [5]

Вопрос, как быстро (блоками) перезаписать весь том, чтобы он был не годен, а именно даже после восстановления файлов, они оказались "с нулями внутри".


 
palva ©   (2013-02-08 01:48) [6]

Открыть физически том при помощи CreateFile (должны быть на это права) и расписать. Сам пробовал однажды для чтения нескольких блогов (MBR).
http://www.vsokovikov.narod.ru/New_MSDN_API/Menage_files/fn_createfile.htm


 
KilkennyCat ©   (2013-02-08 03:53) [7]


> alumium

а смысл?
информация все равно восстановима. либо дорогостоящими технологиями, либо дешевым утюгом.


 
brother ©   (2013-02-08 04:18) [8]

чтож всех на скрытность то тянет?
мои наброски, разбирайся!
function TProgramForm.SafeRemoval(drive: char): boolean;
var
sh : SHFILEOPSTRUCT;

FreeBytesAvailableToCaller: TLargeInteger;
FreeSize: TLargeInteger;
TotalSize: TLargeInteger;

f: file;
NumWritten: Integer;
Buf: pointer;
bufSize: Integer;
BytesWrite: TLargeInteger;
begin
result:= False;
StopSafeRemoval:= False;

//  ShowMessage("Удаление всего содержимого диска, это может занять длительное время, ждите...");

// Удаляем ВСЕ содержимое с устройства!
AddLog("Удаление всего содержимого диска, ждите...");
sh.Wnd := Application.Handle;
sh.wFunc := FO_DELETE;
sh.pFrom := PAnsiChar(drive + ":\*.*");
sh.pTo := nil;
sh.fFlags := FOF_NOCONFIRMATION + FOF_SILENT+ FOF_NOERRORUI;
sh.fAnyOperationsAborted := False;
sh.hNameMappings := nil;
sh.lpszProgressTitle := nil;
if SHFileOperation(sh) <> 0 then
begin
 AddLog("Не удалось(файлы/папки заняты другим приложением?)");
 //Exit;
end
else
  AddLog("Ok");

// узнаем кол-во свободного места на диске
if not GetDiskFreeSpaceEx(PChar(drive + ":\"), FreeBytesAvailableToCaller, Totalsize, @FreeSize) then
begin
  AddLog("Ошибка получения свободного места: " + GetLastErrorText);
  exit;
end
else
  AddLog("Свободное место на диске: " + IntToStr(FreeBytesAvailableToCaller) + " байт");

//  FreeBytesAvailableToCaller:= {1073741824;} 2147483648;

// Создаем файл с пустым содержимым по размеру всего диска
AddLog("Создание временного файла, ждите...");
BufSize := 1048576; // 1МБ
GetMem(buf, BufSize);
//Gauge1.MaxValue:= FreeBytesAvailableToCaller;
BytesWrite:= 0;
try
  assignfile(f, drive + ":\tmp.$$$");
  rewrite(f, 1);
  while (BytesWrite+bufSize <= FreeBytesAvailableToCaller) and (not StopSafeRemoval) do
  begin
    BlockWrite(f, Buf^, BufSize, NumWritten);
    Inc(BytesWrite, NumWritten);
//      Gauge1.Progress:= BytesWrite;
    application.ProcessMessages;
  end;
except
  FreeMem(Buf);
  CloseFile(f);
end;
if StopSafeRemoval then
begin
  AddLog("Отменено пользователем!");
  FreeMem(Buf);
  CloseFile(f);
  Exit;
end;
// если в конце не дозаписан хвост меньше bufSize дозапишем его
if BytesWrite < FreeBytesAvailableToCaller then
begin
  BufSize := FreeBytesAvailableToCaller-BytesWrite;
  FreeMem(Buf);
  GetMem(buf, BufSize);
  BlockWrite(f, Buf^, BufSize, NumWritten);
end;
FreeMem(Buf);
CloseFile(f);

AddLog("Ok");

{  if DeleteFile(drive + ":\tmp.$$$") then
  AddLog("Временный файл успешно удален")
else
begin
  AddLog("Ошибка удаления временного файла");
  exit;
end;}

result:= True;
end;



 
alumium   (2013-02-08 16:56) [9]

спасибо, друзья, пойду пробовать...


 
Rouse_ ©   (2013-02-08 22:49) [10]

Приведенный код для задачи не подойдет, он ориентируется на файловую систему, которую ты и хочешь убить. Решение задачи на самом деле достаточно простое, необходимо открыть раздел в RAW режиме и банально пройтись по нему рандомными буферами, желательно гаммированными. Как показывает практика 30 проходов обычно достаточно чтобы раздел не восстановился даже на экспертном оборудовании.


 
Rouse_ ©   (2013-02-08 22:51) [11]

ЗЫ: ну а потом конечно можно и отформатировать :)


 
Inovet ©   (2013-02-08 23:29) [12]

> [11] Rouse_ ©   (08.02.13 22:51)
> ЗЫ: ну а потом конечно можно и отформатировать :)

А сразу отформатировать?


 
Rouse_ ©   (2013-02-08 23:59) [13]


> А сразу отформатировать?

А что это даст, с учетом задачи от автора?


 
Макс Черных   (2013-02-09 03:50) [14]


> Программа заполняет кластеры тома нулями или случайными
> байтами (Т.е. не перезапись по 1 файлу, а как можно быстрее.
>  Побайтовый перебор скорее всего медленный.). После этого
> быстрое форматирование тома.

Какие то параграфы противоречивые. Полное форматирование и так все пропишет нулями. Зачем сначала мучиться писать тоже самое по сути, а потом делать "быстрое форматирование"?

Самый быстрый, надежный и легальный способ это гоблин с ружъем. Оный при опасности просто делает "случайный" выстрел прямо в винт. Это вовсе не шутка, а реалии 90х годов. :)
Это я к чему - прежде чем играть в шпионов надо бы определиться - от кого, собственно, прячемся. Часто для надежного сокрытия информации даже стирать все не надо. Гораздо хитрее проще и быстрее подменить, скажем, базу 1С другой, набитой всякой "важной" инфой, которая на деле - мусор. Ну, т.е. создать у того, кто будет искать полное впечатление того, что все что надо он типа нашел. И щас всех комерсов поимеет за водку паленую. Ага, щас, комерсы заранее мну денежку занесли, за кое какие фокусы. :) Расцвет демократии начала 90х, однако. :)

Так что, ИМХО, перед тем как думать как? надо определиться- зачем?


 
brother ©   (2013-02-09 07:14) [15]

> он ориентируется на файловую систему, которую ты и хочешь
> убить.

да хрен с ней! данные будут не восстановимы...


 
Rouse_ ©   (2013-02-09 09:37) [16]


> brother ©   (09.02.13 07:14) [15]
> да хрен с ней! данные будут не восстановимы...

Не факт


 
brother ©   (2013-02-09 10:39) [17]

все сектора с данными перезаписываем (кроме FS)? profit!


 
Rouse_ ©   (2013-02-09 11:01) [18]


> brother ©   (09.02.13 10:39) [17]
> все сектора с данными перезаписываем (кроме FS)? profit!

EnCase Forensic (ПО для СКТЭ уполномоченными экспертными организациями) не совсем согласен с данным утверждением :)


 
brother ©   (2013-02-09 11:03) [19]

можно ссылки? ибо имхо, 1 раза перезаписи достаточно


 
Rouse_ ©   (2013-02-09 11:07) [20]

Поиск по EnCase Forensic.
В нашей практике данное ПО помогло собрать доказательства на некоего товарища, распространявшего наше ПО (контрафактное есесно)
http://www.grandsmeta.ru/cat82/pages/id_52
Форматирование не помогло, хранение данных в DiskCript-е тоже.


 
Rouse_ ©   (2013-02-09 11:08) [21]

Ну а чтобы не быть фомой неверующим, возьми утилиту типа UnErase (детская поделка) и попробуй вытащить данные после форматирования. Даже она сможет немного но вытянуть, что уж говорить об экспертном комплексе.


 
brother ©   (2013-02-09 11:17) [22]

http://soft.sibnet.ru/soft/16096-encase-forensic/
почитал
Удаление и перезапись файлов не приводят к исчезновению всех уязвимых данных с жесткого диска. Стиранию должны подвергаться все секторы (составляющие кластер 512-байт сегменты), так как данные могут скрываться в самых неожиданных местах. Часто в последнем кластере большого файла находятся случайные данные, называемые заполнителями файлов (file slack). Когда на жестком диске записана последняя часть файла и данные не заполняют сектор целиком, он дополняется случайно выбранными данными, взятыми из памяти и называемыми заполнителями ОЗУ (RAM slack). Это может быть любая информация, сформированная, просматривавшаяся или преобразованная со времени последней загрузки компьютера. Остальные секторы, составляющие кластер, содержат остатки разных данных, ранее сохраненных в этом месте, которые называются заполнителями диска (drive slack). Многие программы безопасного удаления данных не способны должным образом стирать заполнители файлов, которые могут содержать массу конфиденциальной информации.
улыбнуло, ибо в идеале, что можно вытащить из 512-1 байт? ну итп...
копаться по остаткам перезаписанной инфы чтобы собрать менее приемлимую картину того, что там было? хм...
опять же не понимаю требование перезаписывать данные для безопастности дважды...

> хранение данных в DiskCript-е тоже.

постучали дубинками по голове и узнали пароль?)


 
brother ©   (2013-02-09 11:18) [23]

> возьми утилиту типа UnErase (детская поделка) и попробуй
> вытащить данные после форматирования. Даже она сможет немного
> но вытянуть, что уж говорить об экспертном комплексе.

ща на флеше потренеруемся...


 
brother ©   (2013-02-09 11:24) [24]

вообще, давно хотел провести подобный анализ, надо будет заняться на досуге...


 
brother ©   (2013-02-09 11:32) [25]

> После этого быстрое форматирование тома.

я даже знаю зачем это требование ;) дабы FS с нуля не городить)


 
Rouse_ ©   (2013-02-09 11:40) [26]


> brother ©   (09.02.13 11:17) [22]

Там очень интересный комплекс, у него есть режим считать текущие данные неактуальными, тогда он их исключает и показывает что там еще есть. Как это сделано я не знаю, но скорее на остаточной намагниченности + эвристика (имхо, ибо это вообще не моя область, может есть еще методы). Знаю что работает через собственную дровину напрямую с контроллером диска.


> постучали дубинками по голове и узнали пароль?)

терморектальный криптоанализ всегда эффективен :)
Но как было на самом деле - не в курсе.


 
brother ©   (2013-02-09 11:42) [27]

> но скорее на остаточной намагниченности

вот этого я не понимаю, как можно это прочитать, ведь при этом считаем, что один сектор содердит как бы двойные данные (что сейчас есть, и что были и остались в виде остаточной)


 
Rouse_ ©   (2013-02-09 11:45) [28]

А хрен его знает как. Знаю что дорожки широкие и запись данных не всегда идет по ее центру (головка плавает). Если заставить диск не крутится как бешеный, а четко прокручивать блины на нужный градус и четко считать все содержимое каждой дорожки через точное позиционирование головки, имхо можно много чего вытащить.


 
brother ©   (2013-02-09 12:16) [29]

> Знаю что дорожки широкие и запись данных не всегда идет
> по ее центру (головка плавает).

опять же, значит местами сможем что-то прочесть, и опять копаться в мусоре


 
brother ©   (2013-02-09 12:33) [30]

После небольшого анализа:
1. Флешка с данными отформатирована полным форматированием (ФС до и после формата одинаковые - НТФС)
2. Попытка восстановить данные спомощью Handy Recovery 5.5 - результат 0.
3. При просмотре диска через WinHex.16.3.SR-2 - видна ФС, остальное  забито нулями.
Предв. выводы:
1. При условии, что данные должны быть удалены с гарантией не восстановления, нужно использовать свои дрова работающие с контроллером диска напрямую + скорее всего вынимать блины дисков ид корпуса и ставить на спец стенд), ибо штатными средствами ОС достучаться до данных, возможно находящихся не в центре дорожки невозможно.
2. О какой программе (гарантирующей не восстановления данных) может идти речь, если все мы работаем через ОС?


 
Rouse_ ©   (2013-02-09 12:33) [31]


> местами сможем что-то прочесть

обычно этого достаточно


 
brother ©   (2013-02-09 12:37) [32]

Забыл главный вывод:
3. Удаление всех файлов и папок на устройстве и запись на него мусорного файла размером с объем накопителя достаточно, чтобы говорить о невосстановлении данных штатными средствами и утилитами
примечание: список старых имен файлов останется в ФС, но и хрен с ними)


 
Rouse_ ©   (2013-02-09 12:57) [33]


> чтобы говорить о невосстановлении данных штатными средствами
> и утилитами

дык про штатные средства никто и не говорил.


 
brother ©   (2013-02-09 12:58) [34]

а не штатные никто не озвучивал)


 
Rouse_ ©   (2013-02-09 13:04) [35]


> попросить у вас помощи в написании программы для надежного
> удаления информации.

Я думаю этого достаточно чтобы не рассматривать штатные средства :)
Собственно я весь свой спичь на базе данной фразы и строит :)


 
brother ©   (2013-02-09 13:08) [36]

тогда - термограната!


 
Макс Черных   (2013-02-09 15:37) [37]


> ща на флеше потренеруемся...

Как бы, между прочим, флэш и HDD несколько отличаются по физическому принципу хранения информации. По логическому тоже.


> А хрен его знает как. Знаю что дорожки широкие и запись
> данных не всегда идет по ее центру (головка плавает). Если
> заставить диск не крутится как бешеный, а четко прокручивать
> блины на нужный градус и четко считать все содержимое каждой
> дорожки через точное позиционирование головки, имхо можно
> много чего вытащить.

Саня, не позорь контору. :) Если блины не крутить, то ничего не прочитать, це же физика!
Там все проще, сигнал на блинах - аналоговый модулированный. Стирающей головки, как на магнитофонах нету. При перезаписи происходит перемагничивание магнитных доменов в месте текущего действия головки. Упрощенно - оное может как совпадать с тем что есть в данный момент, так и быть обратным. Управляя диском напрямую можно поиграть с настройками уровней компаратора для конкретного места. Т.е. именно за счет остаточной намагниченности прочитать то, что было до перезаписи.
Это долго, нудно, не 100%, но вполне возможно.


 
Rouse_ ©   (2013-02-09 16:21) [38]


> Макс Черных   (09.02.13 15:37) [37]

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


 
alumium   (2013-02-09 19:16) [39]

слушайте, а если просто пройтись быстрым форматированием из 1 фс в другую и в третью?


 
Rouse_ ©   (2013-02-09 19:17) [40]


> alumium   (09.02.13 19:16) [39]
> слушайте, а если просто пройтись быстрым форматированием
> из 1 фс в другую и в третью?

Заголовки потрешь и всего делов, причем только в начале диска.


 
brother ©   (2013-02-09 19:25) [41]

короче так:

http://citforum.ru/programming/delphi/disk_editor/
это поможет стереть ВСЕ с диска!

http://www.kansoftware.ru/?tid=1824
это отформатирует...

удачи!


 
brother ©   (2013-02-09 19:26) [42]

> флэш и HDD несколько отличаются по физическому принципу
> хранения информации. По логическому тоже.

я вкурсе, но для теста хватит...


 
alumium   (2013-02-09 19:27) [43]

еще писали что помогает переименование, создание пустого файла с прошлым именем, такого же размера, а затем удаление этих файлов? и все таки, как можно испортить том диска так, чтобы информация была повреждена при восстановлении?


 
Inovet ©   (2013-02-09 19:27) [44]

> [37] Макс Черных   (09.02.13 15:37)
> Т.е. именно за счет остаточной намагниченности прочитать
> то, что было до перезаписи.

Какое же там будет отношение сигнал/шум. Может, и можно хитрыми методами отфильтровать.


 
Inovet ©   (2013-02-09 19:28) [45]

> [39] alumium   (09.02.13 19:16)
> быстрым

При таком раскладе и полная перезапись не спасёт. Такая секретная информация?


 
alumium   (2013-02-09 19:29) [46]


> короче так:
>
> http://citforum.ru/programming/delphi/disk_editor/
> это поможет стереть ВСЕ с диска!
>
> http://www.kansoftware.ru/?tid=1824
> это отформатирует...
>
> удачи!
>
>


это действительно похоже на мою идею! спасибо, побежал пробовать!


 
brother ©   (2013-02-09 19:31) [47]

да я уже реализовывал подобное, работать будет)


 
alumium   (2013-02-09 19:34) [48]

Мне тут еще насоветовали метод Гутмана... есть идеи в его реализации на Delphi?


 
alumium   (2013-02-09 19:35) [49]


> brother ©   (09.02.13 19:31) [47]
> да я уже реализовывал подобное, работать будет)

если это действительно сработает, то твой ник действительно соответствует реальности, бро =)


 
Rouse_ ©   (2013-02-09 19:41) [50]


> alumium   (09.02.13 19:34) [48]
> Мне тут еще насоветовали метод Гутмана... есть идеи в его
> реализации на Delphi?

Я тебе про него еще тут говорил:

> Rouse_ ©   (08.02.13 22:49) [10]


 
Макс Черных   (2013-02-09 23:55) [51]


> Какое же там будет отношение сигнал/шум. Может, и можно
> хитрыми методами отфильтровать.

Такое же, как и обычно. Дело не в шуме вовсе. Вот раньше была широко распространена такая вещь как магнитофон. :) Нынче многие и не знают чего это такое. Так вот если взять в магнитофоне и оторвать стирающую голову, а потом записать чего, то он то запишет. Но при воспроизведении будет на фоне новой записи тихо слышно старую. HDD в своей аналоговой части - это тот же самый магнитофон без стирающей головы. Более того, если сравнивать то-же отношение сингал/шум, то в HDD оно гигантское, допотопный кассетник по шуму куда как лучше.
Но HDD оно по барабану ибо считанный аналог компарируется по некому адаптивному уровню, а цифирь гонится через проверку контрольной суммы. Не совпало - пороговый уровень будет меняться по определенному алгоритму и чтение будет повторяться.
У многих производителей винтов даже есть специальные технологические прошивки, дабы копаться в этих потрохах. И те, кому надо, все это имеют, и ПО для анализа и мощные компы/суперкомпы, и паяльники, кстати, тоже. :)


 
Inovet ©   (2013-02-10 00:21) [52]

> [51] Макс Черных   (09.02.13 23:55)

Под шумом я имел ввиду вновь записанный сигнал + остальной обычный шум.

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


 
Inovet ©   (2013-02-10 00:29) [53]

> [52] Inovet ©   (10.02.13 00:21)

На всяких дешёвых поделках вообще не заморачивались стирающей головкой - ставили постоянный магнит да и всё, сойдёт и так.


 
Макс Черных   (2013-02-10 03:08) [54]


> Ну и в магнитофонах было высокочастотное подмагничивание
> при записи, в цифровой записи, если можно так сказать,  
> подмагничивание и сигнал одно и то же.

Суть от этого никак не меняется. Разница только в кодировании информации, а модуляция ВЧ звуковым сигналом есть именно кодирование.
Если уж совсем по научному, то исходя из принципа сохранения информации, все что когда либо писалось на HDD где то есть. И даже если HDD в черную дыру закинуть - один хрен останется где-то.
Вот как эту инфу достать, это уже вопрос. Пока физика не знает. :)


 
Inovet ©   (2013-02-10 09:31) [55]

> [54] Макс Черных   (10.02.13 03:08)
> Вот как эту инфу достать, это уже вопрос. Пока физика не знает. :)

Ну да, по Второму закону термодинамики сигнал/шум возрастает с каждым действием. Даже, если локально уменьшили, значит где-то увеличили ещё больше.:)


 
Inovet ©   (2013-02-10 09:34) [56]

> [55] Inovet ©   (10.02.13 09:31)
> сигнал/шум

шум/сигнал тогда уж.


 
Anatoly Podgoretsky ©   (2013-02-10 10:00) [57]


> При таком раскладе и полная перезапись не спасёт. Такая
> секретная информация?

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



Страницы: 1 2 вся ветка

Текущий архив: 2013.11.10;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.008 c
15-1369324793
Rouse_
2013-05-23 19:59
2013.11.10
Ничего так замиксовали :)


11-1248521534
alex649
2009-07-25 15:32
2013.11.10
TKOLMemo - как отобразить текст в окне не с 1 строки


15-1369116738
vajo
2013-05-21 10:12
2013.11.10
Батарея для бесперебойника.


2-1359427812
Abcdef123
2013-01-29 06:50
2013.11.10
Ошибки компиляции при переводе проекта в XE3.


15-1369035927
Skyle
2013-05-20 11:45
2013.11.10
Вакансия "Программист Delphi". г. Новосибирск