本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69652258

在QEMU MIPS虚拟机上运行MIPS程序--SSH方式

有关在ubuntu系统上安装和使用QEMU虚拟机的内容,这里不会再描述了,在前面的博客中已经写的很清楚里。这里主要讨论的是怎么在QEMU-MIPS的虚拟机中运行MIPS程序。要在QEMU的系统模式下运行MIPS程序就必须让本地ubuntu主机和QEMU-MIPS虚拟机能够进行网络通讯才有机会。

01.获取安装依赖文件,示例如下:

$ sudo apt-get install bridge-utils uml-utilities

02.修改 ubuntu主机网络配置。

将ubuntu主机系统中的网络接口配置文件 /etc/network/interfaces 修改为如下的内容并保存。

# 编辑ubuntu主机的网络接口文件/etc/network/interfaces
$ sudo gedit /etc/network/interfaces

修改 ubuntu 16.04 的主机系统的网络接口文件 /etc/network/interfaces 的内容如下,这里 需要注意一下 :如果是 ubuntu 14.04 的系统,在修改本地ubuntu主机的网络接口文件时,需要用 " eth0 " 替换掉 " ens33 "进行修改,后面启动桥接网络也需要对应的修改相关命令,具体原因在前面的博客《路由器逆向分析------MIPS系统网络的配置(QEMU)》中有提到。修改完网络接口文件 /etc/network/interfaces后,进行保存和关闭。

auto lo
iface lo inet loopback# ubuntu 16.04的系统用ens33代替eth0
auto ens33
iface ens33 inet manual
up ifconfig ens33 0.0.0.0 upauto br0
iface br0 inet dhcp
bridge_ports ens33
bridge_stp off
bridge_maxwait 1

执行的结果如下图:

03.创建 QEMU 网络接口文件启动脚本文件,重启网络使网络配置生效。使用下面的命令 创建并编辑 /etc/qemu-ifup 文件。

$ sudo geany /etc/qemu-ifup

在启动脚本文件 /etc/qemu-ifup 中写入如下的内容,然后保存和关闭 /etc/qemu-ifup文件。这里需要注意一下,为了防止不干扰  /etc/qemu-ifup文件的原来的命令操作,没有修改和删除 /etc/qemu-ifup文件中的原文件内容而是在后面直接添加自己的命令操作的内容。

#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /sbin/brctl addif br0 $1
sleep 3

执行操作的结果截图如下:

保存、关闭/etc/qemu-ifup文件以后,修改/etc/qemu-ifup文件的权限,然后重启网络使所有配置生效。

# 赋予/etc/qemu-ifup脚本可执行权限
$ sudo chmod a+x /etc/qemu-ifup# 重启网络使配置生效
$ sudo /etc/init.d/networking restart

执行结果如下图:

04. QEMU启动配置

启用桥接网络,示例如下:

$ sudo ifdown ens33
$ sudo ifup br0

执行结果如下图,这里需要注意一下:如果是 ubuntu 14.04 的系统主机则执行的 "sudo ifdown eth0" 命令,与前面的网络接口文件中的修改进行对应。

下载 MIPS虚拟机,访问网站:https://people.debian.org/~aurel32/qemu/,选择MIPS大端格式或者MIPS小端格式进行下载。这里选择下载MIPS32小端格式 的虚拟机镜像文件,下载的内核文件为 vmlinux-2.6.32-5-4kc-malta,磁盘镜像文件为 debian_squeeze_mipsel_standard.qcow2

# Start QEMU with the following arguments for a 32-bit machine:
$ qemu-system-mipsel -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0"   # for MIPSEL 32bit ###############:
# 内核版本为2.6.x
$ wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-2.6.32-5-4kc-malta
$ wget https://people.debian.org/~aurel32/qemu/mipsel/debian_squeeze_mipsel_standard.qcow2  

启动MIPS虚拟机,示例如下:

$ sudo qemu-system-mipsel -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic -net tap -nographic

执行结果如下图:

05.配置MIPS系统网络
在qemu-mipsel虚拟机上,使用 " ifconfig  -a " 命令,查看网络接口是否已经分配了IP地址。获取网络接口,示例如下:

root@debian-mipsel:~# ifconfig -a

执行结果如下图:

注意:这里有个地方是需要思考的,在前面的博文《路由器逆向分析------MIPS系统网络的配置(QEMU)》中,在启动MIPS虚拟机成功以后,使用 "ifconfig  -a" 命令查看MIPS虚拟机的网络接口,发现MIPS虚拟机的网络接口并没有被分配IP地址;在修改了MIPS虚拟机的网络接口文件 /etc/network/interfaces中的 "eth0" 为 "eth1" 后,启用 eth1 网络接口才实现MIPS虚拟机的网络接口被分配IP地址成功,但是在本篇博文的操作中则 不需要修改 MIPS虚拟机的网络接口文件 /etc/network/interfaces 呢?

思考一下:主要的原因是在前面的博文中,启动MIPS虚拟机时-虚拟了一个网络接口,因此在后面的MIPS虚拟机中需要修改网络接口文件 /etc/network/interfaces中的 "eth0" 为 "eth1" 才能实现MIPS虚拟机的网络接口被分配IP地址成功。

在启动MIPS虚拟机时候,去掉如下图所标示的参数即可实现上面所讨论的需求,默认自动实现为MIPS虚拟机网络接口eth0分配IP地址。

使用 " ping " 命令,测试一下MIPS虚拟机是否与外部的网络连接通畅。

root@debian-mipsel:~# ping www.baidu.com

执行结果如下图:

06.通过SSH连接MIPS虚拟机

在ubuntu本地主机上,通过 ssh 远程登陆进入到 MIPS虚拟机 中,执行下面的命令:

$ ssh root@192.168.254.132

ssh登陆MIPS虚拟机成功,结果截图如下:

07.通过 scp 向MIPS虚拟机拷贝MIPS程序

通过 " scp" 命令向MIPS虚拟机拷贝本地ubuntu上的文件,执行下面的命令。这里主要是将解压后的路由器的整个文件系统拷贝到远端的MIPS虚拟机中。

$ scp -r ./squashfs-root  root@192.168.254.132:/root/

执行操作的结果截图:

在远端的MIPS虚拟机上查看本地文件的上传的结果,截图如下:

08.在QEMU-MIPS虚拟机上执行MIPS程序

在远端的MIPS虚拟机上执行上传的MIPS程序,示例如下:

root@debian-mipsel:~# cd squashfs-root/
root@debian-mipsel:~/squashfs-root# ./bin/login
-bash: ./bin/login: No such file or directory
root@debian-mipsel:~/squashfs-root# file ./bin/login
./bin/login: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked (uses shared libs), stripped
root@debian-mipsel:~/squashfs-root# chroot . ./bin/login
debian-mipsel login: hello
Password:
Login timed out after 60 seconds.

很显然,在远端的MIPS虚拟机上运行MIPS程序成功。

09.最后的讨论

本文的操作主要是参考《详细的路由器漏洞分析环境搭建教程》这篇文章。总体研究了一下这篇文章,首先感谢文章的作者然后呢,发现其实文章的作者有些知识点弄也不是很清楚。本篇博文与前面的博文《路由器逆向分析------MIPS系统网络的配置(QEMU)》总体区别不大,但是在配置网络接口这一部分稍有区别,其实仔细看官方的文档,也没什么不同。本篇博文还参考《揭秘家用路由器0day漏洞挖掘技术》以及其他的国外嵌入式大牛的博客,后面有时间再分享这些大牛的博客内容。

撰写这篇博文的主要目的为了后面动态调试MIPS程序进行做准备~

路由器逆向分析------在QEMU MIPS虚拟机上运行MIPS程序(ssh方式)相关推荐

  1. EclipseADT在虚拟机上运行Helloworld程序

    第一次运行EclipseADT时需要设置工作目录,搞定了之后会进入这个界面: 建立一个Android应用: 1.点击上图中的New Andriod Application... 创建应用. 2.在下图 ...

  2. 路由器逆向分析------Running Debian MIPS Linux in QEMU

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70176583 下面的文章内容主要参考英文博客<Running Debian ...

  3. 路由器逆向分析------MIPS系统网络的配置(QEMU)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69378333 MIPS系统网络的配置  使用QEMU 模拟正在运行的MIPS系统并 ...

  4. 在虚拟机上运行vxWorks

    Vxworks是一个嵌入式系统,主要运行在arm.ppc.mips等嵌入式处理器上,它同样可以运行在X86处理器上.风河公司开发的tornado开发环境就 包括了pentium版本,并且发布了相应的b ...

  5. 【容器技术】在裸机与虚拟机上运行容器:性能和优点

    根据最近的研究,Docker正在像野火一样蔓延,特别是在企业中,它的采用率从2015年的13%上升到了65%以上;另有35%的公司计划使用Docker.根据这些报告,容器采用的主要驱动因素是需要提高研 ...

  6. 在Mac虚拟机上运行Flutter项目之山路十八弯

    前言 最近刚上手Flutter,写了个小Demo,想着在ios上来一发,但作为一名Android Developer,我没有Mac(还不是因为穷),这可咋整? 幸好有万能的网友,带领我走进黑苹果的世界 ...

  7. IDEA如何在手机上运行Android程序

    IDEA如何在手机上运行Android程序 对于小白(也就是我)想在自己的手机上运行自己的Android程序的时候,不知道该如何下手,在网上找到的教程又不完整或者过于繁琐,所以写了这篇文章简单快速的帮 ...

  8. 路由器逆向分析------路由器固件分析和动态调试环境搭建简述

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70140865 01.路由器固件分析和动态调试环境搭建简述的原文 <Emula ...

  9. Sat-Hacking(4):Starlink路由器逆向分析-上篇

    在本篇文章中,我们将探讨 SpaceX Starlink 路由器的逆向分析过程.Starlink 是 SpaceX 推出的一项革命性的卫星互联网服务,旨在为全球偏远地区提供高速.低延迟的互联网连接.为 ...

最新文章

  1. 技术人员,为什么会苦逼
  2. 在Android中使用Handler和Thread线程执行后台操作
  3. Solo 博客系统 1.7.0 发布 - 新版 MD 编辑器
  4. DSP:6678开发板NDK网口通信完整实现(附源码)
  5. HDU3400(计算几何中的三分法利用)
  6. DS1819 对应版本的FFMPEG_OpenCV开发笔记(七十):红胖子带你傻瓜式编译VS2017x64版本的openCV4...
  7. 免插件为WordPress文章中标签添加内链
  8. Linux里面nginx显示Hello,Nginx得知——Hello World模
  9. 为什么当前互联网+法律发展艰难?
  10. 虚拟化十四问:VWmare全面解读虚拟化
  11. js正则表达式——数字校验
  12. linux让指定文件具有sudo的权限,Linux学习笔记——使用指定的用户权限执行程序——sudo...
  13. ogg for java_luogg_java学习_04_数组
  14. Docker下Cannot connect to the Docker daemon. Is the docker daemon running on this host错误解决方案
  15. 安卓Gallery配合ImageSwitcher不显示图片
  16. Android计算器(仿小米计算器)
  17. Scratch 游戏项目学习法 —— 接苹果(六)让苹果掉到下面
  18. 如何发一条九宫格图片的朋友圈
  19. 促进目标实现的激励技巧
  20. 华为网络配置(IPSec)

热门文章

  1. C语言 | unicode 编码的中文输出
  2. 论文翻译:Robust Negative Obstacle Detection in Off-Road Environments Using Multiple LiDARs
  3. 【1】Cartographer建图后的原始图像处理(Rviz插件修图)
  4. 服务器安全策略经验总结
  5. finalize方法简介
  6. MIT 6.824 Lec2.RPC and Threads
  7. 类打地鼠canvas小游戏
  8. Wine 6.1 正式版发布带来新变化
  9. 【集合类】hashmap扩容
  10. 帝国时代2哪个服务器稳定,宅在家里玩什么?不如重回《帝国时代》看看