Merge branch 'develop' of https://github.com/markmckinnon/autopsy into develop

This commit is contained in:
Mark McKinnon 2024-04-29 10:54:42 -04:00
commit 1723ee1d74
22 changed files with 177 additions and 130 deletions

View File

@ -136,12 +136,12 @@
tofile="${ext.dir}/sleuthkit-${TSK_VERSION}.jar"/>
<copy file="${env.TSK_HOME}/bindings/java/lib/sqlite-jdbc-3.42.0.1.jar"
tofile="${ext.dir}/sqlite-jdbc-3.42.0.1.jar"/>
<copy file="${env.TSK_HOME}/bindings/java/lib/postgresql-42.3.5.jar"
tofile="${ext.dir}/postgresql-42.3.5.jar"/>
<copy file="${env.TSK_HOME}/bindings/java/lib/postgresql-42.7.3.jar"
tofile="${ext.dir}/postgresql-42.7.3.jar"/>
<copy file="${env.TSK_HOME}/bindings/java/lib/c3p0-0.9.5.5.jar"
tofile="${ext.dir}/c3p0-0.9.5.5.jar"/>
<copy file="${env.TSK_HOME}/bindings/java/lib/mchange-commons-java-0.2.20.jar"
tofile="${ext.dir}/mchange-commons-java-0.2.20.jar"/>
<copy file="${env.TSK_HOME}/bindings/java/lib/mchange-commons-java-0.3.0.jar"
tofile="${ext.dir}/mchange-commons-java-0.3.0.jar"/>
<copy file="${env.TSK_HOME}/bindings/java/lib/SparseBitSet-1.1.jar"
tofile="${ext.dir}/SparseBitSet-1.1.jar"/>
<copy file="${env.TSK_HOME}/case-uco/java/dist/sleuthkit-caseuco-${TSK_VERSION}.jar"

View File

@ -65,7 +65,7 @@ file.reference.license4j-runtime-library-4.7.1.jar=release/modules/ext/license4j
file.reference.listenablefuture-1.0.jar=release/modules/ext/listenablefuture-1.0.jar
file.reference.logback-classic-1.2.10.jar=release/modules/ext/logback-classic-1.2.10.jar
file.reference.logback-core-1.2.10.jar=release/modules/ext/logback-core-1.2.10.jar
file.reference.mchange-commons-java-0.2.20.jar=release/modules/ext/mchange-commons-java-0.2.20.jar
file.reference.mchange-commons-java-0.3.0.jar=release/modules/ext/mchange-commons-java-0.3.0.jar
file.reference.metadata-extractor-2.18.0.jar=release/modules/ext/metadata-extractor-2.18.0.jar
file.reference.netty-buffer-4.1.73.Final.jar=release/modules/ext/netty-buffer-4.1.73.Final.jar
file.reference.netty-codec-4.1.73.Final.jar=release/modules/ext/netty-codec-4.1.73.Final.jar
@ -80,7 +80,7 @@ file.reference.netty-transport-native-epoll-4.1.73.Final.jar=release/modules/ext
file.reference.netty-transport-native-unix-common-4.1.73.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.73.Final.jar
file.reference.okhttp-2.7.5.jar=release/modules/ext/okhttp-2.7.5.jar
file.reference.okio-1.6.0.jar=release/modules/ext/okio-1.6.0.jar
file.reference.postgresql-42.3.5.jar=release/modules/ext/postgresql-42.3.5.jar
file.reference.postgresql-42.7.3.jar=release/modules/ext/postgresql-42.7.3.jar
file.reference.Rejistry-1.1-SNAPSHOT.jar=release/modules/ext/Rejistry-1.1-SNAPSHOT.jar
file.reference.serializer-2.7.2.jar=release/modules/ext/serializer-2.7.2.jar
file.reference.sevenzipjbinding-AllPlatforms.jar=release/modules/ext/sevenzipjbinding-AllPlatforms.jar

View File

@ -638,8 +638,8 @@
<binary-origin>release/modules/ext/logback-core-1.2.10.jar</binary-origin>
</class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/mchange-commons-java-0.2.20.jar</runtime-relative-path>
<binary-origin>release/modules/ext/mchange-commons-java-0.2.20.jar</binary-origin>
<runtime-relative-path>ext/mchange-commons-java-0.3.0.jar</runtime-relative-path>
<binary-origin>release/modules/ext/mchange-commons-java-00.3.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/metadata-extractor-2.18.0.jar</runtime-relative-path>
@ -698,8 +698,8 @@
<binary-origin>release/modules/ext/okio-1.6.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/postgresql-42.3.5.jar</runtime-relative-path>
<binary-origin>release/modules/ext/postgresql-42.3.5.jar</binary-origin>
<runtime-relative-path>ext/postgresql-42.7.3.jar</runtime-relative-path>
<binary-origin>release/modules/ext/postgresql-42.7.3.jar</binary-origin>
</class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/Rejistry-1.1-SNAPSHOT.jar</runtime-relative-path>

View File

@ -239,7 +239,7 @@ abstract class AddTagAction extends AbstractAction implements Presenter.Popup {
*/
private JMenuItem createMenutItem(TagName tagName) {
String tagDisplayName = tagName.getDisplayName();
String notableString = tagName.getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = tagName.getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
JMenuItem tagNameItem = new JMenuItem(tagDisplayName + notableString);
if (tagDisplayName.equals(TagsManager.getBookmarkTagDisplayName())) {

View File

@ -174,10 +174,10 @@ public class GetTagNameDialog extends JDialog {
private final String name;
private final String description;
private final TskData.FileKnown status;
private final TskData.TagType status;
private final TagName.HTML_COLOR color;
AddTagNameWorker(String name, String description, TskData.FileKnown status, TagName.HTML_COLOR color) {
AddTagNameWorker(String name, String description, TskData.TagType status, TagName.HTML_COLOR color) {
this.name = name;
this.description = description;
this.status = status;
@ -375,7 +375,7 @@ public class GetTagNameDialog extends JDialog {
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
String tagDisplayName = tagNameField.getText();
String userTagDescription = descriptionTextArea.getText();
TskData.FileKnown status = notableCheckbox.isSelected() ? TskData.FileKnown.BAD : TskData.FileKnown.UNKNOWN;
TskData.TagType status = notableCheckbox.isSelected() ? TskData.TagType.BAD : TskData.TagType.SUSPICIOUS;
if (tagDisplayName.isEmpty()) {
JOptionPane.showMessageDialog(this,
NbBundle.getMessage(this.getClass(),

View File

@ -226,7 +226,7 @@ abstract class ReplaceTagAction<T extends Tag> extends AbstractAction implements
*/
private JMenuItem createMenutItem(TagName tagName, Set<String> tagNamesToDisable, Collection<? extends T> selectedTags) {
String tagDisplayName = tagName.getDisplayName();
String notableString = tagName.getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = tagName.getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
JMenuItem tagNameItem = new JMenuItem(tagDisplayName + notableString);
if (tagDisplayName.equals(TagsManager.getBookmarkTagDisplayName())) {

View File

@ -1,7 +1,7 @@
/*
* Autopsy Forensic Browser
*
* Copyright 2011-2018 Basis Technology Corp.
* Copyright 2011-2024 Basis Technology Corp.
* Contact: carrier <at> sleuthkit <dot> org
*
* Licensed under the Apache License, Version 2.0 (the "License");
@ -54,20 +54,20 @@ final public class TagNameDefinition implements Comparable<TagNameDefinition> {
private static final String TAGS_SETTINGS_NAME = "Tags"; //NON-NLS
private static final String TAG_NAMES_SETTING_KEY = "TagNames"; //NON-NLS
private static final String TAG_SETTING_VERSION_KEY = "CustomTagNameVersion";
private static final int TAG_SETTINGS_VERSION = 1;
private static final int TAG_SETTINGS_VERSION = 2; // Changed tag type from TskData.FileKnown to TskData.TagType
private final String displayName;
private final String description;
private final TagName.HTML_COLOR color;
private final TskData.FileKnown knownStatus;
private final TskData.TagType tagType;
private static final List<TagNameDefinition> STANDARD_TAGS_DEFINITIONS = new ArrayList<>();
private static final List<String> PROJECT_VIC_NAMES_NO_LONGER_USED = new ArrayList<>();
static {
STANDARD_TAGS_DEFINITIONS.add(new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_bookmark_text(), "", TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN));
STANDARD_TAGS_DEFINITIONS.add(new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_followUp_text(), "", TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN));
STANDARD_TAGS_DEFINITIONS.add(new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_notableItem_text(), "", TagName.HTML_COLOR.NONE, TskData.FileKnown.BAD));
STANDARD_TAGS_DEFINITIONS.add(new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_bookmark_text(), "", TagName.HTML_COLOR.NONE, TskData.TagType.SUSPICIOUS));
STANDARD_TAGS_DEFINITIONS.add(new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_followUp_text(), "", TagName.HTML_COLOR.NONE, TskData.TagType.SUSPICIOUS));
STANDARD_TAGS_DEFINITIONS.add(new TagNameDefinition(Bundle.TagNameDefinition_predefTagNames_notableItem_text(), "", TagName.HTML_COLOR.NONE, TskData.TagType.BAD));
PROJECT_VIC_NAMES_NO_LONGER_USED.add("CAT-1: Child Exploitation (Illegal)");
PROJECT_VIC_NAMES_NO_LONGER_USED.add("CAT-2: Child Exploitation (Non-Illegal/Age Difficult)");
@ -79,18 +79,27 @@ final public class TagNameDefinition implements Comparable<TagNameDefinition> {
/**
* Constructs a tag name definition consisting of a display name,
* description, color and knownStatus.
* description, color and tag type.
*
* @param displayName The display name for the tag name.
* @param description The description for the tag name.
* @param color The color for the tag name.
* @param status The status denoted by the tag name.
* @deprecated TagNameDefinition(String displayName, String description, TagName.HTML_COLOR color, TskData.TagType status) should be used instead.
*/
@Deprecated
public TagNameDefinition(String displayName, String description, TagName.HTML_COLOR color, TskData.FileKnown status) {
this.displayName = displayName;
this.description = description;
this.color = color;
this.knownStatus = status;
this.tagType = TskData.TagType.convertFileKnownToTagType(status);
}
public TagNameDefinition(String displayName, String description, TagName.HTML_COLOR color, TskData.TagType status) {
this.displayName = displayName;
this.description = description;
this.color = color;
this.tagType = status;
}
static Collection<TagNameDefinition> getStandardTagNameDefinitions() {
@ -164,10 +173,21 @@ final public class TagNameDefinition implements Comparable<TagNameDefinition> {
/**
* The status which will be applied to items with this tag.
*
* @return a value of TskData.FileKnown which is associated with this tag
* @return a value of TskData.TagType which is associated with this tag
*/
public TskData.TagType getTagType() {
return tagType;
}
/**
* The status which will be applied to items with this tag.
*
* @return a value of TskData.FileKnown which is associated with this tag
* @deprecated getTagType() should be used instead.
*/
@Deprecated
public TskData.FileKnown getKnownStatus() {
return knownStatus;
return TskData.TagType.convertTagTypeToFileKnown(tagType);
}
/**
@ -212,7 +232,7 @@ final public class TagNameDefinition implements Comparable<TagNameDefinition> {
return false;
}
boolean sameName = this.getDisplayName().equals(((TagNameDefinition) obj).getDisplayName());
boolean sameStatus = this.getKnownStatus().equals(((TagNameDefinition) obj).getKnownStatus());
boolean sameStatus = this.getTagType().equals(((TagNameDefinition) obj).getTagType());
return sameName && sameStatus;
}
@ -231,13 +251,13 @@ final public class TagNameDefinition implements Comparable<TagNameDefinition> {
* that is used by the tags settings file.
*/
private String toSettingsFormat() {
return displayName + "," + description + "," + color.name() + "," + knownStatus.toString();
return displayName + "," + description + "," + color.name() + "," + tagType.toString();
}
TagName saveToCase(SleuthkitCase caseDb) {
TagName tagName = null;
try {
tagName = caseDb.getTaggingManager().addOrUpdateTagName(displayName, description, color, knownStatus);
tagName = caseDb.getTaggingManager().addOrUpdateTagName(displayName, description, color, tagType);
} catch (TskCoreException ex) {
LOGGER.log(Level.SEVERE, "Error saving tag name definition", ex);
}
@ -251,7 +271,7 @@ final public class TagNameDefinition implements Comparable<TagNameDefinition> {
* The currently custom tags properties are stored in one string property
* value separated by ;. The properties of an individual tag are comma
* separated in the format of:
* tag_name,tag_description,tag_color,known_status
* tag_name,tag_description,tag_color,tag_type
*
* In prior versions of autopsy the known_status was stored in the central
* repository, therefore the properties file only had three values.
@ -279,7 +299,7 @@ final public class TagNameDefinition implements Comparable<TagNameDefinition> {
String[] attributes = tagProps.split(",");
definitions.add(new TagNameDefinition(attributes[0], attributes[1],
TagName.HTML_COLOR.valueOf(attributes[2]), TskData.FileKnown.valueOf(attributes[3])));
TagName.HTML_COLOR.valueOf(attributes[2]), TskData.TagType.valueOf(attributes[3])));
}
return definitions;
@ -316,7 +336,7 @@ final public class TagNameDefinition implements Comparable<TagNameDefinition> {
Integer version = getPropertyFileVersion();
List<TagNameDefinition> definitions = new ArrayList<>();
if (version == null) {
if (version == null || version == 1) {
String tagsProperty = ModuleSettings.getConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY);
if (tagsProperty == null || tagsProperty.isEmpty()) {
ModuleSettings.setConfigSetting(TAGS_SETTINGS_NAME, TAG_SETTING_VERSION_KEY, Integer.toString(TAG_SETTINGS_VERSION));
@ -332,22 +352,27 @@ final public class TagNameDefinition implements Comparable<TagNameDefinition> {
List<String> notableTagList = null;
for (String tagProps : individualTags) {
String[] attributes = tagProps.split(",");
TskData.FileKnown fileKnown = TskData.FileKnown.UNKNOWN;
TskData.TagType tagType = TskData.TagType.SUSPICIOUS;
if (attributes.length == 3) {
// If notableTagList is null load it from the CR.
if (notableTagList == null) {
notableTagList = getCRNotableList();
} else {
if (notableTagList.contains(attributes[0])) {
fileKnown = TskData.FileKnown.BAD;
tagType = TskData.TagType.BAD;
}
}
} else {
fileKnown = TskData.FileKnown.valueOf(attributes[3]);
if (version == 1) {
// handle backwards compatibility
tagType = TskData.TagType.convertFileKnownToTagType(TskData.FileKnown.valueOf(attributes[3]));
} else {
tagType = TskData.TagType.valueOf(attributes[3]);
}
}
definitions.add(new TagNameDefinition(attributes[0], attributes[1],
TagName.HTML_COLOR.valueOf(attributes[2]), fileKnown));
TagName.HTML_COLOR.valueOf(attributes[2]), tagType));
}
}

View File

@ -62,7 +62,7 @@ final class TagNameDialog extends javax.swing.JDialog {
initComponents();
tagNameTextField.setText(tagNameToEdit.getDisplayName());
descriptionTextArea.setText(tagNameToEdit.getDescription());
notableCheckbox.setSelected(tagNameToEdit.getKnownStatus() == TskData.FileKnown.BAD);
notableCheckbox.setSelected(tagNameToEdit.getTagType() == TskData.TagType.BAD);
tagNameTextField.setEnabled(false);
this.display();
}

View File

@ -314,7 +314,7 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
TagNameDialog dialog = new TagNameDialog();
TagNameDialog.BUTTON_PRESSED result = dialog.getResult();
if (result == TagNameDialog.BUTTON_PRESSED.OK) {
TskData.FileKnown status = dialog.isTagNotable() ? TskData.FileKnown.BAD : TskData.FileKnown.UNKNOWN;
TskData.TagType status = dialog.isTagNotable() ? TskData.TagType.BAD : TskData.TagType.SUSPICIOUS;
TagNameDefinition newTagType = new TagNameDefinition(dialog.getTagName(), dialog.getTagDesciption(), DEFAULT_COLOR, status);
/*
* If tag name already exists, don't add the tag name.
@ -348,7 +348,7 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
TagNameDialog dialog = new TagNameDialog(originalTagName);
TagNameDialog.BUTTON_PRESSED result = dialog.getResult();
if (result == TagNameDialog.BUTTON_PRESSED.OK) {
TskData.FileKnown status = dialog.isTagNotable() ? TskData.FileKnown.BAD : TskData.FileKnown.UNKNOWN;
TskData.TagType status = dialog.isTagNotable() ? TskData.TagType.BAD : TskData.TagType.SUSPICIOUS;
TagNameDefinition newTagType = new TagNameDefinition(dialog.getTagName(), dialog.getTagDesciption(), DEFAULT_COLOR, status);
/*
* If tag name already exists, don't add the tag name.
@ -359,7 +359,7 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
tagNamesList.setSelectedValue(newTagType, true);
updatePanel();
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
if (originalTagName.getKnownStatus() != newTagType.getKnownStatus() && Case.isCaseOpen()) {
if (originalTagName.getTagType() != newTagType.getTagType() && Case.isCaseOpen()) {
updatedStatusTags.add(newTagType.getDisplayName());
}
}
@ -449,7 +449,7 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
deleteTagNameButton.setEnabled(enableEdit);
if (isSelected) {
descriptionTextArea.setText(tagNamesList.getSelectedValue().getDescription());
if (tagNamesList.getSelectedValue().getKnownStatus() == TskData.FileKnown.BAD) {
if (tagNamesList.getSelectedValue().getTagType() == TskData.TagType.BAD) {
notableYesOrNoLabel.setText("Yes");
} else {
notableYesOrNoLabel.setText("No");

View File

@ -188,7 +188,7 @@ public class TagsManager implements Closeable {
}
/**
* Gets the set of display names of notable (TskData.FileKnown.BAD) tag
* Gets the set of display names of notable (TskData.TagType.BAD) tag
* types. If a case is not open the list will only include only the user
* defined custom tags. Otherwise the list will include all notable tags.
*
@ -197,7 +197,7 @@ public class TagsManager implements Closeable {
public static List<String> getNotableTagDisplayNames() {
List<String> tagDisplayNames = new ArrayList<>();
for (TagNameDefinition tagDef : TagNameDefinition.getTagNameDefinitions()) {
if (tagDef.getKnownStatus() == TskData.FileKnown.BAD) {
if (tagDef.getTagType() == TskData.TagType.BAD) {
tagDisplayNames.add(tagDef.getDisplayName());
}
}
@ -205,7 +205,7 @@ public class TagsManager implements Closeable {
try {
TagsManager tagsManager = Case.getCurrentCaseThrows().getServices().getTagsManager();
for (TagName tagName : tagsManager.getAllTagNames()) {
if (tagName.getKnownStatus() == TskData.FileKnown.BAD
if (tagName.getTagType() == TskData.TagType.BAD
&& !tagDisplayNames.contains(tagName.getDisplayName())) {
tagDisplayNames.add(tagName.getDisplayName());
}
@ -303,14 +303,14 @@ public class TagsManager implements Closeable {
// add the standard tag names
for (TagNameDefinition def : TagNameDefinition.getStandardTagNameDefinitions()) {
taggingMgr.addOrUpdateTagName(def.getDisplayName(), def.getDescription(), def.getColor(), def.getKnownStatus());
taggingMgr.addOrUpdateTagName(def.getDisplayName(), def.getDescription(), def.getColor(), def.getTagType());
}
//Assume new case and add all tag sets
for (TagSetDefinition setDef : TagSetDefinition.readTagSetDefinitions()) {
List<TagName> tagNamesInSet = new ArrayList<>();
for (TagNameDefinition tagNameDef : setDef.getTagNameDefinitions()) {
tagNamesInSet.add(taggingMgr.addOrUpdateTagName(tagNameDef.getDisplayName(), tagNameDef.getDescription(), tagNameDef.getColor(), tagNameDef.getKnownStatus()));
tagNamesInSet.add(taggingMgr.addOrUpdateTagName(tagNameDef.getDisplayName(), tagNameDef.getDescription(), tagNameDef.getColor(), tagNameDef.getTagType()));
}
if (!tagNamesInSet.isEmpty()) {
@ -505,7 +505,7 @@ public class TagsManager implements Closeable {
* name to the case database.
*/
public TagName addTagName(String displayName) throws TagNameAlreadyExistsException, TskCoreException {
return addTagName(displayName, "", TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN);
return addTagName(displayName, "", TagName.HTML_COLOR.NONE, TskData.TagType.SUSPICIOUS);
}
/**
@ -524,7 +524,7 @@ public class TagsManager implements Closeable {
* name to the case database.
*/
public TagName addTagName(String displayName, String description) throws TagNameAlreadyExistsException, TskCoreException {
return addTagName(displayName, description, TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN);
return addTagName(displayName, description, TagName.HTML_COLOR.NONE, TskData.TagType.SUSPICIOUS);
}
/**
@ -543,7 +543,23 @@ public class TagsManager implements Closeable {
* name to the case database.
*/
public TagName addTagName(String displayName, String description, TagName.HTML_COLOR color) throws TagNameAlreadyExistsException, TskCoreException {
return addTagName(displayName, description, color, TskData.FileKnown.UNKNOWN);
return addTagName(displayName, description, color, TskData.TagType.SUSPICIOUS);
}
/**
*
* @param displayName
* @param description
* @param color
* @param knownStatus
* @return
* @throws org.sleuthkit.autopsy.casemodule.services.TagsManager.TagNameAlreadyExistsException
* @throws TskCoreException
* @deprecated addTagName(String displayName, String description, TagName.HTML_COLOR color, TskData.TagType tagType) should be used instead
*/
@Deprecated
public TagName addTagName(String displayName, String description, TagName.HTML_COLOR color, TskData.FileKnown knownStatus) throws TagNameAlreadyExistsException, TskCoreException {
return addTagName(displayName, description, color, TskData.TagType.convertFileKnownToTagType(knownStatus));
}
/**
@ -553,8 +569,8 @@ public class TagsManager implements Closeable {
* @param displayName The display name for the new tag type.
* @param description The description for the new tag type.
* @param color The color to associate with the new tag type.
* @param knownStatus The knownStatus to be used for the tag when
* correlating on the tagged item
* @param tagType The tagType to be used for the tag when
correlating on the tagged item
*
* @return A TagName object that can be used to add instances of the tag
* type to the case database.
@ -563,12 +579,12 @@ public class TagsManager implements Closeable {
* @throws TskCoreException If there is an error adding the tag
* name to the case database.
*/
public TagName addTagName(String displayName, String description, TagName.HTML_COLOR color, TskData.FileKnown knownStatus) throws TagNameAlreadyExistsException, TskCoreException {
public TagName addTagName(String displayName, String description, TagName.HTML_COLOR color, TskData.TagType tagType) throws TagNameAlreadyExistsException, TskCoreException {
synchronized (lock) {
try {
TagName tagName = caseDb.getTaggingManager().addOrUpdateTagName(displayName, description, color, knownStatus);
TagName tagName = caseDb.getTaggingManager().addOrUpdateTagName(displayName, description, color, tagType);
Set<TagNameDefinition> customTypes = TagNameDefinition.getTagNameDefinitions();
customTypes.add(new TagNameDefinition(displayName, description, color, knownStatus));
customTypes.add(new TagNameDefinition(displayName, description, color, tagType));
TagNameDefinition.setTagNameDefinitions(customTypes);
return tagName;
} catch (TskCoreException ex) {

View File

@ -167,8 +167,8 @@ public final class OtherOccurrences {
if (newNode.getKnown() != TskData.FileKnown.BAD) {
List<ContentTag> fileMatchTags = autopsyCase.getServices().getTagsManager().getContentTagsByContent(newFile);
for (ContentTag tag : fileMatchTags) {
TskData.FileKnown tagKnownStatus = tag.getName().getKnownStatus();
if (tagKnownStatus.equals(TskData.FileKnown.BAD)) {
TskData.TagType tagType = tag.getName().getTagType();
if (tagType.equals(TskData.TagType.BAD)) {
newNode.updateKnown(TskData.FileKnown.BAD);
break;
}

View File

@ -307,7 +307,7 @@ public class CentralRepoDbUtil {
}
/**
* Conver thte Type's DbTableName string to the *_instances table name.
* Convert the Type's DbTableName string to the *_instances table name.
*
* @param type Correlation Type
*

View File

@ -482,10 +482,11 @@ public final class CaseEventListener implements PropertyChangeListener {
for (BlackboardArtifactTag bbTag : artifactTags) {
//start with assumption that none of the other tags applied to this Correlation Attribute will prevent it's status from being changed
boolean hasTagWithConflictingKnownStatus = false;
// if the status of the tag has been changed to TskData.FileKnown.UNKNOWN
// if the status of the tag has been changed to TskData.TagType.UNKNOWN or TskData.TagType.SUSPICIOUS
// we need to check the status of all other tags on this correlation attribute before changing
// the status of the correlation attribute in the central repository
if (tagName.getKnownStatus() == TskData.FileKnown.UNKNOWN) {
if (tagName.getTagType() == TskData.TagType.UNKNOWN
|| tagName.getTagType() == TskData.TagType.SUSPICIOUS) {
Content content = bbTag.getContent();
// If the content which this Blackboard Artifact Tag is linked to is an AbstractFile with KNOWN status then
// it's status in the central reporsitory should not be changed to UNKNOWN
@ -503,7 +504,7 @@ public final class CaseEventListener implements PropertyChangeListener {
continue;
}
//if any other tags on this artifact are Notable in status then this artifact can not have its status changed
if (TskData.FileKnown.BAD == t.getName().getKnownStatus()) {
if (TskData.TagType.BAD == t.getName().getTagType()) {
//a tag with a conflicting status has been found, the status of this correlation attribute can not be modified
hasTagWithConflictingKnownStatus = true;
break;
@ -522,10 +523,11 @@ public final class CaseEventListener implements PropertyChangeListener {
for (ContentTag contentTag : fileTags) {
//start with assumption that none of the other tags applied to this ContentTag will prevent it's status from being changed
boolean hasTagWithConflictingKnownStatus = false;
// if the status of the tag has been changed to TskData.FileKnown.UNKNOWN
// if the status of the tag has been changed to TskData.TagType.UNKNOWN or TskData.TagType.SUSPICIOUS
// we need to check the status of all other tags on this file before changing
// the status of the file in the central repository
if (tagName.getKnownStatus() == TskData.FileKnown.UNKNOWN) {
if (tagName.getTagType() == TskData.TagType.UNKNOWN
|| tagName.getTagType() == TskData.TagType.SUSPICIOUS) {
Content content = contentTag.getContent();
TagsManager tagsManager = Case.getCurrentCaseThrows().getServices().getTagsManager();
List<ContentTag> tags = tagsManager.getContentTagsByContent(content);
@ -536,7 +538,7 @@ public final class CaseEventListener implements PropertyChangeListener {
continue;
}
//if any other tags on this file are Notable in status then this file can not have its status changed
if (TskData.FileKnown.BAD == t.getName().getKnownStatus()) {
if (TskData.TagType.BAD == t.getName().getTagType()) {
//a tag with a conflicting status has been found, the status of this file can not be modified
hasTagWithConflictingKnownStatus = true;
break;
@ -556,7 +558,7 @@ public final class CaseEventListener implements PropertyChangeListener {
}
}
} catch (TskCoreException ex) {
LOGGER.log(Level.SEVERE, "Cannot update known status in central repository for tag: " + modifiedTagName, ex); //NON-NLS
LOGGER.log(Level.SEVERE, "Cannot update tag type in central repository for tag: " + modifiedTagName, ex); //NON-NLS
} catch (CentralRepoException ex) {
LOGGER.log(Level.SEVERE, "Cannot get central repository for tag: " + modifiedTagName, ex); //NON-NLS
} catch (NoCurrentCaseException ex) {

View File

@ -158,7 +158,7 @@ final class ReportVisualPanel2 extends JPanel {
}
for (TagName tagName : tagNamesInUse) {
String notableString = tagName.getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = tagName.getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
tagStates.put(tagName.getDisplayName() + notableString, Boolean.FALSE);
}
tags.addAll(tagStates.keySet());

View File

@ -94,7 +94,7 @@ class TableReportGenerator {
String notableString = "";
for (TagName tagName : tagNamesInUse) {
notableString = tagName.getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
notableString = tagName.getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
tagNames.add(tagName.getDisplayName() + notableString);
}
tagNamesFilter = new HashSet<>(tagNames);
@ -369,7 +369,7 @@ class TableReportGenerator {
}
// skip tags that we are not reporting on
String notableString = tag.getName().getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = tag.getName().getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
if (passesTagNamesFilter(tag.getName().getDisplayName() + notableString) == false) {
continue;
}
@ -461,7 +461,7 @@ class TableReportGenerator {
return;
}
String notableString = tag.getName().getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = tag.getName().getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
if (passesTagNamesFilter(tag.getName().getDisplayName() + notableString) == false) {
continue;
}
@ -1193,7 +1193,7 @@ class TableReportGenerator {
try {
List<ContentTag> contentTags = Case.getCurrentCaseThrows().getServices().getTagsManager().getContentTagsByContent(content);
for (ContentTag ct : contentTags) {
String notableString = ct.getName().getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = ct.getName().getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
allTags.add(ct.getName().getDisplayName() + notableString);
}
} catch (TskCoreException | NoCurrentCaseException ex) {
@ -1239,7 +1239,7 @@ class TableReportGenerator {
List<BlackboardArtifactTag> tags = Case.getCurrentCaseThrows().getServices().getTagsManager().getBlackboardArtifactTagsByArtifact(artifact);
HashSet<String> uniqueTagNames = new HashSet<>();
for (BlackboardArtifactTag tag : tags) {
String notableString = tag.getName().getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = tag.getName().getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
uniqueTagNames.add(tag.getName().getDisplayName() + notableString);
}
if (failsTagFilter(uniqueTagNames, tagNamesFilter)) {

View File

@ -954,7 +954,7 @@ public class HTMLReport implements TableReportModule {
}
for (int i = 0; i < contentTags.size(); i++) {
ContentTag tag = contentTags.get(i);
String notableString = tag.getName().getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = tag.getName().getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
linkToThumbnail.append(tag.getName().getDisplayName()).append(notableString);
if (i != contentTags.size() - 1) {
linkToThumbnail.append(", ");

View File

@ -344,7 +344,7 @@ public class PortableCaseReportModule implements ReportModule {
progressPanel.updateStatusLabel(Bundle.PortableCaseReportModule_generateReport_copyingTags());
try {
for (TagName tagName : tagNames) {
TagName newTagName = portableSkCase.getTaggingManager().addOrUpdateTagName(tagName.getDisplayName(), tagName.getDescription(), tagName.getColor(), tagName.getKnownStatus());
TagName newTagName = portableSkCase.getTaggingManager().addOrUpdateTagName(tagName.getDisplayName(), tagName.getDescription(), tagName.getColor(), tagName.getTagType());
oldTagNameToNewTagName.put(tagName, newTagName);
}
} catch (TskCoreException ex) {

View File

@ -64,7 +64,7 @@ public final class TagUtils {
logger.log(Level.SEVERE, String.format("Failed to get TagSet for TagName '%s' (ID=%d)", tagName.getDisplayName(), tagName.getId()));
}
if (tagName.getKnownStatus() == TskData.FileKnown.BAD) {
if (tagName.getTagType() == TskData.TagType.BAD) {
displayName += " (Notable)";
}

View File

@ -65,11 +65,11 @@ public class ImageGalleryService implements AutopsyService {
static {
// NOTE: The colors here are what will be shown in the border
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT0, "", TagName.HTML_COLOR.GREEN, TskData.FileKnown.UNKNOWN));
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT1, "", TagName.HTML_COLOR.RED, TskData.FileKnown.BAD));
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT2, "", TagName.HTML_COLOR.YELLOW, TskData.FileKnown.BAD));
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT3, "", TagName.HTML_COLOR.FUCHSIA, TskData.FileKnown.BAD));
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT4, "", TagName.HTML_COLOR.BLUE, TskData.FileKnown.UNKNOWN));
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT0, "", TagName.HTML_COLOR.GREEN, TskData.TagType.SUSPICIOUS));
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT1, "", TagName.HTML_COLOR.RED, TskData.TagType.BAD));
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT2, "", TagName.HTML_COLOR.YELLOW, TskData.TagType.BAD));
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT3, "", TagName.HTML_COLOR.FUCHSIA, TskData.TagType.BAD));
PROJECT_VIC_US_CATEGORIES.add(new TagNameDefinition(PV_US_CAT4, "", TagName.HTML_COLOR.BLUE, TskData.TagType.SUSPICIOUS));
}
@Override
@ -149,7 +149,7 @@ public class ImageGalleryService implements AutopsyService {
private void addProjetVicTagSet(Case currentCase) throws TskCoreException {
List<TagName> tagNames = new ArrayList<>();
for (TagNameDefinition def : PROJECT_VIC_US_CATEGORIES) {
tagNames.add(currentCase.getSleuthkitCase().getTaggingManager().addOrUpdateTagName(def.getDisplayName(), def.getDescription(), def.getColor(), def.getKnownStatus()));
tagNames.add(currentCase.getSleuthkitCase().getTaggingManager().addOrUpdateTagName(def.getDisplayName(), def.getDescription(), def.getColor(), def.getTagType()));
}
currentCase.getServices().getTagsManager().addTagSet(PROJECT_VIC_TAG_SET_NAME, tagNames);
}

View File

@ -68,7 +68,7 @@ public class AddTagAction extends Action {
this.selectedFileIDs = selectedFileIDs;
this.tagName = tagName;
setGraphic(controller.getTagsManager().getGraphic(tagName));
String notableString = tagName.getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = tagName.getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
setText(tagName.getDisplayName() + notableString);
setEventHandler(actionEvent -> addTagWithComment(""));
}

View File

@ -66,7 +66,7 @@ public class DeleteTagAction extends Action {
this.tagName = tagName;
this.contentTag = contentTag;
setGraphic(controller.getTagsManager().getGraphic(tagName));
String notableString = tagName.getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
String notableString = tagName.getTagType() == TskData.TagType.BAD ? TagsManager.getNotableTagLabel() : "";
setText(tagName.getDisplayName() + notableString);
setEventHandler(actionEvent -> deleteTag());
}

View File

@ -320,6 +320,8 @@ class Chromium extends Extract {
jProfile = jElement.get("profile").getAsJsonObject(); //NON-NLS
jInfoCache = jProfile.get("info_cache").getAsJsonObject();
} else {
userProfiles.put(browserLocation, "Default");
browserLocations.put(browserLocation, browser);
continue;
}
} catch (JsonIOException | JsonSyntaxException | IllegalStateException ex) {
@ -854,6 +856,7 @@ class Chromium extends Extract {
Set<String> bookmarkKeys = jRoot.keySet();
for (String bookmarkKey : bookmarkKeys) {
JsonObject jBookmark = jRoot.get(bookmarkKey).getAsJsonObject(); //NON-NLS
if (jBookmark.has("children")) {
JsonArray jBookmarkArray = jBookmark.getAsJsonArray("children"); //NON-NLS
for (JsonElement result : jBookmarkArray) {
JsonObject address = result.getAsJsonObject();
@ -908,6 +911,7 @@ class Chromium extends Extract {
}
}
}
if (!context.dataSourceIngestIsCancelled()) {
postArtifacts(bbartifacts);