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