81 private static final Integer[]
DEFAULT_ORDERING =
new Integer[]{BlackboardAttribute.ATTRIBUTE_TYPE.TSK_TITLE.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_NAME.getTypeID(),
82 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID(),
83 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID(),
84 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_URL.getTypeID(),
85 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_REFERRER.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID(),
86 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_VALUE.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_TEXT.getTypeID(),
87 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH_ID.getTypeID(),
88 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_HEADERS.getTypeID()};
112 orderingMap.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_BOOKMARK.getTypeID(),
new Integer[]{BlackboardAttribute.ATTRIBUTE_TYPE.TSK_NAME.getTypeID(),
113 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_TITLE.getTypeID(),
114 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID(),
115 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID(),
116 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_URL.getTypeID(),
117 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()});
118 orderingMap.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_CACHE.getTypeID(),
new Integer[]{BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID(),
119 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_URL.getTypeID(),
120 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID(),
121 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID(),
122 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_HEADERS.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH.getTypeID(),
123 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()});
124 orderingMap.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD.getTypeID(),
new Integer[]{BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID(),
125 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_URL.getTypeID(),
126 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID(),
127 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID(),
128 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH.getTypeID(),
129 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()});
130 orderingMap.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_SEARCH_QUERY.getTypeID(),
new Integer[]{BlackboardAttribute.ATTRIBUTE_TYPE.TSK_TEXT.getTypeID(),
131 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID(),
132 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID(),
133 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID(),
134 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()});
135 orderingMap.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_HISTORY.getTypeID(),
new Integer[]{BlackboardAttribute.ATTRIBUTE_TYPE.TSK_TITLE.getTypeID(),
136 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_USER_NAME.getTypeID(),
137 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID(),
138 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID(),
139 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID(), BlackboardAttribute.ATTRIBUTE_TYPE.TSK_URL.getTypeID(),
140 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_REFERRER.getTypeID(),
141 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()});
142 orderingMap.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_COOKIE.getTypeID(),
new Integer[]{BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID(),
143 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_URL.getTypeID(),
144 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_NAME.getTypeID(),
145 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_VALUE.getTypeID(),
146 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()});
154 if (artifact !=
null) {
155 String dataSourceName = Bundle.GeneralPurposeArtifactViewer_unknown_text();
156 String hostName = Bundle.GeneralPurposeArtifactViewer_unknown_text();
157 String sourceFileName = Bundle.GeneralPurposeArtifactViewer_unknown_text();
158 Map<Integer, List<BlackboardAttribute>> attributeMap =
new HashMap<>();
161 for (BlackboardAttribute bba : artifact.getAttributes()) {
162 List<BlackboardAttribute> attrList = attributeMap.get(bba.getAttributeType().getTypeID());
163 if (attrList ==
null) {
164 attrList =
new ArrayList<>();
167 attributeMap.put(bba.getAttributeType().getTypeID(), attrList);
169 dataSourceName = artifact.getDataSource().getName();
172 .map(h -> h.getName())
175 sourceFileName = artifact.getParent().getUniquePath();
177 logger.log(Level.WARNING,
"Unable to get attributes for artifact " + artifact.getArtifactID(), ex);
179 updateView(artifact, attributeMap, dataSourceName, hostName, sourceFileName);
206 return (artifact !=
null)
207 && (artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_HISTORY.getTypeID()
208 || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_SEARCH_QUERY.getTypeID()
209 || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_COOKIE.getTypeID()
210 || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_BOOKMARK.getTypeID()
211 || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD.getTypeID()
212 || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_CACHE.getTypeID()
213 || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_ACCOUNT_TYPE.getTypeID()
214 || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_FORM_ADDRESS.getTypeID()
215 || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_FORM_AUTOFILL.getTypeID());
270 private void updateView(BlackboardArtifact artifact, Map<Integer, List<BlackboardAttribute>> attributeMap, String dataSourceName, String hostName, String sourceFilePath) {
271 final Integer artifactTypeId = artifact.getArtifactTypeID();
272 if (!(artifactTypeId < 1 || artifactTypeId >= Integer.MAX_VALUE)) {
274 Integer[] orderingArray =
orderingMap.get(artifactTypeId);
275 if (orderingArray ==
null) {
278 for (Integer attrId : orderingArray) {
279 List<BlackboardAttribute> attrList = attributeMap.remove(attrId);
280 if (attrList !=
null) {
281 for (BlackboardAttribute bba : attrList) {
282 if (bba.getAttributeType().getTypeName().startsWith(
"TSK_DATETIME")) {
283 if (artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_SEARCH_QUERY.getTypeID()) {
288 }
else if (bba.getAttributeType().getTypeID() == BlackboardAttribute.ATTRIBUTE_TYPE.TSK_TEXT.getTypeID() && artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_SEARCH_QUERY.getTypeID()) {
289 addNameValueRow(Bundle.GeneralPurposeArtifactViewer_term_label(), bba.getDisplayString());
290 }
else if (bba.getAttributeType().getTypeID() == BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH.getTypeID()) {
291 String displayString = bba.getDisplayString();
292 if (!attributeMap.containsKey(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH_ID.getTypeID())) {
293 displayString += Bundle.GeneralPurposeArtifactViewer_noFile_text();
295 addNameValueRow(bba.getAttributeType().getDisplayName(), displayString);
297 addNameValueRow(bba.getAttributeType().getDisplayName(), bba.getDisplayString());
303 boolean headerAdded =
false;
304 headerAdded =
addDates(Bundle.GeneralPurposeArtifactViewer_dates_created(), attributeMap.remove(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID()), headerAdded);
305 headerAdded =
addDates(Bundle.GeneralPurposeArtifactViewer_dates_start(), attributeMap.remove(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()), headerAdded);
306 headerAdded =
addDates(Bundle.GeneralPurposeArtifactViewer_dates_end(), attributeMap.remove(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID()), headerAdded);
307 addDates(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME.getDisplayName(), attributeMap.remove(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()), headerAdded);
309 if (!attributeMap.keySet().isEmpty()) {
310 addHeader(Bundle.GeneralPurposeArtifactViewer_details_otherHeader());
311 for (
int key : attributeMap.keySet()) {
312 for (BlackboardAttribute bba : attributeMap.get(key)) {
313 if (bba.getAttributeType().getTypeName().startsWith(
"TSK_DATETIME")) {
316 addNameValueRow(bba.getAttributeType().getDisplayName(), bba.getDisplayString());
321 addHeader(Bundle.GeneralPurposeArtifactViewer_details_sourceHeader());
322 addNameValueRow(Bundle.GeneralPurposeArtifactViewer_details_host(), StringUtils.defaultString(hostName));
323 addNameValueRow(Bundle.GeneralPurposeArtifactViewer_details_dataSource(), dataSourceName);
324 addNameValueRow(Bundle.GeneralPurposeArtifactViewer_details_file(), sourceFilePath);
327 if (firstTextPane !=
null) {
328 firstTextPane.setCaretPosition(0);
375 if (artifactTypeId == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_HISTORY.getTypeID()) {
376 header = Bundle.GeneralPurposeArtifactViewer_details_historyHeader();
377 }
else if (artifactTypeId == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_BOOKMARK.getTypeID()) {
378 header = Bundle.GeneralPurposeArtifactViewer_details_bookmarkHeader();
379 }
else if (artifactTypeId == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_CACHE.getTypeID()) {
380 header = Bundle.GeneralPurposeArtifactViewer_details_cachedHeader();
381 }
else if (artifactTypeId == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_COOKIE.getTypeID()) {
382 header = Bundle.GeneralPurposeArtifactViewer_details_cookieHeader();
383 }
else if (artifactTypeId == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD.getTypeID()) {
384 header = Bundle.GeneralPurposeArtifactViewer_details_downloadHeader();
385 }
else if (artifactTypeId == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_SEARCH_QUERY.getTypeID()) {
386 header = Bundle.GeneralPurposeArtifactViewer_details_searchHeader();
388 header = Bundle.GeneralPurposeArtifactViewer_details_attrHeader();
509 JTextPane valueField =
new JTextPane();
510 valueField.setFocusable(
false);
511 valueField.setEditable(
false);
512 valueField.setOpaque(
false);
516 GridBagConstraints cloneConstraints = (GridBagConstraints)
gridBagConstraints.clone();
519 cloneConstraints.fill = GridBagConstraints.BOTH;
521 valueField.setText(valueString);
523 valueField.addMouseListener(
new java.awt.event.MouseAdapter() {
525 public void mouseClicked(java.awt.event.MouseEvent evt) {
526 valueLabelMouseClicked(evt, valueField);
530 detailsPanel.add(valueField, cloneConstraints);