19package org.sleuthkit.autopsy.datasourceprocessors.xry;
21import java.util.ArrayList;
23import java.util.HashMap;
25import java.util.Optional;
26import org.sleuthkit.datamodel.AbstractFile;
27import org.sleuthkit.datamodel.Blackboard.BlackboardException;
28import org.sleuthkit.datamodel.BlackboardAttribute;
29import org.sleuthkit.datamodel.BlackboardArtifact;
30import org.sleuthkit.datamodel.Content;
31import org.sleuthkit.datamodel.SleuthkitCase;
32import org.sleuthkit.datamodel.TskCoreException;
37final class XRYWebBookmarksFileParser
extends AbstractSingleEntityParser {
40 private static final Map<String, BlackboardAttribute.ATTRIBUTE_TYPE> XRY_KEYS
41 =
new HashMap<String, BlackboardAttribute.ATTRIBUTE_TYPE>() {
43 put(
"web address", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_URL);
44 put(
"domain", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN);
45 put(
"application", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME);
50 boolean canProcess(XRYKeyValuePair pair) {
51 String normalizedKey = pair.getKey().toLowerCase();
52 return XRY_KEYS.containsKey(normalizedKey);
56 boolean isNamespace(String nameSpace) {
65 private Optional<BlackboardAttribute> getBlackboardAttribute(XRYKeyValuePair pair) {
66 String normalizedKey = pair.getKey().toLowerCase();
67 return Optional.of(
new BlackboardAttribute(
68 XRY_KEYS.get(normalizedKey),
69 PARSER_NAME, pair.getValue()));
73 void makeArtifact(List<XRYKeyValuePair> keyValuePairs, Content parent, SleuthkitCase currentCase)
throws TskCoreException, BlackboardException {
74 List<BlackboardAttribute> attributes =
new ArrayList<>();
75 for(XRYKeyValuePair pair : keyValuePairs) {
76 Optional<BlackboardAttribute> attribute = getBlackboardAttribute(pair);
77 if(attribute.isPresent()) {
78 attributes.add(attribute.get());
81 if(!attributes.isEmpty()) {
82 parent.newDataArtifact(BlackboardArtifact.Type.TSK_WEB_BOOKMARK, attributes);