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

This commit is contained in:
Nick Davis 2014-06-16 15:20:41 -04:00
commit 4abcf92b00
28 changed files with 189 additions and 95 deletions

View File

@ -103,11 +103,13 @@ public class CueBannerPanel extends javax.swing.JPanel {
}
});
createNewLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N NON-NLS
// createNewLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N NON-NLS
createNewLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.createNewLabel.text")); // NOI18N
createNewLabel.setFont(createNewLabel.getFont().deriveFont(13.0f));
openRecentLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N NON-NLS
// openRecentLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N NON-NLS
openRecentLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openRecentLabel.text")); // NOI18N
openRecentLabel.setFont(openRecentLabel.getFont().deriveFont(13.0f));
openCaseButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/casemodule/btn_icon_open_existing.png"))); // NOI18N NON-NLS
openCaseButton.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openCaseButton.text")); // NOI18N
@ -122,8 +124,9 @@ public class CueBannerPanel extends javax.swing.JPanel {
}
});
openLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N NON-NLS
// openLabel.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N NON-NLS
openLabel.setText(org.openide.util.NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.openLabel.text")); // NOI18N
openLabel.setFont(openLabel.getFont().deriveFont(13.0f));
javax.swing.GroupLayout editorPanelLayout = new javax.swing.GroupLayout(editorPanel);
editorPanel.setLayout(editorPanelLayout);

View File

@ -19,6 +19,7 @@
package org.sleuthkit.autopsy.corecomponents;
import javax.swing.DefaultComboBoxModel;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.core.UserPreferences;
/**
@ -29,6 +30,7 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel {
AutopsyOptionsPanel(AutopsyOptionsPanelController controller) {
initComponents();
numberOfFileIngestThreadsComboBox.setModel(new DefaultComboBoxModel<>(new Integer[]{1, 2, 4, 8, 16}));
restartRequiredLabel.setText(NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.restartRequiredLabel.text", Runtime.getRuntime().availableProcessors()));
// TODO listen to changes in form fields and call controller.changed()
}

View File

@ -139,4 +139,4 @@ AutopsyOptionsPanel.keepCurrentViewerRB.toolTipText=For example, stay in Hex vie
AutopsyOptionsPanel.keepCurrentViewerRB.text=Stay on the same file viewer
AutopsyOptionsPanel.jLabel1.text=When selecting a file:
AutopsyOptionsPanel.jLabel2.text=When displaying times:
AutopsyOptionsPanel.restartRequiredLabel.text=Restart required to take effect
AutopsyOptionsPanel.restartRequiredLabel.text=For this computer, a maximum of {0} file ingest threads should be used. Restart required to take effect.

View File

@ -22,6 +22,7 @@ import java.awt.Cursor;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyVetoException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
@ -367,7 +368,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
}
@Override
public void setNode(Node selectedNode) {
public void setNode(final Node selectedNode) {
if (this.rootNode != null) {
this.rootNode.removeNodeListener(dummyNodeListener);
}
@ -390,6 +391,20 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
if (selectedNode != null) {
int childrenCount = selectedNode.getChildren().getNodesCount();
this.numberMatchLabel.setText(Integer.toString(childrenCount));
//if there is only one child, select it to be displayed in the content viewer
if (childrenCount == 1) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
explorerManager.setSelectedNodes(selectedNode.getChildren().getNodes());
} catch (PropertyVetoException ex) {
logger.log(Level.INFO, "node selection vetoed");
}
}
});
}
}
this.numberMatchLabel.setVisible(true);
}

View File

@ -1,10 +1,27 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
ExternalResultsIngestModule.moduleName.text=External Results Importer
ExternalResultsIngestModule.properties.text=ExternalResultsImporter
ExternalResultsIngestModule.moduleDesc.text=Parse command line tool output to create blackboard entries and add files to the database.
ExternalResultsIngestModule.startUp.exception.importdir=Import directory does not exist and was not able to be created.
ExternalResultsIngestModule.process.exception.datasourcepath=Error getting the data source path.
ExternalResultsIngestModule.process.exception.run=Error running the external command:
ExternalResultsIngestModule.process.shutdown.finished=Finished
ExternalResultsImporter.importDerivedFiles.errMsg1.text=Could not import derived file at {0}, parent file {1} not found.
ExternalResultsImporter.importDerivedFiles.errMsg2.text=Could not import derived file at {0}, file does not exist.
ExternalResultsImporter.importDerivedFiles.errMsg3.text=Could not import derived file at {0}, error querying/updating case database.
ExternalResultsImporter.importArtifacts.caseErrMsg1.text=Could not import {0} attribute, value \= {1}, for {2} artifact from {3}, unrecognized attribute value type\: {4}.
ExternalResultsImporter.importArtifacts.errMsg1.text=Could not import {0} artifact from {1}, source file not found.
ExternalResultsImporter.importArtifacts.errMsg2.text=Could not import {0} artifact from {1}, error updating case database.
ExternalResultsImporter.importReports.errMsg1.text=Could not import report at {0}, file does not exist.
ExternalResultsImporter.importReports.errMsg2.text=Could not import report at {0}, error updating case database.
ExternalResultsImporter.findFileInCaseDatabase.errMsg1.text=Parent file path {0} is ambiguous, using first file found.
ExternalResultsImporter.getPathRelativeToCaseFolder.errMsg1.text=Did not convert {0} to relative path, not in a subdirectory of case directory {1}.
ExternalResultsImporter.getPathRelativeToCaseFolder.errMsg2.text=Expected {0} to be an absolute path to a file in a subdirectory of case directory {1}.
ExternalResultsXMLParser.parse.errMsg1.text=Did not find {0} root element of {1}.
ExternalResultsXMLParser.parse.errMsg2.text=Error parsing {0}.
ExternalResultsXMLParser.parseArtifactAttributes.errMsg1.text=Found {0} element that has no content in {1}.
ExternalResultsXMLParser.parseAttributeValueType.errMsg1.text=Found unrecognized value {0} for {1} attribute of {2} element.
ExternalResultsXMLParser.getChildElementContent.errMsg1.text=Found {0} element with {1} child element that has no content in {2}.
ExternalResultsXMLParser.getChildElementContent.errMsg2.text=Found {0} element missing {1} child element in {2}.
ExternalResultsXMLParser.getChildElement.errMsg1.text=Found multiple {0} child elements for {1} element in {2}, ignoring all but first occurrence.
ExternalResults.addArtifact.exception.msg1.text=type argument is empty.
ExternalResults.addArtifact.exception.msg2.text=source argument is empty.
ExternalResults.addReport.exception.msg1.text=localPath argument is empty.
ExternalResults.addReport.exception.msg2.text=sourceModuleName argument is empty.
ExternalResults.addDerivedFile.exception.msg1.text=localPath argument is empty.
ExternalResults.addDerivedFile.exception.msg2.text=parentPath argument is empty.
ExternalResults.Artifact.addAttribute.exception.msg1.text=type argument is empty.
ExternalResults.Artifact.addAttribute.exception.msg2.text=value argument is empty.
ExternalResults.Artifact.addAttribute.exception.msg3.text=valueType argument is empty.

View File

@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.externalresults;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.openide.util.NbBundle;
import org.sleuthkit.datamodel.Content;
/**
@ -43,10 +45,12 @@ final public class ExternalResults {
Artifact addArtifact(String type, String sourceFilePath) {
if (type.isEmpty()) {
throw new IllegalArgumentException("type argument is empty");
throw new IllegalArgumentException(
NbBundle.getMessage(this.getClass(), "ExternalResults.addArtifact.exception.msg1.text"));
}
if (sourceFilePath.isEmpty()) {
throw new IllegalArgumentException("source argument is empty");
throw new IllegalArgumentException(
NbBundle.getMessage(this.getClass(), "ExternalResults.addArtifact.exception.msg2.text"));
}
Artifact artifact = new Artifact(type, sourceFilePath);
artifacts.add(artifact);
@ -59,10 +63,12 @@ final public class ExternalResults {
void addReport(String localPath, String sourceModuleName, String reportName) {
if (localPath.isEmpty()) {
throw new IllegalArgumentException("localPath argument is empty");
throw new IllegalArgumentException(
NbBundle.getMessage(this.getClass(), "ExternalResults.addReport.exception.msg1.text"));
}
if (sourceModuleName.isEmpty()) {
throw new IllegalArgumentException("sourceModuleName argument is empty");
throw new IllegalArgumentException(
NbBundle.getMessage(this.getClass(), "ExternalResults.addReport.exception.msg2.text"));
}
Report report = new Report(localPath, sourceModuleName, reportName);
reports.add(report);
@ -74,10 +80,12 @@ final public class ExternalResults {
void addDerivedFile(String localPath, String parentPath) {
if (localPath.isEmpty()) {
throw new IllegalArgumentException("localPath argument is empty");
throw new IllegalArgumentException(
NbBundle.getMessage(this.getClass(), "ExternalResults.addDerivedFile.exception.msg1.text"));
}
if (parentPath.isEmpty()) {
throw new IllegalArgumentException("parentPath argument is empty");
throw new IllegalArgumentException(
NbBundle.getMessage(this.getClass(), "ExternalResults.addDerivedFile.exception.msg2.text"));
}
DerivedFile file = new DerivedFile(localPath, parentPath);
derivedFiles.add(file);
@ -108,13 +116,16 @@ final public class ExternalResults {
void addAttribute(String type, String value, String valueType, String sourceModule) {
if (type.isEmpty()) {
throw new IllegalArgumentException("type argument is empty");
throw new IllegalArgumentException(NbBundle.getMessage(this.getClass(),
"ExternalResults.Artifact.addAttribute.exception.msg1.text"));
}
if (value.isEmpty()) {
throw new IllegalArgumentException("value argument is empty");
throw new IllegalArgumentException(NbBundle.getMessage(this.getClass(),
"ExternalResults.Artifact.addAttribute.exception.msg2.text"));
}
if (valueType.isEmpty()) {
throw new IllegalArgumentException("value type argument is empty");
throw new IllegalArgumentException(NbBundle.getMessage(this.getClass(),
"ExternalResults.Artifact.addAttribute.exception.msg3.text"));
}
attributes.add(new ArtifactAttribute(type, value, valueType, sourceModule));
}

View File

@ -26,6 +26,8 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.casemodule.services.FileManager;
import org.sleuthkit.autopsy.coreutils.ErrorInfo;
@ -95,18 +97,24 @@ public final class ExternalResultsImporter {
"", "", "", ""); // Not currently providing derivation info for derived files from external processes.
IngestServices.getInstance().fireModuleContentEvent(new ModuleContentEvent(derivedFile));
} else {
String errorMessage = String.format("Could not import derived file at %s, parent file %s not found", localPath, parentFilePath);
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsImporter.importDerivedFiles.errMsg1.text",
localPath, parentFilePath);
ExternalResultsImporter.logger.log(Level.SEVERE, errorMessage);
this.errors.add(new ErrorInfo(ExternalResultsImporter.class.getName(), errorMessage));
}
}
} else {
String errorMessage = String.format("Could not import derived file at %s, file does not exist", localPath);
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsImporter.importDerivedFiles.errMsg2.text",
localPath);
ExternalResultsImporter.logger.log(Level.SEVERE, errorMessage);
this.errors.add(new ErrorInfo(ExternalResultsImporter.class.getName(), errorMessage));
}
} catch (TskCoreException ex) {
String errorMessage = String.format("Could not import derived file at %s, error querying/updating case database", localPath);
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsImporter.importDerivedFiles.errMsg3.text",
localPath);
ExternalResultsImporter.logger.log(Level.SEVERE, errorMessage, ex);
this.errors.add(new ErrorInfo(ExternalResultsImporter.class.getName(), errorMessage, ex));
}
@ -150,7 +158,8 @@ public final class ExternalResultsImporter {
attributes.add(new BlackboardAttribute(attributeTypeId, attributeData.getSourceModule(), doubleValue));
break;
default:
String errorMessage = String.format("Could not import %s attribute, value = %s, for %s artifact from %s, unrecognized attribute value type: %s",
String errorMessage = String.format(NbBundle.getMessage(this.getClass(),
"ExternalResultsImporter.importArtifacts.caseErrMsg1.text"),
attributeData.getType(), attributeData.getValue(),
artifactData.getType(), artifactData.getSourceFilePath(),
attributeData.getValueType());
@ -165,12 +174,16 @@ public final class ExternalResultsImporter {
IngestServices.getInstance().fireModuleDataEvent(new ModuleDataEvent(this.getClass().getSimpleName(), BlackboardArtifact.ARTIFACT_TYPE.fromID(artifactTypeId)));
}
} else {
String errorMessage = String.format("Could not import %s artifact from %s, source file not found", artifactData.getType(), artifactData.getSourceFilePath());
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsImporter.importArtifacts.errMsg1.text",
artifactData.getType(), artifactData.getSourceFilePath());
ExternalResultsImporter.logger.log(Level.SEVERE, errorMessage);
this.errors.add(new ErrorInfo(ExternalResultsImporter.class.getName(), errorMessage));
}
} catch (TskCoreException ex) {
String errorMessage = String.format("Could not import %s artifact from %s, error updating case database", artifactData.getType(), artifactData.getSourceFilePath());
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsImporter.importArtifacts.errMsg2.text",
artifactData.getType(), artifactData.getSourceFilePath());
ExternalResultsImporter.logger.log(Level.SEVERE, errorMessage, ex);
this.errors.add(new ErrorInfo(ExternalResultsImporter.class.getName(), errorMessage, ex));
}
@ -185,12 +198,12 @@ public final class ExternalResultsImporter {
if (reportFile.exists()) {
Case.getCurrentCase().addReport(reportPath, report.getSourceModuleName(), report.getReportName());
} else {
String errorMessage = String.format("Could not import report at %s, file does not exist", reportPath);
String errorMessage = NbBundle.getMessage(this.getClass(), "ExternalResultsImporter.importReports.errMsg1.text", reportPath);
ExternalResultsImporter.logger.log(Level.SEVERE, errorMessage);
this.errors.add(new ErrorInfo(ExternalResultsImporter.class.getName(), errorMessage));
}
} catch (TskCoreException ex) {
String errorMessage = String.format("Could not import report at %s, error updating case database", reportPath);
String errorMessage = NbBundle.getMessage(this.getClass(), "ExternalResultsImporter.importReports.errMsg2.text", reportPath);
ExternalResultsImporter.logger.log(Level.SEVERE, errorMessage, ex);
this.errors.add(new ErrorInfo(ExternalResultsImporter.class.getName(), errorMessage, ex));
}
@ -213,7 +226,7 @@ public final class ExternalResultsImporter {
if (!files.isEmpty()) {
file = files.get(0);
if (files.size() > 1) {
String errorMessage = String.format("Parent file path %s is ambiguous, using first file found", filePath);
String errorMessage = NbBundle.getMessage(this.getClass(), "ExternalResultsImporter.findFileInCaseDatabase.errMsg1.text", filePath);
this.recordError(errorMessage);
}
}
@ -230,12 +243,14 @@ public final class ExternalResultsImporter {
Path pathRelative = pathBase.relativize(path);
relativePath = pathRelative.toString();
} catch (IllegalArgumentException ex) {
String errorMessage = String.format("Did not convert %s to relative path, not in a subdirectory of case directory %s",
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsImporter.getPathRelativeToCaseFolder.errMsg1.text",
localPath, caseDirectoryPath);
this.recordError(errorMessage, ex);
}
} else {
String errorMessage = String.format("Expected %s to be an absolute path to a file in a subdirectory of case directory %s",
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsImporter.getPathRelativeToCaseFolder.errMsg2.text",
localPath, caseDirectoryPath);
this.recordError(errorMessage);
}

View File

@ -22,6 +22,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.ErrorInfo;
import org.sleuthkit.autopsy.coreutils.XMLUtil;
import org.sleuthkit.datamodel.Content;
@ -115,7 +117,7 @@ public final class ExternalResultsXMLParser implements ExternalResultsParser {
/**
* Constructor.
*
* @param importFilePath Full path of the results file to be parsed.
* @param resultsFilePath Full path of the results file to be parsed.
*/
public ExternalResultsXMLParser(Content dataSource, String resultsFilePath) {
this.dataSource = dataSource;
@ -140,12 +142,14 @@ public final class ExternalResultsXMLParser implements ExternalResultsParser {
parseArtifacts(rootElem);
parseReports(rootElem);
} else {
String errorMessage = String.format("Did not find %s root element of %s", TagNames.ROOT_ELEM.toString(), this.resultsFilePath);
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsXMLParser.parse.errMsg1.text",
TagNames.ROOT_ELEM.toString(), this.resultsFilePath);
recordError(errorMessage);
}
}
} catch (Exception ex) {
String errorMessage = String.format("Error parsing %s", this.resultsFilePath);
String errorMessage = NbBundle.getMessage(this.getClass(), "ExternalResultsXMLParser.parse.errMsg2.text", this.resultsFilePath);
recordError(errorMessage, ex);
}
return this.resultsData;
@ -220,7 +224,8 @@ public final class ExternalResultsXMLParser implements ExternalResultsParser {
}
final String value = valueElem.getTextContent();
if (value.isEmpty()) {
String errorMessage = String.format("Found %s element that has no content in %s",
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsXMLParser.parseArtifactAttributes.errMsg1.text",
TagNames.VALUE_ELEM.toString(), this.resultsFilePath);
recordError(errorMessage);
continue;
@ -246,7 +251,8 @@ public final class ExternalResultsXMLParser implements ExternalResultsParser {
&& !valueType.equals(AttributeValues.VALUE_TYPE_DOUBLE.toString())
&& !valueType.equals(AttributeValues.VALUE_TYPE_INT32.toString())
&& !valueType.equals(AttributeValues.VALUE_TYPE_INT64.toString())) {
String errorMessage = String.format("Found unrecognized value %s for %s attribute of %s element",
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsXMLParser.parseAttributeValueType.errMsg1.text",
valueType,
AttributeNames.TYPE_ATTR.toString(),
TagNames.VALUE_ELEM.toString());
@ -285,7 +291,7 @@ public final class ExternalResultsXMLParser implements ExternalResultsParser {
private String getElementAttributeValue(Element element, String attributeName) {
final String attributeValue = element.getAttribute(attributeName);
if (attributeValue.isEmpty()) {
logger.log(Level.SEVERE, "Found {0} element missing {1} attribute in {2}", new Object[]{
logger.log(Level.SEVERE, "Found {0} element missing {1} attribute in {2}", new Object[]{ //NON-NLS
element.getTagName(),
attributeName,
this.resultsFilePath});
@ -299,14 +305,15 @@ public final class ExternalResultsXMLParser implements ExternalResultsParser {
if (childElement != null) {
content = childElement.getTextContent();
if (content.isEmpty()) {
String errorMessage = String.format("Found %s element with %s child element that has no content in %s",
String errorMessage = NbBundle.getMessage(this.getClass(),
"ExternalResultsXMLParser.getChildElementContent.errMsg1.text",
parentElement.getTagName(),
childElementTagName,
this.resultsFilePath);
this.recordError(errorMessage);
}
} else if (required) {
String errorMessage = String.format("Found %s element missing %s child element in %s",
String errorMessage = NbBundle.getMessage(this.getClass(), "ExternalResultsXMLParser.getChildElementContent.errMsg2.text",
parentElement.getTagName(),
childElementTagName,
this.resultsFilePath);
@ -321,7 +328,7 @@ public final class ExternalResultsXMLParser implements ExternalResultsParser {
if (childNodes.getLength() > 0) {
childElem = (Element) childNodes.item(0);
if (childNodes.getLength() > 1) {
String errorMessage = String.format("Found multiple %s child elements for %s element in %s, ignoring all but first occurrence",
String errorMessage = NbBundle.getMessage(this.getClass(), "ExternalResultsXMLParser.getChildElement.errMsg1.text",
childElementTagName,
parentElement.getTagName(),
this.resultsFilePath);

View File

@ -71,3 +71,9 @@ IngestJobConfigurationPanel.descriptionLabel.text=
IngestProgressSnapshotDialog.title.text=Ingest Task Progress Snapshots
IngestProgressSnapshotPanel.refreshButton.text=Refresh
IngestProgressSnapshotPanel.closeButton.text=Close
IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.threadID=Thread ID
IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.dataSource=Data Source
IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.ingestModule=Ingest Module
IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.file=File
IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.startTime=Start Time
IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.elapsedTime=Elapsed Time (H\:M\:S)

View File

@ -63,8 +63,8 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
private MessageTableModel tableModel;
private MessageTableRenderer renderer;
private IngestMessageMainPanel mainPanel;
private static Font visitedFont = new Font("Arial", Font.PLAIN, 12);
private static Font notVisitedFont = new Font("Arial", Font.BOLD, 12);
private static Font visitedFont = new Font("Arial", Font.PLAIN, 12); //NON-NLS
private static Font notVisitedFont = new Font("Arial", Font.BOLD, 12); //NON-NLS
private static Color ERROR_COLOR = new Color(255, 90, 90);
private volatile int lastRowSelected = -1;
private volatile long totalMessages = 0;
@ -132,7 +132,7 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
jScrollPane1.setPreferredSize(new java.awt.Dimension(32767, 32767));
messageTable.setBackground(new java.awt.Color(221, 221, 235));
messageTable.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
messageTable.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N NON-NLS
messageTable.setModel(tableModel);
messageTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
messageTable.setAutoscrolls(false);

View File

@ -67,21 +67,21 @@ final class IngestModuleFactoryLoader {
}
// Kick out the sample module factories.
moduleFactoriesByClass.remove("org.sleuthkit.autopsy.examples.SampleIngestModuleFactory");
moduleFactoriesByClass.remove("org.sleuthkit.autopsy.examples.SampleExecutableIngestModuleFactory");
moduleFactoriesByClass.remove("org.sleuthkit.autopsy.examples.SampleIngestModuleFactory"); //NON-NLS
moduleFactoriesByClass.remove("org.sleuthkit.autopsy.examples.SampleExecutableIngestModuleFactory"); //NON-NLS
// Do the core ingest module ordering hack described above.
ArrayList<String> coreModuleOrdering = new ArrayList<String>() {
{
add("org.sleuthkit.autopsy.recentactivity.RecentActivityExtracterModuleFactory");
add("org.sleuthkit.autopsy.ewfverify.EwfVerifierModuleFactory");
add("org.sleuthkit.autopsy.hashdatabase.HashLookupModuleFactory");
add("org.sleuthkit.autopsy.modules.filetypeid.FileTypeIdModuleFactory");
add("org.sleuthkit.autopsy.modules.sevenzip.ArchiveFileExtractorModuleFactory");
add("org.sleuthkit.autopsy.modules.exif.ExifParserModuleFactory");
add("org.sleuthkit.autopsy.keywordsearch.KeywordSearchModuleFactory");
add("org.sleuthkit.autopsy.thunderbirdparser.EmailParserModuleFactory");
add("org.sleuthkit.autopsy.modules.fileextmismatch.FileExtMismatchDetectorModuleFactory");
add("org.sleuthkit.autopsy.recentactivity.RecentActivityExtracterModuleFactory"); //NON-NLS
add("org.sleuthkit.autopsy.ewfverify.EwfVerifierModuleFactory"); //NON-NLS
add("org.sleuthkit.autopsy.hashdatabase.HashLookupModuleFactory"); //NON-NLS
add("org.sleuthkit.autopsy.modules.filetypeid.FileTypeIdModuleFactory"); //NON-NLS
add("org.sleuthkit.autopsy.modules.sevenzip.ArchiveFileExtractorModuleFactory"); //NON-NLS
add("org.sleuthkit.autopsy.modules.exif.ExifParserModuleFactory"); //NON-NLS
add("org.sleuthkit.autopsy.keywordsearch.KeywordSearchModuleFactory"); //NON-NLS
add("org.sleuthkit.autopsy.thunderbirdparser.EmailParserModuleFactory"); //NON-NLS
add("org.sleuthkit.autopsy.modules.fileextmismatch.FileExtMismatchDetectorModuleFactory"); //NON-NLS
}
};
List<IngestModuleFactory> orderedModuleFactories = new ArrayList<>();

View File

@ -26,6 +26,7 @@ import javax.swing.JDialog;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumn;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.openide.util.NbBundle;
import org.sleuthkit.datamodel.AbstractFile;
public class IngestProgressSnapshotPanel extends javax.swing.JPanel {
@ -79,7 +80,18 @@ public class IngestProgressSnapshotPanel extends javax.swing.JPanel {
private class SnapshotsTableModel extends AbstractTableModel {
private final String[] columnNames = {"Thread ID", "Data Source", "Ingest Module", "File", "Start Time", "Elapsed Time (H:M:S)"};
private final String[] columnNames = {NbBundle.getMessage(this.getClass(),
"IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.threadID"),
NbBundle.getMessage(this.getClass(),
"IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.dataSource"),
NbBundle.getMessage(this.getClass(),
"IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.ingestModule"),
NbBundle.getMessage(this.getClass(),
"IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.file"),
NbBundle.getMessage(this.getClass(),
"IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.startTime"),
NbBundle.getMessage(this.getClass(),
"IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.elapsedTime")};
private List<IngestTask.ProgressSnapshot> snapshots;
private SnapshotsTableModel() {

View File

@ -5,5 +5,4 @@ OpenIDE-Module-Long-Description=\
OpenIDE-Module-Name=ExifParser
OpenIDE-Module-Short-Description=Exif metadata ingest module
ExifParserFileIngestModule.moduleName.text=Exif Parser
ExifParserFileIngestModule.getName.text=Exif Image Parser
ExifParserFileIngestModule.getDesc.text=Ingests JPEG files and retrieves their EXIF metadata.

View File

@ -5,5 +5,4 @@ OpenIDE-Module-Long-Description=\
OpenIDE-Module-Name=Exif\u30D1\u30FC\u30B5
OpenIDE-Module-Short-Description=Exif\u30E1\u30BF\u30C7\u30FC\u30BF\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB
ExifParserFileIngestModule.moduleName.text=Exif\u30D1\u30FC\u30B5
ExifParserFileIngestModule.getName.text=Exif\u30A4\u30E1\u30FC\u30B8\u30D1\u30FC\u30B5
ExifParserFileIngestModule.getDesc.text=JPEG\u30D5\u30A1\u30A4\u30EB\u3092\u51E6\u7406\u3057\u3001\u305D\u308C\u3089\u306EEXIF\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002

View File

@ -191,3 +191,9 @@ ReportWizardPanel1.finishButton.text=Finish
ReportWizardPanel2.finishButton.text=Finish
ReportWizardPanel2.nextButton.text=Next >
ReportHTML.writeSum.noCaseNum=<i>No case number</i>
ReportBodyFile.generateReport.srcModuleName.text=TSK Body File
ReportExcel.endReport.srcModuleName.text=Excel Report
ReportHTML.writeIndex.srcModuleName.text=HTML Report
ReportKML.genReport.srcModuleName.text=KML Report
ReportGenerator.artTableColHdr.extension.text=Extension
ReportGenerator.artTableColHdr.mimeType.text=MIME Type

View File

@ -152,7 +152,10 @@ import org.sleuthkit.datamodel.*;
if (out != null) {
out.flush();
out.close();
Case.getCurrentCase().addReport(reportPath, "TSK Body File", "");
Case.getCurrentCase().addReport(reportPath,
NbBundle.getMessage(this.getClass(),
"ReportBodyFile.generateReport.srcModuleName.text"), "");
}
} catch (IOException ex) {
logger.log(Level.WARNING, "Could not flush and close the BufferedWriter.", ex); //NON-NLS

View File

@ -112,7 +112,8 @@ import org.sleuthkit.datamodel.TskCoreException;
try {
out = new FileOutputStream(reportPath);
wb.write(out);
Case.getCurrentCase().addReport(reportPath, "Excel Report", "");
Case.getCurrentCase().addReport(reportPath, NbBundle.getMessage(this.getClass(),
"ReportExcel.endReport.srcModuleName.text"), "");
} catch (IOException ex) {
logger.log(Level.SEVERE, "Failed to write Excel report.", ex); //NON-NLS
} catch (TskCoreException ex) {

View File

@ -1318,8 +1318,8 @@ import org.sleuthkit.datamodel.TskData;
case TSK_EXT_MISMATCH_DETECTED:
columnHeaders = new ArrayList<>(Arrays.asList(new String[] {
NbBundle.getMessage(this.getClass(), "ReportGenerator.artTableColHdr.file"),
"Extension",
"MIME Type",
NbBundle.getMessage(this.getClass(), "ReportGenerator.artTableColHdr.extension.text"),
NbBundle.getMessage(this.getClass(), "ReportGenerator.artTableColHdr.mimeType.text"),
NbBundle.getMessage(this.getClass(), "ReportGenerator.artTableColHdr.path")}));
break;
default:

View File

@ -803,7 +803,7 @@ import org.sleuthkit.datamodel.TskData.TSK_DB_FILES_TYPE_ENUM;
*/
private void writeIndex() {
Writer indexOut = null;
String indexFilePath = path + "index.html";
String indexFilePath = path + "index.html"; //NON-NLS
try {
indexOut = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(indexFilePath), "UTF-8")); //NON-NLS
StringBuilder index = new StringBuilder();
@ -821,7 +821,8 @@ import org.sleuthkit.datamodel.TskData.TSK_DB_FILES_TYPE_ENUM;
index.append("</frameset>\n"); //NON-NLS
index.append("</html>"); //NON-NLS
indexOut.write(index.toString());
Case.getCurrentCase().addReport(indexFilePath, "HTML Report", "");
Case.getCurrentCase().addReport(indexFilePath, NbBundle.getMessage(this.getClass(),
"ReportHTML.writeIndex.srcModuleName.text"), "");
} catch (IOException ex) {
logger.log(Level.SEVERE, "Error creating Writer for index.html: {0}", ex); //NON-NLS
} catch (TskCoreException ex) {

View File

@ -256,7 +256,8 @@ class ReportKML implements GeneralReportModule {
FileOutputStream writer = new FileOutputStream(reportPath);
outputter.output(kmlDocument, writer);
writer.close();
Case.getCurrentCase().addReport(reportPath, "KML Report", "");
Case.getCurrentCase().addReport(reportPath, NbBundle.getMessage(this.getClass(),
"ReportKML.genReport.srcModuleName.text"), "");
} catch (IOException ex) {
logger.log(Level.WARNING, "Could not write the KML file.", ex); //NON-NLS
} catch (TskCoreException ex) {

View File

@ -56,7 +56,6 @@ AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=Invalid query syntax.
AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress
AbstractKeywordSearchPerformer.search.ingestInProgressBody=<html>Keyword Search Ingest is currently running.<br />Not all files have been indexed and this search might yield incomplete results.<br />Do you want to proceed with this search anyway?</html>
AbstractKeywordSearchPerformer.search.emptyKeywordErrorBody=Keyword list is empty, please add at least one keyword to the list
AbstractKeywordSearchPerformer.search.pleaseEnterKeywordBody=Please enter a keyword to search for
AbstractKeywordSearchPerformer.search.noFilesInIdxMsg=<html>No files are in index yet. <br />Try again later. Index is updated every {0} minutes.</html>
AbstractKeywordSearchPerformer.search.noFilesIdxdMsg=<html>No files were indexed.<br />Re-ingest the image with the Keyword Search Module enabled. </html>
ExtractedContentPanel.setMarkup.panelTxt=<span style\='font-style\:italic'>Loading text... Please wait</span>
@ -195,7 +194,6 @@ KeywordSearchListsEncase.save2.exception.msg=Not supported yet.
KeywordSearchListsEncase.encaseMetaType.exception.msg=Unsupported EncaseMetaType\: {0}
KeywordSearchListsManagementPanel.getColName.text=Name
KeywordSearchListsManagementPanel.setValueAt.exception.msg=Editing of cells is not supported
KeywordSearchListsViewerPanel.getQueryText.exception.msg=Not supported for multi-word queries.
KeywordSearchOptionsPanelController.moduleErr=Module Error
KeywordSearchOptionsPanelController.moduleErr.msg1=A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.
KeywordSearchOptionsPanelController.moduleErr.msg2=A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.
@ -280,7 +278,6 @@ KeywordSearchListsAbstract.writeLists.errMsg2.msg=A module caused an error liste
KeywordSearchListsAbstract.deleteList.errMsg1.msg=A module caused an error listening to KeywordSearchListsAbstract updates. See log to determine which module. Some data could be incomplete.
KeywordSearchListsManagementPanel.newKeywordListDescription=Keyword List <{0}> 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).
KeywordSearchListsManagementPanel.newKeywordListDescription2=Keyword List <{0}> already exists, do you want to replace it?
DropdownSearchPanelgetQueryList.exception.msg=No list for single-keyword search
KeywordSearchModuleFactory.getIngestJobSettingsPanel.exception.msg=Expected settings argument to be instanceof KeywordSearchJobSettings
KeywordSearchModuleFactory.createFileIngestModule.exception.msg=Expected settings argument to be instanceof KeywordSearchJobSettings
SearchRunner.Searcher.done.err.msg=Error performing keyword search

View File

@ -44,7 +44,6 @@ AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=\u30b7\u30f3\u30bf\u30
AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3092\u5b9f\u884c\u4e2d
AbstractKeywordSearchPerformer.search.ingestInProgressBody=<html>\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3092\u5b9f\u884c\u4e2d<br />\u5168\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u691c\u7d22\u7d50\u679c\u304c\u4e0d\u5b8c\u5168\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<br />\u3053\u306e\u691c\u7d22\u3092\u5b9f\u884c\u3057\u307e\u3059\u304b\uff1f</html>
AbstractKeywordSearchPerformer.search.emptyKeywordErrorBody=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u304c\u7a7a\u767d\u3067\u3059\u3002\u6700\u4f4e\uff11\u3064\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u3066\u4e0b\u3055\u3044\u3002
AbstractKeywordSearchPerformer.search.pleaseEnterKeywordBody=\u691c\u7d22\u3059\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044
AbstractKeywordSearchPerformer.search.noFilesInIdxMsg=<html>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u307e\u3060\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002<br />\u3057\u3070\u3089\u304f\u3057\u3066\u304b\u3089\u3001\u518d\u5ea6\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u3000{0}\u3000\u5206\u6bce\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002</html>
AbstractKeywordSearchPerformer.search.noFilesIdxdMsg=<html>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002<br />\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u5316\u3057\u3066\u30a4\u30e1\u30fc\u30b8\u3092\u518d\u5ea6\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3002</html>
ExtractedContentPanel.setMarkup.panelTxt=<span style\='font-style\:italic'>\u30c6\u30ad\u30b9\u30c8\u30ed\u30fc\u30c9\u4e2d\u3002\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...</span>
@ -177,7 +176,6 @@ KeywordSearchListsEncase.save2.exception.msg=\u307e\u3060\u30b5\u30dd\u30fc\u30c
KeywordSearchListsEncase.encaseMetaType.exception.msg=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044EncaseMetaType\uff1a{0}
KeywordSearchListsManagementPanel.getColName.text=\u540d\u524d
KeywordSearchListsManagementPanel.setValueAt.exception.msg=\u30bb\u30eb\u306e\u7de8\u96c6\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
KeywordSearchListsViewerPanel.getQueryText.exception.msg=\u30de\u30eb\u30c1\u30ef\u30fc\u30c9\u30af\u30a8\u30ea\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
KeywordSearchOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc
KeywordSearchOptionsPanelController.moduleErr.msg1=KeywordSearchOptionsPanelController\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u78ba\u8a8d\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u8d77\u3053\u3057\u307e\u3057\u305f\u3002\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u30ed\u30b0\u3067\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
KeywordSearchOptionsPanelController.moduleErr.msg2=KeywordSearchOptionsPanelController\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u78ba\u8a8d\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u8d77\u3053\u3057\u307e\u3057\u305f\u3002\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u30ed\u30b0\u3067\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
@ -272,7 +270,6 @@ KeywordSearchListsAbstract.writeLists.errMsg1.msg=KeywordSearchListsAbstract\u30
KeywordSearchListsAbstract.writeLists.errMsg2.msg=KeywordSearchListsAbstract\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u78ba\u8a8d\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u8d77\u3053\u3057\u307e\u3057\u305f\u3002\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u30ed\u30b0\u3067\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
KeywordSearchListsManagementPanel.newKeywordListDescription=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8<{0}>\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30ea\u30b9\u30c8\u3068\u3057\u3066\u5b58\u5728\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f7f\u7528\u4e2d\u306e\u307f\u3053\u306e\u30ea\u30b9\u30c8\u3092\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b\uff1f\uff08\u3053\u306e\u5909\u66f4\u306f\u7d99\u7d9a\u3055\u308c\u307e\u305b\u3093\uff09
KeywordSearchListsManagementPanel.newKeywordListDescription2=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8<{0}>\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b\uff1f
DropdownSearchPanelgetQueryList.exception.msg=\u30b7\u30f3\u30b0\u30eb\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u306e\u30ea\u30b9\u30c8\u306f\u5b58\u5728\u3057\u307e\u305b\u3093
KeywordSearchModuleFactory.createFileIngestModule.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof KeywordSearchJobSettings
KeywordSearchModuleFactory.getIngestJobSettingsPanel.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof KeywordSearchJobSettings
SearchRunner.Searcher.done.err.msg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3092\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f

View File

@ -97,3 +97,4 @@ SearchEngineURLQueryAnalyzer.toString=Name\: {0}\
SearchEngineURLQueryAnalyzer.parentModuleName.noSpace=RecentActivity
SearchEngineURLQueryAnalyzer.parentModuleName=Recent Activity
SearchEngineURLQueryAnalyzer.init.exception.msg=Unable to find {0}
UsbDeviceIdMapper.parseAndLookup.text=Product\: {0}

View File

@ -27,10 +27,10 @@ ExtractIE.parentModuleName.noSpace=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u3
ExtractIE.parentModuleName=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3
ExtractIE.getURLFromIEBmkFile.errMsg={0}\:Internet Explorer\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb{1}\u306e\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
ExtractIE.getURLFromIEBmkFile.errMsg2={0}\:Internet Explorer\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb{1}\u306e\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
ExtractIE.getCookie.errMsg.errGettingFile={0}\:Internet Exploerer cookie\u30d5\u30a1\u30a4\u30eb\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
ExtractIE.getCookie.errMsg.errReadingIECookie={0}\:Internet Exploerer cookie{1}\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
ExtractIE.getCookie.errMsg.errGettingFile={0}\:Internet Explorer cookie\u30d5\u30a1\u30a4\u30eb\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
ExtractIE.getCookie.errMsg.errReadingIECookie={0}\:Internet Explorer cookie{1}\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
ExtractIE.getHistory.errMsg.unableToGetHist={0}\:Internet Explorer\u5c65\u6b74\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff1apasco\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f
ExtractIE.getHistory.errMsg.errGettingHistFiles={0}\:Internet Exploerer\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
ExtractIE.getHistory.errMsg.errGettingHistFiles={0}\:Internet Explorer\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
ExtractIE.getHistory.errMsg.noHistFiles=Internet Explorer\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
ExtractIE.getHistory.errMsg.errWriteFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
ExtractIE.getHistory.errMsg.errProcHist={0}\: Internet Explorer\u5c65\u6b74\u306e\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002

View File

@ -34,6 +34,8 @@ import java.util.HashMap;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
/**
@ -82,7 +84,8 @@ class UsbDeviceIdMapper {
key = vID + "0000";
if (devices.containsKey(key)) {
USBInfo info = devices.get(key);
return new USBInfo(info.getVendor(), "Product: " + pID);
return new USBInfo(info.getVendor(),
NbBundle.getMessage(this.getClass(), "UsbDeviceIdMapper.parseAndLookup.text", pID));
}
return new USBInfo(null, null);

View File

@ -13,7 +13,6 @@ MboxParser.handleAttch.failedWriteToDisk=Failed to extract attachment to disk\:
PstParser.parse.errMsg.failedToParseNMsgs=Failed to extract {0} email messages.
PstParser.extractAttch.errMsg.failedToExtractToDisk=Failed to extract attachment to disk\: {0}
ThunderbirdMboxFileIngestModule.moduleName=Email Parser
ThunderbirdMboxFileIngestModule.hashDbModuleName=Hash Lookup
ThunderbirdMboxFileIngestModule.processPst.errMsg.outOfDiskSpace=Out of disk space. Can't copy {0} to parse.
ThunderbirdMboxFileIngestModule.encryptionFileLevel=File-level Encryption
ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg=Error while processing {0}

View File

@ -12,7 +12,6 @@ MboxParser.handleAttch.failedWriteToDisk=\u30A2\u30BF\u30C3\u30C1\u30E1\u30F3\u3
PstParser.parse.errMsg.failedToParseNMsgs={0}\u500B\u306EE\u30E1\u30FC\u30EB\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u62BD\u51FA\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002
PstParser.extractAttch.errMsg.failedToExtractToDisk=\u30A2\u30BF\u30C3\u30C1\u30E1\u30F3\u30C8\u3092\u30C7\u30A3\u30B9\u30AF\: {0}\u3078\u62BD\u51FA\u3059\u308B\u306E\u306B\u5931\u6557\u3057\u307E\u3057\u305F
ThunderbirdMboxFileIngestModule.moduleName=E\u30E1\u30FC\u30EB\u30D1\u30FC\u30B5
ThunderbirdMboxFileIngestModule.hashDbModuleName=\u30CF\u30C3\u30B7\u30E5\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7
ThunderbirdMboxFileIngestModule.processPst.errMsg.outOfDiskSpace=\u30C7\u30A3\u30B9\u30AF\u9818\u57DF\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002\u30D1\u30FC\u30B9\u3059\u308B\u70BA\u306B{0}\u3092\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093\u3002
ThunderbirdMboxFileIngestModule.encryptionFileLevel=\u30D5\u30A1\u30A4\u30EB\u30EC\u30D9\u30EB\u6697\u53F7\u5316
ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg={0}\u306E\u51E6\u7406\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F