gpt4 book ai didi

java - 读取 netflow/rflow (dd-wrt) 数据包内容

转载 作者:行者123 更新时间:2023-11-28 08:22:51 32 4
gpt4 key购买 nike

我目前正在开发一种 IDS/IPS,它使用 NetFlow 数据来假设是否存在持续攻击。我买不起昂贵的 CISCO 路由器,所以我买了一个 LINKSYS 路由器,在上面安装了 DD-WRT。 DD-WRT 将 netflow v5 数据包发送到您的首选机器,因此它就像拥有一台 CISCO 路由器但更旧。基本上,只需花费 80 美元并进行一些微调,您就能获得值(value) 200-500 美元的路由器。我已经设置了路由器,正在获取数据包,我什至使用了 DD-WRT 提供的工具来捕获 rFlow(他们这样命名它,但它是 netflow v5)并且一切正常。

我的应用程序必须在内部执行所有操作,这意味着我需要捕获 rflow 数据包、读取它们并根据我的读数得出假设。我开始使用 JAVA 进行开发并设置了一个 UDP 守护进程来监听 2055(用于接收 rflow 数据包的端口)。很好,我正在获取数据包,但是当我尝试查看内容时,我得到了一些奇怪的字符,就像我正在从内存中倾倒东西一样。

这是我设置守护进程和读取数据的代码。

try {
serverSocket = new DatagramSocket(2055);
while (true) {
DatagramPacket receivedPacket = new DatagramPacket(received, received.length);
serverSocket.receive(receivedPacket);
ByteArrayInputStream byteIn = new ByteArrayInputStream(receivedPacket.getData(),0,receivedPacket.getLength());
DataInputStream in = new DataInputStream(byteIn);
String input = "";
while( (input = in.readLine()) != null) {
System.out.println(input + "\n");
}
Inet4Address from = (Inet4Address) receivedPacket.getAddress();
System.out.println("FROM: " + from + "\nDATA: " + data[4]);
}
} catch (SocketException ex) {
System.out.println(ex.getMessage());
}

我找到了一个名为 jflow 的库。但是没有源代码,所以我对使用它持怀疑态度。我想知道是否有人可以告诉我如何真正读取发送给我的数据包的内容。由于我处于开发的早期阶段,所以我不一定要使用 JAVA,我可以选择 C++。无论使用哪种编程语言,我最大的问题是如何读取这些数据包的内容,以便我可以得出其他模块所需的正确结论。

最佳答案

rFlow/NetFlow v5 数据包是二进制数据包布局,因此将它们视为文本时,嗯,不可读。

v5 数据包的数据包格式是已知的,可以通过谷歌搜索找到。 This似乎是一个很好的引用。

请注意,dd-wrt ​​上的 rFlow 守护程序有一个长期存在的错误,它无法正确填写输入或输出接口(interface)字段。

关于java - 读取 netflow/rflow (dd-wrt) 数据包内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5160414/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com