/OSS-FinalProject

2021开源技术大作业

Primary LanguageC

Sniffle

名字是创建仓库的时候 Github 给的建议, 不是拼写错误(x
基于 Npcap Npcap。文档说这个比 Winpcap好,因为那个已经不再更新了……

编译运行环境

  • MSYS2 + mingw-w64-cmake + mingw-w64-gcc-10.1.1
  • 依赖 npcap. 请确保你安装
  • (可选)错误信息打印依赖 mingw-w64-x86_64-binutilsaddr2line,已经放入 Lib 文件夹下
  • 其余需要的静态库已经放入 Lib 目录下
  • 如果你不使用 MSYS/MinGW Bash,请先打开 Windows 10vt codes 的支持。

Powershell 里执行:

Set-ItemProperty HKCU:\Console VirtualTerminalLevel -Type DWORD 1

编译步骤

  1. 克隆仓库
$ git clone -o sniffle --recurse-submodules https://github.com/CORunEverywhere/Sniffle.git 
  1. 创建文件夹
$ mkdir -p sniffle/build/ && cd $_
  1. 确保你配置好了CMAKE_CXX_COMPILER 后,运行 cmake:
$ cmake ..
  1. 运行 make:
$ make

目录结构

├── Include             包含 `Npcap` 和 `sniffle` 所需要的所有头文件
│   └── pcap
├── Lib                 包含编译所需要的二进制文件
│   └── x64
├── src                 *.cc 实现
└── third_party         可能会用到的第三方库Orz
    ├── nano-signal-slot
    └── npcap

使用方法

配置过滤器

在运行目录下创建 sniffle_config.ini, 按照如下格式书写过滤规则。 packet_filter 接受一个字符串,请使用双引号引起字符串。
规则语法请参见 npcap 开发文档

[sniffle]
; See https://nmap.org/npcap/guide/wpcap/pcap-filter.html for more information
packet_filter = "arp or dst port 53 or src port 53"

默认的规则是全部的 tcpudp 报文。

选择监听设备

按照提示输入设备对应的序号回车确认即可。

输出

  • DNS 报文的解析
  • ARP 帧的解析
  • TCPUDP 的识别