mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-19 11:07:43 +00:00
Merge branch 'develop' of https://github.com/sleuthkit/autopsy into develop
This commit is contained in:
commit
c3330e3968
@ -1,9 +1,5 @@
|
|||||||
Changes to make to API when we are ready to make backward incompatible changes:
|
Changes to make to API when we are ready to make backward incompatible changes:
|
||||||
|
|
||||||
- HTMLReport has special API for more context on columns and special handling in REportGenerator. Change all reports to the new API.
|
- HTMLReport has special API for more context on columns and special handling in REportGenerator. Change all reports to the new API.
|
||||||
- DataContentViewer.isPreferred does not need isSupported to be passed in
|
|
||||||
- DataContentViewerHex and Strings can have the public setDataView methods removed in favor of the new private ones
|
|
||||||
- Content.getUniquePath() should not thrown TskException. We should deal with it in the method.
|
- Content.getUniquePath() should not thrown TskException. We should deal with it in the method.
|
||||||
- Make the list of events that Case fires off to be part of an enum to group them together (like IngestManager does).
|
- Make the list of events that Case fires off to be part of an enum to group them together (like IngestManager does).
|
||||||
- Sub-modules in RecentActivity have a bunch of public/protected variables that do not need to be. (i.e. ExtractRegistry.rrFullFound).
|
|
||||||
- Delete BrowserType enum and BrowserActivityType in RecentActivity.
|
|
||||||
|
@ -234,9 +234,6 @@ public class AddImageTask implements Runnable {
|
|||||||
if (!(cancelled || hasCritError)) {
|
if (!(cancelled || hasCritError)) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Tell the progress monitor we're done
|
|
||||||
progressMonitor.setProgress(100);
|
|
||||||
|
|
||||||
if (newContents.isEmpty()) {
|
if (newContents.isEmpty()) {
|
||||||
if (addImageProcess != null) { // and if we're done configuring ingest
|
if (addImageProcess != null) { // and if we're done configuring ingest
|
||||||
// commit anything
|
// commit anything
|
||||||
@ -255,6 +252,8 @@ public class AddImageTask implements Runnable {
|
|||||||
else { //already commited?
|
else { //already commited?
|
||||||
logger.log(Level.INFO, "Assuming image already committed, will not commit.");
|
logger.log(Level.INFO, "Assuming image already committed, will not commit.");
|
||||||
}
|
}
|
||||||
|
// Tell the progress monitor we're done
|
||||||
|
progressMonitor.setProgress(100);
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
//handle unchecked exceptions post image add
|
//handle unchecked exceptions post image add
|
||||||
|
@ -185,7 +185,7 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int isPreferred(Node node, boolean isSupported) {
|
public int isPreferred(Node node) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,16 +83,15 @@ public interface DataContentViewer {
|
|||||||
* Checks whether the given viewer is preferred for the Node.
|
* Checks whether the given viewer is preferred for the Node.
|
||||||
* This is a bit subjective, but the idea is that Autopsy wants to display
|
* This is a bit subjective, but the idea is that Autopsy wants to display
|
||||||
* the most relevant tab. The more generic the viewer, the lower
|
* the most relevant tab. The more generic the viewer, the lower
|
||||||
* the return value should be.
|
* the return value should be. This will only be called on viewers that
|
||||||
|
* support the given node.
|
||||||
*
|
*
|
||||||
* @param node Node to check for preference
|
* @param node Node to check for preference
|
||||||
* @param isSupported true if the viewer is supported by the node, false otherwise
|
|
||||||
* as determined by a previous check
|
|
||||||
* @return an int (0-10) higher return means the viewer has higher priority
|
* @return an int (0-10) higher return means the viewer has higher priority
|
||||||
* 0 means not supported
|
* 0 means not supported
|
||||||
* 1 to 2 means the module will display all file types (such as the hex viewer)
|
* 1 to 2 means the module will display all file types (such as the hex viewer)
|
||||||
* 3-10 are prioritized by Content viewer developer. Modules that operate on very
|
* 3-10 are prioritized by Content viewer developer. Modules that operate on very
|
||||||
* few file types should be towards 10.
|
* few file types should be towards 10.
|
||||||
*/
|
*/
|
||||||
public int isPreferred(Node node, boolean isSupported);
|
public int isPreferred(Node node);
|
||||||
}
|
}
|
||||||
|
@ -181,7 +181,7 @@ public class DataContentPanel extends javax.swing.JPanel implements DataContent,
|
|||||||
jTabbedPane1.setEnabledAt(i, true);
|
jTabbedPane1.setEnabledAt(i, true);
|
||||||
|
|
||||||
// remember the viewer with the highest preference value
|
// remember the viewer with the highest preference value
|
||||||
int currentPreferred = dcv.isPreferred(selectedNode, true);
|
int currentPreferred = dcv.isPreferred(selectedNode);
|
||||||
if (currentPreferred > maxPreferred) {
|
if (currentPreferred > maxPreferred) {
|
||||||
preferredViewerIndex = i;
|
preferredViewerIndex = i;
|
||||||
maxPreferred = currentPreferred;
|
maxPreferred = currentPreferred;
|
||||||
@ -258,8 +258,8 @@ public class DataContentPanel extends javax.swing.JPanel implements DataContent,
|
|||||||
return this.wrapped.isSupported(node);
|
return this.wrapped.isSupported(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
int isPreferred(Node node, boolean isSupported) {
|
int isPreferred(Node node) {
|
||||||
return this.wrapped.isPreferred(node, isSupported);
|
return this.wrapped.isPreferred(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,18 +330,13 @@ public class DataContentViewerArtifact extends javax.swing.JPanel implements Dat
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int isPreferred(Node node, boolean isSupported) {
|
public int isPreferred(Node node) {
|
||||||
BlackboardArtifact artifact = node.getLookup().lookup(BlackboardArtifact.class);
|
BlackboardArtifact artifact = node.getLookup().lookup(BlackboardArtifact.class);
|
||||||
if(isSupported) {
|
if(artifact == null) {
|
||||||
if(artifact == null) {
|
return 3;
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return 5;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 0;
|
return 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,12 +434,8 @@ public class DataContentViewerHex extends javax.swing.JPanel implements DataCont
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int isPreferred(Node node, boolean isSupported) {
|
public int isPreferred(Node node) {
|
||||||
if (isSupported) {
|
return 1;
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -226,25 +226,22 @@ public class DataContentViewerMedia extends javax.swing.JPanel implements DataCo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int isPreferred(Node node, boolean isSupported) {
|
public int isPreferred(Node node) {
|
||||||
if (isSupported) {
|
//special case, check if deleted video, then do not make it preferred
|
||||||
//special case, check if deleted video, then do not make it preferred
|
AbstractFile file = node.getLookup().lookup(AbstractFile.class);
|
||||||
AbstractFile file = node.getLookup().lookup(AbstractFile.class);
|
if (file == null) {
|
||||||
if (file == null) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
String name = file.getName().toLowerCase();
|
|
||||||
boolean deleted = file.isDirNameFlagSet(TSK_FS_NAME_FLAG_ENUM.UNALLOC);
|
|
||||||
|
|
||||||
if (containsExt(name, videoExtensions) && deleted) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return 7;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
String name = file.getName().toLowerCase();
|
||||||
|
boolean deleted = file.isDirNameFlagSet(TSK_FS_NAME_FLAG_ENUM.UNALLOC);
|
||||||
|
|
||||||
|
if (containsExt(name, videoExtensions) && deleted) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean containsExt(String name, String[] exts) {
|
private static boolean containsExt(String name, String[] exts) {
|
||||||
|
@ -322,14 +322,6 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
|
|||||||
private javax.swing.JLabel totalPageLabel;
|
private javax.swing.JLabel totalPageLabel;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public void setDataView(Content dataSource, long offset, boolean reset) {
|
|
||||||
if (reset) {
|
|
||||||
resetComponent();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
setDataView(dataSource, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the DataView (The tabbed panel)
|
* Sets the DataView (The tabbed panel)
|
||||||
@ -400,6 +392,30 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
|
|||||||
this.setCursor(null);
|
this.setCursor(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setDataView(StringContent dataSource) {
|
||||||
|
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
|
try {
|
||||||
|
this.dataSource = null;
|
||||||
|
|
||||||
|
// set the data on the bottom and show it
|
||||||
|
String text = dataSource.getString();
|
||||||
|
|
||||||
|
nextPageButton.setEnabled(false);
|
||||||
|
|
||||||
|
prevPageButton.setEnabled(false);
|
||||||
|
currentPage = 1;
|
||||||
|
|
||||||
|
int totalPage = 1;
|
||||||
|
totalPageLabel.setText(Integer.toString(totalPage));
|
||||||
|
currentPageLabel.setText(Integer.toString(currentPage));
|
||||||
|
outputViewPane.setText(text); // set the output view
|
||||||
|
setComponentsVisibility(true); // shows the components that not needed
|
||||||
|
outputViewPane.moveCaretPosition(0);
|
||||||
|
} finally {
|
||||||
|
this.setCursor(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To set the visibility of specific components in this class.
|
* To set the visibility of specific components in this class.
|
||||||
*
|
*
|
||||||
@ -484,12 +500,8 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int isPreferred(Node node, boolean isSupported) {
|
public int isPreferred(Node node) {
|
||||||
if (node != null && isSupported) {
|
return 1;
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -497,29 +509,6 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDataView(StringContent dataSource) {
|
|
||||||
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
|
||||||
try {
|
|
||||||
this.dataSource = null;
|
|
||||||
|
|
||||||
// set the data on the bottom and show it
|
|
||||||
String text = dataSource.getString();
|
|
||||||
|
|
||||||
nextPageButton.setEnabled(false);
|
|
||||||
|
|
||||||
prevPageButton.setEnabled(false);
|
|
||||||
currentPage = 1;
|
|
||||||
|
|
||||||
int totalPage = 1;
|
|
||||||
totalPageLabel.setText(Integer.toString(totalPage));
|
|
||||||
currentPageLabel.setText(Integer.toString(currentPage));
|
|
||||||
outputViewPane.setText(text); // set the output view
|
|
||||||
setComponentsVisibility(true); // shows the components that not needed
|
|
||||||
outputViewPane.moveCaretPosition(0);
|
|
||||||
} finally {
|
|
||||||
this.setCursor(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Show the right click menu only if evt is the correct mouse event */
|
/* Show the right click menu only if evt is the correct mouse event */
|
||||||
private void maybeShowPopup(java.awt.event.MouseEvent evt) {
|
private void maybeShowPopup(java.awt.event.MouseEvent evt) {
|
||||||
|
@ -166,10 +166,7 @@ public class SampleContentViewer extends javax.swing.JPanel implements DataConte
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int isPreferred(Node node, boolean isSupported) {
|
public int isPreferred(Node node) {
|
||||||
if (isSupported == false) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
// we return 1 since this module will operate on nearly all files
|
// we return 1 since this module will operate on nearly all files
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,6 @@ public final class HashDbConfigPanel extends javax.swing.JPanel implements Optio
|
|||||||
private static final String NO_SELECTION_TEXT = "No database selected";
|
private static final String NO_SELECTION_TEXT = "No database selected";
|
||||||
private static final String ERROR_GETTING_PATH_TEXT = "Error occurred getting path";
|
private static final String ERROR_GETTING_PATH_TEXT = "Error occurred getting path";
|
||||||
private static final String ERROR_GETTING_INDEX_STATUS_TEXT = "Error occurred getting status";
|
private static final String ERROR_GETTING_INDEX_STATUS_TEXT = "Error occurred getting status";
|
||||||
private static final String LEGACY_INDEX_FILE_EXTENSION = "-md5.idx";
|
|
||||||
private HashDbManager hashSetManager = HashDbManager.getInstance();
|
private HashDbManager hashSetManager = HashDbManager.getInstance();
|
||||||
private HashSetTableModel hashSetTableModel = new HashSetTableModel();
|
private HashSetTableModel hashSetTableModel = new HashSetTableModel();
|
||||||
|
|
||||||
@ -161,13 +160,10 @@ public final class HashDbConfigPanel extends javax.swing.JPanel implements Optio
|
|||||||
hashDbIndexStatusLabel.setForeground(Color.black);
|
hashDbIndexStatusLabel.setForeground(Color.black);
|
||||||
indexButton.setEnabled(false);
|
indexButton.setEnabled(false);
|
||||||
}
|
}
|
||||||
else if (db.hasLookupIndex()) {
|
else if (db.hasIndex()) {
|
||||||
if (db.hasIndexOnly()) {
|
if (db.hasIndexOnly()) {
|
||||||
hashDbIndexStatusLabel.setText("Index only");
|
hashDbIndexStatusLabel.setText("Index only");
|
||||||
}
|
}
|
||||||
else if (db.getIndexPath().endsWith(LEGACY_INDEX_FILE_EXTENSION)) {
|
|
||||||
hashDbIndexStatusLabel.setText("Indexed (old format)");
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
hashDbIndexStatusLabel.setText("Indexed");
|
hashDbIndexStatusLabel.setText("Indexed");
|
||||||
}
|
}
|
||||||
@ -242,7 +238,7 @@ public final class HashDbConfigPanel extends javax.swing.JPanel implements Optio
|
|||||||
List<HashDb> unindexed = new ArrayList<>();
|
List<HashDb> unindexed = new ArrayList<>();
|
||||||
for (HashDb hashSet : hashSetManager.getAllHashSets()) {
|
for (HashDb hashSet : hashSetManager.getAllHashSets()) {
|
||||||
try {
|
try {
|
||||||
if (!hashSet.hasLookupIndex()) {
|
if (!hashSet.hasIndex()) {
|
||||||
unindexed.add(hashSet);
|
unindexed.add(hashSet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -376,7 +372,7 @@ public final class HashDbConfigPanel extends javax.swing.JPanel implements Optio
|
|||||||
|
|
||||||
private boolean indexExists(int rowIndex){
|
private boolean indexExists(int rowIndex){
|
||||||
try {
|
try {
|
||||||
return hashSets.get(rowIndex).hasLookupIndex();
|
return hashSets.get(rowIndex).hasIndex();
|
||||||
}
|
}
|
||||||
catch (TskCoreException ex) {
|
catch (TskCoreException ex) {
|
||||||
Logger.getLogger(HashSetTableModel.class.getName()).log(Level.SEVERE, "Error getting index info for hash database", ex);
|
Logger.getLogger(HashSetTableModel.class.getName()).log(Level.SEVERE, "Error getting index info for hash database", ex);
|
||||||
|
@ -43,6 +43,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
|||||||
import org.sleuthkit.datamodel.TskData;
|
import org.sleuthkit.datamodel.TskData;
|
||||||
import org.sleuthkit.datamodel.TskException;
|
import org.sleuthkit.datamodel.TskException;
|
||||||
import org.sleuthkit.autopsy.hashdatabase.HashDbManager.HashDb;
|
import org.sleuthkit.autopsy.hashdatabase.HashDbManager.HashDb;
|
||||||
|
import org.sleuthkit.datamodel.HashInfo;
|
||||||
|
|
||||||
public class HashDbIngestModule extends IngestModuleAbstractFile {
|
public class HashDbIngestModule extends IngestModuleAbstractFile {
|
||||||
private static HashDbIngestModule instance = null;
|
private static HashDbIngestModule instance = null;
|
||||||
@ -164,7 +165,7 @@ public class HashDbIngestModule extends IngestModuleAbstractFile {
|
|||||||
for (HashDb db : hashDbs) {
|
for (HashDb db : hashDbs) {
|
||||||
if (db.getSearchDuringIngest()) {
|
if (db.getSearchDuringIngest()) {
|
||||||
try {
|
try {
|
||||||
if (db.hasLookupIndex()) {
|
if (db.hasIndex()) {
|
||||||
hashDbsForIngest.add(db);
|
hashDbsForIngest.add(db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -218,7 +219,8 @@ public class HashDbIngestModule extends IngestModuleAbstractFile {
|
|||||||
for (HashDb db : knownBadHashSets) {
|
for (HashDb db : knownBadHashSets) {
|
||||||
try {
|
try {
|
||||||
long lookupstart = System.currentTimeMillis();
|
long lookupstart = System.currentTimeMillis();
|
||||||
if (db.hasMd5HashOf(file)) {
|
HashInfo hashInfo = db.lookUp(file);
|
||||||
|
if (null != hashInfo) {
|
||||||
foundBad = true;
|
foundBad = true;
|
||||||
knownBadCount += 1;
|
knownBadCount += 1;
|
||||||
try {
|
try {
|
||||||
@ -232,13 +234,13 @@ public class HashDbIngestModule extends IngestModuleAbstractFile {
|
|||||||
String hashSetName = db.getHashSetName();
|
String hashSetName = db.getHashSetName();
|
||||||
|
|
||||||
String comment = "";
|
String comment = "";
|
||||||
ArrayList<String> comments = db.lookUp(file).getComments();
|
ArrayList<String> comments = hashInfo.getComments();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (String c : comments) {
|
for (String c : comments) {
|
||||||
comment += c;
|
|
||||||
if (++i > 1) {
|
if (++i > 1) {
|
||||||
c += ". ";
|
comment += " ";
|
||||||
}
|
}
|
||||||
|
comment += c;
|
||||||
if (comment.length() > MAX_COMMENT_SIZE) {
|
if (comment.length() > MAX_COMMENT_SIZE) {
|
||||||
comment = comment.substring(0, MAX_COMMENT_SIZE) + "...";
|
comment = comment.substring(0, MAX_COMMENT_SIZE) + "...";
|
||||||
break;
|
break;
|
||||||
|
@ -243,9 +243,9 @@ public class HashDbManager implements PropertyChangeListener {
|
|||||||
return hashDb;
|
return hashDb;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void indexHashDatabase(HashDb hashDb, boolean deleteIndexFile) {
|
synchronized void indexHashDatabase(HashDb hashDb) {
|
||||||
hashDb.addPropertyChangeListener(this);
|
hashDb.addPropertyChangeListener(this);
|
||||||
HashDbIndexer creator = new HashDbIndexer(hashDb, deleteIndexFile);
|
HashDbIndexer creator = new HashDbIndexer(hashDb);
|
||||||
creator.execute();
|
creator.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -788,7 +788,7 @@ public class HashDbManager implements PropertyChangeListener {
|
|||||||
* @throws TskCoreException
|
* @throws TskCoreException
|
||||||
*/
|
*/
|
||||||
public void addHashes(Content content, String comment) throws TskCoreException {
|
public void addHashes(Content content, String comment) throws TskCoreException {
|
||||||
// TODO: This only works for AbstractFiles and MD5 hashes at present.
|
// This only works for AbstractFiles and MD5 hashes at present.
|
||||||
assert content instanceof AbstractFile;
|
assert content instanceof AbstractFile;
|
||||||
if (content instanceof AbstractFile) {
|
if (content instanceof AbstractFile) {
|
||||||
AbstractFile file = (AbstractFile)content;
|
AbstractFile file = (AbstractFile)content;
|
||||||
@ -812,7 +812,7 @@ public class HashDbManager implements PropertyChangeListener {
|
|||||||
|
|
||||||
public HashInfo lookUp(Content content) throws TskCoreException {
|
public HashInfo lookUp(Content content) throws TskCoreException {
|
||||||
HashInfo result = null;
|
HashInfo result = null;
|
||||||
// TODO: This only works for AbstractFiles and MD5 hashes at present.
|
// This only works for AbstractFiles and MD5 hashes at present.
|
||||||
assert content instanceof AbstractFile;
|
assert content instanceof AbstractFile;
|
||||||
if (content instanceof AbstractFile) {
|
if (content instanceof AbstractFile) {
|
||||||
AbstractFile file = (AbstractFile)content;
|
AbstractFile file = (AbstractFile)content;
|
||||||
@ -823,12 +823,12 @@ public class HashDbManager implements PropertyChangeListener {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean hasLookupIndex() throws TskCoreException {
|
boolean hasIndex() throws TskCoreException {
|
||||||
return SleuthkitJNI.hashDatabaseHasLookupIndex(handle);
|
return SleuthkitJNI.hashDatabaseHasLookupIndex(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean hasIndexOnly() throws TskCoreException {
|
boolean hasIndexOnly() throws TskCoreException {
|
||||||
return SleuthkitJNI.hashDatabaseHasLegacyLookupIndexOnly(handle);
|
return SleuthkitJNI.hashDatabaseIsIndexOnly(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean canBeReIndexed() throws TskCoreException {
|
boolean canBeReIndexed() throws TskCoreException {
|
||||||
@ -847,11 +847,9 @@ public class HashDbManager implements PropertyChangeListener {
|
|||||||
private class HashDbIndexer extends SwingWorker<Object, Void> {
|
private class HashDbIndexer extends SwingWorker<Object, Void> {
|
||||||
private ProgressHandle progress = null;
|
private ProgressHandle progress = null;
|
||||||
private HashDb hashDb = null;
|
private HashDb hashDb = null;
|
||||||
private boolean deleteIndexFile = false;
|
|
||||||
|
|
||||||
HashDbIndexer(HashDb hashDb, boolean deleteIndexFile) {
|
HashDbIndexer(HashDb hashDb) {
|
||||||
this.hashDb = hashDb;
|
this.hashDb = hashDb;
|
||||||
this.deleteIndexFile = deleteIndexFile;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -861,7 +859,7 @@ public class HashDbManager implements PropertyChangeListener {
|
|||||||
progress.start();
|
progress.start();
|
||||||
progress.switchToIndeterminate();
|
progress.switchToIndeterminate();
|
||||||
try {
|
try {
|
||||||
SleuthkitJNI.createLookupIndexForHashDatabase(hashDb.handle, deleteIndexFile);
|
SleuthkitJNI.createLookupIndexForHashDatabase(hashDb.handle);
|
||||||
}
|
}
|
||||||
catch (TskCoreException ex) {
|
catch (TskCoreException ex) {
|
||||||
Logger.getLogger(HashDb.class.getName()).log(Level.SEVERE, "Error indexing hash database", ex);
|
Logger.getLogger(HashDb.class.getName()).log(Level.SEVERE, "Error indexing hash database", ex);
|
||||||
|
@ -146,7 +146,7 @@ public class HashDbSimpleConfigPanel extends javax.swing.JPanel {
|
|||||||
HashDb db = hashDatabases.get(rowIndex);
|
HashDb db = hashDatabases.get(rowIndex);
|
||||||
boolean dbHasIndex = false;
|
boolean dbHasIndex = false;
|
||||||
try {
|
try {
|
||||||
dbHasIndex = db.hasLookupIndex();
|
dbHasIndex = db.hasIndex();
|
||||||
}
|
}
|
||||||
catch (TskCoreException ex) {
|
catch (TskCoreException ex) {
|
||||||
Logger.getLogger(HashDbSimpleConfigPanel.class.getName()).log(Level.SEVERE, "Error getting info for " + db.getHashSetName() + " hash database", ex);
|
Logger.getLogger(HashDbSimpleConfigPanel.class.getName()).log(Level.SEVERE, "Error getting info for " + db.getHashSetName() + " hash database", ex);
|
||||||
|
@ -21,13 +21,9 @@ package org.sleuthkit.autopsy.hashdatabase;
|
|||||||
|
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
|
||||||
import org.sleuthkit.datamodel.TskCoreException;
|
|
||||||
import org.sleuthkit.autopsy.hashdatabase.HashDbManager.HashDb;
|
import org.sleuthkit.autopsy.hashdatabase.HashDbManager.HashDb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,7 +38,6 @@ import org.sleuthkit.autopsy.hashdatabase.HashDbManager.HashDb;
|
|||||||
*/
|
*/
|
||||||
class ModalNoButtons extends javax.swing.JDialog implements PropertyChangeListener {
|
class ModalNoButtons extends javax.swing.JDialog implements PropertyChangeListener {
|
||||||
|
|
||||||
private static final String INDEX_FILE_EXTENSION = ".kdb";
|
|
||||||
List<HashDb> unindexed;
|
List<HashDb> unindexed;
|
||||||
HashDb toIndex;
|
HashDb toIndex;
|
||||||
HashDbConfigPanel hdbmp;
|
HashDbConfigPanel hdbmp;
|
||||||
@ -211,7 +206,7 @@ class ModalNoButtons extends javax.swing.JDialog implements PropertyChangeListen
|
|||||||
this.CURRENTLYON_LABEL.setText("Currently indexing 1 database");
|
this.CURRENTLYON_LABEL.setText("Currently indexing 1 database");
|
||||||
if (!this.toIndex.isIndexing()) {
|
if (!this.toIndex.isIndexing()) {
|
||||||
this.toIndex.addPropertyChangeListener(this);
|
this.toIndex.addPropertyChangeListener(this);
|
||||||
HashDbManager.getInstance().indexHashDatabase(toIndex, okToDeleteOldIndexFile(toIndex));
|
HashDbManager.getInstance().indexHashDatabase(toIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +222,7 @@ class ModalNoButtons extends javax.swing.JDialog implements PropertyChangeListen
|
|||||||
this.CURRENTLYON_LABEL.setText("Currently indexing 1 of " + length);
|
this.CURRENTLYON_LABEL.setText("Currently indexing 1 of " + length);
|
||||||
if (!db.isIndexing()) {
|
if (!db.isIndexing()) {
|
||||||
db.addPropertyChangeListener(this);
|
db.addPropertyChangeListener(this);
|
||||||
HashDbManager.getInstance().indexHashDatabase(db, okToDeleteOldIndexFile(db));
|
HashDbManager.getInstance().indexHashDatabase(db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -256,22 +251,4 @@ class ModalNoButtons extends javax.swing.JDialog implements PropertyChangeListen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean okToDeleteOldIndexFile(HashDb hashDb) {
|
|
||||||
boolean deleteOldIndexFile = true;
|
|
||||||
try {
|
|
||||||
if (hashDb.hasLookupIndex()) {
|
|
||||||
String indexPath = hashDb.getIndexPath();
|
|
||||||
File indexFile = new File(indexPath);
|
|
||||||
if (!indexPath.endsWith(INDEX_FILE_EXTENSION)) {
|
|
||||||
deleteOldIndexFile = JOptionPane.showConfirmDialog(this, "Updating index file format, delete " + indexFile.getName() + " file that uses the old file format?", "Delete Obsolete Index File", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (TskCoreException ex) {
|
|
||||||
Logger.getLogger(HashDbConfigPanel.class.getName()).log(Level.SEVERE, "Error getting index info for hash database", ex);
|
|
||||||
JOptionPane.showMessageDialog(null, "Error gettting index information for " + hashDb.getHashSetName() + " hash database. Cannot perform indexing operation.", "Hash Database Index Status Error", JOptionPane.ERROR_MESSAGE);
|
|
||||||
}
|
|
||||||
return deleteOldIndexFile;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -311,19 +311,15 @@ public class ExtractedContentViewer implements DataContentViewer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int isPreferred(Node node,
|
public int isPreferred(Node node) {
|
||||||
boolean isSupported) {
|
|
||||||
BlackboardArtifact art = node.getLookup().lookup(BlackboardArtifact.class);
|
BlackboardArtifact art = node.getLookup().lookup(BlackboardArtifact.class);
|
||||||
if (isSupported) {
|
|
||||||
if (art == null) {
|
if (art == null) {
|
||||||
return 4;
|
return 4;
|
||||||
} else if (art.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_KEYWORD_HIT.getTypeID()) {
|
} else if (art.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_KEYWORD_HIT.getTypeID()) {
|
||||||
return 6;
|
return 6;
|
||||||
} else {
|
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
* Autopsy Forensic Browser
|
|
||||||
*
|
|
||||||
* Copyright 2012 Basis Technology Corp.
|
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package org.sleuthkit.autopsy.recentactivity;
|
|
||||||
|
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* No one seems to be using this
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public enum BrowserActivityType {
|
|
||||||
Cookies(0),
|
|
||||||
Url(1),
|
|
||||||
Bookmarks(2);
|
|
||||||
private static final Map<Integer,BrowserActivityType> lookup
|
|
||||||
= new HashMap<Integer,BrowserActivityType>();
|
|
||||||
|
|
||||||
static {
|
|
||||||
for(BrowserActivityType bat : values())
|
|
||||||
lookup.put(bat.type, bat);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private int type;
|
|
||||||
|
|
||||||
private BrowserActivityType(int type)
|
|
||||||
{
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getType() { return type; }
|
|
||||||
|
|
||||||
public static BrowserActivityType get(int type) {
|
|
||||||
switch(type) {
|
|
||||||
case 0: return Cookies;
|
|
||||||
case 1: return Url;
|
|
||||||
case 2: return Bookmarks;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
/*
|
|
||||||
* Autopsy Forensic Browser
|
|
||||||
*
|
|
||||||
* Copyright 2012 Basis Technology Corp.
|
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package org.sleuthkit.autopsy.recentactivity;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* No one is using this. It should go away
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public enum BrowserType {
|
|
||||||
IE(0), //Internet Explorer
|
|
||||||
FF(1), //Firefox
|
|
||||||
CH(2); //Chrome
|
|
||||||
private static final Map<Integer,BrowserType> lookup
|
|
||||||
= new HashMap<Integer,BrowserType>();
|
|
||||||
|
|
||||||
static {
|
|
||||||
for(BrowserType bt : values())
|
|
||||||
lookup.put(bt.type, bt);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private int type;
|
|
||||||
|
|
||||||
private BrowserType(int type)
|
|
||||||
{
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getType() { return type; }
|
|
||||||
|
|
||||||
public static BrowserType get(int type) {
|
|
||||||
switch(type) {
|
|
||||||
case 0: return IE;
|
|
||||||
case 1: return FF;
|
|
||||||
case 2: return CH;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -55,7 +55,7 @@ import org.sleuthkit.datamodel.TskData;
|
|||||||
/**
|
/**
|
||||||
* Chrome recent activity extraction
|
* Chrome recent activity extraction
|
||||||
*/
|
*/
|
||||||
public class Chrome extends Extract {
|
class Chrome extends Extract {
|
||||||
|
|
||||||
private static final String historyQuery = "SELECT urls.url, urls.title, urls.visit_count, urls.typed_count, "
|
private static final String historyQuery = "SELECT urls.url, urls.title, urls.visit_count, urls.typed_count, "
|
||||||
+ "last_visit_time, urls.hidden, visits.visit_time, (SELECT urls.url FROM urls WHERE urls.id=visits.url) as from_visit, visits.transition FROM urls, visits WHERE urls.id = visits.url";
|
+ "last_visit_time, urls.hidden, visits.visit_time, (SELECT urls.url FROM urls WHERE urls.id=visits.url) as from_visit, visits.transition FROM urls, visits WHERE urls.id = visits.url";
|
||||||
@ -65,8 +65,8 @@ public class Chrome extends Extract {
|
|||||||
private static final String downloadQueryVersion30 = "SELECT current_path as full_path, url, start_time, received_bytes FROM downloads, downloads_url_chains WHERE downloads.id=downloads_url_chains.id";
|
private static final String downloadQueryVersion30 = "SELECT current_path as full_path, url, start_time, received_bytes FROM downloads, downloads_url_chains WHERE downloads.id=downloads_url_chains.id";
|
||||||
private static final String loginQuery = "select origin_url, username_value, signon_realm from logins";
|
private static final String loginQuery = "select origin_url, username_value, signon_realm from logins";
|
||||||
private final Logger logger = Logger.getLogger(this.getClass().getName());
|
private final Logger logger = Logger.getLogger(this.getClass().getName());
|
||||||
public int ChromeCount = 0;
|
private int ChromeCount = 0;
|
||||||
final public static String MODULE_VERSION = "1.0";
|
final private static String MODULE_VERSION = "1.0";
|
||||||
private IngestServices services;
|
private IngestServices services;
|
||||||
|
|
||||||
//hide public constructor to prevent from instantiation by ingest module loader
|
//hide public constructor to prevent from instantiation by ingest module loader
|
||||||
|
@ -33,14 +33,14 @@ import org.sleuthkit.autopsy.ingest.IngestModuleDataSource;
|
|||||||
import org.sleuthkit.autopsy.report.SQLiteDBConnect;
|
import org.sleuthkit.autopsy.report.SQLiteDBConnect;
|
||||||
import org.sleuthkit.datamodel.*;
|
import org.sleuthkit.datamodel.*;
|
||||||
|
|
||||||
abstract public class Extract extends IngestModuleDataSource{
|
abstract class Extract extends IngestModuleDataSource{
|
||||||
|
|
||||||
protected Case currentCase = Case.getCurrentCase(); // get the most updated case
|
protected Case currentCase = Case.getCurrentCase(); // get the most updated case
|
||||||
protected SleuthkitCase tskCase = currentCase.getSleuthkitCase();
|
protected SleuthkitCase tskCase = currentCase.getSleuthkitCase();
|
||||||
public final Logger logger = Logger.getLogger(this.getClass().getName());
|
public final Logger logger = Logger.getLogger(this.getClass().getName());
|
||||||
protected final ArrayList<String> errorMessages = new ArrayList<>();
|
private final ArrayList<String> errorMessages = new ArrayList<>();
|
||||||
protected String moduleName = "";
|
String moduleName = "";
|
||||||
protected boolean dataFound = false;
|
boolean dataFound = false;
|
||||||
|
|
||||||
//hide public constructor to prevent from instantiation by ingest module loader
|
//hide public constructor to prevent from instantiation by ingest module loader
|
||||||
Extract() {
|
Extract() {
|
||||||
|
@ -68,7 +68,7 @@ import org.sleuthkit.autopsy.ingest.IngestModuleDataSource;
|
|||||||
import org.sleuthkit.autopsy.ingest.IngestModuleInit;
|
import org.sleuthkit.autopsy.ingest.IngestModuleInit;
|
||||||
import org.sleuthkit.datamodel.*;
|
import org.sleuthkit.datamodel.*;
|
||||||
|
|
||||||
public class ExtractIE extends Extract {
|
class ExtractIE extends Extract {
|
||||||
private static final Logger logger = Logger.getLogger(ExtractIE.class.getName());
|
private static final Logger logger = Logger.getLogger(ExtractIE.class.getName());
|
||||||
private IngestServices services;
|
private IngestServices services;
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ public class ExtractIE extends Extract {
|
|||||||
private String PASCO_LIB_PATH;
|
private String PASCO_LIB_PATH;
|
||||||
private String JAVA_PATH;
|
private String JAVA_PATH;
|
||||||
|
|
||||||
final public static String MODULE_VERSION = "1.0";
|
final private static String MODULE_VERSION = "1.0";
|
||||||
private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
|
private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
|
||||||
|
|
||||||
private ExecUtil execPasco;
|
private ExecUtil execPasco;
|
||||||
|
@ -57,14 +57,14 @@ import org.xml.sax.SAXException;
|
|||||||
* and the second is a set that were customized for Autopsy to produce a more structured
|
* and the second is a set that were customized for Autopsy to produce a more structured
|
||||||
* output of XML so that we can parse and turn into blackboard artifacts.
|
* output of XML so that we can parse and turn into blackboard artifacts.
|
||||||
*/
|
*/
|
||||||
public class ExtractRegistry extends Extract {
|
class ExtractRegistry extends Extract {
|
||||||
|
|
||||||
public Logger logger = Logger.getLogger(this.getClass().getName());
|
private Logger logger = Logger.getLogger(this.getClass().getName());
|
||||||
private String RR_PATH;
|
private String RR_PATH;
|
||||||
private String RR_FULL_PATH;
|
private String RR_FULL_PATH;
|
||||||
boolean rrFound = false; // true if we found the Autopsy-specific version of regripper
|
private boolean rrFound = false; // true if we found the Autopsy-specific version of regripper
|
||||||
boolean rrFullFound = false; // true if we found the full version of regripper
|
private boolean rrFullFound = false; // true if we found the full version of regripper
|
||||||
final public static String MODULE_VERSION = "1.0";
|
final private static String MODULE_VERSION = "1.0";
|
||||||
private ExecUtil execRR;
|
private ExecUtil execRR;
|
||||||
|
|
||||||
//hide public constructor to prevent from instantiation by ingest module loader
|
//hide public constructor to prevent from instantiation by ingest module loader
|
||||||
|
@ -40,7 +40,7 @@ import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
|||||||
* Loads a file that maps USB IDs to names of makes and models. Uses Linux USB info.
|
* Loads a file that maps USB IDs to names of makes and models. Uses Linux USB info.
|
||||||
* This should be renamed because it isn't extracting. It's just mapping IDs to names.
|
* This should be renamed because it isn't extracting. It's just mapping IDs to names.
|
||||||
*/
|
*/
|
||||||
public class ExtractUSB {
|
class ExtractUSB {
|
||||||
private static final Logger logger = Logger.getLogger(ExtractUSB.class.getName());
|
private static final Logger logger = Logger.getLogger(ExtractUSB.class.getName());
|
||||||
private HashMap<String, USBInfo> devices;
|
private HashMap<String, USBInfo> devices;
|
||||||
private static final String DataFile = "USB_DATA.txt";
|
private static final String DataFile = "USB_DATA.txt";
|
||||||
|
@ -50,7 +50,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
|||||||
/**
|
/**
|
||||||
* Firefox recent activity extraction
|
* Firefox recent activity extraction
|
||||||
*/
|
*/
|
||||||
public class Firefox extends Extract {
|
class Firefox extends Extract {
|
||||||
|
|
||||||
private static final String historyQuery = "SELECT moz_historyvisits.id,url,title,visit_count,(visit_date/1000000) as visit_date,from_visit,(SELECT url FROM moz_places WHERE id=moz_historyvisits.from_visit) as ref FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id AND hidden = 0";
|
private static final String historyQuery = "SELECT moz_historyvisits.id,url,title,visit_count,(visit_date/1000000) as visit_date,from_visit,(SELECT url FROM moz_places WHERE id=moz_historyvisits.from_visit) as ref FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id AND hidden = 0";
|
||||||
private static final String cookieQuery = "SELECT name,value,host,expiry,(lastAccessed/1000000) as lastAccessed,(creationTime/1000000) as creationTime FROM moz_cookies";
|
private static final String cookieQuery = "SELECT name,value,host,expiry,(lastAccessed/1000000) as lastAccessed,(creationTime/1000000) as creationTime FROM moz_cookies";
|
||||||
@ -59,8 +59,7 @@ public class Firefox extends Extract {
|
|||||||
private static final String downloadQuery = "SELECT target, source,(startTime/1000000) as startTime, maxBytes FROM moz_downloads";
|
private static final String downloadQuery = "SELECT target, source,(startTime/1000000) as startTime, maxBytes FROM moz_downloads";
|
||||||
private static final String downloadQueryVersion24 = "SELECT url, content as target, (lastModified/1000000) as lastModified FROM moz_places, moz_annos WHERE moz_places.id = moz_annos.place_id AND moz_annos.anno_attribute_id = 3";
|
private static final String downloadQueryVersion24 = "SELECT url, content as target, (lastModified/1000000) as lastModified FROM moz_places, moz_annos WHERE moz_places.id = moz_annos.place_id AND moz_annos.anno_attribute_id = 3";
|
||||||
|
|
||||||
public int FireFoxCount = 0;
|
final private static String MODULE_VERSION = "1.0";
|
||||||
final public static String MODULE_VERSION = "1.0";
|
|
||||||
private IngestServices services;
|
private IngestServices services;
|
||||||
|
|
||||||
//hide public constructor to prevent from instantiation by ingest module loader
|
//hide public constructor to prevent from instantiation by ingest module loader
|
||||||
|
@ -51,7 +51,7 @@ public final class RAImageIngestModule extends IngestModuleDataSource {
|
|||||||
private StringBuilder subCompleted = new StringBuilder();
|
private StringBuilder subCompleted = new StringBuilder();
|
||||||
private ArrayList<Extract> modules;
|
private ArrayList<Extract> modules;
|
||||||
private List<Extract> browserModules;
|
private List<Extract> browserModules;
|
||||||
final public static String MODULE_VERSION = Version.getVersion();
|
final private static String MODULE_VERSION = Version.getVersion();
|
||||||
|
|
||||||
//public constructor is required
|
//public constructor is required
|
||||||
//as multiple instances are created for processing multiple images simultenously
|
//as multiple instances are created for processing multiple images simultenously
|
||||||
|
@ -62,14 +62,14 @@ import org.xml.sax.SAXException;
|
|||||||
* To add search engines, edit SearchEngines.xml under RecentActivity
|
* To add search engines, edit SearchEngines.xml under RecentActivity
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class SearchEngineURLQueryAnalyzer extends Extract {
|
class SearchEngineURLQueryAnalyzer extends Extract {
|
||||||
|
|
||||||
private IngestServices services;
|
private IngestServices services;
|
||||||
|
|
||||||
public static final String MODULE_NAME = "Search Engine URL Query Analyzer";
|
private static final String MODULE_NAME = "Search Engine URL Query Analyzer";
|
||||||
public final static String MODULE_VERSION = "1.0";
|
private final static String MODULE_VERSION = "1.0";
|
||||||
|
|
||||||
public static final String XMLFILE = "SEUQAMappings.xml";
|
private static final String XMLFILE = "SEUQAMappings.xml";
|
||||||
private static final String XSDFILE = "SearchEngineSchema.xsd";
|
private static final String XSDFILE = "SearchEngineSchema.xsd";
|
||||||
|
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
|||||||
*
|
*
|
||||||
* @author Alex
|
* @author Alex
|
||||||
*/
|
*/
|
||||||
public class Util {
|
class Util {
|
||||||
|
|
||||||
private static Logger logger = Logger.getLogger(Util.class.getName());
|
private static Logger logger = Logger.getLogger(Util.class.getName());
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user