欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

X为光猫与威斯汀

X为光猫与威斯汀


一天,跟几个老哥在一起吃饭的时候吹B,说现在的人技术不咋样,但是心还很大,培训三个月出来就敢要求月薪上W,其中一个哥们接话,他们有个技术问题,卡了2个月还没搞定(我叫他A哥吧),我说“你们P大点的公司,有毛的个技术问题啊,还卡这么长时间。哥给你搞定,到时候吃顿饭就成”。A哥一听来精神了,“对啊,我TM咋把你这尊大神忘记了。这事你要给搞定了,威斯汀一日游”。“成交”

晚上,A哥发来了关于那个技术问题的具体情况-----获取X为光猫(http://b2b.hc360.com/supplyself/621259462.html)光电转换口的速度。NMB,不知道我没有接触过嵌入式相关的啊,这些设备上的事情,我知道个球啊。但是话都说出去了,脸打太快也疼不是。硬着头皮上,看看再说。

整理下思路,如果不能上网,那还有球的个转换速度啊。好,连到光纤上,哈哈,果然不能上网,开森啊。电话A哥,这玩意在我这里不好使啊。Balabala~~,你改几个参数,在XXXXXXX,我发个文档给你VLANLOID? 这TM是啥啊?啥啊?照着做,看看再说。不行我就找个借口开溜。

 

唉,什么意思。居然连上了,我X啊。

 

继续整理思路,进入web管理页面看看,说不定有呢,那就简单了撒。OK,进入web管理,果然让我找到了一个。马上电话A哥,“明天威斯汀?看QQ消息”

 

“这个不对啊,而且有几个问题:1、需要登录才能获取。但事实上每个地区或者每个用户密码可能是不一样的,不能批量进行;2、这个是收发包数量,不是速度啊。哥,再帮忙看看呗,威斯汀在等着你

好像也对。那就看看这个鬼是怎么来的吧。

1.1 通过查看当前页面源代码,发现最终嵌入的页面地址为http://172.16.1.1/html/amp/opticinfo/opticinfo.asp,输入浏览器验证,没问题,通过。

1.2  通过telnet登录光猫。进入光猫shell,如下:

 

用户名root,密码 admin  

 

X,这什么意思?电话A哥,得到还要su,然后shell才能真正进入linuxshell环境。照做,别说话。

 

哥,你是我亲哥。

直接搜索上面的文件名,看看是个什么鬼。

 

第一个就是,看来离威斯汀不远了。

 

经过一番折腾之后,来到这里。

 var PONTxPackets = '<%HW_WEB_GetParaByDomainName(InternetGatewayDevice.WANDevice.1.X_HW_PonInterface.Stats.PacketsReceived);%>';

经人指点,应该是用的goahead的一个定制版本做的web容器。表示的意思是调用函数HW_WEB_GetParaByDomainName,并将InternetGatewayDevice.WANDevice.1.X_HW_PonInterface.Stats.PacketsReceived作为传输传递给刚才的函数。

1.3 那就看看这个web容器的函数实现,先得找到文件啊。

 

2066,错不了。

 

/var/web是个文件夹,无关,不管。/bin/web是个elf文件,应该错不了。Tftp下来看看吧。本地tftp走起。感谢Ph.Jounin

拿到webIDA有请。然并卵啊,web里面没有那函数。威斯汀啊,这TM什么情况啊。

经请教高人得知,应该是其他库提供了这个函数,web进程加载了相应的库,看看依赖的库呢。

 

尼玛,这只是其中一部分啊。硬着头皮一个一个看吧。找啊找,终于在libhw_web_dll.so库中找到HW_WEB_GetParaByDomainName函数。

F5的代码大体如下:

int __fastcall HW_WEB_GetParaByDomainName(int a1, int a2, int a3)

{

  if ( webEjArgs(v3, v4, "%s", &v14) <= 0 )  <-----------格式化参数

  {......  }

  else

  {

    v6 = j_HW_WEB_GetNodeName((int)&s, v14); <----------拆分参数 这里是按照.进行拆分

    if ( v6 ){......  }

    else

    {

      v8 = HW_CFG_InitAttList((int)&v18);          <--------关键函数1

      if ( v8 ) {...... }

      else

      {

        v7 = HW_WEB_GetNodeValue((int)&v18, v14, (int)&v16);   <-------关键函数2

        if ( v7 ){...... }

        else

        {

          v7 = HW_WEB_GetNodeValueByName((int)&v15, (int)&s, (int)&v18);  <---------关键函数3

          if ( v7 ){......}

          else

          {

            v9 = HW_WEB_GetEscapeLength(v15);   <----------编码函数,猜测是获取到数据之后编码为指定的格式

            v10 = HW_OS_MemMallocSet(v9, 0, 10, 1);

......

          }

        }

      }

    }

  }

  return v7;

}



1.4 libhw_smp_web_base.so库中找到函数 HW_WEB_GetNodeValueF5如下

int __fastcall HW_WEB_GetNodeValue(int a1, int a2, int a3)

{

...

      else

      {

        v8 = HW_CFG_GetCmdPro(10, (int)&s, (int)&v16, (int)&v15);  <------------关键函数4

        HW_CFG_FreeAttList(&v15);

        if ( v8 )

          HW_PROC_DBG_LastWord_1("hw_web_productapi.c", 2337, v8);

      }  }  }

  return v8;

}



1.5 libhw_smp_cfg.so库中发现关键函数4---HW_CFG_GetCmdPro F5大概如下

int __fastcall HW_CFG_GetCmdPro_0(int a1, int a2, int a3, int a4, int a5)

{

      HW_OS_MemSet_S((int)&v32);

      v15 = j_HW_CFG_InitAttList((int)&v32);

......

          v12 = j_HW_CFG_CheckParaList(v8, v9, (int)&v32);

......

            v12 = j_HW_CFG_CheckParaList(v8, a5, (int)&v32);

......

              v12 = j_HW_CFG_GetKeyLen(v6, (int)&v30);

......

......

                    v12 = j_HW_CFG_AppendPara2Buffer(v9, &v32, &v33, *(_DWORD *)v6);

......

                          v12 = HW_XML_DBTTreeGetObjAttrValue(v8, v7, 16, v28);

......

                          else if ( j_HW_CFG_GetObjApiCmo(v28, (int)"GetApi", (int)&v31) )

.....

                            v12 = sub_4954(v28);

......

                              v12 = j_HW_CFG_SetRpcMsgHead(v8, v28, (int)&v34);

......

                                j_HW_CFG_SPEC_GetCallWaitTime(0, v23, v24);

                                v25 = HW_MSG_RpcCall((int)&v34, v31, v8, v18);

                                ......

  }

  return v12;

}


这里可以看到,最后走了一个RPC调用。谁提供的RPC服务?我TM哪知道啊。行,第一回合结束。


注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功