Linha de comando reiniciando o ponto de acesso D-Link DWL-2100AP

2

Eu uso o navegador da Web Lynx do SSH remoto (por isso tenho sem GUI ) para entrar na interface da web de alguns pontos de acesso e roteador.

Funciona bem com alguns modelos Ovislink e Buffalo que testei, mas não mostra informações na tela ao tentar navegar para dois modelos D-Link. Autenticação deve ser o primeiro passo em ambos os dispositivos, mas o Lynx não me pede isso. O modelo OvisLink não pede senha, mas o Buffalo o faz, e o Lynx solicita OK como deve.

Caso para D-Link DWL-2100AP :

 DWL-2100AP

[Blank lines here]

Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
  Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.
 H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

Caso para D-Link DAP-2310 :

 REFRESH(0 sec): http://192.168.1.231/index.php

[Blank lines here]

Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
  Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.
 H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

Esta é a primeira tela da GUI (o navegador exibe uma janela de credenciais separada ) para o modelo DWL-2100AP (mais antigo):

EesteéoD-LinkDAP-2310(credenciaisdentrodapáginadaweb):

ExisteumcaminhoparaoLynxacessaressasinterfaces?

Maistestes:

  • Adicionando-auth=ID:PASSWDaocomandolynxIP,comosmesmosresultados.

Maisdadossobreasinterfaces:

  • ParecequeosdoisdispositivosusamJava.

EsteéoHTMLinicial,obtidocomcurl,queoDWL-2100APpareceenviar:

<html><head><scriptsrc="jsMain.js"> </script>
<title>DWL-2100AP</title></head>

<script language='JavaScript'>
document.cookie = 'RpWebID=3c26d7c1';
</script>
<script language='JavaScript'>
function JumpToHmain(){location.replace('/html/HomeWizard.html');}window.setTimeout('JumpToHmain()',1);</script>

Iniciando a página da Web para o DWL-2100AP (após inserir as credenciais):

http://IPAddress/html/HomeWizard.html

Se eu tentar fazer o download com o curl (seja com -u username:password ou não):

<html>
<head>
<title>Object Not Found</title></head><body>
<h1>Object Not Found</h1>The requested URL '/html/HomeWizard.html' was not found on the RomPager server.<p>Return to <A HREF="">last page</A><p>
</body></html>

Iniciando a página da web para o DAP-2310 (solicitando a página de credenciais):

http://IPAddress/login.php

Tentativa de reinicializar o DWL-2100AP via WGet (URL direto):

    luis@Fresoncio:~$ wget http://admin:[email protected]/Forms/RESET_Switch
 converted 'http://admin:[email protected]/Forms/RESET_Switch?FlagForReboot=' (ANSI_X3.4-1968) -> 'http://admin:[email protected]/Forms/RESET_Switch?FlagForReboot=' (UTF-8)
    --2016-06-07 00:46:42--  http://admin:*password*@192.168.1.232/Forms/RESET_Switch?FlagForReboot=
    Connecting to 192.168.1.232:80... connected.
    HTTP request sent, awaiting response... 303 See Other
    Location: http://192.168.1.232/html/HomeWizard.html [following]
    converted 'http://192.168.1.232/html/HomeWizard.html' (ANSI_X3.4-1968) -> 'http://192.168.1.232/html/HomeWizard.html' (UTF-8)
    --2016-06-07 00:46:42--  http://192.168.1.232/html/HomeWizard.html
    Reusing existing connection to 192.168.1.232:80.
    HTTP request sent, awaiting response... 404 Not Found
    2016-06-07 00:46:42 ERROR 404: Not Found.

O Lynx não relata qualquer necessidade de aceitar cookies ao navegar para o DWL-2100AP.

A captura WireShark / TCPDump para a tentativa de reinicialização mostra um GET para http://192.168.1.232/html/HomeWizard.html com a descrição Authorization: Basic XXXXXXXXXX e logo abaixo de Credentials: admin:MyEditedPassword . Eu acho que isso poderia ser codificação Base64.

... e depois tento o WGet com --post-data para RpWebId=3c268b4c e FlagForReboot=&Submit=+Restart+ :

~$ wget 192.168.1.232/Forms/RESET_Switch -post-data='RpWebId=3c268b4c' --post-data='FlagForReboot=&Submit=+Restart+'
converted 'http://192.168.1.232/Forms/RESET_Switch' (ANSI_X3.4-1968) -> 'http://192.168.1.232/Forms/RESET_Switch' (UTF-8)
--2016-06-07 10:29:25--  http://192.168.1.232/Forms/RESET_Switch
Connecting to 192.168.1.232:80... connected.
HTTP request sent, awaiting response... 303 See Other
Location: http://192.168.1.232/html/HomeWizard.html [following]
converted 'http://192.168.1.232/html/HomeWizard.html' (ANSI_X3.4-1968) -> 'http://192.168.1.232/html/HomeWizard.html' (UTF-8)
--2016-06-07 10:29:25--  http://192.168.1.232/html/HomeWizard.html
Reusing existing connection to 192.168.1.232:80.
HTTP request sent, awaiting response... 404 Not Found
2016-06-07 10:29:25 ERROR 404: Not Found.

Esta é a captura para o momento do login:

GET /html/HomeWizard.html HTTP/1.1
Host: 192.168.1.232
User-Agent: Mozilla/5.0 (X11; Linux armv7l; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.6.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.1.232/
Cookie: RpWebID=3c267896
Connection: keep-alive
Authorization: Basic YWRtaWAAAAAhQXBpYQ==

A parte da senha é a parte final YWRta... , terminando em Q== (O AAAAA é meu, para ocultar a senha real). Se eu fizer echo YWRtaWAAAAAhQXBpYQ== | base64 --decode , o shell me dará admin:MyPassword .

Esta é a página do dispositivo de reinicialização:

Estaéminhatentativa(vejaarespostadoJigglyNaga)paraacessarapáginadodispositivodereinicializaçãoviaCURLsemenviaroFlagForRebootdata:

$IP_ADDRESS=192.168.1.232$curl-b"$COOKIE" -u "admin:MySecretPassword" $IP_ADDRESS/html/MntRestartSystem.html
<html><head>... etc

E este enviando os dados FlagForReboot (eu juro que eles são os mesmos):

$ IP_ADDRESS=192.168.1.232
$ curl -b "$COOKIE" -u "admin:MySecretPassword" --data "FlagForReboot=&Submit=+Restart+" $IP_ADDRESS/html/MntRestartSystem.html
<html><head>
<title>DWL-2100AP</title><meta HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1">
<LINK REL=stylesheet TYPE="text/css" HREF="web_style.css">
<script language="JavaScript" src="jsMain.js"></script>
<script language="JavaScript">

function ShowMessage(s){
    //  alert("Switch is rebooting and Web will be disconnected!");
  var Msg='Device will reboot and web will be disconnected! Continue?';
  if(confirm(Msg))
  {
    return true;
  }
  else
    return false;
}
</script>
<style type="text/css">
font{
font-family:"Arial";
font-size:10pt;
}
</style>
</head><body BGCOLOR=#FFFFFF leftmargin="0" topmargin="0" onLoad="Change_Device_Name()">
<table width="75%" border="0" cellspacing="0" cellpadding="0" align=center>
  <tr>
    <td><div align=center><img id="img_logo" src="" width="765" height="95"></div></td></tr><tr>
    <td><table width=765 border=0 cellpadding=0 cellspacing=0 align=center>
        <tr>
          <td rowspan=9 width="20" background="/Images/down_01.gif">&nbsp; </td><td rowspan=2 width="133"> <img id="img_ap" src="" width=133 height=75></td><td rowspan=2 width="25" background="/Images/down_03.jpg">&nbsp; </td><td width="21"> <img src="/Images/tools_04.jpg" width=21 height=49></td><td width="522"> <img src="/Images/tools_over_05.jpg" width=522 height=49 usemap="#MapMap" border="0"></td><td width="19"> <img src="/Images/tools_06.jpg" width=19 height=49></td><td width="25" background="/Images/down_11.gif">&nbsp; </td></tr><tr>
          <td width="21" background="/Images/down_14.gif">&nbsp; </td><td rowspan=8 width="522" valign=top>
<FORM METHOD="POST" ACTION="/Forms/RESET_Switch"><INPUT TYPE="HIDDEN" NAME="FlagForReboot" VALUE="" id="FlagForReboot">              <table width="100%" border="0" height="100">
                 <tr >
                  <td colspan=2 align=left height="24" bordercolorlight="#FFFFFF" bordercolordark="#000000"><b><font face=Arial color=#8bacb1 size=2>
                    System Settings</font> </b></td></tr><tr>
          <td align=left height="20" width=200>
            <font face=Arial size=2> Apply Settings and Restart</font>
           </td><td><INPUT TYPE="SUBMIT" NAME="Submit" VALUE=" Restart " onClick="return ShowMessage()">            </td></tr></table></form><FORM METHOD="POST" ACTION="/Forms/RESTORE_Switch"><INPUT TYPE="HIDDEN" NAME="FlagForReboot" VALUE="" id="FlagForReboot">              <table width="100%" border="0" height="110">

        <tr>
                  <td align=left height="25" width=200>
                        <font face=Arial size=2>  Restore factory settings  </font>
                  </td><td><INPUT TYPE="SUBMIT" NAME="Submit" VALUE=" Restore " onClick="return ShowMessage()">                   </td></tr><tr>
<td height=20 colspan=2>
<div align=right><a href=/html/help_tools.html#02 target=_blank><img src=/Images/help_p.jpg width=36 height=52 border=0></a></div></td></tr></table></form></td><td width="19"> <img src="/Images/down_10.jpg" width=19 height=26></td><td width="25" background="/Images/down_11.gif">&nbsp; </td></tr><tr>
          <td class="style1" width="133" height="57"  align=center onClick="javascript:Link('MgtUserAccount.html')">Admin</td><td width="25" background="/Images/down_03.jpg" height="42">&nbsp; </td><td width="21" background="/Images/down_14.gif" height="42">&nbsp; </td><td width="19" background="/Images/down_40.gif" height="42">&nbsp; </td><td width="25" background="/Images/down_11.gif" height="42">&nbsp; </td></tr><tr>
          <td class="style2"  width="133" height="57" valign=middle align=center onClick="javascript:Link('MntRestartSystem.html')">System</td><td width="25" background="/Images/down_03.jpg">&nbsp; </td><td width="21" background="/Images/down_14.gif">&nbsp; </td><td width="19" background="/Images/down_40.gif">&nbsp; </td><td width="25" background="/Images/down_11.gif">&nbsp; </td></tr><tr>
          <td class="style1"  width="133" height="57" valign=middle align=center onClick="javascript:Link('MntUpdateFirmware.html?1')">Firmware</td><td width="25" background="/Images/down_03.jpg">&nbsp; </td><td width="21" background="/Images/down_14.gif">&nbsp; </td><td width="19" background="/Images/down_40.gif">&nbsp; </td><td width="25" background="/Images/down_11.gif">&nbsp; </td></tr><tr>
          <td class="style1"  width="133" height="57" valign=middle align=center onClick="javascript:Link('MntConfigurationFile.html?0,0,0,0,0,0,0,0,0')">Cfg File</td><td width="25" background="/Images/down_03.jpg" height="6">&nbsp; </td><td width="21" background="/Images/down_14.gif" height="6">&nbsp; </td><td width="19" background="/Images/down_40.gif" height="6">&nbsp; </td><td width="25" background="/Images/down_11.gif" height="6">&nbsp; </td></tr>        <tr>
          <td width="133" height="57" valign=middle align=center  background="/Images/down_37.gif">&nbsp;</td><td width="25" background="/Images/down_03.jpg">&nbsp;</td><td width="21" background="/Images/down_14.gif">&nbsp; </td><td width="19" background="/Images/down_40.gif">&nbsp; </td><td width="25" background="/Images/down_11.gif">&nbsp; </td></tr>        <tr>
          <td width="133" background="/Images/down_37.gif">&nbsp;</td><td width="25" background="/Images/down_03.jpg">&nbsp;</td><td width="21" background="/Images/down_14.gif">&nbsp; </td><td width="19" background="/Images/down_40.gif">&nbsp; </td><td width="25" background="/Images/down_11.gif">&nbsp; </td></tr>
        <tr>
          <td width="133" background="/Images/down_37.gif">&nbsp;</td><td width="25" background="/Images/down_03.jpg">&nbsp;</td><td width="21" background="/Images/down_14.gif">&nbsp; </td><td width="19" background="/Images/down_40.gif">&nbsp; </td><td width="25" background="/Images/down_11.gif">&nbsp; </td></tr><tr>
          <td colspan=6 rowspan=2> <img src="/Images/down_43.jpg" width=740 height=44></td><td width="25"> <img src="/Images/down_45.gif" width="25" height="17"></td></tr><tr>
          <td width="25"> <img src="/Images/down_44.gif" width=25 height=27></td></tr></table></td></tr></table><map id="MapMap" name="MapMap">
  <area shape="rect" coords="17,17,82,45" href="/html/HomeWizard.html" target="_self"/>
  <area shape="rect" coords="109,18,205,42" href="/html/CfgWLanParam.html?1" target="_self"/>
  <area shape="rect" coords="232,19,289,46" href="/html/MgtUserAccount.html" target="_self"/>
  <area shape="rect" coords="346,18,405,45" href="/html/DeviceInfo.html" target="_self"/>
  <area shape="rect" coords="455,18,501,47" href="/html/help_men.html" target="_self"/>
</map>

</body></html>

E esta é a sua captura TCPDump (a parte que parece relevante) para esse momento, como mostrado na WireShark:

Frame 4: 517 bytes on wire (4136 bits), 517 bytes captured (4136 bits)
Ethernet II, Src: 00:00:00_00:09:77 (00:00:00:00:09:77), Dst: D-LinkIn_24:f7:6d (c8:d3:a3:24:f7:6d)
Internet Protocol Version 4, Src: 192.168.1.99, Dst: 192.168.1.232
Transmission Control Protocol, Src Port: 44981 (44981), Dst Port: 80 (80), Seq: 1, Ack: 1, Len: 451
Hypertext Transfer Protocol
    GET /html/MntRestartSystem.html HTTP/1.1\r\n
    Host: 192.168.1.232\r\n
    User-Agent: Mozilla/5.0 (X11; Linux armv7l; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.6.0\r\n
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
    Accept-Language: en-US,en;q=0.5\r\n
    Accept-Encoding: gzip, deflate\r\n
    Referer: http://192.168.1.232/html/MgtUserAccount.html\r\n
    Cookie: RpWebID=3c26e560\r\n
    Authorization: Basic YWRtaW46VmlhQXBpYQ==\r\n
    Connection: keep-alive\r\n
    \r\n
    [Full request URI: http://192.168.1.232/html/MntRestartSystem.html]
    [HTTP request 1/2]
    [Response in frame: 15]
    [Next request in frame: 17]

0000   47 45 54 20 2f 68 74 6d 6c 2f 4d 6e 74 52 65 73  GET /html/MntRes
0010   74 61 72 74 53 79 73 74 65 6d 2e 68 74 6d 6c 20  tartSystem.html 
0020   48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20  HTTP/1.1..Host: 
0030   31 39 32 2e 31 36 38 2e 31 2e 32 33 32 0d 0a 55  192.168.1.232..U
0040   73 65 72 2d 41 67 65 6e 74 3a 20 4d 6f 7a 69 6c  ser-Agent: Mozil
0050   6c 61 2f 35 2e 30 20 28 58 31 31 3b 20 4c 69 6e  la/5.0 (X11; Lin
0060   75 78 20 61 72 6d 76 37 6c 3b 20 72 76 3a 33 38  ux armv7l; rv:38
0070   2e 30 29 20 47 65 63 6b 6f 2f 32 30 31 30 30 31  .0) Gecko/201001
0080   30 31 20 46 69 72 65 66 6f 78 2f 33 38 2e 30 20  01 Firefox/38.0 
0090   49 63 65 77 65 61 73 65 6c 2f 33 38 2e 36 2e 30  Iceweasel/38.6.0
00a0   0d 0a 41 63 63 65 70 74 3a 20 74 65 78 74 2f 68  ..Accept: text/h
00b0   74 6d 6c 2c 61 70 70 6c 69 63 61 74 69 6f 6e 2f  tml,application/
00c0   78 68 74 6d 6c 2b 78 6d 6c 2c 61 70 70 6c 69 63  xhtml+xml,applic
00d0   61 74 69 6f 6e 2f 78 6d 6c 3b 71 3d 30 2e 39 2c  ation/xml;q=0.9,
00e0   2a 2f 2a 3b 71 3d 30 2e 38 0d 0a 41 63 63 65 70  */*;q=0.8..Accep
00f0   74 2d 4c 61 6e 67 75 61 67 65 3a 20 65 6e 2d 55  t-Language: en-U
0100   53 2c 65 6e 3b 71 3d 30 2e 35 0d 0a 41 63 63 65  S,en;q=0.5..Acce
0110   70 74 2d 45 6e 63 6f 64 69 6e 67 3a 20 67 7a 69  pt-Encoding: gzi
0120   70 2c 20 64 65 66 6c 61 74 65 0d 0a 52 65 66 65  p, deflate..Refe
0130   72 65 72 3a 20 68 74 74 70 3a 2f 2f 31 39 32 2e  rer: http://192.
0140   31 36 38 2e 31 2e 32 33 32 2f 68 74 6d 6c 2f 4d  168.1.232/html/M
0150   67 74 55 73 65 72 41 63 63 6f 75 6e 74 2e 68 74  gtUserAccount.ht
0160   6d 6c 0d 0a 43 6f 6f 6b 69 65 3a 20 52 70 57 65  ml..Cookie: RpWe
0170   62 49 44 3d 33 63 32 36 65 35 36 30 0d 0a 41 75  bID=3c26e560..Au
0180   74 68 6f 72 69 7a 61 74 69 6f 6e 3a 20 42 61 73  thorization: Bas
0190   69 63 20 59 57 52 74 61 57 34 36 56 6d 6c 68 51  ic YWRtaW46VmlhQ
01a0   58 42 70 59 51 3d 3d 0d 0a 43 6f 6e 6e 65 63 74  XBpYQ==..Connect
01b0   69 6f 6e 3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d  ion: keep-alive.
01c0   0a 0d 0a                                         ...

Agora tentando "pressionar" esse botão Reset via CURL (mesmo resultado:

$ curl -v -u "admin:MySecretPassword" -b "$COOKIE" --data "FlagForReboot=&Submit=+Restart+" $IP_ADDRESS/Forms/RESET_Switch
* Hostname was NOT found in DNS cache
*   Trying 192.168.1.232...
* Connected to 192.168.1.232 (192.168.1.232) port 80 (#0)
* Server auth using Basic with user 'admin'
> POST /Forms/RESET_Switch HTTP/1.1
> Authorization: Basic YWRtaW46VmlhQXBpYQ==
> User-Agent: curl/7.38.0
> Host: 192.168.1.232
> Accept: */*
> Cookie: RpWebID=3c270622
> Content-Length: 31
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 31 out of 31 bytes
< HTTP/1.1 303 See Other
< Location: http://192.168.1.232/html/HomeWizard.html
< Content-Length: 0
* Server Allegro-Software-RomPager/4.06 is not blacklisted
< Server: Allegro-Software-RomPager/4.06
<
* Connection #0 to host 192.168.1.232 left intact

Um resultado diferente com a opção -L para CURL:

$ curl -b "$COOKIE" --data "FlagForReboot=&Submit=+Restart+" $IP_ADDRESS/Forms/RESET_Switch -L
<html><head>
<title>DWL-2100AP</title><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
<link rel=stylesheet type="text/css" href="web_style.css">
<script type="text/javascript" src="jsMain.js"></script>
<script type="text/javascript" src="WizardScript.js"></script>
<style type="text/css">
font{
font-family:"Arial";
font-size:10pt;
}

td.h30{
height:30px;
}

td.h60{
height:60px;
}
td.h80{
height:80px;
}
</style>
</head><body bgcolor="#ffffff" topmargin="0" onLoad="InitialSettings()">
<table border="0" align=center cellpadding="0" cellspacing="0">
        <tr>
                <td><img id="img_logo" src="" alt=""></td></tr><tr>
                <td><table border="0" align=center cellspacing="0" cellpadding="0">
                                <tr><!-- row 1 -->
                                        <td width=20 rowspan=3 background="/Images/down_01.gif"></td><td width=133 rowspan=2><img id="img_ap" src="" border="0" alt=""/></td><td width=25 background="/Images/down_03.jpg"></td><td width=21 background="/Images/down_04.jpg"></td><td width=522><img src="/Images/down_05.jpg" border="0" usemap="#MapMap"/></td><td width=19 background="/Images/down_06.jpg"></td><td width=25 background="/Images/down_11.gif"></td></tr><tr><!-- row 2 -->
                                        <td background="/Images/down_03.jpg"></td><td height="26" background="/Images/down_14.gif"></td><td rowspan=3 valign=top>

<FORM METHOD="POST" ACTION="/Forms/FormWizard"><table border="0" width="100%" align=center cellpadding="0" cellspacing="0">
<tr>
<td colspan=2>
<!-- Beginning of Contents -->
<table width=510 border="0">
  <tr>
    <td colspan=2>
      <font color="#8bacb1"><b>Setup Wizard</b></font>
     <INPUT TYPE="HIDDEN" NAME="Run_Wizard" VALUE="0" id="Run_Wizard">    </td></tr>  <tr>
    <td height="150">
      <b><font>
      The <span id="APName0"></span>&nbsp;is a <span id="Device_Type"></span>.
      The setup wizard will guide you through the configuration of the
      <span id="APName1"></span>. The <span id="APName2"></span>'s easy
      setup will allow you to have wireless access within minutes.
      Please follow the setup wizard step by step to configure
      the <span id="APName3"></span>.
      </font></b>
    </td></tr><tr>
    <td>&nbsp;</td></tr><tr>
    <td align=center>
<INPUT TYPE="SUBMIT" NAME="Submit" VALUE=" Run Wizard " id="Run_Wizard" onClick="formSubmit(1)" align=right>    </td></tr><tr>
    <td align=right>
      <a href="help_home.html#01" target=_blank>
      <img src="/Images/help_p.jpg" width="36" height="52" border="0">
      </a></td></tr>

</table><!-- End of Contents -->
</td></tr></table></form>
                                        </td><td background="/Images/down_10.jpg"></td><td background="/Images/down_11.gif"></td></tr><tr><!-- row 3 -->
                                        <td valign=top background="/Images/down_37.gif">
                                                <table width="100%" border="0" cellspacing="0" cellpadding="0" align=center>
                                                        <tr>
                                                                <td class="style2" align=center valign=middle onClick="javascript:Link('HomeWizard.html')">Wizard</td></tr><tr>
                                                                <td class="style1" align=center valign=middle onClick="javascript:Link('Wireless.html?1')">Wireless</td></tr><tr>
                                                                <td class="style1" align=center valign=middle onClick="javascript:Link('CfgIpSetup.html')">LAN</td></tr></table></td><td background="/Images/down_03.jpg"></td><td background="/Images/down_14.gif"></td><td background="/Images/down_40.gif"></td><td background="/Images/down_11.gif"></td></tr><tr><!-- row 4 -->
                                        <td height="150" background="/Images/down_37.gif"></td><td background="/Images/down_37.gif"></td><td background="/Images/down_03.jpg"></td><td background="/Images/down_14.gif"></td><td background="/Images/down_40.gif"></td><td background="/Images/down_11.gif"></td></tr><tr><!-- row 5 -->
                                        <td colspan=6 rowspan=2><img src="/Images/down_43.jpg" border="0"></td><td><img src="/Images/down_45.gif" border="0"></td></tr><tr>
                                        <td><img src="/Images/down_44.gif" border="0"></td></tr></table></td></tr></table><map id="MapMap" name="MapMap">
  <area shape="rect" coords="17,17,82,45" href="/html/HomeWizard.html" target="_self"/>
  <area shape="rect" coords="109,18,205,42" href="/html/CfgWLanParam.html?1" target="_self"/>
  <area shape="rect" coords="232,19,289,46" href="/html/MgtUserAccount.html" target="_self"/>
  <area shape="rect" coords="346,18,405,45" href="/html/DeviceInfo.html" target="_self"/>
  <area shape="rect" coords="455,18,501,47" href="/html/help_men.html" target="_self"/>
</map>
<script type="text/javascript">
var Run_Wizard = document.getElementById("Run_Wizard");
var NewPwd = document.getElementById("NewPwd");
var CfmNewPwd = document.getElementById("CfmNewPwd");
var channel = document.getElementById("channel");
var WizardRootSsid = document.getElementById("WizardRootSsid");
var no = document.getElementById("No");
var wpa = document.getElementById("wpa");
var psk = document.getElementById("psk");
var keytype    = document.getElementById("Wizard_KeyType");
var KeySize1 = document.getElementById("KeySize1");
var KeySize2 = document.getElementById("KeySize2");
var KeySize3 = document.getElementById("KeySize3");
var key = document.getElementById("Key");
var passphrase = document.getElementById("passphrase");
var cipher     = document.getElementById("cipher");
var groupkey   = document.getElementById("groupkey");
</script>

</body></html>

Depois disso, haverá uma tela de confirmação para reinicializações:

Posso adicionar mais dados a pedidos.

    
por Sopalajo de Arrierez 06.06.2016 / 16:56

2 respostas

2

Infelizmente, muitos roteadores atualmente exigem javascript, o qual o lynx não oferece suporte.

Mas como um método alternativo, você deve ser capaz de usar túneis no ssh e usar um navegador real para acessá-lo. Por exemplo, se você encapsula a porta 8888 para a porta 80 no IP do seu roteador (por exemplo, 192.168.1.1:80). Depois de estabelecer sua conexão ssh, em sua máquina local, em um navegador 'real' (um gráfico com js), navegue até http://127.0.0.1:8888 para acessar a página normal do roteador remoto. Isso está usando seu host ssh remoto como proxy.

Com navegadores como firefox , você pode facilmente configurá-lo para usar um proxy SOCKS e permitir que o SSH configure o proxy SOCKS para você e use de forma transparente o host remoto como seu proxy de rede, incluindo qualquer que seja o acesso da rede local ao roteador. Veja como configurar o SOCKS com seu cliente SSH específico (geralmente chamado de encaminhamento de porta dinâmico) e como configurar a conectividade de proxy para firefox em sua caixa de diálogo de conectividade. Então, eventualmente, você deve poder dizer firefox para usar um proxy SOCKS em 127.0.0.1:1080 (por exemplo)

(O Lynx pode dar um passo adiante se você tentou um URL como http://admin:[email protected] , mas eu suspeito que você ainda vai encontrar js problemas em breve)

    
por 06.06.2016 / 17:15
2

Muitos roteadores retornam páginas que lynx e outros navegadores baseados em terminal não podem manipular.

Você pode escrever um script de raspagem da Web para fazer isso. Expandindo o este howto de scraping da web , mas sem entrar em tantos detalhes quanto o Guia da cURL para scripts HTTP , minha abordagem é a seguinte:

1 - Registre o que um navegador (com suporte) faz

Você pode usar uma ferramenta de captura de pacotes como tcpdump (1) ou wireshark , ou algo no navegador, como Ferramentas para Desenvolvedores do Firefox . O tcpdump / wireshark captura tudo, no formato pcap portátil, mas ilegível; os dados no navegador podem ser mais fáceis de seguir, especialmente se as respostas forem compactadas. Também salve cópias das páginas individuais visitadas, elas podem ser necessárias para o passo 3.

2 - Envie as mesmas solicitações da linha de comando

Para cada solicitação HTTP produzida na etapa 1, descubra como enviá-la com curl ou wget e, em seguida, coloque-a no script.

Você pode precisar procurar as descrições dos cabeçalhos na especificação HTTP e verificar as diversas opções no < href="https://curl.haxx.se/docs/manpage.html"> enrolar ou wget , mas se tudo mais falhar, ambas as ferramentas permitem que você envie qualquer cabeçalho desejado ( curl -H "Name: Value" , wget --header "Name: Value" ). Confirme o que está sendo enviado e recebido com curl -v / wget -d . Se uma solicitação não resultar na mesma resposta da etapa 1, você provavelmente perdeu alguma coisa.

Se você estiver trabalhando em uma das solicitações posteriores por algum tempo, é possível que o site / dispositivo tenha expirado ou invalidado sua sessão e você primeiro precise repetir algumas solicitações anteriores (como fazer login).

Se, após o envio da solicitação final, você obtiver o resultado desejado - excelente, avance para a etapa 4.

3 - Atualize qualquer coisa que mude

Se a solicitação HTTP exatamente igual não der a mesma resposta, alguma parte da solicitação não será mais válida e precisará ser alterada. Repita a etapa 1, registrando a mesma operação novamente e observe as diferenças nas solicitações e respostas.

Tudo nos pedidos vem de em algum lugar . Você tem que rastrear a origem de cada parte que muda. Veja todas as respostas HTTP (páginas HTML completas, JavaScript, CSS, snippets de JSON) para descobrir de onde vem a string. Os nomes das páginas e os parâmetros GET / POST vêm principalmente do HTML e Cookies dos cabeçalhos HTTP, mas o JavaScript pode definir qualquer um deles.

Depois de rastreá-lo, você precisa encontrar automaticamente o novo valor no futuro: extrair os tokens imprevisíveis da página recuperada com sed / awk / seu idioma de processamento de texto escolhido; Gere timestamps atuais com date +"format" .

4 - (Opcional) Remova as partes desnecessárias

O navegador provavelmente gerou dezenas de solicitações, e é improvável que você precise enviar todas elas para obter o mesmo resultado final. Por exemplo, as imagens e CSS não são de interesse se você não estiver exibindo a página. Tente remover todas as solicitações que não pareçam importantes e veja se o script ainda funciona. Com a experiência, você perceberá quais solicitações são opcionais.

Usando as informações que você postou até agora, fazer login no DAP-2310 vai precisar de uma solicitação POST como

wget $IP_ADDRESS/login.php --save-cookies cookies.txt --keep-session-cookies \
  --post-data "ACTION_POST=login&f_date=MM/DD/YY&f_time=HH:MM:SS&LOGIN_USER=username&LOGIN_PASSWD=password&login=+Login+"

(usando a data e hora atuais, formatadas por date (1) ), mas ainda pode haver mais etapas envolvido.

As capturas de pacotes DWL-2100AP mostram que está usando Autenticação básica HTTP , combinada com um cookie personalizado definido por JavaScript. Para isso, você precisará copiar o cookie da primeira página antes de fazer login:

# obtain the cookie
COOKIE=$(curl $IP_ADDRESS |grep "cookie = "|cut -d"'" -f2)

# log in
curl -b "$COOKIE" --anyauth -u "admin:$PASSWORD" $IP_ADDRESS/html/HomeWizard.html 

# fetch the restart form; may not be necessary
curl -b "$COOKIE" $IP_ADDRESS/html/MntRestartSystem.html

# send the restart request
curl -b "$COOKIE" --data "FlagForReboot=&Submit=+Restart+" $IP_ADDRESS/Forms/RESET_Switch
    
por 06.06.2016 / 18:30

Tags