@ -56,7 +56,7 @@ import org.sleuthkit.datamodel.SleuthkitJNI.CaseDbHandle.AddImageProcess;
|
|||||||
* open at a time. Use getCurrentCase() to retrieve the object for the current
|
* open at a time. Use getCurrentCase() to retrieve the object for the current
|
||||||
* case.
|
* case.
|
||||||
*/
|
*/
|
||||||
public class Case {
|
public class Case implements SleuthkitCase.ErrorObserver {
|
||||||
|
|
||||||
private static final String autopsyVer = Version.getVersion(); // current version of autopsy. Change it when the version is changed
|
private static final String autopsyVer = Version.getVersion(); // current version of autopsy. Change it when the version is changed
|
||||||
private static final String appName = Version.getName() + " " + autopsyVer;
|
private static final String appName = Version.getName() + " " + autopsyVer;
|
||||||
@ -130,6 +130,7 @@ public class Case {
|
|||||||
this.xmlcm = xmlcm;
|
this.xmlcm = xmlcm;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.services = new Services(db);
|
this.services = new Services(db);
|
||||||
|
db.addErrorObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -983,4 +984,9 @@ public class Case {
|
|||||||
CoreComponentControl.closeCoreWindows();
|
CoreComponentControl.closeCoreWindows();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveError(String context, String errorMessage) {
|
||||||
|
MessageNotifyUtil.Notify.error(context, errorMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,8 +30,8 @@ import org.sleuthkit.autopsy.coreutils.Logger;
|
|||||||
*
|
*
|
||||||
* @author jantonius
|
* @author jantonius
|
||||||
*/
|
*/
|
||||||
@ServiceProvider(service = CaseNewAction.class)
|
@ServiceProvider(service = CaseNewActionInterface.class)
|
||||||
public final class CaseNewAction implements ActionListener {
|
public final class CaseNewAction implements CaseNewActionInterface {
|
||||||
|
|
||||||
private NewCaseWizardAction wizard = SystemAction.get(NewCaseWizardAction.class);
|
private NewCaseWizardAction wizard = SystemAction.get(NewCaseWizardAction.class);
|
||||||
|
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Autopsy Forensic Browser
|
||||||
|
*
|
||||||
|
* Copyright 2013 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.casemodule;
|
||||||
|
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface CaseNewActionInterface extends ActionListener {
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.1" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
<Form version="1.5" 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>
|
<AuxValues>
|
||||||
@ -36,7 +36,7 @@
|
|||||||
<Component id="autopsyLogo" alignment="0" min="-2" pref="257" max="-2" attributes="0"/>
|
<Component id="autopsyLogo" alignment="0" min="-2" pref="257" max="-2" attributes="0"/>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Component id="editorPanel" min="-2" max="-2" attributes="1"/>
|
<Component id="editorPanel" min="-2" max="-2" attributes="1"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
<Component id="closeButton" min="-2" max="-2" attributes="0"/>
|
<Component id="closeButton" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
@ -65,16 +65,16 @@
|
|||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="createNewLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="createNewLabel" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<Component id="openCaseButton" min="-2" max="-2" attributes="1"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="openLabel" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Component id="openRecentButton" min="-2" pref="70" max="-2" attributes="1"/>
|
<Component id="openRecentButton" min="-2" pref="70" max="-2" attributes="1"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="openRecentLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="openRecentLabel" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Component id="openCaseButton" min="-2" max="-2" attributes="1"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="openLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace pref="60" max="32767" attributes="0"/>
|
<EmptySpace pref="60" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
@ -83,37 +83,22 @@
|
|||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<EmptySpace min="-2" pref="32" max="-2" attributes="0"/>
|
||||||
<Group type="102" attributes="0">
|
<Group type="103" groupAlignment="2" attributes="0">
|
||||||
<EmptySpace min="-2" pref="32" max="-2" attributes="0"/>
|
<Component id="createNewLabel" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="newCaseButton" min="-2" pref="56" max="-2" attributes="0"/>
|
<Component id="newCaseButton" alignment="2" min="-2" pref="56" max="-2" attributes="0"/>
|
||||||
</Group>
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<EmptySpace min="-2" pref="50" max="-2" attributes="0"/>
|
|
||||||
<Component id="createNewLabel" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="102" attributes="0">
|
<Group type="103" groupAlignment="2" attributes="0">
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
<Component id="openRecentLabel" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="openCaseButton" min="-2" pref="58" max="-2" attributes="0"/>
|
<Component id="openRecentButton" alignment="2" min="-2" pref="70" max="-2" attributes="0"/>
|
||||||
</Group>
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<EmptySpace min="-2" pref="31" max="-2" attributes="0"/>
|
|
||||||
<Component id="openLabel" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
<Group type="102" attributes="0">
|
<Group type="103" groupAlignment="2" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<Component id="openLabel" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="openRecentButton" min="-2" max="-2" attributes="0"/>
|
<Component id="openCaseButton" alignment="2" min="-2" pref="58" max="-2" attributes="0"/>
|
||||||
</Group>
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<EmptySpace min="-2" pref="32" max="-2" attributes="0"/>
|
|
||||||
<Component id="openRecentLabel" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
<EmptySpace pref="25" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
@ -140,30 +125,6 @@
|
|||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="newCaseButtonActionPerformed"/>
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="newCaseButtonActionPerformed"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JButton" name="openCaseButton">
|
|
||||||
<Properties>
|
|
||||||
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
|
||||||
<Image iconType="3" name="/org/sleuthkit/autopsy/casemodule/btn_icon_open_existing.png"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CueBannerPanel.openCaseButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
|
|
||||||
<Connection code="null" type="code"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="borderPainted" type="boolean" value="false"/>
|
|
||||||
<Property name="contentAreaFilled" type="boolean" value="false"/>
|
|
||||||
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
|
|
||||||
<Insets value="[1, 1, 1, 1]"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
|
||||||
<Dimension value="[70, 70]"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openCaseButtonActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JButton" name="openRecentButton">
|
<Component class="javax.swing.JButton" name="openRecentButton">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||||
@ -195,16 +156,6 @@
|
|||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JLabel" name="openLabel">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Tahoma" size="13" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CueBannerPanel.openLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="openRecentLabel">
|
<Component class="javax.swing.JLabel" name="openRecentLabel">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
@ -215,6 +166,40 @@
|
|||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="openCaseButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||||
|
<Image iconType="3" name="/org/sleuthkit/autopsy/casemodule/btn_icon_open_existing.png"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CueBannerPanel.openCaseButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
|
||||||
|
<Connection code="null" type="code"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="borderPainted" type="boolean" value="false"/>
|
||||||
|
<Property name="contentAreaFilled" type="boolean" value="false"/>
|
||||||
|
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
|
||||||
|
<Insets value="[1, 1, 1, 1]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[70, 70]"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openCaseButtonActionPerformed"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="openLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="13" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CueBannerPanel.openLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Component class="javax.swing.JLabel" name="autopsyLogo">
|
<Component class="javax.swing.JLabel" name="autopsyLogo">
|
||||||
|
@ -29,6 +29,7 @@ import javax.swing.JFrame;
|
|||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import org.openide.util.Lookup;
|
import org.openide.util.Lookup;
|
||||||
import org.sleuthkit.autopsy.coreutils.Version;
|
import org.sleuthkit.autopsy.coreutils.Version;
|
||||||
|
import org.netbeans.api.options.OptionsDisplayer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -61,11 +62,11 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
|||||||
closeButton = new javax.swing.JButton();
|
closeButton = new javax.swing.JButton();
|
||||||
editorPanel = new javax.swing.JPanel();
|
editorPanel = new javax.swing.JPanel();
|
||||||
newCaseButton = new javax.swing.JButton();
|
newCaseButton = new javax.swing.JButton();
|
||||||
openCaseButton = new javax.swing.JButton();
|
|
||||||
openRecentButton = new javax.swing.JButton();
|
openRecentButton = new javax.swing.JButton();
|
||||||
createNewLabel = new javax.swing.JLabel();
|
createNewLabel = new javax.swing.JLabel();
|
||||||
openLabel = new javax.swing.JLabel();
|
|
||||||
openRecentLabel = new javax.swing.JLabel();
|
openRecentLabel = new javax.swing.JLabel();
|
||||||
|
openCaseButton = new javax.swing.JButton();
|
||||||
|
openLabel = new javax.swing.JLabel();
|
||||||
autopsyLogo = new javax.swing.JLabel();
|
autopsyLogo = new javax.swing.JLabel();
|
||||||
this.autopsyLogo.setText("");
|
this.autopsyLogo.setText("");
|
||||||
|
|
||||||
@ -83,6 +84,24 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
openRecentButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/btn_icon_open_recent.png"))); // NOI18N
|
||||||
|
openRecentButton.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openRecentButton.text")); // NOI18N
|
||||||
|
openRecentButton.setBorder(null);
|
||||||
|
openRecentButton.setBorderPainted(false);
|
||||||
|
openRecentButton.setContentAreaFilled(false);
|
||||||
|
openRecentButton.setPreferredSize(new java.awt.Dimension(70, 70));
|
||||||
|
openRecentButton.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
openRecentButtonActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
createNewLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N
|
||||||
|
createNewLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.createNewLabel.text")); // NOI18N
|
||||||
|
|
||||||
|
openRecentLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N
|
||||||
|
openRecentLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openRecentLabel.text")); // NOI18N
|
||||||
|
|
||||||
openCaseButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/btn_icon_open_existing.png"))); // NOI18N
|
openCaseButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/btn_icon_open_existing.png"))); // NOI18N
|
||||||
openCaseButton.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openCaseButton.text")); // NOI18N
|
openCaseButton.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openCaseButton.text")); // NOI18N
|
||||||
openCaseButton.setBorder(null);
|
openCaseButton.setBorder(null);
|
||||||
@ -96,27 +115,9 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
openRecentButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/btn_icon_open_recent.png"))); // NOI18N
|
openLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N
|
||||||
openRecentButton.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openRecentButton.text")); // NOI18N
|
|
||||||
openRecentButton.setBorder(null);
|
|
||||||
openRecentButton.setBorderPainted(false);
|
|
||||||
openRecentButton.setContentAreaFilled(false);
|
|
||||||
openRecentButton.setPreferredSize(new java.awt.Dimension(70, 70));
|
|
||||||
openRecentButton.addActionListener(new java.awt.event.ActionListener() {
|
|
||||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
||||||
openRecentButtonActionPerformed(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
createNewLabel.setFont(new java.awt.Font("Tahoma", 0, 13));
|
|
||||||
createNewLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.createNewLabel.text")); // NOI18N
|
|
||||||
|
|
||||||
openLabel.setFont(new java.awt.Font("Tahoma", 0, 13));
|
|
||||||
openLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openLabel.text")); // NOI18N
|
openLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openLabel.text")); // NOI18N
|
||||||
|
|
||||||
openRecentLabel.setFont(new java.awt.Font("Tahoma", 0, 13));
|
|
||||||
openRecentLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openRecentLabel.text")); // NOI18N
|
|
||||||
|
|
||||||
javax.swing.GroupLayout editorPanelLayout = new javax.swing.GroupLayout(editorPanel);
|
javax.swing.GroupLayout editorPanelLayout = new javax.swing.GroupLayout(editorPanel);
|
||||||
editorPanel.setLayout(editorPanelLayout);
|
editorPanel.setLayout(editorPanelLayout);
|
||||||
editorPanelLayout.setHorizontalGroup(
|
editorPanelLayout.setHorizontalGroup(
|
||||||
@ -127,41 +128,32 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
|||||||
.addComponent(newCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(newCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(createNewLabel))
|
.addComponent(createNewLabel))
|
||||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
|
||||||
.addComponent(openCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addComponent(openLabel))
|
|
||||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||||
.addComponent(openRecentButton, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(openRecentButton, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(openRecentLabel)))
|
.addComponent(openRecentLabel))
|
||||||
|
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||||
|
.addComponent(openCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(openLabel)))
|
||||||
.addContainerGap(60, Short.MAX_VALUE))
|
.addContainerGap(60, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
editorPanelLayout.setVerticalGroup(
|
editorPanelLayout.setVerticalGroup(
|
||||||
editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
.addGroup(editorPanelLayout.createSequentialGroup()
|
||||||
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGap(32, 32, 32)
|
||||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
|
||||||
.addGap(32, 32, 32)
|
.addComponent(createNewLabel)
|
||||||
.addComponent(newCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(newCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGap(50, 50, 50)
|
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
|
||||||
.addComponent(createNewLabel)))
|
.addComponent(openRecentLabel)
|
||||||
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addComponent(openRecentButton, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
.addGap(0, 0, Short.MAX_VALUE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
|
||||||
.addComponent(openCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(openLabel)
|
||||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
.addComponent(openCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addGap(31, 31, 31)
|
.addContainerGap(25, Short.MAX_VALUE))
|
||||||
.addComponent(openLabel)))
|
|
||||||
.addGroup(editorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addComponent(openRecentButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
||||||
.addGroup(editorPanelLayout.createSequentialGroup()
|
|
||||||
.addGap(32, 32, 32)
|
|
||||||
.addComponent(openRecentLabel)))
|
|
||||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
autopsyLogo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/welcome_logo.png"))); // NOI18N
|
autopsyLogo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/welcome_logo.png"))); // NOI18N
|
||||||
@ -188,14 +180,14 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
|||||||
.addComponent(autopsyLogo, javax.swing.GroupLayout.PREFERRED_SIZE, 257, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(autopsyLogo, javax.swing.GroupLayout.PREFERRED_SIZE, 257, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(editorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(editorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addGap(18, 18, 18)
|
||||||
.addComponent(closeButton)))
|
.addComponent(closeButton)))
|
||||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
private void newCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newCaseButtonActionPerformed
|
private void newCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newCaseButtonActionPerformed
|
||||||
Lookup.getDefault().lookup(CaseNewAction.class).actionPerformed(evt);
|
Lookup.getDefault().lookup(CaseNewActionInterface.class).actionPerformed(evt);
|
||||||
}//GEN-LAST:event_newCaseButtonActionPerformed
|
}//GEN-LAST:event_newCaseButtonActionPerformed
|
||||||
|
|
||||||
private void openCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openCaseButtonActionPerformed
|
private void openCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openCaseButtonActionPerformed
|
||||||
@ -255,6 +247,15 @@ public class CueBannerPanel extends javax.swing.JPanel {
|
|||||||
closeButton.addActionListener(e);
|
closeButton.addActionListener(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the Close button label (default is "Close").
|
||||||
|
*
|
||||||
|
* @param text The new label for the button.
|
||||||
|
*/
|
||||||
|
public void setCloseButtonText(String text) {
|
||||||
|
closeButton.setText(text);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the open recent cases window.
|
* Close the open recent cases window.
|
||||||
*/
|
*/
|
||||||
|
@ -81,7 +81,13 @@ public class ArtifactStringContent implements StringContent {
|
|||||||
// value column
|
// value column
|
||||||
buffer.append("<td>");
|
buffer.append("<td>");
|
||||||
if (attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()
|
if (attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()
|
||||||
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()) {
|
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()
|
||||||
|
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID()
|
||||||
|
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_MODIFIED.getTypeID()
|
||||||
|
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_RCVD.getTypeID()
|
||||||
|
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_SENT.getTypeID()
|
||||||
|
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()
|
||||||
|
|| attr.getAttributeTypeID() == ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID() ) {
|
||||||
long epoch = attr.getValueLong();
|
long epoch = attr.getValueLong();
|
||||||
String time = "0000-00-00 00:00:00";
|
String time = "0000-00-00 00:00:00";
|
||||||
if (epoch != 0) {
|
if (epoch != 0) {
|
||||||
|
@ -104,6 +104,14 @@ public class ArtifactTypeNode extends DisplayableItemNode {
|
|||||||
return "searchquery.png";
|
return "searchquery.png";
|
||||||
case TSK_METADATA_EXIF:
|
case TSK_METADATA_EXIF:
|
||||||
return "camera-icon-16.png";
|
return "camera-icon-16.png";
|
||||||
|
case TSK_CONTACT:
|
||||||
|
return "contact.png";
|
||||||
|
case TSK_MESSAGE:
|
||||||
|
return "message.png";
|
||||||
|
case TSK_CALLLOG:
|
||||||
|
return "calllog.png";
|
||||||
|
case TSK_CALENDAR_ENTRY:
|
||||||
|
return "calendar.png";
|
||||||
}
|
}
|
||||||
return "artifact-icon.png";
|
return "artifact-icon.png";
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,13 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
|
|||||||
break;
|
break;
|
||||||
case LONG:
|
case LONG:
|
||||||
if (attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()
|
if (attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()
|
||||||
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()) {
|
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()
|
||||||
|
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID()
|
||||||
|
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_MODIFIED.getTypeID()
|
||||||
|
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_RCVD.getTypeID()
|
||||||
|
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_SENT.getTypeID()
|
||||||
|
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()
|
||||||
|
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID() ) {
|
||||||
map.put(attribute.getAttributeTypeDisplayName(), ContentUtils.getStringTime(attribute.getValueLong(), associated));
|
map.put(attribute.getAttributeTypeDisplayName(), ContentUtils.getStringTime(attribute.getValueLong(), associated));
|
||||||
} else {
|
} else {
|
||||||
map.put(attribute.getAttributeTypeDisplayName(), attribute.getValueLong());
|
map.put(attribute.getAttributeTypeDisplayName(), attribute.getValueLong());
|
||||||
@ -285,6 +291,14 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
|
|||||||
return "green-tag-icon-16.png";
|
return "green-tag-icon-16.png";
|
||||||
case TSK_METADATA_EXIF:
|
case TSK_METADATA_EXIF:
|
||||||
return "camera-icon-16.png";
|
return "camera-icon-16.png";
|
||||||
|
case TSK_CONTACT:
|
||||||
|
return "contact.png";
|
||||||
|
case TSK_MESSAGE:
|
||||||
|
return "message.png";
|
||||||
|
case TSK_CALLLOG:
|
||||||
|
return "calllog.png";
|
||||||
|
case TSK_CALENDAR_ENTRY:
|
||||||
|
return "calendar.png";
|
||||||
}
|
}
|
||||||
return "artifact-icon.png";
|
return "artifact-icon.png";
|
||||||
}
|
}
|
||||||
|
BIN
Core/src/org/sleuthkit/autopsy/images/calendar.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
Core/src/org/sleuthkit/autopsy/images/calllog.png
Normal file
After Width: | Height: | Size: 691 B |
BIN
Core/src/org/sleuthkit/autopsy/images/contact.png
Normal file
After Width: | Height: | Size: 738 B |
BIN
Core/src/org/sleuthkit/autopsy/images/message.png
Normal file
After Width: | Height: | Size: 829 B |
@ -27,15 +27,18 @@ import java.util.ArrayList;
|
|||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.logging.Level;
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.JCheckBox;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JList;
|
import javax.swing.JList;
|
||||||
import javax.swing.ListCellRenderer;
|
import javax.swing.ListCellRenderer;
|
||||||
import javax.swing.ListModel;
|
import javax.swing.ListModel;
|
||||||
import javax.swing.event.ListDataListener;
|
import javax.swing.event.ListDataListener;
|
||||||
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.datamodel.BlackboardArtifact;
|
import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||||
import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
|
import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
|
||||||
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
|
|
||||||
public class ArtifactSelectionDialog extends javax.swing.JDialog {
|
public class ArtifactSelectionDialog extends javax.swing.JDialog {
|
||||||
private static final Logger logger = Logger.getLogger(ArtifactSelectionDialog.class.getName());
|
private static final Logger logger = Logger.getLogger(ArtifactSelectionDialog.class.getName());
|
||||||
@ -60,10 +63,21 @@ public class ArtifactSelectionDialog extends javax.swing.JDialog {
|
|||||||
* Populate the list of artifacts with all important artifacts.
|
* Populate the list of artifacts with all important artifacts.
|
||||||
*/
|
*/
|
||||||
private void populateList() {
|
private void populateList() {
|
||||||
artifacts = getImportantArtifactTypes();
|
try {
|
||||||
artifactStates = new EnumMap<BlackboardArtifact.ARTIFACT_TYPE, Boolean>(BlackboardArtifact.ARTIFACT_TYPE.class);
|
ArrayList<BlackboardArtifact.ARTIFACT_TYPE> doNotReport = new ArrayList();
|
||||||
for (BlackboardArtifact.ARTIFACT_TYPE type : artifacts) {
|
doNotReport.add(BlackboardArtifact.ARTIFACT_TYPE.TSK_GEN_INFO);
|
||||||
artifactStates.put(type, Boolean.TRUE);
|
|
||||||
|
artifacts = Case.getCurrentCase().getSleuthkitCase().getBlackboardArtifactTypesInUse();
|
||||||
|
|
||||||
|
artifacts.removeAll(doNotReport);
|
||||||
|
|
||||||
|
artifactStates = new EnumMap<BlackboardArtifact.ARTIFACT_TYPE, Boolean>(BlackboardArtifact.ARTIFACT_TYPE.class);
|
||||||
|
for (BlackboardArtifact.ARTIFACT_TYPE type : artifacts) {
|
||||||
|
artifactStates.put(type, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
} catch (TskCoreException ex) {
|
||||||
|
Logger.getLogger(ArtifactSelectionDialog.class.getName()).log(Level.SEVERE, "Error getting list of artifacts in use: " + ex.getLocalizedMessage());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -636,46 +636,60 @@ public class ReportGenerator {
|
|||||||
private List<String> getArtifactTableColumnHeaders(int artifactTypeId) {
|
private List<String> getArtifactTableColumnHeaders(int artifactTypeId) {
|
||||||
ArrayList<String> columnHeaders;
|
ArrayList<String> columnHeaders;
|
||||||
|
|
||||||
switch (artifactTypeId) {
|
BlackboardArtifact.ARTIFACT_TYPE type = BlackboardArtifact.ARTIFACT_TYPE.fromID(artifactTypeId);
|
||||||
case 2: // TSK_WEB_BOOKMARK
|
|
||||||
|
switch (type) {
|
||||||
|
case TSK_WEB_BOOKMARK:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"URL", "Title", "Date Accessed", "Program", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"URL", "Title", "Date Accessed", "Program", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 3: // TSK_WEB_COOKIE
|
case TSK_WEB_COOKIE:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"URL", "Date/Time", "Name", "Value", "Program", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"URL", "Date/Time", "Name", "Value", "Program", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 4: // TSK_WEB_HISTORY
|
case TSK_WEB_HISTORY:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"URL", "Date Accessed", "Referrer", "Name", "Program", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"URL", "Date Accessed", "Referrer", "Name", "Program", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 5: // TSK_WEB_DOWNLOAD
|
case TSK_WEB_DOWNLOAD:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Destination", "Source URL", "Date Accessed", "Program", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Destination", "Source URL", "Date Accessed", "Program", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 6: // TSK_RECENT_OBJECT
|
case TSK_RECENT_OBJECT:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Path", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Path", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 8: // TSK_INSTALLED_PROG
|
case TSK_INSTALLED_PROG:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Program Name", "Install Date/Time", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Program Name", "Install Date/Time", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 9: // TSK_KEYWORD_HIT
|
case TSK_KEYWORD_HIT:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Preview", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Preview", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 10: // TSK_HASHSET_HIT
|
case TSK_HASHSET_HIT:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"File", "Size"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"File", "Size"}));
|
||||||
break;
|
break;
|
||||||
case 11: // TSK_DEVICE_ATTACHED
|
case TSK_DEVICE_ATTACHED:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Name", "Device ID", "Date/Time", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Name", "Device ID", "Date/Time", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 15: // TSK_WEB_SEARCH_QUERY
|
case TSK_WEB_SEARCH_QUERY:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Text", "Domain", "Date Accessed", "Program Name", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Text", "Domain", "Date Accessed", "Program Name", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 16: // TSK_METADATA_EXIF
|
case TSK_METADATA_EXIF:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Date Taken", "Device Manufacturer", "Device Model", "Latitude", "Longitude", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Date Taken", "Device Manufacturer", "Device Model", "Latitude", "Longitude", "Source File"}));
|
||||||
break;
|
break;
|
||||||
case 17: // TSK_TAG_FILE
|
case TSK_TAG_FILE:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"File", "Tag", "Comment"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"File", "Tag", "Comment"}));
|
||||||
break;
|
break;
|
||||||
case 18: // TSK_TAG_ARTIFACT
|
case TSK_TAG_ARTIFACT:
|
||||||
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Result Type", "Tag", "Comment", "Source File"}));
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Result Type", "Tag", "Comment", "Source File"}));
|
||||||
break;
|
break;
|
||||||
|
case TSK_CONTACT:
|
||||||
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Person Name", "Phone Number", "Phone Number (Home)", "Phone Number (Office)", "Phone Number (Mobile)", "Email", "Source File" }));
|
||||||
|
break;
|
||||||
|
case TSK_MESSAGE:
|
||||||
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Message Type", "Direction", "Date/Time", "From Phone Number", "From Email", "To Phone Number", "To Email", "Subject", "Text", "Source File" }));
|
||||||
|
break;
|
||||||
|
case TSK_CALLLOG:
|
||||||
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Person Name", "Phone Number", "Date/Time", "Direction", "Source File" }));
|
||||||
|
break;
|
||||||
|
case TSK_CALENDAR_ENTRY:
|
||||||
|
columnHeaders = new ArrayList<String>(Arrays.asList(new String[] {"Calendar Entry Type", "Description", "Start Date/Time", "End Date/Time", "Location", "Source File" }));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -705,7 +719,15 @@ public class ReportGenerator {
|
|||||||
for (BlackboardAttribute tempatt : attList) {
|
for (BlackboardAttribute tempatt : attList) {
|
||||||
String value = "";
|
String value = "";
|
||||||
Integer type = tempatt.getAttributeTypeID();
|
Integer type = tempatt.getAttributeTypeID();
|
||||||
if (type.equals(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()) || type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID())) {
|
if (type.equals(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()) ||
|
||||||
|
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()) ||
|
||||||
|
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_CREATED.getTypeID()) ||
|
||||||
|
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_MODIFIED.getTypeID()) ||
|
||||||
|
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_SENT.getTypeID()) ||
|
||||||
|
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_RCVD.getTypeID()) ||
|
||||||
|
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()) ||
|
||||||
|
type.equals(ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID())
|
||||||
|
) {
|
||||||
if (module.length > 0) {
|
if (module.length > 0) {
|
||||||
value = module[0].dateToString(tempatt.getValueLong());
|
value = module[0].dateToString(tempatt.getValueLong());
|
||||||
} else {
|
} else {
|
||||||
@ -753,8 +775,11 @@ public class ReportGenerator {
|
|||||||
*/
|
*/
|
||||||
private List<String> getArtifactRow(Entry<BlackboardArtifact, List<BlackboardAttribute>> entry, TableReportModule module) throws TskCoreException {
|
private List<String> getArtifactRow(Entry<BlackboardArtifact, List<BlackboardAttribute>> entry, TableReportModule module) throws TskCoreException {
|
||||||
Map<Integer, String> attributes = getMappedAttributes(entry.getValue(), module);
|
Map<Integer, String> attributes = getMappedAttributes(entry.getValue(), module);
|
||||||
switch (entry.getKey().getArtifactTypeID()) {
|
|
||||||
case 2: // TSK_WEB_BOOKMARK
|
BlackboardArtifact.ARTIFACT_TYPE type = BlackboardArtifact.ARTIFACT_TYPE.fromID(entry.getKey().getArtifactTypeID());
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case TSK_WEB_BOOKMARK:
|
||||||
List<String> bookmark = new ArrayList<>();
|
List<String> bookmark = new ArrayList<>();
|
||||||
bookmark.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
bookmark.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
||||||
bookmark.add(attributes.get(ATTRIBUTE_TYPE.TSK_TITLE.getTypeID()));
|
bookmark.add(attributes.get(ATTRIBUTE_TYPE.TSK_TITLE.getTypeID()));
|
||||||
@ -762,7 +787,7 @@ public class ReportGenerator {
|
|||||||
bookmark.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
bookmark.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||||
bookmark.add(getFileUniquePath(entry.getKey().getObjectID()));
|
bookmark.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
return bookmark;
|
return bookmark;
|
||||||
case 3: // TSK_WEB_COOKIE
|
case TSK_WEB_COOKIE:
|
||||||
List<String> cookie = new ArrayList<>();
|
List<String> cookie = new ArrayList<>();
|
||||||
cookie.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
cookie.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
||||||
cookie.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
cookie.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||||
@ -771,7 +796,7 @@ public class ReportGenerator {
|
|||||||
cookie.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
cookie.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||||
cookie.add(getFileUniquePath(entry.getKey().getObjectID()));
|
cookie.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
return cookie;
|
return cookie;
|
||||||
case 4: // TSK_WEB_HISTORY
|
case TSK_WEB_HISTORY:
|
||||||
List<String> history = new ArrayList<>();
|
List<String> history = new ArrayList<>();
|
||||||
history.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
history.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
||||||
history.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()));
|
history.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME_ACCESSED.getTypeID()));
|
||||||
@ -780,7 +805,7 @@ public class ReportGenerator {
|
|||||||
history.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
history.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||||
history.add(getFileUniquePath(entry.getKey().getObjectID()));
|
history.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
return history;
|
return history;
|
||||||
case 5: // TSK_WEB_DOWNLOAD
|
case TSK_WEB_DOWNLOAD:
|
||||||
List<String> download = new ArrayList<>();
|
List<String> download = new ArrayList<>();
|
||||||
download.add(attributes.get(ATTRIBUTE_TYPE.TSK_PATH.getTypeID()));
|
download.add(attributes.get(ATTRIBUTE_TYPE.TSK_PATH.getTypeID()));
|
||||||
download.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
download.add(attributes.get(ATTRIBUTE_TYPE.TSK_URL.getTypeID()));
|
||||||
@ -788,25 +813,25 @@ public class ReportGenerator {
|
|||||||
download.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
download.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||||
download.add(getFileUniquePath(entry.getKey().getObjectID()));
|
download.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
return download;
|
return download;
|
||||||
case 6: // TSK_RECENT_OBJECT
|
case TSK_RECENT_OBJECT:
|
||||||
List<String> recent = new ArrayList<>();
|
List<String> recent = new ArrayList<>();
|
||||||
recent.add(attributes.get(ATTRIBUTE_TYPE.TSK_PATH.getTypeID()));
|
recent.add(attributes.get(ATTRIBUTE_TYPE.TSK_PATH.getTypeID()));
|
||||||
recent.add(getFileUniquePath(entry.getKey().getObjectID()));
|
recent.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
return recent;
|
return recent;
|
||||||
case 8: // TSK_INSTALLED_PROG
|
case TSK_INSTALLED_PROG:
|
||||||
List<String> installed = new ArrayList<>();
|
List<String> installed = new ArrayList<>();
|
||||||
installed.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
installed.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||||
installed.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
installed.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||||
installed.add(getFileUniquePath(entry.getKey().getObjectID()));
|
installed.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
return installed;
|
return installed;
|
||||||
case 11: // TSK_DEVICE_ATTACHED
|
case TSK_DEVICE_ATTACHED:
|
||||||
List<String> devices = new ArrayList<>();
|
List<String> devices = new ArrayList<>();
|
||||||
devices.add(attributes.get(ATTRIBUTE_TYPE.TSK_DEVICE_MODEL.getTypeID()));
|
devices.add(attributes.get(ATTRIBUTE_TYPE.TSK_DEVICE_MODEL.getTypeID()));
|
||||||
devices.add(attributes.get(ATTRIBUTE_TYPE.TSK_DEVICE_ID.getTypeID()));
|
devices.add(attributes.get(ATTRIBUTE_TYPE.TSK_DEVICE_ID.getTypeID()));
|
||||||
devices.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
devices.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||||
devices.add(getFileUniquePath(entry.getKey().getObjectID()));
|
devices.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
return devices;
|
return devices;
|
||||||
case 15: // TSK_WEB_SEARCH_QUERY
|
case TSK_WEB_SEARCH_QUERY:
|
||||||
List<String> search = new ArrayList<>();
|
List<String> search = new ArrayList<>();
|
||||||
search.add(attributes.get(ATTRIBUTE_TYPE.TSK_TEXT.getTypeID()));
|
search.add(attributes.get(ATTRIBUTE_TYPE.TSK_TEXT.getTypeID()));
|
||||||
search.add(attributes.get(ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID()));
|
search.add(attributes.get(ATTRIBUTE_TYPE.TSK_DOMAIN.getTypeID()));
|
||||||
@ -814,7 +839,7 @@ public class ReportGenerator {
|
|||||||
search.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
search.add(attributes.get(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID()));
|
||||||
search.add(getFileUniquePath(entry.getKey().getObjectID()));
|
search.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
return search;
|
return search;
|
||||||
case 16: // TSK_METADATA_EXIF
|
case TSK_METADATA_EXIF:
|
||||||
List<String> exif = new ArrayList<>();
|
List<String> exif = new ArrayList<>();
|
||||||
exif.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
exif.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||||
exif.add(attributes.get(ATTRIBUTE_TYPE.TSK_DEVICE_MAKE.getTypeID()));
|
exif.add(attributes.get(ATTRIBUTE_TYPE.TSK_DEVICE_MAKE.getTypeID()));
|
||||||
@ -823,7 +848,7 @@ public class ReportGenerator {
|
|||||||
exif.add(attributes.get(ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE.getTypeID()));
|
exif.add(attributes.get(ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE.getTypeID()));
|
||||||
exif.add(getFileUniquePath(entry.getKey().getObjectID()));
|
exif.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
return exif;
|
return exif;
|
||||||
case 17: // TSK_TAG_FILE
|
case TSK_TAG_FILE:
|
||||||
List<String> taggedFileRow = new ArrayList<>();
|
List<String> taggedFileRow = new ArrayList<>();
|
||||||
AbstractFile taggedFile = getAbstractFile(entry.getKey().getObjectID());
|
AbstractFile taggedFile = getAbstractFile(entry.getKey().getObjectID());
|
||||||
if (taggedFile != null) {
|
if (taggedFile != null) {
|
||||||
@ -834,7 +859,7 @@ public class ReportGenerator {
|
|||||||
taggedFileRow.add(attributes.get(ATTRIBUTE_TYPE.TSK_TAG_NAME.getTypeID()));
|
taggedFileRow.add(attributes.get(ATTRIBUTE_TYPE.TSK_TAG_NAME.getTypeID()));
|
||||||
taggedFileRow.add(attributes.get(ATTRIBUTE_TYPE.TSK_COMMENT.getTypeID()));
|
taggedFileRow.add(attributes.get(ATTRIBUTE_TYPE.TSK_COMMENT.getTypeID()));
|
||||||
return taggedFileRow;
|
return taggedFileRow;
|
||||||
case 18: // TSK_TAG_ARTIFACT
|
case TSK_TAG_ARTIFACT:
|
||||||
List<String> taggedArtifactRow = new ArrayList<>();
|
List<String> taggedArtifactRow = new ArrayList<>();
|
||||||
String taggedArtifactType = "";
|
String taggedArtifactType = "";
|
||||||
for (BlackboardAttribute attr : entry.getValue()) {
|
for (BlackboardAttribute attr : entry.getValue()) {
|
||||||
@ -856,6 +881,47 @@ public class ReportGenerator {
|
|||||||
taggedArtifactRow.add("");
|
taggedArtifactRow.add("");
|
||||||
}
|
}
|
||||||
return taggedArtifactRow;
|
return taggedArtifactRow;
|
||||||
|
case TSK_CONTACT:
|
||||||
|
List<String> contact = new ArrayList<String>();
|
||||||
|
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_NAME_PERSON.getTypeID()));
|
||||||
|
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER.getTypeID()));
|
||||||
|
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_HOME.getTypeID()));
|
||||||
|
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_OFFICE.getTypeID()));
|
||||||
|
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_MOBILE.getTypeID()));
|
||||||
|
contact.add(attributes.get(ATTRIBUTE_TYPE.TSK_EMAIL.getTypeID()));
|
||||||
|
contact.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
|
return contact;
|
||||||
|
case TSK_MESSAGE:
|
||||||
|
List<String> message = new ArrayList<String>();
|
||||||
|
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_MESSAGE_TYPE.getTypeID()));
|
||||||
|
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_DIRECTION.getTypeID()));
|
||||||
|
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||||
|
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_FROM.getTypeID()));
|
||||||
|
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_EMAIL_FROM.getTypeID()));
|
||||||
|
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_TO.getTypeID()));
|
||||||
|
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_EMAIL_TO.getTypeID()));
|
||||||
|
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_SUBJECT.getTypeID()));
|
||||||
|
message.add(attributes.get(ATTRIBUTE_TYPE.TSK_TEXT.getTypeID()));
|
||||||
|
message.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
|
return message;
|
||||||
|
case TSK_CALLLOG:
|
||||||
|
List<String> call_log = new ArrayList<String>();
|
||||||
|
call_log.add(attributes.get(ATTRIBUTE_TYPE.TSK_NAME_PERSON.getTypeID()));
|
||||||
|
call_log.add(attributes.get(ATTRIBUTE_TYPE.TSK_PHONE_NUMBER.getTypeID()));
|
||||||
|
call_log.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID()));
|
||||||
|
call_log.add(attributes.get(ATTRIBUTE_TYPE.TSK_DIRECTION.getTypeID()));
|
||||||
|
call_log.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
|
return call_log;
|
||||||
|
case TSK_CALENDAR_ENTRY:
|
||||||
|
List<String> calEntry = new ArrayList<String>();
|
||||||
|
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_CALENDAR_ENTRY_TYPE.getTypeID()));
|
||||||
|
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_DESCRIPTION.getTypeID()));
|
||||||
|
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()));
|
||||||
|
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID()));
|
||||||
|
calEntry.add(attributes.get(ATTRIBUTE_TYPE.TSK_LOCATION.getTypeID()));
|
||||||
|
calEntry.add(getFileUniquePath(entry.getKey().getObjectID()));
|
||||||
|
return calEntry;
|
||||||
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -380,8 +380,9 @@ public class ReportHTML implements TableReportModule {
|
|||||||
*/
|
*/
|
||||||
private void addRowDataForSourceArtifact(List<String> row, BlackboardArtifact sourceArtifact) {
|
private void addRowDataForSourceArtifact(List<String> row, BlackboardArtifact sourceArtifact) {
|
||||||
int artifactTypeID = sourceArtifact.getArtifactTypeID();
|
int artifactTypeID = sourceArtifact.getArtifactTypeID();
|
||||||
switch (artifactTypeID) {
|
BlackboardArtifact.ARTIFACT_TYPE type = BlackboardArtifact.ARTIFACT_TYPE.fromID(artifactTypeID);
|
||||||
case 17:
|
switch (type) {
|
||||||
|
case TSK_TAG_FILE:
|
||||||
addRowDataForFileTagArtifact(row, sourceArtifact);
|
addRowDataForFileTagArtifact(row, sourceArtifact);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -399,10 +400,10 @@ public class ReportHTML implements TableReportModule {
|
|||||||
try {
|
try {
|
||||||
AbstractFile file = Case.getCurrentCase().getSleuthkitCase().getAbstractFileById(sourceArtifact.getObjectID());
|
AbstractFile file = Case.getCurrentCase().getSleuthkitCase().getAbstractFileById(sourceArtifact.getObjectID());
|
||||||
|
|
||||||
// Don't make a local copy of the file if it is unallocated space or a virtual directory.
|
// Don't make a local copy of the file if it is a directory or unallocated space.
|
||||||
if (file.getType() == TSK_DB_FILES_TYPE_ENUM.UNALLOC_BLOCKS ||
|
if (file.isDir() ||
|
||||||
file.getType() == TSK_DB_FILES_TYPE_ENUM.UNUSED_BLOCKS ||
|
file.getType() == TSK_DB_FILES_TYPE_ENUM.UNALLOC_BLOCKS ||
|
||||||
file.getType() == TSK_DB_FILES_TYPE_ENUM.VIRTUAL_DIR) {
|
file.getType() == TSK_DB_FILES_TYPE_ENUM.UNUSED_BLOCKS) {
|
||||||
row.add("");
|
row.add("");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -708,6 +709,32 @@ public class ReportHTML implements TableReportModule {
|
|||||||
FileUtil.copy(in, output);
|
FileUtil.copy(in, output);
|
||||||
in.close();
|
in.close();
|
||||||
output.close();
|
output.close();
|
||||||
|
|
||||||
|
in = getClass().getResourceAsStream("/org/sleuthkit/autopsy/report/images/contact.png");
|
||||||
|
output = new FileOutputStream(new File(path + File.separator + "Contacts.png"));
|
||||||
|
FileUtil.copy(in, output);
|
||||||
|
in.close();
|
||||||
|
output.close();
|
||||||
|
|
||||||
|
in = getClass().getResourceAsStream("/org/sleuthkit/autopsy/report/images/message.png");
|
||||||
|
output = new FileOutputStream(new File(path + File.separator + "Messages.png"));
|
||||||
|
FileUtil.copy(in, output);
|
||||||
|
in.close();
|
||||||
|
output.close();
|
||||||
|
|
||||||
|
in = getClass().getResourceAsStream("/org/sleuthkit/autopsy/report/images/calllog.png");
|
||||||
|
output = new FileOutputStream(new File(path + File.separator + "Call Logs.png"));
|
||||||
|
FileUtil.copy(in, output);
|
||||||
|
in.close();
|
||||||
|
output.close();
|
||||||
|
|
||||||
|
in = getClass().getResourceAsStream("/org/sleuthkit/autopsy/report/images/calendar.png");
|
||||||
|
output = new FileOutputStream(new File(path + File.separator + "Calendar Entries.png"));
|
||||||
|
FileUtil.copy(in, output);
|
||||||
|
in.close();
|
||||||
|
output.close();
|
||||||
|
|
||||||
|
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
logger.log(Level.SEVERE, "Failed to extract images for HTML report.", ex);
|
logger.log(Level.SEVERE, "Failed to extract images for HTML report.", ex);
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -27,6 +27,7 @@ import java.util.LinkedHashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.logging.Level;
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.JCheckBox;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
@ -35,9 +36,13 @@ import javax.swing.JPanel;
|
|||||||
import javax.swing.ListCellRenderer;
|
import javax.swing.ListCellRenderer;
|
||||||
import javax.swing.ListModel;
|
import javax.swing.ListModel;
|
||||||
import javax.swing.event.ListDataListener;
|
import javax.swing.event.ListDataListener;
|
||||||
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
import org.sleuthkit.autopsy.datamodel.ExtractedContentChildren;
|
||||||
import org.sleuthkit.autopsy.datamodel.Tags;
|
import org.sleuthkit.autopsy.datamodel.Tags;
|
||||||
|
import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||||
import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
|
import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
|
||||||
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
|
|
||||||
public final class ReportVisualPanel2 extends JPanel {
|
public final class ReportVisualPanel2 extends JPanel {
|
||||||
private static final Logger logger = Logger.getLogger(ReportVisualPanel2.class.getName());
|
private static final Logger logger = Logger.getLogger(ReportVisualPanel2.class.getName());
|
||||||
@ -97,10 +102,22 @@ public final class ReportVisualPanel2 extends JPanel {
|
|||||||
|
|
||||||
// Initialize the list of Artifacts
|
// Initialize the list of Artifacts
|
||||||
private void initArtifactTypes() {
|
private void initArtifactTypes() {
|
||||||
artifacts = ArtifactSelectionDialog.getImportantArtifactTypes();
|
|
||||||
artifactStates = new EnumMap<ARTIFACT_TYPE, Boolean>(ARTIFACT_TYPE.class);
|
try {
|
||||||
for (ARTIFACT_TYPE type : artifacts) {
|
ArrayList<BlackboardArtifact.ARTIFACT_TYPE> doNotReport = new ArrayList();
|
||||||
artifactStates.put(type, Boolean.TRUE);
|
doNotReport.add(BlackboardArtifact.ARTIFACT_TYPE.TSK_GEN_INFO);
|
||||||
|
|
||||||
|
artifacts = Case.getCurrentCase().getSleuthkitCase().getBlackboardArtifactTypesInUse();
|
||||||
|
|
||||||
|
artifacts.removeAll(doNotReport);
|
||||||
|
|
||||||
|
artifactStates = new EnumMap<ARTIFACT_TYPE, Boolean>(ARTIFACT_TYPE.class);
|
||||||
|
for (ARTIFACT_TYPE type : artifacts) {
|
||||||
|
artifactStates.put(type, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
} catch (TskCoreException ex) {
|
||||||
|
Logger.getLogger(ReportVisualPanel2.class.getName()).log(Level.SEVERE, "Error getting list of artifacts in use: " + ex.getLocalizedMessage());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
*
|
*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2012 Basis Technology Corp.
|
* Copyright 2013 Basis Technology Corp.
|
||||||
*
|
*
|
||||||
* Copyright 2012 42six Solutions.
|
* Copyright 2012 42six Solutions.
|
||||||
* Contact: aebadirad <at> 42six <dot> com
|
* Contact: aebadirad <at> 42six <dot> com
|
||||||
@ -30,7 +30,6 @@ import java.beans.PropertyChangeListener;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
@ -59,47 +58,12 @@ public final class ReportWizardAction extends CallableSystemAction implements P
|
|||||||
private JButton toolbarButton = new JButton();
|
private JButton toolbarButton = new JButton();
|
||||||
private static final String ACTION_NAME = "Generate Report";
|
private static final String ACTION_NAME = "Generate Report";
|
||||||
|
|
||||||
public ReportWizardAction() {
|
|
||||||
setEnabled(false);
|
|
||||||
Case.addPropertyChangeListener(new PropertyChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void propertyChange(PropertyChangeEvent evt) {
|
|
||||||
if (evt.getPropertyName().equals(Case.CASE_CURRENT_CASE)) {
|
|
||||||
Case newCase = (Case) evt.getNewValue();
|
|
||||||
setEnabled(newCase != null);
|
|
||||||
|
|
||||||
// Make the cases' Reoports folder, if it doesn't exist
|
|
||||||
if (newCase != null) {
|
|
||||||
boolean exists = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).exists();
|
|
||||||
if (!exists) {
|
|
||||||
boolean reportCreate = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).mkdirs();
|
|
||||||
if (!reportCreate) {
|
|
||||||
logger.log(Level.WARNING, "Could not create Reports directory for case. It does not exist.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Initialize the Generate Report button
|
|
||||||
toolbarButton.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
ReportWizardAction.this.actionPerformed(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When the Generate Report button or menu item is selected, open the reporting wizard.
|
* When the Generate Report button or menu item is selected, open the reporting wizard.
|
||||||
* When the wizard is finished, create a ReportGenerator with the wizard information,
|
* When the wizard is finished, create a ReportGenerator with the wizard information,
|
||||||
* and start all necessary reports.
|
* and start all necessary reports.
|
||||||
*/
|
*/
|
||||||
@Override
|
public static void doReportWizard() {
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
// Create the wizard
|
// Create the wizard
|
||||||
WizardDescriptor wiz = new WizardDescriptor(new ReportWizardIterator());
|
WizardDescriptor wiz = new WizardDescriptor(new ReportWizardIterator());
|
||||||
wiz.setTitleFormat(new MessageFormat("{0} {1}"));
|
wiz.setTitleFormat(new MessageFormat("{0} {1}"));
|
||||||
@ -133,7 +97,45 @@ public final class ReportWizardAction extends CallableSystemAction implements P
|
|||||||
|
|
||||||
// Open the progress window for the user
|
// Open the progress window for the user
|
||||||
generator.displayProgressPanels();
|
generator.displayProgressPanels();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReportWizardAction() {
|
||||||
|
setEnabled(false);
|
||||||
|
Case.addPropertyChangeListener(new PropertyChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void propertyChange(PropertyChangeEvent evt) {
|
||||||
|
if (evt.getPropertyName().equals(Case.CASE_CURRENT_CASE)) {
|
||||||
|
Case newCase = (Case) evt.getNewValue();
|
||||||
|
setEnabled(newCase != null);
|
||||||
|
|
||||||
|
// Make the cases' Reoports folder, if it doesn't exist
|
||||||
|
if (newCase != null) {
|
||||||
|
boolean exists = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).exists();
|
||||||
|
if (!exists) {
|
||||||
|
boolean reportCreate = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).mkdirs();
|
||||||
|
if (!reportCreate) {
|
||||||
|
logger.log(Level.WARNING, "Could not create Reports directory for case. It does not exist.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Initialize the Generate Report button
|
||||||
|
toolbarButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
ReportWizardAction.this.actionPerformed(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
doReportWizard();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
BIN
Core/src/org/sleuthkit/autopsy/report/images/calendar.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
Core/src/org/sleuthkit/autopsy/report/images/calllog.png
Normal file
After Width: | Height: | Size: 691 B |
BIN
Core/src/org/sleuthkit/autopsy/report/images/contact.png
Normal file
After Width: | Height: | Size: 738 B |
BIN
Core/src/org/sleuthkit/autopsy/report/images/message.png
Normal file
After Width: | Height: | Size: 829 B |
@ -76,14 +76,16 @@ KeywordSearchConfigurationPanel2.informationLabel.text=Information
|
|||||||
KeywordSearchListsManagementPanel.keywordListsLabel.text=Keyword Lists:
|
KeywordSearchListsManagementPanel.keywordListsLabel.text=Keyword Lists:
|
||||||
KeywordSearchEditListPanel.keywordsLabel.text=Keywords:
|
KeywordSearchEditListPanel.keywordsLabel.text=Keywords:
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton1.toolTipText=20 mins. (fastest ingest time)
|
KeywordSearchConfigurationPanel2.timeRadioButton1.toolTipText=20 mins. (fastest ingest time)
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton1.text=20 minutes (fastest ingest)
|
KeywordSearchConfigurationPanel2.timeRadioButton1.text=20 minutes (slowest feedback, fastest ingest)
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton2.toolTipText=10 minutes (default ingest time)
|
KeywordSearchConfigurationPanel2.timeRadioButton2.toolTipText=10 minutes (faster overall ingest time than default)
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton2.text=10 minutes (default)
|
KeywordSearchConfigurationPanel2.timeRadioButton2.text=10 minutes (slower feedback, faster ingest)
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton3.toolTipText=5 minutes (overall ingest time will be longest)
|
KeywordSearchConfigurationPanel2.timeRadioButton3.toolTipText=5 minutes (overall ingest time will be longer)
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton3.text=5 minutes (longest ingest)
|
KeywordSearchConfigurationPanel2.timeRadioButton3.text=5 minutes (default)
|
||||||
KeywordSearchIngestSimplePanel.encodingsLabel.text=Encodings:
|
KeywordSearchIngestSimplePanel.encodingsLabel.text=Encodings:
|
||||||
KeywordSearchIngestSimplePanel.keywordSearchEncodings.text=-
|
KeywordSearchIngestSimplePanel.keywordSearchEncodings.text=-
|
||||||
KeywordSearchIngestSimplePanel.titleLabel.text=Select keyword lists to enable during ingest:
|
KeywordSearchIngestSimplePanel.titleLabel.text=Select keyword lists to enable during ingest:
|
||||||
OpenIDE-Module-Short-Description=Keyword Search ingest module, extracted text viewer and keyword search tools
|
OpenIDE-Module-Short-Description=Keyword Search ingest module, extracted text viewer and keyword search tools
|
||||||
KeywordSearchListsViewerPanel.manageListsButton.toolTipText=Manage keyword lists, their settings and associated keywords. The settings are shared among all cases.
|
KeywordSearchListsViewerPanel.manageListsButton.toolTipText=Manage keyword lists, their settings and associated keywords. The settings are shared among all cases.
|
||||||
KeywordSearchConfigurationPanel2.frequencyLabel.text=Results update frequency during ingest:
|
KeywordSearchConfigurationPanel2.frequencyLabel.text=Results update frequency during ingest:
|
||||||
|
KeywordSearchConfigurationPanel2.timeRadioButton4.text_1=1 minute (faster feedback, longest ingest)
|
||||||
|
KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText=1 minute (overall ingest time will be longest)
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
<Component id="timeRadioButton2" min="-2" max="-2" attributes="0"/>
|
<Component id="timeRadioButton2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="timeRadioButton1" min="-2" max="-2" attributes="0"/>
|
<Component id="timeRadioButton1" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="timeRadioButton3" alignment="0" min="-2" max="-2" attributes="0"/>
|
<Component id="timeRadioButton3" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="timeRadioButton4" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
@ -81,7 +82,9 @@
|
|||||||
<Component id="timeRadioButton2" min="-2" max="-2" attributes="0"/>
|
<Component id="timeRadioButton2" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="timeRadioButton3" min="-2" max="-2" attributes="0"/>
|
<Component id="timeRadioButton3" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="timeRadioButton4" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="1" attributes="0">
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
<Component id="informationLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="informationLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="informationSeparator" min="-2" pref="7" max="-2" attributes="0"/>
|
<Component id="informationSeparator" min="-2" pref="7" max="-2" attributes="0"/>
|
||||||
@ -96,7 +99,7 @@
|
|||||||
<Component id="chunksLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="chunksLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="chunksValLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="chunksValLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace pref="37" max="32767" attributes="0"/>
|
<EmptySpace pref="30" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
@ -198,5 +201,15 @@
|
|||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component class="javax.swing.JRadioButton" name="timeRadioButton4">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/keywordsearch/Bundle.properties" key="KeywordSearchConfigurationPanel2.timeRadioButton4.text_1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/keywordsearch/Bundle.properties" key="KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Form>
|
</Form>
|
||||||
|
@ -60,8 +60,14 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
|||||||
case SLOW:
|
case SLOW:
|
||||||
timeRadioButton3.setSelected(true);
|
timeRadioButton3.setSelected(true);
|
||||||
break;
|
break;
|
||||||
|
case SLOWEST:
|
||||||
|
timeRadioButton4.setSelected(true);
|
||||||
|
break;
|
||||||
|
case DEFAULT:
|
||||||
default:
|
default:
|
||||||
//
|
// default value
|
||||||
|
timeRadioButton3.setSelected(true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -89,6 +95,7 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
|||||||
timeRadioButton1 = new javax.swing.JRadioButton();
|
timeRadioButton1 = new javax.swing.JRadioButton();
|
||||||
timeRadioButton2 = new javax.swing.JRadioButton();
|
timeRadioButton2 = new javax.swing.JRadioButton();
|
||||||
timeRadioButton3 = new javax.swing.JRadioButton();
|
timeRadioButton3 = new javax.swing.JRadioButton();
|
||||||
|
timeRadioButton4 = new javax.swing.JRadioButton();
|
||||||
|
|
||||||
skipNSRLCheckBox.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.skipNSRLCheckBox.text")); // NOI18N
|
skipNSRLCheckBox.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.skipNSRLCheckBox.text")); // NOI18N
|
||||||
skipNSRLCheckBox.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.skipNSRLCheckBox.toolTipText")); // NOI18N
|
skipNSRLCheckBox.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.skipNSRLCheckBox.toolTipText")); // NOI18N
|
||||||
@ -117,6 +124,9 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
|||||||
timeRadioButton3.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton3.text")); // NOI18N
|
timeRadioButton3.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton3.text")); // NOI18N
|
||||||
timeRadioButton3.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton3.toolTipText")); // NOI18N
|
timeRadioButton3.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton3.toolTipText")); // NOI18N
|
||||||
|
|
||||||
|
timeRadioButton4.setText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton4.text_1")); // NOI18N
|
||||||
|
timeRadioButton4.setToolTipText(org.openide.util.NbBundle.getMessage(KeywordSearchConfigurationPanel2.class, "KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText")); // NOI18N
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||||
this.setLayout(layout);
|
this.setLayout(layout);
|
||||||
layout.setHorizontalGroup(
|
layout.setHorizontalGroup(
|
||||||
@ -146,7 +156,8 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
|||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(timeRadioButton2)
|
.addComponent(timeRadioButton2)
|
||||||
.addComponent(timeRadioButton1)
|
.addComponent(timeRadioButton1)
|
||||||
.addComponent(timeRadioButton3)))
|
.addComponent(timeRadioButton3)
|
||||||
|
.addComponent(timeRadioButton4)))
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(chunksLabel)
|
.addComponent(chunksLabel)
|
||||||
.addGap(18, 18, 18)
|
.addGap(18, 18, 18)
|
||||||
@ -170,7 +181,9 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
|||||||
.addComponent(timeRadioButton2)
|
.addComponent(timeRadioButton2)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(timeRadioButton3)
|
.addComponent(timeRadioButton3)
|
||||||
.addGap(18, 18, 18)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(timeRadioButton4)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
.addComponent(informationLabel)
|
.addComponent(informationLabel)
|
||||||
.addComponent(informationSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 7, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(informationSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 7, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
@ -182,7 +195,7 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
|||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(chunksLabel)
|
.addComponent(chunksLabel)
|
||||||
.addComponent(chunksValLabel))
|
.addComponent(chunksValLabel))
|
||||||
.addContainerGap(37, Short.MAX_VALUE))
|
.addContainerGap(30, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
@ -201,6 +214,7 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
|||||||
private javax.swing.JRadioButton timeRadioButton1;
|
private javax.swing.JRadioButton timeRadioButton1;
|
||||||
private javax.swing.JRadioButton timeRadioButton2;
|
private javax.swing.JRadioButton timeRadioButton2;
|
||||||
private javax.swing.JRadioButton timeRadioButton3;
|
private javax.swing.JRadioButton timeRadioButton3;
|
||||||
|
private javax.swing.JRadioButton timeRadioButton4;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -218,18 +232,24 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
|||||||
timeRadioButton1.setEnabled(enabled);
|
timeRadioButton1.setEnabled(enabled);
|
||||||
timeRadioButton2.setEnabled(enabled);
|
timeRadioButton2.setEnabled(enabled);
|
||||||
timeRadioButton3.setEnabled(enabled);
|
timeRadioButton3.setEnabled(enabled);
|
||||||
|
timeRadioButton4.setEnabled(enabled);
|
||||||
frequencyLabel.setEnabled(enabled);
|
frequencyLabel.setEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private UpdateFrequency getSelectedTimeValue() {
|
private UpdateFrequency getSelectedTimeValue() {
|
||||||
if (timeRadioButton1.isSelected()) {
|
if (timeRadioButton1.isSelected()) {
|
||||||
return UpdateFrequency.FAST;
|
return UpdateFrequency.FAST;
|
||||||
} else if (timeRadioButton2.isSelected()) {
|
}
|
||||||
|
else if (timeRadioButton2.isSelected()) {
|
||||||
return UpdateFrequency.AVG;
|
return UpdateFrequency.AVG;
|
||||||
} else {
|
}
|
||||||
|
else if (timeRadioButton3.isSelected()) {
|
||||||
return UpdateFrequency.SLOW;
|
return UpdateFrequency.SLOW;
|
||||||
}
|
}
|
||||||
|
else if (timeRadioButton4.isSelected()) {
|
||||||
|
return UpdateFrequency.SLOWEST;
|
||||||
|
}
|
||||||
|
return UpdateFrequency.DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void customizeComponents() {
|
private void customizeComponents() {
|
||||||
@ -237,6 +257,7 @@ public class KeywordSearchConfigurationPanel2 extends javax.swing.JPanel impleme
|
|||||||
timeGroup.add(timeRadioButton1);
|
timeGroup.add(timeRadioButton1);
|
||||||
timeGroup.add(timeRadioButton2);
|
timeGroup.add(timeRadioButton2);
|
||||||
timeGroup.add(timeRadioButton3);
|
timeGroup.add(timeRadioButton3);
|
||||||
|
timeGroup.add(timeRadioButton4);
|
||||||
|
|
||||||
this.skipNSRLCheckBox.setSelected(KeywordSearchSettings.getSkipKnown());
|
this.skipNSRLCheckBox.setSelected(KeywordSearchSettings.getSkipKnown());
|
||||||
|
|
||||||
|
@ -85,7 +85,9 @@ public final class KeywordSearchIngestModule extends IngestModuleAbstractFile {
|
|||||||
|
|
||||||
FAST(20),
|
FAST(20),
|
||||||
AVG(10),
|
AVG(10),
|
||||||
SLOW(5);
|
SLOW(5),
|
||||||
|
SLOWEST(1),
|
||||||
|
DEFAULT(5);
|
||||||
private final int time;
|
private final int time;
|
||||||
|
|
||||||
UpdateFrequency(int time) {
|
UpdateFrequency(int time) {
|
||||||
|
@ -52,11 +52,11 @@ public class KeywordSearchSettings {
|
|||||||
*/
|
*/
|
||||||
static UpdateFrequency getUpdateFrequency(){
|
static UpdateFrequency getUpdateFrequency(){
|
||||||
if(ModuleSettings.getConfigSetting(PROPERTIES_OPTIONS, "UpdateFrequency") != null){
|
if(ModuleSettings.getConfigSetting(PROPERTIES_OPTIONS, "UpdateFrequency") != null){
|
||||||
return UpdateFrequency.valueOf(ModuleSettings.getConfigSetting(PROPERTIES_OPTIONS, "UpdateFrequency"));
|
return UpdateFrequency.valueOf(ModuleSettings.getConfigSetting(PROPERTIES_OPTIONS, "UpdateFrequency"));
|
||||||
}
|
}
|
||||||
//if it failed, return the default/last known value
|
//if it failed, return the default/last known value
|
||||||
logger.log(Level.WARNING, "Could not read property for UpdateFrequency, returning backup value.");
|
logger.log(Level.WARNING, "Could not read property for UpdateFrequency, returning backup value.");
|
||||||
return UpdateFreq;
|
return UpdateFrequency.DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
0
RecentActivity/src/org/sleuthkit/autopsy/recentactivity/RAImageIngestModule.java
Executable file → Normal file
@ -1,5 +1,5 @@
|
|||||||
#Updated by build script
|
#Updated by build script
|
||||||
#Sun, 02 Jun 2013 00:12:29 -0400
|
#Thu, 25 Jul 2013 15:34:25 -0400
|
||||||
LBL_splash_window_title=Starting Autopsy
|
LBL_splash_window_title=Starting Autopsy
|
||||||
SPLASH_HEIGHT=288
|
SPLASH_HEIGHT=288
|
||||||
SPLASH_WIDTH=538
|
SPLASH_WIDTH=538
|
||||||
@ -8,4 +8,4 @@ SplashRunningTextBounds=5,266,530,17
|
|||||||
SplashRunningTextColor=0x0
|
SplashRunningTextColor=0x0
|
||||||
SplashRunningTextFontSize=18
|
SplashRunningTextFontSize=18
|
||||||
|
|
||||||
currentVersion=Autopsy 20130602
|
currentVersion=Autopsy 20130725
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#Updated by build script
|
#Updated by build script
|
||||||
#Thu, 23 May 2013 00:04:58 -0400
|
#Thu, 25 Jul 2013 15:34:25 -0400
|
||||||
|
|
||||||
CTL_MainWindow_Title=Autopsy 20130523
|
CTL_MainWindow_Title=Autopsy 20130725
|
||||||
CTL_MainWindow_Title_No_Project=Autopsy 20130523
|
CTL_MainWindow_Title_No_Project=Autopsy 20130725
|
||||||
|