1

只是想知道是否有人在数字取证环境中使用 java(与 c/c++ 类似)有任何经验,如果有,他们能否就他们可能遇到的问题或优势向我提出建议?干杯

4

4 回答 4

2

我们一直在将取证代码从 C++ 和 Python 迁移到 Java,原因如下:

  • 我们担心损坏的数据会如何影响我们的工具;对于 Java,这不是一个问题。
  • 单个 Java 二进制文件将在 32 位和 64 位系统上运行
  • 更好地利用线程。

我们的初步结果很有希望:从 C++ 移植到 Java 的 bulk_extractor 运行速度提高了 3 倍!我们很惊讶。我们认为这是因为 jflex 产生的 FSM 比 flex 更快。

主要问题是没有好的开源 Java 取证文件系统,也没有针对 SleuthKit 的 JNI 绑定。我们的解决方法之一是使用 fiwalk 从磁盘映像中提取所有元数据到 XML blob 中,然后在 java 中处理 XML。

要下载这些工具,请查看http://afflib.org/

于 2010-01-06T03:15:48.690 回答
2

是的,你可以在 Java 中完成这一切,如果有什么必须在 C 中完成,你有 JNI 包,你可以通过它调用“危险”例程。Java 赋予您健壮性、安全性模型、可扩展性不是大问题……您不必处理 64 位操作系统,或优化代码以利用多个 CPU-s,您会发现这很奇怪但确实如此:您的软件在 Java 中的运行速度可能比在 C 中更快。如果您不是普通的开发人员,如果您熟悉 CPU 结构,深入了解机器代码和寄存器处理,那么请忘记我的文字,您可能会在 C 中做得更好。

于 2009-09-29T11:39:18.400 回答
1

Sleuth Kit 现在具有 JNI 绑定。它们没有正式发布,但你可以在 github master 分支上找到它们。SQLite 数据库由具有文件系统元数据的 C++ 代码填充,然后 Java 代码查询数据库并生成相应的 Java 对象。JNI 用于将文件内容获取到 Java 端。Autopsy 3(它是一个 Java NetBeans RCP 应用程序)使用这些绑定。

于 2012-01-20T21:07:42.227 回答
1

在 Java 中处理二进制解析和任意字符串解析确实很痛苦,而且完全没有必要。Java 缺少无符号整数也很烦人。

我们将 python 用于内部的所有内容,因为它对代码来说是微不足道的(尤其是与 java 的笨重相比),struct.pack/unpack 使二进制数据的解析变得简单,内置的数据结构/对象以及它们是用于几乎我们需要的一切

我真的不推荐使用 Java 进行取证处理

编辑:

还有一些取证工具已经在 python 中或者有 python 绑定(volatility、sleuthkit 等)

于 2010-12-03T07:43:56.900 回答