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