因此,对于我正在编写的与安全相关的应用程序,我实际上想要使用RFC3514("邪恶位")来确定网络中的流量集是否是恶意的.这被用作辅助机器学习引擎的训练数据,因此应用程序必须事先知道哪些数据包是邪恶的,哪些不是.
这应该相当简单,它只是设置一个IP层位.我试过用iptables或libpcap来做这件事,但要么他们没有功能,要么我没有发现它.
能够为机器外的所有流量设置它会很好,但过滤出来的东西会更好.(比如能够指定更高层协议设置的内容等等)
我也在使用Ubuntu.所以Linux解决方案更受欢 但除此之外,使用什么方法来实现这一点并不重要.Bash脚本,c/c ++ app,设置一些sysctl,等等.
显然这实际上是为FreeBSD实现的 - 也许你可以查看他们的代码?
http://www.cs.columbia.edu/~smb/3514.html
您有两种选择:
一种是使用https://code.google.com/p/evilbitchanger/,这是一个基于scapy的脚本,可以帮助您完成Evil Bit设置.
另一种是使用原始scapy脚本来使用Evil位来创建数据包.据记载,Scapy能够很容易地设置Evil Bit标志.
>>> t=TCP() >>> t.flags="SA" >>> t.flags 18 >>> t>>> t.flags=23 >>> t >>> i=IP(flags="DF+MF") >>> i.flags 3 >>> i >>> i.flags=6 >>> i
希望这可以帮助.