Cisco RV340下载地址
下载链接: https://drivers.softpedia.com/dyn-search.php?search_term=rv340,该网站该可以下载其他版本
一、解包
1、该步骤主要是需要将下载回来的文件进行解压,获取文件内IMG格式的最原始镜像文件,其次再用binwalk工具将IMG镜像文件内文件系统给提取出来。
2、将下回来的img格式的镜像包,使用解压工具进行解压,直至获取到名为:“openwrt-comcerto2000-hgw-rootfs-ubi_nand.img”的img格式文件,解压路径为:C:\Users\MineMine\Downloads\RV34X-v1.0.01.17-2017-05-26-15-14-45-PM\RV34X-v1.0.01\fw\fw~
3、进入Ubuntu机器,安装binwalk和相关的配置,执行如下命令:
sudo apt-get update
sudo apt-get install binwalk liblzo2-dev liblzo2-dev python3-pip -y
sudo pip3 install python-lzo ubi_reader
4、将步骤一解压获取到的“openwrt-comcerto2000-hgw-rootfs-ubi_nand.img”文件,使用binwalk进行提取,获取RV340的文件系统,执行如下命令:
binwalk -Me openwrt-comcerto2000-hgw-rootfs-ubi_nand.img
5、使用ubuntu18请跳过5-7步,在Ubuntu20存在该问题,使用binwalk提取文件系统时,会把软链接给重置为/dev/null,ubuntu18不存在该问题
6、因此按照网上大佬所提供的通过修改binwalk代码的方式强行绕过了此逻辑,将路径下的文件进行修改:/usr/lib/python3/dist-packages/binwalk/modules/extractor.py,修改内容,如下图所示:
sudo vim /usr/lib/python3/dist-packages/binwalk/modules/extractor.py
7、再次执行命令,结果如下:
binwalk -Me openwrt-comcerto2000-hgw-rootfs-ubi_nand.img
二、部署qemu虚拟系统
1、该步骤主要部署qemu虚拟系统,后面我们的cisco将会在这个虚拟系统中运行。
2、首先用file命令查看一下busybox的文件信息(如下),这里是ARM架构 小端序,因此我们要下载对应的内核映像还有磁盘映像等文件
3、进入网站下图的三个文件,下载链接: https://people.debian.org/~aurel32/qemu/armhf/
使用wget下载方式:
wget https://people.debian.org/~aurel32/qemu/armhf/debian_wheezy_armhf_standard.qcow2
wget https://people.debian.org/~aurel32/qemu/armhf/vmlinuz-3.2.0-4-vexpress
wget https://people.debian.org/~aurel32/qemu/armhf/initrd.img-3.2.0-4-vexpress
4、启动脚本:
sudo apt install qemu-system-arm -y
sudo qemu-system-arm -M vexpress-a9 -kernel vmlinuz-3.2.0-4-vexpress \
-initrd initrd.img-3.2.0-4-vexpress -drive if=sd,file=debian_wheezy_armhf_standard.qcow2 \
-append "root=/dev/mmcblk0p2" -net nic -net tap,ifname=tap0,script=no,downscript=no \
-nographic -smp 4
5、如果使用ubuntu18请跳过5-7步骤,Ubuntu20存在该问题执行后提示如下图错误,提示的是:说的是SD card size应该是2的幂,应该改成32GB
6、解决方法为,执行修改命令,进行修改
qemu-img resize debian_wheezy_armhf_standard.qcow2 32G
7、修改完成后再次执行如下命令:
sudo qemu-system-arm -M vexpress-a9 -kernel vmlinuz-3.2.0-4-vexpress \
-initrd initrd.img-3.2.0-4-vexpress -drive if=sd,file=debian_wheezy_armhf_standard.qcow2 \
-append "root=/dev/mmcblk0p2" -net nic -net tap,ifname=tap0,script=no,downscript=no \
-nographic -smp 4
8、执行完毕后等待几分钟即可进入qemu虚拟系统,完成后如下图所示:(账户密码都为root)
三、网络配置
1、虚拟系统启动起来后,需要将其与宿主机的网络打通,因此该步骤主要讲述如何将网络与宿主机打通
2、在ubuntu宿主机执行命令:
sudo apt-get install uml-utilities bridge-utils -y
3、在ubuntu宿主机创建一个sh脚本,并运行,脚本内容如下:
#!/bin/sh
#sudo ifconfig eth0 down # 首先关闭宿主机网卡接口
sudo brctl addbr br0 # 添加一座名为 br0 的网桥
sudo brctl addif br0 ens33 # 在 br0 中添加一个接口
sudo brctl stp br0 off # 如果只有一个网桥,则关闭生成树协议
sudo brctl setfd br0 1 # 设置 br0 的转发延迟
sudo brctl sethello br0 1 # 设置 br0 的 hello 时间
sudo ifconfig br0 0.0.0.0 promisc up # 启用 br0 接口
sudo ifconfig ens33 0.0.0.0 promisc up # 启用网卡接口
sudo dhclient br0 # 从 dhcp 服务器获得 br0 的 IP 地址
sudo brctl show br0 # 查看虚拟网桥列表
sudo brctl showstp br0 # 查看 br0 的各接口信息
sudo tunctl -t tap0 -u root # 创建一个 tap0 接口,只允许 root 用户访问
sudo brctl addif br0 tap0 # 在虚拟网桥中增加一个 tap0 接口
sudo ifconfig tap0 0.0.0.0 promisc up # 启用 tap0 接口
sudo brctl showstp br0
4、进入qemu虚拟系统,执行:reboot命令,进行重启,重启时间有点长,需要等待一会儿
5、重启成功后,进入qemu虚拟系统,ping宿主机,如果可以ping通就,网络配置就成功
四、部署Cisco RV340
1、首先将前面提取出来的文件系统进行打包压缩,并将压缩的文件使用scp命令上传到qemu虚拟系统内
tar -czvf rootfs.tar.gz rootfs
sudo scp -r rootfs.tar.gz root@192.168.10.53:/root/rootfs.tar.gz
2、进入qemu虚拟系统进行解压和赋权操作
tar -xzvf rootfs.tar.gz
chmod -R 777 rootfs
3、切换进入文件系统目录,并执行一下命令
cd rootfs
mount --bind /proc proc
mount --bind /dev dev
chroot . /bin/sh
4、逐步启动ngix服务,启动过程中会出现许多提示:如找不到设备或找不到目录,但是最后依旧可以启动成功,具体有什么影响目前还未知
/etc/init.d/boot boot
generate_default_cert
/etc/init.d/confd start
/etc/init.d/nginx start
5、启动完成后就可以访问网页了
参考文章:
https://zhuanlan.zhihu.com/p/651668923
https://www.iotsec-zone.com/article/209#cve-2022-20705
https://www.itzgeek.com/how-tos/mini-howtos/change-default-network-name-ens33-to-old-eth0-on-ubuntu-16-04.html
https://blog.csdn.net/QQ1084283172/article/details/69378333