freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

路由器固件编译入门
2020-03-31 20:13:53

0x01环境准备

1、本次使用开源的OPENWRT源码进行编译,OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。 同时,它还提供了100多个已编译好的软件,而且数量还在不断增加,它是一个从零开始编写的、功能齐全的、容易修改的路由器操作系统。

2、本次使用斐讯K3做为适配的路由器。

3、编译环境:使用 Ubuntu 64bit来作为固件编译环境,推荐 Ubuntu 18 LTS x64a)、

a)系统更新

sudo apt-get update

image

b)安装编译需要用基础环境执行如下命令

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib

要等一段时间安装完成

image.png

0x02固件编译

本次编译采用lede大佬的开源版本库https://github.com/coolsnowwolf/lede

1、克隆源码进入工作目录

1、使用

git clone https://github.com/coolsnowwolf/lede.git

命令下载好源代码,然后 cd lede 进入目录,编辑过程不用使用root账户,否则编译过程容易出错。

2、更新软件包

1、执行如下命令更新feeds(第三方包)

./scripts/feeds update -a

image.png

2、执行如下命令 安装feeds(第三方包)

./scripts/feeds install -a

image.png

3、配置固件菜单

make menuconfig

image.png

<*>,表示将软件包编译进固件,<M>,表示软件包会被编译,但不会编译进固件。<>,不选择。

选项 作用
Target System 目标设备芯片类型
Subtarget 目标子类型,一般是具体板子类型
Target Profile 针对不同路由器的版本再做的一个明确选项参数,一般默认即可
Target Images 生成的固件文件采用何种分区格式
Global build settings 编译时的一些全局参数,这些参数与Linux内核或GCC编译器相关
Advanced configuration options 高级选项参数,用于OpenWrt开发人员,一般用不上
Build the OpenWrt Image Builder 除了编译固件,再编译一个固件编译环境,可以分发给团队中的其他人使用。一般是厂商不想开放自己的全部源代码,给第三方合作伙伴提供这玩意
Build the OpenWrt SDK 产生OpenWrt SDK环境,就是另外一个开发环境
Build the OpenWrt based Toolchain 单独编译出OpenWrt的交叉编译工具
Image configuration 编译好的固件所附带的参数信息
Package features 一些软件包特性
Base system 基本系统命令软件包
Administration 高级管理命令软件包
Boot Loaders 引导程序,教学板不用固件附带,所以这里无选项
Development 开发用工具包
Firmware 不要被名字混淆了,这个的意思是,固件中是否带某些其他外围芯片的固件
Kernel modules 内核编译参数,这里的参数都来自芯片厂对内核的预设配置
Languages 编程语言软件包
Libraries 库软件包
LuCI OpenWrt下顶顶大名的LuCI界面包
Mail 电子邮件相关的软件包
Multimedia 多媒体软件包
Network 与网络相关的软件包
Sound 声音相关的软件包
Utilities 工具软件包
Video Streaming 视频流服务软件包

4、target system 选择

斐讯K3使用的ARM架构的Broadcom BCM4709C处理器所以选择Broadcom BCM47XX/53XX(ARM)

image.png

5、Target Profile选择

image.png

6、接下来要添加LUCI

路径为LUCI-collections-LUCI

LuCI 配置( web 网页管理程序): 
-LuCI —> 1. Collections —> luci 启用 LuCI 
-LuCI —> 3. Applications —> luci-app-commands 网页 Shell 
-LuCI —> 3. Applications —> luci-app-ddns 动态域名 
-LuCI —> 3. Applications —> luci-app-firewall 防 火 墙 
-LuCI —> 3. Applications —> luci-app-ntpc 时间同步服务器 
-LuCI —> 3. Applications —> luci-app-qos 上网管理 
-LuCI —> 3. Applications —> luci-app-samba 网络共享 
-LuCI —> 4. Themes —> luci-theme-bootstrap 默认主题

一下为我的自定义选择模块 

image.png

选上 frpc  

image.png

qos 

image.png

这里选几个也许能用得着  

image.png

Themes(主题)

image.png

Protocols(协议)  

image.png

以下为详细配置说明(实际使用时请按需选择,否则会因固件太大(指4M Flash版)而无法生成):

LuCI 配置:
LuCI ---> Applications ---> luci-app-accesscontrol  #访问时间控制
LuCI ---> Applications ---> luci-app-adbyby-plus   #广告屏蔽大师Plus +
LuCI ---> Applications ---> luci-app-arpbind  #IP/MAC绑定
LuCI ---> Applications ---> luci-app-autoreboot  #支持计划重启
LuCI ---> Applications ---> luci-app-ddns   #动态域名 DNS(集成阿里DDNS客户端)
LuCI ---> Applications ---> luci-app-filetransfer  #文件传输(可web安装ipk包)
LuCI ---> Applications ---> luci-app-firewall   #添加防火墙
LuCI ---> Applications ---> luci-app-flowoffload  #Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS...
LuCI ---> Applications ---> luci-app-frpc   #内网穿透 Frp
LuCI ---> Applications ---> luci-app-guest-wifi  #WiFi访客网络
LuCI ---> Applications ---> luci-app-ipsec-virtuald  #virtual服务器 IPSec
LuCI ---> Applications ---> luci-app-mwan3   #MWAN3负载均衡
LuCI ---> Applications ---> luci-app-mwan3helper   #MWAN3分流助手
LuCI ---> Applications ---> luci-app-nlbwmon   #网络带宽监视器
LuCI ---> Applications ---> luci-app-p p t p-server  #virtual服务器 p p t p 
LuCI ---> Applications ---> luci-app-ramfree  #释放内存
LuCI ---> Applications ---> luci-app-samba   #网络共享(Samba)
LuCI ---> Applications ---> luci-app-sqm  #流量智能队列管理(QOS)LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus   #乳酸菌饮料兲朝上网Plus+
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include s-s New Versiong  #新SS代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include v2瑞  #v2瑞透明代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include Trojan  #Trojan代理
LuCI ---> Applications ---> luci-app-syncdial  #多拨虚拟网卡(原macvlan)
LuCI ---> Applications ---> luci-app-unblockmusic  #解锁网易云灰色歌曲
LuCI ---> Applications ---> luci-app-upnp   #通用即插即用UPnP(端口自动转发)
LuCI ---> Applications ---> luci-app-vlmcsd  #KMS服务器设置
LuCI ---> Applications ---> luci-app-vsftpd  #FTP服务器
LuCI ---> Applications ---> luci-app-wirele违禁软件egdb  #WiFi无线
LuCI ---> Applications ---> luci-app-wol   #WOL网络唤醒
LuCI ---> Applications ---> luci-app-xlnetacc  #迅雷快鸟
LuCI ---> Applications ---> luci-app-zerotier  #ZeroTier内网穿透
LuCI ---> Applications ---> luci-app-accesscontrol  #访问时间控制
LuCI ---> Applications ---> luci-app-adblock   #ADB广告过滤
LuCI ---> Applications ---> luci-app-adbyby-plus  #广告屏蔽大师Plus +
LuCI ---> Applications ---> luci-app-advanced-reboot  #Linksys高级重启
LuCI ---> Applications ---> luci-app-ahcp  #支持AHCPd
LuCI ---> Applications ---> luci-app-aliddns   #阿里DDNS客户端(已弃,集成至ddns)
LuCI ---> Applications ---> luci-app-amule  #aMule下载工具
LuCI ---> Applications ---> luci-app-aria2 # Aria2下载工具
LuCI ---> Applications ---> luci-app-arpbind  #IP/MAC绑定
LuCI ---> Applications ---> luci-app-asterisk  #支持Asterisk电话服务器
LuCI ---> Applications ---> luci-app-attendedsysupgrade  #固件更新升级相关
LuCI ---> Applications ---> luci-app-autoreboot  #支持计划重启
LuCI ---> Applications ---> luci-app-baidupcs-web  #百度网盘管理LuCI ---> Applications ---> luci-app-birdl-ipv4  #对Birdl-ipv6的支持LuCI ---> Applications ---> luci-app-birdl-ipv6  #对Birdl-ipv4的支持LuCI ---> Applications ---> luci-app-bmx6  #BMX6路由协议
LuCI ---> Applications ---> luci-app-bmx7  #BMX7路由协议
LuCI ---> Applications ---> luci-app-cifsd  #网络共享CIFS/SMB服务器LuCI ---> Applications ---> luci-app-cjdns  #加密IPV6网络相关
LuCI ---> Applications ---> luci-app-clamav  #ClamAV杀毒软件
LuCI ---> Applications ---> luci-app-commands   #Shell命令模块
LuCI ---> Applications ---> luci-app-cshark   #CloudShark捕获工具
LuCI ---> Applications ---> luci-app-ddns   #动态域名 DNS(集成阿里DDNS客户端)
LuCI ---> Applications ---> luci-app-diag-core   #core诊断工具
LuCI ---> Applications ---> luci-app-dnscrypt-proxy  #DNSCrypt解决DNS污染
LuCI ---> Applications ---> luci-app-dnsforwarder  #DNSForwarder防DNS污染
LuCI ---> Applications ---> luci-app-dnspod  #DNSPod
LuCI ---> Applications ---> luci-app-docker  #Docker容器LuCI ---> Applications ---> luci-app-dynapoint  #DynaPoint(未知)
LuCI ---> Applications ---> luci-app-e2guardian   #Web内容过滤器
LuCI ---> Applications ---> luci-app-familycloud   #家庭云盘
LuCI ---> Applications ---> luci-app-filetransfer  #文件传输(可web安装ipk包)
LuCI ---> Applications ---> luci-app-firewall   #添加防火墙
LuCI ---> Applications ---> luci-app-flowoffload  #Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS...
LuCI ---> Applications ---> luci-app-freifunk-diagnostics   #freifunk组件 诊断(未知)
LuCI ---> Applications ---> luci-app-freifunk-policyrouting  #freifunk组件 策略路由(未知)
LuCI ---> Applications ---> luci-app-freifunk-widgets  #freifunk组件 索引(未知)
LuCI ---> Applications ---> luci-app-frpc   #内网穿透 Frp
LuCI ---> Applications ---> luci-app-fwknopd  #Firewall Knock Operator服务器
LuCI ---> Applications ---> luci-app-guest-wifi   #WiFi访客网络
LuCI ---> Applications ---> luci-app-haproxy-tcp   #HAProxy负载均衡-TCP
LuCI ---> Applications ---> luci-app-hd-idle  #硬盘休眠
LuCI ---> Applications ---> luci-app-hnet  #Homenet Status家庭网络控制协议
LuCI ---> Applications ---> luci-app-ipsec-virtuald  #virtual服务器 IPSec
LuCI ---> Applications ---> luci-app-kodexplorer  #KOD可道云私人网盘
LuCI ---> Applications ---> luci-app-lxc   #LXC容器管理
LuCI ---> Applications ---> luci-app-meshwizard #网络设置向导
LuCI ---> Applications ---> luci-app-minidlna   #完全兼容DLNA / UPnP-AV客户端的服务器软件
LuCI ---> Applications ---> luci-app-mjpg-streamer   #兼容Linux-UVC的摄像头程序
LuCI ---> Applications ---> luci-app-mtwifi  #MTWiFi驱动的支持LuCI ---> Applications ---> luci-app-mwan3   #MWAN3负载均衡
LuCI ---> Applications ---> luci-app-mwan3helper   #MWAN3分流助手
LuCI ---> Applications ---> luci-app-n2n_v2   #N2N内网穿透 N2N v2 virtual服务
LuCI ---> Applications ---> luci-app-netdata  #Netdata实时监控(图表)LuCI ---> Applications ---> luci-app-nft-qos  #QOS流控 Nftables版
LuCI ---> Applications ---> luci-app-nlbwmon   #网络带宽监视器
LuCI ---> Applications ---> luci-app-noddos  #NodDOS Clients 阻止DDoS攻击
LuCI ---> Applications ---> luci-app-nps  #内网穿透npsLuCI ---> Applications ---> luci-app-ntpc   #NTP时间同步服务器
LuCI ---> Applications ---> luci-app-ocserv  #OpenConnect virtual服务
LuCI ---> Applications ---> luci-app-olsr  #OLSR配置和状态模块
LuCI ---> Applications ---> luci-app-olsr-services  #OLSR服务器
LuCI ---> Applications ---> luci-app-olsr-viz   #OLSR可视化
LuCI ---> Applications ---> luci-app-openvirtual  #Openvirtual客户端
LuCI ---> Applications ---> luci-app-openvirtual-server  #易于使用的Openvirtual服务器 Web-UI
LuCI ---> Applications ---> luci-app-p910nd   #打印服务器模块
LuCI ---> Applications ---> luci-app-pagekitec   #Pagekite内网穿透客户端
LuCI ---> Applications ---> luci-app-polipo  #Polipo代理(是一个小型且快速的网页缓存代理)
LuCI ---> Applications ---> luci-app-pppoe-relay  #PPPoE NAT穿透 点对点协议(PPP)
LuCI ---> Applications ---> luci-app-p p t p-server  #virtual服务器 p p t p 
LuCI ---> Applications ---> luci-app-privoxy  #Privoxy网络代理(带过滤无缓存)
LuCI ---> Applications ---> luci-app-qbittorrent  #BT下载工具(qBittorrent)
LuCI ---> Applications ---> luci-app-qos   #流量服务质量(QoS)流控
LuCI ---> Applications ---> luci-app-radicale   #CalDAV/CardDAV同步工具
LuCI ---> Applications ---> luci-app-ramfree  #释放内存
LuCI ---> Applications ---> luci-app-rp-pppoe-server  #Roaring Penguin PPPoE Server 服务器
LuCI ---> Applications ---> luci-app-samba   #网络共享(Samba)
LuCI ---> Applications ---> luci-app-samba4   #网络共享(Samba4)
LuCI ---> Applications ---> luci-app-s-s-libes  #SS-libev服务端
LuCI ---> Applications ---> luci-app-shairplay  #支持AirPlay功能
LuCI ---> Applications ---> luci-app-siitwizard  #SIIT配置向导  SIIT-Wizzard
LuCI ---> Applications ---> luci-app-simple-adblock  #简单的广告拦截
LuCI ---> Applications ---> luci-app-softethervirtual  #SoftEther virtual服务器  NAT穿透LuCI ---> Applications ---> luci-app-splash  #Client-Splash是无线MESH网络的一个热点认证系统
LuCI ---> Applications ---> luci-app-sqm  #流量智能队列管理(QOS)
LuCI ---> Applications ---> luci-app-squid   #Squid代理服务器
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus   #乳酸菌饮料兲朝上网Plus+
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include s-s New Versiong  #新SS代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include v2瑞  #v2瑞透明代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include Trojan  #Trojan代理LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include Kcptun  #Kcptun代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include 违禁软件 Server  #乳酸菌饮料服务器
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include 违禁软件 Socks and Tunnel  #乳酸菌饮料代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料server-python  #违禁软件 Python服务器
LuCI ---> Applications ---> luci-app-statistics  #流量监控工具
LuCI ---> Applications ---> luci-app-syncdial  #多拨虚拟网卡(原macvlan)
LuCI ---> Applications ---> luci-app-tinyproxy  #Tinyproxy是 HTTP(S)代理服务器
LuCI ---> Applications ---> luci-app-transmission   #BT下载工具
LuCI ---> Applications ---> luci-app-travelmate  #旅行路由器
LuCI ---> Applications ---> luci-app-ttyd   #网页终端命令行
LuCI ---> Applications ---> luci-app-udpxy  #udpxy做组播服务器
LuCI ---> Applications ---> luci-app-uhttpd  #uHTTPd Web服务器
LuCI ---> Applications ---> luci-app-unblockmusic  #解锁网易云灰色歌曲
LuCI ---> Applications ---> luci-app-unbound  #Unbound DNS解析器
LuCI ---> Applications ---> luci-app-upnp   #通用即插即用UPnP(端口自动转发)
LuCI ---> Applications ---> luci-app-usb-printer   #USB 打印服务器
LuCI ---> Applications ---> luci-app-v2瑞-server   #v2瑞 服务器
LuCI ---> Applications ---> luci-app-verysync  #微力同步LuCI ---> Applications ---> luci-app-vlmcsd  #KMS服务器设置
LuCI ---> Applications ---> luci-app-vnstat   #vnStat网络监控(图表) 
LuCI ---> Applications ---> luci-app-virtualbypass  #virtual BypassWebUI  绕过virtual*设置
LuCI ---> Applications ---> luci-app-vsftpd  #FTP服务器
LuCI ---> Applications ---> luci-app-watchcat  #断网检测功能与定时重启
LuCI ---> Applications ---> luci-app-webadmin  #Web管理页面设置
LuCI ---> Applications ---> luci-app-wifischedule  #WiFi 计划
LuCI ---> Applications ---> luci-app-wireguard  #virtual服务器 WireGuard状态
LuCI ---> Applications ---> luci-app-wirele违禁软件egdb  #WiFi无线
LuCI ---> Applications ---> luci-app-wol   #WOL网络唤醒
LuCI ---> Applications ---> luci-app-wrtbwmon  #实时流量监测
LuCI ---> Applications ---> luci-app-xlnetacc  #迅雷快鸟
LuCI ---> Applications ---> luci-app-zerotier  #ZeroTier内网穿透
支持 iPv6:
1、Extra packages  --->  ipv6helper  (选定这个后下面几项自动选择了)
Network  --->  odhcp6c
Network  --->  odhcpd-ipv6only
LuCI  --->  Protocols  --->  luci-proto-ipv6
LuCI  --->  Protocols  --->  luci-proto-ppp

Kernel modules (内核模块): 
Kernel modules —> USB Support —> kmod-usb-ohci 支持 USB 1.0 
Kernel modules —> USB Support —> kmod-usb-storage 支持 USB 存储 
Kernel modules —> USB Support —> kmod-usb-uhci 支持 USB 1.1 
Kernel modules —> USB Support —> kmod-usb2 支持 USB 2.0 
Kernel modules —> Video Support —>kmod-video-core 
Kernel modules —> Video Support —> kmod-video-cpia2 
Kernel modules —> Video Support —> kmod-video-gspca-core 
Kernel modules —> Video Support —> kmod-video-pwc 
Kernel modules —> Video Support —> kmod-video-uvc 
Kernel modules —> Video Support —> kmod-video-videobuf2
Multimedia 
Multimedia–> mjpg-streamer
Network 
Network–> File Transfer –>vsftpd FTP服务器 
Network–> ser2net

7、配置好以后保存

第一次编译会下载大量源码,为了速度所以包越简单越好接下来按ESC退出再退出,最后提示保存,最后就要开始激动人心的编译啦

8、下载dl库

make -j8 download v=s

下载dl库(国内请尽量全局上网)

image.png

9、开始编译固件

输入

make -j1 V=s

(-j1 后面是线程数。第一次编译推荐用单线程)即可开始编译你要的固件了。

image.png

成功编译出固件

openwrt-bcm53xx-phicomm-k3-squashfs.trx


image.png

0x03将固件刷入路由器中

image.png

image.png

参考资料

https://github.com/coolsnowwolf/lede

https://blog.csdn.net/sensiki/article/details/70271533

https://aisoa.cn/post-2574.html

关注我们

Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。

想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.com 或长按二维码关注公众号:

ewm.png

# 路由器 # OpenWRT # 固件编译
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者