19 package org.sleuthkit.datamodel;
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.List;
24 import java.util.ResourceBundle;
34 private static final ResourceBundle
bundle = ResourceBundle.getBundle(
"org.sleuthkit.datamodel.Bundle");
48 TSK_GEN_INFO(1,
"TSK_GEN_INFO",
49 bundle.getString(
"BlackboardArtifact.tskGenInfo.text")),
50 TSK_WEB_BOOKMARK(2,
"TSK_WEB_BOOKMARK",
51 bundle.getString(
"BlackboardArtifact.tskWebBookmark.text")),
52 TSK_WEB_COOKIE(3,
"TSK_WEB_COOKIE",
53 bundle.getString(
"BlackboardArtifact.tskWebCookie.text")),
54 TSK_WEB_HISTORY(4,
"TSK_WEB_HISTORY",
55 bundle.getString(
"BlackboardArtifact.tskWebHistory.text")),
56 TSK_WEB_DOWNLOAD(5,
"TSK_WEB_DOWNLOAD",
57 bundle.getString(
"BlackboardArtifact.tskWebDownload.text")),
58 TSK_RECENT_OBJECT(6,
"TSK_RECENT_OBJ",
59 bundle.getString(
"BlackboardArtifact.tsk.recentObject.text")),
60 TSK_GPS_TRACKPOINT(7,
"TSK_GPS_TRACKPOINT",
61 bundle.getString(
"BlackboardArtifact.tskGpsTrackpoint.text")),
62 TSK_INSTALLED_PROG(8,
"TSK_INSTALLED_PROG",
63 bundle.getString(
"BlackboardArtifact.tskInstalledProg.text")),
64 TSK_KEYWORD_HIT(9,
"TSK_KEYWORD_HIT",
65 bundle.getString(
"BlackboardArtifact.tskKeywordHits.text")),
66 TSK_HASHSET_HIT(10,
"TSK_HASHSET_HIT",
67 bundle.getString(
"BlackboardArtifact.tskHashsetHit.text")),
68 TSK_DEVICE_ATTACHED(11,
"TSK_DEVICE_ATTACHED",
69 bundle.getString(
"BlackboardArtifact.tskDeviceAttached.text")),
70 TSK_INTERESTING_FILE_HIT(12,
"TSK_INTERESTING_FILE_HIT",
71 bundle.getString(
"BlackboardArtifact.tskInterestingFileHit.text")),
72 TSK_EMAIL_MSG(13,
"TSK_EMAIL_MSG",
73 bundle.getString(
"BlackboardArtifact.tskEmailMsg.text")),
74 TSK_EXTRACTED_TEXT(14,
"TSK_EXTRACTED_TEXT",
75 bundle.getString(
"BlackboardArtifact.tskExtractedText.text")),
76 TSK_WEB_SEARCH_QUERY(15,
"TSK_WEB_SEARCH_QUERY",
77 bundle.getString(
"BlackboardArtifact.tskWebSearchQuery.text")),
78 TSK_METADATA_EXIF(16,
"TSK_METADATA_EXIF",
79 bundle.getString(
"BlackboardArtifact.tskMetadataExif.text")),
82 TSK_TAG_FILE(17,
"TSK_TAG_FILE",
83 bundle.getString(
"BlackboardArtifact.tagFile.text")),
86 TSK_TAG_ARTIFACT(18,
"TSK_TAG_ARTIFACT",
87 bundle.getString(
"BlackboardArtifact.tskTagArtifact.text")),
88 TSK_OS_INFO(19,
"TSK_OS_INFO",
89 bundle.getString(
"BlackboardArtifact.tskOsInfo.text")),
90 TSK_OS_ACCOUNT(20,
"TSK_OS_ACCOUNT",
91 bundle.getString(
"BlackboardArtifact.tskOsAccount.text")),
92 TSK_SERVICE_ACCOUNT(21,
"TSK_SERVICE_ACCOUNT",
93 bundle.getString(
"BlackboardArtifact.tskServiceAccount.text")),
96 TSK_TOOL_OUTPUT(22,
"TSK_TOOL_OUTPUT",
97 bundle.getString(
"BlackboardArtifact.tskToolOutput.text")),
98 TSK_CONTACT(23,
"TSK_CONTACT",
99 bundle.getString(
"BlackboardArtifact.tskContact.text")),
100 TSK_MESSAGE(24,
"TSK_MESSAGE",
101 bundle.getString(
"BlackboardArtifact.tskMessage.text")),
102 TSK_CALLLOG(25,
"TSK_CALLLOG",
103 bundle.getString(
"BlackboardArtifact.tskCalllog.text")),
104 TSK_CALENDAR_ENTRY(26,
"TSK_CALENDAR_ENTRY",
105 bundle.getString(
"BlackboardArtifact.tskCalendarEntry.text")),
106 TSK_SPEED_DIAL_ENTRY(27,
"TSK_SPEED_DIAL_ENTRY",
107 bundle.getString(
"BlackboardArtifact.tskSpeedDialEntry.text")),
108 TSK_BLUETOOTH_PAIRING(28,
"TSK_BLUETOOTH_PAIRING",
109 bundle.getString(
"BlackboardArtifact.tskBluetoothPairing.text")),
110 TSK_GPS_BOOKMARK(29,
"TSK_GPS_BOOKMARK",
111 bundle.getString(
"BlackboardArtifact.tskGpsBookmark.text")),
112 TSK_GPS_LAST_KNOWN_LOCATION(30,
"TSK_GPS_LAST_KNOWN_LOCATION",
113 bundle.getString(
"BlackboardArtifact.tskGpsLastKnownLocation.text")),
114 TSK_GPS_SEARCH(31,
"TSK_GPS_SEARCH",
115 bundle.getString(
"BlackboardArtifact.tskGpsSearch.text")),
116 TSK_PROG_RUN(32,
"TSK_PROG_RUN",
117 bundle.getString(
"BlackboardArtifact.tskProgRun.text")),
118 TSK_ENCRYPTION_DETECTED(33,
"TSK_ENCRYPTION_DETECTED",
119 bundle.getString(
"BlackboardArtifact.tskEncryptionDetected.text")),
120 TSK_EXT_MISMATCH_DETECTED(34,
"TSK_EXT_MISMATCH_DETECTED",
121 bundle.getString(
"BlackboardArtifact.tskExtMismatchDetected.text")),
122 TSK_INTERESTING_ARTIFACT_HIT(35,
"TSK_INTERESTING_ARTIFACT_HIT",
123 bundle.getString(
"BlackboardArtifact.tskInterestingArtifactHit.text")),
124 TSK_GPS_ROUTE(36,
"TSK_GPS_ROUTE",
125 bundle.getString(
"BlackboardArtifact.tskGpsRoute.text")),
126 TSK_REMOTE_DRIVE(37,
"TSK_REMOTE_DRIVE",
127 bundle.getString(
"BlackboardArtifact.tskRemoteDrive.text")),
128 TSK_FACE_DETECTED(38,
"TSK_FACE_DETECTED",
129 bundle.getString(
"BlackboardArtifact.tskFaceDetected.text"));
137 this.typeID = typeID;
168 if (v.label.equals(label)) {
172 throw new IllegalArgumentException(
"No ARTIFACT_TYPE matching type: " + label);
183 if (v.typeID == ID) {
187 throw new IllegalArgumentException(
"No ARTIFACT_TYPE matching type: " + ID);
201 return v.
visit(
this);
210 private final List<BlackboardAttribute>
attrsCache =
new ArrayList<BlackboardAttribute>();
245 BlackboardArtifact(
SleuthkitCase sleuthkitCase,
long artifactID,
long objID,
int artifactTypeID, String artifactTypeName, String displayName,
boolean isNew) {
255 this.loadedCacheFromDb =
true;
312 attr.setArtifactID(artifactID);
313 attr.setCase(sleuthkitCase);
315 attrsCache.add(attr);
327 if (attributes.isEmpty()) {
332 attr.setArtifactID(artifactID);
333 attr.setCase(sleuthkitCase);
336 attrsCache.addAll(attributes);
347 if (loadedCacheFromDb ==
false) {
350 attrsCache.addAll(attrs);
351 loadedCacheFromDb =
true;
366 if (loadedCacheFromDb ==
false) {
369 attrsCache.addAll(attrs);
370 loadedCacheFromDb =
true;
372 ArrayList<BlackboardAttribute> filteredAttributes =
new ArrayList<BlackboardAttribute>();
374 if (attr.getAttributeTypeID() == attributeType.getTypeID()) {
375 filteredAttributes.add(attr);
378 return filteredAttributes;
391 return v.
visit(
this);
408 if (getClass() != obj.getClass()) {
421 hash = 41 * hash + (int) (this.artifactID ^ (this.artifactID >>> 32));
427 return "BlackboardArtifact{" +
"artifactID=" + artifactID +
", objID=" + objID +
", artifactTypeID=" + artifactTypeID +
", artifactTypeName=" + artifactTypeName +
", displayName=" + displayName +
", Case=" + sleuthkitCase +
'}';
final SleuthkitCase sleuthkitCase
ArrayList< BlackboardAttribute > getBlackboardAttributes(final BlackboardArtifact artifact)
static final ResourceBundle bundle
static ARTIFACT_TYPE fromLabel(String label)
void addBlackboardAttributes(Collection< BlackboardAttribute > attributes, int artifactTypeId)
String getArtifactTypeName()
void addAttributes(Collection< BlackboardAttribute > attributes)
void addBlackboardAttribute(BlackboardAttribute attr, int artifactTypeId)
public< T > T accept(SleuthkitItemVisitor< T > v)
static ARTIFACT_TYPE fromID(int ID)
List< BlackboardAttribute > getAttributes(final BlackboardAttribute.ATTRIBUTE_TYPE attributeType)
boolean equals(Object obj)
SleuthkitCase getSleuthkitCase()
void addAttribute(BlackboardAttribute attr)
BlackboardArtifact(SleuthkitCase sleuthkitCase, long artifactID, long objID, int artifactTypeID, String artifactTypeName, String displayName)
final String artifactTypeName
final List< BlackboardAttribute > attrsCache
List< BlackboardAttribute > getAttributes()
boolean loadedCacheFromDb
ARTIFACT_TYPE(int typeID, String label, String displayName)