Code Monkey home page Code Monkey logo

pcap_classifier's Introduction

pcap_classifier

利用神经网络对网络数据包进行分类

分类标记

VPN-nonVPN dataset (ISCXVPN2016) 数据集给出了一些 .pcap 文件,存储了各种流量的数据包,但是并没有直接给出每个包具体标记的编码,所以需要一种简单的编码方式,来描述每个文件具体的数据类型和应用类型。这些类型的分类在 classify.py 文件中给出,分别定义了数据有没有经过 VPN,还有每种类型的数据,以及应用程序的编码。以便于后期分类中的处理。

数据处理

VPN-nonVPN dataset (ISCXVPN2016) 提供了许多的 .pcap 包,可以直接使用 scapy 包对其进行处理,截取以太网帧负载的前 1024 个字节,对于不够 1024 字节的,用 0 填充。

对于每个包数据,以及相应的分类标记,作为一个元组 (tuple) 存储,将所有的数据包信息存储在一个列表中,整体持久化成一个 pickle 文件,这样既方便存取,又比直接存储大量的图片性能更高。

对于一些意义不大的数据包进行了丢弃处理,比如 TCP 中标记了 SYN, ACK, FIN 的包,这些包并没有实际的负载,所以可以认为是噪声,还有用于 DNS 解析的包,也和实际应用关系不大。

最后利用 random_split() 函数将整体数据集,随机的切分成训练集和测试集,验证模型在尽可能随机的情况下的分类性能。

数据处理的详细代码见 dataset.py

模型优化

原模型对网络包进行了图像化处理,利用二维卷积操作进行分类,实现了不错的效果,不过网络包并没有显然的二维空间上的相关性,而直接进行图像处理的形式,显然说不通,于是将二维卷积换成一维卷积,也同样的到了不错的效果。在同样的数据集的情况下,得到了更好的分类性能。

具体模型及训练过程见 main.ipynb

分类结果

对每个文件的数据集取最多 1024 条,其中 5% 作为测试集,其余用于训练集。

总共 133274 条数据,其中训练集 126611 条,测试集 6663 条,训练 epoch = 50, batch_size = 4096


vpn 2 分类

此次实验只对全体数据集做 vpn 2 分类,分类结果如下:

分类测试性能图:

训练准确率 训练损失 测试准确率
正确数量 全部数量 正确率
6661 6663 0.9996

下面为对应每个类型的正确率:

nonvpn vpn
0.999 1.00

type 6 分类

此次实验只对全体数据集做数据类型 6 分类,不区分 app 和 vpn,分类结果如下:

分类测试性能图:

训练准确率 训练损失 测试准确率
正确数量 全部数量 正确率
6547 6663 0.98

下面为对应每个类型的正确率:

chat email stream file voip p2p
0.99 0.94 0.999 0.98 0.98 1.00

app 16 分类

对 vpn 和 非 vpn 不做区分,只关注具体的 app,分类结果如下:

分类测试性能图:

训练准确率 训练损失 测试准确率
正确数量 全部数量 正确率
6386 6663 0.958

下面为对应每个 app 的正确率:

aim email facebook ftp gmail hangouts icq netflix
0.86 0.87 0.95 0.98 0.93 0.96 0.90 0.97
scp sftp skype spotify vimeo voipbuster youtube bittorrent
0.96 0.99 0.97 0.96 0.97 0.98 0.98 1.00

参考文献

  1. https://www.unb.ca/cic/datasets/vpn.html
  2. G. Draper-Gil, A. H. Lashkari, M. S. I. Mamun, and A. A. Ghorbani, “Characterization of encrypted and vpn traffic using time-related,” in Proceedings of the 2nd international conference on information systems security and privacy (ICISSP), 2016, pp. 407–414.
  3. https://github.com/AidenZhang1998/Network-traffic-classification
  4. https://blog.munhou.com/2020/04/05/Pytorch-Implementation-of-Deep-Packet-A-Novel-Approach-For-Encrypted-Tra%EF%AC%83c-Classi%EF%AC%81cation-Using-Deep-Learning/

pcap_classifier's People

Contributors

stevenbaby avatar

Stargazers

 avatar  avatar chengmo23 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

chris123540

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.