2009-09-29 3 views
1

디지털 법의학 환경에서 java와 함께 일하는 경험이 있다면 궁금 할 것입니다. 만약 그렇다면 문제 나 이점에 관해 조언 해 줄 수 있습니다. ? 건배디지털 법의학 환경으로서의 Java

+0

Java 응용 프로그램에서 포렌직을 수행하거나 다른 응용 프로그램에서 포렌식을 수행하기 위해 Java 응용 프로그램을 사용한다는 것을 의미합니까? – leonm

+0

안녕하세요 leonm, 내가 정말로 내가 다른 데이터에 대한 법의학을 수행하기 위해 java를 사용하고 있다고 가정합니다. encase 또는 sleuth 키트처럼.내가 아는 바로는 C/C++/Perl에서 행해졌 고 Java에서 비슷한 일을 할 수있는 가능성을 살펴보고 제한이나 이점을 알아 내려고 노력했습니다 ...... 예) 디스크 이미지 (비트 용)를 가져 와서 Java로 디자인되고 프로그래밍 된 앱으로 분석합니다. 희망이 클라리 피. – Nick

+0

당신의 설명에 따르면, 전반적으로 C와 같은 언어로 "베어 메탈 (bare metal)"로 내려가는 경향이 좀 더 유연한 경향이 있습니다.하지만 누가 Java에서 이런 종류의 것을 쓸 수 있는지 알고 있습니다. – phoebus

답변

2

예, C로 수행해야하는 작업이 있으면 Java로 모두 수행 할 수 있습니다. JNI 패키지를 사용하면 '위험한'루틴을 호출 할 수 있습니다. Java는 견고성, 보안 모델, 확장 성은 큰 문제가 아닙니다 ... 64 비트 OS에 대처할 필요가 없으며 코드를 최적화하여 다중 CPU를 활용하면 이상하지만 사실입니다. 소프트웨어는 Java보다 Java에서 C보다 빠르게 실행될 수 있습니다. 개발자가 아닌 경우 CPU 구조에 익숙하고 기계 코드를 이해하고 레지스터로 처리하는 것은 어렵지 만 텍스트를 잊어 버리면 C로 더 잘 수행했을 수 있습니다.

+0

감사합니다 thats brillent – Nick

+0

환영합니다 -이 소리 도전, r u 고용? –

+0

아니, 프로젝트로 가져 가라. 적어도 말하기에 재미 있어야합니다. – Nick

2
우리는 다음과 같은 이유로 자바 C++과 파이썬에서 우리의 법의학 코드를 이동 한

:

  • 우리는 우리의 도구에 영향을 미칠 수있는 방법 손상된 데이터에 대해 우려하고; Java에서는 문제가되지 않습니다.
  • 단일 Java 바이너리가 32 비트 및 64 비트 시스템에서 실행됩니다.
  • 스레드의 악용을 개선했습니다.

우리의 초기 결과는 매우 유망합니다 : C++에서 Java로 이식 된 bulk_extractor가 3 배 빨라졌습니다! 우리는 놀랐다. 우리는 이것이 jflex가 flex보다 빠른 FSM을 생성하기 때문이라고 생각합니다.

주요 문제는 좋은 오픈 소스 자바 포렌식 파일 시스템이없고, SleuthKit에 대한 JNI 바인딩이 없다는 것입니다. 해결 방법 중 하나는 디스크 이미지에서 모든 메타 데이터를 추출하여 fiwalk를 사용하여 XML blob에 넣은 다음 java에서 XML을 처리하는 것입니다.

바이너리 분석 및 임의의 문자열 구문 분석을 다루는 http://afflib.org/

+0

는 ... 축하합니다. – Nick

+0

우리는 실제로 자바를 포기했습니다. – vy32

1

을 확인,이 도구를 다운로드 자바에서 정말 고통스럽고 매우 불필요합니다. Java의 부호없는 정수가 부족하여 실제로 성가시다.

우리는 사소한 코드 (특히 자바의 부피와 비교)로 모든 것을 집안에 파이썬을 사용합니다. struct.pack/unpack은 바이너리 데이터의 구문 분석을 단순화하고, 데이터 구조/객체를 내장하며, 그들은 처리 우리가 정말 법의학 자바를 추천 할 수 없습니다

을 필요로 거의 모두를위한 라이브러리입니다

편집 :

또한 도구가 이미 변동성 (파이썬 또는 파이썬 바인딩이 중 하나입니다 법의학의 수, sleuthkit 등)

+0

의견에 감사드립니다. 왜 당신이 자바 struct.pack 및 struct.unpack 만들 수없는 궁금하네요 ... – vy32

1

이제 Sleuth Kit에는 JNI 바인딩이 있습니다. 공식적으로 배포되지는 않지만 github 마스터 브랜치에서 찾을 수 있습니다. SQLite 데이터베이스는 C++ 코드로 파일 시스템 메타 데이터로 채워지고 Java 코드는 데이터베이스를 쿼리하고 해당 Java 객체를 만듭니다. JNI는 파일 내용을 Java 측으로 가져 오는 데 사용됩니다. 부검 3 (Java NetBeans RCP 앱)은 바인딩을 사용합니다.