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

一、binwalk工具的基本用法介绍

1.获取帮助信息

  1. $ binwalk -h
  2. # 或者
  3. $ binwalk --help

2.固件分析扫描

  1. $ binwalk firmware.bin
  2. # 或者
  3. $ binwalk firmware.bin | head

3.提取文件系统

  1. # 使用默认的预定义配置文件extract.conf
  2. $ binwalk -e firmware.bin
  3. # 使用指定自定义的配置文件my_extract.conf
  4. $ binwalk --extract=./my_extract.conf firmware.bin

4.设置过滤选项

5.显示完整的扫描结果

6.固件文件的比较

7.日志记录

8.指令系统分析

9.熵分析

10.启发式分析

11.使用指定插件分析扫描固件(已经去掉)

  1. $ binwalk --enable-plugin=zlib firmware.bin

12.手动提取文件

-D, --dd=<type[:ext[:cmd]]>

Extracts files identified during a --signature scan.
Multiple --dd options may be specified.

  • type is a *lower case* string contained in the signature description (regular expressions are supported)
  • ext is the file extension to use when saving the data disk (default none)
  • cmd is an optional command to execute after the data has been saved to disk

By default, the file name is the hexadecimal offset where the signature was found, unless an alternate file name is specified in the signature itself.

The following example demonstrates specifying an extraction rule using the --dd option that will extract any signature that contains the string 'zip archive' with a file extension of 'zip', and subsequently execute
the 'unzip' command. Additionally, PNG images are extracted as-is with a 'png' file extension.

Note the use of the '%e' placeholder. This placeholder will be replaced with the relative path to the extracted file when the unzip command is executed:

  1. $ binwalk -D 'zip archive:zip:unzip %e' -D 'png image:png' firmware.bin

13.binwalk工具的插件功能

在最新版的binwalk工具中关于插件的功能已经没有了,下图是原来有的插件功能。

参考资料:

《揭秘家用路由器0day漏洞挖掘技术》

Binwalk:后门(固件)分析利器》 错误不少,不少功能介绍在最新版的binwalk中已经去掉了。

二、binwalk工具的使用帮助

  1. $ binwalk -h

帮助命令的结果:

  1. Binwalk v2.1.2b
  2. Craig Heffner, http://www.binwalk.org
  3. Usage: binwalk [OPTIONS] [FILE1] [FILE2] [FILE3] ...
  4. Disassembly Scan Options:
  5. -Y, --disasm Identify the CPU architecture of a file using the capstone disassembler
  6. -T, --minsn=<int> Minimum number of consecutive instructions to be considered valid (default: 500)
  7. -k, --continue Don't stop at the first match
  8. Signature Scan Options:
  9. -B, --signature Scan target file(s) for common file signatures
  10. -R, --raw=<str> Scan target file(s) for the specified sequence of bytes
  11. -A, --opcodes Scan target file(s) for common executable opcode signatures
  12. -m, --magic=<file> Specify a custom magic file to use
  13. -b, --dumb Disable smart signature keywords
  14. -I, --invalid Show results marked as invalid
  15. -x, --exclude=<str> Exclude results that match <str>
  16. -y, --include=<str> Only show results that match <str>
  17. Extraction Options:
  18. -e, --extract Automatically extract known file types
  19. -D, --dd=<type:ext:cmd> Extract <type> signatures, give the files an extension of <ext>, and execute <cmd>
  20. -M, --matryoshka Recursively scan extracted files
  21. -d, --depth=<int> Limit matryoshka recursion depth (default: 8 levels deep)
  22. -C, --directory=<str> Extract files/folders to a custom directory (default: current working directory)
  23. -j, --size=<int> Limit the size of each extracted file
  24. -n, --count=<int> Limit the number of extracted files
  25. -r, --rm Delete carved files after extraction
  26. -z, --carve Carve data from files, but don't execute extraction utilities
  27. Entropy Analysis Options:
  28. -E, --entropy Calculate file entropy
  29. -F, --fast Use faster, but less detailed, entropy analysis
  30. -J, --save Save plot as a PNG
  31. -Q, --nlegend Omit the legend from the entropy plot graph
  32. -N, --nplot Do not generate an entropy plot graph
  33. -H, --high=<float> Set the rising edge entropy trigger threshold (default: 0.95)
  34. -L, --low=<float> Set the falling edge entropy trigger threshold (default: 0.85)
  35. Raw Compression Options:
  36. -X, --deflate Scan for raw deflate compression streams
  37. -Z, --lzma Scan for raw LZMA compression streams
  38. -P, --partial Perform a superficial, but faster, scan
  39. -S, --stop Stop after the first result
  40. Binary Diffing Options:
  41. -W, --hexdump Perform a hexdump / diff of a file or files
  42. -G, --green Only show lines containing bytes that are the same among all files
  43. -i, --red Only show lines containing bytes that are different among all files
  44. -U, --blue Only show lines containing bytes that are different among some files
  45. -w, --terse Diff all files, but only display a hex dump of the first file
  46. General Options:
  47. -l, --length=<int> Number of bytes to scan
  48. -o, --offset=<int> Start scan at this file offset
  49. -O, --base=<int> Add a base address to all printed offsets
  50. -K, --block=<int> Set file block size
  51. -g, --swap=<int> Reverse every n bytes before scanning
  52. -f, --log=<file> Log results to file
  53. -c, --csv Log results to file in CSV format
  54. -t, --term Format output to fit the terminal window
  55. -q, --quiet Suppress output to stdout
  56. -v, --verbose Enable verbose output
  57. -h, --help Show help output
  58. -a, --finclude=<str> Only scan files whose names match this regex
  59. -p, --fexclude=<str> Do not scan files whose names match this regex
  60. -s, --status=<int> Enable the status server on the specified port

三、binwalk工具官方的使用帮助说明

-B, --signature

This performs a signature analysis of the specified files; if no other analysis options are specified, this is the default.

Use this option when you wish to combine the signature analysis with additional analyzers, such as--entropy:

  1. $ binwalk --signature firmware.bin
  2.  
  3. DECIMAL HEX DESCRIPTION
  4. -------------------------------------------------------------------------------------------------------------------
  5. 0 0x0 DLOB firmware header, boot partition: "dev=/dev/mtdblock/2"
  6. 112 0x70 LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 3797616 bytes
  7. 1310832 0x140070 PackImg section delimiter tag, little endian size: 13644032 bytes; big endian size: 3264512 bytes
  8. 1310864 0x140090 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 3264162 bytes, 1866 inodes, blocksize: 65536 bytes, created: Tue Apr 3 04:12:22 2012

-R,
--raw=<string>

This allows you to search the specified file(s) for a custom string. The search string can include escaped octal and/or hexadecimal values.

Use this option when you need to search for a custom sequence of raw bytes:

  1. $ binwalk -R "\x00\x01\x02\x03\x04" firmware.bin
  2.  
  3. DECIMAL HEX DESCRIPTION
  4. -------------------------------------------------------------------------------------------------------------------
  5. 377654 0x5C336 Raw string signature

-A,
--opcodes

This instructs binwalk to search the specified file(s) for executable opcodes common to a variety of CPU architectures. Note that some opcode signatures are short and thus are prone to producing false positive results.

Use this when you need to locate executable code in a file, or if you need to determine the architecture of a executable file:

  1. $ binwalk -A firmware.bin
  2.  
  3. DECIMAL HEX DESCRIPTION
  4. -------------------------------------------------------------------------------------------------------------------
  5. 268 0x10C MIPS instructions, function prologue
  6. 412 0x19C MIPS instructions, function prologue
  7. 636 0x27C MIPS instructions, function prologue
  8. 812 0x32C MIPS instructions, function epilogue
  9. 920 0x398 MIPS instructions, function epilogue
  10. 948 0x3B4 MIPS instructions, function prologue
  11. 1056 0x420 MIPS instructions, function epilogue
  12. 1080 0x438 MIPS instructions, function prologue
  13. 1356 0x54C MIPS instructions, function epilogue
  14. 1392 0x570 MIPS instructions, function prologue
  15. 1836 0x72C MIPS instructions, function epilogue
  16. 2012 0x7DC MIPS instructions, function prologue
  17. 2260 0x8D4 MIPS instructions, function epilogue
  18. 2512 0x9D0 MIPS instructions, function prologue
  19. 2552 0x9F8 MIPS instructions, function epilogue

-m,
--magic=<file>

Load an alternate magic signature file instead of the default.

Use this if you have a custom
magic signature file
 containing signatures you want to search for:

  1. $ binwalk -m ./foobar.mgc firmware.bin
  2.  
  3. DECIMAL HEX DESCRIPTION
  4. -------------------------------------------------------------------------------------------------------------------
  5. 268 0x10C Foobar
  6. 412 0x19C Foobar
  7. 636 0x27C Foobar

-b,
--dumb

Disables "smart" signature matching.

Useful when smart signature keywords in false positive signatures cause other valid signatures to be missed (e.g., via the jump-to-offset keyword):

  1. $ binwalk -b firmware.bin

-I,
--invalid

Displays all results, even those marked as invalid.

Useful if you think that binwalk is treating a valid file as invalid, but can produce a lot of garbage output:

  1. $ binwalk -I firmware.bin

-x,
--exclude=<filter>

Excludes signatures that match the specified exclude filter. Filters are lower-case regular expressions; multiple filters may be specified.

Magic signatures whose first line matches the specified filter will not be loaded at all; thus, the use of this filter can help decrease signature scan times.

Useful for excluding unneeded or uninteresting results:

  1. $ binwalk -x 'mach-o' -x '^hp' firmware.bin # exclude HP calculator and OSX mach-o signatures

-y,
--include=<filter>

Includes only signatures that match the specified include filter. Filters are lower-case regular expressions; multiple filters may be specified.

Only magic signatures whose first line matches the specified filter will be loaded; thus, the use of this filter can help decrease signature scan times.

Useful when searching only for specific signatures or types of signatures:

  1. $ binwalk -y 'filesystem' firmware.bin # only search for filesystem signatures

-Y,
--disasm

Attempts to identify the CPU architecture of executable code contained in a file using the capstone disassembler.

Specifying --verbose with this scan
will additionally print the disassembled instructions.

Generally more robust than the simple signature analysis performed by --opcodes,
but supports fewer architectures:

  1. $ binwalk --disasm firmware.bin
  2.  
  3. DECIMAL HEXADECIMAL DESCRIPTION
  4. --------------------------------------------------------------------------------
  5. 428 0x1AC MIPS executable code, 32/64-bit, little endian, at least 750 valid instructions

-T,
--minsn

Set the minimum number of consecutive instructions for a --disasm result
to be considered valid. The default is 500 instructions:

  1. $ binwalk --minsn=1200 -Y firmware.bin
  2.  
  3. DECIMAL HEXADECIMAL DESCRIPTION
  4. --------------------------------------------------------------------------------
  5. 428 0x1AC MIPS executable code, 32/64-bit, little endian, at least 1250 valid instructions

-k,
--continue

Instruct --disasm to not stop at the
first result:

  1. $ binwalk --continue -Y firmware.bin
  2.  
  3. DECIMAL HEXADECIMAL DESCRIPTION
  4. --------------------------------------------------------------------------------
  5. 428 0x1AC MIPS executable code, 32/64-bit, little endian, at least 1250 valid instructions
  6. 1048576 0x100000 MIPS executable code, 32/64-bit, little endian, at least 1250 valid instructions
  7. ...

-E,
--entropy

Performs an entropy analysis on the input file(s), prints raw entropy data and generates entropy graphs.

Entropy analysis can be combined with --signature--raw,
or --opcodes for a better understanding of the target file(s).

Useful for identifying sections of interesting data that a signature scan may have missed:

  1. $ binwalk -E firmware.bin
  2. DECIMAL HEXADECIMAL ENTROPY
  3. --------------------------------------------------------------------------------
  4. 0 0x0 Rising entropy edge (0.983751)
  5. 1155072 0x11A000 Falling entropy edge (0.000000)
  6. 1181696 0x120800 Rising entropy edge (0.990546)
  7. 3780608 0x39B000 Falling entropy edge (0.000000)

When combined with the --verbose option,
the raw entropy calculated for each data block is printed:

  1. $ binwalk -E --verbose firmware.bin
  2.  
  3. DECIMAL HEX ENTROPY ANALYSIS
  4. --------------------------------------------------------------------------------
  5. 0 0x0 0.964914
  6. 1024 0x400 0.978591
  7. 2048 0x800 0.973048
  8. 3072 0xC00 0.976195
  9. 4096 0x1000 0.976072
  10. 5120 0x1400 0.976734
  11. 6144 0x1800 0.976861
  12. 7168 0x1C00 0.972385
  13. 8192 0x2000 0.972518
  14. ...

PYTHON API WARNING: The graphing module used by binwalk (pyqtgraph)
invokes os._exitupon completion; this is apparently necessary to handle various QT issues. When running binwalk from the command line, entropy analysis is always done last, causing little
worry. However, if invoking entropy analysis via the API, be sure to disable graphing (--nplot)
to prevent your script from exiting prematurely.


-J,
--save

Automatically saves the entropy plot generated by --entropy to
a PNG file instead of displaying it.

  1. $ binwalk --save -E firmware.bin

-Q,
--nlegend

Omits the legend from the entropy plot(s) generated by --entropy:

  1. $ binwalk --entropy -Q firmware.bin

-N,
--nplot

Disables graphical entropy plots for the --entropy scan.

  1. $ binwalk --entropy -N firmware.bin

-H,
--high=<float>

Sets the rising edge entropy trigger level. Only valid when used with --entropy.
The specified value should be between 0 and 1:

  1. $ binwalk --entropy -H .9 firmware.bin

-L,
--low=<float>

Sets the falling edge entropy trigger level. Only valid when used with --entropy.
The specified value should be between 0 and 1:

  1. $ binwalk --entropy -L .3 firmware.bin

-W,
--hexdump

Performs a hex dump of the input file(s) and color-codes bytes as follows:

  • Green - These bytes were
    the same in all files
  • Red - These
    bytes were different in all files
  • Blue -
    These bytes were only different in some files

Any arbitrary number of files may be diffed; additional useful options are --block--offset--lengthand --terse:

  1. $ binwalk -W --block=8 --length=64 firmware1.bin firmware2.bin firmware3.bin

-G,
--green

Only display lines that contain green bytes during a --hexdump:

  1. $ binwalk -W --green firmware1.bin firmware2.bin firmware3.bin

-i,
--red

Only display lines that contain red bytes during a --hexdump:

  1. $ binwalk -W --red firmware1.bin firmware2.bin firmware3.bin

-U,
--blue

Only display lines that contain blue bytes during a --hexdump:

  1. $ binwalk -W --blue firmware1.bin firmware2.bin firmware3.bin

-w,
--terse

When performing a --hexdump, only
display a hex dump of the first file.

Useful when diffing many files that don't all fit on the screen:

  1. $ binwalk -W --terse firmware1.bin firmware2.bin firmware3.bin

-e,
--extract

Loads common --dd extraction rules from
a predefined file.

  1. $ binwalk -e firmware.bin

-D,
--dd=<type[:ext[:cmd]]>

Extracts files identified during a --signature scan.
Multiple --dd options may be specified.

  • type is a *lower case* string contained in the signature description (regular expressions are supported)
  • ext is the file extension to use when saving the data disk (default none)
  • cmd is an optional command to execute after the data has been saved to disk

By default, the file name is the hexadecimal offset where the signature was found, unless an alternate file name is specified in the signature itself.

The following example demonstrates specifying an extraction rule using the --dd option that will extract any signature that contains the string 'zip archive' with a file extension of 'zip', and subsequently execute
the 'unzip' command. Additionally, PNG images are extracted as-is with a 'png' file extension.

Note the use of the '%e' placeholder. This placeholder will be replaced with the relative path to the extracted file when the unzip command is executed:

  1. $ binwalk -D 'zip archive:zip:unzip %e' -D 'png image:png' firmware.bin

-M,
--matryoshka

This option will recursively scan extracted files during a --signature scan.
Only valid when used with--extract or --dd.

  1. $ binwalk -e -M firmware.bin

-C,
--directory=<str>

Set the output directory for extracted data (default: current working directory).

Only applicable when used with the --extract or --dd options:

  1. $ binwalk -e --directory=/tmp firmware.bin

-d,
--depth=<int>

Limit the --matryoshka recursion
depth. By default, the depth is set to 8.

Only applicable when used with the --matryoshka option:

  1. $ binwalk -Me -d 5 firmware.bin

-j,
--size=<int>

Limit the size of data carved out of the target file(s). By default, there is no size limit.

Only valid when used with --extract or --dd.

Note that this option does not limit the size of data extracted / decompressed by external extraction utilities.

Useful when carving or extracting data from large files with limited disk space:

  1. $ binwalk -e --size=0x100000 firmware.bin

-r,
--rm

Cleans up zero-size files and files that couldn't be processed by extraction utilities during extraction.

Only valid when used with --extract or --dd.

Useful for cleaning up false-positive files copied out of the target file(s) during extraction:

  1. $ binwalk -e -r firmware.bin

-z,
--carve

Performs data carving only, does not execute external extraction utilities.

Only valid when used with --extract or --dd.

Useful for when you want to simply carve data from the target file(s), but not automatically extract / decompress that data:

  1. $ binwalk -e --carve firmware.bin

-X,
--deflate

Identifies probable raw deflate compressed data streams by brute-force.

Useful for recovering data from files with corrupt/modified/missing headers. May be combined with --lzma.

This scan can be slow, so it is useful to limit the scanned area with --offset and/or --length:

  1. $ binwalk --deflate -o 0x100 -l 10000 firmware.bin

-Z,
--lzma

Identifies probable raw LZMA compressed data streams by brute-force.

Useful for recovering data from files with corrupt/modified/missing headers. May be combined with --deflate.

Due to the various number of LZMA compression options this scan can be very slow, so it is useful to limit the scanned area with --offset and/or --length:

  1. $ binwalk --lzma -o 0x100 -l 10000 firmware.bin

-P,
--partial

Only search for compression streams using common compression options. Can significantly improve the speed of --lzma scans:

  1. $ binwalk --partial -Z -o 0x100 -l 10000 firmware.bin

-S,
--stop

When used with the --lzma and/or --deflate options,
this will stop the scan after the first result is displayed:

  1. $ binwalk --stop -Z firmware.bin

-l,
--length=<int>

Sets the number of bytes to analyze in a target file:

  1. $ binwalk --length=0x100 firmware.bin

-o,
--offset=<int>

Sets the starting offset at which to begin analyzing a target file. A negative offset (distance from End-Of-File) may also be specified:

  1. $ binwalk --offset=0x100 firmware.bin

-O,
--base=<int>

Sets the base address for all printed offsets. This value will be added to the raw file offset of all printed results:

  1. $ binwalk --base=0x80001000 firmware.bin

-K,
--block=<int>

Sets the block size, in bytes, used during analysis.

When used with --entropy, this determines
the size of each block analyzed during entropy analysis.

When used with --hexdump, this sets
the number of bytes displayed per line in the hex output.

  1. $ binwalk --diff -K 8 firmware1.bin firmware2.bin

-g,
--swap=<int>

Reverses every n bytes before scanning them:

  1. $ binwalk --swap=2 firmware.bin

-f,
--log=<file>

Log scan results to the specified file.

Data saved to the log file will be identical to that displayed in the terminal unless --csv is
specified.

Data will be saved to the log file even if --quiet is
specified:

  1. $ binwalk --log=binwalk.log firmware.bin

-c,
--csv

Causes log data to be saved in CSV format. This option is ignored if used with --cast or --hexdump.

Only valid when combined with the --log option:

  1. $ binwalk --log=binwalk.log --csv firmware.bin

-t,
--term

Formats output to the current terminal window width.

Useful for making long line-wrapped output more readable:

  1. $ binwalk --term firmware.bin
  2.  
  3. DECIMAL HEX DESCRIPTION
  4. -------------------------------------------------------------------------------------------------------
  5. 0 0x0 DLOB firmware header, boot partition: "dev=/dev/mtdblock/2"
  6. 112 0x70 LZMA compressed data, properties: 0x5D, dictionary size: 33554432
  7. bytes, uncompressed size: 3805904 bytes
  8. 1310832 0x140070 PackImg section delimiter tag, little endian size: 15741184 bytes; big
  9. endian size: 3272704 bytes
  10. 1310864 0x140090 Squashfs filesystem, little endian, version 4.0, compression:lzma,
  11. size: 3268870 bytes, 1860 inodes, blocksize: 65536 bytes, created:
  12. Mon Apr 22 04:56:42 2013

-q,
--quiet

Disables output to stdout.

Most convenient when used with --log or
verbose scans like --entropy:

  1. $ binwalk --quiet -f binwalk.log firmware.bin

-v,
--verbose

Enables verbose output, including target file MD5 and scan timestamp.

If specified twice, output from external extraction utilities will be displayed if --extract has
also been specified:

  1. $ binwalk --verbose firmware.bin
  2.  
  3. Scan Time: 2013-11-10 21:04:04
  4. Signatures: 265
  5. Target File: firmware.bin
  6. MD5 Checksum: 6b91cdff1b4f0134b24b7041e079dd3e
  7.  
  8. DECIMAL HEX DESCRIPTION
  9. -------------------------------------------------------------------------------------------------------------------
  10. 0 0x0 DLOB firmware header, boot partition: "dev=/dev/mtdblock/2"
  11. 112 0x70 LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 3805904 bytes
  12. 1310832 0x140070 PackImg section delimiter tag, little endian size: 15741184 bytes; big endian size: 3272704 bytes
  13. 1310864 0x140090 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 3268870 bytes, 1860 inodes, blocksize: 65536 bytes, created: Mon Apr 22 04:56:42 2013

-h,
--help

Displays binwalk help output:

  1. $ binwalk --help

-a,
--finclude=<str>

Only scan files whose names match the given regex string. Particularly useful when combined with--matryoshka and --extract

  1. $ binwalk -M -e --finclude='\.bin$' firmware.bin

-p,
--fexclude=<str>

Do not scan files whose names match the given regex string. Particularly useful when combined with --matryoshka and --extract

  1. $ binwalk -M -e --fexclude='\.pdf$' firmware_archive.zip

-s,
--status=<int>

Enable the status server on the specified port number. The status server listens on localhost only and prints out human readable ASCII data related to the current scan status. You can connect to it with telnet, netcat,
etc.

  1. $ binwalk --status=8080 firmware_archive.zip

参考网址:

https://github.com/devttys0/binwalk/wiki/Quick-Start-Guide

路由器逆向分析------binwalk工具的详细使用说明的更多相关文章

  1. 路由器逆向分析------binwalk工具的安装

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/65441110 一.binwalk工具运行支持的平台 binwalk工具安装支持的平 ...

  2. 路由器逆向分析------firmware-mod-kit工具安装和使用说明

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68061957 一.firmware-mod-kit工具的安装 firmware-m ...

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

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

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

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69652258 在QEMU MIPS虚拟机上运行MIPS程序--SSH方式 有关在u ...

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

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

  6. 路由器逆向分析------sasquatch和squashfs-tools工具的安装和使用

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68942660 一.sasquatch工具的安装和使用 sasquatch工具支持对 ...

  7. 路由器逆向分析------MIPS交叉编译环境的搭建(Buildroot)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68950682 为了能在我们熟悉的windows或者ubuntu下开发mips架构的 ...

  8. 路由器逆向分析------在Linux上安装IDA Pro

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69665905 01.在Linux系统上安装Linux版本的IDA Pro Linu ...

  9. 路由器逆向分析------QEMU的下载和安装(Linux平台)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68953160 一.QEMU源码的下载和编译 QEMU源码的github下载地址:h ...

随机推荐

  1. 653. 两数之和 IV - 输入 BST + HashSet

    653. 两数之和 IV - 输入 BST 题目描述 题解分析 最简单的方法就是遍历整棵树,找出所有可能的组合,判断是否存在和为 kk 的一对节点.现在在此基础上做一些改进. 如果存在两个元素之和为 ...

  2. CVE-2019-20372-Nginx error_page 请求走私

    一.漏洞简介 Nginx 1.17.7之前版本中 error_page 存在安全漏洞.攻击者可利用该漏洞读取未授权的Web页面. 二.漏洞影响 Ngnix < 1.17.7 三.复现过程 错误代 ...

  3. div+伪元素实现太极图

    需求:使用div和伪元素实现阴阳太极图 图例: 代码: <html> <head> <title>太极图</title> <style type= ...

  4. 【odoo14】第十五章、网站客户端开发

    odoo的web客户端.后台是员工经常使用的地方.在第九章中,我们了解了如何使用后台提供的各种可能性.本章,我们将了解如何扩展这种可能性.其中web模块包含了我们在使用odoo中的各种交互行为. 本章 ...

  5. VSCode 微信小程序扩展开发

    写在前面 为什么要开发这个扩展呢,是因为微信开发者工具自身不支持页面引入组件的跳转,人工根据引入组件路径查看对应代码的方式,效率偏低.就形如这样的json文件,引入了多个组件,比如要查看 " ...

  6. python基础学习之字符串的功能方法

    字符串:str的功能记录(该类需要记忆) .isdecimal():意思是判断是否由数字构成,仅仅可以解析"123" a='123'    d=a.isdecimal()    p ...

  7. 2019 南京网络赛 B super_log 【递归欧拉降幂】

    一.题目 super_log 二.分析 公式很好推出来,就是$$a^{a^{a^{a^{...}}}}$$一共是$b$个$a$. 对于上式,由于指数太大,需要降幂,这里需要用到扩展欧拉定理: 用这个定 ...

  8. 从yield到yield from再到python协程

    yield 关键字 def fib(): a,b = 0,1 while 1: yield b a,b = b,a+b yield是在:PEP 255 -- Simple Generators 这个p ...

  9. Android Studio 之 用 Drawable resource file 美化 Button 样式

    shape •新建 Drawable resource file 点击 app/src/main/res 找到 drawable 文件夹,右击->New->Drawable Resourc ...

  10. 学习笔记-ionic3 环境配置搭建到打包

    折腾了两周总算理清楚了,参考的链接如下: https://blog.csdn.net/zeternityyt/article/details/79655150  环境配置 https://segmen ...