Last updated on:February 18, 2023 pm

开源社区有着许多开源软件,我将优先从以下几个角度去挑选开源软件,并找寻它们之间的依赖与调用关系

  • 支持AFL进行Fuzzing的开源软件(参考https://github.com/aflgo/oss-fuzz/tree/master/projects)
  • 提供文件操作API或者网络通信API的开源工具。因为它们所涉及的文件读取通信协议栈往往更容易产生crash
  • 体积不大,易于源码安装

1 开源软件挑选

import os
import yaml

def checkAflSupport(dirname):
    try:
        f = open(dirname + '/project.yaml', 'r')
        data = yaml.load(f)
    except:
        # print('there is no project.yaml in %s' %dirname)
        pass
    try:
        if 'afl' in data['fuzzing_engines']:
            toolname = dirname.split('/')[-1]
            print(toolname)
    except:
        # print('there is no fuzzing_engines given')
        pass

if __name__ == "__main__":
    proj_dir = './projects'
    projects = os.listdir(proj_dir)

    for proj_name in projects:
        if os.path.isdir(proj_dir + '/' + proj_name):
            checkAflSupport(proj_dir + '/' + proj_name)

采用parseFuzzProj.py脚本拉取oss-fuzz中支持AFL的开源软件,得到如下软件列表:

binutils brotli brunsli bzip2
c-ares capstone cjson cmark
graphicsmagick grok harfbuzz
hermes hostap
jbig2dec json-c
lcms libcbor libexif libfdk-aac libidn2 libldac libpcap libplist libspectre libtasn1 libteken libwebp libxml2 libyaml libyuv lz4
miniz monero mupdf
nanopb ndpi nestegg nghttp2 ntp
openjpeg openthread opus ots
pcre2 pffft proxygen
qubes-os
rnp
speex stb
tidy-html5 tor tremor
unicorn usrsctp
vorbis
wireshark woff2 wolfssl wuffs
xz
yajl-ruby
zlib zlib-ng zstd

挑选与文件操作和网络通信相关的开源软件:

# 文件操作相关的开源软件
binutils bzip2
grok
libyaml libxml2 libjson-c3
xz
zlib

# 网络通信相关的开源软件
fastnetmon
libpcap libndpi 
wireshark

2 软件依赖关系查找

软件之间的调用关系即依赖关系,我们可以借助包管理工具apt来查找开源软件的依赖有哪些以及被哪些软件依赖

  • 查询镜像源是否有某款开源软件SOFTWARE

    sudo apt-cache search SOFTWARE_NAME | grep SOFTWARE_NAME
  • 查询某款开源软件SOFTWARE的依赖:

    sudo apt-cache depends SOFTWARE_NAME | grep Depends
  • 查询某款开源软件SOFTWARE被哪些软件依赖:

    sudo apt-cache rdepends SOFTWARE_NAME

3 开源软件依赖组合分析

3.1 libpcap

依赖与被依赖

depends:

  • libc6

rdepends:

  • wireshark-qt,wireshark-gtk,tshark
  • tcpdump,tcpreplay
  • snort,suricata,fastnetmon
  • nmap

代码相似性

  • 与Nmap:
    • netmap/libpcap与libpcap仓库下有大量同名.c代码文件,且有若干同名目录
  • 与suricata:

    • source-pcap.c中存在libpcap的API调用
  • 与wireshark:

    • wireshark/writecap/pcapio.c存在libpcap magic number等相关字段和结构体
    • wireshark/capture_opts.c

TODO…


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

搜索引擎高级搜索技巧 Previous
AFLGO安装与使用 Next

 TOC

载入天数... 载入时分秒...