numberOfFileIngestThreadsComboBox;
private javax.swing.JLabel restartRequiredLabel;
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties
index 752627c572..a595cbc1e5 100644
--- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties
+++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties
@@ -127,16 +127,16 @@ FXVideoPanel.pauseButton.infoLabel.playbackErr=Unable to play video.
GstVideoPanel.progress.infoLabel.updateErr=Error updating video progress\: {0}
GstVideoPanel.ExtractMedia.progress.buffering=Buffering {0}
AboutWindowPanel.actVerboseLogging.text=Activate verbose logging
-AutopsyOptionsPanel.jLabel4.text=Number of threads to use for file ingest:
AutopsyOptionsPanel.viewsHideKnownCB.text=Views area
AutopsyOptionsPanel.dataSourcesHideKnownCB.text=Data Sources area (the directory hierarchy)
-AutopsyOptionsPanel.jLabel3.text=Hide known files (i.e. those in the NIST NSRL) in the:
AutopsyOptionsPanel.useBestViewerRB.toolTipText=For example, change from Hex to Media when a JPEG is selected.
AutopsyOptionsPanel.useBestViewerRB.text=Change to the most specific file viewer
AutopsyOptionsPanel.useGMTTimeRB.text=Use GMT
AutopsyOptionsPanel.useLocalTimeRB.text=Use local time zone
AutopsyOptionsPanel.keepCurrentViewerRB.toolTipText=For example, stay in Hex view when a JPEG is selected.
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=For this computer, a maximum of {0} file ingest threads should be used. Restart required to take effect.
+AutopsyOptionsPanel.jLabelSelectFile.text=When selecting a file:
+AutopsyOptionsPanel.jLabelHideKnownFiles.text=Hide known files (i.e. those in the NIST NSRL) in the:
+AutopsyOptionsPanel.jLabelTimeDisplay.text=When displaying times:
+AutopsyOptionsPanel.jLabelNumThreads.text=Number of threads to use for file ingest:
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties
index 159ab9e542..2ae9e5fab1 100644
--- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties
+++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties
@@ -1,124 +1,124 @@
-CTL_DataContentAction=\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4
+CTL_DataContentAction=\u30c7\u30fc\u30bf\u30b3\u30f3\u30c6\u30f3\u30c4
OptionsCategory_Name_General=Autopsy
-OptionsCategory_Keywords_General=Autopsy\u30AA\u30D7\u30B7\u30E7\u30F3
-CTL_CustomAboutAction=Autopsy\u306B\u3064\u3044\u3066
-CTL_DataContentTopComponent=\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4
-HINT_DataContentTopComponent=\u3053\u308C\u306F\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u3059
-HINT_NodeTableTopComponent=\u3053\u308C\u306F\u30C7\u30FC\u30BF\u7D50\u679C\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u3059
-OpenIDE-Module-Name=\u4E3B\u8981\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8
-DataContentViewerHex.pageLabel.text_1=\u30DA\u30FC\u30B8\uFF1A
+OptionsCategory_Keywords_General=Autopsy\u30aa\u30d7\u30b7\u30e7\u30f3
+CTL_CustomAboutAction=Autopsy\u306b\u3064\u3044\u3066
+CTL_DataContentTopComponent=\u30c7\u30fc\u30bf\u30b3\u30f3\u30c6\u30f3\u30c4
+HINT_DataContentTopComponent=\u3053\u308c\u306f\u30c7\u30fc\u30bf\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3059
+HINT_NodeTableTopComponent=\u3053\u308c\u306f\u30c7\u30fc\u30bf\u7d50\u679c\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3059
+OpenIDE-Module-Name=\u4e3b\u8981\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8
+DataContentViewerHex.pageLabel.text_1=\u30da\u30fc\u30b8\uff1a
DataContentViewerHex.currentPageLabel.text_1=1
DataContentViewerHex.totalPageLabel.text_1=100
-DataContentViewerString.pageLabel.text_1=\u30DA\u30FC\u30B8\uFF1A
+DataContentViewerString.pageLabel.text_1=\u30da\u30fc\u30b8\uff1a
DataContentViewerString.currentPageLabel.text_1=1
DataContentViewerString.totalPageLabel.text_1=100
-DataContentViewerHex.pageLabel2.text=\u30DA\u30FC\u30B8
-DataContentViewerString.pageLabel2.text=\u30DA\u30FC\u30B8
-Format_OperatingSystem_Value={0} \u30D0\u30FC\u30B8\u30E7\u30F3 {1} \u30A2\u30FC\u30AD\u30C6\u30AF\u30C1\u30E3 {2}
+DataContentViewerHex.pageLabel2.text=\u30da\u30fc\u30b8
+DataContentViewerString.pageLabel2.text=\u30da\u30fc\u30b8
+Format_OperatingSystem_Value={0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3 {2}
URL_ON_IMG=http\://www.sleuthkit.org/
-LBL_Close=\u9589\u3058\u308B
-DataContentViewerString.copyMenuItem.text=\u30B3\u30D4\u30FC
-DataContentViewerHex.copyMenuItem.text=\u30B3\u30D4\u30FC
-DataContentViewerString.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
-DataContentViewerHex.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
+LBL_Close=\u9589\u3058\u308b
+DataContentViewerString.copyMenuItem.text=\u30b3\u30d4\u30fc
+DataContentViewerHex.copyMenuItem.text=\u30b3\u30d4\u30fc
+DataContentViewerString.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e
+DataContentViewerHex.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e
DataContentViewerArtifact.totalPageLabel.text=100
-DataContentViewerArtifact.pageLabel2.text=\u7D50\u679C
+DataContentViewerArtifact.pageLabel2.text=\u7d50\u679c
DataContentViewerArtifact.currentPageLabel.text=1
-DataContentViewerArtifact.copyMenuItem.text=\u30B3\u30D4\u30FC
-DataContentViewerArtifact.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
-DataContentViewerArtifact.pageLabel.text=\u7D50\u679C\uFF1A
+DataContentViewerArtifact.copyMenuItem.text=\u30b3\u30d4\u30fc
+DataContentViewerArtifact.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e
+DataContentViewerArtifact.pageLabel.text=\u7d50\u679c\uff1a
AdvancedConfigurationDialog.applyButton.text=OK
-DataContentViewerString.goToPageLabel.text=\u4E0B\u8A18\u306E\u30DA\u30FC\u30B8\u3078\u79FB\u52D5\uFF1A
-DataContentViewerHex.goToPageLabel.text=\u4E0B\u8A18\u306E\u30DA\u30FC\u30B8\u3078\u79FB\u52D5\uFF1A
-DataContentViewerString.languageLabel.text=\u30B9\u30AF\u30EA\u30D7\u30C8\uFF1A
-DataContentViewerString.languageCombo.toolTipText=\u30D0\u30A4\u30CA\u30EA\u30B9\u30C8\u30EA\u30F3\u30B0\u306E\u51E6\u7406\uFF08\u62BD\u51FA\u304A\u3088\u3073\u30C7\u30B3\u30FC\u30C9\uFF09\u306B\u4F7F\u7528\u3059\u308B\u8A00\u8A9E
-DataResultViewerThumbnail.pageLabel.text=\u30DA\u30FC\u30B8\uFF1A
-DataResultViewerThumbnail.pagesLabel.text=\u30DA\u30FC\u30B8\uFF1A
-DataResultViewerThumbnail.imagesLabel.text=\u30A4\u30E1\u30FC\u30B8\uFF1A
+DataContentViewerString.goToPageLabel.text=\u4e0b\u8a18\u306e\u30da\u30fc\u30b8\u3078\u79fb\u52d5\uff1a
+DataContentViewerHex.goToPageLabel.text=\u4e0b\u8a18\u306e\u30da\u30fc\u30b8\u3078\u79fb\u52d5\uff1a
+DataContentViewerString.languageLabel.text=\u30b9\u30af\u30ea\u30d7\u30c8\uff1a
+DataContentViewerString.languageCombo.toolTipText=\u30d0\u30a4\u30ca\u30ea\u30b9\u30c8\u30ea\u30f3\u30b0\u306e\u51e6\u7406\uff08\u62bd\u51fa\u304a\u3088\u3073\u30c7\u30b3\u30fc\u30c9\uff09\u306b\u4f7f\u7528\u3059\u308b\u8a00\u8a9e
+DataResultViewerThumbnail.pageLabel.text=\u30da\u30fc\u30b8\uff1a
+DataResultViewerThumbnail.pagesLabel.text=\u30da\u30fc\u30b8\uff1a
+DataResultViewerThumbnail.imagesLabel.text=\u30a4\u30e1\u30fc\u30b8\uff1a
DataResultViewerThumbnail.imagesRangeLabel.text=-
DataResultViewerThumbnail.pageNumLabel.text=-
-DataResultViewerThumbnail.goToPageLabel.text=\u4E0B\u8A18\u306E\u30DA\u30FC\u30B8\u306B\u79FB\u52D5\uFF1A
-AdvancedConfigurationDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
-DataResultPanel.directoryTablePath.text=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30D1\u30B9
+DataResultViewerThumbnail.goToPageLabel.text=\u4e0b\u8a18\u306e\u30da\u30fc\u30b8\u306b\u79fb\u52d5\uff1a
+AdvancedConfigurationDialog.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb
+DataResultPanel.directoryTablePath.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30d1\u30b9
DataResultPanel.numberMatchLabel.text=0
-DataResultPanel.matchLabel.text=\u7D50\u679C
-MediaViewVideoPanel.pauseButton.text=\u25BA
+DataResultPanel.matchLabel.text=\u7d50\u679c
+MediaViewVideoPanel.pauseButton.text=\u25ba
MediaViewVideoPanel.progressLabel.text=00\:00
-MediaViewVideoPanel.infoLabel.text=\u60C5\u5831
-DataContentViewerArtifact.waitText=\u30C7\u30FC\u30BF\u3092\u53D6\u8FBC\u307F\u304A\u3088\u3073\u6E96\u5099\u4E2D\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u4E0B\u3055\u3044\u2026
-DataContentViewerArtifact.errorText=\u7D50\u679C\u306E\u53D6\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-DataContentViewerArtifact.title=\u7D50\u679C
-DataContentViewerArtifact.toolTip=\u30D5\u30A1\u30A4\u30EB\u306B\u95A2\u9023\u3059\u308B\u7D50\u679C\u3092\u8868\u793A\u3057\u307E\u3059
-DataContentViewerHex.goToPageTextField.msgDlg=\uFF11\u304B\u3089 {0}\u306E\u9593\u306E\u6709\u52B9\u306A\u30DA\u30FC\u30B8\u6570\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044
-DataContentViewerHex.goToPageTextField.err=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u6570
-DataContentViewerHex.setDataView.errorText=\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8{0}-{1}\u306F\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF09
+MediaViewVideoPanel.infoLabel.text=\u60c5\u5831
+DataContentViewerArtifact.waitText=\u30c7\u30fc\u30bf\u3092\u53d6\u8fbc\u307f\u304a\u3088\u3073\u6e96\u5099\u4e2d\u3002\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u4e0b\u3055\u3044\u2026
+DataContentViewerArtifact.errorText=\u7d50\u679c\u306e\u53d6\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
+DataContentViewerArtifact.title=\u7d50\u679c
+DataContentViewerArtifact.toolTip=\u30d5\u30a1\u30a4\u30eb\u306b\u95a2\u9023\u3059\u308b\u7d50\u679c\u3092\u8868\u793a\u3057\u307e\u3059
+DataContentViewerHex.goToPageTextField.msgDlg=\uff11\u304b\u3089 {0}\u306e\u9593\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u6570\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044
+DataContentViewerHex.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u6570
+DataContentViewerHex.setDataView.errorText=\uff08\u30aa\u30d5\u30bb\u30c3\u30c8{0}-{1}\u306f\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f\uff09
DataContentViewerHex.title=HEX
-DataContentViewerHex.toolTip=\u30D0\u30A4\u30CA\u30EA\u30B3\u30F3\u30C6\u30F3\u30C4\u3092HEX\u30D5\u30A1\u30A4\u30EB\u3068\u3057\u3066\u8868\u793A\u3057\u3001ASCII\u3068\u3057\u3066\u8868\u793A\u3067\u304D\u308B\u30D0\u30A4\u30C8\u306F\u53F3\u5074\u306B\u8868\u793A\u3057\u307E\u3059\u3002
-DataContentViewerMedia.title=\u30E1\u30C7\u30A3\u30A2
-DataContentViewerMedia.toolTip=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30DE\u30EB\u30C1\u30E1\u30C7\u30A3\u30A2\u30D5\u30A1\u30A4\u30EB\uFF08\u30A4\u30E1\u30FC\u30B8\u3001\u30D3\u30C7\u30AA\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\uFF09\u3092\u8868\u793A\u3057\u307E\u3059\u3002
-DataContentViewerString.goToPageTextField.msgDlg=\uFF11\u304B\u3089{0}\u306E\u9593\u306E\u6709\u52B9\u306A\u30DA\u30FC\u30B8\u6570\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044
-DataContentViewerString.goToPageTextField.err=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u6570
-DataContentViewerString.setDataView.errorText=\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8{0}-{1}\u306F\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF09
-DataContentViewerString.title=\u30B9\u30C8\u30EA\u30F3\u30B0
-DataContentViewerString.toolTip=\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u62BD\u51FA\u3055\u308C\u305FASCII\u304A\u3088\u3073\u30E6\u30CB\u30B3\u30FC\u30C9\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002
-DataResultPanel.dummyNodeDisplayName=\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u2026
-DataResultViewerTable.firstColLbl=\u540D\u524D
-DataResultViewerTable.illegalArgExc.noChildFromParent=\u6307\u5B9A\u3055\u308C\u305F\u30DA\u30A2\u30EC\u30F3\u30C8\u304B\u3089\u30C1\u30E3\u30A4\u30EB\u30C9\u30CE\u30FC\u30C9\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002
-DataResultViewerTable.illegalArgExc.childWithoutPropertySet=\u30C1\u30E3\u30A4\u30EB\u30C9\u30CE\u30FC\u30C9\u306F\u901A\u5E38\u306EPropertySet\u3092\u6301\u3063\u3066\u3044\u307E\u305B\u3093\u3002
-DataResultViewerTable.title=\u30C6\u30FC\u30D6\u30EB
-DataResultViewerTable.dummyNodeDisplayName=\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u2026
-DataResultViewerThumbnail.title=\u30B5\u30E0\u30CD\u30A4\u30EB
-DataResultViewerThumbnail.goToPageTextField.msgDlg=\uFF11\u304B\u3089{0}\u306E\u9593\u306E\u6709\u52B9\u306A\u30DA\u30FC\u30B8\u6570\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044
-DataResultViewerThumbnail.goToPageTextField.err=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u6570
-DataResultViewerThumbnail.genThumbs=\u30B5\u30E0\u30CD\u30A4\u30EB\u3092\u4F5C\u6210\u4E2D\u2026
-DataResultViewerThumbnail.pageNumbers.curOfTotal={0}\uFF0F{1}\u3064\u76EE
-FXVideoPanel.mediaPane.infoLabel=\u524A\u9664\u3055\u308C\u305F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5916\u90E8\u30D7\u30EC\u30FC\u30E4\u30FC\u3092\u4F7F\u7528\u3057\u3066\u4E0B\u3055\u3044\u3002
-FXVideoPanel.progress.bufferingFile={0}\u3092\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0
-FXVideoPanel.progressLabel.buffering=\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u4E2D\u2026
-FXVideoPanel.media.unsupportedFormat=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u3059\u3002
-GeneralOptionsPanelController.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
-GeneralOptionsPanelController.moduleErr.msg=GeneralOptionsPanelController\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
-GstVideoPanel.cannotProcFile.err=\u30E1\u30C7\u30A4\u30A2\u30D7\u30EC\u30FC\u30E4\u30FC\u304C\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u51E6\u7406\u3067\u304D\u307E\u305B\u3093\u3002
-GstVideoPanel.initGst.gstException.msg=\u30AA\u30FC\u30C7\u30A3\u30AA\uFF0F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u304A\u3088\u3073\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u306B\u4F7F\u7528\u3059\u308BGStreamer\u306E\u521D\u671F\u5316\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D3\u30C7\u30AA\u304A\u3088\u3073\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u304C\u7121\u52B9\u5316\u3055\u308C\u307E\u3059\u3002
-GstVideoPanel.initGst.otherException.msg=\u30AA\u30FC\u30C7\u30A3\u30AA\uFF0F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u304A\u3088\u3073\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u306B\u4F7F\u7528\u3059\u308BGStreamer\u306E\u521D\u671F\u5316\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D3\u30C7\u30AA\u304A\u3088\u3073\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u304C\u7121\u52B9\u5316\u3055\u308C\u307E\u3059\u3002
-GstVideoPanel.setupVideo.infoLabel.text=\u524A\u9664\u3055\u308C\u305F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5916\u90E8\u30D7\u30EC\u30FC\u30E4\u30FC\u3092\u4F7F\u7528\u3057\u3066\u4E0B\u3055\u3044\u3002
-GstVideoPanel.exception.problemFile.msg=\u30D5\u30A1\u30A4\u30EB({0})\u304B\u3089\u306F\u30D5\u30EC\u30FC\u30E0\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002
-GstVideoPanel.exception.problemPlay.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u9577\u3055\u3092\u78BA\u8A8D\u4E2D\u306B\u518D\u751F\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
-LBL_Description=\n \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\uFF1A {0} ({9})
Sleuth Kit\u30D0\u30FC\u30B8\u30E7\u30F3\uFF1A {7}
Netbeans RCP\u30D3\u30EB\u30C9\: {8}
Java\: {1}; {2}
\u30B7\u30B9\u30C6\u30E0\uFF1A {3}; {4}; {5}
\u30E6\u30FC\u30B6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D {6}
-LBL_Copyright=Autopsy™\u306FSleuth Kit™\u3084\u305D\u306E\u4ED6\u30C4\u30FC\u30EB\u3092\u57FA\u306B\u3057\u305F\u30C7\u30B8\u30BF\u30EB\u30FB\u30D5\u30A9\u30EC\u30F3\u30B8\u30C3\u30AF\u30FB\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u3059\u3002
Copyright © 2003-2013. \u8A73\u7D30\u306F\u4E0B\u8A18\u3092\u3054\u89A7\u4E0B\u3055\u3044\u3002
http\://www.sleuthkit.org.
-GstVideoPanel.exception.problemPause.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u9577\u3055\u3092\u78BA\u8A8D\u4E2D\u306B\u4E00\u6642\u505C\u6B62\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
-GstVideoPanel.exception.problemPauseCaptFrame.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u4E2D\u306B\u4E00\u6642\u505C\u6B62\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
-GstVideoPanel.exception.problemPlayCaptFrame.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u4E2D\u306B\u518D\u751F\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
-GstVideoPanel.exception.problemStopCaptFrame.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u4E2D\u306B\u505C\u6B62\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
-GstVideoPanel.progress.buffering=\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u4E2D\u2026
-GstVideoPanel.progressLabel.bufferingErr=\u30D5\u30A1\u30A4\u30EB\u306E\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u30A8\u30E9\u30FC
-MediaViewImagePanel.imgFileTooLarge.msg=\u30A4\u30E1\u30FC\u30B8\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u5927\u304D\u3059\u304E\u3067\u3059\uFF09\uFF1A {0}
-ProductInformationPanel.verbLoggingEnabled.text=Verbose\u30ED\u30B0\u304C\u6709\u52B9\u3067\u3059
-ProductInformationPanel.propertyUnknown.text=\u4E0D\u660E
+DataContentViewerHex.toolTip=\u30d0\u30a4\u30ca\u30ea\u30b3\u30f3\u30c6\u30f3\u30c4\u3092HEX\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u8868\u793a\u3057\u3001ASCII\u3068\u3057\u3066\u8868\u793a\u3067\u304d\u308b\u30d0\u30a4\u30c8\u306f\u53f3\u5074\u306b\u8868\u793a\u3057\u307e\u3059\u3002
+DataContentViewerMedia.title=\u30e1\u30c7\u30a3\u30a2
+DataContentViewerMedia.toolTip=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30de\u30eb\u30c1\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\uff08\u30a4\u30e1\u30fc\u30b8\u3001\u30d3\u30c7\u30aa\u3001\u30aa\u30fc\u30c7\u30a3\u30aa\uff09\u3092\u8868\u793a\u3057\u307e\u3059\u3002
+DataContentViewerString.goToPageTextField.msgDlg=\uff11\u304b\u3089{0}\u306e\u9593\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u6570\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044
+DataContentViewerString.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u6570
+DataContentViewerString.setDataView.errorText=\uff08\u30aa\u30d5\u30bb\u30c3\u30c8{0}-{1}\u306f\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f\uff09
+DataContentViewerString.title=\u30b9\u30c8\u30ea\u30f3\u30b0
+DataContentViewerString.toolTip=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u62bd\u51fa\u3055\u308c\u305fASCII\u304a\u3088\u3073\u30e6\u30cb\u30b3\u30fc\u30c9\u306e\u30b9\u30c8\u30ea\u30f3\u30b0\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
+DataResultPanel.dummyNodeDisplayName=\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u2026
+DataResultViewerTable.firstColLbl=\u540d\u524d
+DataResultViewerTable.illegalArgExc.noChildFromParent=\u6307\u5b9a\u3055\u308c\u305f\u30da\u30a2\u30ec\u30f3\u30c8\u304b\u3089\u30c1\u30e3\u30a4\u30eb\u30c9\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+DataResultViewerTable.illegalArgExc.childWithoutPropertySet=\u30c1\u30e3\u30a4\u30eb\u30c9\u30ce\u30fc\u30c9\u306f\u901a\u5e38\u306ePropertySet\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002
+DataResultViewerTable.title=\u30c6\u30fc\u30d6\u30eb
+DataResultViewerTable.dummyNodeDisplayName=\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u2026
+DataResultViewerThumbnail.title=\u30b5\u30e0\u30cd\u30a4\u30eb
+DataResultViewerThumbnail.goToPageTextField.msgDlg=\uff11\u304b\u3089{0}\u306e\u9593\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u6570\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044
+DataResultViewerThumbnail.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u6570
+DataResultViewerThumbnail.genThumbs=\u30b5\u30e0\u30cd\u30a4\u30eb\u3092\u4f5c\u6210\u4e2d\u2026
+DataResultViewerThumbnail.pageNumbers.curOfTotal={0}\uff0f{1}\u3064\u76ee
+FXVideoPanel.mediaPane.infoLabel=\u524a\u9664\u3055\u308c\u305f\u30d3\u30c7\u30aa\u306e\u518d\u751f\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u5916\u90e8\u30d7\u30ec\u30fc\u30e4\u30fc\u3092\u4f7f\u7528\u3057\u3066\u4e0b\u3055\u3044\u3002
+FXVideoPanel.progress.bufferingFile={0}\u3092\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0
+FXVideoPanel.progressLabel.buffering=\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u4e2d\u2026
+FXVideoPanel.media.unsupportedFormat=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u3059\u3002
+GeneralOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc
+GeneralOptionsPanelController.moduleErr.msg=GeneralOptionsPanelController\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
+GstVideoPanel.cannotProcFile.err=\u30e1\u30c7\u30a4\u30a2\u30d7\u30ec\u30fc\u30e4\u30fc\u304c\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002
+GstVideoPanel.initGst.gstException.msg=\u30aa\u30fc\u30c7\u30a3\u30aa\uff0f\u30d3\u30c7\u30aa\u306e\u518d\u751f\u304a\u3088\u3073\u30d5\u30ec\u30fc\u30e0\u306e\u62bd\u51fa\u306b\u4f7f\u7528\u3059\u308bGStreamer\u306e\u521d\u671f\u5316\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30d3\u30c7\u30aa\u304a\u3088\u3073\u30aa\u30fc\u30c7\u30a3\u30aa\u518d\u751f\u304c\u7121\u52b9\u5316\u3055\u308c\u307e\u3059\u3002
+GstVideoPanel.initGst.otherException.msg=\u30aa\u30fc\u30c7\u30a3\u30aa\uff0f\u30d3\u30c7\u30aa\u306e\u518d\u751f\u304a\u3088\u3073\u30d5\u30ec\u30fc\u30e0\u306e\u62bd\u51fa\u306b\u4f7f\u7528\u3059\u308bGStreamer\u306e\u521d\u671f\u5316\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30d3\u30c7\u30aa\u304a\u3088\u3073\u30aa\u30fc\u30c7\u30a3\u30aa\u518d\u751f\u304c\u7121\u52b9\u5316\u3055\u308c\u307e\u3059\u3002
+GstVideoPanel.setupVideo.infoLabel.text=\u524a\u9664\u3055\u308c\u305f\u30d3\u30c7\u30aa\u306e\u518d\u751f\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u5916\u90e8\u30d7\u30ec\u30fc\u30e4\u30fc\u3092\u4f7f\u7528\u3057\u3066\u4e0b\u3055\u3044\u3002
+GstVideoPanel.exception.problemFile.msg=\u30d5\u30a1\u30a4\u30eb({0})\u304b\u3089\u306f\u30d5\u30ec\u30fc\u30e0\u3092\u62bd\u51fa\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+GstVideoPanel.exception.problemPlay.msg=\u30d3\u30c7\u30aa\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u9577\u3055\u3092\u78ba\u8a8d\u4e2d\u306b\u518d\u751f\u3092\u3057\u3088\u3046\u3068\u3057\u305f\u969b\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+LBL_Description=\n \u88fd\u54c1\u30d0\u30fc\u30b8\u30e7\u30f3\uff1a {0} ({9})
Sleuth Kit\u30d0\u30fc\u30b8\u30e7\u30f3\uff1a {7}
Netbeans RCP\u30d3\u30eb\u30c9\: {8}
Java\: {1}; {2}
\u30b7\u30b9\u30c6\u30e0\uff1a {3}; {4}; {5}
\u30e6\u30fc\u30b6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u540d {6}
+LBL_Copyright=Autopsy™\u306fSleuth Kit™\u3084\u305d\u306e\u4ed6\u30c4\u30fc\u30eb\u3092\u57fa\u306b\u3057\u305f\u30c7\u30b8\u30bf\u30eb\u30fb\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30fb\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002
Copyright © 2003-2013. \u8a73\u7d30\u306f\u4e0b\u8a18\u3092\u3054\u89a7\u4e0b\u3055\u3044\u3002
http\://www.sleuthkit.org.
+GstVideoPanel.exception.problemPause.msg=\u30d3\u30c7\u30aa\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u9577\u3055\u3092\u78ba\u8a8d\u4e2d\u306b\u4e00\u6642\u505c\u6b62\u3092\u3057\u3088\u3046\u3068\u3057\u305f\u969b\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+GstVideoPanel.exception.problemPauseCaptFrame.msg=\u30d3\u30c7\u30aa\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30d5\u30ec\u30fc\u30e0\u306e\u62bd\u51fa\u4e2d\u306b\u4e00\u6642\u505c\u6b62\u3092\u3057\u3088\u3046\u3068\u3057\u305f\u969b\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+GstVideoPanel.exception.problemPlayCaptFrame.msg=\u30d3\u30c7\u30aa\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30d5\u30ec\u30fc\u30e0\u306e\u62bd\u51fa\u4e2d\u306b\u518d\u751f\u3057\u3088\u3046\u3068\u3057\u305f\u969b\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+GstVideoPanel.exception.problemStopCaptFrame.msg=\u30d3\u30c7\u30aa\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30d5\u30ec\u30fc\u30e0\u306e\u62bd\u51fa\u4e2d\u306b\u505c\u6b62\u3057\u3088\u3046\u3068\u3057\u305f\u969b\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+GstVideoPanel.progress.buffering=\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u4e2d\u2026
+GstVideoPanel.progressLabel.bufferingErr=\u30d5\u30a1\u30a4\u30eb\u306e\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u30a8\u30e9\u30fc
+MediaViewImagePanel.imgFileTooLarge.msg=\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\uff08\u5927\u304d\u3059\u304e\u3067\u3059\uff09\uff1a {0}
+ProductInformationPanel.verbLoggingEnabled.text=Verbose\u30ed\u30b0\u304c\u6709\u52b9\u3067\u3059
+ProductInformationPanel.propertyUnknown.text=\u4e0d\u660e
ProductInformationPanel.getVMValue.text={0} {1}
-TableFilterNode.displayName.text=\u540D\u524D
+TableFilterNode.displayName.text=\u540d\u524d
DataContentViewerHex.ofLabel.text_1=of
DataContentViewerString.ofLabel.text_1=of
DataContentViewerArtifact.ofLabel.text=of
-DataContentViewerString.setDataView.errorNoText=\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8{0}-{1}\u306B\u306F\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09
-DataResultViewerThumbnail.comboBox.smallThumbnails=\u30B5\u30E0\u30CD\u30A4\u30EB\uFF08\u5C0F\uFF09
-DataResultViewerThumbnail.comboBox.mediumThumbnails=\u30B5\u30E0\u30CD\u30A4\u30EB\uFF08\u4E2D\uFF09
-DataResultViewerThumbnail.comboBox.largeThumbnails=\u30B5\u30E0\u30CD\u30A4\u30EB\uFF08\u5927\uFF09
-DataResultViewerThumbnail.switchPage.done.errMsg=\u30B5\u30E0\u30CD\u30A4\u30EB\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A {0}
-FXVideoPanel.pauseButton.infoLabel.playbackErr=\u518D\u751F\u30A8\u30E9\u30FC\u3002
-GstVideoPanel.progress.infoLabel.updateErr=\u30D3\u30C7\u30AA\u30D7\u30ED\u30B0\u30EC\u30B9\u306E\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A {0}
-GstVideoPanel.ExtractMedia.progress.buffering={0}\u3092\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u4E2D
-AboutWindowPanel.actVerboseLogging.text=Verbose\u30ED\u30B0\u3092\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30C8
-AutopsyOptionsPanel.jLabel4.text=\u30D5\u30A1\u30A4\u30EB\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u306B\u4F7F\u7528\u3059\u308B\u30B9\u30EC\u30C3\u30C9\u6570\uFF1A
-AutopsyOptionsPanel.viewsHideKnownCB.text=\u30D3\u30E5\u30FC\u304B\u3089\u9078\u629E\u3057\u3066\u3044\u308B\u5834\u5408
-AutopsyOptionsPanel.dataSourcesHideKnownCB.text=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u30A8\u30EA\u30A2\uFF08\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u968E\u5C64\uFF09
-AutopsyOptionsPanel.jLabel3.text=\u65E2\u77E5\u30D5\u30A1\u30A4\u30EB\uFF08NIST NSRL\u5185\u306E\uFF09\u3092\u4E0B\u8A18\u306B\u96A0\u3059\uFF1A
-AutopsyOptionsPanel.useBestViewerRB.toolTipText=\u4F8B\u3048\u3070\u3001JPEG\u304C\u9078\u629E\u3055\u308C\u305F\u5834\u5408\u306B\u306FHEX\u304B\u3089\u30E1\u30C7\u30A3\u30A2\u306B\u5909\u66F4\u3059\u308B\u3002
-AutopsyOptionsPanel.useBestViewerRB.text=\u6700\u3082\u5C02\u9580\u7684\u306A\u30D5\u30A1\u30A4\u30EB\u30D3\u30E5\u30FC\u30A2\u306B\u5909\u66F4
-AutopsyOptionsPanel.useGMTTimeRB.text=GMT\u3092\u4F7F\u7528
-AutopsyOptionsPanel.useLocalTimeRB.text=\u30ED\u30FC\u30AB\u30EB\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3092\u4F7F\u7528
-AutopsyOptionsPanel.keepCurrentViewerRB.toolTipText=\u4F8B\u3048\u3070\u3001JPEG\u304C\u9078\u629E\u3055\u308C\u305F\u5834\u5408\u306B\u305D\u306E\u307E\u307EHEX\u30D3\u30E5\u30FC\u3092\u4F7F\u7528\u3002
-AutopsyOptionsPanel.keepCurrentViewerRB.text=\u305D\u306E\u307E\u307E\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u30D3\u30E5\u30FC\u30A2\u3092\u4F7F\u7528
-AutopsyOptionsPanel.jLabel1.text=\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u3059\u308B\u5834\u5408\uFF1A
-AutopsyOptionsPanel.jLabel2.text=\u30A2\u30A4\u30C6\u30E0\u3092\u8868\u793A\u3059\u308B\u5834\u5408\uFF1A
-AutopsyOptionsPanel.restartRequiredLabel.text=\u3053\u306E\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u30FC\u3067\u306F\u6700\u5927{0}\u3064\u306E\u30D5\u30A1\u30A4\u30EB\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30B9\u30EC\u30C3\u30C9\u3092\u4F7F\u7528\u3059\u3079\u304D\u3067\u3059\u3002\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u518D\u8D77\u52D5\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+DataContentViewerString.setDataView.errorNoText=\uff08\u30aa\u30d5\u30bb\u30c3\u30c8{0}-{1}\u306b\u306f\u30c6\u30ad\u30b9\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\uff09
+DataResultViewerThumbnail.comboBox.smallThumbnails=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u5c0f\uff09
+DataResultViewerThumbnail.comboBox.mediumThumbnails=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u4e2d\uff09
+DataResultViewerThumbnail.comboBox.largeThumbnails=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u5927\uff09
+DataResultViewerThumbnail.switchPage.done.errMsg=\u30b5\u30e0\u30cd\u30a4\u30eb\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a {0}
+FXVideoPanel.pauseButton.infoLabel.playbackErr=\u518d\u751f\u30a8\u30e9\u30fc\u3002
+GstVideoPanel.progress.infoLabel.updateErr=\u30d3\u30c7\u30aa\u30d7\u30ed\u30b0\u30ec\u30b9\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a {0}
+GstVideoPanel.ExtractMedia.progress.buffering={0}\u3092\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u4e2d
+AboutWindowPanel.actVerboseLogging.text=Verbose\u30ed\u30b0\u3092\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30c8
+AutopsyOptionsPanel.viewsHideKnownCB.text=\u30d3\u30e5\u30fc\u304b\u3089\u9078\u629e\u3057\u3066\u3044\u308b\u5834\u5408
+AutopsyOptionsPanel.dataSourcesHideKnownCB.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a8\u30ea\u30a2\uff08\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u968e\u5c64\uff09
+AutopsyOptionsPanel.useBestViewerRB.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u306fHEX\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5909\u66f4\u3059\u308b\u3002
+AutopsyOptionsPanel.useBestViewerRB.text=\u6700\u3082\u5c02\u9580\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u306b\u5909\u66f4
+AutopsyOptionsPanel.useGMTTimeRB.text=GMT\u3092\u4f7f\u7528
+AutopsyOptionsPanel.useLocalTimeRB.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528
+AutopsyOptionsPanel.keepCurrentViewerRB.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u305d\u306e\u307e\u307eHEX\u30d3\u30e5\u30fc\u3092\u4f7f\u7528\u3002
+AutopsyOptionsPanel.keepCurrentViewerRB.text=\u305d\u306e\u307e\u307e\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u3092\u4f7f\u7528
+AutopsyOptionsPanel.restartRequiredLabel.text=\u3053\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3067\u306f\u6700\u5927{0}\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30ec\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u3079\u304d\u3067\u3059\u3002\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u518d\u8d77\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+AutopsyOptionsPanel.jLabelSelectFile.text=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3059\u308b\u5834\u5408\uff1a
+AutopsyOptionsPanel.jLabelHideKnownFiles.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\uff08NIST NSRL\u5185\u306e\uff09\u3092\u4e0b\u8a18\u306b\u96a0\u3059\uff1a
+AutopsyOptionsPanel.jLabelTimeDisplay.text=\u30a2\u30a4\u30c6\u30e0\u3092\u8868\u793a\u3059\u308b\u5834\u5408\uff1a
+AutopsyOptionsPanel.jLabelNumThreads.text=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u4f7f\u7528\u3059\u308b\u30b9\u30ec\u30c3\u30c9\u6570\uff1a
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java
index 6f2d396397..4415a3522e 100644
--- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java
+++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java
@@ -26,25 +26,25 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.logging.Level;
-
-import org.openide.util.NbBundle;
-import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.JMenuItem;
import javax.swing.JTextPane;
import javax.swing.SwingWorker;
import org.openide.nodes.Node;
import org.openide.util.Lookup;
+import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.contentviewers.Utilities;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer;
+import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.datamodel.ArtifactStringContent;
import org.sleuthkit.datamodel.BlackboardArtifact;
+import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
import org.sleuthkit.datamodel.BlackboardAttribute;
-import org.sleuthkit.datamodel.SleuthkitCase;
import org.sleuthkit.datamodel.Content;
-import org.sleuthkit.datamodel.TskException;
+import org.sleuthkit.datamodel.SleuthkitCase;
import org.sleuthkit.datamodel.TskCoreException;
+import org.sleuthkit.datamodel.TskException;
/**
* Instances of this class display the BlackboardArtifacts associated with the Content represented by a Node.
@@ -332,7 +332,12 @@ public class DataContentViewerArtifact extends javax.swing.JPanel implements Dat
@Override
public int isPreferred(Node node) {
BlackboardArtifact artifact = node.getLookup().lookup(BlackboardArtifact.class);
- if(artifact == null) {
+ // low priority if node doesn't have an artifact (meaning it was found from normal directory
+ // browsing, or if the artifact is something that means the user really wants to see the original
+ // file and not more details about the artifact
+ if ((artifact == null) ||
+ (artifact.getArtifactTypeID() == ARTIFACT_TYPE.TSK_HASHSET_HIT.getTypeID()) ||
+ (artifact.getArtifactTypeID() == ARTIFACT_TYPE.TSK_KEYWORD_HIT.getTypeID())) {
return 3;
}
else {
diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/ExecUtil.java b/Core/src/org/sleuthkit/autopsy/coreutils/ExecUtil.java
index 7b457f1c67..b33231d909 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/ExecUtil.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/ExecUtil.java
@@ -37,24 +37,53 @@ public final class ExecUtil {
private static final long DEFAULT_TIMEOUT = 5;
private static final TimeUnit DEFAULT_TIMEOUT_UNITS = TimeUnit.SECONDS;
-
+
/**
- * The execute() methods do a wait with a timeout on the executing process
- * and query the terminator each time the timeout expires to determine
- * whether or not to kill the process or allow it to continue.
+ * The execute() methods do a wait() with a timeout on the executing process
+ * and query a process terminator each time the timeout expires to determine
+ * whether or not to kill the process.
*/
public interface ProcessTerminator {
/**
- * An implementation of this interface is called by the run() methods at
- * every timeout to determine whether or not to kill the running
- * process.
+ * Decides whether or not to terminate a process being run by a
+ * ExcUtil.execute() methods.
*
* @return True or false.
*/
boolean shouldTerminateProcess();
}
+ /**
+ * Process terminator that can be used to kill a processes after it exceeds
+ * a maximum allowable run time.
+ */
+ public static class TimedProcessTerminator implements ProcessTerminator {
+
+ private final long startTimeInSeconds;
+ private final long maxRunTimeInSeconds;
+
+ /**
+ * Creates a process terminator that can be used to kill a process after
+ * it has run for a given period of time.
+ *
+ * @param maxRunTimeInSeconds The maximum allowable run time in seconds.
+ */
+ public TimedProcessTerminator(long maxRunTimeInSeconds) {
+ this.maxRunTimeInSeconds = maxRunTimeInSeconds;
+ this.startTimeInSeconds = (new Date().getTime()) / 1000;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ @Override
+ public boolean shouldTerminateProcess() {
+ long currentTimeInSeconds = (new Date().getTime()) / 1000;
+ return (currentTimeInSeconds - this.startTimeInSeconds) > this.maxRunTimeInSeconds;
+ }
+ }
+
/**
* Runs a process without a timeout and terminator.
*
@@ -125,13 +154,15 @@ public final class ExecUtil {
}
/**
- * Kill a process and its children
+ * Kills a process and its children
+ *
* @param process The parent process to kill
*/
public static void killProcess(Process process) {
- if (process == null)
+ if (process == null) {
return;
-
+ }
+
try {
if (PlatformUtil.isWindows()) {
Win32Process parentProcess = new Win32Process(process);
@@ -141,68 +172,14 @@ public final class ExecUtil {
child.terminate();
});
parentProcess.terminate();
- }
- else {
+ } else {
process.destroyForcibly();
}
- }
- catch (Exception ex) {
+ } catch (Exception ex) {
logger.log(Level.WARNING, "Error occurred when attempting to kill process: {0}", ex.getMessage()); // NON-NLS
}
}
- /**
- * Timed process terminator that triggers either based on default process time out value
- * or user specified time out value.
- */
- public static class TimedProcessTerminator implements ProcessTerminator {
-
- private final long creationTimeSec; // time when TimedProcessTerminator was constructed
- private final long timeoutSec; // time out value (seconds)
- private static final long DEFAULT_TIMEOUT_SEC = 172800; // 48 hours
-
- /**
- * Constructs a process terminator for an ingest module. Uses default
- * process execution timeout value.
- */
- public TimedProcessTerminator() {
- creationTimeSec = (new Date().getTime()) / 1000;
- timeoutSec = DEFAULT_TIMEOUT_SEC;
- }
-
- /**
- * Constructs a process terminator for an ingest module.
- *
- * @param userSpecifiedTimeoutSec Process execution timeout value (seconds)
- */
- public TimedProcessTerminator(long userSpecifiedTimeoutSec) {
- creationTimeSec = (new Date().getTime()) / 1000;
-
- if (userSpecifiedTimeoutSec > 0) {
- timeoutSec = userSpecifiedTimeoutSec;
- } else {
- logger.log(Level.WARNING, "Process time out value must be greater than zero. Using default time out instead."); // NON-NLS
- timeoutSec = DEFAULT_TIMEOUT_SEC;
- }
- }
-
- /**
- * @return true if process should be terminated, false otherwise
- */
- @Override
- public boolean shouldTerminateProcess() {
-
- // check if maximum execution time elapsed
- long currentTimeSec = (new Date().getTime()) / 1000;
- if (currentTimeSec - creationTimeSec > timeoutSec) {
- return true;
- }
-
- return false;
- }
- }
-
-
/**
* EVERYTHING FOLLOWING THIS LINE IS DEPRECATED AND SLATED FOR REMOVAL
*/
diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java
index dd75fba0e7..89622dfdd9 100644
--- a/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java
+++ b/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java
@@ -32,6 +32,7 @@ import org.openide.util.lookup.Lookups;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.datamodel.AbstractFile;
import org.sleuthkit.datamodel.BlackboardArtifact;
+import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
import org.sleuthkit.datamodel.BlackboardAttribute;
import org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE;
import org.sleuthkit.datamodel.Content;
@@ -290,7 +291,19 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_START.getTypeID()
|| attributeTypeID == ATTRIBUTE_TYPE.TSK_DATETIME_END.getTypeID()) {
map.put(attribute.getAttributeTypeDisplayName(), ContentUtils.getStringTime(attribute.getValueLong(), associated));
- } else {
+ } else if (artifact.getArtifactTypeID() == ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getTypeID() &&
+ attributeTypeID == ATTRIBUTE_TYPE.TSK_TEXT.getTypeID()) {
+ /* This was added because the RegRipper output would often cause the UI to
+ * get a black line accross it and hang if you hovered over large output
+ * or selected it. This reduces the amount of data in the table.
+ * Could consider doing this for all fields in the UI.
+ */
+ String value = attribute.getDisplayString();
+ if (value.length() > 512)
+ value = value.substring(0, 512);
+ map.put(attribute.getAttributeTypeDisplayName(), value);
+ }
+ else {
map.put(attribute.getAttributeTypeDisplayName(), attribute.getDisplayString());
}
}
diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java
index c48e1a581d..37a1f41595 100644
--- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java
+++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java
@@ -937,7 +937,13 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat
}
}
Node listNode = keywordRootChilds.findChild(listName);
+ if (listNode == null) {
+ return;
+ }
Children listChildren = listNode.getChildren();
+ if (listChildren == null) {
+ return;
+ }
treeNode = listChildren.findChild(keywordName);
} catch (TskException ex) {
logger.log(Level.WARNING, "Error retrieving attributes", ex); //NON-NLS
@@ -962,8 +968,16 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat
} else {
Node extractedContent = resultsChilds.findChild(ExtractedContent.NAME);
Children extractedChilds = extractedContent.getChildren();
+ if (extractedChilds == null) {
+ return;
+ }
treeNode = extractedChilds.findChild(type.getLabel());
}
+
+ if (treeNode == null) {
+ return;
+ }
+
try {
em.setExploredContextAndSelection(treeNode, new Node[]{treeNode});
} catch (PropertyVetoException ex) {
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestModuleProcessTerminator.java b/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestModuleProcessTerminator.java
index 51bcae1e9c..94f1deb972 100644
--- a/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestModuleProcessTerminator.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestModuleProcessTerminator.java
@@ -18,48 +18,50 @@
*/
package org.sleuthkit.autopsy.ingest;
-import org.sleuthkit.autopsy.coreutils.ExecUtil;
+import org.sleuthkit.autopsy.coreutils.ExecUtil.ProcessTerminator;
+import org.sleuthkit.autopsy.coreutils.ExecUtil.TimedProcessTerminator;
/**
- * A timed process terminator for data source ingest modules. Checks for
- * ingest job cancellation as well.
+ * A process terminator for data source ingest modules that checks for ingest
+ * job cancellation and optionally checks for process run time in excess of a
+ * specified maximum.
*/
-public final class DataSourceIngestModuleProcessTerminator extends ExecUtil.TimedProcessTerminator {
+public final class DataSourceIngestModuleProcessTerminator implements ProcessTerminator {
+
+ private final IngestJobContext context;
+ private TimedProcessTerminator timedTerminator;
- public final IngestJobContext context;
-
/**
* Constructs a process terminator for a data source ingest module.
- * Uses default process execution timeout value.
*
* @param context The ingest job context for the ingest module.
*/
public DataSourceIngestModuleProcessTerminator(IngestJobContext context) {
- super();
this.context = context;
}
/**
- * Constructs a process terminator for a data source ingest module.
+ * Constructs a process terminator for a data source ingest module.
*
* @param context The ingest job context for the ingest module.
- * @param timeoutSec Process execution timeout value (seconds)
+ * @param maxRunTimeInSeconds Maximum allowable run time of process.
*/
- public DataSourceIngestModuleProcessTerminator(IngestJobContext context, long timeoutSec) {
- super(timeoutSec);
- this.context = context;
- }
-
+ public DataSourceIngestModuleProcessTerminator(IngestJobContext context, long maxRunTimeInSeconds) {
+ this(context);
+ this.timedTerminator = new TimedProcessTerminator(maxRunTimeInSeconds);
+ }
+
/**
- * @return true if process should be terminated, false otherwise
+ * @inheritDoc
*/
@Override
public boolean shouldTerminateProcess() {
-
- if (this.context.dataSourceIngestIsCancelled())
+
+ if (this.context.dataSourceIngestIsCancelled()) {
return true;
-
- return super.shouldTerminateProcess();
+ }
+
+ return this.timedTerminator != null ? this.timedTerminator.shouldTerminateProcess() : false;
}
}
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestPipeline.java b/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestPipeline.java
index 702e3b63b4..54d06023ee 100755
--- a/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestPipeline.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestPipeline.java
@@ -55,7 +55,7 @@ final class DataSourceIngestPipeline {
for (DataSourceIngestModuleDecorator module : modules) {
try {
module.startUp(new IngestJobContext(this.job));
- } catch (Exception ex) { // Catch-all exception firewall
+ } catch (Throwable ex) { // Catch-all exception firewall
errors.add(new IngestModuleError(module.getDisplayName(), ex));
}
}
@@ -74,7 +74,7 @@ final class DataSourceIngestPipeline {
this.job.switchDataSourceIngestProgressBarToIndeterminate();
ingestManager.setIngestTaskProgress(task, module.getDisplayName());
module.process(dataSource, new DataSourceIngestModuleProgress(this.job));
- } catch (Exception ex) { // Catch-all exception firewall
+ } catch (Throwable ex) { // Catch-all exception firewall
errors.add(new IngestModuleError(module.getDisplayName(), ex));
}
if (this.job.isCancelled()) {
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/FileIngestModuleProcessTerminator.java b/Core/src/org/sleuthkit/autopsy/ingest/FileIngestModuleProcessTerminator.java
index 765ad15917..28851a1956 100644
--- a/Core/src/org/sleuthkit/autopsy/ingest/FileIngestModuleProcessTerminator.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/FileIngestModuleProcessTerminator.java
@@ -19,47 +19,49 @@
package org.sleuthkit.autopsy.ingest;
import org.sleuthkit.autopsy.coreutils.ExecUtil;
+import org.sleuthkit.autopsy.coreutils.ExecUtil.ProcessTerminator;
/**
- * A timed process terminator for data source ingest modules. Checks for
- * ingest job cancellation as well.
+ * A process terminator for file ingest modules that checks for ingest job
+ * cancellation and optionally checks for process run time in excess of a
+ * specified maximum.
*/
-public final class FileIngestModuleProcessTerminator extends ExecUtil.TimedProcessTerminator {
+public final class FileIngestModuleProcessTerminator implements ProcessTerminator {
+
+ private final IngestJobContext context;
+ private ExecUtil.TimedProcessTerminator timedTerminator;
- public final IngestJobContext context;
-
/**
* Constructs a process terminator for a file ingest module.
- * Uses default process execution timeout value.
*
* @param context The ingest job context for the ingest module.
*/
public FileIngestModuleProcessTerminator(IngestJobContext context) {
- super();
this.context = context;
}
-
- /**
- * Constructs a process terminator for a file ingest module.
- *
- * @param context The ingest job context for the ingest module.
- * @param timeoutSec Process execution timeout value (seconds)
- */
- public FileIngestModuleProcessTerminator(IngestJobContext context, long timeoutSec) {
- super(timeoutSec);
- this.context = context;
- }
/**
- * @return true if process should be terminated, false otherwise
+ * Constructs a process terminator for a file ingest module.
+ *
+ * @param context The ingest job context for the ingest module.
+ * @param maxRunTimeInSeconds Maximum allowable run time of process.
+ */
+ public FileIngestModuleProcessTerminator(IngestJobContext context, long maxRunTimeInSeconds) {
+ this(context);
+ this.timedTerminator = new ExecUtil.TimedProcessTerminator(maxRunTimeInSeconds);
+ }
+
+ /**
+ * @inheritDoc
*/
@Override
public boolean shouldTerminateProcess() {
- if (this.context.fileIngestIsCancelled())
+ if (this.context.fileIngestIsCancelled()) {
return true;
-
- return super.shouldTerminateProcess();
+ }
+
+ return this.timedTerminator != null ? this.timedTerminator.shouldTerminateProcess() : false;
}
}
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/FileIngestPipeline.java b/Core/src/org/sleuthkit/autopsy/ingest/FileIngestPipeline.java
index 795ff0b1b9..329c717d5c 100755
--- a/Core/src/org/sleuthkit/autopsy/ingest/FileIngestPipeline.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/FileIngestPipeline.java
@@ -58,7 +58,7 @@ final class FileIngestPipeline {
for (FileIngestModuleDecorator module : this.modules) {
try {
module.startUp(new IngestJobContext(this.job));
- } catch (Exception ex) { // Catch-all exception firewall
+ } catch (Throwable ex) { // Catch-all exception firewall
errors.add(new IngestModuleError(module.getDisplayName(), ex));
}
}
@@ -79,7 +79,7 @@ final class FileIngestPipeline {
try {
FileIngestPipeline.ingestManager.setIngestTaskProgress(task, module.getDisplayName());
module.process(file);
- } catch (Exception ex) { // Catch-all exception firewall
+ } catch (Throwable ex) { // Catch-all exception firewall
errors.add(new IngestModuleError(module.getDisplayName(), ex));
}
if (this.job.isCancelled()) {
@@ -99,7 +99,7 @@ final class FileIngestPipeline {
for (FileIngestModuleDecorator module : this.modules) {
try {
module.shutDown();
- } catch (Exception ex) {
+ } catch (Throwable ex) { // Catch-all exception firewall
errors.add(new IngestModuleError(module.getDisplayName(), ex));
}
}
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestJob.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestJob.java
index 720c43af46..cd1e6e3480 100644
--- a/Core/src/org/sleuthkit/autopsy/ingest/IngestJob.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestJob.java
@@ -65,7 +65,7 @@ final class IngestJob {
*/
private final long id;
private final Content dataSource;
- private final boolean processUnallocatedSpace;
+ private final IngestJobSettings ingestJobSettings;
private final Object dataSourceIngestPipelineLock;
private DataSourceIngestPipeline firstStageDataSourceIngestPipeline;
private DataSourceIngestPipeline secondStageDataSourceIngestPipeline;
@@ -148,7 +148,7 @@ final class IngestJob {
List errors = new ArrayList<>();
if (IngestJob.jobCreationIsEnabled) {
long jobId = nextJobId.incrementAndGet();
- IngestJob job = new IngestJob(jobId, dataSource, settings.getProcessUnallocatedSpace());
+ IngestJob job = new IngestJob(jobId, dataSource, settings);
IngestJob.jobsById.put(jobId, job);
errors = job.start(settings.getEnabledIngestModuleTemplates());
if (errors.isEmpty() && job.hasIngestPipeline()) {
@@ -200,10 +200,11 @@ final class IngestJob {
* @param processUnallocatedSpace Whether or not unallocated space should be
* processed during the ingest job.
*/
- private IngestJob(long id, Content dataSource, boolean processUnallocatedSpace) {
+ private IngestJob(long id, Content dataSource, IngestJobSettings settings) {
this.id = id;
this.dataSource = dataSource;
- this.processUnallocatedSpace = processUnallocatedSpace;
+
+ this.ingestJobSettings = settings;
this.dataSourceIngestPipelineLock = new Object();
this.fileIngestPipelines = new LinkedBlockingQueue<>();
this.filesInProgress = new ArrayList<>();
@@ -239,7 +240,7 @@ final class IngestJob {
* @return True or false.
*/
boolean shouldProcessUnallocatedSpace() {
- return this.processUnallocatedSpace;
+ return this.ingestJobSettings.getProcessUnallocatedSpace();
}
/**
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestModuleError.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestModuleError.java
index 9c9910b405..37e38ff72d 100755
--- a/Core/src/org/sleuthkit/autopsy/ingest/IngestModuleError.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestModuleError.java
@@ -24,9 +24,9 @@ package org.sleuthkit.autopsy.ingest;
*/
final class IngestModuleError {
private final String moduleDisplayName;
- private final Exception error;
+ private final Throwable error;
- IngestModuleError(String moduleDisplayName, Exception error) {
+ IngestModuleError(String moduleDisplayName, Throwable error) {
this.moduleDisplayName = moduleDisplayName;
this.error = error;
}
@@ -35,7 +35,7 @@ final class IngestModuleError {
return this.moduleDisplayName;
}
- Exception getModuleError() {
+ Throwable getModuleError() {
return this.error;
}
}
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestModuleFactoryLoader.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestModuleFactoryLoader.java
index 862ba5bcf0..6a6a4ca562 100644
--- a/Core/src/org/sleuthkit/autopsy/ingest/IngestModuleFactoryLoader.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestModuleFactoryLoader.java
@@ -110,7 +110,7 @@ final class IngestModuleFactoryLoader {
if (coreFactory != null) {
factories.add(coreFactory);
} else {
- logger.log(Level.SEVERE, "Core factory {0} not loaded", coreFactory);
+ logger.log(Level.SEVERE, "Core factory {0} not loaded", className);
}
}
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/RunIngestModulesDialog.java b/Core/src/org/sleuthkit/autopsy/ingest/RunIngestModulesDialog.java
index 2578f9b35c..f726a1d525 100644
--- a/Core/src/org/sleuthkit/autopsy/ingest/RunIngestModulesDialog.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/RunIngestModulesDialog.java
@@ -128,7 +128,7 @@ public final class RunIngestModulesDialog extends JDialog {
* them to create and add an ingest job settings panel.
*/
IngestJobSettings ingestJobSettings = new IngestJobSettings(RunIngestModulesDialog.class.getCanonicalName());
- this.showWarnings(ingestJobSettings);
+ RunIngestModulesDialog.showWarnings(ingestJobSettings);
this.ingestJobSettingsPanel = new IngestJobSettingsPanel(ingestJobSettings);
add(this.ingestJobSettingsPanel, BorderLayout.PAGE_START);
diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/AddContentToHashDbAction.java b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/AddContentToHashDbAction.java
index ce63ab8f85..28efc22d75 100755
--- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/AddContentToHashDbAction.java
+++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/AddContentToHashDbAction.java
@@ -27,15 +27,16 @@ import javax.swing.AbstractAction;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
-
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
import org.openide.util.actions.Presenter;
import org.sleuthkit.autopsy.coreutils.Logger;
-import org.sleuthkit.datamodel.AbstractFile;
-import org.sleuthkit.datamodel.TskCoreException;
-import static org.sleuthkit.autopsy.modules.hashdatabase.HashDbManager.HashDb;
import org.sleuthkit.autopsy.ingest.IngestManager;
+import org.sleuthkit.autopsy.modules.hashdatabase.HashDbManager.HashDb;
+import static org.sleuthkit.autopsy.modules.hashdatabase.HashDbManager.HashDb;
+import org.sleuthkit.datamodel.AbstractFile;
+import org.sleuthkit.datamodel.HashUtility;
+import org.sleuthkit.datamodel.TskCoreException;
/**
* Instances of this Action allow users to content to a hash database.
@@ -149,7 +150,7 @@ final class AddContentToHashDbAction extends AbstractAction implements Presenter
String md5Hash = file.getMd5Hash();
if (null != md5Hash) {
// don't let them add the hash for an empty file to the DB
- if (md5Hash.toLowerCase().equals("d41d8cd98f00b204e9800998ecf8427e")) { //NON-NLS
+ if (HashUtility.isNoDataMd5(md5Hash)) { //NON-NLS
Logger.getLogger(AddContentToHashDbAction.class.getName()).log(Level.INFO, "Not adding " + file.getName() + " to database (empty content)"); //NON-NLS
JOptionPane.showMessageDialog(null,
NbBundle.getMessage(this.getClass(),
diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties
index 74fbc9b59c..68f5433dc1 100755
--- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties
+++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties
@@ -8,18 +8,14 @@ InterestingFilesIdentifierJobSettingsPanel.filesSetTable.columnModel.title0=Titl
InterestingFilesIdentifierJobSettingsPanel.filesSetTable.columnModel.title3=Title 4
InterestingFilesIdentifierJobSettingsPanel.filesSetTable.columnModel.title2=Title 3
InterestingFilesIdentifierJobSettingsPanel.filesSetTable.columnModel.title1=Title 2
-InterestingItemDefsPanel.newSetButton.text=New Set...
-InterestingItemDefsPanel.editSetButton.text=Edit Set...
+InterestingItemDefsPanel.newSetButton.text=New Set
+InterestingItemDefsPanel.editSetButton.text=Edit Set
InterestingItemDefsPanel.deleteSetButton.text=Delete Set
-InterestingItemDefsPanel.newRuleButton.text=New Rule...
-InterestingItemDefsPanel.editRuleButton.text=Edit Rule...
+InterestingItemDefsPanel.newRuleButton.text=New Rule
+InterestingItemDefsPanel.editRuleButton.text=Edit Rule
InterestingItemDefsPanel.deleteRuleButton.text=Delete Rule
-InterestingItemDefsPanel.ruleNameTextField.text=
-InterestingItemDefsPanel.setsListLabel.text=Interesting Files Set Definitions:
-InterestingItemDefsPanel.selectedSetLabel.text=Selected Set:
+InterestingItemDefsPanel.setsListLabel.text=Rule Sets
InterestingItemDefsPanel.rulesListLabel.text=Rules:
-InterestingItemDefsPanel.selectedRuleLabel.text=Selected Rule:
-InterestingItemDefsPanel.setDescPanel.border.title=Description
FilesSetPanel.title=Interesting Files Set
FilesSetPanel.messages.filesSetsMustBeNamed=Interesting files sets must be named.
FilesSetPanel.ignoreKnownFilesCheckbox.text=Ignore Known Files
@@ -28,17 +24,13 @@ FilesSetPanel.nameLabel.text=Set Name:
FilesSetPanel.descPanel.border.title=Description
FilesSetRulePanel.title=Interesting Files Set Rule
FilesSetRulePanel.extensionRadioButton.text=Extension Only
-FilesSetRulePanel.pathPanel.border.title=With parent path:
FilesSetRulePanel.pathRegexCheckBox.text=Regex
FilesSetRulePanel.pathTextField.text=
FilesSetRulePanel.fullNameRadioButton.text=Full Name
FilesSetRulePanel.nameRegexCheckbox.text=Regex
-FilesSetRulePanel.namePanel.AccessibleContext.accessibleName=Name
-FilesSetRulePanel.namePanel.border.title=Named:
FilesSetRulePanel.ruleNameTextField.text=
FilesSetRulePanel.nameTextField.text=
FilesSetRulePanel.ruleNameLabel.text=Rule Name:
-FilesSetRulePanel.typePanel.border.title=Search for:
FilesSetRulePanel.messages.filesSetRulesMustBeNamed=Interesting files set rules must be named.
FilesSetRulePanel.messages.emptyNameFilter=Interesting files sets rules must have a name for which to search.
FilesSetRulePanel.messages.invalidNameRegex=The name regular expression is not valid:\n\n{0}
@@ -47,11 +39,9 @@ FilesSetRulePanel.messages.invalidCharInPath=The path cannot contain \\, :, *, ?
FilesSetRulePanel.messages.invalidPathRegex=The path regular expression is not valid:\n\n{0}
FilesSetRulePanel.dirsRadioButton.text=Directories
FilesSetRulePanel.filesRadioButton.text=Files
-InterestingItemDefsPanel.typePanel.border.title=Search for:
InterestingItemDefsPanel.bothRadioButton.text=Files and Directories
InterestingItemDefsPanel.dirsRadioButton.text=Directories
InterestingItemDefsPanel.filesRadioButton.text=Files
-InterestingItemDefsPanel.fileNamePanel.border.title=Name
InterestingItemDefsPanel.fileNameRegexCheckbox.text=Regex
InterestingItemDefsPanel.fileNameExtensionRadioButton.text=Extension Only
InterestingItemDefsPanel.fileNameTextField.text=
@@ -59,7 +49,16 @@ InterestingItemDefsPanel.fileNameRadioButton.text=File Name
FilesSetRulePanel.pathSeparatorInfoLabel.text=Use / as path separator
FilesSetRulePanel.filesAndDirsRadioButton.text=Files and Directories
InterestingItemDefsPanel.rulePathFilterTextField.text=
-InterestingItemDefsPanel.rulePathPanel.border.title=Path
InterestingItemDefsPanel.rulePathFilterRegexCheckBox.text=Regex
InterestingItemDefsPanel.ignoreKnownFilesCheckbox.text=Ignore Known Files
FilesIdentifierIngestJobSettingsPanel.border.title=Select interesting files sets to enable during ingest:
+InterestingItemDefsPanel.jLabel1.text=Rule Details
+InterestingItemDefsPanel.jLabel2.text=File Type:
+InterestingItemDefsPanel.jLabel3.text=Name Pattern
+InterestingItemDefsPanel.jLabel4.text=Path Pattern:
+InterestingItemDefsPanel.jLabel5.text=Description:
+InterestingItemDefsPanel.jLabel6.text=Set Details
+FilesSetRulePanel.jLabel1.text=File Type:
+FilesSetRulePanel.jLabel2.text=Name Pattern:
+FilesSetRulePanel.jLabel3.text=Path Pattern:
+InterestingItemDefsPanel.jTextArea1.text=This module allows you to find files that match specified criteria. Each set has a list of rules, which will match on file name and parent path patterns.
diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSet.java b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSet.java
index 4277e0d9cc..7ed2e470be 100755
--- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSet.java
+++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSet.java
@@ -228,7 +228,7 @@ final class FilesSet {
public String toString() {
// This override is designed to provide a display name for use with
// javax.swing.DefaultListModel.
- return this.ruleName;
+ return this.ruleName + " (" + fileNameFilter.getTextToMatch() + ")";
}
/**
diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetRulePanel.form b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetRulePanel.form
index 7e4b61da6a..9e7245eafc 100755
--- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetRulePanel.form
+++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetRulePanel.form
@@ -22,19 +22,60 @@
-
+
-
-
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
@@ -46,12 +87,34 @@