`

[原]VC实现重启路由器

阅读更多

[标题]:[原]VC实现重启路由器
[时间]:2009-5-28
[摘要]:使用VC发送一个HTTP请求给路由器,实现重启TP-LINK路由器功能。
[关键字]:TP-LINK,Basic Authorization,Base64,GET,HTTP
[环境]:TP-LINK TL-R402M SOHO 宽带路由器 , VC6 , HttpFox,Firebug
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys

[正文]:
    在浏览器里输入地址:192.168.1.1,它会弹出一个窗口, 要求输入密码。这是因为服务器要求HTTP Basic access authentication(http://en.wikipedia.org/wiki/Basic_access_authentication)。输入用户名和密码就可以进入路由器管理界面了,点击"重启路由器"按键即可重启路由器。如何编程实现向路由器发送重启的请求?


 
    (1)、打开Windows命令行,将以下命令粘贴到命令行里(注意,最后有一个空行)。

telnet 192.168.1.1 80
GET / HTTP/1.1
Host:192.168.1.1

    服务器会返回如下信息:

HTTP/1.1 401 N/A
Server: TP-LINK Router
Connection: close
WWW-Authenticate: Basic realm="TP-LINK SOHO Router R402M"
Content-Type: text/html

Web Server Error Report:<HR>
                            <H1>Server Error: 401 N/A</H1>
<P><HR><H2>Access denied</H2><P><P><HR><H1>/userRpm/index.htm</H1><P><HR>please
mail problems to support@tp-link.com.cn

    路由器会返回状态码:401。这说明,本次访问是未经授权的,服务器拒绝了。同时,还可以看到:WWW-Authenticate: Basic realm="TP-LINK SOHO Router R402M",这说明路由器确实需要Basic验证。


    (2)、再使用Firebug和Httpfox分析出点击"重启路由器"时,浏览器向路由器发送的请求。发现,主要请求内容如下:

GET /userRpm/SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7 HTTP/1.1
Host:192.168.1.1
Authorization:Basic YWRtaW46YWRtaW4=

    其中,Authorization请求头的内容中,"Basic"表示"Basic authorization验证" ;"YWRtaW46YWRtaW4="是使用Base64编码后的用户名和密码,解密后是"admin:admin"。使用Base64编码有两个目的:a、使用户名和密码不能直接被肉眼识别;b、使传送的内容中无非法字符,即使用户名或密码中有不适于直接使用HTTP协议传送的字符,使用Base64编码后,就符合了协议要求。Base64能被轻易解密,所以不能依赖它来实现安全的访问控制。

    同样,也可以自己在命令行输入以下内容,实现以上的HTTP请求,从而实现重启路由器功能(最后有一个空行):

telnet 192.168.1.1 80
GET /userRpm/SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7 HTTP/1.1
Host:192.168.1.1
Authorization:Basic YWRtaW46YWRtaW4=

    (3)、用VC6发送GET请求:

void CUtil::RestartRouter(CString& strHost)
{
    CInternetSession session("Winty's Session");
    CHttpFile* pHttpFile;
    //路由器要求Basic Authorization:用户名:admin,密码:admin
    CString strHeaders = _T("Authorization:Basic YWRtaW46YWRtaW4="); // 请求头
    
    try
    {
        INTERNET_PORT nPort; //端口
        CString strRelativeRequestURL;
        nPort = 80;
        strRelativeRequestURL = "/userRpm/SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7";
        
        CHttpConnection* pServer = session.GetHttpConnection(strHost, nPort);
        
        pHttpFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,strRelativeRequestURL);
        pHttpFile->AddRequestHeaders(strHeaders);
        pHttpFile->SendRequest();
        
        //判断请求是否成功
        DWORD dwStatusCode;
        BOOL bSuccess;
        bSuccess = pHttpFile->QueryInfoStatusCode( dwStatusCode );
        CString strMsg;
        strMsg.Format("登陆失败! 错误信息:HttpStatusCode=%d" , dwStatusCode);
        if(!bSuccess || !(dwStatusCode>=200 && dwStatusCode<300)){
            AfxMessageBox(strMsg);
        }
    }
    catch(CException* e)
    {
        pHttpFile = NULL;
        throw;
    }
    pHttpFile->Close();
    delete pHttpFile;

    session.Close();
}

    调用函数:RestartRouter("192.168.1.1");,即可实现重启路由器功能。

[参考资料]:
Basic access authentication :http://en.wikipedia.org/wiki/Basic_access_authentication

原创作品,转载请注明出处。
作者:Winty (wintys@gmail.com)
博客:http://www.blogjava.net/wintys

 

  • 大小: 62.4 KB
分享到:
评论

相关推荐

    VC实现重启路由器.pdf

    综上,VC实现重启路由器的过程涉及到HTTP协议、认证机制、Base64编码、路由器管理接口以及编程实现网络请求的技术。通过理解和运用这些知识点,开发者可以构建自己的程序来自动化控制路由器的某些功能。然而,为了...

    修改mac地址 vc2005

    MAC地址是每个网络设备(如网卡、路由器等)在全球范围内的唯一标识,通常由6个16进制数组成,分为两部分,前24位代表制造商,后24位由制造商分配给设备。在某些情况下,用户可能需要更改MAC地址,比如在测试环境中...

    路由工具BreeEnter包

    这个包包含了两个不同内核版本的BreedEnter,即BreedEnter-VC80-XP.zip,分别对应不同的系统环境或路由器型号。在本文中,我们将深入探讨BreeEnter的核心功能、使用方法以及如何通过固件下载地址获取相关资源。 ...

    20款最流行ADSL猫设置方法.

    - 提交设置并重启路由器,最后在电脑上设置IP地址和DNS服务器。 3. **阿尔卡特SPEED TOUCH 515路由设置**: - 电脑的TCP/IP设置中,IP地址设为192.168.1.1(或1-253中的其他地址),子网掩码255.255.255.0,网关...

    中兴ZXDSL831路由设置方法.doc

    中兴ZXDSL831是一款常见的ADSL宽带路由器,用于实现多台设备的共享上网。本文将详细介绍如何设置这款路由器,确保所有终端都能顺利接入互联网。 首先,进行硬件连接。将ADSL Modem通过穿插网线(交叉线)连接到...

    hg553说明文档

    默认情况下,LLC协议(LLC Protocol)通常会被选中,VC复选框(VC checkbox)也应保持选中状态。完成这些设置后,点击“下一步(Next)”继续。 #### 四、PPP认证设置 在“PPPUsername and Password”页面,分别输入ISP...

    EX交换机配置手册

    - **3.1.1 重新启动**:重启交换机以排除某些故障。 - **3.1.2 关闭**:关闭交换机。 - **3.2 配置备份和恢复** - **3.2.1 配置备份**:定期备份配置文件。 - **3.2.2 配置恢复**:在故障时恢复配置。 - **3.3 ...

    MAC 地址修改器

    MAC地址,全称为Media Access Control Address,是网络设备如网卡、路由器等在网络通信中用于唯一标识物理接口的硬件地址。在局域网中,MAC地址是设备在数据链路层进行通信的基础,通常由6个字节(48位)组成,分为...

    入门学习Linux常用必会60个命令实例详解doc/txt

    虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6 。 例如,用户登录后,按一下“Alt+ F2”键,用户就可以看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按“Alt+...

Global site tag (gtag.js) - Google Analytics