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


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


    MIPS系统网络的配置 

    使用QEMU 模拟正在执行的MIPS系统并配置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主机的网络配置文件 /etc/network/interfaces 为例如以下内容:

    auto lo
    iface lo inet loopback
    
    auto eth0 
    iface eth0 inet dhcp 
    
    #auto br0 
    iface br0 inet dhcp 
      bridge_ports eth0 
      bridge_maxwait 0 


    ubuntu主机的网络配置文件 /etc/network/interfaces 改动后的结果如图:



    注意:上面的操作是在主机ubuntu 14.04版本号上的改动演示样例。在最新版的ubuntu 16.04中,原来的 eth0 被重命名为了 ens33。因此上面的 /etc/network/interfaces文件改动中,须要用 ens33 来替换 eth0 进行改动。当然了另一种方法解决问题--将ubuntu 16.04的 ens33 改动为原来的 eth0,改动的方法能够參考文档:《Change default network name (ens33) to old “eth0” on Ubuntu 16.04》。

    # 查看ubuntu系统的eth
    $ dmesg | grep -i eth



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

    $ sudo gedit /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文件后面加入的我们的操作内容;当然了凝视掉原来的命令内容应该也没有什么问题。然后 保存关闭文件。



    保存 文件/etc/qemu-ifup 以后,赋予文件/etc/qemu-ifup 可运行权限。然后重新启动网络使全部的配置生效。

    $ sudo chmod a+x /etc/qemu-ifup
    
    # 重新启动网络使配置生效
    $ sudo /etc/init.d/networking restart
    重新启动网络成功。结果如图:



    04.QEMU的启动配置

    在本地ubuntu命令行终端,启动桥连网络。

    $ sudo ifdown eth0
    $ sudo ifup br0
    运行的结果如图:



    在前面的博客《路由器逆向分析------QEMU的基本用法(MIPS)》中,已经写了关于QEMU的系统模式的使用,以下我们就使用前面下载的MIPS 32bit的内核2.6.x版本号的虚拟机镜像文件,运行以下的命令启动MIPS虚拟机。

    # 启动qemu-mips 32的虚拟机
    $ 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" -net nic,macaddr=00:16:3e:00:00:01 -net tap -nographic  
    QEMU虚拟机启动的结果截图:



    05.配置MIPS系统的网络

    使用 "ifconfig -a" 命令。查看网络接口是否已经分配了IP地址,假设没有分配,则能够通过例如以下的方法使用 DHCP 获取IP地址。

    获取网络接口。命令例如以下:

    # 先查看mips虚拟机系统的网络接口。
    root@debian-mips:~# ifconfig -a
    运行的结果例如以下图所看到的:



    通过 ifconfig 命令得到网络接口名称为 "eth1" 。

    因此须要 编辑 mips虚拟机 的 /etc/network/interfaces文件,改动网络接口的名称。

    root@debian-mips:~# nano /etc/network/interfaces
    原 /etc/network/interfaces文件里的内容例如以下:



    将 /etc/network/interfaces原文件里的 "eth0" 改动为通过 ifconfig 命令得到的网络接口名 "eth1"。改动后的 /etc/network/interfaces文件的内容例如以下:



    单击 "Enter" 键,然后保存改动后的/etc/network/interfaces文件的内容。

    使用 ifup 命令启用 eth1 网络接口,运行命令例如以下图:

    root@debian-mips:~# ifup eth1
    运行结果例如以下图:



    使用 ifconfig  命令。查看MIPS主机是否分配IP地址成功。

    root@debian-mips:~# ifconfig 
    运行的结果例如以下图:



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

    root@debian-mips:~# ping www.baidu.com
    运行的结果例如以下图:



    06.通过SSH连接MIPS虚拟机

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

    fly2016@ubuntu:~$ ssh root@192.168.159.133
    运行结果例如以下图:



    通过 scp 向MIPS虚拟机拷贝本地ubuntu上的文件。运行以下的命令:

    # 从本地ubuntu系统向远端的MIPS虚拟机上传文件
    $ scp ./busybox root@192.168.159.133:/root/
    运行结果如图:



    有关Linux系统的 scp 命令的使用,直接參考网址:http://www.runoob.com/linux/linux-comm-scp.html

    Linux scp命令用于Linux之间拷贝文件和文件夹。

    scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。

    语法

    scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
    [-l limit] [-o ssh_option] [-P port] [-S program]
    [[user@]host1:]file1 [...] [[user@]host2:]file2

    简易写法:

    scp [可选參数] file_source file_target 

    參数说明:

    • -1: 强制scp命令使用协议ssh1
    • -2: 强制scp命令使用协议ssh2
    • -4: 强制scp命令仅仅使用IPv4寻址
    • -6: 强制scp命令仅仅使用IPv6寻址
    • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
    • -C: 同意压缩。

      (将-C标志传递给ssh。从而打开压缩功能)

    • -p:保留原文件的改动时间,訪问时间和訪问权限。
    • -q: 不显示传输进度条。
    • -r: 递归复制整个文件夹。
    • -v:具体方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
    • -c cipher: 以cipher将传输数据进行加密,这个选项将直接传递给ssh。
    • -F ssh_config: 指定一个替代的ssh配置文件。此參数直接传递给ssh。

    • -i identity_file: 从指定文件里读取传输时使用的密钥文件。此參数直接传递给ssh。
    • -l limit: 限定用户所能使用的带宽。以Kbit/s为单位。
    • -o ssh_option: 假设习惯于使用ssh_config(5)中的參数传递方式,
    • -P port:注意是大写的P, port是指定传输数据用到的端口号
    • -S program: 指定加密传输时所使用的程序。此程序必须可以理解ssh(1)的选项。

    实例

    1、从本地拷贝到远程

    命令格式:

    scp local_file remote_username@remote_ip:remote_folder 
    或者 
    scp local_file remote_username@remote_ip:remote_file 
    或者 
    scp local_file remote_ip:remote_folder 
    或者 
    scp local_file remote_ip:remote_file 

    • 第1,2个指定了username,命令运行后须要再输入password,第1个仅指定了远程的文件夹,文件名称字不变,第2个指定了文件名称。
    • 第3,4个没有指定username,命令运行后须要输入username和password。第3个仅指定了远程的文件夹,文件名称字不变。第4个指定了文件名称。

    应用实例:

    scp /home/space/music/1.mp3 root@www.w3cschool.cc:/home/root/others/music 
    scp /home/space/music/1.mp3 root@www.w3cschool.cc:/home/root/others/music/001.mp3 
    scp /home/space/music/1.mp3 www.w3cschool.cc:/home/root/others/music 
    scp /home/space/music/1.mp3 www.w3cschool.cc:/home/root/others/music/001.mp3 

    拷贝文件夹命令格式:

    scp -r local_folder remote_username@remote_ip:remote_folder 
    或者 
    scp -r local_folder remote_ip:remote_folder 
    • 第1个指定了username,命令运行后须要再输入password;
    • 第2个没有指定username。命令运行后须要输入username和password;

    应用实例:

    scp -r /home/space/music/ root@www.w3cschool.cc:/home/root/others/ 
    scp -r /home/space/music/ www.w3cschool.cc:/home/root/others/ 

    上面命令将本地 music 文件夹拷贝到远程 others 文件夹下。

    2、从远程拷贝到本地

    从远程拷贝到本地,仅仅要将从本地拷贝到远程的命令的后2个參数调换顺序就可以,例如以下实例

    应用实例:

    scp root@www.w3cschool.cc:/home/root/others/music /home/space/music/1.mp3 
    scp -r www.w3cschool.cc:/home/root/others/ /home/space/music/

    说明

    1.假设远程server防火墙有为scp命令设置了指定的port,我们须要使用 -p 參数来设置命令的port号,命令格式例如以下:

    #scp命令使用port号 4588
    scp -p 4588 remote@www.w3cschool.cc:/usr/local/sin.sh /home/administrator

    2.使用scp命令要确保使用的用户具有可读取远程server对应文件的权限。否则scp命令是无法起作用的。


    说明:有关MIPS系统网络配置相关的操作。网上查了非常久也没有找到比較好的阐述资料,本文主要參考的是《揭秘家用路由器0day漏洞挖掘技术》这本书。

    相关的官方的參考资料地址:

    https://www.aurel32.net/info/debian_mips_qemu.php

    https://en.wikibooks.org/wiki/QEMU/Networking#TAP.2FTUN_device

    http://www.fedoraforum.org/forum/showpost.php?p=530775&postcount=1


  • 相关阅读:
    Telink TLSR825x系列SDK增加串口打印log功能
    Telink BDT和烧录器EVK的使用
    Telink SDK IDE开发环境中函数链接跳转异常和实际编译项目显示灰色问题的解决
    Telink SDK 的编译设置(以825x系列的一个SDK为例)
    Telink IDE的下载和SDK的导入
    Git项目管理出现 .gitignore文件不起作用的解决
    char和signed char不同编译器下的使用反思
    动态内存的分配
    结构体和联合体
    C语言中利用clock设计一个简单的定时器
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7376192.html
Copyright © 2020-2023  润新知