19 package org.sleuthkit.autopsy.modules.filetypeid;
21 import java.util.ArrayList;
23 import java.util.SortedSet;
24 import org.apache.tika.Tika;
25 import org.apache.tika.mime.MediaType;
26 import org.apache.tika.mime.MimeTypes;
38 private static final Tika
tika =
new Tika();
52 userDefinedFileTypes = UserDefinedFileTypesManager.getInstance().getFileTypes();
53 }
catch (UserDefinedFileTypesManager.UserDefinedFileTypesException ex) {
54 throw new FileTypeDetectorInitException(
"Error loading user-defined file types", ex);
77 return userDefinedFileTypes.containsKey(mimeType);
87 String[] split = mimeType.split(
"/");
88 if (split.length == 2) {
89 String type = split[0];
90 String subtype = split[1];
91 MediaType mediaType =
new MediaType(type, subtype);
92 SortedSet<MediaType> m = MimeTypes.getDefaultMimeTypes().getMediaTypeRegistry().getTypes();
93 return m.contains(mediaType);
114 fileType = attribute.getValueString();
115 if (null != fileType && !fileType.isEmpty()) {
132 String mimeType =
detect(file);
133 if (null != mimeType) {
158 if (!file.isFile() || file.getSize() <= 0
161 return MimeTypes.OCTET_STREAM;
165 if (null == fileType) {
168 int len = file.read(buffer, 0, BUFFER_SIZE);
169 if (len < BUFFER_SIZE) {
171 System.arraycopy(buffer, 0, buf, 0, len);
176 String mimetype = tika.detect(buf, file.getName());
181 return mimetype.replace(
"tika-",
"");
183 }
catch (Exception ignored) {
206 for (FileType fileType : userDefinedFileTypes.values()) {
207 if (fileType.matches(file)) {
208 if (fileType.alertOnMatch()) {
222 return fileType.getMimeType();
235 super(message, throwable);
static final int BUFFER_SIZE
final Map< String, FileType > userDefinedFileTypes
boolean isDetectable(String mimeType)
String detectUserDefinedType(AbstractFile file)
void addAttribute(BlackboardAttribute attr)
boolean isDetectableAsUserDefinedType(String mimeType)
String detect(AbstractFile file)
String getFileType(AbstractFile file)
boolean isDetectableByTika(String mimeType)
String detectAndPostToBlackboard(AbstractFile file)