qemu虚拟机模拟固件环境搭建
qemu虛擬機(jī)模擬固件環(huán)境搭建
聲明:本文主要目的為供自己今后參考
目錄
- qemu虛擬機(jī)模擬固件環(huán)境搭建
- 一、準(zhǔn)備虛擬機(jī)和硬件
- (一)安裝binwalk和qemu
- (二)binwalk提取bin文件
- 1.[安裝sasquatch](https://github.com/devttys0/sasquatch)
- 2.提取bin文件(binwalk并不能夠提取所有的bin文件,有的bin文件會(huì)出錯(cuò))
- 二、配置網(wǎng)絡(luò)、搭建網(wǎng)橋
- (一)本機(jī)創(chuàng)建網(wǎng)橋
- (二)虛擬機(jī)配置網(wǎng)絡(luò)
- 三、啟動(dòng)路由器
- (一)壓縮目標(biāo)硬件系統(tǒng)文件上傳至虛擬機(jī)
- (二)虛擬機(jī)內(nèi)解壓系統(tǒng)文件并啟動(dòng)shell
一、準(zhǔn)備虛擬機(jī)和硬件
(一)安裝binwalk和qemu
參考文章一: 通過qemu復(fù)現(xiàn)路由器漏洞 (參考部分:安裝binwalk)
相關(guān)命令:
git clone https://github.com/devttys0/binwalk.git sudo apt-get install qemu qemu-system qemu-user-static binfmt-support(二)binwalk提取bin文件
1.安裝sasquatch
sudo apt-get install build-essential liblzma-dev liblzo2-dev zlib1g-dev git clone https://github.com/devttys0/sasquatch.git cd sasquatch chmod +x build.sh ./build.sh上述第一條命令的作用為:安裝C/C++編譯器、liblzma、liblzo 和 zlib 相關(guān)依賴庫。
2.提取bin文件(binwalk并不能夠提取所有的bin文件,有的bin文件會(huì)出錯(cuò))
參考文章二:CSDN-使用qemu進(jìn)行路由器環(huán)境的虛擬搭建-梵歆
binwalk -Me XXXXX.bin之后會(huì)在當(dāng)前文件夾得到_XXXXX.bin.extracted_文件,其中的squashfs-root文件就是硬件設(shè)備的root文件(這個(gè)文件夾就可以理解成目的設(shè)備)。
驗(yàn)證一下 輸入tree命令,
出現(xiàn)如下的效果圖
找squashfs-root中的一個(gè)可執(zhí)行文件用file命令查看下其屬性(為后續(xù)配置搜集信息)
(解釋:一會(huì)兒?jiǎn)?dòng)虛擬機(jī)的命令為qemu-system-mips,該命令分為三部分,上圖中如果出現(xiàn)MSB第三個(gè)部分就用mips,如果是LSB則用mipsel,如果上圖不是MIPS32而是MIPS64,第三個(gè)部分為相應(yīng)的mips64和mipsel64,這表示接下來qemu進(jìn)行虛擬環(huán)境搭建的時(shí)候需要選擇MIPS的內(nèi)核,如果不是MIPS而是ARM或其他的,第三個(gè)部分為arm或其他的。)
在該網(wǎng)址下載mips內(nèi)核等兩個(gè)資源,本次搭建過程使用的是vmlinux-2.6.32-5-4kc-malta和debian_squeeze_mips_standard.qcow2,這兩個(gè)文件如果接下來過程不放在_XXXXX.bin.extracted_文件的同級(jí)目錄下,就要放在qemu的一個(gè)文件夾底下(好像是qemu/bin)。
二、配置網(wǎng)絡(luò)、搭建網(wǎng)橋
參考文章三:一步一步PWN路由器之環(huán)境搭建 - 先知社區(qū)
參考部分:配置網(wǎng)絡(luò)-方法一
(一)本機(jī)創(chuàng)建網(wǎng)橋
建議在當(dāng)前_XXXXX.bin.extracted_文件夾下創(chuàng)建init.sh文件(sh文件,名字自己起)
放入如下代碼:(注意,IP地址需改為自己網(wǎng)絡(luò)的ip地址)
#!/bin/sh sudo brctl addbr virbr0 sudo ifconfig virbr0 192.168.1.55/24 up sudo tunctl -t tap0 sudo ifconfig tap0 192.168.1.56/24 up sudo brctl addif virbr0 tap0 sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet -nographic保存.sh文件后,在當(dāng)前文件夾下的終端鍵入如下命令:
chmod +x init.sh ./init.sh此代碼也可以一行一行鍵入,不過電腦重啟后,網(wǎng)絡(luò)配置環(huán)境會(huì)丟失,需要重新鍵入,而.sh文件直接執(zhí)行就可以。
如果最后一行代碼不加-nographic就會(huì)彈出qemu虛擬機(jī)窗口。
(二)虛擬機(jī)配置網(wǎng)絡(luò)
登錄root用戶,密碼為root
在虛擬機(jī)里配置ip
ifconfig eth0 192.168.1.57/24 up此時(shí)就應(yīng)該可以ping通主機(jī)。
三、啟動(dòng)路由器
參考文章二:CSDN-使用qemu進(jìn)行路由器環(huán)境的虛擬搭建-梵歆
(一)壓縮目標(biāo)硬件系統(tǒng)文件上傳至虛擬機(jī)
回到_XXXXX.bin.extracted_文件夾的終端下,鍵入如下命令:
cd _XXXXX.bin.extracted_ tar -czvf root.tar squashfs-root/ scp root.tar root@192.168.10.2:/root/輸入密碼:root
建議創(chuàng)建init.sh文件,該文件的作用是完成虛擬機(jī)內(nèi)網(wǎng)絡(luò)配置及相關(guān)文件的掛載,因?yàn)橹貑⑻摂M機(jī)后,原來的網(wǎng)絡(luò)配置不能保存。(如果想直接通過該文件啟動(dòng)硬件設(shè)備相關(guān)功能也可以自定義該文件,本次init.sh文件不做涉及),init.sh文件內(nèi)容及上傳至虛擬機(jī)的命令如下:
#!/bin/sh ifconfig eth0 192.168.1.57/24 up mount -o bind /dev ./squashfs-root/dev mount -t proc /proc ./squashfs-root/proc/chroot ./squashfs-root/ sh保存并退出
輸入:
scp init.sh root@192.168.10.2root@192.168.1.57:/root/(二)虛擬機(jī)內(nèi)解壓系統(tǒng)文件并啟動(dòng)shell
回到虛擬機(jī)內(nèi)
tar –zxvf root.tar chmod +x init.sh ./init.sh如果沒有上傳init.sh文件,則鍵入如下命令:
tar –zxvf root.tar mount -o bind /dev ./squashfs-root/dev mount -t proc /proc ./squashfs-root/proc/chroot ./squashfs-root/ sh此時(shí),界面由
變?yōu)?/p>
且沒有任何報(bào)錯(cuò),說明成功。
華為路由器啟動(dòng)路由器設(shè)備參考:
./bin/upnp ./bin/mic目前還沒有啟動(dòng)我所用硬件硬件路由器的服務(wù),因?yàn)榕c華為路由器系統(tǒng)文件的內(nèi)容不一樣,沒有上述命令中的兩個(gè)文件,也沒有實(shí)現(xiàn)ping通外網(wǎng)(例如www.baidu.com)。僅實(shí)現(xiàn)了和本機(jī)通信。
總結(jié)
以上是生活随笔為你收集整理的qemu虚拟机模拟固件环境搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决fatal: unable to a
- 下一篇: 如果我能再次养大我的孩子