zoukankan      html  css  js  c++  java
  • [linux] 对一个虚拟机的研究

    今天拿到了一个vmware的虚拟机硬盘镜像,是其他公司的演示产品。

    启动之后是带着ubuntu字样的grub。进入系统之后也不是shell,而是一个定制的命令行。所以如果想了解细节的话,只能单独挂硬盘了。

    首先现在同事的vmware虚拟机里用CentOS的光盘挂载了一下,简单的看了看,用起来不太方便,遂准备把整个虚拟机镜像拿到T7来处理。

    文件名:wobeidalemasaike.ova 共15GB。

    一:ova 就是 tar格式的。先解压

    /home/tong/Temp [tong@T7] [11:02]
    > tar xvf wobeidalemasaike.ova 
    
    /home/tong/Temp [tong@T7] [11:03]
    > ll
    total 0
    -rw-r--r-- 1 tong tong 15G Apr 13 11:03 wobeidalemasaike-disk1.vmdk
    -rw-r--r-- 1 tong tong 135 Apr 13 11:03 wobeidalemasaike.mf
    -rw-r--r-- 1 tong tong 15G Apr 13 11:02 wobeidalemasaike.ova
    -rw-r--r-- 1 tong tong 10K Apr 13 11:03 wobeidalemasaike.ovf

    二:转换成qcow2格式。这个过程我用了4个小时,并且硬盘IO始终100%,电脑几乎动不了,而无法进行其他工作。。。

    /home/tong/Temp [tong@T7] [11:03]
    > qemu-img convert -f vmdk -O qcow2 wobeidalemasaike-disk1.vmdk wobeidalemasaike-disk1.qcow2
    
    /home/tong/Temp [tong@T7] [11:09]
    > ll |grep disk1
    -rw-r--r-- 1 tong tong 19G Apr 13 11:09 wobeidalemasaike-disk1.qcow2
    -rw-r--r-- 1 tong tong 15G Apr 13 11:03 wobeidalemasaike-disk1.vmdk

    另外,可以对比一下文件格式的大小。

    三:挂载。这个时候,就要吐草一下步骤二的,转格式真的很愚蠢,因为无论是使用qemu-nbd挂载还是直接启动,都可以直接使用vmdk格式,而不需要一定使用qcow2。

      简直是愚蠢透了,浪费了4,5个小时的时间。

      启动是这样的:

    /home/tong/Temp [tong@T7] [11:18]
    > qemu-system-x86_64 -hda wobeidalemasaike-disk1.vmdk

      挂载可以参考这个:

      http://www.cnblogs.com/hugetong/p/5903105.html

    四:挂好之后,预料之中,分区是加密的:

    /home/tong [tong@T7] [11:25]
    > blkid 
    /dev/nbd0p1: UUID="7e126a21-4f25-4c78-a39d-ad891d3809e1" TYPE="ext4" PARTLABEL="boot" PARTUUID="40670754-aee2-4f4a-a85c-48d4667f65f8"
    /dev/nbd0p2: UUID="115a6d13-b04e-4e56-9a52-05408487431f" TYPE="swap" PARTLABEL="swap" PARTUUID="b8fbd911-1b24-4be4-bdc9-3ffc884c6d0c"
    /dev/nbd0p3: UUID="7b98be95-b401-44d2-9889-1c266ab9d0c3" TYPE="crypto_LUKS" PARTLABEL="root" PARTUUID="cb8c0f4f-fd20-475b-993a-0b82f144caf2"
    /dev/nbd0p4: UUID="f9edf6ec-0cda-4b88-ab0c-d87627f24d9d" TYPE="crypto_LUKS" PARTLABEL="recovery" PARTUUID="24151f98-f6f0-4ee1-8c25-6f045835b3de"
    /dev/nbd0p5: UUID="d75fd96e-7ee9-44ba-94d6-b342dbafe72d" TYPE="ext4" PARTLABEL="data" PARTUUID="ae85b8cd-2816-4e03-87b1-83ef159ceeda"

      TODO: 加密分区。

    五: 分区在加密,也会被initrd解出来,所以initrd应该怎么处理呢?

    六: 内核呢?

    七:解压内核:(14441 = 14432 + 8 )就是1f8b08的地址偏移。

    [root@jay-rhel boot]# od -t x1 -A d vmlinuz-2.6.32-372.el6_jay.x86_64 | grep "1f 8b 08"
    0014432 48 8d 83 70 81 3d 00 ff e0 1f 8b 08 00 c4 01 9c
    [root@jay-rhel boot]# dd if=vmlinuz-2.6.32-372.el6_jay.x86_64 bs=1 skip=14441 | zcat > vmlinux-jay
     
    gzip: stdin: decompression OK, trailing garbage ignored
    [root@jay-rhel boot]# file vmlinux-jay
    vmlinux-jay: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

    参考:http://smilejay.com/2013/06/extract-vmlinuz-and-initrd/

    八:解密了!@2017-04-19

      我费劲心机的研究,也没有把它解出来。测试部轻轻松的一个single就搞定了。。。。

    8.1 把boot分区挂载起来,把grub里面的password去掉。

    8.2 添加kernel选项:

    rw single init=/bin/bash

    8.3 给root一个密码。

    8.4 重启。

    8.5 用root登录。整个加密分区就都拿到了。

    九,进来了才知道,不过只是干了这么一件事而已。。。。。

    # cat /etc/passwd
    super:x:402:402:Super User:/home/super:/opt/radar-console/bin/clish-shell
    admin:x:403:403:Admin User:/home/admin:/opt/radar-console/bin/clish-shell

    十,加个什么破密,防君子啊。。。。

  • 相关阅读:
    Atitit.随时间变色特效 ---包厢管理系统的规划
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit.执行cli cmd的原理与调试
  • 原文地址:https://www.cnblogs.com/hugetong/p/6703134.html
Copyright © 2011-2022 走看看