编译路由器
Ⅰ 能帮我编译一个路由器tp wr720 v3的openwrt固件么
推荐去路由器官网直接下载。或者去论坛看一下
Ⅱ 怎么反编译D-Link路由器固件程序并发现它的后门
基于上面的字符信息可以看出,这个/bin/webs二进制程序是一个修改版的thttpd,提供路由器管理员界面操作功能。看起来是经过了台湾明泰科技(D-Link的一个子公司)的修改。他们甚至很有心计的将他们很多自定义的函数名都辅以“alpha”前缀:
明泰科技的自定义函数
这个alpha_auth_check函数看起来很有意思!
这个函数被很多地方调用,最明显的一个是来自alpha_httpd_parse_request函数:
调用alpha_auth_check函数
我们可以看到alpha_auth_check函数接收一个参数(是存放在寄存器$s2里);如果alpha_auth_check返回-1(0xFFFFFFFF),程序将会跳到alpha_httpd_parse_request的结尾处,否则,它将继续处理请求。
寄存器$s2在被alpha_auth_check函数使用前的一些操作代码显示,它是一个指向一个数据结构体的指针,里面有一个char*指针,会指向从HTTP请求里接收到的各种数据;比如HTTP头信息和请求地址URL:
$s2是一个指向一个数据结构体的指针
我们现在可以模拟出alpha_auth_check函数和数据结构体的大概样子:
struct http_request_t
{
char unknown[0xB8];
char *url; // At offset 0xB8 into the data structure
};
int alpha_auth_check(struct http_request_t *request);
alpha_auth_check本身是一个非常简单的函数。它会针对http_request_t结构体里的一些指针进行字符串strcmp比较操作,然后调用check_login函数,实际上就是身份验证检查。如果一旦有字符串比较成功或check_login成功,它会返回1;否者,它会重定向浏览器到登录页,返回-1;
alpha_auth_check函数代码片段
这些字符串比较过程看起来非常有趣。它们提取请求的URL地址(在http_request_t数据结构体的偏移量0xB8处),检查它们是否含有字符串“graphic/” 或 “public/”。这些都是位于路由器的Web目录下的公开子目录,如果请求地址包含这样的字符串,这些请求就可以不经身份认证就能执行。
然而,这最后一个strcmp却是相当的吸引眼球:
alpha_auth_check函数中一个非常有趣的字符串比较
这个操作是将http_request_t结构体中偏移量0xD0的字符串指针和字符串“xmlset_roodkcableoj28840ybtide”比较,如果字符匹配,就会跳过check_login函数,alpha_auth_check操作返回1(认证通过)。
我在谷歌上搜索了一下“xmlset_roodkcableoj28840ybtide”字符串,只发现在一个俄罗斯论坛里提到过它,说这是一个在/bin/webs里一个“非常有趣”的一行。我非常同意。
那么,这个神秘的字符串究竟是和什么东西进行比较?如果回顾一下调用路径,我们会发现http_request_t结构体被传进了好几个函数:
事实证明,http_request_t结构体中处在偏移量 0xD0处的指针是由httpd_parse_request函数赋值的:
检查HTTP头信息中的User-Agent值
将http_request_t + 0xD0指针指向头信息User-Agent字符串
这代码实际上就是:
if(strstr(header, "User-Agent:") != NULL)
{
http_request_t->0xD0 = header + strlen("User-Agent:") + strspn(header, " \t");
}
知道了http_request_t偏移量0xD0处的指针指向User-Agent头信息,我们可以推测出alpha_auth_check函数的结构:
#define AUTH_OK 1
#define AUTH_FAIL -1
int alpha_auth_check(struct http_request_t *request)
{
if(strstr(request->url, "graphic/") ||
strstr(request->url, "public/") ||
strcmp(request->user_agent, "xmlset_roodkcableoj28840ybtide") == 0)
{
return AUTH_OK;
}
else
{
// These arguments are probably user/pass or session info
if(check_login(request->0xC, request->0xE0) != 0)
{
return AUTH_OK;
}
}
return AUTH_FAIL;
}
换句话说,如果浏览器的User-Agent值是 “xmlset_roodkcableoj28840ybtide”(不带引号),你就可以不经任何认证而能访问web控制界面,能够查看/修改路由器的 设置(下面是D-Link路由器(DI-524UP)的截图,我没有 DIR-100型号的,但DI-524UP型号使用的是相同的固件):
访问型号DI-524UP路由器的主界面
基于HTML页上的源代码信息和Shodan搜索结果,差不多可以得出这样的结论:下面的这些型号的D-Link路由器将会受到影响:
DIR-100
DI-524
DI-524UP
DI-604S
DI-604UP
DI-604+
TM-G5240
除此之外,几款Planex路由器显然也是用的同样的固件程序:
BRL-04UR
BRL-04CW
Ⅲ ubuntu下编译openwrt路由器需要配置多大
我这段时间在学习openwrt的编译,教程看了几十遍,设备是hg255d,我想自己为其编译一个固件,我的编译过程如下图所示(用的trunk版):
其他的选项都按默认,编译成功后,在trunk/bin/ramips/有如下文件
我通过TTL线把openwrt-ramips-rt305x-uImage.bin刷入成功后,启动如下所示
Ⅳ 路由器内核 用什么编写
tp-link 402具体用什么编写不清楚,但很多路由内核是用C++写的.
Ⅳ 路由器的固件能反编译吗
可以进行反编译。
路由器的固件通常存储在FLASH中,通常都是以xxx.bin格式的文件形式保存的。bin格式是一种二进制文件,存储的是路由器的机器码,通过反编译,可以将其还原为汇编码,以便进行分析。获取、反编译及分析固件通常按下列步骤:
获取路由器固件需要的环境
常见路由器的SPI FLASH编程器;
最好是用Winows 笔记本来登陆到ubuntu系统的台式机上的方式 ;
Windows 下的Putty、winhex、WinSCP软件工具;
TTL线、网线、万用表及烙铁,热风枪等工具和线材;
分析步骤
拆开对应的路由器设备的外壳;
查看路由器内部的的接口标识;
用万用表找到对应的地线GND标号;
通常为了调试或升级的方便,都会保留TTL引脚;
查看是否存在有TTL线的引脚或触点;
用准备好的TTL线连接路由器的TTL引脚或触点;
windows下用putty中的串口项打开对应的TTL线连接的串口;
查看是否有路由器启动的日志信息,如果有,请仔细分析;
等路由信息启动完毕后,看看是否有终端跳出来,是否有登陆窗口跳出;
如果有登陆窗口,但是无法输入,或者无法猜测出对应的用户名密码;
用热风枪或烙铁取下路由器上的存储FLASH芯片;
在Windows下用编程器提前存储在FLASH芯片的全部固件;
用WinSCP工具将提取出的固件上传到ubuntu系统中;
在ubuntu系统中安装对应的固件分析工具(firmware-mod-kit、binwalk、lzma、squashfs-tools等);
用这些分析工具进行分析,分析出来后,解压对应的数据包,提前对应的关键性数据进行分析。
按以上步骤可以实现对路由器的分析。
Ⅵ lede 编译 路由器固件 包没有
可以进行反编译。
路由器的固件通常存储在FLASH中,通常都是以 xxx.bin格式的文件形式保存的。bin格式是一种二进制文件,存储的是路由器的机器码,通过反编译,可以将其还原为汇编码,以便进行分析。获取、反编译及分析固件通常按下列步骤:
获取路由器固件需要的环境
常见路由器的SPI FLASH编程器;
最好是用Winows 笔记本来登陆到ubuntu系统的台式机上的方式 ;
Windows 下的Putty、winhex、WinSCP软件工具;
TTL线、网线、万用表及烙铁,热风枪等工具和线材;
分析步骤
拆开对应的路由器设备的外壳;
查看路由器内部的的接口标识;
用万用表找到对应的地线GND标号;
通常为了调试或升级的方便,都会保留TTL引脚;
查看是否存在有TTL线的引脚或触点;
用准备好的TTL线连接路由器的TTL引脚或触点;
windows下用putty中的串口项打开对应的TTL线连接的串口;
查看是否有路由器启动的日志信息,如果有,请仔细分析;
等路由信息启动完毕后,看看是否有终端跳出来,是否有登陆窗口跳出;
如果有登陆窗口,但是无法输入,或者无法猜测出对应的用户名密码;
用热风枪或烙铁取下路由器上的存储FLASH芯片;
在Windows下用编程器提前存储在FLASH芯片的全部固件;
用WinSCP工具将提取出的固件上传到ubuntu系统中;
在ubuntu系统中安装对应的固件分析工具(firmware-mod-kit、binwalk、lzma、squashfs-tools等);
用这些分析工具进行分析,分析出来后,解压对应的数据包,提前对应的关键性数据进行分析。
按以上步骤可以实现对路由器的分析。
Ⅶ 怎么对路由器的固件进行修改类似破解一样! 涉及程序编译吗
改WIFI密码的步骤是:
1.打开浏览器,在地址栏输入路由器地址:192.168.1.1。(以你个人路由器地址为准,一般说明书上会有,无限路由器上面也会标识)这样就可以进入路由器设置页面。
2.进去后会弹出对话框,要输入用户名和密码,无线路由器上面会标识,一般用户名和密码都是:admin
3.输入用户名和密码后会进入路由器的设置页面,然后点击,无线设置 下的 无线安全设置 。
4.进入无线网络安全设置之后,选择WPA-PSK/WPA2-PSK这一选项,在PSK密码里面输入自己想好的密码,就是给自己家WIFI设置的密码就可以了。
5.输入密码之后点击下面的保存键进行保存,之后就大功告成了。
6.保存之后,需要重启一下路由器就可以了!
Ⅷ 请问841nv8编译OP固件,用哪个路由器型号
选择TP-LINK TL-WR841N/ND,会编译所有的841,然后选择自己想要的即可。v8用的是这个文件mach-tl-wr841n-v8.c
Ⅸ 如何编译符合自己路由器的的OpenWrt固件
懂的不需要问;如不懂的,建议找对应路由器主芯片的open固件,自己研究一下;欢迎追问~!
Ⅹ 如何为一个新路由器编译openwrt
Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx、trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到,连接地址为 OpenWrt官方网站。这些编译好的映像文件是基于默认的配置设置,且只针对受支持的平台或设备的。因此,为什么要打造一个自己的映像文件,理由有以下四点:
您想拥有一个个性化的配置OpenWrt(彰显个性,在朋友圈子里显摆显摆,开个玩笑);
您想在实验性的平台上测试OpenWrt;
您参与测试或参与开发OpenWrt的工作;
或者,最简单的目的就是为了保持自己的Openwrt为最新版本;
若想实现上述目的,其实很简单,按下述文字即可成功编译出一个您的Openwrt来。
准备工作
在开始编译Openwrt之前需要您做些准备工作;与其他编译过程一样,类似的编译工具和编译环境是必不可少的:
一个构建OpenWrt映像的系统平台,简单说就是准备一个操作系统(比如Ubuntu、Debian等);
确保安装了所需的依赖关系库, (在debian系统中就是安装各种需要的软件包)
OpenWrt源代码副本
首先, 开机登陆到支持编译Openwrt的操作系统(废话了)。实体机或者虚拟机(Vmware 或者 Qemu)里的操作系统都行,这里推荐使用Linux系统。 bsd和mac osx系统也可以编,但不推荐,且未验证是否可编译成功。下文假定您使用的是Debian操作系统,使用 apt-get 来管理包. 替代的选择是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。
第二步, 就是安装所需要的各种软件包, 包括编译器,解压工具,特定的库等. 这些工作可以简单的通过键入以下命令 (通常需要root 或者是 sudo 权限),以root权限安装下列软件包(可能并不完整,会有提示,提示缺少即装就可以了):