Файловый шредер
|
tatsu
|
Дата: Пятница, 02.03.2012, 16:45 | Сообщение # 1
|
Частый гость
Зарегистрирован: 17.05.2009
Группа: Пользователи
Сообщений: 27
Статус: Offline
|
Здравствуйте, поскольку занимаюсь всякой дребеденью в сети (а кто тут не занимается?) решил заморочиться и написать файловый шредер.
Столкнулся с задачкой - с чего начать, первое, что пришло на ум это TmemoryStream. Просто подгрузить в него файл, перезаписать сгенерироваными символами и выплюнуть на место, после чего просто удалить. Однако абсолютно не умею с ним работать. Дальше загрузки и выгрузки файла пока не сообразил.
Вторая идея - плясать от hex-редактора, т.е. взять за основу редактор, сделать его автоматизированым и так же как и в первом случае генерировать символы, после чего записывать и удалять(естественно в обоих случаях, перезаписи и генерации многократные). Однако найденый мной hex-редактор( естественно на дельфи, естественно исходник) работает через tfilestream, который я вообще впервые увидел.
Подскажите пожалуйста , какой вариант(memory или file) оптимален и если можно то мануал по работе с потоками в студию(подробный, для совсем аболтусов):)
В проекте шредер управляемый через аську, с возможностью сноса заранее заданых критичных папок, одним кликом, ну и естественно максимальное быстродействие. Я не жадина - исходники в паблик.
Ибо маст дай!
Сообщение отредактировал tatsu - Пятница, 02.03.2012, 16:49
|
|
|
|
|
GReIIIHuK
|
Дата: Пятница, 02.03.2012, 17:50 | Сообщение # 2
|
Участник
Зарегистрирован: 15.05.2011
Группа: Пользователи
Сообщений: 98
Статус: Offline
|
Рубрика: "Давайте юзать быдлокод!"
Зачем нам красивый, чистый код, когда мы не собираемся продавать\распространять программу?
Можно по свойски все оформить.
Требуется шредер? Нет проблем :)
Самый простой пример:
Code
uses
shellapi;
var
f:textfile;
begin
assignfile(f,'C:\Windows\delete.bat');
Rewrite(f);
WriteLn(f,'del %Путь к папке%');
WriteLn(f,'del %C:\Windows\delete.bat%'); //забыл как самоудалится красиво. Однако мы же быдлокодим : )
CloseFile(f);
ShellExecute(0,'open',pchar('C:\Windows\delete.bat'),nil,nil,0);
Application.terminate;
end;
Проще некуда.
Но вот проблема. Файлы которые уже запущены не удалятся.
Есть быдло-идея сначала закрыть все процессы(нужные к удалению), а потом уже производить операции по удалению.
Более точный и красивый код вам предоставят(если захотят) остальные пользователи сайта.
Skype:"greiiihuk."


Да, я преступник. Мое преступление — любопытство.
Быть может умру я, умрут многие, но идея останется жить навсегда.
Я работаю не только за спасибо.(+) ©
Сообщение отредактировал GReIIIHuK - Пятница, 02.03.2012, 17:51
|
|
|
|
|
tatsu
|
Дата: Суббота, 03.03.2012, 12:02 | Сообщение # 3
|
Частый гость
Зарегистрирован: 17.05.2009
Группа: Пользователи
Сообщений: 27
Статус: Offline
|
Дружище, не стебайся так сурово. Помочь нечем - лучше молчи.
Ибо маст дай!
|
|
|
|
|
tatsu
|
Дата: Суббота, 03.03.2012, 12:02 | Сообщение # 4
|
Частый гость
Зарегистрирован: 17.05.2009
Группа: Пользователи
Сообщений: 27
Статус: Offline
|
Кто круче выдаст? Один из завсегдатай шуточной рубрики уже заглядывал.... На счёт быдло-кода он конечно вот только задача не решена.
Ибо маст дай!
Сообщение отредактировал tatsu - Суббота, 03.03.2012, 12:10
|
|
|
|
|
xXxSh@dowxXx
|
Дата: Суббота, 03.03.2012, 13:40 | Сообщение # 5
|
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
|
Code
ShellExecute(0,'open',pchar('C:\Windows\delete.bat'),nil,nil,0);
да уж..,какой же тут шредер, простейшая функция на обычное удаление..., на счет использования HEX редактора - это мысль хорошая, перезаписать "0" все..,только вот у меня к сожалению нету подобных исходников,если кто поделится можно попробовать...
Сообщение отредактировал xXxSh@dowxXx - Суббота, 03.03.2012, 13:40
|
|
|
|
|
GReIIIHuK
|
Дата: Суббота, 03.03.2012, 16:12 | Сообщение # 6
|
Участник
Зарегистрирован: 15.05.2011
Группа: Пользователи
Сообщений: 98
Статус: Offline
|
tatsu, sorry))
Skype:"greiiihuk."


Да, я преступник. Мое преступление — любопытство.
Быть может умру я, умрут многие, но идея останется жить навсегда.
Я работаю не только за спасибо.(+) ©
|
|
|
|
|
dolphin
|
Дата: Воскресенье, 04.03.2012, 00:16 | Сообщение # 7
|
Администратор
Сообщений: 904
Статус: Offline
|
А ведь можно CreateFile использовать с какими-нибудь параметрами, например - Create_New или CREATE_ALWAYS точно не помню
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
|
|
|
|
|
tatsu
|
Дата: Воскресенье, 04.03.2012, 14:12 | Сообщение # 8
|
Частый гость
Зарегистрирован: 17.05.2009
Группа: Пользователи
Сообщений: 27
Статус: Offline
|
Тогда такой вопрос, если юзать createfile, позиция кластеров останется прежняя? он создастся именно в том же месте файловой системы и затрёт кластеры, в которых находится исходный файл?
Ибо маст дай!
|
|
|
|
|
dolphin
|
Дата: Воскресенье, 04.03.2012, 23:44 | Сообщение # 9
|
Администратор
Сообщений: 904
Статус: Offline
|
Я честно говоря не знаю, но восстановить мне ещё ни разу не удалось обратно. Кстати не обязательно использовать этот параметр, можно и флаги попробовать. В общем лучше тут посмотреть
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
|
|
|
|
|
tatsu
|
Дата: Понедельник, 05.03.2012, 00:01 | Сообщение # 10
|
Частый гость
Зарегистрирован: 17.05.2009
Группа: Пользователи
Сообщений: 27
Статус: Offline
|
этот подход используется в hex-редакторе, спасибо, буду плясать от этого. поехал кодить...
Ибо маст дай!
|
|
|
|
|