捋清网页点击设备信息与开发板的交互
1.首先在网页上点击终端信息,观察下响应数据,得知是cmd为 309:
{"cmd":309,"method":"GET","language":"CN","sessionId":"3f9a92480ee63b79bacf41287a45fa9fd94a91fe7f0e13694f42044d95bbda50"}:
"success":true,"cmd":309,"dataList":[{"name":"DESKTOP-IA8O5ME","accessMode":"2","ip":"192.168.10.182","mac":"f8:75:a4:65:60:a2","upload_rate":"64","download_rate":"158","up_limit":"0","dow_limit":"0","ban_network":"0"}]}
这次我主要看下 upload_rate以及 download_rate 字段, 即上传和下载速率。
2.在代码仓库的apps/tozed/tzproc/web/cgi-bin 路径下搜索 309:
cd ~/mtk7561/apps/tozed/tzproc/web/cgi-bin
grep "309" -nr
并在source insight 打开http.h 找到 309,可知 LAN_LIST_INFO。
再次打开 http.c 找到 LAN_LIST_INFO ,可知是get_lan_list_info()。
3.在cgi-bin 目录下搜索 get_lan_list_info ,可知是在web_network.c 文件中有定义:
打开web_network.c 文件,看下该函数具体做了些内容:
4.由上面分析可知,主要调用 mtk_info lan,那就查看下mtk_info 程序内容:
find ./ -name “mtk_info”
然而 … 这次好像失败了!😥…
这可能是find暂时失效了,管不着因为那是远程服务机的问题,那就用windows 的文件搜索吧,可知它在tz_info目录下:
5.在该目录下找到该程序是怎么生成的,此时就得看makefile ,好了找了了 wan_info.c 和 common.c。
在wan_info.c 中找到 main函数 ,并找到 传参 lan 执行的函数为 get_lan_list_info()
在common.h 中找到 up_rate 和down_rate 两个成员,此次目的就为了修改下这两个成员
准备:
(1)strtok函数,字符串分割函数,详情参考博客
char *strtok(char str[], const char *delim);
demo:
// 例1
#include <string.h>
void main()
{
char s[] = "192.168.0.26";
char *delim = ".";
char *p;
printf("%s ", strtok(s, delim));
while((p = strtok(NULL, delim)))
printf("%s ", p);
printf("\n");
}
(2)strstr函数,返回str2在str1首次出现的地址位置
char *strstr(char *str1, char *str2);
(3)access 函数,判断文件存在或者文件是否具有某个权限,成功返回0,失败返回-1。
int access(const char* pathname, int mode);
F_OK 值为0,判断文件是否存在
X_OK 值为1,判断对文件是可执行权限
W_OK 值为2,判断对文件是否有写权限
R_OK 值为4,判断对文件是否有读权限
注:后三种可以使用或“|”的方式,一起使用,如W_OK|R_OK