/bugs-sniffer

omg。。。

Primary LanguageC++

bugs-sniffer

本次实验主要完成的工作如下:利用c++、libpcap和ncurses以及pthread开发bugs-sniffer基于wireshark的二次开发,尝试用libpcap抓DPDK的包。

BUGS-SNIFFER 功能简介

该工具是基于终端的网络流量嗅探器和分析器,有良好的可扩展性和易用性,实现的功能有:

  • 使用ncursespthread进行实时异步地在终端进行结果展示
  • 读取设备的所有接口并展示
  • 读取设备电源信息并展示
  • 读取设备当前时间并展示
  • 首页:
    • 实时展示每个接口当前的通过的流量数
    • 展示所有的设备接口,接口名称+地址信息
    • 设置BPF过滤器
    • 读取pcap文件
    • 选择设备接口,进入详情页捕获并展示
    • 根据IP和端口进行TCP流跟踪:
      • 使用BPF进行流跟踪
      • 使用hash表进行流跟踪
    • 根据PID获取当前进程所用的端口号,并进行TCP流跟踪
    • 按下上下键选择接口类型
    • nfqueue
    • 按下f键输入filter、要读取的文件、pid等信息
  • 错误页:
    • 提示当前页面大小不符合最低标准,直到用户把页面大小调整到合适的大小
  • 详情页:
    • 实时捕获并展示抓到的所有的流量的简略信息
      • 序号、时间戳、src、dst、协议类型、包长和包简介信息
    • 当单个包被选中后展示该包的详情信息,构造该流量包的树形结构(递归分析包)的详细信息,并进行高速缓存
    • 实时展示上行流量和下行流量
    • 异步保存捕获的流量信息,按下s保存
    • 按下空格可以暂停或者继续抓包
  • 根据对应的特征递归进行包分析:
    • Ether:src和dst mac addr,ether类型
    • ARP:硬件类型、协议类型、硬件大小、协议大小、opcode、发送者的mac和ip、接收者的mac和ip
    • RARP:硬件类型、协议类型、硬件大小、协议大小、opcode、发送者的mac和ip、接收者的mac和ip
    • VLAN
    • IP:版本,头长、服务类型、总长、id、flags、偏移、ttl、协议类型、checksum、源IP、目标IP
    • IP6:流类型、负载长、下一个头协议类型、hop limit、源IP和目标IP
    • ICMP:类型、代码号、checksum、identifier和序列号
    • TCP:源端口、目标端口、序列号、ack号、数据偏移、flags、窗口大小、checksum、标急位
    • UDP:源端口、目标端口、长度、checksum
    • IGMP:互联网组管理协议
    • TLS:类型、版本
    • HTTP
    • DNS:id、flags、问题数、问题详情
    • DHCP:动态主机配置协议
    • SSDP:简单服务发现协议
    • DTLS:类型
    • STUN:类型
    • QUIC:quick UDP Internet Connections
    • ICMPv6:类型、代码号、checksum、flags