diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.cpp b/bindings/java/jni/dataModel_SleuthkitJNI.cpp index abab86e0b58237c58f783d0dc6f0acff4c51be71..e4dac64667d9b4a57c1c67ad334e9ad249de5fe2 100644 --- a/bindings/java/jni/dataModel_SleuthkitJNI.cpp +++ b/bindings/java/jni/dataModel_SleuthkitJNI.cpp @@ -1277,6 +1277,30 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_getSectorSizeForImageNat(JNIEnv * env, return img_info->sector_size; } +/* +* Get the md5 hash of an image. +*/ +JNIEXPORT jstring JNICALL +Java_org_sleuthkit_datamodel_SleuthkitJNI_getMD5HashForImageNat(JNIEnv * env, + jclass obj, jlong a_img_info) { + + TSK_IMG_INFO *img_info = castImgInfo(env, a_img_info); + if (img_info == 0) { + //exception already set + return 0; + } + // env->NewStringUTF(img_ptrs[i]) +#if HAVE_LIBEWF + if (m_img_info->itype == TSK_IMG_TYPE_EWF_EWF) { + IMG_EWF_INFO *ewf_info = (IMG_EWF_INFO *)m_img_info; + if (ewf_info->md5hash_isset) { + return env->NewStringUTF(ewf_info->md5hash); + } + } +#endif + return env->NewStringUTF(""); +} + /* * Open the volume system at the given offset diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.h b/bindings/java/jni/dataModel_SleuthkitJNI.h index 2029a21c22501938b31f263f87a372b5f87970da..6e580f9f978464524639307ecd0156c62087c9ee 100644 --- a/bindings/java/jni/dataModel_SleuthkitJNI.h +++ b/bindings/java/jni/dataModel_SleuthkitJNI.h @@ -359,6 +359,14 @@ JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_getTypeForImag JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_getSectorSizeForImageNat (JNIEnv *, jclass, jlong); +/* + * Class: org_sleuthkit_datamodel_SleuthkitJNI + * Method: getMD5HashForImageNat + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_getMD5HashForImageNat + (JNIEnv *, jclass, jlong); + /* * Class: org_sleuthkit_datamodel_SleuthkitJNI * Method: closeImgNat diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java index 1f9645a07aa3a90f3e00069872a2a53f178729de..056006e41af080322c0fe801ae228194bd06326a 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java @@ -35,6 +35,7 @@ import java.util.UUID; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import org.apache.commons.lang3.StringUtils; import org.sleuthkit.datamodel.TskData.TSK_FS_ATTR_TYPE_ENUM; import org.sleuthkit.datamodel.SleuthkitCase.CaseDbTransaction; @@ -887,6 +888,9 @@ public static Image addImageToDatabase(SleuthkitCase skCase, String imagePath, i long size = getSizeForImageNat(imageHandle); long type = getTypeForImageNat(imageHandle); long computedSectorSize = getSectorSizeForImageNat(imageHandle); + if (StringUtils.isEmpty(md5)) { + md5 = getMD5HashForImageNat(imageHandle); + } // Now save to database CaseDbTransaction transaction = skCase.beginTransaction(); @@ -906,6 +910,8 @@ public static Image addImageToDatabase(SleuthkitCase skCase, String imagePath, i throw(ex); } } + + /** * Get volume system Handle @@ -2063,6 +2069,8 @@ public static long openFile(long fsHandle, long fileId, TSK_FS_ATTR_TYPE_ENUM at private static native long getTypeForImageNat(long imgHandle); private static native long getSectorSizeForImageNat(long imgHandle); + + private static native String getMD5HashForImageNat(long imgHandle); private static native void closeImgNat(long imgHandle);