mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 21:00:22 +00:00
Merge branch 'master' of github.com:sleuthkit/autopsy
This commit is contained in:
commit
96d103a9da
39
BUILDING.txt
39
BUILDING.txt
@ -1,3 +1,5 @@
|
||||
Last Updated: June 12, 2012
|
||||
|
||||
This file outlines what it takes to build Autopsy from source.
|
||||
|
||||
Note that it currently only works out of the box on Windows. We
|
||||
@ -5,33 +7,49 @@ are working on getting the process working under non-WIndows systems.
|
||||
It generally works, but needs some custom mangling to find the
|
||||
correct C libraries.
|
||||
|
||||
|
||||
STEPS:
|
||||
1) Download and install 32-bit version of JDK (32-bit is currently
|
||||
1) Get Java Setup
|
||||
1a) Download and install 32-bit version of JDK (32-bit is currently
|
||||
needed even if you have a 64-bit system).
|
||||
|
||||
2) Ensure that JDK_HOME is set to the root JDK directory.
|
||||
1b) Ensure that JDK_HOME is set to the root JDK directory.
|
||||
|
||||
3) Download and install Netbeans IDE 7.0.1 (http://netbeans.org/)
|
||||
1c) Download and install Netbeans IDE 7.0.1 (http://netbeans.org/)
|
||||
|
||||
4) Download and build the release version of Libewf2 (20120304 or later). All you need is the dll file. Note that you will get a launching error if you use libewf 1.
|
||||
|
||||
2) Get Sleuth Kit Setup
|
||||
2a) Download and build the release version of Libewf2 (20120304 or later). All you need is the dll file. Note that you will get a launching error if you use libewf 1.
|
||||
- http://sourceforge.net/projects/libewf/
|
||||
|
||||
5) Set LIBEWF_HOME environment variable to root directory of LIBEWF
|
||||
2b) Set LIBEWF_HOME environment variable to root directory of LIBEWF
|
||||
|
||||
6) Download and build release version of Sleuth Kit (TSK) 4.0. You
|
||||
2c) Download and build release version of Sleuth Kit (TSK) 4.0. You
|
||||
need to build the tsk_jni project.
|
||||
- At the time of this writing, 4.0 is not released. You can get it from either
|
||||
-- GIT: git://github.com/sleuthkit/sleuthkit.git
|
||||
-- SVN: http://svn.github.com/sleuthkit/sleuthkit.git
|
||||
|
||||
7) Build the TSK JAR file by typing 'ant' in bindings/java from a
|
||||
2d) Build the TSK JAR file by typing 'ant' in bindings/java from a
|
||||
command line or by opening the project in NetBeans.
|
||||
|
||||
8) Set TSK_HOME environment variable to the root directory of TSK
|
||||
2e) Set TSK_HOME environment variable to the root directory of TSK
|
||||
|
||||
9) Start NetBean IDE and open the Autopsy project.
|
||||
|
||||
10) Choose to build the Autopsy project / module. It is the highest
|
||||
3) Get gstreamer Setup
|
||||
|
||||
If Autopsy installer is not used, add the following entries to Windows PATH environment variable
|
||||
(replace GSTREAMER_INSTALL_DIR with the location of the gstreamer root directory):
|
||||
GSTREAMER_INSTALL_DIR\bin\;
|
||||
GSTREAMER_INSTALL_DIR\lib\gstreamer-0.10\;
|
||||
If you don't have gstreamer already, you can find a zipped gstreamer distribution in
|
||||
AUTOPSYROOT/thirdparty/gstreamer
|
||||
|
||||
|
||||
4) Compile Autopsy
|
||||
4a) Start NetBean IDE and open the Autopsy project.
|
||||
|
||||
4b) Choose to build the Autopsy project / module. It is the highest
|
||||
level project that will then cause the other modules to be compiled.
|
||||
|
||||
|
||||
@ -55,5 +73,4 @@ rebuild both the dll and the JAR file.
|
||||
|
||||
---------------
|
||||
Brian Carrier
|
||||
4/6/2012
|
||||
carrier <at> sleuthkit <dot> org
|
||||
|
@ -71,8 +71,7 @@ public final class AddImageAction extends CallableSystemAction implements Presen
|
||||
static final String LOOKUPFILES_PROP = "lookupFiles";
|
||||
// boolean: whether or not to skip processing orphan files on FAT filesystems
|
||||
static final String NOFATORPHANS_PROP = "nofatorphans";
|
||||
// boolean: whether or not to skip processing of unallocated space
|
||||
static final String NOUNALLOC_PROP = "nounalloc";
|
||||
|
||||
|
||||
static final Logger logger = Logger.getLogger(AddImageAction.class.getName());
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
<Dimension value="[559, 328]"/>
|
||||
</Property>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[588, 308]"/>
|
||||
<Dimension value="[588, 328]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
@ -28,9 +28,13 @@
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="10" pref="10" max="10" attributes="0"/>
|
||||
<Component id="noFatOrphansCheckbox" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="imgTypeLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="10" pref="10" max="10" attributes="0"/>
|
||||
@ -43,15 +47,6 @@
|
||||
<Component id="multipleSelectLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="imgInfoLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="optionsLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="10" pref="10" max="10" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="noFatOrphansCheckbox" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="noProcessUnallocSpace" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group type="103" alignment="0" groupAlignment="1" max="-2" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="1">
|
||||
<Component id="timeZoneLabel" min="-2" max="-2" attributes="0"/>
|
||||
@ -66,8 +61,10 @@
|
||||
<Component id="imgPathBrowserButton" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<Component id="optionsLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<EmptySpace pref="39" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@ -92,22 +89,21 @@
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="multipleSelectLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="timeZoneLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="timeZoneComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||
<Component id="optionsLabel1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="noProcessUnallocSpace" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" pref="3" max="-2" attributes="0"/>
|
||||
<Component id="noFatOrphansCheckbox" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="18" max="32767" attributes="0"/>
|
||||
<Group type="103" groupAlignment="1" attributes="0">
|
||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="-2" pref="25" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@ -245,16 +241,6 @@
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JCheckBox" name="noProcessUnallocSpace">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="AddImageVisualPanel1.noProcessUnallocSpace.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="noProcessUnallocSpaceActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="optionsLabel1">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
|
@ -116,14 +116,6 @@ final class AddImageVisualPanel1 extends JPanel implements DocumentListener {
|
||||
return noFatOrphansCheckbox.isSelected();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true if no unalloc space processing is selected
|
||||
*/
|
||||
boolean getNoUnallocSpaceProcess() {
|
||||
return noProcessUnallocSpace.isSelected();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -221,11 +213,10 @@ final class AddImageVisualPanel1 extends JPanel implements DocumentListener {
|
||||
timeZoneLabel = new javax.swing.JLabel();
|
||||
jLabel2 = new javax.swing.JLabel();
|
||||
noFatOrphansCheckbox = new javax.swing.JCheckBox();
|
||||
noProcessUnallocSpace = new javax.swing.JCheckBox();
|
||||
optionsLabel1 = new javax.swing.JLabel();
|
||||
|
||||
setMinimumSize(new java.awt.Dimension(559, 328));
|
||||
setPreferredSize(new java.awt.Dimension(588, 308));
|
||||
setPreferredSize(new java.awt.Dimension(588, 328));
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(rawSingle, org.openide.util.NbBundle.getMessage(AddImageVisualPanel1.class, "AddImageVisualPanel1.rawSingle.text")); // NOI18N
|
||||
rawSingle.setRequestFocusEnabled(false);
|
||||
@ -281,13 +272,6 @@ final class AddImageVisualPanel1 extends JPanel implements DocumentListener {
|
||||
org.openide.awt.Mnemonics.setLocalizedText(noFatOrphansCheckbox, org.openide.util.NbBundle.getMessage(AddImageVisualPanel1.class, "AddImageVisualPanel1.noFatOrphansCheckbox.text")); // NOI18N
|
||||
noFatOrphansCheckbox.setToolTipText(org.openide.util.NbBundle.getMessage(AddImageVisualPanel1.class, "AddImageVisualPanel1.noFatOrphansCheckbox.toolTipText")); // NOI18N
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(noProcessUnallocSpace, org.openide.util.NbBundle.getMessage(AddImageVisualPanel1.class, "AddImageVisualPanel1.noProcessUnallocSpace.text")); // NOI18N
|
||||
noProcessUnallocSpace.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
noProcessUnallocSpaceActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(optionsLabel1, org.openide.util.NbBundle.getMessage(AddImageVisualPanel1.class, "AddImageVisualPanel1.optionsLabel1.text")); // NOI18N
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
@ -297,6 +281,9 @@ final class AddImageVisualPanel1 extends JPanel implements DocumentListener {
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(10, 10, 10)
|
||||
.addComponent(noFatOrphansCheckbox))
|
||||
.addComponent(imgTypeLabel)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(10, 10, 10)
|
||||
@ -307,13 +294,6 @@ final class AddImageVisualPanel1 extends JPanel implements DocumentListener {
|
||||
.addComponent(multipleSelectLabel)
|
||||
.addComponent(imgInfoLabel)
|
||||
.addComponent(jLabel1)
|
||||
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(optionsLabel1)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(10, 10, 10)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(noFatOrphansCheckbox)
|
||||
.addComponent(noProcessUnallocSpace)))
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
||||
.addComponent(timeZoneLabel)
|
||||
@ -324,8 +304,10 @@ final class AddImageVisualPanel1 extends JPanel implements DocumentListener {
|
||||
.addGap(18, 18, 18)
|
||||
.addComponent(imgPathTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 389, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(imgPathBrowserButton))))
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addComponent(imgPathBrowserButton)))
|
||||
.addComponent(optionsLabel1)
|
||||
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addContainerGap(39, Short.MAX_VALUE))
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
@ -347,21 +329,19 @@ final class AddImageVisualPanel1 extends JPanel implements DocumentListener {
|
||||
.addComponent(imgPathBrowserButton))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(multipleSelectLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(timeZoneLabel)
|
||||
.addComponent(timeZoneComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGap(18, 18, 18)
|
||||
.addComponent(optionsLabel1)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(noProcessUnallocSpace)
|
||||
.addGap(3, 3, 3)
|
||||
.addComponent(noFatOrphansCheckbox)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addComponent(jLabel1)
|
||||
.addContainerGap())
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(jLabel1)
|
||||
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addGap(25, 25, 25))
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
@ -473,10 +453,6 @@ final class AddImageVisualPanel1 extends JPanel implements DocumentListener {
|
||||
this.wizPanel.moveFocusToNext();
|
||||
}//GEN-LAST:event_imgPathBrowserButtonActionPerformed
|
||||
|
||||
private void noProcessUnallocSpaceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_noProcessUnallocSpaceActionPerformed
|
||||
// TODO add your handling code here:
|
||||
}//GEN-LAST:event_noProcessUnallocSpaceActionPerformed
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.ButtonGroup buttonGroup1;
|
||||
private javax.swing.JRadioButton encase;
|
||||
@ -489,7 +465,6 @@ private void noProcessUnallocSpaceActionPerformed(java.awt.event.ActionEvent evt
|
||||
private javax.swing.JLabel jLabel2;
|
||||
private javax.swing.JLabel multipleSelectLabel;
|
||||
private javax.swing.JCheckBox noFatOrphansCheckbox;
|
||||
private javax.swing.JCheckBox noProcessUnallocSpace;
|
||||
private javax.swing.JLabel optionsLabel1;
|
||||
private static javax.swing.JRadioButton rawSingle;
|
||||
private javax.swing.JRadioButton rawSplit;
|
||||
|
@ -214,7 +214,6 @@ class AddImageWizardPanel1 implements WizardDescriptor.Panel<WizardDescriptor>,
|
||||
settings.putProperty(AddImageAction.IMGPATHS_PROP, getComponent().getImagePaths());
|
||||
settings.putProperty(AddImageAction.TIMEZONE_PROP, getComponent().getSelectedTimezone()); // store the timezone
|
||||
settings.putProperty(AddImageAction.NOFATORPHANS_PROP, Boolean.valueOf(getComponent().getNoFatOrphans()));
|
||||
settings.putProperty(AddImageAction.NOUNALLOC_PROP, Boolean.valueOf(getComponent().getNoUnallocSpaceProcess()));
|
||||
//settings.putProperty(AddImageAction.LOOKUPFILES_PROP, getComponent().getLookupFilesCheckboxChecked());
|
||||
//settings.putProperty(AddImageAction.SOLR_PROP, getComponent().getIndexImageCheckboxChecked());
|
||||
|
||||
|
@ -55,8 +55,6 @@ class AddImageWizardPanel2 implements WizardDescriptor.Panel<WizardDescriptor> {
|
||||
private String timeZone;
|
||||
//whether to not process FAT filesystem orphans
|
||||
private boolean noFatOrphans;
|
||||
//whether to not process unalloc space
|
||||
private boolean noUnallocSpace;
|
||||
// task that will clean up the created database file if the wizard is cancelled before it finishes
|
||||
private AddImageAction.CleanupTask cleanupImage; // initialized to null in readSettings()
|
||||
// flag to control the availiablity of next action
|
||||
@ -195,7 +193,6 @@ class AddImageWizardPanel2 implements WizardDescriptor.Panel<WizardDescriptor> {
|
||||
imgPaths = (String[]) settings.getProperty(AddImageAction.IMGPATHS_PROP);
|
||||
timeZone = settings.getProperty(AddImageAction.TIMEZONE_PROP).toString();
|
||||
noFatOrphans = ((Boolean) settings.getProperty(AddImageAction.NOFATORPHANS_PROP)).booleanValue();
|
||||
noUnallocSpace = ((Boolean) settings.getProperty(AddImageAction.NOUNALLOC_PROP)).booleanValue();
|
||||
|
||||
component.changeProgressBarTextAndColor("", 0, Color.black);
|
||||
|
||||
@ -278,7 +275,7 @@ class AddImageWizardPanel2 implements WizardDescriptor.Panel<WizardDescriptor> {
|
||||
}
|
||||
|
||||
|
||||
process = currentCase.makeAddImageProcess(timeZone, !noUnallocSpace, noFatOrphans);
|
||||
process = currentCase.makeAddImageProcess(timeZone, true, noFatOrphans);
|
||||
cancelledWhileRunning.enable();
|
||||
try {
|
||||
process.run(imgPaths);
|
||||
|
@ -126,5 +126,4 @@ NewCaseVisualPanel2.examinerTextField.text=
|
||||
NewCaseVisualPanel2.optionalLabel.text=Optional: Set Case Number and Examiner
|
||||
AddImageVisualPanel1.noFatOrphansCheckbox.toolTipText=
|
||||
AddImageVisualPanel1.noFatOrphansCheckbox.text=Ignore orphan files in FAT file systems
|
||||
AddImageVisualPanel1.noProcessUnallocSpace.text=Ignore unallocated space
|
||||
AddImageVisualPanel1.optionsLabel1.text=Options to produce results faster (although some data will not be searched):
|
||||
|
@ -1,18 +1,17 @@
|
||||
OpenIDE-Module-Name=HashDatabase
|
||||
HashDatabaseManagementPanel.okayButton.text=Okay
|
||||
HashDbPanel.fileSelectButton.text=Select...\n
|
||||
HashDbSimplePanel.knownLabel.text=Known files database:
|
||||
HashDbSimplePanel.notableLabel.text=Notable files database:
|
||||
HashDbSimplePanel.knownLabel.text=NSRL Database:
|
||||
HashDbSimplePanel.notableLabel.text=Known Bad Database(s):
|
||||
HashDbSimplePanel.knownValLabel.text=-
|
||||
HashDbSimplePanel.notableValLabel.text=-
|
||||
HashDbMgmtPanel.addNotableButton.text=Add Notable Database
|
||||
HashDbMgmtPanel.addNotableButton.text=Add Known Bad Database
|
||||
HashDbMgmtPanel.removeNotableButton.text=Remove Selected
|
||||
HashDbSimplePanel.jLabel1.text=Notable Hash Databases:
|
||||
HashDbSimplePanel.jLabel2.text=NSRL Hash Database:
|
||||
HashDbMgmtPanel.nsrlNameLabel.text=No NSRL Hashset
|
||||
HashDbSimplePanel.jLabel1.text=Known Bad Database(s):
|
||||
HashDbSimplePanel.jLabel2.text=NSRL Database:
|
||||
HashDbMgmtPanel.nsrlNameLabel.text=Not Configured
|
||||
HashDbMgmtPanel.setNSRLButton.text=Change
|
||||
HashDbSimplePanel.nsrlNameLabel.text=No NSRL database set.
|
||||
HashDbMgmtPanel.jLabel1.text=Notable Hash Databases:
|
||||
HashDbMgmtPanel.jLabel1.text=Known Bad Database(s):
|
||||
HashDbMgmtPanel.jLabel2.text=NSRL Database:
|
||||
HashDbMgmtPanel.indexNSRLButton.text=Index
|
||||
HashDbMgmtPanel.removeNSRLButton.text=Remove
|
||||
|
@ -19,7 +19,7 @@
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="257" max="32767" attributes="0"/>
|
||||
<EmptySpace pref="405" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
@ -27,7 +27,7 @@
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="-2" pref="10" max="-2" attributes="0"/>
|
||||
<Component id="nsrlNameLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="63" max="32767" attributes="0"/>
|
||||
<EmptySpace pref="218" max="32767" attributes="0"/>
|
||||
<Component id="indexNSRLButton" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="setNSRLButton" min="-2" max="-2" attributes="0"/>
|
||||
@ -38,17 +38,17 @@
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="jScrollPane1" alignment="0" pref="389" max="32767" attributes="1"/>
|
||||
<Component id="jScrollPane1" alignment="0" pref="534" max="32767" attributes="1"/>
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="addNotableButton" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="113" max="32767" attributes="0"/>
|
||||
<EmptySpace pref="242" max="32767" attributes="0"/>
|
||||
<Component id="removeNotableButton" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="ingestRunningLabel" pref="369" max="32767" attributes="0"/>
|
||||
<Component id="ingestRunningLabel" pref="514" max="32767" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
|
@ -28,9 +28,7 @@ import java.awt.Component;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import javax.swing.AbstractAction;
|
||||
@ -95,9 +93,20 @@ public class HashDbMgmtPanel extends javax.swing.JPanel {
|
||||
fc.setMultiSelectionEnabled(false);
|
||||
|
||||
TableColumn column1 = null;
|
||||
final int width1 = jScrollPane1.getPreferredSize().width;
|
||||
for (int i = 0; i < notableHashSetTable.getColumnCount(); i++) {
|
||||
column1 = notableHashSetTable.getColumnModel().getColumn(i);
|
||||
if (i == 0) {
|
||||
column1.setPreferredWidth((int) (width1*.20));
|
||||
}
|
||||
if (i == 1) {
|
||||
column1.setPreferredWidth((int) (width1*.57));
|
||||
}
|
||||
if (i == 2) {
|
||||
column1.setPreferredWidth((int) (width1*.15));
|
||||
}
|
||||
if (i == 3) {
|
||||
column1.setPreferredWidth((int) (width1*.07));
|
||||
column1.setCellRenderer(new CheckBoxRenderer());
|
||||
}
|
||||
}
|
||||
@ -223,14 +232,14 @@ public class HashDbMgmtPanel extends javax.swing.JPanel {
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(jLabel1)
|
||||
.addContainerGap(257, Short.MAX_VALUE))
|
||||
.addContainerGap(405, Short.MAX_VALUE))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(10, 10, 10)
|
||||
.addComponent(nsrlNameLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 63, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 218, Short.MAX_VALUE)
|
||||
.addComponent(indexNSRLButton)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(setNSRLButton)
|
||||
@ -238,16 +247,16 @@ public class HashDbMgmtPanel extends javax.swing.JPanel {
|
||||
.addComponent(removeNSRLButton))
|
||||
.addComponent(jLabel2))
|
||||
.addContainerGap())
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 389, Short.MAX_VALUE)
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 534, Short.MAX_VALUE)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(addNotableButton)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 113, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 242, Short.MAX_VALUE)
|
||||
.addComponent(removeNotableButton)
|
||||
.addContainerGap())
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(ingestRunningLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 369, Short.MAX_VALUE)
|
||||
.addComponent(ingestRunningLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE)
|
||||
.addContainerGap())
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
@ -443,7 +452,7 @@ public class HashDbMgmtPanel extends javax.swing.JPanel {
|
||||
case 2:
|
||||
return "Status";
|
||||
default:
|
||||
return "Use For Ingest";
|
||||
return "Ingest";
|
||||
}
|
||||
}
|
||||
|
||||
@ -559,7 +568,7 @@ public class HashDbMgmtPanel extends javax.swing.JPanel {
|
||||
theButton.setEnabled(false);
|
||||
break;
|
||||
default:
|
||||
theButton.setText("No DB");
|
||||
theButton.setText("Index");
|
||||
theButton.setEnabled(false);
|
||||
}
|
||||
if (ingestRunning) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.1" encoding="UTF-8" ?>
|
||||
|
||||
<Form version="1.4" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||
<AuxValues>
|
||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||
@ -18,32 +18,28 @@
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="142" max="32767" attributes="0"/>
|
||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="51" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="jScrollPane1" alignment="1" pref="274" max="32767" attributes="1"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="159" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="-2" pref="53" max="-2" attributes="0"/>
|
||||
<Component id="nsrlNameLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="110" max="32767" attributes="0"/>
|
||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="jScrollPane1" alignment="1" pref="139" max="32767" attributes="1"/>
|
||||
<Component id="jScrollPane2" alignment="0" pref="139" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<Component id="nsrlNameLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jScrollPane2" min="-2" pref="20" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jScrollPane1" pref="106" max="32767" attributes="0"/>
|
||||
<Component id="jScrollPane1" pref="98" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@ -88,12 +84,30 @@
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="nsrlNameLabel">
|
||||
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/hashdatabase/Bundle.properties" key="HashDbSimplePanel.nsrlNameLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||
<Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
|
||||
<EmptyBorder/>
|
||||
</Border>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<AuxValues>
|
||||
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JTable" name="jTable1">
|
||||
<Properties>
|
||||
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||
<Color blue="f0" green="f0" red="f0" type="rgb"/>
|
||||
</Property>
|
||||
<Property name="showHorizontalLines" type="boolean" value="false"/>
|
||||
<Property name="showVerticalLines" type="boolean" value="false"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
</SubComponents>
|
||||
</Form>
|
||||
|
@ -24,8 +24,6 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.hashdatabase;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
@ -39,12 +37,14 @@ public class HashDbSimplePanel extends javax.swing.JPanel {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(HashDbSimplePanel.class.getName());
|
||||
private HashTableModel knownBadTableModel;
|
||||
private NSRLTableModel nsrlTableModel;
|
||||
private HashDb nsrl;
|
||||
private static boolean ingestRunning = false;
|
||||
|
||||
/** Creates new form HashDbSimplePanel */
|
||||
public HashDbSimplePanel() {
|
||||
knownBadTableModel = new HashTableModel();
|
||||
nsrlTableModel = new NSRLTableModel();
|
||||
initComponents();
|
||||
customizeComponents();
|
||||
}
|
||||
@ -55,18 +55,26 @@ public class HashDbSimplePanel extends javax.swing.JPanel {
|
||||
|
||||
private void customizeComponents() {
|
||||
notableHashTable.setModel(knownBadTableModel);
|
||||
jTable1.setModel(nsrlTableModel);
|
||||
|
||||
notableHashTable.setTableHeader(null);
|
||||
jTable1.setTableHeader(null);
|
||||
notableHashTable.setRowSelectionAllowed(false);
|
||||
jTable1.setRowSelectionAllowed(false);
|
||||
//customize column witdhs
|
||||
final int width1 = jScrollPane1.getPreferredSize().width;
|
||||
final int width2 = jScrollPane2.getPreferredSize().width;
|
||||
TableColumn column1 = null;
|
||||
TableColumn column2 = null;
|
||||
for (int i = 0; i < notableHashTable.getColumnCount(); i++) {
|
||||
column1 = notableHashTable.getColumnModel().getColumn(i);
|
||||
column2 = jTable1.getColumnModel().getColumn(i);
|
||||
if (i == 0) {
|
||||
column1.setPreferredWidth(((int) (width1 * 0.15)));
|
||||
column2.setPreferredWidth(((int) (width2 * 0.15)));
|
||||
} else {
|
||||
column1.setPreferredWidth(((int) (width1 * 0.84)));
|
||||
column2.setPreferredWidth(((int) (width2 * 0.84)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,7 +94,8 @@ public class HashDbSimplePanel extends javax.swing.JPanel {
|
||||
notableHashTable = new javax.swing.JTable();
|
||||
jLabel1 = new javax.swing.JLabel();
|
||||
jLabel2 = new javax.swing.JLabel();
|
||||
nsrlNameLabel = new javax.swing.JLabel();
|
||||
jScrollPane2 = new javax.swing.JScrollPane();
|
||||
jTable1 = new javax.swing.JTable();
|
||||
|
||||
jScrollPane1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
|
||||
|
||||
@ -99,7 +108,12 @@ public class HashDbSimplePanel extends javax.swing.JPanel {
|
||||
|
||||
jLabel2.setText(org.openide.util.NbBundle.getMessage(HashDbSimplePanel.class, "HashDbSimplePanel.jLabel2.text")); // NOI18N
|
||||
|
||||
nsrlNameLabel.setText(org.openide.util.NbBundle.getMessage(HashDbSimplePanel.class, "HashDbSimplePanel.nsrlNameLabel.text")); // NOI18N
|
||||
jScrollPane2.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
|
||||
|
||||
jTable1.setBackground(new java.awt.Color(240, 240, 240));
|
||||
jTable1.setShowHorizontalLines(false);
|
||||
jTable1.setShowVerticalLines(false);
|
||||
jScrollPane2.setViewportView(jTable1);
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
@ -107,28 +121,25 @@ public class HashDbSimplePanel extends javax.swing.JPanel {
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(jLabel1)
|
||||
.addContainerGap(142, Short.MAX_VALUE))
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 274, Short.MAX_VALUE)
|
||||
.addComponent(jLabel2)
|
||||
.addContainerGap(51, Short.MAX_VALUE))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(jLabel2)
|
||||
.addContainerGap(159, Short.MAX_VALUE))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(53, 53, 53)
|
||||
.addComponent(nsrlNameLabel)
|
||||
.addContainerGap(110, Short.MAX_VALUE))
|
||||
.addComponent(jLabel1)
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 139, Short.MAX_VALUE)
|
||||
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 139, Short.MAX_VALUE)
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(jLabel2)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(nsrlNameLabel)
|
||||
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jLabel1)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 106, Short.MAX_VALUE))
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE))
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
@ -136,19 +147,46 @@ public class HashDbSimplePanel extends javax.swing.JPanel {
|
||||
private javax.swing.JLabel jLabel1;
|
||||
private javax.swing.JLabel jLabel2;
|
||||
private javax.swing.JScrollPane jScrollPane1;
|
||||
private javax.swing.JScrollPane jScrollPane2;
|
||||
private javax.swing.JTable jTable1;
|
||||
private javax.swing.JTable notableHashTable;
|
||||
private javax.swing.JLabel nsrlNameLabel;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
private void reloadSets() {
|
||||
nsrl = HashDbXML.getCurrent().getNSRLSet();
|
||||
if(nsrl == null) {
|
||||
nsrlNameLabel.setText("No NSRL database set.");
|
||||
} else {
|
||||
nsrlNameLabel.setText(nsrl.getName());
|
||||
}
|
||||
nsrlTableModel.resync();
|
||||
knownBadTableModel.resync();
|
||||
}
|
||||
|
||||
private class NSRLTableModel extends AbstractTableModel {
|
||||
|
||||
private void resync() {
|
||||
fireTableDataChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
if (columnIndex == 0) {
|
||||
return "";
|
||||
} else {
|
||||
if(nsrl == null) {
|
||||
return "Not Configured";
|
||||
} else {
|
||||
return nsrl.getName();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class HashTableModel extends AbstractTableModel {
|
||||
|
||||
@ -175,7 +213,7 @@ public class HashDbSimplePanel extends javax.swing.JPanel {
|
||||
if (columnIndex == 0) {
|
||||
return "";
|
||||
} else {
|
||||
return "No notable databases set.";
|
||||
return "Not Configured";
|
||||
}
|
||||
} else {
|
||||
HashDb db = xmlHandle.getKnownBadSets().get(rowIndex);
|
||||
|
@ -28,7 +28,7 @@
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="servicesScrollPane" pref="173" max="32767" attributes="1"/>
|
||||
<Component id="servicesScrollPane" pref="169" max="32767" attributes="1"/>
|
||||
<Component id="timePanel" alignment="0" max="32767" attributes="1"/>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
@ -44,7 +44,7 @@
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="jPanel1" alignment="0" pref="235" max="32767" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="servicesScrollPane" pref="90" max="32767" attributes="0"/>
|
||||
<Component id="servicesScrollPane" pref="82" max="32767" attributes="0"/>
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<Component id="timePanel" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
@ -175,34 +175,30 @@
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="timeLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="68" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="timeRadioButton2" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton3" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="timeLabel" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="processUnallocCheckbox" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton1" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="timeRadioButton3" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton2" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton1" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="processUnallocCheckbox" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="10" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="processUnallocCheckbox" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="15" max="32767" attributes="0"/>
|
||||
<Component id="timeLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton1" min="-2" max="-2" attributes="0"/>
|
||||
@ -210,7 +206,9 @@
|
||||
<Component id="timeRadioButton2" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="timeRadioButton3" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||
<Component id="processUnallocCheckbox" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="8" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
|
@ -289,27 +289,25 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi
|
||||
timePanelLayout.setHorizontalGroup(
|
||||
timePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(timePanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(timeLabel)
|
||||
.addContainerGap(68, Short.MAX_VALUE))
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, timePanelLayout.createSequentialGroup()
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGroup(timePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(timePanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(timePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(timeRadioButton2)
|
||||
.addComponent(timeRadioButton3)))
|
||||
.addGroup(timePanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(timeLabel))
|
||||
.addComponent(processUnallocCheckbox)
|
||||
.addGroup(timePanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(timeRadioButton1)))
|
||||
.addComponent(timeRadioButton3)
|
||||
.addComponent(timeRadioButton2)
|
||||
.addComponent(timeRadioButton1))
|
||||
.addContainerGap())
|
||||
.addGroup(timePanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(processUnallocCheckbox)
|
||||
.addContainerGap(10, Short.MAX_VALUE))
|
||||
);
|
||||
timePanelLayout.setVerticalGroup(
|
||||
timePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, timePanelLayout.createSequentialGroup()
|
||||
.addGroup(timePanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(processUnallocCheckbox)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 15, Short.MAX_VALUE)
|
||||
.addComponent(timeLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(timeRadioButton1)
|
||||
@ -317,7 +315,9 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi
|
||||
.addComponent(timeRadioButton2)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(timeRadioButton3)
|
||||
.addContainerGap())
|
||||
.addGap(18, 18, 18)
|
||||
.addComponent(processUnallocCheckbox)
|
||||
.addContainerGap(8, Short.MAX_VALUE))
|
||||
);
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
@ -327,7 +327,7 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(servicesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 173, Short.MAX_VALUE)
|
||||
.addComponent(servicesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 169, Short.MAX_VALUE)
|
||||
.addComponent(timePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
@ -340,7 +340,7 @@ public class IngestDialogPanel extends javax.swing.JPanel implements IngestConfi
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 235, Short.MAX_VALUE)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(servicesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE)
|
||||
.addComponent(servicesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 82, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(timePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
|
||||
.addContainerGap())
|
||||
|
@ -314,6 +314,14 @@ public class IngestManager {
|
||||
|
||||
for (IngestImageThread imageWorker : toStop) {
|
||||
IngestServiceImage s = imageWorker.getService();
|
||||
|
||||
//stop the worker thread if thread is running
|
||||
boolean cancelled = imageWorker.cancel(true);
|
||||
if (!cancelled) {
|
||||
logger.log(Level.INFO, "Unable to cancel image ingest worker for service: " + imageWorker.getService().getName() + " img: " + imageWorker.getImage().getName());
|
||||
}
|
||||
|
||||
//stop notification to service to cleanup resources
|
||||
if (isServiceRunning(s)) {
|
||||
try {
|
||||
imageWorker.getService().stop();
|
||||
@ -321,10 +329,7 @@ public class IngestManager {
|
||||
logger.log(Level.WARNING, "Exception while stopping service: " + s.getName(), e);
|
||||
}
|
||||
}
|
||||
boolean cancelled = imageWorker.cancel(true);
|
||||
if (!cancelled) {
|
||||
logger.log(Level.WARNING, "Unable to cancel image ingest worker for service: " + imageWorker.getService().getName() + " img: " + imageWorker.getImage().getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
logger.log(Level.INFO, "stopped all");
|
||||
|
@ -5,7 +5,9 @@
|
||||
<Property name="displayName" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/ingest/Bundle.properties" key="IngestMessageTopComponent.displayName" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="name" type="java.lang.String" value="Ingest Inbox" noResource="true"/>
|
||||
<Property name="name" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<PlainString value="Ingest Inbox"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||
|
@ -145,6 +145,7 @@ public final class IngestMessageTopComponent extends TopComponent implements Ing
|
||||
for (int i = 0; i < tcs.length; ++i) {
|
||||
if (tcs[i] == this) //already floating
|
||||
{
|
||||
this.open();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,18 @@
|
||||
Known issues and limitations
|
||||
Known Issues
|
||||
|
||||
We plan to address the following issues in future releases.
|
||||
Last Reviewed: June 12, 2012
|
||||
|
||||
General:
|
||||
- Only a single instance of the application can be started at once.
|
||||
There is no check if another instance is already running. Running a second instance will cause issues.
|
||||
- Only a single case can be opened at a time.
|
||||
|
||||
Keyword search module:
|
||||
- Keyword search maximum size of files of known types to be indexed and searched is 100MB.
|
||||
There is no limit on size of unknown file types indexed using string extraction.
|
||||
- Currently we extract only English strings from files of unknown types.
|
||||
This lists the bugs and issues thare are known and could effect
|
||||
investigation results. There are other minor interface bugs that
|
||||
are not listed here.
|
||||
|
||||
Installation:
|
||||
- Installer version currently supports only Windows OS (XP or newer),
|
||||
- Currently only 32 bit version of Autopsy is provided with the installer (works on 64 bit Windows OS)
|
||||
Keyword Search module:
|
||||
- Slack space of files is not added to the index and therefore will
|
||||
not be searched.
|
||||
- Files larger than 100MB AND that are file types that are supported
|
||||
by Tika (word docs, PDF, HTML, JPEG, etc.) are not being added to
|
||||
the index.
|
||||
- For unknown file types, we extract UTF-8 (Ascii) and UTF-16 English
|
||||
strings. No non-English strings are extracted.
|
||||
- Comments and java script in HTML files are not being added to index.
|
||||
|
@ -693,7 +693,7 @@ private void useForIngestCheckboxActionPerformed(java.awt.event.ActionEvent evt)
|
||||
listSelectionModel.setSelectionInterval(index, index);
|
||||
KeywordSearchListsXML loader = KeywordSearchListsXML.getCurrent();
|
||||
|
||||
currentKeywordList = loader.getListsL().get(index);
|
||||
currentKeywordList = loader.getListsL(false).get(index);
|
||||
tableModel.resync();
|
||||
initButtons();
|
||||
} else {
|
||||
|
@ -127,14 +127,40 @@ public abstract class KeywordSearchListsAbstract {
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
List<KeywordSearchList> getListsL(boolean locked) {
|
||||
List<KeywordSearchList> ret = new ArrayList<KeywordSearchList>();
|
||||
for (KeywordSearchList list : theLists.values()) {
|
||||
if(list.isLocked().equals(locked)) {
|
||||
ret.add(list);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* get list of all loaded keyword list names
|
||||
* Get list names of all loaded keyword list names
|
||||
* @return List of keyword list names
|
||||
*/
|
||||
List<String> getListNames() {
|
||||
return new ArrayList<String>(theLists.keySet());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get list names of all locked or unlocked loaded keyword list names
|
||||
* @param locked true if look for locked lists, false otherwise
|
||||
* @return List of keyword list names
|
||||
*/
|
||||
List<String> getListNames(boolean locked) {
|
||||
ArrayList<String> lists = new ArrayList<String>();
|
||||
for (String listName : theLists.keySet()) {
|
||||
KeywordSearchList list = theLists.get(listName);
|
||||
if (locked == list.isLocked())
|
||||
lists.add(listName);
|
||||
}
|
||||
|
||||
return lists;
|
||||
}
|
||||
|
||||
/**
|
||||
* return first list that contains the keyword
|
||||
@ -175,6 +201,21 @@ public abstract class KeywordSearchListsAbstract {
|
||||
int getNumberLists() {
|
||||
return theLists.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* get number of unlocked or locked lists currently stored
|
||||
* @param locked true if look for locked lists, false otherwise
|
||||
* @return number of unlocked lists currently stored
|
||||
*/
|
||||
int getNumberLists(boolean locked) {
|
||||
int numLists = 0;
|
||||
for (String listName : theLists.keySet()) {
|
||||
KeywordSearchList list = theLists.get(listName);
|
||||
if (locked == list.isLocked())
|
||||
++ numLists;
|
||||
}
|
||||
return numLists;
|
||||
}
|
||||
|
||||
/**
|
||||
* get list by name or null
|
||||
|
@ -192,9 +192,18 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
|
||||
}
|
||||
boolean shouldAdd = false;
|
||||
if (writer.listExists(listName)) {
|
||||
boolean replace = KeywordSearchUtil.displayConfirmDialog("New Keyword List", "Keyword List <" + listName + "> already exists, do you want to replace it?", KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN);
|
||||
if (replace) {
|
||||
shouldAdd = true;
|
||||
if (writer.getList(listName).isLocked() ) {
|
||||
boolean replace = KeywordSearchUtil.displayConfirmDialog("New Keyword List", "Keyword List <" + listName
|
||||
+ "> already exists as a read-only list. Do you want to replace it for the duration of the program (the change will not be persistent).", KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN);
|
||||
if (replace) {
|
||||
shouldAdd = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
boolean replace = KeywordSearchUtil.displayConfirmDialog("New Keyword List", "Keyword List <" + listName + "> already exists, do you want to replace it?", KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN);
|
||||
if (replace) {
|
||||
shouldAdd = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
shouldAdd = true;
|
||||
@ -323,7 +332,7 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
|
||||
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
return listsHandle.getNumberLists();
|
||||
return listsHandle.getNumberLists(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -333,7 +342,7 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel {
|
||||
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
return listsHandle.getListNames().get(rowIndex);
|
||||
return listsHandle.getListNames(false).get(rowIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
6
NEWS.txt
6
NEWS.txt
@ -1,7 +1,7 @@
|
||||
3.0.0b3 (June X, 2012)
|
||||
New Features:
|
||||
3.0.0b3 (June 12, 2012)
|
||||
New Features (Funded by US Army Intelligence Center of Excellence (USAICoE)):
|
||||
- Ingest manager runs triage/ingest task after disk is added.
|
||||
- Keyword search (indexed via SOLR)
|
||||
- Basic keyword search (indexed via SOLR)
|
||||
- Recent activity extract (web artifacts, recent documents, devices, etc.)
|
||||
- Improved UI
|
||||
|
||||
|
92
README.txt
92
README.txt
@ -21,61 +21,71 @@ There is no need for manual installation of additional dependencies if the insta
|
||||
|
||||
Refer to the next section for additional info on third-party software requirements to run Autopsy without installer.
|
||||
|
||||
Refer to the KNOWN_ISSUES.txt file for known bugs that could cause investigation problems.
|
||||
|
||||
|
||||
SUPPORT
|
||||
|
||||
There is a built-in help system in Autopsy once you get it started. There is also a QuickStart Guide that came
|
||||
with the installer.
|
||||
|
||||
Send any bug reports or feature requests to the sleuthkit-users e-mail list.
|
||||
http://www.sleuthkit.org/support.php
|
||||
|
||||
|
||||
LICENSE
|
||||
|
||||
The Autopsy code is released under the Apache License, Version 2. See LICENSE-2.0.txt for details.
|
||||
|
||||
|
||||
EMBEDDED SOFTWARE
|
||||
|
||||
Autopsy (core) utilizes the following third-party software tools.
|
||||
The tools are bundled with the installer, unless specified otherwise.
|
||||
This section lists the software components and libraries that are used inside of
|
||||
Autopsy. These tools are bundled with the installer, unless specified otherwise.
|
||||
|
||||
* JRE (Java Runtime Environment) 1.6, 32 bit
|
||||
JRE (Java Runtime Environment) 1.6, 32 bit
|
||||
- Web page: http://www.oracle.com/technetwork/java/index.html
|
||||
- License: http://www.oracle.com/technetwork/java/javase/terms/license/index.html
|
||||
|
||||
Web page: http://www.oracle.com/technetwork/java/index.html
|
||||
Oracle license: http://www.oracle.com/technetwork/java/javase/terms/license/index.html
|
||||
|
||||
JRE needs to be manually installed on the system if Autopsy installer is not used.
|
||||
|
||||
* Netbeans 7.0.1 RCP platform and .jar files bundled with the platform
|
||||
|
||||
Web page: http://netbeans.org/features/platform/
|
||||
License:
|
||||
Netbeans 7.0.1 RCP platform and .jar files bundled with the platform
|
||||
- Web page: http://netbeans.org/features/platform/
|
||||
- License:
|
||||
http://services.netbeans.org/downloads/licence/nb-7.0-final-2011-04-20-license.txt
|
||||
|
||||
* Solr (including Lucene and TIKA)
|
||||
Web page: http://projects.apache.org/projects/solr.html
|
||||
Apache license: http://www.apache.org/licenses/LICENSE-2.0
|
||||
Sleuth Kit for analyzing disk images.
|
||||
- Web page: http://www.sleuthkit.org/sleuthkit/
|
||||
- License: http://sleuthkit.org/sleuthkit/licenses.php
|
||||
|
||||
* GStreamer
|
||||
Web page: http://gstreamer.freedesktop.org/
|
||||
License: http://www.gnu.org/licenses/lgpl.html
|
||||
Libewf for opening E01 files
|
||||
- Web page: http://sourceforge.net/projects/libewf/
|
||||
- License: http://www.gnu.org/licenses/lgpl.html
|
||||
|
||||
If Autopsy installer is not used, add the following entries to Windows PATH environment variable
|
||||
(replace GSTREAMER_INSTALL_DIR with the location of gstreamer install root directory):
|
||||
zlib for opening E01 files
|
||||
- Web page: http://zlib.net/
|
||||
- License: http://zlib.net/zlib_license.html
|
||||
|
||||
GSTREAMER_INSTALL_DIR\bin\;
|
||||
GSTREAMER_INSTALL_DIR\lib\gstreamer-0.10\;
|
||||
Solr (including Lucene and TIKA) for keyword search
|
||||
- Web page: http://projects.apache.org/projects/solr.html
|
||||
- License: http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
GStreamer for viewing video files
|
||||
- Web page: http://gstreamer.freedesktop.org/
|
||||
- License: http://www.gnu.org/licenses/lgpl.html
|
||||
|
||||
* GStreamer-java
|
||||
Web page: http://code.google.com/p/gstreamer-java/
|
||||
License: http://www.gnu.org/licenses/lgpl.html
|
||||
GStreamer-java for viewing video files
|
||||
- Web page: http://code.google.com/p/gstreamer-java/
|
||||
- License: http://www.gnu.org/licenses/lgpl.html
|
||||
|
||||
Regripper for pulling recently activity
|
||||
(Including custom plugins)
|
||||
- Web page: http://regripper.wordpress.com/
|
||||
- License: http://www.gnu.org/licenses/gpl.html
|
||||
|
||||
* Regripper
|
||||
(regripper and custom plugins found in autopsy/thirdparty)
|
||||
Web page: http://regripper.wordpress.com/
|
||||
License: http://www.gnu.org/licenses/gpl.html
|
||||
Pasco2 for pulling Internet Explorer activity
|
||||
- Web page: http://sourceforge.net/projects/pasco2/
|
||||
- License: http://www.gnu.org/licenses/gpl.html
|
||||
|
||||
* Pasco
|
||||
Web page: http://sourceforge.net/projects/odessa/files/Pasco/
|
||||
|
||||
* Advanced installer 9.0 (Freeware)
|
||||
Advanced installer 9.0 (Freeware)
|
||||
(not embedded in Autopsy, but used to generate Autopsy installer.)
|
||||
If you want to generate Autopsy installer, you will need to install the freeware version of Advanced Installer software)
|
||||
- Web page: http://www.advancedinstaller.com/
|
||||
|
||||
Web page: http://www.advancedinstaller.com/
|
||||
|
||||
|
||||
FEEDBACK
|
||||
|
||||
Send any bug reports or feature requests to the sleuthkit-users e-mail list.
|
||||
http://www.sleuthkit.org/support.php
|
@ -690,7 +690,7 @@ INPUT_ENCODING = UTF-8
|
||||
# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
|
||||
# *.f90 *.f *.for *.vhd *.vhdl
|
||||
|
||||
FILE_PATTERNS = *.java
|
||||
FILE_PATTERNS = *.java *.dox
|
||||
|
||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||
# should be searched for input files as well. Possible values are YES and NO.
|
||||
@ -1561,7 +1561,8 @@ SKIP_FUNCTION_MACROS = YES
|
||||
# NOT include the path). If a tag file is not located in the directory in which
|
||||
# doxygen is run, you must also specify the path to the tagfile here.
|
||||
|
||||
TAGFILES = qtools_docs/qtools.tag=../../qtools_docs/html
|
||||
#TAGFILES = $(TSK_HOME)/tskjni_doxygen.tag=http://www.sleuthkit.org/sleuthkit/docs/jni-docs
|
||||
# Adding that in, gives lots of errors and the class list goes away....
|
||||
|
||||
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
|
||||
# a tag file that is based on the input files it reads.
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user