From 035f35f91eb3049e979b1a7cbab100a7765e3755 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 13 Sep 2023 13:34:13 -0400 Subject: [PATCH 01/52] updates for CT license UI changes --- .../autopsy/ctapi/CTCloudException.java | 2 +- .../ctoptions/ctcloud/Bundle.properties | 2 + .../ctcloud/Bundle.properties-MERGED | 2 + .../ctcloud/CTLicensePersistence.java | 9 ++ .../ctcloud/CTMalwareScannerOptionsPanel.form | 96 +++++++++------ .../ctcloud/CTMalwareScannerOptionsPanel.java | 110 +++++++++++------- .../malwarescan/Bundle.properties-MERGED | 3 + .../malwarescan/MalwareScanIngestModule.java | 19 ++- 8 files changed, 168 insertions(+), 75 deletions(-) diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudException.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudException.java index 95605c4bce..e1c9376078 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudException.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudException.java @@ -32,7 +32,7 @@ public class CTCloudException extends Exception{ public enum ErrorCode { BAD_REQUEST("CT-400", "Unknown or Bad request. Please contact Basis support at " + Constants.SUPPORT_AT_CYBERTRIAGE_DOT_COM + " for help diagnosing the problem."), - INVALID_KEY("CT-401", "An invalid license ID was used to access CyberTriage Cloud Service. Please contact Basis support " + Constants.SUPPORT_AT_CYBERTRIAGE_DOT_COM + " for help diagnosing the problem."), + INVALID_KEY("CT-401", "An invalid license ID was used to access CyberTriage Cloud Service. Please remove the license from the Cyber Triage options panel."), GATEWAY_TIMEOUT("CT-504", "Request to CyberTriage Cloud Service timed out. Please retry after some time. If issue persists, please contact Basis support at " + Constants.SUPPORT_AT_CYBERTRIAGE_DOT_COM + " for assistance."), UN_AUTHORIZED("CT-403", "An authorization error occurred. Please contact Basis support " + Constants.SUPPORT_AT_CYBERTRIAGE_DOT_COM + " for help diagnosing the problem."), PROXY_UNAUTHORIZED("CT-407", "Proxy authentication failed. Please validate the connection settings from the Options panel Proxy Settings."), diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties index 8ad7ccebe9..85ee5a7663 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties @@ -26,3 +26,5 @@ CTMalwareScannerOptionsPanel.licenseInfoMessageLabel.text= CTMalwareScannerOptionsPanel.disclaimer.text=The Cyber Triage Malware Scanner module uses 40+ malware scanning engines to identify if Windows executables are malicious. It requires a paid subscription to use. CTMalwareScannerOptionsPanel.purchaseFromLabel.text=For licensing information, visit CTLicenseDialog.licenseNumberTextField.toolTipText=AUT-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +CTMalwareScannerOptionsPanel.licenseErrorLabel.text= +CTMalwareScannerOptionsPanel.licenseInfoRemoveButton.text=Remove License diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED index 8b72302f47..bc9fbf0a2d 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED @@ -66,3 +66,5 @@ CTMalwareScannerOptionsPanel.licenseInfoMessageLabel.text= CTMalwareScannerOptionsPanel.disclaimer.text=The Cyber Triage Malware Scanner module uses 40+ malware scanning engines to identify if Windows executables are malicious. It requires a paid subscription to use. CTMalwareScannerOptionsPanel.purchaseFromLabel.text=For licensing information, visit CTLicenseDialog.licenseNumberTextField.toolTipText=AUT-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +CTMalwareScannerOptionsPanel.licenseErrorLabel.text= +CTMalwareScannerOptionsPanel.licenseInfoRemoveButton.text=Remove License diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicensePersistence.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicensePersistence.java index 43e34a8d2a..48e327f400 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicensePersistence.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicensePersistence.java @@ -50,6 +50,15 @@ public class CTLicensePersistence { public static CTLicensePersistence getInstance() { return instance; } + + public synchronized boolean deleteLicenseResponse() { + File licenseFile = getCTLicenseFile(); + if (licenseFile.exists()) { + return licenseFile.delete(); + } else { + return false; + } + } public synchronized boolean saveLicenseResponse(LicenseResponse licenseResponse) { if (licenseResponse != null) { diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form index dcdfb0a767..185d634399 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form @@ -123,43 +123,22 @@ - + - + - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -171,19 +150,43 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -195,7 +198,34 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java index deff21d423..1cf5accde9 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java @@ -81,6 +81,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { private volatile AuthTokenResponse authTokenResponse = null; private volatile String authTokenMessage = null; private volatile AuthTokenFetcher authTokenFetcher = null; + private volatile String authTokenError = null; /** * Main constructor. @@ -131,7 +132,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { Optional licenseInfoOpt = ctPersistence.loadLicenseInfo(); LicenseInfo licenseInfo = licenseInfoOpt.orElse(null); setLicenseDisplay(licenseInfo, null); - setMalwareScansDisplay(null, null); + setMalwareScansDisplay(null, null, null); if (licenseInfo != null) { loadMalwareScansInfo(licenseInfo); this.purchaseFromLabel.setVisible(false); @@ -168,9 +169,10 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { renderLicenseState(); } - private synchronized void setMalwareScansDisplay(AuthTokenResponse authTokenResponse, String authTokenMessage) { + private synchronized void setMalwareScansDisplay(AuthTokenResponse authTokenResponse, String authTokenMessage, String authTokenError) { this.authTokenResponse = authTokenResponse; this.authTokenMessage = authTokenMessage; + this.authTokenError = authTokenError; renderLicenseState(); } @@ -196,7 +198,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { this.licenseFetcher.cancel(true); } setLicenseDisplay(null, Bundle.CTOPtionsPanel_loadLicenseInfo_loading()); - setMalwareScansDisplay(null, null); + setMalwareScansDisplay(null, null, null); this.licenseFetcher = new LicenseFetcher(licenseNumber); this.licenseFetcher.execute(); } @@ -210,11 +212,11 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { } if (licenseInfo == null || licenseInfo.getDecryptedLicense() == null) { - setMalwareScansDisplay(null, null); + setMalwareScansDisplay(null, null, null); return; } - setMalwareScansDisplay(null, Bundle.CTOPtionsPanel_loadMalwareScansInfo_loading()); + setMalwareScansDisplay(null, Bundle.CTOPtionsPanel_loadMalwareScansInfo_loading(), null); this.authTokenFetcher = new AuthTokenFetcher(licenseInfo.getDecryptedLicense()); this.authTokenFetcher.execute(); @@ -238,12 +240,14 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { licenseInfoIdLabel = new javax.swing.JLabel(); licenseInfoUserLabel = new javax.swing.JLabel(); licenseInfoAddButton = new javax.swing.JButton(); - maxFileUploadsLabel = new javax.swing.JLabel(); + licenseInfoRemoveButton = new javax.swing.JButton(); + malwareScansMessageLabel = new javax.swing.JLabel(); maxHashLookupsLabel = new javax.swing.JLabel(); hashLookupsRemainingLabel = new javax.swing.JLabel(); - malwareScansMessageLabel = new javax.swing.JLabel(); - countersResetLabel = new javax.swing.JLabel(); + maxFileUploadsLabel = new javax.swing.JLabel(); fileUploadsRemainingLabel = new javax.swing.JLabel(); + countersResetLabel = new javax.swing.JLabel(); + licenseErrorLabel = new javax.swing.JLabel(); javax.swing.JPanel purchasePanel = new javax.swing.JPanel(); purchaseFromLabel = new javax.swing.JLabel(); purchaseLink = new javax.swing.JLabel(); @@ -312,24 +316,39 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + gridBagConstraints.insets = new java.awt.Insets(0, 5, 10, 5); licenseInfoPanel.add(licenseInfoAddButton, gridBagConstraints); - org.openide.awt.Mnemonics.setLocalizedText(maxFileUploadsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxFileUploadsLabel.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(licenseInfoRemoveButton, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoRemoveButton.text")); // NOI18N + licenseInfoRemoveButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + licenseInfoRemoveButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + licenseInfoPanel.add(licenseInfoRemoveButton, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(malwareScansMessageLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansMessageLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); - licenseInfoPanel.add(maxFileUploadsLabel, gridBagConstraints); + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + licenseInfoPanel.add(malwareScansMessageLabel, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(maxHashLookupsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxHashLookupsLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 3; + gridBagConstraints.gridy = 5; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); @@ -338,39 +357,47 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(hashLookupsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.hashLookupsRemainingLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 3; + gridBagConstraints.gridy = 5; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); licenseInfoPanel.add(hashLookupsRemainingLabel, gridBagConstraints); - org.openide.awt.Mnemonics.setLocalizedText(malwareScansMessageLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansMessageLabel.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(maxFileUploadsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxFileUploadsLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 3; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.gridy = 6; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - licenseInfoPanel.add(malwareScansMessageLabel, gridBagConstraints); + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + licenseInfoPanel.add(maxFileUploadsLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(fileUploadsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.fileUploadsRemainingLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 6; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + licenseInfoPanel.add(fileUploadsRemainingLabel, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(countersResetLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.countersResetLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 5; + gridBagConstraints.gridy = 7; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); licenseInfoPanel.add(countersResetLabel, gridBagConstraints); - org.openide.awt.Mnemonics.setLocalizedText(fileUploadsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.fileUploadsRemainingLabel.text")); // NOI18N + licenseErrorLabel.setForeground(java.awt.Color.RED); + org.openide.awt.Mnemonics.setLocalizedText(licenseErrorLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseErrorLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 4; + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 8; + gridBagConstraints.gridwidth = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); - licenseInfoPanel.add(fileUploadsRemainingLabel, gridBagConstraints); + licenseInfoPanel.add(licenseErrorLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; @@ -455,6 +482,12 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gotoLink(PURCHASE_URL); }//GEN-LAST:event_purchaseLinkMouseClicked + private void licenseInfoRemoveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_licenseInfoRemoveButtonActionPerformed + this.ctPersistence.deleteLicenseResponse(); + setLicenseDisplay(null, null); + setMalwareScansDisplay(null, null, null); + }//GEN-LAST:event_licenseInfoRemoveButtonActionPerformed + @NbBundle.Messages({ "# {0} - userName", "# {1} - email", @@ -477,10 +510,14 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { "CTMalwareScannerOptionsPanel_malwareScans_fileUploadsRemaining=File uploads remaining: {0}"}) private synchronized void renderLicenseState() { this.licenseInfoAddButton.setEnabled(!isLicenseAddRunning()); - + this.licenseInfoRemoveButton.setEnabled(this.licenseInfo != null && !isLicenseAddRunning()); + this.licenseInfoMessageLabel.setVisible(StringUtils.isNotBlank(this.licenseInfoMessage)); this.licenseInfoMessageLabel.setText(this.licenseInfoMessage); + this.licenseErrorLabel.setVisible(StringUtils.isNotBlank(this.authTokenError)); + this.licenseErrorLabel.setText(this.authTokenError); + if (licenseInfo == null) { this.licenseInfoExpiresLabel.setVisible(false); this.licenseInfoIdLabel.setVisible(false); @@ -719,6 +756,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { @Override protected void done() { AuthTokenResponse authTokenResponse = null; + String authTokenError = null; try { authTokenResponse = get(); } catch (InterruptedException | CancellationException ex) { @@ -726,24 +764,16 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { } catch (ExecutionException ex) { if (ex.getCause() != null && ex.getCause() instanceof CTCloudException cloudEx) { logger.log(Level.WARNING, "An API error occurred while fetching malware scans information for license", cloudEx); - JOptionPane.showMessageDialog( - CTMalwareScannerOptionsPanel.this, - cloudEx.getErrorDetails(), - Bundle.CTMalwareScannerOptionsPanel_MalwareScansFetcher_apiErr_title(), - JOptionPane.ERROR_MESSAGE); + authTokenError = "" + cloudEx.getErrorDetails() + ""; } else { logger.log(Level.WARNING, "An error occurred while fetching data", ex); - JOptionPane.showMessageDialog( - CTMalwareScannerOptionsPanel.this, - Bundle.CTMalwareScannerOptionsPanel_MalwareScansFetcher_localErr_desc(), - Bundle.CTMalwareScannerOptionsPanel_MalwareScansFetcher_localErr_title(), - JOptionPane.ERROR_MESSAGE); + authTokenError = "" + Bundle.CTMalwareScannerOptionsPanel_MalwareScansFetcher_localErr_desc() + ""; } } finally { synchronized (CTMalwareScannerOptionsPanel.this) { CTMalwareScannerOptionsPanel.this.authTokenFetcher = null; if (!this.isCancelled()) { - setMalwareScansDisplay(authTokenResponse, null); + setMalwareScansDisplay(authTokenResponse, null, authTokenError); } } } @@ -755,10 +785,12 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { private javax.swing.JLabel countersResetLabel; private javax.swing.JLabel fileUploadsRemainingLabel; private javax.swing.JLabel hashLookupsRemainingLabel; + private javax.swing.JLabel licenseErrorLabel; private javax.swing.JButton licenseInfoAddButton; private javax.swing.JLabel licenseInfoExpiresLabel; private javax.swing.JLabel licenseInfoIdLabel; private javax.swing.JLabel licenseInfoMessageLabel; + private javax.swing.JButton licenseInfoRemoveButton; private javax.swing.JLabel licenseInfoUserLabel; private javax.swing.JLabel malwareScansMessageLabel; private javax.swing.JPanel malwareScansPanel; diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/Bundle.properties-MERGED b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/Bundle.properties-MERGED index decbae37cf..0d44420b04 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/Bundle.properties-MERGED +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/Bundle.properties-MERGED @@ -33,6 +33,9 @@ MalwareScanIngestModule_ShareProcessing_noLookupsRemaining_desc=There are no mor MalwareScanIngestModule_ShareProcessing_noLookupsRemaining_title=No remaining lookups MalwareScanIngestModule_ShareProcessing_noUploadsRemaining_desc=There are no more remaining file uploads for this license at this time. File uploading will be disabled. MalwareScanIngestModule_ShareProcessing_noUploadsRemaining_title=No remaining file uploads +MalwareScanIngestModule_ShareProcessing_startup_generalException_desc=An exception occurred on MalwareScanIngestModule startup. See the log for more information. +MalwareScanIngestModule_ShareProcessing_startup_invalidLicenseWarning_desc=The current Cyber Triage license is no longer valid. Please remove the license from the Cyber Triage options panel. +MalwareScanIngestModule_ShareProcessing_startup_invalidLicenseWarning_title=Invalid License MalwareScanIngestModule_uploadFile_noRemainingFileUploads_desc=There are no more file uploads on this license at this time. File uploads will be disabled for remaining uploads. MalwareScanIngestModule_uploadFile_noRemainingFileUploads_title=No Remaining File Uploads # {0} - objectId diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java index fee67fdff2..4971d1b94e 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java @@ -161,7 +161,10 @@ class MalwareScanIngestModule implements FileIngestModule { "MalwareScanIngestModule_ShareProcessing_noUploadsRemaining_desc=There are no more remaining file uploads for this license at this time. File uploading will be disabled.", "MalwareScanIngestModule_ShareProcessing_lowUploadsLimitWarning_title=File Uploads Limit Low", "# {0} - remainingUploads", - "MalwareScanIngestModule_ShareProcessing_lowUploadsLimitWarning_desc=This license only has {0} file uploads remaining.",}) + "MalwareScanIngestModule_ShareProcessing_lowUploadsLimitWarning_desc=This license only has {0} file uploads remaining.", + "MalwareScanIngestModule_ShareProcessing_startup_generalException_desc=An exception occurred on MalwareScanIngestModule startup. See the log for more information.", + "MalwareScanIngestModule_ShareProcessing_startup_invalidLicenseWarning_title=Invalid License", + "MalwareScanIngestModule_ShareProcessing_startup_invalidLicenseWarning_desc=The current Cyber Triage license is no longer valid. Please remove the license from the Cyber Triage options panel."}) synchronized void startUp(IngestJobContext context, boolean uploadFiles) throws IngestModuleException { // only run this code once per startup if (ingestJobState != null) { @@ -170,9 +173,21 @@ class MalwareScanIngestModule implements FileIngestModule { try { ingestJobState = getNewJobState(context, uploadFiles); + } catch (CTCloudException cloudEx) { + ingestJobState = IngestJobState.DISABLED; + if (cloudEx.getErrorCode() == CTCloudException.ErrorCode.INVALID_KEY) { + notifyWarning( + Bundle.MalwareScanIngestModule_ShareProcessing_startup_invalidLicenseWarning_title(), + Bundle.MalwareScanIngestModule_ShareProcessing_startup_invalidLicenseWarning_desc(), + cloudEx); + } else { + logger.log(Level.WARNING, "An error occurred while starting the MalwareScanIngestModule.", cloudEx); + } + throw new IngestModuleException(cloudEx.getErrorDetails(), cloudEx); } catch (Exception ex) { ingestJobState = IngestJobState.DISABLED; - throw new IngestModuleException("An exception occurred on MalwareScanIngestModule startup", ex); + logger.log(Level.WARNING, "An error occurred while starting the MalwareScanIngestModule.", ex); + throw new IngestModuleException(Bundle.MalwareScanIngestModule_ShareProcessing_startup_generalException_desc(), ex); } } From 441be9e4fd7fd1bcb326fea6bcc88af0c43ef069 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 13 Sep 2023 15:32:59 -0400 Subject: [PATCH 02/52] UI fixes --- .../autopsy/ctoptions/CTOptionsPanel.java | 16 ++--- .../ctcloud/CTMalwareScannerOptionsPanel.form | 40 +++++++++---- .../ctcloud/CTMalwareScannerOptionsPanel.java | 24 ++++---- .../autopsy/incidentoptions/Bundle.properties | 4 +- .../incidentoptions/Bundle.properties-MERGED | 4 +- .../CTIncidentImportOptionsPanel.form | 59 ++++++++++++++++--- .../CTIncidentImportOptionsPanel.java | 24 +++++++- 7 files changed, 131 insertions(+), 40 deletions(-) diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java index 2b6cffe789..59777deb58 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java @@ -70,14 +70,14 @@ public class CTOptionsPanel extends IngestModuleGlobalSettingsPanel { } private void addSubOptionsPanels(List subPanels) { - GridBagConstraints disclaimerConstraints = new GridBagConstraints(); - disclaimerConstraints.gridx = 0; - disclaimerConstraints.gridy = 0; - disclaimerConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - disclaimerConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - disclaimerConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - disclaimerConstraints.weighty = 0; - disclaimerConstraints.weightx = 0; + GridBagConstraints disclaimerConstraints = new GridBagConstraints(); + disclaimerConstraints.gridx = 0; + disclaimerConstraints.gridy = 0; + disclaimerConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + disclaimerConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + disclaimerConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + disclaimerConstraints.weighty = 0; + disclaimerConstraints.weightx = 0; for (int i = 0; i < subPanels.size(); i++) { CTOptionsSubPanel subPanel = subPanels.get(i); diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form index 185d634399..b9c3961153 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form @@ -1,6 +1,14 @@
+ + + + + + + + @@ -11,10 +19,10 @@ - + - + @@ -25,10 +33,16 @@ + + + + + + - - + + @@ -40,6 +54,12 @@ + + + + + + @@ -72,7 +92,7 @@ - + @@ -108,7 +128,7 @@ - + @@ -150,7 +170,7 @@ - + @@ -210,7 +230,7 @@ - + @@ -225,7 +245,7 @@ - + @@ -238,7 +258,7 @@ - + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java index 1cf5accde9..70ce1cd1de 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java @@ -252,13 +252,19 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { purchaseFromLabel = new javax.swing.JLabel(); purchaseLink = new javax.swing.JLabel(); - setLayout(new java.awt.GridBagLayout()); + setMaximumSize(new java.awt.Dimension(650, 2147483647)); + setPreferredSize(null); + setLayout(new java.awt.BorderLayout()); malwareScansPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansPanel.border.title"))); // NOI18N + malwareScansPanel.setMaximumSize(new java.awt.Dimension(650, 2147483647)); + malwareScansPanel.setPreferredSize(null); malwareScansPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(disclaimer, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.disclaimer.text")); // NOI18N disclaimer.setVerticalAlignment(javax.swing.SwingConstants.TOP); + disclaimer.setMaximumSize(new java.awt.Dimension(600, 16)); + disclaimer.setPreferredSize(null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; @@ -274,6 +280,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; + gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; @@ -302,6 +309,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; + gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); @@ -339,7 +347,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); @@ -385,6 +393,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 7; + gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); @@ -397,6 +406,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.gridy = 8; gridBagConstraints.gridwidth = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; licenseInfoPanel.add(licenseErrorLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); @@ -433,20 +443,14 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 3; + gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); malwareScansPanel.add(purchasePanel, gridBagConstraints); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 2; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - add(malwareScansPanel, gridBagConstraints); + add(malwareScansPanel, java.awt.BorderLayout.CENTER); }// //GEN-END:initComponents @Messages({ diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties index 48a2628742..9f50364c79 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties @@ -3,13 +3,13 @@ # Click nbfs://nbhost/SystemFileSystem/Templates/Other/properties.properties to edit this template CTIncidentImportOptionsPanel.border.title=Local Settings -CTIncidentImportOptionsPanel.fileRepoPathLabel.text=Update the Cyber Triage Data Folder if you are not using the default location: +CTIncidentImportOptionsPanel.fileRepoPathLabel.text=Update the Cyber Triage Data Folder if you are not using the default location: CTIncidentImportOptionsPanel.fileRepoPathField.text= CTIncidentImportOptionsPanel.fileRepoBrowseButton.text=Browse CTIncidentImportOptionsPanel.caseOpenWarningLabel.text=Some settings cannot be modified while a case is open. CTIncidentImportOptionsPanel.fileRepoFileChooser.title=Cyber Triage Data Folder CTIncidentImportOptionsPanel.border.title_1=Incident Importer -CTIncidentImportOptionsPanel.incidentTextLabel.text=The Cyber Triage Incident Import module allows you to open data collected by Cyber Triage in Autopsy. To use this feature you must install the Cyber Triage Import Module. +CTIncidentImportOptionsPanel.incidentTextLabel.text=The Cyber Triage Incident Import module allows you to open data collected by Cyber Triage in Autopsy. To use this feature you must install the Cyber Triage Import Module. CTincidentImportOptionsPanel.instructionsTextLabel.text= CTIncidentImportOptionsPanel.instructionsTextLabel.text=For instructions on obtaining the module refer to: CTIncidentImportOptionsPanel.importModule.text=Cyber Triage Import Module: diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties-MERGED b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties-MERGED index dd406e6725..0e42f25b3a 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties-MERGED +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties-MERGED @@ -3,13 +3,13 @@ # Click nbfs://nbhost/SystemFileSystem/Templates/Other/properties.properties to edit this template CTIncidentImportOptionsPanel.border.title=Local Settings -CTIncidentImportOptionsPanel.fileRepoPathLabel.text=Update the Cyber Triage Data Folder if you are not using the default location: +CTIncidentImportOptionsPanel.fileRepoPathLabel.text=Update the Cyber Triage Data Folder if you are not using the default location: CTIncidentImportOptionsPanel.fileRepoPathField.text= CTIncidentImportOptionsPanel.fileRepoBrowseButton.text=Browse CTIncidentImportOptionsPanel.caseOpenWarningLabel.text=Some settings cannot be modified while a case is open. CTIncidentImportOptionsPanel.fileRepoFileChooser.title=Cyber Triage Data Folder CTIncidentImportOptionsPanel.border.title_1=Incident Importer -CTIncidentImportOptionsPanel.incidentTextLabel.text=The Cyber Triage Incident Import module allows you to open data collected by Cyber Triage in Autopsy. To use this feature you must install the Cyber Triage Import Module. +CTIncidentImportOptionsPanel.incidentTextLabel.text=The Cyber Triage Incident Import module allows you to open data collected by Cyber Triage in Autopsy. To use this feature you must install the Cyber Triage Import Module. CTincidentImportOptionsPanel.instructionsTextLabel.text= CTIncidentImportOptionsPanel.instructionsTextLabel.text=For instructions on obtaining the module refer to: CTIncidentImportOptionsPanel.importModule.text=Cyber Triage Import Module: diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form index fd11f53ee8..9c98d8ae1b 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form @@ -9,6 +9,12 @@ + + + + + + @@ -26,9 +32,14 @@ + + + + + - + @@ -39,10 +50,16 @@ + + + + + + - + @@ -51,6 +68,9 @@ + + + @@ -58,7 +78,7 @@ - + @@ -77,9 +97,14 @@ + + + + + - + @@ -90,6 +115,9 @@ + + + @@ -108,22 +136,30 @@ + + + - + + + + + + - + @@ -134,6 +170,12 @@ + + + + + + @@ -150,6 +192,9 @@ + + + @@ -189,7 +234,7 @@ - + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java index 40a2c0fe3f..aa5f0bcc57 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java @@ -161,24 +161,31 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { caseOpenWarningLabel = new javax.swing.JLabel(); setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.border.title_1"))); // NOI18N + setMaximumSize(new java.awt.Dimension(650, 2147483647)); + setPreferredSize(null); setLayout(new java.awt.GridBagLayout()); + incidentTextPanel.setPreferredSize(null); incidentTextPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(incidentTextLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.incidentTextLabel.text")); // NOI18N + incidentTextLabel.setMaximumSize(new java.awt.Dimension(600, 16)); + incidentTextLabel.setPreferredSize(null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); incidentTextPanel.add(incidentTextLabel, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(importModule, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.importModule.text")); // NOI18N + importModule.setPreferredSize(null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 3); incidentTextPanel.add(importModule, gridBagConstraints); @@ -194,11 +201,15 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.weightx = 1.0; add(incidentTextPanel, gridBagConstraints); + instructionsPanel.setPreferredSize(null); instructionsPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(instructionsTextLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.instructionsTextLabel.text")); // NOI18N + instructionsTextLabel.setPreferredSize(null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; @@ -209,6 +220,7 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(instructionsLinkLabel, getHtmlLink(CT_IMPORTER_DOC_LINK)); instructionsLinkLabel.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + instructionsLinkLabel.setPreferredSize(null); instructionsLinkLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { instructionsLinkLabelMouseClicked(evt); @@ -218,18 +230,24 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); instructionsPanel.add(instructionsLinkLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; add(instructionsPanel, gridBagConstraints); + repoPanel.setPreferredSize(null); repoPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(fileRepoPathLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.fileRepoPathLabel.text")); // NOI18N + fileRepoPathLabel.setMaximumSize(new java.awt.Dimension(600, 16)); + fileRepoPathLabel.setPreferredSize(null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; @@ -239,6 +257,7 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { repoPanel.add(fileRepoPathLabel, gridBagConstraints); fileRepoPathField.setText(org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.fileRepoPathField.text")); // NOI18N + fileRepoPathField.setPreferredSize(null); fileRepoPathField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fileRepoPathFieldActionPerformed(evt); @@ -274,13 +293,16 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; + gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); repoPanel.add(caseOpenWarningLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; add(repoPanel, gridBagConstraints); }// //GEN-END:initComponents private void fileRepoBrowseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileRepoBrowseButtonActionPerformed From b0a0b5768d1cc12a6d29c0b0a87f4d11999fa7fc Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 13 Sep 2023 20:40:36 -0400 Subject: [PATCH 03/52] layout changes --- .../ctcloud/CTMalwareScannerOptionsPanel.form | 103 ++++++++++-------- .../ctcloud/CTMalwareScannerOptionsPanel.java | 91 +++++++++------- .../CTIncidentImportOptionsPanel.form | 21 +--- .../CTIncidentImportOptionsPanel.java | 7 +- 4 files changed, 116 insertions(+), 106 deletions(-) diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form index b9c3961153..75138db2d4 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form @@ -5,9 +5,6 @@ - - - @@ -19,7 +16,7 @@ - + @@ -37,7 +34,7 @@ - + @@ -55,7 +52,7 @@ - + @@ -72,6 +69,11 @@ + + + + + @@ -132,36 +134,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -170,7 +142,7 @@ - + @@ -182,7 +154,7 @@ - + @@ -194,7 +166,7 @@ - + @@ -206,7 +178,7 @@ - + @@ -218,7 +190,7 @@ - + @@ -230,7 +202,7 @@ - + @@ -245,10 +217,55 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java index 70ce1cd1de..46c0952d0d 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java @@ -239,8 +239,6 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { licenseInfoExpiresLabel = new javax.swing.JLabel(); licenseInfoIdLabel = new javax.swing.JLabel(); licenseInfoUserLabel = new javax.swing.JLabel(); - licenseInfoAddButton = new javax.swing.JButton(); - licenseInfoRemoveButton = new javax.swing.JButton(); malwareScansMessageLabel = new javax.swing.JLabel(); maxHashLookupsLabel = new javax.swing.JLabel(); hashLookupsRemainingLabel = new javax.swing.JLabel(); @@ -248,22 +246,24 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { fileUploadsRemainingLabel = new javax.swing.JLabel(); countersResetLabel = new javax.swing.JLabel(); licenseErrorLabel = new javax.swing.JLabel(); + javax.swing.JPanel buttonPanel = new javax.swing.JPanel(); + licenseInfoAddButton = new javax.swing.JButton(); + licenseInfoRemoveButton = new javax.swing.JButton(); javax.swing.JPanel purchasePanel = new javax.swing.JPanel(); purchaseFromLabel = new javax.swing.JLabel(); purchaseLink = new javax.swing.JLabel(); setMaximumSize(new java.awt.Dimension(650, 2147483647)); - setPreferredSize(null); setLayout(new java.awt.BorderLayout()); malwareScansPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansPanel.border.title"))); // NOI18N malwareScansPanel.setMaximumSize(new java.awt.Dimension(650, 2147483647)); - malwareScansPanel.setPreferredSize(null); + malwareScansPanel.setPreferredSize(new java.awt.Dimension(650, 181)); malwareScansPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(disclaimer, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.disclaimer.text")); // NOI18N disclaimer.setVerticalAlignment(javax.swing.SwingConstants.TOP); - disclaimer.setMaximumSize(new java.awt.Dimension(600, 16)); + disclaimer.setMaximumSize(new java.awt.Dimension(600, 32)); disclaimer.setPreferredSize(null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; @@ -274,6 +274,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); malwareScansPanel.add(disclaimer, gridBagConstraints); + licenseInfoPanel.setPreferredSize(null); licenseInfoPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(licenseInfoMessageLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoMessageLabel.text")); // NOI18N @@ -315,38 +316,10 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); licenseInfoPanel.add(licenseInfoUserLabel, gridBagConstraints); - org.openide.awt.Mnemonics.setLocalizedText(licenseInfoAddButton, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoAddButton.text")); // NOI18N - licenseInfoAddButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - licenseInfoAddButtonActionPerformed(evt); - } - }); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 2; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 10, 5); - licenseInfoPanel.add(licenseInfoAddButton, gridBagConstraints); - - org.openide.awt.Mnemonics.setLocalizedText(licenseInfoRemoveButton, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoRemoveButton.text")); // NOI18N - licenseInfoRemoveButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - licenseInfoRemoveButtonActionPerformed(evt); - } - }); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 3; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); - licenseInfoPanel.add(licenseInfoRemoveButton, gridBagConstraints); - org.openide.awt.Mnemonics.setLocalizedText(malwareScansMessageLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansMessageLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 4; + gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; @@ -356,7 +329,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(maxHashLookupsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxHashLookupsLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 5; + gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); @@ -365,7 +338,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(hashLookupsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.hashLookupsRemainingLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 5; + gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); @@ -374,7 +347,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(maxFileUploadsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxFileUploadsLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 6; + gridBagConstraints.gridy = 5; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); @@ -383,7 +356,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(fileUploadsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.fileUploadsRemainingLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 6; + gridBagConstraints.gridy = 5; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); @@ -392,7 +365,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(countersResetLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.countersResetLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 7; + gridBagConstraints.gridy = 6; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; @@ -403,12 +376,50 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(licenseErrorLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseErrorLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 8; + gridBagConstraints.gridy = 7; gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; licenseInfoPanel.add(licenseErrorLabel, gridBagConstraints); + buttonPanel.setLayout(new java.awt.GridBagLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(licenseInfoAddButton, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoAddButton.text")); // NOI18N + licenseInfoAddButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + licenseInfoAddButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + buttonPanel.add(licenseInfoAddButton, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(licenseInfoRemoveButton, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoRemoveButton.text")); // NOI18N + licenseInfoRemoveButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + licenseInfoRemoveButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + buttonPanel.add(licenseInfoRemoveButton, gridBagConstraints); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 1; + gridBagConstraints.gridheight = 6; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + licenseInfoPanel.add(buttonPanel, gridBagConstraints); + gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form index 9c98d8ae1b..077c385a23 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form @@ -13,7 +13,7 @@ - + @@ -26,17 +26,12 @@ - + - - - - - @@ -51,7 +46,7 @@ - + @@ -97,11 +92,6 @@ - - - - - @@ -152,11 +142,6 @@ - - - - - diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java index aa5f0bcc57..e289a55cb3 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java @@ -162,14 +162,13 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.border.title_1"))); // NOI18N setMaximumSize(new java.awt.Dimension(650, 2147483647)); - setPreferredSize(null); + setPreferredSize(new java.awt.Dimension(650, 176)); setLayout(new java.awt.GridBagLayout()); - incidentTextPanel.setPreferredSize(null); incidentTextPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(incidentTextLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.incidentTextLabel.text")); // NOI18N - incidentTextLabel.setMaximumSize(new java.awt.Dimension(600, 16)); + incidentTextLabel.setMaximumSize(new java.awt.Dimension(600, 32)); incidentTextLabel.setPreferredSize(null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; @@ -205,7 +204,6 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.weightx = 1.0; add(incidentTextPanel, gridBagConstraints); - instructionsPanel.setPreferredSize(null); instructionsPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(instructionsTextLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.instructionsTextLabel.text")); // NOI18N @@ -242,7 +240,6 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.weightx = 1.0; add(instructionsPanel, gridBagConstraints); - repoPanel.setPreferredSize(null); repoPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(fileRepoPathLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.fileRepoPathLabel.text")); // NOI18N From cc17c1a96ba23836c129496f56356a74a6af431b Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 14 Sep 2023 09:27:32 -0400 Subject: [PATCH 04/52] changes for layout --- .../df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java index 59777deb58..07d2bf8d20 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java @@ -39,7 +39,7 @@ import org.sleuthkit.autopsy.ingest.IngestModuleGlobalSettingsPanel; */ public class CTOptionsPanel extends IngestModuleGlobalSettingsPanel { - private static final int MAX_SUBPANEL_WIDTH = 650; + private static final int MAX_SUBPANEL_WIDTH = 750; private static final Logger logger = Logger.getLogger(CTOptionsPanel.class.getName()); From 5a6a17380e76a8490b50b5cd8407d4677bf5bf66 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 14 Sep 2023 10:27:24 -0400 Subject: [PATCH 05/52] UI updates --- .../autopsy/ctoptions/CTOptionsPanel.java | 2 +- .../ctoptions/ctcloud/Bundle.properties | 2 +- .../ctcloud/Bundle.properties-MERGED | 2 +- .../ctcloud/CTMalwareScannerOptionsPanel.form | 283 ++++++++++-------- .../ctcloud/CTMalwareScannerOptionsPanel.java | 216 ++++++------- .../CTIncidentImportOptionsPanel.form | 2 +- .../CTIncidentImportOptionsPanel.java | 2 +- 7 files changed, 270 insertions(+), 239 deletions(-) diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java index 07d2bf8d20..99e017311a 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java @@ -39,7 +39,7 @@ import org.sleuthkit.autopsy.ingest.IngestModuleGlobalSettingsPanel; */ public class CTOptionsPanel extends IngestModuleGlobalSettingsPanel { - private static final int MAX_SUBPANEL_WIDTH = 750; + private static final int MAX_SUBPANEL_WIDTH = 700; private static final Logger logger = Logger.getLogger(CTOptionsPanel.class.getName()); diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties index 85ee5a7663..2d47f1ed1f 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties @@ -23,8 +23,8 @@ EULADialog.cancelButton.text=Cancel EULADialog.acceptButton.text=Accept EULADialog.title=Cyber Triage End User License Agreement CTMalwareScannerOptionsPanel.licenseInfoMessageLabel.text= -CTMalwareScannerOptionsPanel.disclaimer.text=The Cyber Triage Malware Scanner module uses 40+ malware scanning engines to identify if Windows executables are malicious. It requires a paid subscription to use. CTMalwareScannerOptionsPanel.purchaseFromLabel.text=For licensing information, visit CTLicenseDialog.licenseNumberTextField.toolTipText=AUT-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX CTMalwareScannerOptionsPanel.licenseErrorLabel.text= CTMalwareScannerOptionsPanel.licenseInfoRemoveButton.text=Remove License +CTMalwareScannerOptionsPanel.text=The Cyber Triage Malware Scanner module uses 40+ malware scanning engines to identify if Windows executables are malicious. It requires a paid subscription to use. diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED index bc9fbf0a2d..d41692d048 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED @@ -63,8 +63,8 @@ EULADialog.cancelButton.text=Cancel EULADialog.acceptButton.text=Accept EULADialog.title=Cyber Triage End User License Agreement CTMalwareScannerOptionsPanel.licenseInfoMessageLabel.text= -CTMalwareScannerOptionsPanel.disclaimer.text=The Cyber Triage Malware Scanner module uses 40+ malware scanning engines to identify if Windows executables are malicious. It requires a paid subscription to use. CTMalwareScannerOptionsPanel.purchaseFromLabel.text=For licensing information, visit CTLicenseDialog.licenseNumberTextField.toolTipText=AUT-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX CTMalwareScannerOptionsPanel.licenseErrorLabel.text= CTMalwareScannerOptionsPanel.licenseInfoRemoveButton.text=Remove License +CTMalwareScannerOptionsPanel.text=The Cyber Triage Malware Scanner module uses 40+ malware scanning engines to identify if Windows executables are malicious. It requires a paid subscription to use. diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form index 75138db2d4..7c229dd137 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form @@ -3,7 +3,7 @@ - + @@ -19,7 +19,7 @@ - + @@ -33,13 +33,10 @@ - - - - - + + @@ -48,14 +45,15 @@ - + - + + - + @@ -69,11 +67,6 @@ - - - - - @@ -98,129 +91,30 @@ - + - - + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -228,7 +122,7 @@ - + @@ -245,7 +139,7 @@ - + @@ -266,6 +160,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java index 46c0952d0d..3cbad65a18 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java @@ -236,6 +236,10 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { javax.swing.JLabel disclaimer = new javax.swing.JLabel(); javax.swing.JPanel licenseInfoPanel = new javax.swing.JPanel(); licenseInfoMessageLabel = new javax.swing.JLabel(); + javax.swing.JPanel buttonSpacer = new javax.swing.JPanel(); + javax.swing.JPanel buttonPanel = new javax.swing.JPanel(); + licenseInfoAddButton = new javax.swing.JButton(); + licenseInfoRemoveButton = new javax.swing.JButton(); licenseInfoExpiresLabel = new javax.swing.JLabel(); licenseInfoIdLabel = new javax.swing.JLabel(); licenseInfoUserLabel = new javax.swing.JLabel(); @@ -246,25 +250,22 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { fileUploadsRemainingLabel = new javax.swing.JLabel(); countersResetLabel = new javax.swing.JLabel(); licenseErrorLabel = new javax.swing.JLabel(); - javax.swing.JPanel buttonPanel = new javax.swing.JPanel(); - licenseInfoAddButton = new javax.swing.JButton(); - licenseInfoRemoveButton = new javax.swing.JButton(); javax.swing.JPanel purchasePanel = new javax.swing.JPanel(); purchaseFromLabel = new javax.swing.JLabel(); purchaseLink = new javax.swing.JLabel(); - setMaximumSize(new java.awt.Dimension(650, 2147483647)); - setLayout(new java.awt.BorderLayout()); + setMaximumSize(new java.awt.Dimension(650, 32767)); + setLayout(new java.awt.GridBagLayout()); malwareScansPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansPanel.border.title"))); // NOI18N malwareScansPanel.setMaximumSize(new java.awt.Dimension(650, 2147483647)); - malwareScansPanel.setPreferredSize(new java.awt.Dimension(650, 181)); malwareScansPanel.setLayout(new java.awt.GridBagLayout()); - org.openide.awt.Mnemonics.setLocalizedText(disclaimer, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.disclaimer.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(disclaimer, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.text")); // NOI18N disclaimer.setVerticalAlignment(javax.swing.SwingConstants.TOP); - disclaimer.setMaximumSize(new java.awt.Dimension(600, 32)); - disclaimer.setPreferredSize(null); + disclaimer.setMaximumSize(new java.awt.Dimension(650, 32)); + disclaimer.setName(""); // NOI18N + disclaimer.setPreferredSize(new java.awt.Dimension(650, 32)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; @@ -274,7 +275,6 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); malwareScansPanel.add(disclaimer, gridBagConstraints); - licenseInfoPanel.setPreferredSize(null); licenseInfoPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(licenseInfoMessageLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoMessageLabel.text")); // NOI18N @@ -288,100 +288,16 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); licenseInfoPanel.add(licenseInfoMessageLabel, gridBagConstraints); - org.openide.awt.Mnemonics.setLocalizedText(licenseInfoExpiresLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoExpiresLabel.text")); // NOI18N + buttonSpacer.setMaximumSize(new java.awt.Dimension(32767, 0)); + buttonSpacer.setMinimumSize(new java.awt.Dimension(5, 0)); + buttonSpacer.setPreferredSize(new java.awt.Dimension(5, 0)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - licenseInfoPanel.add(licenseInfoExpiresLabel, gridBagConstraints); - - org.openide.awt.Mnemonics.setLocalizedText(licenseInfoIdLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoIdLabel.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 1; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - licenseInfoPanel.add(licenseInfoIdLabel, gridBagConstraints); - - org.openide.awt.Mnemonics.setLocalizedText(licenseInfoUserLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoUserLabel.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - licenseInfoPanel.add(licenseInfoUserLabel, gridBagConstraints); - - org.openide.awt.Mnemonics.setLocalizedText(malwareScansMessageLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansMessageLabel.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 3; - gridBagConstraints.gridwidth = 2; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - licenseInfoPanel.add(malwareScansMessageLabel, gridBagConstraints); - - org.openide.awt.Mnemonics.setLocalizedText(maxHashLookupsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxHashLookupsLabel.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 4; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - licenseInfoPanel.add(maxHashLookupsLabel, gridBagConstraints); - - org.openide.awt.Mnemonics.setLocalizedText(hashLookupsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.hashLookupsRemainingLabel.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 4; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); - licenseInfoPanel.add(hashLookupsRemainingLabel, gridBagConstraints); - - org.openide.awt.Mnemonics.setLocalizedText(maxFileUploadsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxFileUploadsLabel.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 5; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); - licenseInfoPanel.add(maxFileUploadsLabel, gridBagConstraints); - - org.openide.awt.Mnemonics.setLocalizedText(fileUploadsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.fileUploadsRemainingLabel.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 5; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); - licenseInfoPanel.add(fileUploadsRemainingLabel, gridBagConstraints); - - org.openide.awt.Mnemonics.setLocalizedText(countersResetLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.countersResetLabel.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 6; - gridBagConstraints.gridwidth = 2; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); - licenseInfoPanel.add(countersResetLabel, gridBagConstraints); - - licenseErrorLabel.setForeground(java.awt.Color.RED); - org.openide.awt.Mnemonics.setLocalizedText(licenseErrorLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseErrorLabel.text")); // NOI18N - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 7; - gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; - licenseInfoPanel.add(licenseErrorLabel, gridBagConstraints); + licenseInfoPanel.add(buttonSpacer, gridBagConstraints); buttonPanel.setLayout(new java.awt.GridBagLayout()); @@ -396,7 +312,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; - gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); buttonPanel.add(licenseInfoAddButton, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(licenseInfoRemoveButton, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoRemoveButton.text")); // NOI18N @@ -416,10 +332,105 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; - gridBagConstraints.gridheight = 6; + gridBagConstraints.gridheight = 7; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; licenseInfoPanel.add(buttonPanel, gridBagConstraints); + org.openide.awt.Mnemonics.setLocalizedText(licenseInfoExpiresLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoExpiresLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + licenseInfoPanel.add(licenseInfoExpiresLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(licenseInfoIdLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoIdLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + licenseInfoPanel.add(licenseInfoIdLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(licenseInfoUserLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoUserLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 3; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + licenseInfoPanel.add(licenseInfoUserLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(malwareScansMessageLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansMessageLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 4; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + licenseInfoPanel.add(malwareScansMessageLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(maxHashLookupsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxHashLookupsLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 5; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + licenseInfoPanel.add(maxHashLookupsLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(hashLookupsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.hashLookupsRemainingLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 5; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + licenseInfoPanel.add(hashLookupsRemainingLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(maxFileUploadsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxFileUploadsLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 6; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + licenseInfoPanel.add(maxFileUploadsLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(fileUploadsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.fileUploadsRemainingLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 6; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + licenseInfoPanel.add(fileUploadsRemainingLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(countersResetLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.countersResetLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 7; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + licenseInfoPanel.add(countersResetLabel, gridBagConstraints); + + licenseErrorLabel.setForeground(java.awt.Color.RED); + org.openide.awt.Mnemonics.setLocalizedText(licenseErrorLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseErrorLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 8; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + licenseInfoPanel.add(licenseErrorLabel, gridBagConstraints); + gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; @@ -461,7 +472,10 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); malwareScansPanel.add(purchasePanel, gridBagConstraints); - add(malwareScansPanel, java.awt.BorderLayout.CENTER); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.weightx = 1.0; + add(malwareScansPanel, gridBagConstraints); }// //GEN-END:initComponents @Messages({ diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form index 077c385a23..549502e0da 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form @@ -135,7 +135,7 @@ - + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java index e289a55cb3..ddda4e9078 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java @@ -229,7 +229,7 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + gridBagConstraints.insets = new java.awt.Insets(5, 2, 5, 5); instructionsPanel.add(instructionsLinkLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); From f57eefed1527184927feab7d8873b55075f8b25b Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 14 Sep 2023 14:20:27 -0400 Subject: [PATCH 06/52] updates --- .../ctcloud/Bundle.properties-MERGED | 2 +- .../ctcloud/CTMalwareScannerOptionsPanel.form | 24 ++-- .../ctcloud/CTMalwareScannerOptionsPanel.java | 115 ++++++++---------- .../CTIncidentImportOptionsPanel.form | 15 ++- .../CTIncidentImportOptionsPanel.java | 5 +- .../malwarescan/MalwareScanIngestModule.java | 20 +-- 6 files changed, 84 insertions(+), 97 deletions(-) diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED index d41692d048..537ca234f9 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED @@ -28,7 +28,7 @@ CTMalwareScannerOptionsPanel_licenseAddDialog_desc=License Number: CTMalwareScannerOptionsPanel_licenseAddDialog_title=Add a License... CTMalwareScannerOptionsPanel_licenseAddDialogEnteredErr_desc=The license number has already been entered CTMalwareScannerOptionsPanel_licenseAddDialogEnteredErr_title=License Number Already Entered -CTMalwareScannerOptionsPanel_licenseAddDialogPatternErr_desc=Please verify that license number is of format 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' +CTMalwareScannerOptionsPanel_licenseAddDialogPatternErr_desc=Please verify that license number is of format 'AUT-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' CTMalwareScannerOptionsPanel_licenseAddDialogPatternErr_title=Invalid License Number CTMalwareScannerOptionsPanel_LicenseFetcher_apiErr_title=Server Error # {0} - licenseCode diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form index 7c229dd137..0d292c57ef 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form @@ -109,7 +109,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -168,7 +168,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -192,7 +192,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -216,7 +216,7 @@ - + @@ -228,7 +228,7 @@ - + @@ -240,7 +240,7 @@ - + @@ -252,7 +252,7 @@ - + @@ -264,7 +264,7 @@ - + @@ -279,7 +279,7 @@ - + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java index 3cbad65a18..e3fc7c358c 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java @@ -40,7 +40,6 @@ import java.util.Optional; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.logging.Level; -import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import org.apache.commons.lang3.StringUtils; @@ -139,7 +138,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { this.purchaseLink.setVisible(false); } else { this.purchaseFromLabel.setVisible(true); - this.purchaseLink.setVisible(true); + this.purchaseLink.setVisible(true); } } @@ -161,7 +160,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { private synchronized LicenseResponse getLicenseInfo() { return this.licenseInfo == null ? null : this.licenseInfo.getLicenseResponse(); - } + } private synchronized void setLicenseDisplay(LicenseInfo licenseInfo, String licenseMessage) { this.licenseInfo = licenseInfo; @@ -222,6 +221,12 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { this.authTokenFetcher.execute(); } + private static String htmlWrap(String msg) { + return msg == null + ? null + : "" + msg + ""; + } + /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always @@ -293,7 +298,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { buttonSpacer.setPreferredSize(new java.awt.Dimension(5, 0)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 1; + gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; @@ -331,7 +336,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 1; + gridBagConstraints.gridy = 2; gridBagConstraints.gridheight = 7; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; licenseInfoPanel.add(buttonPanel, gridBagConstraints); @@ -339,7 +344,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(licenseInfoExpiresLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoExpiresLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 2; + gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); @@ -348,7 +353,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(licenseInfoIdLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoIdLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 2; + gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); @@ -357,7 +362,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(licenseInfoUserLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoUserLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 3; + gridBagConstraints.gridy = 4; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; @@ -367,7 +372,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(malwareScansMessageLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansMessageLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 4; + gridBagConstraints.gridy = 5; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; @@ -377,7 +382,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(maxHashLookupsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxHashLookupsLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 5; + gridBagConstraints.gridy = 6; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); @@ -386,7 +391,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(hashLookupsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.hashLookupsRemainingLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 5; + gridBagConstraints.gridy = 6; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); @@ -395,7 +400,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(maxFileUploadsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxFileUploadsLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 6; + gridBagConstraints.gridy = 7; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); @@ -404,7 +409,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(fileUploadsRemainingLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.fileUploadsRemainingLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 6; + gridBagConstraints.gridy = 7; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); @@ -413,7 +418,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(countersResetLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.countersResetLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 7; + gridBagConstraints.gridy = 8; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; @@ -424,11 +429,12 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { org.openide.awt.Mnemonics.setLocalizedText(licenseErrorLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseErrorLabel.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 8; + gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); licenseInfoPanel.add(licenseErrorLabel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); @@ -484,7 +490,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { "CTMalwareScannerOptionsPanel_licenseAddDialogEnteredErr_title=License Number Already Entered", "CTMalwareScannerOptionsPanel_licenseAddDialogEnteredErr_desc=The license number has already been entered", "CTMalwareScannerOptionsPanel_licenseAddDialogPatternErr_title=Invalid License Number", - "CTMalwareScannerOptionsPanel_licenseAddDialogPatternErr_desc=Please verify that license number is of format 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'"}) + "CTMalwareScannerOptionsPanel_licenseAddDialogPatternErr_desc=Please verify that license number is of format 'AUT-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'"}) private void licenseInfoAddButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_licenseInfoAddButtonActionPerformed CTLicenseDialog licenseDialog = new CTLicenseDialog(WindowManager.getDefault().getMainWindow(), true); licenseDialog.setLocationRelativeTo(this); @@ -498,11 +504,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { } } - JOptionPane.showMessageDialog( - this, - Bundle.CTMalwareScannerOptionsPanel_licenseAddDialogEnteredErr_desc(), - Bundle.CTMalwareScannerOptionsPanel_licenseAddDialogEnteredErr_title(), - JOptionPane.INFORMATION_MESSAGE); + setMalwareScansDisplay(null, null, htmlWrap(Bundle.CTMalwareScannerOptionsPanel_licenseAddDialogEnteredErr_desc())); } }//GEN-LAST:event_licenseInfoAddButtonActionPerformed @@ -540,22 +542,22 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { private synchronized void renderLicenseState() { this.licenseInfoAddButton.setEnabled(!isLicenseAddRunning()); this.licenseInfoRemoveButton.setEnabled(this.licenseInfo != null && !isLicenseAddRunning()); - + this.licenseInfoMessageLabel.setVisible(StringUtils.isNotBlank(this.licenseInfoMessage)); this.licenseInfoMessageLabel.setText(this.licenseInfoMessage); this.licenseErrorLabel.setVisible(StringUtils.isNotBlank(this.authTokenError)); this.licenseErrorLabel.setText(this.authTokenError); - + if (licenseInfo == null) { this.licenseInfoExpiresLabel.setVisible(false); this.licenseInfoIdLabel.setVisible(false); this.licenseInfoUserLabel.setVisible(false); this.purchaseFromLabel.setVisible(true); - this.purchaseLink.setVisible(true); + this.purchaseLink.setVisible(true); } else { this.purchaseFromLabel.setVisible(false); - this.purchaseLink.setVisible(false); + this.purchaseLink.setVisible(false); this.licenseInfoExpiresLabel.setVisible(true); this.licenseInfoExpiresLabel.setText(Bundle.CTMalwareScannerOptionsPanel_licenseInfo_expires( @@ -658,16 +660,12 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { this.licenseInfo = LicenseDecryptorUtil.getInstance().createLicenseInfo(licenseResponse); this.firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); } - } catch (IOException | InvalidLicenseException ex) { - logger.log(Level.WARNING, "An error occurred while fetching data", ex); - JOptionPane.showMessageDialog( - CTMalwareScannerOptionsPanel.this, - Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_desc(), - Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_title(), - JOptionPane.ERROR_MESSAGE); - } finally { setLicenseDisplay(this.licenseInfo, null); loadMalwareScansInfo(this.licenseInfo); + } catch (IOException | InvalidLicenseException ex) { + logger.log(Level.WARNING, "An error occurred while fetching data", ex); + setLicenseDisplay(this.licenseInfo, null); + setMalwareScansDisplay(null, null, htmlWrap(Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_desc())); } } @@ -700,16 +698,11 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { // if no result, show unauthorized if (licenseResponse == null) { logger.log(Level.WARNING, "An API error occurred while fetching license information. License fetch returned no result."); - JOptionPane.showMessageDialog( - CTMalwareScannerOptionsPanel.this, - CTCloudException.ErrorCode.UN_AUTHORIZED.getDescription(), - Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_apiErr_title(), - JOptionPane.ERROR_MESSAGE); - setLicenseDisplay(licenseInfo, null); - loadMalwareScansInfo(licenseInfo); + setLicenseDisplay(null, null); + setMalwareScansDisplay(null, null, htmlWrap(CTCloudException.ErrorCode.UN_AUTHORIZED.getDescription())); return; } - + // if not successful response if (!Boolean.TRUE.equals(licenseResponse.isSuccess())) { logger.log(Level.WARNING, "An API error occurred while fetching license information. License fetch was not successful"); @@ -718,41 +711,29 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { if (!StringUtils.isBlank(licenseResponse.getErrorMsg())) { message = licenseResponse.getErrorMsg(); } - JOptionPane.showMessageDialog( - CTMalwareScannerOptionsPanel.this, - message, - Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_apiErr_title(), - JOptionPane.ERROR_MESSAGE); - setLicenseDisplay(licenseInfo, null); - loadMalwareScansInfo(licenseInfo); + setLicenseDisplay(null, null); + setMalwareScansDisplay(null, null, htmlWrap(message)); return; } - + // otherwise, load SwingUtilities.invokeLater(() -> acceptEula(licenseResponse)); - + } catch (InterruptedException | CancellationException ex) { // ignore cancellation; just load current license setLicenseDisplay(licenseInfo, null); loadMalwareScansInfo(licenseInfo); } catch (ExecutionException ex) { + String errMessage; if (ex.getCause() != null && ex.getCause() instanceof CTCloudException cloudEx) { logger.log(Level.WARNING, "An API error occurred while fetching license information", cloudEx); - JOptionPane.showMessageDialog( - CTMalwareScannerOptionsPanel.this, - cloudEx.getErrorCode().getDescription(), - Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_apiErr_title(), - JOptionPane.ERROR_MESSAGE); + errMessage = cloudEx.getErrorCode().getDescription(); } else { logger.log(Level.WARNING, "An error occurred while fetching data", ex); - JOptionPane.showMessageDialog( - CTMalwareScannerOptionsPanel.this, - Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_desc(), - Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_title(), - JOptionPane.ERROR_MESSAGE); + errMessage = Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_desc(); } - setLicenseDisplay(licenseInfo, null); - loadMalwareScansInfo(licenseInfo); + setLicenseDisplay(null, null); + setMalwareScansDisplay(null, null, htmlWrap(errMessage)); } finally { synchronized (CTMalwareScannerOptionsPanel.this) { CTMalwareScannerOptionsPanel.this.licenseFetcher = null; @@ -778,8 +759,8 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { if (this.isCancelled()) { return null; } - - return ctApiDAO.getAuthToken(decryptedLicense); + + return ctApiDAO.getAuthToken(decryptedLicense); } @Override @@ -793,16 +774,16 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { } catch (ExecutionException ex) { if (ex.getCause() != null && ex.getCause() instanceof CTCloudException cloudEx) { logger.log(Level.WARNING, "An API error occurred while fetching malware scans information for license", cloudEx); - authTokenError = "" + cloudEx.getErrorDetails() + ""; + authTokenError = cloudEx.getErrorDetails(); } else { logger.log(Level.WARNING, "An error occurred while fetching data", ex); - authTokenError = "" + Bundle.CTMalwareScannerOptionsPanel_MalwareScansFetcher_localErr_desc() + ""; + authTokenError = Bundle.CTMalwareScannerOptionsPanel_MalwareScansFetcher_localErr_desc(); } } finally { synchronized (CTMalwareScannerOptionsPanel.this) { CTMalwareScannerOptionsPanel.this.authTokenFetcher = null; if (!this.isCancelled()) { - setMalwareScansDisplay(authTokenResponse, null, authTokenError); + setMalwareScansDisplay(authTokenResponse, null, htmlWrap(authTokenError)); } } } diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form index 549502e0da..eb0385de70 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form @@ -12,8 +12,11 @@ + + + - + @@ -26,7 +29,7 @@ - + @@ -142,6 +145,14 @@ + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java index ddda4e9078..31151c41bc 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java @@ -162,7 +162,8 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.border.title_1"))); // NOI18N setMaximumSize(new java.awt.Dimension(650, 2147483647)); - setPreferredSize(new java.awt.Dimension(650, 176)); + setMinimumSize(new java.awt.Dimension(650, 206)); + setPreferredSize(new java.awt.Dimension(650, 206)); setLayout(new java.awt.GridBagLayout()); incidentTextPanel.setLayout(new java.awt.GridBagLayout()); @@ -240,6 +241,8 @@ public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { gridBagConstraints.weightx = 1.0; add(instructionsPanel, gridBagConstraints); + repoPanel.setMaximumSize(new java.awt.Dimension(650, 2147483647)); + repoPanel.setPreferredSize(new java.awt.Dimension(650, 75)); repoPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(fileRepoPathLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.fileRepoPathLabel.text")); // NOI18N diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java index 4971d1b94e..c0e62f0fc0 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java @@ -175,15 +175,12 @@ class MalwareScanIngestModule implements FileIngestModule { ingestJobState = getNewJobState(context, uploadFiles); } catch (CTCloudException cloudEx) { ingestJobState = IngestJobState.DISABLED; - if (cloudEx.getErrorCode() == CTCloudException.ErrorCode.INVALID_KEY) { - notifyWarning( - Bundle.MalwareScanIngestModule_ShareProcessing_startup_invalidLicenseWarning_title(), - Bundle.MalwareScanIngestModule_ShareProcessing_startup_invalidLicenseWarning_desc(), - cloudEx); - } else { - logger.log(Level.WARNING, "An error occurred while starting the MalwareScanIngestModule.", cloudEx); - } + logger.log(Level.WARNING, "An error occurred while starting the MalwareScanIngestModule.", cloudEx); throw new IngestModuleException(cloudEx.getErrorDetails(), cloudEx); + } catch (IllegalStateException stateEx) { + ingestJobState = IngestJobState.DISABLED; + logger.log(Level.WARNING, "An error occurred while starting the MalwareScanIngestModule.", stateEx); + throw new IngestModuleException(stateEx.getMessage(), stateEx); } catch (Exception ex) { ingestJobState = IngestJobState.DISABLED; logger.log(Level.WARNING, "An error occurred while starting the MalwareScanIngestModule.", ex); @@ -203,12 +200,7 @@ class MalwareScanIngestModule implements FileIngestModule { // get saved license Optional licenseInfoOpt = ctSettingsPersistence.loadLicenseInfo(); if (licenseInfoOpt.isEmpty() || licenseInfoOpt.get().getDecryptedLicense() == null) { - notifyWarning( - Bundle.MalwareScanIngestModule_ShareProcessing_noLicense_title(), - Bundle.MalwareScanIngestModule_ShareProcessing_noLicense_desc(), - null); - - return IngestJobState.DISABLED; + throw new IllegalStateException(Bundle.MalwareScanIngestModule_ShareProcessing_noLicense_desc()); } AuthTokenResponse authTokenResponse = ctApiDAO.getAuthToken(licenseInfoOpt.get().getDecryptedLicense()); From e9cd61953384b4dfc7eb75ef30277e87c43f0028 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 14 Sep 2023 15:04:56 -0400 Subject: [PATCH 07/52] updates to check license at autopsy startup --- .../ctcloud/Bundle.properties-MERGED | 1 + .../ctcloud/CTMalwareScannerOptionsPanel.java | 2 +- .../autopsy/ctoptions/ctcloud/Installer.java | 75 +++++++++++++++++++ .../org/sleuthkit/autopsy/core/Installer.java | 1 + 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Installer.java diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED index 537ca234f9..6f5cf48e41 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED @@ -68,3 +68,4 @@ CTLicenseDialog.licenseNumberTextField.toolTipText=AUT-XXXXXXXX-XXXX-XXXX-XXXX-X CTMalwareScannerOptionsPanel.licenseErrorLabel.text= CTMalwareScannerOptionsPanel.licenseInfoRemoveButton.text=Remove License CTMalwareScannerOptionsPanel.text=The Cyber Triage Malware Scanner module uses 40+ malware scanning engines to identify if Windows executables are malicious. It requires a paid subscription to use. +Installer_LicenseCheck_cloudExceptionTitle=Cyber Triage Error diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java index e3fc7c358c..a8c6d604d6 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java @@ -727,7 +727,7 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { String errMessage; if (ex.getCause() != null && ex.getCause() instanceof CTCloudException cloudEx) { logger.log(Level.WARNING, "An API error occurred while fetching license information", cloudEx); - errMessage = cloudEx.getErrorCode().getDescription(); + errMessage = cloudEx.getErrorDetails(); } else { logger.log(Level.WARNING, "An error occurred while fetching data", ex); errMessage = Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_desc(); diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Installer.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Installer.java new file mode 100644 index 0000000000..0cbbaca09c --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Installer.java @@ -0,0 +1,75 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2023 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.df.cybertriage.autopsy.ctoptions.ctcloud; + +import com.basistech.df.cybertriage.autopsy.ctapi.CTApiDAO; +import com.basistech.df.cybertriage.autopsy.ctapi.CTCloudException; +import com.basistech.df.cybertriage.autopsy.ctapi.json.AuthTokenResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseInfo; +import java.util.Optional; +import java.util.logging.Level; +import org.openide.modules.ModuleInstall; +import org.openide.util.NbBundle.Messages; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; + +/** + * Installer to check for a functional license at startup. + */ +public class Installer extends ModuleInstall { + private final static Logger LOGGER = Logger.getLogger(Installer.class.getName()); + + private final static Installer INSTANCE = new Installer(); + + public static Installer getDefault() { + return INSTANCE; + } + + private Installer() {} + + @Override + public void restored() { + new Thread(new LicenseCheck()).start(); + } + + @Messages({ + "Installer_LicenseCheck_cloudExceptionTitle=Cyber Triage Error" + }) + private static class LicenseCheck implements Runnable { + + @Override + public void run() { + try { + Optional licenseInfoOpt = CTLicensePersistence.getInstance().loadLicenseInfo(); + if (licenseInfoOpt.isEmpty()) { + return; + } + + LicenseInfo licenseInfo = licenseInfoOpt.get(); + AuthTokenResponse authTokenResp = CTApiDAO.getInstance().getAuthToken(licenseInfo.getDecryptedLicense()); + // if we got this far, then it was a successful request + } catch (CTCloudException cloudEx) { + LOGGER.log(Level.WARNING, "A cloud exception occurred while fetching an auth token", cloudEx); + MessageNotifyUtil.Notify.warn(Bundle.Installer_LicenseCheck_cloudExceptionTitle(), cloudEx.getErrorDetails()); + } catch (Throwable t) { + LOGGER.log(Level.WARNING, "An error occurred while fetching license info", t); + } + } + } +} diff --git a/Core/src/org/sleuthkit/autopsy/core/Installer.java b/Core/src/org/sleuthkit/autopsy/core/Installer.java index 24c40e9967..fca2db5f30 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/core/Installer.java @@ -217,6 +217,7 @@ public class Installer extends ModuleInstall { packageInstallers.add(org.sleuthkit.autopsy.casemodule.Installer.getDefault()); packageInstallers.add(org.sleuthkit.autopsy.modules.hashdatabase.infrastructure.Installer.getDefault()); packageInstallers.add(org.sleuthkit.autopsy.report.infrastructure.Installer.getDefault()); + packageInstallers.add(com.basistech.df.cybertriage.autopsy.ctoptions.ctcloud.Installer.getDefault()); /** * This is a temporary workaround for the following bug in Tika that From 3cabad12e6baf090314fbbe11bab0c86d5db967c Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 15 Sep 2023 12:45:20 -0400 Subject: [PATCH 08/52] persistence fix --- .../ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java index a8c6d604d6..64db074a64 100644 --- a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java @@ -118,7 +118,12 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { @Override public synchronized void saveSettings() { - ctPersistence.saveLicenseResponse(getLicenseInfo()); + LicenseResponse licenseResponse = getLicenseInfo(); + if (licenseResponse == null) { + this.ctPersistence.deleteLicenseResponse(); + } else { + ctPersistence.saveLicenseResponse(licenseResponse); + } } @Override @@ -514,9 +519,9 @@ public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { }//GEN-LAST:event_purchaseLinkMouseClicked private void licenseInfoRemoveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_licenseInfoRemoveButtonActionPerformed - this.ctPersistence.deleteLicenseResponse(); setLicenseDisplay(null, null); setMalwareScansDisplay(null, null, null); + this.firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); }//GEN-LAST:event_licenseInfoRemoveButtonActionPerformed @NbBundle.Messages({ From ea75fcd45b3943163806299e763fd5b0013e3608 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 16 Oct 2023 21:14:36 -0400 Subject: [PATCH 09/52] move around code to prevent showing issue --- .../CentralRepositoryNotificationDialog.java | 5 +- .../eventlisteners/Installer.java | 71 ------------ .../eventlisteners/OnUIShowing.java | 107 ++++++++++++++++++ 3 files changed, 110 insertions(+), 73 deletions(-) create mode 100644 Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/OnUIShowing.java diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java index 883d979c90..aa2e908674 100755 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java @@ -34,8 +34,9 @@ public class CentralRepositoryNotificationDialog { * application is running with a GUI. */ static boolean shouldDisplay() { - return Version.getBuildType() == Version.Type.RELEASE - && RuntimeProperties.runningWithGUI(); + return //Version.getBuildType() == Version.Type.RELEASE + //&& + RuntimeProperties.runningWithGUI(); } /** diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Installer.java b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Installer.java index f15dec3029..f5b486e78d 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Installer.java @@ -90,7 +90,6 @@ public class Installer extends ModuleInstall { public void restored() { // must happen first to move any legacy settings that exist. upgradeSettingsPath(); - setupDefaultCentralRepository(); } @@ -151,76 +150,6 @@ public class Installer extends ModuleInstall { } } - /** - * Checks if the central repository has been set up and configured. If not, - * does the set up unconditionally. If the application is running with a - * GUI, a notification will be displayed to the user if the mode is RELEASE - * (in other words, developers are exempt from seeing the notification). - */ - private void setupDefaultCentralRepository() { - Map centralRepoSettings = ModuleSettings.getConfigSettings(CentralRepoSettings.getInstance().getModuleSettingsKey()); - String initializedStr = centralRepoSettings.get("initialized"); - - // check to see if the repo has been initialized asking to setup cr - boolean initialized = Boolean.parseBoolean(initializedStr); - - // if it hasn't received that flag, check for a previous install where cr is already setup - if (!initialized) { - boolean prevRepo = Boolean.parseBoolean(centralRepoSettings.get("db.useCentralRepo")); - // if it has been previously set up and is in use, mark as previously initialized and save the settings - if (prevRepo) { - initialized = true; - ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true"); - } - } - - if(initialized) { - return; // Nothing to do - } - - if (CentralRepositoryNotificationDialog.shouldDisplay()) { - CentralRepositoryNotificationDialog.display(); - } - - try { - CentralRepoDbManager manager = new CentralRepoDbManager(); - if (UserPreferences.getIsMultiUserModeEnabled()) { - // Set up using existing multi-user settings. - manager.setupPostgresDb(CentralRepoDbChoice.POSTGRESQL_MULTIUSER); - } else { - manager.setupDefaultSqliteDb(); - } - } catch (CentralRepoException ex) { - logger.log(Level.SEVERE, "There was an error while initializing the central repository database", ex); - - doMessageBoxIfRunningInGUI(ex); - } - - ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true"); - } - - /** - * Display a central repository exception in a message box if running with a - * GUI. - * - * @param ex The exception. - */ - @NbBundle.Messages({"Installer.centralRepoUpgradeFailed.title=Central repository disabled"}) - private void doMessageBoxIfRunningInGUI(CentralRepoException ex) { - if (RuntimeProperties.runningWithGUI()) { - try { - SwingUtilities.invokeAndWait(() -> { - JOptionPane.showMessageDialog(null, - ex.getUserMessage(), - NbBundle.getMessage(this.getClass(), "Installer.centralRepoUpgradeFailed.title"), - JOptionPane.ERROR_MESSAGE); - }); - } catch (InterruptedException | InvocationTargetException e) { - logger.log(Level.WARNING, e.getMessage(), e); - } - } - } - @Override public void uninstalled() { /* diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/OnUIShowing.java b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/OnUIShowing.java new file mode 100644 index 0000000000..5db0906748 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/OnUIShowing.java @@ -0,0 +1,107 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package org.sleuthkit.autopsy.centralrepository.eventlisteners; + +import java.lang.reflect.InvocationTargetException; +import java.util.Map; +import java.util.logging.Level; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import org.openide.util.NbBundle; +import org.openide.windows.OnShowing; +import org.sleuthkit.autopsy.centralrepository.CentralRepoSettings; +import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbChoice; +import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbManager; +import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoException; +import org.sleuthkit.autopsy.core.RuntimeProperties; +import org.sleuthkit.autopsy.core.UserPreferences; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.ModuleSettings; + +/** + * + * @author gregd + */ +@OnShowing +public class OnUIShowing implements Runnable { + private static final Logger logger = Logger.getLogger(OnUIShowing.class.getName()); + + @Override + public void run() { + setupDefaultCentralRepository(); + } + + /** + * Checks if the central repository has been set up and configured. If not, + * does the set up unconditionally. If the application is running with a + * GUI, a notification will be displayed to the user if the mode is RELEASE + * (in other words, developers are exempt from seeing the notification). + */ + private void setupDefaultCentralRepository() { + Map centralRepoSettings = ModuleSettings.getConfigSettings(CentralRepoSettings.getInstance().getModuleSettingsKey()); + String initializedStr = centralRepoSettings.get("initialized"); + + // check to see if the repo has been initialized asking to setup cr + boolean initialized = Boolean.parseBoolean(initializedStr); + + // if it hasn't received that flag, check for a previous install where cr is already setup + if (!initialized) { + boolean prevRepo = Boolean.parseBoolean(centralRepoSettings.get("db.useCentralRepo")); + // if it has been previously set up and is in use, mark as previously initialized and save the settings + if (prevRepo) { + initialized = true; + ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true"); + } + } + + if(initialized) { + return; // Nothing to do + } + + if (CentralRepositoryNotificationDialog.shouldDisplay()) { + CentralRepositoryNotificationDialog.display(); + } + + try { + CentralRepoDbManager manager = new CentralRepoDbManager(); + if (UserPreferences.getIsMultiUserModeEnabled()) { + // Set up using existing multi-user settings. + manager.setupPostgresDb(CentralRepoDbChoice.POSTGRESQL_MULTIUSER); + } else { + manager.setupDefaultSqliteDb(); + } + } catch (CentralRepoException ex) { + logger.log(Level.SEVERE, "There was an error while initializing the central repository database", ex); + + doMessageBoxIfRunningInGUI(ex); + } + + ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true"); + } + + /** + * Display a central repository exception in a message box if running with a + * GUI. + * + * @param ex The exception. + */ + @NbBundle.Messages({"Installer.centralRepoUpgradeFailed.title=Central repository disabled"}) + private void doMessageBoxIfRunningInGUI(CentralRepoException ex) { + if (RuntimeProperties.runningWithGUI()) { + try { + SwingUtilities.invokeAndWait(() -> { + JOptionPane.showMessageDialog(null, + ex.getUserMessage(), + NbBundle.getMessage(this.getClass(), "Installer.centralRepoUpgradeFailed.title"), + JOptionPane.ERROR_MESSAGE); + }); + } catch (InterruptedException | InvocationTargetException e) { + logger.log(Level.WARNING, e.getMessage(), e); + } + } + } + + +} From e4d240e6f04c77054bda974b4f308a3ded28bfd9 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 19 Oct 2023 13:54:46 -0400 Subject: [PATCH 10/52] updates to display when gui opens but before startup window --- ...Showing.java => CRDefaultSetupAction.java} | 60 +++++++++++-------- .../CentralRepositoryNotificationDialog.java | 4 +- .../eventlisteners/Installer.java | 9 --- .../autopsy/corecomponents/Installer.java | 24 +++++++- 4 files changed, 60 insertions(+), 37 deletions(-) rename Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/{OnUIShowing.java => CRDefaultSetupAction.java} (71%) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/OnUIShowing.java b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CRDefaultSetupAction.java similarity index 71% rename from Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/OnUIShowing.java rename to Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CRDefaultSetupAction.java index 5db0906748..fc514ff5f7 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/OnUIShowing.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CRDefaultSetupAction.java @@ -1,6 +1,20 @@ /* - * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license - * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + * Autopsy Forensic Browser + * + * Copyright 2017-2020 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package org.sleuthkit.autopsy.centralrepository.eventlisteners; @@ -10,7 +24,6 @@ import java.util.logging.Level; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import org.openide.util.NbBundle; -import org.openide.windows.OnShowing; import org.sleuthkit.autopsy.centralrepository.CentralRepoSettings; import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbChoice; import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbManager; @@ -21,25 +34,28 @@ import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ModuleSettings; /** - * - * @author gregd + * Runs the default setup for central repository and notifies the user if a) + * running with GUI and b) first launch. */ -@OnShowing -public class OnUIShowing implements Runnable { - private static final Logger logger = Logger.getLogger(OnUIShowing.class.getName()); +public class CRDefaultSetupAction { + + private static final Logger logger = Logger.getLogger(CRDefaultSetupAction.class.getName()); + private static final CRDefaultSetupAction INSTANCE = new CRDefaultSetupAction(); - @Override - public void run() { - setupDefaultCentralRepository(); + public static CRDefaultSetupAction getInstance() { + return INSTANCE; } - + + private CRDefaultSetupAction() { + } + /** * Checks if the central repository has been set up and configured. If not, - * does the set up unconditionally. If the application is running with a - * GUI, a notification will be displayed to the user if the mode is RELEASE - * (in other words, developers are exempt from seeing the notification). + * does the set up unconditionally. + * + * @return Returns true if first run and a default CR was setup. */ - private void setupDefaultCentralRepository() { + public boolean setupDefaultCentralRepository() { Map centralRepoSettings = ModuleSettings.getConfigSettings(CentralRepoSettings.getInstance().getModuleSettingsKey()); String initializedStr = centralRepoSettings.get("initialized"); @@ -55,13 +71,9 @@ public class OnUIShowing implements Runnable { ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true"); } } - - if(initialized) { - return; // Nothing to do - } - if (CentralRepositoryNotificationDialog.shouldDisplay()) { - CentralRepositoryNotificationDialog.display(); + if (initialized) { + return false; // Nothing to do } try { @@ -79,8 +91,9 @@ public class OnUIShowing implements Runnable { } ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true"); + return true; } - + /** * Display a central repository exception in a message box if running with a * GUI. @@ -103,5 +116,4 @@ public class OnUIShowing implements Runnable { } } - } diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java index aa2e908674..5c18c4235e 100755 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java @@ -33,7 +33,7 @@ public class CentralRepositoryNotificationDialog { * This dialog should display iff the mode is RELEASE and the * application is running with a GUI. */ - static boolean shouldDisplay() { + public static boolean shouldDisplay() { return //Version.getBuildType() == Version.Type.RELEASE //&& RuntimeProperties.runningWithGUI(); @@ -51,7 +51,7 @@ public class CentralRepositoryNotificationDialog { "CentralRepositoryNotificationDialog.bulletThree=Create personas that group accounts", "CentralRepositoryNotificationDialog.finalRemarks=To limit what is stored, use the Central Repository options panel." }) - static void display() { + public static void display() { assert shouldDisplay(); MessageNotifyUtil.Message.info( diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Installer.java b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Installer.java index f5b486e78d..d233e2764f 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Installer.java @@ -20,21 +20,12 @@ package org.sleuthkit.autopsy.centralrepository.eventlisteners; import java.io.File; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; import java.nio.file.Paths; import java.util.Map; import java.util.logging.Level; -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; import org.apache.commons.io.FileUtils; import org.openide.modules.ModuleInstall; -import org.openide.util.NbBundle; -import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbChoice; -import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbManager; -import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoException; import org.sleuthkit.autopsy.centralrepository.CentralRepoSettings; -import org.sleuthkit.autopsy.core.RuntimeProperties; -import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.coreutils.PlatformUtil; diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Installer.java b/Core/src/org/sleuthkit/autopsy/corecomponents/Installer.java index 74412e9c62..b5b4fd5b4d 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Installer.java @@ -43,6 +43,8 @@ import org.openide.util.Exceptions; import org.openide.util.Lookup; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.StartupWindowProvider; +import org.sleuthkit.autopsy.centralrepository.eventlisteners.CRDefaultSetupAction; +import org.sleuthkit.autopsy.centralrepository.eventlisteners.CentralRepositoryNotificationDialog; import org.sleuthkit.autopsy.commandlineingest.CommandLineOptionProcessor; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ModuleSettings; @@ -89,6 +91,12 @@ public class Installer extends ModuleInstall { final CommandLineOptionProcessor finalprocessor = processor; + /** + * Runs central repo default setup. Triggered here to track if this is + * first time setup in order to show CR notification dialog prior to any + * startup window. + */ + final boolean crFirstTimeSetup = CRDefaultSetupAction.getInstance().setupDefaultCentralRepository(); // When the --nogui flag is supplied invokeWhenUIReady happens a lot sooner // than it would when running wiht the gui. Makes sense. That means that @@ -102,19 +110,31 @@ public class Installer extends ModuleInstall { // be called. WindowManager.getDefault().invokeWhenUIReady(() -> { if(WindowManager.getDefault().getMainWindow().isVisible() || finalprocessor == null || finalprocessor.getState() == CommandLineOptionProcessor.ProcessState.COMPLETED) { - StartupWindowProvider.getInstance().open(); + showStartupWindows(crFirstTimeSetup); } else { finalprocessor.addPropertyChangeListener(new PropertyChangeListener(){ @Override public void propertyChange(PropertyChangeEvent evt) { if(evt.getPropertyName().equals(CommandLineOptionProcessor.PROCESSING_COMPLETED)) { - StartupWindowProvider.getInstance().open(); + showStartupWindows(crFirstTimeSetup); } } }); } }); } + + /** + * Show startup window(s) in sequence. + * @param crFirstTimeSetup If true, attempts to show the central repo notification dialog + */ + private void showStartupWindows(boolean crFirstTimeSetup) { + if (crFirstTimeSetup && CentralRepositoryNotificationDialog.shouldDisplay()) { + CentralRepositoryNotificationDialog.display(); + } + + StartupWindowProvider.getInstance().open(); + } @Override public void uninstalled() { From ced30868fddf0893cfaaafa6468efccdd335b42f Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 19 Oct 2023 15:15:21 -0400 Subject: [PATCH 11/52] fix --- .../eventlisteners/CentralRepositoryNotificationDialog.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java index 5c18c4235e..39ce238b2d 100755 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CentralRepositoryNotificationDialog.java @@ -34,9 +34,8 @@ public class CentralRepositoryNotificationDialog { * application is running with a GUI. */ public static boolean shouldDisplay() { - return //Version.getBuildType() == Version.Type.RELEASE - //&& - RuntimeProperties.runningWithGUI(); + return Version.getBuildType() == Version.Type.RELEASE + && RuntimeProperties.runningWithGUI(); } /** From 8079f2ca691b2aee73d27186a2516bfa8dcc2e7b Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Tue, 28 May 2024 12:50:37 -0400 Subject: [PATCH 12/52] ImageDSP Panel Change Added bitlocker password to ImageDSP panel --- .../autopsy/casemodule/AddImageTask.java | 4 +- .../autopsy/casemodule/Bundle.properties | 2 + .../casemodule/Bundle.properties-MERGED | 2 + .../autopsy/casemodule/ImageDSProcessor.java | 5 +- .../autopsy/casemodule/ImageFilePanel.form | 82 ++++++++++++------- .../autopsy/casemodule/ImageFilePanel.java | 74 +++++++++++------ 6 files changed, 112 insertions(+), 57 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java index 310051b7f5..1bd4be83e9 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java @@ -319,8 +319,9 @@ class AddImageTask implements Runnable { String sha1; String sha256; ImageWriterSettings imageWriterSettings; + String bitlockerPassword; - ImageDetails(String deviceId, Image image, int sectorSize, String timeZone, boolean ignoreFatOrphanFiles, String md5, String sha1, String sha256, ImageWriterSettings imageWriterSettings) { + ImageDetails(String deviceId, Image image, int sectorSize, String timeZone, boolean ignoreFatOrphanFiles, String md5, String sha1, String sha256, ImageWriterSettings imageWriterSettings, String bitlockerPassword) { this.deviceId = deviceId; this.image = image; this.sectorSize = sectorSize; @@ -330,6 +331,7 @@ class AddImageTask implements Runnable { this.sha1 = sha1; this.sha256 = sha256; this.imageWriterSettings = imageWriterSettings; + this.bitlockerPassword = bitlockerPassword; } String getImagePath() { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index 92b64b840b..b18fe8c6fb 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -270,3 +270,5 @@ LocalFilesPanel.timestampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.accessTimeCheckBox.text=Access Time - Can be changed when the file is opened LocalFilesPanel.timeStampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.timeStampNoteLabel.text=NOTE: Time stamps may have changed when the files were copied to the current location. +ImageFilePanel.bitlockerPasswordLabel.text=Bitlocker Password (optional): +ImageFilePanel.bitlockerPasswordTextField.text= diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED index 14465bba03..df1a068d9d 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED @@ -504,3 +504,5 @@ LocalFilesPanel.timestampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.accessTimeCheckBox.text=Access Time - Can be changed when the file is opened LocalFilesPanel.timeStampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.timeStampNoteLabel.text=NOTE: Time stamps may have changed when the files were copied to the current location. +ImageFilePanel.bitlockerPasswordLabel.text=Bitlocker Password (optional): +ImageFilePanel.bitlockerPasswordTextField.text=jTextField1 diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index 9b174f28f7..3989577867 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -82,6 +82,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour private String sha1; private String sha256; private Host host = null; + private String bitlockerPassword; static { filtersList.add(allFilter); @@ -315,6 +316,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour if (sha256.isEmpty()) { sha256 = null; } + bitlockerPassword = configPanel.getBitlockerPassword(); } /** @@ -413,7 +415,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return; } - AddImageTask.ImageDetails imageDetails = new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, null); + AddImageTask.ImageDetails imageDetails = new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, null, null); addImageTask = new AddImageTask(imageDetails, progressMonitor, new StreamingAddDataSourceCallbacks(ingestStream), @@ -449,6 +451,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour timeZone = null; ignoreFatOrphanFiles = false; host = null; + bitlockerPassword = null; configPanel.reset(); } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form index 0c634afc24..2484a1f550 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form @@ -38,36 +38,39 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -95,9 +98,14 @@ - - + + + + + + + @@ -116,7 +124,7 @@ - + @@ -265,5 +273,19 @@ + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java index eda7149f66..84a03da647 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java @@ -129,6 +129,10 @@ public class ImageFilePanel extends JPanel implements DocumentListener { return sha256HashTextField; } + private JTextField getBitlockerPasswordTextField() { + return bitlockerPasswordTextField; + } + private JFileChooser getChooser() { if(fileChooser == null) { fileChooser = fileChooserHelper.getChooser(); @@ -169,6 +173,8 @@ public class ImageFilePanel extends JPanel implements DocumentListener { md5HashLabel = new javax.swing.JLabel(); hashValuesLabel = new javax.swing.JLabel(); hashValuesNoteLabel = new javax.swing.JLabel(); + bitlockerPasswordLabel = new javax.swing.JLabel(); + bitlockerPasswordTextField = new javax.swing.JTextField(); setMinimumSize(new java.awt.Dimension(0, 65)); setPreferredSize(new java.awt.Dimension(403, 65)); @@ -220,6 +226,10 @@ public class ImageFilePanel extends JPanel implements DocumentListener { org.openide.awt.Mnemonics.setLocalizedText(hashValuesNoteLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.hashValuesNoteLabel.text")); // NOI18N hashValuesNoteLabel.setEnabled(false); + org.openide.awt.Mnemonics.setLocalizedText(bitlockerPasswordLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.bitlockerPasswordLabel.text")); // NOI18N + + bitlockerPasswordTextField.setText(org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.bitlockerPasswordTextField.text")); // NOI18N + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -235,30 +245,33 @@ public class ImageFilePanel extends JPanel implements DocumentListener { .addComponent(noFatOrphansCheckbox, javax.swing.GroupLayout.PREFERRED_SIZE, 262, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(0, 368, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(errorLabel) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(layout.createSequentialGroup() - .addComponent(timeZoneLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(timeZoneComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(layout.createSequentialGroup() - .addComponent(sectorSizeLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(sectorSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(layout.createSequentialGroup() - .addComponent(md5HashLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(md5HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(layout.createSequentialGroup() - .addComponent(sha1HashLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(sha1HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(layout.createSequentialGroup() - .addComponent(sha256HashLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(sha256HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(timeZoneLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(timeZoneComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(sectorSizeLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(sectorSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(md5HashLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(md5HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(sha1HashLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(sha1HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(sha256HashLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(sha256HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(hashValuesNoteLabel) + .addGroup(layout.createSequentialGroup() + .addComponent(bitlockerPasswordLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(bitlockerPasswordTextField)) .addComponent(hashValuesLabel)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); @@ -280,9 +293,13 @@ public class ImageFilePanel extends JPanel implements DocumentListener { .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(sectorSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(sectorSizeLabel)) - .addGap(39, 39, 39) - .addComponent(hashValuesLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(bitlockerPasswordLabel) + .addComponent(bitlockerPasswordTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(hashValuesLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(md5HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(md5HashLabel)) @@ -298,7 +315,7 @@ public class ImageFilePanel extends JPanel implements DocumentListener { .addComponent(hashValuesNoteLabel) .addGap(18, 18, 18) .addComponent(errorLabel) - .addContainerGap(51, Short.MAX_VALUE)) + .addContainerGap(52, Short.MAX_VALUE)) ); }// //GEN-END:initComponents @@ -345,6 +362,8 @@ public class ImageFilePanel extends JPanel implements DocumentListener { }//GEN-LAST:event_browseButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel bitlockerPasswordLabel; + private javax.swing.JTextField bitlockerPasswordTextField; private javax.swing.JButton browseButton; private javax.swing.JLabel errorLabel; private javax.swing.JLabel hashValuesLabel; @@ -436,6 +455,10 @@ public class ImageFilePanel extends JPanel implements DocumentListener { String getSha256() { return this.sha256HashTextField.getText(); } + + String getBitlockerPassword() { + return this.getBitlockerPasswordTextField.getText(); + } public void reset() { //reset the UI elements to default @@ -443,6 +466,7 @@ public class ImageFilePanel extends JPanel implements DocumentListener { this.md5HashTextField.setText(null); this.sha1HashTextField.setText(null); this.sha256HashTextField.setText(null); + this.bitlockerPasswordTextField.setText(null); } /** From fb79eb37ba74ce873879b72d973a4411bde2b307 Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Tue, 28 May 2024 12:53:08 -0400 Subject: [PATCH 13/52] Empty and Null Check if password is empty and set to null --- .../src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java | 3 +++ Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index 3989577867..b586edc707 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -317,6 +317,9 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour sha256 = null; } bitlockerPassword = configPanel.getBitlockerPassword(); + if (bitlockerPassword.isEmpty()) { + bitlockerPassword = null; + } } /** diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java index 84a03da647..dd981aaefd 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java @@ -457,7 +457,7 @@ public class ImageFilePanel extends JPanel implements DocumentListener { } String getBitlockerPassword() { - return this.getBitlockerPasswordTextField.getText(); + return this.bitlockerPasswordTextField.getText(); } public void reset() { From 471c99a66133d8f96b1613d422a5a95d33a66f0d Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Fri, 13 Dec 2024 10:40:18 -0500 Subject: [PATCH 14/52] Initial Bit locker support Initial Bitlocker support --- .../autopsy/casemodule/AddImageTask.java | 6 +-- .../autopsy/casemodule/Bundle.properties | 4 +- .../casemodule/Bundle.properties-MERGED | 6 +-- .../autopsy/casemodule/ImageDSProcessor.java | 50 +++++++++++-------- .../autopsy/casemodule/ImageFilePanel.form | 18 +++---- .../autopsy/casemodule/ImageFilePanel.java | 32 ++++++------ .../casemodule/LocalDiskDSProcessor.java | 7 +-- .../autopsy/coreutils/DataSourceUtils.java | 23 +++++++++ .../dsp/AddMultipleImagesTask.java | 2 +- .../PortableCaseReportModule.java | 2 +- 10 files changed, 92 insertions(+), 58 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java index 1bd4be83e9..599bf56110 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java @@ -319,9 +319,9 @@ class AddImageTask implements Runnable { String sha1; String sha256; ImageWriterSettings imageWriterSettings; - String bitlockerPassword; + String password; - ImageDetails(String deviceId, Image image, int sectorSize, String timeZone, boolean ignoreFatOrphanFiles, String md5, String sha1, String sha256, ImageWriterSettings imageWriterSettings, String bitlockerPassword) { + ImageDetails(String deviceId, Image image, int sectorSize, String timeZone, boolean ignoreFatOrphanFiles, String md5, String sha1, String sha256, ImageWriterSettings imageWriterSettings, String password) { this.deviceId = deviceId; this.image = image; this.sectorSize = sectorSize; @@ -331,7 +331,7 @@ class AddImageTask implements Runnable { this.sha1 = sha1; this.sha256 = sha256; this.imageWriterSettings = imageWriterSettings; - this.bitlockerPassword = bitlockerPassword; + this.password = password; } String getImagePath() { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index b18fe8c6fb..c53c3085a9 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -270,5 +270,5 @@ LocalFilesPanel.timestampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.accessTimeCheckBox.text=Access Time - Can be changed when the file is opened LocalFilesPanel.timeStampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.timeStampNoteLabel.text=NOTE: Time stamps may have changed when the files were copied to the current location. -ImageFilePanel.bitlockerPasswordLabel.text=Bitlocker Password (optional): -ImageFilePanel.bitlockerPasswordTextField.text= +ImageFilePanel.passwordLabel.text=Bitlocker Password (optional): +ImageFilePanel.passwordTextField.text= diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED index df1a068d9d..3e2e6c4199 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED @@ -151,7 +151,7 @@ GeneralFilter.encaseImageDesc.text=Encase Images (*.e01) GeneralFilter.executableDesc.text=Executables (*.exe) GeneralFilter.graphicImageDesc.text=Images (*.png, *.jpg, *.jpeg, *.gif, *.bmp) GeneralFilter.rawImageDesc.text=Raw Images (*.img, *.dd, *.001, *.aa, *.raw, *.bin) -GeneralFilter.virtualMachineImageDesc.text=Virtual Machines (*.vmdk, *.vhd) +GeneralFilter.virtualMachineImageDesc.text=Virtual Machines (*.vmdk, *.vhd, *.vhdx) ImageFilePanel.000.confirmationMessage=The selected file has extenson .001 but there is a .000 file in the sequence of raw images.\nShould the .000 file be used as the start, instead of the selected .001 file?\n ImageFilePanel.moduleErr=Module Error ImageFilePanel.moduleErr.msg=A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.\n @@ -504,5 +504,5 @@ LocalFilesPanel.timestampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.accessTimeCheckBox.text=Access Time - Can be changed when the file is opened LocalFilesPanel.timeStampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.timeStampNoteLabel.text=NOTE: Time stamps may have changed when the files were copied to the current location. -ImageFilePanel.bitlockerPasswordLabel.text=Bitlocker Password (optional): -ImageFilePanel.bitlockerPasswordTextField.text=jTextField1 +ImageFilePanel.passwordLabel.text=Bitlocker Password (optional): +ImageFilePanel.passwordTextField.text= diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index b586edc707..0b219c3d4d 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -82,7 +82,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour private String sha1; private String sha256; private Host host = null; - private String bitlockerPassword; + private String password; static { filtersList.add(allFilter); @@ -207,7 +207,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour this.host = host; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host, this.password); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -216,7 +216,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return; } - doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, progressMonitor, callback); + doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, this.password, progressMonitor, callback); } /** @@ -271,7 +271,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host, this.password); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -291,7 +291,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour ingestStream = new DefaultIngestStream(); } - doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, progress, callBack); + doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, this.password, progress, callBack); } /** @@ -316,9 +316,9 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour if (sha256.isEmpty()) { sha256 = null; } - bitlockerPassword = configPanel.getBitlockerPassword(); - if (bitlockerPassword.isEmpty()) { - bitlockerPassword = null; + password = configPanel.getPassword(); + if (password.isEmpty()) { + password = null; } } @@ -366,7 +366,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return; } - doAddImageProcess(deviceId, imagePath, 0, timeZone, ignoreFatOrphanFiles, null, null, null, progressMonitor, callback); + doAddImageProcess(deviceId, imagePath, 0, timeZone, ignoreFatOrphanFiles, null, null, null, this.password, progressMonitor, callback); } /** @@ -398,7 +398,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour * during processing. * @param callback Callback to call when processing is done. */ - private void doAddImageProcess(String deviceId, String imagePath, int sectorSize, String timeZone, boolean ignoreFatOrphanFiles, String md5, String sha1, String sha256, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { + private void doAddImageProcess(String deviceId, String imagePath, int sectorSize, String timeZone, boolean ignoreFatOrphanFiles, String md5, String sha1, String sha256, String password, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { // If the data source or ingest stream haven't been initialized, stop processing if (ingestStream == null) { @@ -418,7 +418,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return; } - AddImageTask.ImageDetails imageDetails = new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, null, null); + AddImageTask.ImageDetails imageDetails = new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, null, password); addImageTask = new AddImageTask(imageDetails, progressMonitor, new StreamingAddDataSourceCallbacks(ingestStream), @@ -454,7 +454,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour timeZone = null; ignoreFatOrphanFiles = false; host = null; - bitlockerPassword = null; + password = null; configPanel.reset(); } @@ -476,10 +476,20 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour } try { - // verify that the image has a file system that TSK can process - if (!DataSourceUtils.imageHasFileSystem(dataSourcePath)) { - // image does not have a file system that TSK can process - return 0; + if (password == null) { + + // verify that the image has a file system that TSK can process + if (!DataSourceUtils.imageHasFileSystem(dataSourcePath)) { + // image does not have a file system that TSK can process + return 0; + } + } else { + // verify that the image has a file system that TSK can process + if (!DataSourceUtils.imageHasFileSystem(dataSourcePath, password)) { + // image does not have a file system that TSK can process + return 0; + } + } } catch (Exception ex) { throw new AutoIngestDataSourceProcessorException("Exception inside canProcess() method", ex); @@ -507,7 +517,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour ingestStream = new DefaultIngestStream(); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, host); + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, host, this.password); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -516,7 +526,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return; } - doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, progressMonitor, callBack); + doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, null, progressMonitor, callBack); } @Override @@ -537,7 +547,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, host, this.password); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -557,7 +567,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return null; } - doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, progressMonitor, callBack); + doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, null, progressMonitor, callBack); return ingestStream; } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form index 2484a1f550..2fa29a1a8f 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form @@ -67,9 +67,9 @@ - + - + @@ -100,8 +100,8 @@ - - + + @@ -124,7 +124,7 @@ - + @@ -273,17 +273,17 @@ - + - + - + - + diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java index dd981aaefd..7be2a01c95 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java @@ -129,8 +129,8 @@ public class ImageFilePanel extends JPanel implements DocumentListener { return sha256HashTextField; } - private JTextField getBitlockerPasswordTextField() { - return bitlockerPasswordTextField; + private JTextField getPasswordTextField() { + return passwordTextField; } private JFileChooser getChooser() { @@ -173,8 +173,8 @@ public class ImageFilePanel extends JPanel implements DocumentListener { md5HashLabel = new javax.swing.JLabel(); hashValuesLabel = new javax.swing.JLabel(); hashValuesNoteLabel = new javax.swing.JLabel(); - bitlockerPasswordLabel = new javax.swing.JLabel(); - bitlockerPasswordTextField = new javax.swing.JTextField(); + passwordLabel = new javax.swing.JLabel(); + passwordTextField = new javax.swing.JTextField(); setMinimumSize(new java.awt.Dimension(0, 65)); setPreferredSize(new java.awt.Dimension(403, 65)); @@ -226,9 +226,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener { org.openide.awt.Mnemonics.setLocalizedText(hashValuesNoteLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.hashValuesNoteLabel.text")); // NOI18N hashValuesNoteLabel.setEnabled(false); - org.openide.awt.Mnemonics.setLocalizedText(bitlockerPasswordLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.bitlockerPasswordLabel.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(passwordLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.passwordLabel.text")); // NOI18N - bitlockerPasswordTextField.setText(org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.bitlockerPasswordTextField.text")); // NOI18N + passwordTextField.setText(org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.passwordTextField.text")); // NOI18N javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); @@ -269,9 +269,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener { .addComponent(sha256HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(hashValuesNoteLabel) .addGroup(layout.createSequentialGroup() - .addComponent(bitlockerPasswordLabel) + .addComponent(passwordLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(bitlockerPasswordTextField)) + .addComponent(passwordTextField)) .addComponent(hashValuesLabel)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); @@ -295,8 +295,8 @@ public class ImageFilePanel extends JPanel implements DocumentListener { .addComponent(sectorSizeLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(bitlockerPasswordLabel) - .addComponent(bitlockerPasswordTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(passwordLabel) + .addComponent(passwordTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(hashValuesLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -315,7 +315,7 @@ public class ImageFilePanel extends JPanel implements DocumentListener { .addComponent(hashValuesNoteLabel) .addGap(18, 18, 18) .addComponent(errorLabel) - .addContainerGap(52, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); }// //GEN-END:initComponents @@ -362,8 +362,6 @@ public class ImageFilePanel extends JPanel implements DocumentListener { }//GEN-LAST:event_browseButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JLabel bitlockerPasswordLabel; - private javax.swing.JTextField bitlockerPasswordTextField; private javax.swing.JButton browseButton; private javax.swing.JLabel errorLabel; private javax.swing.JLabel hashValuesLabel; @@ -371,6 +369,8 @@ public class ImageFilePanel extends JPanel implements DocumentListener { private javax.swing.JLabel md5HashLabel; private javax.swing.JTextField md5HashTextField; private javax.swing.JCheckBox noFatOrphansCheckbox; + private javax.swing.JLabel passwordLabel; + private javax.swing.JTextField passwordTextField; private javax.swing.JLabel pathLabel; private javax.swing.JTextField pathTextField; private javax.swing.JComboBox sectorSizeComboBox; @@ -456,8 +456,8 @@ public class ImageFilePanel extends JPanel implements DocumentListener { return this.sha256HashTextField.getText(); } - String getBitlockerPassword() { - return this.bitlockerPasswordTextField.getText(); + String getPassword() { + return this.passwordTextField.getText(); } public void reset() { @@ -466,7 +466,7 @@ public class ImageFilePanel extends JPanel implements DocumentListener { this.md5HashTextField.setText(null); this.sha1HashTextField.setText(null); this.sha256HashTextField.setText(null); - this.bitlockerPasswordTextField.setText(null); + this.passwordTextField.setText(null); } /** diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java index c659727d74..5843220af4 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java @@ -59,6 +59,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { private Host host; private ImageWriterSettings imageWriterSettings; private boolean ignoreFatOrphanFiles; + private String password; /** * Constructs a local drive data source processor that implements the @@ -172,7 +173,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), new String[]{drivePath}, sectorSize, - timeZone, null, null, null, deviceId, this.host); + timeZone, null, null, null, deviceId, this.host, this.password); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding local disk with path " + drivePath + " to database", ex); final List errors = new ArrayList<>(); @@ -182,7 +183,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { } addDiskTask = new AddImageTask( - new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), + new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings, password), progressMonitor, new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), new StreamingAddImageTaskCallback(new DefaultIngestStream(), callback)); @@ -250,7 +251,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { return; } - addDiskTask = new AddImageTask(new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), + addDiskTask = new AddImageTask(new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings, password), progressMonitor, new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), new StreamingAddImageTaskCallback(new DefaultIngestStream(), callback)); diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/DataSourceUtils.java b/Core/src/org/sleuthkit/autopsy/coreutils/DataSourceUtils.java index 61191125bd..707c6b6645 100644 --- a/Core/src/org/sleuthkit/autopsy/coreutils/DataSourceUtils.java +++ b/Core/src/org/sleuthkit/autopsy/coreutils/DataSourceUtils.java @@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.coreutils; import org.sleuthkit.datamodel.SleuthkitJNI; import java.io.IOException; import java.nio.file.Path; +import java.text.MessageFormat; +import org.apache.commons.lang3.StringUtils; /** * Utility methods for working with data sources. @@ -41,4 +43,25 @@ public class DataSourceUtils { public static boolean imageHasFileSystem(Path dataSourcePath) throws IOException { return SleuthkitJNI.isImageSupported(dataSourcePath.toString()); } + + public static boolean imageHasFileSystem(Path dataSourcePath, String password) throws IOException { + try { +// LOGGER.info("Testing if disk image {} can be opened", hostPath); + SleuthkitJNI.TestOpenImageResult openImageResult = SleuthkitJNI.testOpenImage(dataSourcePath.toString(), password); + if (!openImageResult.wasSuccessful()) { + String message = MessageFormat.format("An error occurred while opening {0}: {1}", + dataSourcePath.toString(), + openImageResult == null || StringUtils.isBlank(openImageResult.getMessage()) + ? "" + : openImageResult.getMessage()); + return false; + } + } catch (Throwable ex) { + String message = "An error occurred while opening " + dataSourcePath.toString(); + return false; + } + return SleuthkitJNI.isImageSupported(dataSourcePath.toString()); + + } } + diff --git a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/AddMultipleImagesTask.java b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/AddMultipleImagesTask.java index 95484341c7..4cf0503679 100644 --- a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/AddMultipleImagesTask.java +++ b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/AddMultipleImagesTask.java @@ -128,7 +128,7 @@ class AddMultipleImagesTask implements Runnable { for (String imageFilePath : imageFilePaths) { try { currentImage = SleuthkitJNI.addImageToDatabase(currentCase.getSleuthkitCase(), new String[]{imageFilePath}, - 0, timeZone, "", "", "", deviceId, host); + 0, timeZone, "", "", "", deviceId, host, null); } catch (TskCoreException ex) { LOGGER.log(Level.SEVERE, "Error adding image " + imageFilePath + " to database", ex); errorMessages.add(Bundle.AddMultipleImagesTask_imageError(imageFilePath)); diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java index 860739f91b..137850ee17 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java +++ b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java @@ -1230,7 +1230,7 @@ public class PortableCaseReportModule implements ReportModule { if (content instanceof Image) { Image image = (Image) content; newContent = portableSkCase.addImage(image.getType(), image.getSsize(), image.getSize(), image.getName(), - new ArrayList<>(), image.getTimeZone(), md5, sha1, sha256, image.getDeviceId(), newHost, trans); + new ArrayList<>(), image.getTimeZone(), md5, sha1, sha256, image.getDeviceId(), newHost, null, trans); } else if (content instanceof VolumeSystem) { VolumeSystem vs = (VolumeSystem) content; newContent = portableSkCase.addVolumeSystem(parentId, vs.getType(), vs.getOffset(), vs.getBlockSize(), trans); From 56f7ad5578505d5b6d78a265e25e9dfa577c3509 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 16 Dec 2024 15:03:43 -0500 Subject: [PATCH 15/52] initial work in integrating bitlocker --- .../autopsy/casemodule/AddImageTask.java | 2 +- .../casemodule/Bundle.properties-MERGED | 4 + .../autopsy/casemodule/ImageDSProcessor.java | 9 +- .../autopsy/casemodule/ImageFilePanel.form | 239 ++++++----- .../autopsy/casemodule/ImageFilePanel.java | 390 +++++++++++++----- .../casemodule/LocalDiskDSProcessor.java | 2 +- .../dsp/AddMultipleImagesTask.java | 2 +- .../PortableCaseReportModule.java | 2 +- 8 files changed, 420 insertions(+), 230 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java index 599bf56110..793d90bae3 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java @@ -107,7 +107,7 @@ class AddImageTask implements Runnable { try { synchronized (tskAddImageProcessLock) { if (!tskAddImageProcessStopped) { - tskAddImageProcess = currentCase.getSleuthkitCase().makeAddImageProcess(imageDetails.timeZone, true, imageDetails.ignoreFatOrphanFiles, imageWriterPath); + tskAddImageProcess = currentCase.getSleuthkitCase().makeAddImageProcess(imageDetails.timeZone, true, imageDetails.ignoreFatOrphanFiles, imageWriterPath, imageDetails.password); } else { return; } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED index 3e2e6c4199..9e7e2d7e81 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED @@ -159,6 +159,10 @@ ImageFilePanel.validatePanel.dataSourceOnCDriveError=Warning: Path to multi-user ImageFilePanel.validatePanel.invalidMD5=Invalid MD5 hash ImageFilePanel.validatePanel.invalidSHA1=Invalid SHA1 hash ImageFilePanel.validatePanel.invalidSHA256=Invalid SHA256 hash +# {0} - imageOpenError +ImageFilePanel_validatePanel_imageOpenError=

An error occurred while opening the image:{0}

+ImageFilePanel_validatePanel_unknownError=

An unknown error occurred while attempting to validate the image

+ImageFilePanel_validatePanel_unknownErrorMsg= IngestJobInfoPanel.IngestJobTableModel.EndTime.header=End Time IngestJobInfoPanel.IngestJobTableModel.IngestStatus.header=Ingest Status IngestJobInfoPanel.IngestJobTableModel.StartTime.header=Start Time diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index 0b219c3d4d..c1fef28484 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -207,7 +207,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour this.host = host; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host, this.password); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -271,7 +271,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host, this.password); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -394,6 +394,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour * @param md5 The MD5 hash of the image, may be null. * @param sha1 The SHA-1 hash of the image, may be null. * @param sha256 The SHA-256 hash of the image, may be null. + * @param password Password for image decryption. May be null. * @param progressMonitor Progress monitor for reporting progress * during processing. * @param callback Callback to call when processing is done. @@ -517,7 +518,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour ingestStream = new DefaultIngestStream(); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, host, this.password); + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -547,7 +548,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, host, this.password); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form index 2fa29a1a8f..c46749306b 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form @@ -19,116 +19,10 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -136,6 +30,11 @@ + + + + + @@ -146,6 +45,11 @@ + + + + + @@ -153,6 +57,11 @@ + + + + + @@ -160,6 +69,11 @@ + + + + + @@ -171,6 +85,11 @@ + + + + + @@ -181,6 +100,11 @@ + + + + + @@ -190,7 +114,22 @@ + + + + + + + + + + + + + + + @@ -198,6 +137,11 @@ + + + + + @@ -208,6 +152,11 @@ + + + + + @@ -216,6 +165,11 @@ + + + + + @@ -224,6 +178,11 @@ + + + + + @@ -232,6 +191,11 @@ + + + + + @@ -240,6 +204,11 @@ + + + + + @@ -248,6 +217,11 @@ + + + + + @@ -256,6 +230,11 @@ + + + + + @@ -264,6 +243,11 @@ + + + + + @@ -272,6 +256,11 @@ + + + + + @@ -279,6 +268,11 @@ + + + + + @@ -286,6 +280,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java index 7be2a01c95..7cf1f85183 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java @@ -18,9 +18,14 @@ */ package org.sleuthkit.autopsy.casemodule; +import com.google.common.util.concurrent.ThreadFactoryBuilder; import java.io.File; import java.util.Calendar; import java.util.List; +import java.util.concurrent.Future; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -32,11 +37,14 @@ import org.apache.commons.lang3.StringUtils; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; import org.sleuthkit.autopsy.coreutils.DriveUtils; +import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.coreutils.PathValidator; import org.sleuthkit.autopsy.coreutils.TimeZoneUtils; import org.sleuthkit.autopsy.guiutils.JFileChooserFactory; import org.sleuthkit.datamodel.HashUtility; +import org.sleuthkit.datamodel.SleuthkitJNI; +import org.sleuthkit.datamodel.SleuthkitJNI.TestOpenImageResult; /** * Panel for adding an image file such as .img, .E0x, .00x, etc. Allows the user @@ -44,8 +52,10 @@ import org.sleuthkit.datamodel.HashUtility; * files in FAT32. */ @SuppressWarnings("PMD.SingularField") // UI widgets cause lots of false positives -public class ImageFilePanel extends JPanel implements DocumentListener { +public class ImageFilePanel extends JPanel { + private static final Logger logger = Logger.getLogger(AddImageTask.class.getName()); + private static final long serialVersionUID = 1L; private static final String PROP_LASTIMAGE_PATH = "LBL_LastImage_PATH"; //NON-NLS private static final String[] SECTOR_SIZE_CHOICES = {"Auto Detect", "512", "1024", "2048", "4096"}; @@ -53,6 +63,11 @@ public class ImageFilePanel extends JPanel implements DocumentListener { private JFileChooser fileChooser; private final String contextName; private final List fileChooserFilters; + + private static int VALIDATE_TIMEOUT_MILLIS = 1500; + static ScheduledThreadPoolExecutor delayedValidationService = new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder().setNameFormat("ImageFilePanel delayed validation").build()); + + private Future validateAction = null; /** * Creates new form ImageFilePanel @@ -105,11 +120,17 @@ public class ImageFilePanel extends JPanel implements DocumentListener { */ public static synchronized ImageFilePanel createInstance(String context, List fileChooserFilters) { ImageFilePanel instance = new ImageFilePanel(context, fileChooserFilters); + DocumentListener delayedValidationListener = instance.new DelayedValidationDocListener(); + // post-constructor initialization of listener support without leaking references of uninitialized objects - instance.getPathTextField().getDocument().addDocumentListener(instance); - instance.getMd5TextFieldField().getDocument().addDocumentListener(instance); - instance.getSha1TextField().getDocument().addDocumentListener(instance); - instance.getSha256TextField().getDocument().addDocumentListener(instance); + for (JTextField textField: List.of( + instance.getPathTextField(), + instance.getMd5TextFieldField(), + instance.getSha1TextField(), + instance.getSha256TextField(), + instance.getPasswordTextField())) { + textField.getDocument().addDocumentListener(delayedValidationListener); + } return instance; } @@ -155,6 +176,7 @@ public class ImageFilePanel extends JPanel implements DocumentListener { */ // //GEN-BEGIN:initComponents private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; pathLabel = new javax.swing.JLabel(); browseButton = new javax.swing.JButton(); @@ -175,11 +197,22 @@ public class ImageFilePanel extends JPanel implements DocumentListener { hashValuesNoteLabel = new javax.swing.JLabel(); passwordLabel = new javax.swing.JLabel(); passwordTextField = new javax.swing.JTextField(); + javax.swing.JPanel spacer = new javax.swing.JPanel(); setMinimumSize(new java.awt.Dimension(0, 65)); setPreferredSize(new java.awt.Dimension(403, 65)); + setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(pathLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.pathLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + add(pathLabel, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(browseButton, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.browseButton.text")); // NOI18N browseButton.addActionListener(new java.awt.event.ActionListener() { @@ -187,136 +220,211 @@ public class ImageFilePanel extends JPanel implements DocumentListener { browseButtonActionPerformed(evt); } }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 1; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5); + add(browseButton, gridBagConstraints); pathTextField.setText(org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.pathTextField.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + add(pathTextField, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(timeZoneLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.timeZoneLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + add(timeZoneLabel, gridBagConstraints); timeZoneComboBox.setMaximumRowCount(30); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 3; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5); + add(timeZoneComboBox, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(noFatOrphansCheckbox, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.noFatOrphansCheckbox.text")); // NOI18N noFatOrphansCheckbox.setToolTipText(org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.noFatOrphansCheckbox.toolTipText")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 2; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + add(noFatOrphansCheckbox, gridBagConstraints); errorLabel.setForeground(new java.awt.Color(255, 0, 0)); org.openide.awt.Mnemonics.setLocalizedText(errorLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.errorLabel.text")); // NOI18N + errorLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP); + errorLabel.setMaximumSize(new java.awt.Dimension(500, 60)); + errorLabel.setMinimumSize(new java.awt.Dimension(200, 20)); + errorLabel.setPreferredSize(new java.awt.Dimension(200, 60)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 11; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + add(errorLabel, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(sectorSizeLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.sectorSizeLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 4; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + add(sectorSizeLabel, gridBagConstraints); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 4; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5); + add(sectorSizeComboBox, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(sha256HashLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.sha256HashLabel.text")); // NOI18N sha256HashLabel.setEnabled(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 9; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + add(sha256HashLabel, gridBagConstraints); sha256HashTextField.setText(org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.sha256HashTextField.text")); // NOI18N sha256HashTextField.setEnabled(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 9; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5); + add(sha256HashTextField, gridBagConstraints); sha1HashTextField.setText(org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.sha1HashTextField.text")); // NOI18N sha1HashTextField.setEnabled(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 8; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5); + add(sha1HashTextField, gridBagConstraints); md5HashTextField.setText(org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.md5HashTextField.text")); // NOI18N md5HashTextField.setEnabled(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 7; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5); + add(md5HashTextField, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(sha1HashLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.sha1HashLabel.text")); // NOI18N sha1HashLabel.setEnabled(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 8; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + add(sha1HashLabel, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(md5HashLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.md5HashLabel.text")); // NOI18N md5HashLabel.setEnabled(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 7; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + add(md5HashLabel, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(hashValuesLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.hashValuesLabel.text")); // NOI18N hashValuesLabel.setEnabled(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 6; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + add(hashValuesLabel, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(hashValuesNoteLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.hashValuesNoteLabel.text")); // NOI18N hashValuesNoteLabel.setEnabled(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 10; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + add(hashValuesNoteLabel, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText(passwordLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.passwordLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 5; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + add(passwordLabel, gridBagConstraints); passwordTextField.setText(org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.passwordTextField.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 5; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5); + add(passwordTextField, gridBagConstraints); - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(pathTextField) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(browseButton) - .addGap(2, 2, 2)) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(pathLabel) - .addComponent(noFatOrphansCheckbox, javax.swing.GroupLayout.PREFERRED_SIZE, 262, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 368, Short.MAX_VALUE)) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(errorLabel) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(timeZoneLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(timeZoneComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(sectorSizeLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(sectorSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(md5HashLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(md5HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(sha1HashLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(sha1HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(sha256HashLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(sha256HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(hashValuesNoteLabel) - .addGroup(layout.createSequentialGroup() - .addComponent(passwordLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(passwordTextField)) - .addComponent(hashValuesLabel)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + javax.swing.GroupLayout spacerLayout = new javax.swing.GroupLayout(spacer); + spacer.setLayout(spacerLayout); + spacerLayout.setHorizontalGroup( + spacerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(pathLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(browseButton) - .addComponent(pathTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(noFatOrphansCheckbox) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(timeZoneComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(timeZoneLabel)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(sectorSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(sectorSizeLabel)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(passwordLabel) - .addComponent(passwordTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(hashValuesLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(md5HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(md5HashLabel)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(sha1HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(sha1HashLabel)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(sha256HashTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(sha256HashLabel)) - .addGap(18, 18, 18) - .addComponent(hashValuesNoteLabel) - .addGap(18, 18, 18) - .addComponent(errorLabel) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + spacerLayout.setVerticalGroup( + spacerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) ); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 12; + gridBagConstraints.weighty = 1.0; + add(spacer, gridBagConstraints); }// //GEN-END:initComponents @NbBundle.Messages({"ImageFilePanel.000.confirmationMessage=The selected file" @@ -478,7 +586,12 @@ public class ImageFilePanel extends JPanel implements DocumentListener { "ImageFilePanel.validatePanel.dataSourceOnCDriveError=Warning: Path to multi-user data source is on \"C:\" drive", "ImageFilePanel.validatePanel.invalidMD5=Invalid MD5 hash", "ImageFilePanel.validatePanel.invalidSHA1=Invalid SHA1 hash", - "ImageFilePanel.validatePanel.invalidSHA256=Invalid SHA256 hash",}) + "ImageFilePanel.validatePanel.invalidSHA256=Invalid SHA256 hash", + "# {0} - imageOpenError", + "ImageFilePanel_validatePanel_imageOpenError=

An error occurred while opening the image:{0}

", + "ImageFilePanel_validatePanel_unknownErrorMsg=", + "ImageFilePanel_validatePanel_unknownError=

An unknown error occurred while attempting to validate the image

" + }) public boolean validatePanel() { errorLabel.setVisible(false); @@ -488,31 +601,59 @@ public class ImageFilePanel extends JPanel implements DocumentListener { } if (!StringUtils.isBlank(getMd5()) && !HashUtility.isValidMd5Hash(getMd5())) { - errorLabel.setVisible(true); - errorLabel.setText(Bundle.ImageFilePanel_validatePanel_invalidMD5()); + showError(Bundle.ImageFilePanel_validatePanel_invalidMD5()); return false; } if (!StringUtils.isBlank(getSha1()) && !HashUtility.isValidSha1Hash(getSha1())) { - errorLabel.setVisible(true); - errorLabel.setText(Bundle.ImageFilePanel_validatePanel_invalidSHA1()); + showError(Bundle.ImageFilePanel_validatePanel_invalidSHA1()); return false; } if (!StringUtils.isBlank(getSha256()) && !HashUtility.isValidSha256Hash(getSha256())) { - errorLabel.setVisible(true); - errorLabel.setText(Bundle.ImageFilePanel_validatePanel_invalidSHA256()); + showError(Bundle.ImageFilePanel_validatePanel_invalidSHA256()); return false; } if (!PathValidator.isValidForCaseType(path, Case.getCurrentCase().getCaseType())) { - errorLabel.setVisible(true); - errorLabel.setText(Bundle.ImageFilePanel_validatePanel_dataSourceOnCDriveError()); + showError(Bundle.ImageFilePanel_validatePanel_dataSourceOnCDriveError()); + } + + try { + String password = this.getPassword(); + TestOpenImageResult testResult = SleuthkitJNI.testOpenImage(path, password); + if (!testResult.wasSuccessful()) { + showError(Bundle.ImageFilePanel_validatePanel_imageOpenError( + StringUtils.defaultIfBlank( + testResult.getMessage(), + Bundle.ImageFilePanel_validatePanel_unknownErrorMsg()))); + return false; + } + } catch (Throwable t) { + logger.log(Level.SEVERE, "An unknown error occurred test opening image: " + path, t); + showError(Bundle.ImageFilePanel_validatePanel_unknownError()); + return false; } return true; } + /** + * Show an error message if error message is non-empty. Otherwise, hide + * error message. + * + * @param errorMessage The error message to show. + */ + private void showError(String errorMessage) { + if (StringUtils.isNotBlank(errorMessage)) { + errorLabel.setVisible(true); + errorLabel.setText(errorMessage); + } else { + errorLabel.setVisible(false); + errorLabel.setText(""); + } + } + private boolean isImagePathValid() { String path = getContentPaths(); @@ -538,21 +679,6 @@ public class ImageFilePanel extends JPanel implements DocumentListener { } } - @Override - public void insertUpdate(DocumentEvent e) { - updateHelper(); - } - - @Override - public void removeUpdate(DocumentEvent e) { - updateHelper(); - } - - @Override - public void changedUpdate(DocumentEvent e) { - updateHelper(); - } - /** * Update functions are called by the pathTextField which has this set as * it's DocumentEventListener. Each update function fires a property change @@ -578,4 +704,40 @@ public class ImageFilePanel extends JPanel implements DocumentListener { public void select() { pathTextField.requestFocusInWindow(); } + + /** + * This class validates on a delay canceling any tasks previously scheduled + * so that password validation doesn't lock up the system. + */ + private class DelayedValidationDocListener implements DocumentListener { + + @Override + public void insertUpdate(DocumentEvent e) { + delayValidate(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + delayValidate(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + delayValidate(); + } + + private synchronized void delayValidate() { + if (ImageFilePanel.this.validateAction != null) { + ImageFilePanel.this.validateAction.cancel(true); + } + + ImageFilePanel.this.validateAction = ImageFilePanel.this.delayedValidationService.schedule( + () -> { + ImageFilePanel.this.updateHelper(); + return null; + }, + VALIDATE_TIMEOUT_MILLIS, + TimeUnit.MILLISECONDS); + } + } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java index 5843220af4..e63943a456 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java @@ -173,7 +173,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), new String[]{drivePath}, sectorSize, - timeZone, null, null, null, deviceId, this.host, this.password); + timeZone, null, null, null, deviceId, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding local disk with path " + drivePath + " to database", ex); final List errors = new ArrayList<>(); diff --git a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/AddMultipleImagesTask.java b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/AddMultipleImagesTask.java index 4cf0503679..95484341c7 100644 --- a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/AddMultipleImagesTask.java +++ b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/AddMultipleImagesTask.java @@ -128,7 +128,7 @@ class AddMultipleImagesTask implements Runnable { for (String imageFilePath : imageFilePaths) { try { currentImage = SleuthkitJNI.addImageToDatabase(currentCase.getSleuthkitCase(), new String[]{imageFilePath}, - 0, timeZone, "", "", "", deviceId, host, null); + 0, timeZone, "", "", "", deviceId, host); } catch (TskCoreException ex) { LOGGER.log(Level.SEVERE, "Error adding image " + imageFilePath + " to database", ex); errorMessages.add(Bundle.AddMultipleImagesTask_imageError(imageFilePath)); diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java index 137850ee17..860739f91b 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java +++ b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java @@ -1230,7 +1230,7 @@ public class PortableCaseReportModule implements ReportModule { if (content instanceof Image) { Image image = (Image) content; newContent = portableSkCase.addImage(image.getType(), image.getSsize(), image.getSize(), image.getName(), - new ArrayList<>(), image.getTimeZone(), md5, sha1, sha256, image.getDeviceId(), newHost, null, trans); + new ArrayList<>(), image.getTimeZone(), md5, sha1, sha256, image.getDeviceId(), newHost, trans); } else if (content instanceof VolumeSystem) { VolumeSystem vs = (VolumeSystem) content; newContent = portableSkCase.addVolumeSystem(parentId, vs.getType(), vs.getOffset(), vs.getBlockSize(), trans); From e44cf29272636c0801d7b659c47038ff98cd9ca1 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 17 Dec 2024 14:14:59 -0500 Subject: [PATCH 16/52] updated ivy deps; remove overrides? --- Core/ivy.xml | 58 +++++++++++++------------- CoreLibs/ivy.xml | 88 ++++++++++++++++++++------------------- CoreTestLibs/ivy.xml | 6 +-- KeywordSearch/ivy.xml | 35 +++++++++------- Tika/ivy.xml | 8 ++-- thunderbirdparser/ivy.xml | 8 ++-- 6 files changed, 105 insertions(+), 98 deletions(-) diff --git a/Core/ivy.xml b/Core/ivy.xml index 3d2352648d..3fe1576e97 100644 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -1,5 +1,7 @@ + + ]> @@ -10,43 +12,43 @@ - - - - + + + + - + - + - - + + - + - + - + - + - + - + - + - + - + @@ -62,20 +64,20 @@ - - - - - - + + + + + + - + - + @@ -83,7 +85,7 @@ - + + //changes to bouncy castle version may also be reflected in thirdparty/IcePDF 6.2.2 - + --> diff --git a/CoreLibs/ivy.xml b/CoreLibs/ivy.xml index 446106e111..33d5226fd4 100644 --- a/CoreLibs/ivy.xml +++ b/CoreLibs/ivy.xml @@ -1,6 +1,8 @@ - + + + + ]> @@ -54,8 +56,8 @@ - - + + @@ -67,23 +69,23 @@ - + - + - - - + + + - - - - + + + + @@ -101,45 +103,45 @@ https://github.com/controlsfx/controlsfx/issues/1241 --> - + - + - - - + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + - - + + - + + // changes to bouncy castle version may also be reflected in thirdparty/IcePDF 6.2.2 - + --> diff --git a/CoreTestLibs/ivy.xml b/CoreTestLibs/ivy.xml index 7cbcd8e48d..4a8ad3cb43 100644 --- a/CoreTestLibs/ivy.xml +++ b/CoreTestLibs/ivy.xml @@ -5,9 +5,9 @@ - - - + + + \ No newline at end of file diff --git a/KeywordSearch/ivy.xml b/KeywordSearch/ivy.xml index a2bf2cb14c..9ea3eeee4a 100644 --- a/KeywordSearch/ivy.xml +++ b/KeywordSearch/ivy.xml @@ -1,5 +1,9 @@ - + + + +]> @@ -17,32 +21,31 @@ - + - + - - + + - + - - - + + + - - - + + + - - + diff --git a/Tika/ivy.xml b/Tika/ivy.xml index 62b93e7cae..58a7337faa 100755 --- a/Tika/ivy.xml +++ b/Tika/ivy.xml @@ -4,10 +4,10 @@ - + - + + // changes to bouncy castle version may also be reflected in thirdparty/IcePDF 6.2.2 - + --> diff --git a/thunderbirdparser/ivy.xml b/thunderbirdparser/ivy.xml index df9efc8130..fce2d5e95e 100644 --- a/thunderbirdparser/ivy.xml +++ b/thunderbirdparser/ivy.xml @@ -7,9 +7,9 @@ - - - - + + + From bf7ab84422c785cb8f7c2b84a5837f8c2c3b5223 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 17 Dec 2024 14:41:02 -0500 Subject: [PATCH 17/52] updates and fixes --- Core/ivy.xml | 2 +- Core/nbproject/project.properties | 122 ++--- Core/nbproject/project.xml | 262 +++++------ CoreLibs/nbproject/project.properties | 250 +++++------ CoreLibs/nbproject/project.xml | 516 +++++++++++----------- CoreTestLibs/nbproject/project.properties | 6 +- CoreTestLibs/nbproject/project.xml | 12 +- KeywordSearch/ivy.xml | 2 +- 8 files changed, 586 insertions(+), 586 deletions(-) diff --git a/Core/ivy.xml b/Core/ivy.xml index 3fe1576e97..8c9626fae5 100644 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -1,7 +1,7 @@ - + ]> diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index 927bf11766..6dff2bc257 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -1,106 +1,106 @@ -file.reference.activemq-all-5.16.4.jar=release/modules/ext/activemq-all-5.16.4.jar +file.reference.activemq-all-6.1.4.jar=release/modules/ext/activemq-all-6.1.4.jar +file.reference.angus-activation-2.0.2.jar=release/modules/ext/angus-activation-2.0.2.jar file.reference.audience-annotations-0.12.0.jar=release/modules/ext/audience-annotations-0.12.0.jar -file.reference.batik-awt-util-1.14.jar=release/modules/ext/batik-awt-util-1.14.jar -file.reference.batik-constants-1.14.jar=release/modules/ext/batik-constants-1.14.jar -file.reference.batik-css-1.14.jar=release/modules/ext/batik-css-1.14.jar -file.reference.batik-dom-1.14.jar=release/modules/ext/batik-dom-1.14.jar -file.reference.batik-ext-1.14.jar=release/modules/ext/batik-ext-1.14.jar -file.reference.batik-i18n-1.14.jar=release/modules/ext/batik-i18n-1.14.jar -file.reference.batik-parser-1.14.jar=release/modules/ext/batik-parser-1.14.jar -file.reference.batik-shared-resources-1.14.jar=release/modules/ext/batik-shared-resources-1.14.jar -file.reference.batik-svg-dom-1.14.jar=release/modules/ext/batik-svg-dom-1.14.jar -file.reference.batik-svggen-1.14.jar=release/modules/ext/batik-svggen-1.14.jar -file.reference.batik-util-1.14.jar=release/modules/ext/batik-util-1.14.jar -file.reference.batik-xml-1.14.jar=release/modules/ext/batik-xml-1.14.jar -file.reference.bcpkix-jdk15on-1.70.jar=release/modules/ext/bcpkix-jdk15on-1.70.jar -file.reference.bcprov-ext-jdk15on-1.70.jar=release/modules/ext/bcprov-ext-jdk15on-1.70.jar -file.reference.bcprov-jdk15on-1.70.jar=release/modules/ext/bcprov-jdk15on-1.70.jar -file.reference.bcutil-jdk15on-1.70.jar=release/modules/ext/bcutil-jdk15on-1.70.jar +file.reference.batik-awt-util-1.18.jar=release/modules/ext/batik-awt-util-1.18.jar +file.reference.batik-constants-1.18.jar=release/modules/ext/batik-constants-1.18.jar +file.reference.batik-css-1.18.jar=release/modules/ext/batik-css-1.18.jar +file.reference.batik-dom-1.18.jar=release/modules/ext/batik-dom-1.18.jar +file.reference.batik-ext-1.18.jar=release/modules/ext/batik-ext-1.18.jar +file.reference.batik-i18n-1.18.jar=release/modules/ext/batik-i18n-1.18.jar +file.reference.batik-parser-1.18.jar=release/modules/ext/batik-parser-1.18.jar +file.reference.batik-shared-resources-1.18.jar=release/modules/ext/batik-shared-resources-1.18.jar +file.reference.batik-svg-dom-1.18.jar=release/modules/ext/batik-svg-dom-1.18.jar +file.reference.batik-svggen-1.18.jar=release/modules/ext/batik-svggen-1.18.jar +file.reference.batik-util-1.18.jar=release/modules/ext/batik-util-1.18.jar +file.reference.batik-xml-1.18.jar=release/modules/ext/batik-xml-1.18.jar +file.reference.bcpkix-jdk15on-1.54.jar=release/modules/ext/bcpkix-jdk15on-1.54.jar +file.reference.bcprov-ext-jdk15on-1.54.jar=release/modules/ext/bcprov-ext-jdk15on-1.54.jar +file.reference.bcprov-jdk15on-1.54.jar=release/modules/ext/bcprov-jdk15on-1.54.jar +file.reference.bcprov-jdk18on-1.72.jar=release/modules/ext/bcprov-jdk18on-1.72.jar file.reference.c3p0-0.9.5.5.jar=release/modules/ext/c3p0-0.9.5.5.jar file.reference.checker-qual-3.33.0.jar=release/modules/ext/checker-qual-3.33.0.jar file.reference.commons-codec-1.11.jar=release/modules/ext/commons-codec-1.11.jar -file.reference.commons-dbcp2-2.9.0.jar=release/modules/ext/commons-dbcp2-2.9.0.jar -file.reference.commons-io-2.11.0.jar=release/modules/ext/commons-io-2.11.0.jar +file.reference.commons-dbcp2-2.13.0.jar=release/modules/ext/commons-dbcp2-2.13.0.jar +file.reference.commons-io-2.17.0.jar=release/modules/ext/commons-io-2.17.0.jar file.reference.commons-lang3-3.10.jar=release/modules/ext/commons-lang3-3.10.jar -file.reference.commons-logging-1.2.jar=release/modules/ext/commons-logging-1.2.jar -file.reference.commons-pool2-2.10.0.jar=release/modules/ext/commons-pool2-2.10.0.jar -file.reference.curator-client-5.2.1.jar=release/modules/ext/curator-client-5.2.1.jar -file.reference.curator-framework-5.2.1.jar=release/modules/ext/curator-framework-5.2.1.jar -file.reference.curator-recipes-5.2.1.jar=release/modules/ext/curator-recipes-5.2.1.jar +file.reference.commons-logging-1.3.4.jar=release/modules/ext/commons-logging-1.3.4.jar +file.reference.commons-pool2-2.12.0.jar=release/modules/ext/commons-pool2-2.12.0.jar +file.reference.curator-client-5.7.1.jar=release/modules/ext/curator-client-5.7.1.jar +file.reference.curator-framework-5.7.1.jar=release/modules/ext/curator-framework-5.7.1.jar +file.reference.curator-recipes-5.7.1.jar=release/modules/ext/curator-recipes-5.7.1.jar file.reference.DatCon.jar=release/modules/ext/DatCon.jar file.reference.decodetect-core-0.3.jar=release/modules/ext/decodetect-core-0.3.jar file.reference.error_prone_annotations-2.18.0.jar=release/modules/ext/error_prone_annotations-2.18.0.jar file.reference.failureaccess-1.0.1.jar=release/modules/ext/failureaccess-1.0.1.jar -file.reference.guava-32.0.1-jre.jar=release/modules/ext/guava-32.0.1-jre.jar +file.reference.guava-32.0.0-jre.jar=release/modules/ext/guava-32.0.0-jre.jar file.reference.httpclient-4.5.14.jar=release/modules/ext/httpclient-4.5.14.jar file.reference.httpclient-win-4.5.14.jar=release/modules/ext/httpclient-win-4.5.14.jar file.reference.httpcore-4.4.16.jar=release/modules/ext/httpcore-4.4.16.jar file.reference.httpmime-4.5.14.jar=release/modules/ext/httpmime-4.5.14.jar file.reference.icepdf-core-6.2.2.jar=release/modules/ext/icepdf-core-6.2.2.jar file.reference.icepdf-viewer-6.2.2.jar=release/modules/ext/icepdf-viewer-6.2.2.jar -file.reference.istack-commons-runtime-3.0.11.jar=release/modules/ext/istack-commons-runtime-3.0.11.jar +file.reference.istack-commons-runtime-4.1.2.jar=release/modules/ext/istack-commons-runtime-4.1.2.jar file.reference.j2objc-annotations-2.8.jar=release/modules/ext/j2objc-annotations-2.8.jar -file.reference.jackcess-4.0.1.jar=release/modules/ext/jackcess-4.0.1.jar -file.reference.jackcess-encrypt-4.0.1.jar=release/modules/ext/jackcess-encrypt-4.0.1.jar +file.reference.jackcess-4.0.7.jar=release/modules/ext/jackcess-4.0.7.jar +file.reference.jackcess-encrypt-4.0.2.jar=release/modules/ext/jackcess-encrypt-4.0.2.jar file.reference.jai_core-1.1.3.jar=release/modules/ext/jai_core-1.1.3.jar file.reference.jai_imageio-1.1.jar=release/modules/ext/jai_imageio-1.1.jar -file.reference.jakarta.activation-1.2.2.jar=release/modules/ext/jakarta.activation-1.2.2.jar -file.reference.jakarta.xml.bind-api-2.3.3.jar=release/modules/ext/jakarta.xml.bind-api-2.3.3.jar -file.reference.java-diff-utils-4.11.jar=release/modules/ext/java-diff-utils-4.11.jar +file.reference.jakarta.activation-api-2.1.3.jar=release/modules/ext/jakarta.activation-api-2.1.3.jar +file.reference.jakarta.annotation-api-2.1.1.jar=release/modules/ext/jakarta.annotation-api-2.1.1.jar +file.reference.jakarta.transaction-api-1.3.3.jar=release/modules/ext/jakarta.transaction-api-1.3.3.jar +file.reference.jakarta.xml.bind-api-4.0.2.jar=release/modules/ext/jakarta.xml.bind-api-4.0.2.jar +file.reference.java-diff-utils-4.15.jar=release/modules/ext/java-diff-utils-4.15.jar file.reference.javax.activation-api-1.2.0.jar=release/modules/ext/javax.activation-api-1.2.0.jar file.reference.javax.ws.rs-api-2.1.1.jar=release/modules/ext/javax.ws.rs-api-2.1.1.jar file.reference.jaxb-api-2.3.1.jar=release/modules/ext/jaxb-api-2.3.1.jar -file.reference.jaxb-runtime-2.3.3.jar=release/modules/ext/jaxb-runtime-2.3.3.jar +file.reference.jaxb-core-4.0.5.jar=release/modules/ext/jaxb-core-4.0.5.jar +file.reference.jaxb-runtime-4.0.5.jar=release/modules/ext/jaxb-runtime-4.0.5.jar file.reference.jdom-2.0.5-contrib.jar=release/modules/ext/jdom-2.0.5-contrib.jar file.reference.jdom-2.0.5.jar=release/modules/ext/jdom-2.0.5.jar -file.reference.jfreechart-1.5.3.jar=release/modules/ext/jfreechart-1.5.3.jar +file.reference.jfreechart-1.5.5.jar=release/modules/ext/jfreechart-1.5.5.jar file.reference.jgraphx-4.2.2.jar=release/modules/ext/jgraphx-4.2.2.jar -file.reference.jsoup-1.16.1.jar=release/modules/ext/jsoup-1.16.1.jar +file.reference.jsoup-1.18.3.jar=release/modules/ext/jsoup-1.18.3.jar file.reference.jsr305-3.0.2.jar=release/modules/ext/jsr305-3.0.2.jar file.reference.jutf7-1.0.0.jar=release/modules/ext/jutf7-1.0.0.jar -file.reference.jxmapviewer2-2.6.jar=release/modules/ext/jxmapviewer2-2.6.jar -file.reference.jython-standalone-2.7.2.jar=release/modules/ext/jython-standalone-2.7.2.jar -file.reference.libphonenumber-8.12.45.jar=release/modules/ext/libphonenumber-8.12.45.jar -file.reference.license4j-runtime-library-4.7.1.jar=release/modules/ext/license4j-runtime-library-4.7.1.jar +file.reference.jxmapviewer2-2.8.jar=release/modules/ext/jxmapviewer2-2.8.jar +file.reference.jython-standalone-2.7.4.jar=release/modules/ext/jython-standalone-2.7.4.jar +file.reference.libphonenumber-8.13.52.jar=release/modules/ext/libphonenumber-8.13.52.jar +file.reference.license4j-runtime-library-4.7.3.jar=release/modules/ext/license4j-runtime-library-4.7.3.jar file.reference.listenablefuture-1.0.jar=release/modules/ext/listenablefuture-1.0.jar -file.reference.logback-classic-1.2.10.jar=release/modules/ext/logback-classic-1.2.10.jar -file.reference.logback-core-1.2.10.jar=release/modules/ext/logback-core-1.2.10.jar file.reference.mchange-commons-java-0.3.0.jar=release/modules/ext/mchange-commons-java-0.3.0.jar -file.reference.metadata-extractor-2.18.0.jar=release/modules/ext/metadata-extractor-2.18.0.jar -file.reference.netty-buffer-4.1.73.Final.jar=release/modules/ext/netty-buffer-4.1.73.Final.jar -file.reference.netty-codec-4.1.73.Final.jar=release/modules/ext/netty-codec-4.1.73.Final.jar -file.reference.netty-common-4.1.73.Final.jar=release/modules/ext/netty-common-4.1.73.Final.jar -file.reference.netty-handler-4.1.73.Final.jar=release/modules/ext/netty-handler-4.1.73.Final.jar -file.reference.netty-resolver-4.1.73.Final.jar=release/modules/ext/netty-resolver-4.1.73.Final.jar -file.reference.netty-tcnative-2.0.48.Final.jar=release/modules/ext/netty-tcnative-2.0.48.Final.jar -file.reference.netty-tcnative-classes-2.0.48.Final.jar=release/modules/ext/netty-tcnative-classes-2.0.48.Final.jar -file.reference.netty-transport-4.1.73.Final.jar=release/modules/ext/netty-transport-4.1.73.Final.jar -file.reference.netty-transport-classes-epoll-4.1.73.Final.jar=release/modules/ext/netty-transport-classes-epoll-4.1.73.Final.jar -file.reference.netty-transport-native-epoll-4.1.73.Final.jar=release/modules/ext/netty-transport-native-epoll-4.1.73.Final.jar -file.reference.netty-transport-native-unix-common-4.1.73.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.73.Final.jar +file.reference.metadata-extractor-2.19.0.jar=release/modules/ext/metadata-extractor-2.19.0.jar +file.reference.netty-buffer-4.1.113.Final.jar=release/modules/ext/netty-buffer-4.1.113.Final.jar +file.reference.netty-codec-4.1.113.Final.jar=release/modules/ext/netty-codec-4.1.113.Final.jar +file.reference.netty-common-4.1.113.Final.jar=release/modules/ext/netty-common-4.1.113.Final.jar +file.reference.netty-handler-4.1.113.Final.jar=release/modules/ext/netty-handler-4.1.113.Final.jar +file.reference.netty-resolver-4.1.113.Final.jar=release/modules/ext/netty-resolver-4.1.113.Final.jar +file.reference.netty-tcnative-boringssl-static-2.0.66.Final.jar=release/modules/ext/netty-tcnative-boringssl-static-2.0.66.Final.jar +file.reference.netty-tcnative-classes-2.0.66.Final.jar=release/modules/ext/netty-tcnative-classes-2.0.66.Final.jar +file.reference.netty-transport-4.1.113.Final.jar=release/modules/ext/netty-transport-4.1.113.Final.jar +file.reference.netty-transport-classes-epoll-4.1.113.Final.jar=release/modules/ext/netty-transport-classes-epoll-4.1.113.Final.jar +file.reference.netty-transport-native-epoll-4.1.113.Final-linux-x86_64.jar=release/modules/ext/netty-transport-native-epoll-4.1.113.Final-linux-x86_64.jar +file.reference.netty-transport-native-unix-common-4.1.113.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.113.Final.jar file.reference.okhttp-2.7.5.jar=release/modules/ext/okhttp-2.7.5.jar file.reference.okio-1.6.0.jar=release/modules/ext/okio-1.6.0.jar file.reference.postgresql-42.7.3.jar=release/modules/ext/postgresql-42.7.3.jar file.reference.Rejistry-1.1-SNAPSHOT.jar=release/modules/ext/Rejistry-1.1-SNAPSHOT.jar -file.reference.serializer-2.7.2.jar=release/modules/ext/serializer-2.7.2.jar file.reference.sevenzipjbinding-AllPlatforms.jar=release/modules/ext/sevenzipjbinding-AllPlatforms.jar file.reference.sevenzipjbinding.jar=release/modules/ext/sevenzipjbinding.jar file.reference.sleuthkit-4.12.1.jar=release/modules/ext/sleuthkit-4.12.1.jar file.reference.sleuthkit-caseuco-4.12.1.jar=release/modules/ext/sleuthkit-caseuco-4.12.1.jar -file.reference.slf4j-api-1.7.36.jar=release/modules/ext/slf4j-api-1.7.36.jar -file.reference.snakeyaml-2.0.jar=release/modules/ext/snakeyaml-2.0.jar +file.reference.slf4j-api-1.7.30.jar=release/modules/ext/slf4j-api-1.7.30.jar +file.reference.snakeyaml-2.3.jar=release/modules/ext/snakeyaml-2.3.jar file.reference.SparseBitSet-1.1.jar=release/modules/ext/SparseBitSet-1.1.jar -file.reference.spotbugs-annotations-4.6.0.jar=release/modules/ext/spotbugs-annotations-4.6.0.jar +file.reference.spotbugs-annotations-4.8.6.jar=release/modules/ext/spotbugs-annotations-4.8.6.jar file.reference.sqlite-jdbc-3.47.1.0.jar=release/modules/ext/sqlite-jdbc-3.47.1.0.jar -file.reference.txw2-2.3.3.jar=release/modules/ext/txw2-2.3.3.jar -file.reference.xalan-2.7.2.jar=release/modules/ext/xalan-2.7.2.jar +file.reference.txw2-4.0.5.jar=release/modules/ext/txw2-4.0.5.jar file.reference.xml-apis-1.4.01.jar=release/modules/ext/xml-apis-1.4.01.jar file.reference.xml-apis-ext-1.3.04.jar=release/modules/ext/xml-apis-ext-1.3.04.jar -file.reference.xmlgraphics-commons-2.6.jar=release/modules/ext/xmlgraphics-commons-2.6.jar +file.reference.xmlgraphics-commons-2.10.jar=release/modules/ext/xmlgraphics-commons-2.10.jar file.reference.xmpcore-6.1.11.jar=release/modules/ext/xmpcore-6.1.11.jar file.reference.YaraJNIWrapper.jar=release/modules/ext/YaraJNIWrapper.jar -file.reference.zookeeper-3.8.0.jar=release/modules/ext/zookeeper-3.8.0.jar -file.reference.zookeeper-jute-3.8.0.jar=release/modules/ext/zookeeper-jute-3.8.0.jar +file.reference.zookeeper-3.9.3.jar=release/modules/ext/zookeeper-3.9.3.jar +file.reference.zookeeper-jute-3.9.3.jar=release/modules/ext/zookeeper-jute-3.9.3.jar javac.source=17 javac.compilerargs=-Xlint -Xlint:-serial license.file=../LICENSE-2.0.txt diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 7db7273bc1..deb06cbb28 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -370,76 +370,80 @@ org.sleuthkit.datamodel.blackboardutils.attributes - ext/activemq-all-5.16.4.jar - release/modules/ext/activemq-all-5.16.4.jar + ext/activemq-all-6.1.4.jar + release/modules/ext/activemq-all-6.1.4.jar + + + ext/angus-activation-2.0.2.jar + release/modules/ext/angus-activation-2.0.2.jar ext/audience-annotations-0.12.0.jar release/modules/ext/audience-annotations-0.12.0.jar - ext/batik-awt-util-1.14.jar - release/modules/ext/batik-awt-util-1.14.jar + ext/batik-awt-util-1.18.jar + release/modules/ext/batik-awt-util-1.18.jar - ext/batik-constants-1.14.jar - release/modules/ext/batik-constants-1.14.jar + ext/batik-constants-1.18.jar + release/modules/ext/batik-constants-1.18.jar - ext/batik-css-1.14.jar - release/modules/ext/batik-css-1.14.jar + ext/batik-css-1.18.jar + release/modules/ext/batik-css-1.18.jar - ext/batik-dom-1.14.jar - release/modules/ext/batik-dom-1.14.jar + ext/batik-dom-1.18.jar + release/modules/ext/batik-dom-1.18.jar - ext/batik-ext-1.14.jar - release/modules/ext/batik-ext-1.14.jar + ext/batik-ext-1.18.jar + release/modules/ext/batik-ext-1.18.jar - ext/batik-i18n-1.14.jar - release/modules/ext/batik-i18n-1.14.jar + ext/batik-i18n-1.18.jar + release/modules/ext/batik-i18n-1.18.jar - ext/batik-parser-1.14.jar - release/modules/ext/batik-parser-1.14.jar + ext/batik-parser-1.18.jar + release/modules/ext/batik-parser-1.18.jar - ext/batik-shared-resources-1.14.jar - release/modules/ext/batik-shared-resources-1.14.jar + ext/batik-shared-resources-1.18.jar + release/modules/ext/batik-shared-resources-1.18.jar - ext/batik-svg-dom-1.14.jar - release/modules/ext/batik-svg-dom-1.14.jar + ext/batik-svg-dom-1.18.jar + release/modules/ext/batik-svg-dom-1.18.jar - ext/batik-svggen-1.14.jar - release/modules/ext/batik-svggen-1.14.jar + ext/batik-svggen-1.18.jar + release/modules/ext/batik-svggen-1.18.jar - ext/batik-util-1.14.jar - release/modules/ext/batik-util-1.14.jar + ext/batik-util-1.18.jar + release/modules/ext/batik-util-1.18.jar - ext/batik-xml-1.14.jar - release/modules/ext/batik-xml-1.14.jar + ext/batik-xml-1.18.jar + release/modules/ext/batik-xml-1.18.jar - ext/bcpkix-jdk15on-1.70.jar - release/modules/ext/bcpkix-jdk15on-1.70.jar + ext/bcpkix-jdk15on-1.54.jar + release/modules/ext/bcpkix-jdk15on-1.54.jar - ext/bcprov-ext-jdk15on-1.70.jar - release/modules/ext/bcprov-ext-jdk15on-1.70.jar + ext/bcprov-ext-jdk15on-1.54.jar + release/modules/ext/bcprov-ext-jdk15on-1.54.jar - ext/bcprov-jdk15on-1.70.jar - release/modules/ext/bcprov-jdk15on-1.70.jar + ext/bcprov-jdk15on-1.54.jar + release/modules/ext/bcprov-jdk15on-1.54.jar - ext/bcutil-jdk15on-1.70.jar - release/modules/ext/bcutil-jdk15on-1.70.jar + ext/bcprov-jdk18on-1.72.jar + release/modules/ext/bcprov-jdk18on-1.72.jar ext/c3p0-0.9.5.5.jar @@ -454,36 +458,36 @@ release/modules/ext/commons-codec-1.11.jar - ext/commons-dbcp2-2.9.0.jar - release/modules/ext/commons-dbcp2-2.9.0.jar + ext/commons-dbcp2-2.13.0.jar + release/modules/ext/commons-dbcp2-2.13.0.jar - ext/commons-io-2.11.0.jar - release/modules/ext/commons-io-2.11.0.jar + ext/commons-io-2.17.0.jar + release/modules/ext/commons-io-2.17.0.jar ext/commons-lang3-3.10.jar release/modules/ext/commons-lang3-3.10.jar - ext/commons-logging-1.2.jar - release/modules/ext/commons-logging-1.2.jar + ext/commons-logging-1.3.4.jar + release/modules/ext/commons-logging-1.3.4.jar - ext/commons-pool2-2.10.0.jar - release/modules/ext/commons-pool2-2.10.0.jar + ext/commons-pool2-2.12.0.jar + release/modules/ext/commons-pool2-2.12.0.jar - ext/curator-client-5.2.1.jar - release/modules/ext/curator-client-5.2.1.jar + ext/curator-client-5.7.1.jar + release/modules/ext/curator-client-5.7.1.jar - ext/curator-framework-5.2.1.jar - release/modules/ext/curator-framework-5.2.1.jar + ext/curator-framework-5.7.1.jar + release/modules/ext/curator-framework-5.7.1.jar - ext/curator-recipes-5.2.1.jar - release/modules/ext/curator-recipes-5.2.1.jar + ext/curator-recipes-5.7.1.jar + release/modules/ext/curator-recipes-5.7.1.jar ext/DatCon.jar @@ -502,8 +506,8 @@ release/modules/ext/failureaccess-1.0.1.jar - ext/guava-32.0.1-jre.jar - release/modules/ext/guava-32.0.1-jre.jar + ext/guava-32.0.0-jre.jar + release/modules/ext/guava-32.0.0-jre.jar ext/httpclient-4.5.14.jar @@ -530,20 +534,20 @@ release/modules/ext/icepdf-viewer-6.2.2.jar - ext/istack-commons-runtime-3.0.11.jar - release/modules/ext/istack-commons-runtime-3.0.11.jar + ext/istack-commons-runtime-4.1.2.jar + release/modules/ext/istack-commons-runtime-4.1.2.jar ext/j2objc-annotations-2.8.jar release/modules/ext/j2objc-annotations-2.8.jar - ext/jackcess-4.0.1.jar - release/modules/ext/jackcess-4.0.1.jar + ext/jackcess-4.0.7.jar + release/modules/ext/jackcess-4.0.7.jar - ext/jackcess-encrypt-4.0.1.jar - release/modules/ext/jackcess-encrypt-4.0.1.jar + ext/jackcess-encrypt-4.0.2.jar + release/modules/ext/jackcess-encrypt-4.0.2.jar ext/jai_core-1.1.3.jar @@ -554,16 +558,24 @@ release/modules/ext/jai_imageio-1.1.jar - ext/jakarta.activation-1.2.2.jar - release/modules/ext/jakarta.activation-1.2.2.jar + ext/jakarta.activation-api-2.1.3.jar + release/modules/ext/jakarta.activation-api-2.1.3.jar - ext/jakarta.xml.bind-api-2.3.3.jar - release/modules/ext/jakarta.xml.bind-api-2.3.3.jar + ext/jakarta.annotation-api-2.1.1.jar + release/modules/ext/jakarta.annotation-api-2.1.1.jar - ext/java-diff-utils-4.11.jar - release/modules/ext/java-diff-utils-4.11.jar + ext/jakarta.transaction-api-1.3.3.jar + release/modules/ext/jakarta.transaction-api-1.3.3.jar + + + ext/jakarta.xml.bind-api-4.0.2.jar + release/modules/ext/jakarta.xml.bind-api-4.0.2.jar + + + ext/java-diff-utils-4.15.jar + release/modules/ext/java-diff-utils-4.15.jar ext/javax.activation-api-1.2.0.jar @@ -578,8 +590,12 @@ release/modules/ext/jaxb-api-2.3.1.jar - ext/jaxb-runtime-2.3.3.jar - release/modules/ext/jaxb-runtime-2.3.3.jar + ext/jaxb-core-4.0.5.jar + release/modules/ext/jaxb-core-4.0.5.jar + + + ext/jaxb-runtime-4.0.5.jar + release/modules/ext/jaxb-runtime-4.0.5.jar ext/jdom-2.0.5-contrib.jar @@ -590,16 +606,16 @@ release/modules/ext/jdom-2.0.5.jar - ext/jfreechart-1.5.3.jar - release/modules/ext/jfreechart-1.5.3.jar + ext/jfreechart-1.5.5.jar + release/modules/ext/jfreechart-1.5.5.jar ext/jgraphx-4.2.2.jar release/modules/ext/jgraphx-4.2.2.jar - ext/jsoup-1.16.1.jar - release/modules/ext/jsoup-1.16.1.jar + ext/jsoup-1.18.3.jar + release/modules/ext/jsoup-1.18.3.jar ext/jsr305-3.0.2.jar @@ -610,84 +626,76 @@ release/modules/ext/jutf7-1.0.0.jar - ext/jxmapviewer2-2.6.jar - release/modules/ext/jxmapviewer2-2.6.jar + ext/jxmapviewer2-2.8.jar + release/modules/ext/jxmapviewer2-2.8.jar - ext/jython-standalone-2.7.2.jar - release/modules/ext/jython-standalone-2.7.2.jar + ext/jython-standalone-2.7.4.jar + release/modules/ext/jython-standalone-2.7.4.jar - ext/libphonenumber-8.12.45.jar - release/modules/ext/libphonenumber-8.12.45.jar + ext/libphonenumber-8.13.52.jar + release/modules/ext/libphonenumber-8.13.52.jar - ext/license4j-runtime-library-4.7.1.jar - release/modules/ext/license4j-runtime-library-4.7.1.jar + ext/license4j-runtime-library-4.7.3.jar + release/modules/ext/license4j-runtime-library-4.7.3.jar ext/listenablefuture-1.0.jar release/modules/ext/listenablefuture-1.0.jar - - ext/logback-classic-1.2.10.jar - release/modules/ext/logback-classic-1.2.10.jar - - - ext/logback-core-1.2.10.jar - release/modules/ext/logback-core-1.2.10.jar - ext/mchange-commons-java-0.3.0.jar - release/modules/ext/mchange-commons-java-00.3.0.jar + release/modules/ext/mchange-commons-java-0.3.0.jar - ext/metadata-extractor-2.18.0.jar - release/modules/ext/metadata-extractor-2.18.0.jar + ext/metadata-extractor-2.19.0.jar + release/modules/ext/metadata-extractor-2.19.0.jar - ext/netty-buffer-4.1.73.Final.jar - release/modules/ext/netty-buffer-4.1.73.Final.jar + ext/netty-buffer-4.1.113.Final.jar + release/modules/ext/netty-buffer-4.1.113.Final.jar - ext/netty-codec-4.1.73.Final.jar - release/modules/ext/netty-codec-4.1.73.Final.jar + ext/netty-codec-4.1.113.Final.jar + release/modules/ext/netty-codec-4.1.113.Final.jar - ext/netty-common-4.1.73.Final.jar - release/modules/ext/netty-common-4.1.73.Final.jar + ext/netty-common-4.1.113.Final.jar + release/modules/ext/netty-common-4.1.113.Final.jar - ext/netty-handler-4.1.73.Final.jar - release/modules/ext/netty-handler-4.1.73.Final.jar + ext/netty-handler-4.1.113.Final.jar + release/modules/ext/netty-handler-4.1.113.Final.jar - ext/netty-resolver-4.1.73.Final.jar - release/modules/ext/netty-resolver-4.1.73.Final.jar + ext/netty-resolver-4.1.113.Final.jar + release/modules/ext/netty-resolver-4.1.113.Final.jar - ext/netty-tcnative-2.0.48.Final.jar - release/modules/ext/netty-tcnative-2.0.48.Final.jar + ext/netty-tcnative-boringssl-static-2.0.66.Final.jar + release/modules/ext/netty-tcnative-boringssl-static-2.0.66.Final.jar - ext/netty-tcnative-classes-2.0.48.Final.jar - release/modules/ext/netty-tcnative-classes-2.0.48.Final.jar + ext/netty-tcnative-classes-2.0.66.Final.jar + release/modules/ext/netty-tcnative-classes-2.0.66.Final.jar - ext/netty-transport-4.1.73.Final.jar - release/modules/ext/netty-transport-4.1.73.Final.jar + ext/netty-transport-4.1.113.Final.jar + release/modules/ext/netty-transport-4.1.113.Final.jar - ext/netty-transport-classes-epoll-4.1.73.Final.jar - release/modules/ext/netty-transport-classes-epoll-4.1.73.Final.jar + ext/netty-transport-classes-epoll-4.1.113.Final.jar + release/modules/ext/netty-transport-classes-epoll-4.1.113.Final.jar - ext/netty-transport-native-epoll-4.1.73.Final.jar - release/modules/ext/netty-transport-native-epoll-4.1.73.Final.jar + ext/netty-transport-native-epoll-4.1.113.Final-linux-x86_64.jar + release/modules/ext/netty-transport-native-epoll-4.1.113.Final-linux-x86_64.jar - ext/netty-transport-native-unix-common-4.1.73.Final.jar - release/modules/ext/netty-transport-native-unix-common-4.1.73.Final.jar + ext/netty-transport-native-unix-common-4.1.113.Final.jar + release/modules/ext/netty-transport-native-unix-common-4.1.113.Final.jar ext/okhttp-2.7.5.jar @@ -705,10 +713,6 @@ ext/Rejistry-1.1-SNAPSHOT.jar release/modules/ext/Rejistry-1.1-SNAPSHOT.jar - - ext/serializer-2.7.2.jar - release/modules/ext/serializer-2.7.2.jar - ext/sevenzipjbinding-AllPlatforms.jar release/modules/ext/sevenzipjbinding-AllPlatforms.jar @@ -726,32 +730,28 @@ release/modules/ext/sleuthkit-caseuco-4.12.1.jar - ext/slf4j-api-1.7.36.jar - release/modules/ext/slf4j-api-1.7.36.jar + ext/slf4j-api-1.7.30.jar + release/modules/ext/slf4j-api-1.7.30.jar - ext/snakeyaml-2.0.jar - release/modules/ext/snakeyaml-2.0.jar + ext/snakeyaml-2.3.jar + release/modules/ext/snakeyaml-2.3.jar ext/SparseBitSet-1.1.jar release/modules/ext/SparseBitSet-1.1.jar - ext/spotbugs-annotations-4.6.0.jar - release/modules/ext/spotbugs-annotations-4.6.0.jar + ext/spotbugs-annotations-4.8.6.jar + release/modules/ext/spotbugs-annotations-4.8.6.jar ext/sqlite-jdbc-3.47.1.0.jar release/modules/ext/sqlite-jdbc-3.47.1.0.jar - ext/txw2-2.3.3.jar - release/modules/ext/txw2-2.3.3.jar - - - ext/xalan-2.7.2.jar - release/modules/ext/xalan-2.7.2.jar + ext/txw2-4.0.5.jar + release/modules/ext/txw2-4.0.5.jar ext/xml-apis-1.4.01.jar @@ -762,8 +762,8 @@ release/modules/ext/xml-apis-ext-1.3.04.jar - ext/xmlgraphics-commons-2.6.jar - release/modules/ext/xmlgraphics-commons-2.6.jar + ext/xmlgraphics-commons-2.10.jar + release/modules/ext/xmlgraphics-commons-2.10.jar ext/xmpcore-6.1.11.jar @@ -774,12 +774,12 @@ release/modules/ext/YaraJNIWrapper.jar - ext/zookeeper-3.8.0.jar - release/modules/ext/zookeeper-3.8.0.jar + ext/zookeeper-3.9.3.jar + release/modules/ext/zookeeper-3.9.3.jar - ext/zookeeper-jute-3.8.0.jar - release/modules/ext/zookeeper-jute-3.8.0.jar + ext/zookeeper-jute-3.9.3.jar + release/modules/ext/zookeeper-jute-3.9.3.jar diff --git a/CoreLibs/nbproject/project.properties b/CoreLibs/nbproject/project.properties index 3dcee33819..6b71060122 100644 --- a/CoreLibs/nbproject/project.properties +++ b/CoreLibs/nbproject/project.properties @@ -1,118 +1,119 @@ -file.reference.animal-sniffer-annotations-1.21.jar=release/modules/ext/animal-sniffer-annotations-1.21.jar +file.reference.animal-sniffer-annotations-1.24.jar=release/modules/ext/animal-sniffer-annotations-1.24.jar file.reference.annotations-4.1.1.4.jar=release/modules/ext/annotations-4.1.1.4.jar -file.reference.ant-1.10.12.jar=release/modules/ext/ant-1.10.12.jar -file.reference.ant-launcher-1.10.12.jar=release/modules/ext/ant-launcher-1.10.12.jar -file.reference.api-common-2.1.4.jar=release/modules/ext/api-common-2.1.4.jar +file.reference.ant-1.10.15.jar=release/modules/ext/ant-1.10.15.jar +file.reference.ant-launcher-1.10.15.jar=release/modules/ext/ant-launcher-1.10.15.jar +file.reference.api-common-2.41.0.jar=release/modules/ext/api-common-2.41.0.jar file.reference.AppleJavaExtensions-1.4.jar=release/modules/ext/AppleJavaExtensions-1.4.jar -file.reference.auto-value-annotations-1.9.jar=release/modules/ext/auto-value-annotations-1.9.jar -file.reference.bcpkix-jdk15on-1.70.jar=release/modules/ext/bcpkix-jdk15on-1.70.jar -file.reference.bcprov-jdk15on-1.70.jar=release/modules/ext/bcprov-jdk15on-1.70.jar -file.reference.bcutil-jdk15on-1.70.jar=release/modules/ext/bcutil-jdk15on-1.70.jar -file.reference.checker-qual-3.21.3.jar=release/modules/ext/checker-qual-3.21.3.jar -file.reference.common-image-3.8.2.jar=release/modules/ext/common-image-3.8.2.jar -file.reference.common-io-3.8.2.jar=release/modules/ext/common-io-3.8.2.jar -file.reference.common-lang-3.8.2.jar=release/modules/ext/common-lang-3.8.2.jar +file.reference.auto-value-annotations-1.11.0.jar=release/modules/ext/auto-value-annotations-1.11.0.jar +file.reference.checker-qual-3.47.0.jar=release/modules/ext/checker-qual-3.47.0.jar +file.reference.common-image-3.12.0.jar=release/modules/ext/common-image-3.12.0.jar +file.reference.common-io-3.12.0.jar=release/modules/ext/common-io-3.12.0.jar +file.reference.common-lang-3.12.0.jar=release/modules/ext/common-lang-3.12.0.jar file.reference.commons-beanutils-1.9.4.jar=release/modules/ext/commons-beanutils-1.9.4.jar -file.reference.commons-codec-1.15.jar=release/modules/ext/commons-codec-1.15.jar +file.reference.commons-codec-1.17.1.jar=release/modules/ext/commons-codec-1.17.1.jar file.reference.commons-collections-3.2.2.jar=release/modules/ext/commons-collections-3.2.2.jar -file.reference.commons-collections4-4.4.jar=release/modules/ext/commons-collections4-4.4.jar -file.reference.commons-csv-1.9.0.jar=release/modules/ext/commons-csv-1.9.0.jar +file.reference.commons-collections4-4.5.0-M2.jar=release/modules/ext/commons-collections4-4.5.0-M2.jar +file.reference.commons-csv-1.12.0.jar=release/modules/ext/commons-csv-1.12.0.jar file.reference.commons-digester-2.1.jar=release/modules/ext/commons-digester-2.1.jar -file.reference.commons-io-2.11.0.jar=release/modules/ext/commons-io-2.11.0.jar +file.reference.commons-io-2.18.0.jar=release/modules/ext/commons-io-2.18.0.jar file.reference.commons-lang-2.6.jar=release/modules/ext/commons-lang-2.6.jar -file.reference.commons-lang3-3.12.0.jar=release/modules/ext/commons-lang3-3.12.0.jar -file.reference.commons-logging-1.2.jar=release/modules/ext/commons-logging-1.2.jar -file.reference.commons-text-1.10.0.jar=release/modules/ext/commons-text-1.10.0.jar -file.reference.commons-validator-1.7.jar=release/modules/ext/commons-validator-1.7.jar -file.reference.compiler-0.9.10.jar=release/modules/ext/compiler-0.9.10.jar -file.reference.conscrypt-openjdk-uber-2.5.1.jar=release/modules/ext/conscrypt-openjdk-uber-2.5.1.jar -file.reference.controlsfx-11.1.2-sources.jar=release/modules/ext/controlsfx-11.1.2-sources.jar -file.reference.controlsfx-11.1.2.jar=release/modules/ext/controlsfx-11.1.2.jar -file.reference.dd-plist-1.23.jar=release/modules/ext/dd-plist-1.23.jar -file.reference.error_prone_annotations-2.11.0.jar=release/modules/ext/error_prone_annotations-2.11.0.jar -file.reference.failureaccess-1.0.1.jar=release/modules/ext/failureaccess-1.0.1.jar -file.reference.gax-2.12.2.jar=release/modules/ext/gax-2.12.2.jar -file.reference.gax-grpc-2.12.2.jar=release/modules/ext/gax-grpc-2.12.2.jar -file.reference.gax-httpjson-0.97.2.jar=release/modules/ext/gax-httpjson-0.97.2.jar -file.reference.google-api-client-1.33.2.jar=release/modules/ext/google-api-client-1.33.2.jar -file.reference.google-api-services-translate-v2-rev20170525-1.32.1.jar=release/modules/ext/google-api-services-translate-v2-rev20170525-1.32.1.jar -file.reference.google-auth-library-credentials-1.5.3.jar=release/modules/ext/google-auth-library-credentials-1.5.3.jar -file.reference.google-auth-library-oauth2-http-1.5.3.jar=release/modules/ext/google-auth-library-oauth2-http-1.5.3.jar -file.reference.google-cloud-core-2.5.6.jar=release/modules/ext/google-cloud-core-2.5.6.jar -file.reference.google-cloud-core-http-2.5.6.jar=release/modules/ext/google-cloud-core-http-2.5.6.jar -file.reference.google-cloud-translate-2.1.11.jar=release/modules/ext/google-cloud-translate-2.1.11.jar -file.reference.google-http-client-1.41.4.jar=release/modules/ext/google-http-client-1.41.4.jar -file.reference.google-http-client-apache-v2-1.41.4.jar=release/modules/ext/google-http-client-apache-v2-1.41.4.jar -file.reference.google-http-client-appengine-1.41.4.jar=release/modules/ext/google-http-client-appengine-1.41.4.jar -file.reference.google-http-client-gson-1.41.4.jar=release/modules/ext/google-http-client-gson-1.41.4.jar -file.reference.google-http-client-jackson2-1.41.4.jar=release/modules/ext/google-http-client-jackson2-1.41.4.jar -file.reference.google-oauth-client-1.33.1.jar=release/modules/ext/google-oauth-client-1.33.1.jar -file.reference.grpc-alts-1.44.1.jar=release/modules/ext/grpc-alts-1.44.1.jar -file.reference.grpc-api-1.44.1.jar=release/modules/ext/grpc-api-1.44.1.jar -file.reference.grpc-auth-1.44.1.jar=release/modules/ext/grpc-auth-1.44.1.jar -file.reference.grpc-context-1.44.1.jar=release/modules/ext/grpc-context-1.44.1.jar -file.reference.grpc-core-1.44.1.jar=release/modules/ext/grpc-core-1.44.1.jar -file.reference.grpc-grpclb-1.44.1.jar=release/modules/ext/grpc-grpclb-1.44.1.jar -file.reference.grpc-netty-shaded-1.44.1.jar=release/modules/ext/grpc-netty-shaded-1.44.1.jar -file.reference.grpc-protobuf-1.44.1.jar=release/modules/ext/grpc-protobuf-1.44.1.jar -file.reference.grpc-protobuf-lite-1.44.1.jar=release/modules/ext/grpc-protobuf-lite-1.44.1.jar -file.reference.grpc-services-1.44.1.jar=release/modules/ext/grpc-services-1.44.1.jar -file.reference.grpc-stub-1.44.1.jar=release/modules/ext/grpc-stub-1.44.1.jar -file.reference.grpc-xds-1.44.1.jar=release/modules/ext/grpc-xds-1.44.1.jar -file.reference.gson-2.9.0.jar=release/modules/ext/gson-2.9.0.jar +file.reference.commons-lang3-3.17.0.jar=release/modules/ext/commons-lang3-3.17.0.jar +file.reference.commons-logging-1.3.4.jar=release/modules/ext/commons-logging-1.3.4.jar +file.reference.commons-text-1.13.0.jar=release/modules/ext/commons-text-1.13.0.jar +file.reference.commons-validator-1.9.0.jar=release/modules/ext/commons-validator-1.9.0.jar +file.reference.compiler-0.9.14.jar=release/modules/ext/compiler-0.9.14.jar +file.reference.conscrypt-openjdk-uber-2.5.2.jar=release/modules/ext/conscrypt-openjdk-uber-2.5.2.jar +file.reference.controlsfx-11.2.1-sources.jar=release/modules/ext/controlsfx-11.2.1-sources.jar +file.reference.controlsfx-11.2.1.jar=release/modules/ext/controlsfx-11.2.1.jar +file.reference.dd-plist-1.28.jar=release/modules/ext/dd-plist-1.28.jar +file.reference.error_prone_annotations-2.35.1.jar=release/modules/ext/error_prone_annotations-2.35.1.jar +file.reference.failureaccess-1.0.2.jar=release/modules/ext/failureaccess-1.0.2.jar +file.reference.gax-2.58.0.jar=release/modules/ext/gax-2.58.0.jar +file.reference.gax-grpc-2.58.0.jar=release/modules/ext/gax-grpc-2.58.0.jar +file.reference.gax-httpjson-2.58.0.jar=release/modules/ext/gax-httpjson-2.58.0.jar +file.reference.google-api-client-2.7.0.jar=release/modules/ext/google-api-client-2.7.0.jar +file.reference.google-api-services-translate-v2-rev20170525-2.0.0.jar=release/modules/ext/google-api-services-translate-v2-rev20170525-2.0.0.jar +file.reference.google-auth-library-credentials-1.30.0.jar=release/modules/ext/google-auth-library-credentials-1.30.0.jar +file.reference.google-auth-library-oauth2-http-1.30.0.jar=release/modules/ext/google-auth-library-oauth2-http-1.30.0.jar +file.reference.google-cloud-core-2.48.0.jar=release/modules/ext/google-cloud-core-2.48.0.jar +file.reference.google-cloud-core-http-2.48.0.jar=release/modules/ext/google-cloud-core-http-2.48.0.jar +file.reference.google-cloud-translate-2.54.0.jar=release/modules/ext/google-cloud-translate-2.54.0.jar +file.reference.google-http-client-1.45.0.jar=release/modules/ext/google-http-client-1.45.0.jar +file.reference.google-http-client-apache-v2-1.45.0.jar=release/modules/ext/google-http-client-apache-v2-1.45.0.jar +file.reference.google-http-client-appengine-1.45.0.jar=release/modules/ext/google-http-client-appengine-1.45.0.jar +file.reference.google-http-client-gson-1.45.0.jar=release/modules/ext/google-http-client-gson-1.45.0.jar +file.reference.google-http-client-jackson2-1.45.0.jar=release/modules/ext/google-http-client-jackson2-1.45.0.jar +file.reference.google-oauth-client-1.36.0.jar=release/modules/ext/google-oauth-client-1.36.0.jar +file.reference.grpc-alts-1.68.1.jar=release/modules/ext/grpc-alts-1.68.1.jar +file.reference.grpc-api-1.68.1.jar=release/modules/ext/grpc-api-1.68.1.jar +file.reference.grpc-auth-1.68.1.jar=release/modules/ext/grpc-auth-1.68.1.jar +file.reference.grpc-context-1.68.1.jar=release/modules/ext/grpc-context-1.68.1.jar +file.reference.grpc-core-1.68.1.jar=release/modules/ext/grpc-core-1.68.1.jar +file.reference.grpc-googleapis-1.68.1.jar=release/modules/ext/grpc-googleapis-1.68.1.jar +file.reference.grpc-grpclb-1.68.1.jar=release/modules/ext/grpc-grpclb-1.68.1.jar +file.reference.grpc-inprocess-1.68.1.jar=release/modules/ext/grpc-inprocess-1.68.1.jar +file.reference.grpc-netty-shaded-1.68.1.jar=release/modules/ext/grpc-netty-shaded-1.68.1.jar +file.reference.grpc-protobuf-1.68.1.jar=release/modules/ext/grpc-protobuf-1.68.1.jar +file.reference.grpc-protobuf-lite-1.68.1.jar=release/modules/ext/grpc-protobuf-lite-1.68.1.jar +file.reference.grpc-s2a-1.68.1.jar=release/modules/ext/grpc-s2a-1.68.1.jar +file.reference.grpc-services-1.68.1.jar=release/modules/ext/grpc-services-1.68.1.jar +file.reference.grpc-stub-1.68.1.jar=release/modules/ext/grpc-stub-1.68.1.jar +file.reference.grpc-util-1.68.1.jar=release/modules/ext/grpc-util-1.68.1.jar +file.reference.grpc-xds-1.68.1.jar=release/modules/ext/grpc-xds-1.68.1.jar +file.reference.gson-2.11.0.jar=release/modules/ext/gson-2.11.0.jar file.reference.gst1-java-core-1.4.0.jar=release/modules/ext/gst1-java-core-1.4.0.jar -file.reference.guava-32.0.1-jre.jar=release/modules/ext/guava-32.0.1-jre.jar -file.reference.httpclient-4.5.13.jar=release/modules/ext/httpclient-4.5.13.jar -file.reference.httpcore-4.4.15.jar=release/modules/ext/httpcore-4.4.15.jar -file.reference.imageio-bmp-3.8.2.jar=release/modules/ext/imageio-bmp-3.8.2.jar -file.reference.imageio-core-3.8.2.jar=release/modules/ext/imageio-core-3.8.2.jar -file.reference.imageio-icns-3.8.2.jar=release/modules/ext/imageio-icns-3.8.2.jar -file.reference.imageio-iff-3.8.2.jar=release/modules/ext/imageio-iff-3.8.2.jar -file.reference.imageio-jpeg-3.8.2.jar=release/modules/ext/imageio-jpeg-3.8.2.jar -file.reference.imageio-metadata-3.8.2.jar=release/modules/ext/imageio-metadata-3.8.2.jar -file.reference.imageio-pcx-3.8.2.jar=release/modules/ext/imageio-pcx-3.8.2.jar -file.reference.imageio-pict-3.8.2.jar=release/modules/ext/imageio-pict-3.8.2.jar -file.reference.imageio-pnm-3.8.2.jar=release/modules/ext/imageio-pnm-3.8.2.jar -file.reference.imageio-psd-3.8.2.jar=release/modules/ext/imageio-psd-3.8.2.jar -file.reference.imageio-sgi-3.8.2.jar=release/modules/ext/imageio-sgi-3.8.2.jar -file.reference.imageio-tga-3.8.2.jar=release/modules/ext/imageio-tga-3.8.2.jar -file.reference.imageio-thumbsdb-3.8.2.jar=release/modules/ext/imageio-thumbsdb-3.8.2.jar -file.reference.imageio-tiff-3.8.2.jar=release/modules/ext/imageio-tiff-3.8.2.jar +file.reference.guava-33.3.1-jre.jar=release/modules/ext/guava-33.3.1-jre.jar +file.reference.httpclient-4.5.14.jar=release/modules/ext/httpclient-4.5.14.jar +file.reference.httpcore-4.4.16.jar=release/modules/ext/httpcore-4.4.16.jar +file.reference.imageio-bmp-3.12.0.jar=release/modules/ext/imageio-bmp-3.12.0.jar +file.reference.imageio-core-3.12.0.jar=release/modules/ext/imageio-core-3.12.0.jar +file.reference.imageio-icns-3.12.0.jar=release/modules/ext/imageio-icns-3.12.0.jar +file.reference.imageio-iff-3.12.0.jar=release/modules/ext/imageio-iff-3.12.0.jar +file.reference.imageio-jpeg-3.12.0.jar=release/modules/ext/imageio-jpeg-3.12.0.jar +file.reference.imageio-metadata-3.12.0.jar=release/modules/ext/imageio-metadata-3.12.0.jar +file.reference.imageio-pcx-3.12.0.jar=release/modules/ext/imageio-pcx-3.12.0.jar +file.reference.imageio-pict-3.12.0.jar=release/modules/ext/imageio-pict-3.12.0.jar +file.reference.imageio-pnm-3.12.0.jar=release/modules/ext/imageio-pnm-3.12.0.jar +file.reference.imageio-psd-3.12.0.jar=release/modules/ext/imageio-psd-3.12.0.jar +file.reference.imageio-sgi-3.12.0.jar=release/modules/ext/imageio-sgi-3.12.0.jar +file.reference.imageio-tga-3.12.0.jar=release/modules/ext/imageio-tga-3.12.0.jar +file.reference.imageio-thumbsdb-3.12.0.jar=release/modules/ext/imageio-thumbsdb-3.12.0.jar +file.reference.imageio-tiff-3.12.0.jar=release/modules/ext/imageio-tiff-3.12.0.jar file.reference.imgscalr-lib-4.2.jar=release/modules/ext/imgscalr-lib-4.2.jar -file.reference.j2objc-annotations-1.3.jar=release/modules/ext/j2objc-annotations-1.3.jar -file.reference.jackson-annotations-2.15.2.jar=release/modules/ext/jackson-annotations-2.15.2.jar -file.reference.jackson-core-2.15.2.jar=release/modules/ext/jackson-core-2.15.2.jar -file.reference.jackson-databind-2.15.2.jar=release/modules/ext/jackson-databind-2.15.2.jar -file.reference.jackson-dataformat-csv-2.15.2.jar=release/modules/ext/jackson-dataformat-csv-2.15.2.jar -file.reference.jackson-datatype-jsr310-2.15.2.jar=release/modules/ext/jackson-datatype-jsr310-2.15.2.jar -file.reference.javafx-base-17.0.7-linux.jar=release/modules/ext/javafx-base-17.0.7-linux.jar -file.reference.javafx-base-17.0.7-mac.jar=release/modules/ext/javafx-base-17.0.7-mac.jar -file.reference.javafx-base-17.0.7-win.jar=release/modules/ext/javafx-base-17.0.7-win.jar -file.reference.javafx-base-17.0.7.jar=release/modules/ext/javafx-base-17.0.7.jar -file.reference.javafx-controls-17.0.7-linux.jar=release/modules/ext/javafx-controls-17.0.7-linux.jar -file.reference.javafx-controls-17.0.7-mac.jar=release/modules/ext/javafx-controls-17.0.7-mac.jar -file.reference.javafx-controls-17.0.7-win.jar=release/modules/ext/javafx-controls-17.0.7-win.jar -file.reference.javafx-controls-17.0.7.jar=release/modules/ext/javafx-controls-17.0.7.jar -file.reference.javafx-fxml-17.0.7-linux.jar=release/modules/ext/javafx-fxml-17.0.7-linux.jar -file.reference.javafx-fxml-17.0.7-mac.jar=release/modules/ext/javafx-fxml-17.0.7-mac.jar -file.reference.javafx-fxml-17.0.7-win.jar=release/modules/ext/javafx-fxml-17.0.7-win.jar -file.reference.javafx-fxml-17.0.7.jar=release/modules/ext/javafx-fxml-17.0.7.jar -file.reference.javafx-graphics-17.0.7-linux.jar=release/modules/ext/javafx-graphics-17.0.7-linux.jar -file.reference.javafx-graphics-17.0.7-mac.jar=release/modules/ext/javafx-graphics-17.0.7-mac.jar -file.reference.javafx-graphics-17.0.7-win.jar=release/modules/ext/javafx-graphics-17.0.7-win.jar -file.reference.javafx-graphics-17.0.7.jar=release/modules/ext/javafx-graphics-17.0.7.jar -file.reference.javafx-media-17.0.7-linux.jar=release/modules/ext/javafx-media-17.0.7-linux.jar -file.reference.javafx-media-17.0.7-mac.jar=release/modules/ext/javafx-media-17.0.7-mac.jar -file.reference.javafx-media-17.0.7-win.jar=release/modules/ext/javafx-media-17.0.7-win.jar -file.reference.javafx-media-17.0.7.jar=release/modules/ext/javafx-media-17.0.7.jar -file.reference.javafx-swing-17.0.7-linux.jar=release/modules/ext/javafx-swing-17.0.7-linux.jar -file.reference.javafx-swing-17.0.7-mac.jar=release/modules/ext/javafx-swing-17.0.7-mac.jar -file.reference.javafx-swing-17.0.7-win.jar=release/modules/ext/javafx-swing-17.0.7-win.jar -file.reference.javafx-swing-17.0.7.jar=release/modules/ext/javafx-swing-17.0.7.jar -file.reference.javafx-web-17.0.7-linux.jar=release/modules/ext/javafx-web-17.0.7-linux.jar -file.reference.javafx-web-17.0.7-mac.jar=release/modules/ext/javafx-web-17.0.7-mac.jar -file.reference.javafx-web-17.0.7-win.jar=release/modules/ext/javafx-web-17.0.7-win.jar -file.reference.javafx-web-17.0.7.jar=release/modules/ext/javafx-web-17.0.7.jar +file.reference.j2objc-annotations-3.0.0.jar=release/modules/ext/j2objc-annotations-3.0.0.jar +file.reference.jackson-annotations-2.18.2.jar=release/modules/ext/jackson-annotations-2.18.2.jar +file.reference.jackson-core-2.18.2.jar=release/modules/ext/jackson-core-2.18.2.jar +file.reference.jackson-databind-2.18.2.jar=release/modules/ext/jackson-databind-2.18.2.jar +file.reference.jackson-dataformat-csv-2.18.2.jar=release/modules/ext/jackson-dataformat-csv-2.18.2.jar +file.reference.jackson-datatype-jsr310-2.18.2.jar=release/modules/ext/jackson-datatype-jsr310-2.18.2.jar +file.reference.javafx-base-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-base-17.0.14-ea+2-linux.jar +file.reference.javafx-base-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-base-17.0.14-ea+2-mac.jar +file.reference.javafx-base-17.0.14-ea+2-win.jar=release/modules/ext/javafx-base-17.0.14-ea+2-win.jar +file.reference.javafx-base-17.0.14-ea+2.jar=release/modules/ext/javafx-base-17.0.14-ea+2.jar +file.reference.javafx-controls-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-controls-17.0.14-ea+2-linux.jar +file.reference.javafx-controls-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-controls-17.0.14-ea+2-mac.jar +file.reference.javafx-controls-17.0.14-ea+2-win.jar=release/modules/ext/javafx-controls-17.0.14-ea+2-win.jar +file.reference.javafx-controls-17.0.14-ea+2.jar=release/modules/ext/javafx-controls-17.0.14-ea+2.jar +file.reference.javafx-fxml-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-fxml-17.0.14-ea+2-linux.jar +file.reference.javafx-fxml-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-fxml-17.0.14-ea+2-mac.jar +file.reference.javafx-fxml-17.0.14-ea+2-win.jar=release/modules/ext/javafx-fxml-17.0.14-ea+2-win.jar +file.reference.javafx-fxml-17.0.14-ea+2.jar=release/modules/ext/javafx-fxml-17.0.14-ea+2.jar +file.reference.javafx-graphics-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-graphics-17.0.14-ea+2-linux.jar +file.reference.javafx-graphics-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-graphics-17.0.14-ea+2-mac.jar +file.reference.javafx-graphics-17.0.14-ea+2-win.jar=release/modules/ext/javafx-graphics-17.0.14-ea+2-win.jar +file.reference.javafx-graphics-17.0.14-ea+2.jar=release/modules/ext/javafx-graphics-17.0.14-ea+2.jar +file.reference.javafx-media-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-media-17.0.14-ea+2-linux.jar +file.reference.javafx-media-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-media-17.0.14-ea+2-mac.jar +file.reference.javafx-media-17.0.14-ea+2-win.jar=release/modules/ext/javafx-media-17.0.14-ea+2-win.jar +file.reference.javafx-media-17.0.14-ea+2.jar=release/modules/ext/javafx-media-17.0.14-ea+2.jar +file.reference.javafx-swing-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-swing-17.0.14-ea+2-linux.jar +file.reference.javafx-swing-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-swing-17.0.14-ea+2-mac.jar +file.reference.javafx-swing-17.0.14-ea+2-win.jar=release/modules/ext/javafx-swing-17.0.14-ea+2-win.jar +file.reference.javafx-swing-17.0.14-ea+2.jar=release/modules/ext/javafx-swing-17.0.14-ea+2.jar +file.reference.javafx-web-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-web-17.0.14-ea+2-linux.jar +file.reference.javafx-web-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-web-17.0.14-ea+2-mac.jar +file.reference.javafx-web-17.0.14-ea+2-win.jar=release/modules/ext/javafx-web-17.0.14-ea+2-win.jar +file.reference.javafx-web-17.0.14-ea+2.jar=release/modules/ext/javafx-web-17.0.14-ea+2.jar file.reference.javax.annotation-api-1.3.2.jar=release/modules/ext/javax.annotation-api-1.3.2.jar file.reference.jericho-html-3.4.jar=release/modules/ext/jericho-html-3.4.jar file.reference.jfxtras-common-17-r1.jar=release/modules/ext/jfxtras-common-17-r1.jar @@ -120,28 +121,27 @@ file.reference.jfxtras-controls-17-r1.jar=release/modules/ext/jfxtras-controls-1 file.reference.jfxtras-fxml-17-r1.jar=release/modules/ext/jfxtras-fxml-17-r1.jar file.reference.jna-5.15.0.jar=release/modules/ext/jna-5.15.0.jar file.reference.jna-platform-5.15.0.jar=release/modules/ext/jna-platform-5.15.0.jar -file.reference.joda-time-2.10.14.jar=release/modules/ext/joda-time-2.10.14.jar +file.reference.joda-time-2.13.0.jar=release/modules/ext/joda-time-2.13.0.jar file.reference.jsr305-3.0.2.jar=release/modules/ext/jsr305-3.0.2.jar file.reference.LGoodDatePicker-11.2.1.jar=release/modules/ext/LGoodDatePicker-11.2.1.jar file.reference.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar=release/modules/ext/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar -file.reference.log4j-api-2.17.2.jar=release/modules/ext/log4j-api-2.17.2.jar -file.reference.log4j-core-2.17.2.jar=release/modules/ext/log4j-core-2.17.2.jar -file.reference.opencensus-api-0.31.0.jar=release/modules/ext/opencensus-api-0.31.0.jar -file.reference.opencensus-contrib-http-util-0.31.0.jar=release/modules/ext/opencensus-contrib-http-util-0.31.0.jar -file.reference.opencensus-proto-0.2.0.jar=release/modules/ext/opencensus-proto-0.2.0.jar +file.reference.log4j-api-2.24.3.jar=release/modules/ext/log4j-api-2.24.3.jar +file.reference.log4j-core-2.24.3.jar=release/modules/ext/log4j-core-2.24.3.jar +file.reference.opencensus-api-0.31.1.jar=release/modules/ext/opencensus-api-0.31.1.jar +file.reference.opencensus-contrib-http-util-0.31.1.jar=release/modules/ext/opencensus-contrib-http-util-0.31.1.jar file.reference.opencv-2413.jar=release/modules/ext/opencv-2413.jar -file.reference.perfmark-api-0.23.0.jar=release/modules/ext/perfmark-api-0.23.0.jar -file.reference.proto-google-cloud-translate-v3-2.1.11.jar=release/modules/ext/proto-google-cloud-translate-v3-2.1.11.jar -file.reference.proto-google-cloud-translate-v3beta1-0.83.11.jar=release/modules/ext/proto-google-cloud-translate-v3beta1-0.83.11.jar -file.reference.proto-google-common-protos-2.7.4.jar=release/modules/ext/proto-google-common-protos-2.7.4.jar -file.reference.proto-google-iam-v1-1.2.6.jar=release/modules/ext/proto-google-iam-v1-1.2.6.jar -file.reference.protobuf-java-3.19.4.jar=release/modules/ext/protobuf-java-3.19.4.jar -file.reference.protobuf-java-util-3.19.4.jar=release/modules/ext/protobuf-java-util-3.19.4.jar -file.reference.re2j-1.5.jar=release/modules/ext/re2j-1.5.jar -file.reference.reload4j-1.2.19.jar=release/modules/ext/reload4j-1.2.19.jar -file.reference.slf4j-api-1.7.36.jar=release/modules/ext/slf4j-api-1.7.36.jar -file.reference.slf4j-reload4j-1.7.36.jar=release/modules/ext/slf4j-reload4j-1.7.36.jar -file.reference.threetenbp-1.5.2.jar=release/modules/ext/threetenbp-1.5.2.jar +file.reference.perfmark-api-0.27.0.jar=release/modules/ext/perfmark-api-0.27.0.jar +file.reference.proto-google-cloud-translate-v3-2.54.0.jar=release/modules/ext/proto-google-cloud-translate-v3-2.54.0.jar +file.reference.proto-google-cloud-translate-v3beta1-0.136.0.jar=release/modules/ext/proto-google-cloud-translate-v3beta1-0.136.0.jar +file.reference.proto-google-common-protos-2.49.0.jar=release/modules/ext/proto-google-common-protos-2.49.0.jar +file.reference.proto-google-iam-v1-1.44.0.jar=release/modules/ext/proto-google-iam-v1-1.44.0.jar +file.reference.protobuf-java-3.25.5.jar=release/modules/ext/protobuf-java-3.25.5.jar +file.reference.protobuf-java-util-3.25.5.jar=release/modules/ext/protobuf-java-util-3.25.5.jar +file.reference.re2j-1.7.jar=release/modules/ext/re2j-1.7.jar +file.reference.reload4j-1.2.22.jar=release/modules/ext/reload4j-1.2.22.jar +file.reference.slf4j-api-2.0.16.jar=release/modules/ext/slf4j-api-2.0.16.jar +file.reference.slf4j-reload4j-2.0.16.jar=release/modules/ext/slf4j-reload4j-2.0.16.jar +file.reference.threetenbp-1.7.0.jar=release/modules/ext/threetenbp-1.7.0.jar file.reference.webp-imageio-sejda-0.1.0.jar=release/modules/ext/webp-imageio-sejda-0.1.0.jar javac.source=17 javac.compilerargs=-Xlint -Xlint:-serial diff --git a/CoreLibs/nbproject/project.xml b/CoreLibs/nbproject/project.xml index ba5941acfb..74cd8450cc 100644 --- a/CoreLibs/nbproject/project.xml +++ b/CoreLibs/nbproject/project.xml @@ -561,464 +561,468 @@ org.slf4j.spi - ext/animal-sniffer-annotations-1.21.jar - release/modules/ext/animal-sniffer-annotations-1.21.jar + ext/animal-sniffer-annotations-1.24.jar + release/modules/ext/animal-sniffer-annotations-1.24.jar ext/annotations-4.1.1.4.jar release/modules/ext/annotations-4.1.1.4.jar - ext/ant-1.10.12.jar - release/modules/ext/ant-1.10.12.jar + ext/ant-1.10.15.jar + release/modules/ext/ant-1.10.15.jar - ext/ant-launcher-1.10.12.jar - release/modules/ext/ant-launcher-1.10.12.jar + ext/ant-launcher-1.10.15.jar + release/modules/ext/ant-launcher-1.10.15.jar - ext/api-common-2.1.4.jar - release/modules/ext/api-common-2.1.4.jar + ext/api-common-2.41.0.jar + release/modules/ext/api-common-2.41.0.jar ext/AppleJavaExtensions-1.4.jar release/modules/ext/AppleJavaExtensions-1.4.jar - ext/auto-value-annotations-1.9.jar - release/modules/ext/auto-value-annotations-1.9.jar + ext/auto-value-annotations-1.11.0.jar + release/modules/ext/auto-value-annotations-1.11.0.jar - ext/bcpkix-jdk15on-1.70.jar - release/modules/ext/bcpkix-jdk15on-1.70.jar + ext/checker-qual-3.47.0.jar + release/modules/ext/checker-qual-3.47.0.jar - ext/bcprov-jdk15on-1.70.jar - release/modules/ext/bcprov-jdk15on-1.70.jar + ext/common-image-3.12.0.jar + release/modules/ext/common-image-3.12.0.jar - ext/bcutil-jdk15on-1.70.jar - release/modules/ext/bcutil-jdk15on-1.70.jar + ext/common-io-3.12.0.jar + release/modules/ext/common-io-3.12.0.jar - ext/checker-qual-3.21.3.jar - release/modules/ext/checker-qual-3.21.3.jar - - - ext/common-image-3.8.2.jar - release/modules/ext/common-image-3.8.2.jar - - - ext/common-io-3.8.2.jar - release/modules/ext/common-io-3.8.2.jar - - - ext/common-lang-3.8.2.jar - release/modules/ext/common-lang-3.8.2.jar + ext/common-lang-3.12.0.jar + release/modules/ext/common-lang-3.12.0.jar ext/commons-beanutils-1.9.4.jar release/modules/ext/commons-beanutils-1.9.4.jar - ext/commons-codec-1.15.jar - release/modules/ext/commons-codec-1.15.jar + ext/commons-codec-1.17.1.jar + release/modules/ext/commons-codec-1.17.1.jar ext/commons-collections-3.2.2.jar release/modules/ext/commons-collections-3.2.2.jar - ext/commons-collections4-4.4.jar - release/modules/ext/commons-collections4-4.4.jar + ext/commons-collections4-4.5.0-M2.jar + release/modules/ext/commons-collections4-4.5.0-M2.jar - ext/commons-csv-1.9.0.jar - release/modules/ext/commons-csv-1.9.0.jar + ext/commons-csv-1.12.0.jar + release/modules/ext/commons-csv-1.12.0.jar ext/commons-digester-2.1.jar release/modules/ext/commons-digester-2.1.jar - ext/commons-io-2.11.0.jar - release/modules/ext/commons-io-2.11.0.jar + ext/commons-io-2.18.0.jar + release/modules/ext/commons-io-2.18.0.jar ext/commons-lang-2.6.jar release/modules/ext/commons-lang-2.6.jar - ext/commons-lang3-3.12.0.jar - release/modules/ext/commons-lang3-3.12.0.jar + ext/commons-lang3-3.17.0.jar + release/modules/ext/commons-lang3-3.17.0.jar - ext/commons-logging-1.2.jar - release/modules/ext/commons-logging-1.2.jar + ext/commons-logging-1.3.4.jar + release/modules/ext/commons-logging-1.3.4.jar - ext/commons-text-1.10.0.jar - release/modules/ext/commons-text-1.10.0.jar + ext/commons-text-1.13.0.jar + release/modules/ext/commons-text-1.13.0.jar - ext/commons-validator-1.7.jar - release/modules/ext/commons-validator-1.7.jar + ext/commons-validator-1.9.0.jar + release/modules/ext/commons-validator-1.9.0.jar - ext/compiler-0.9.10.jar - release/modules/ext/compiler-0.9.10.jar + ext/compiler-0.9.14.jar + release/modules/ext/compiler-0.9.14.jar - ext/conscrypt-openjdk-uber-2.5.1.jar - release/modules/ext/conscrypt-openjdk-uber-2.5.1.jar + ext/conscrypt-openjdk-uber-2.5.2.jar + release/modules/ext/conscrypt-openjdk-uber-2.5.2.jar - ext/controlsfx-11.1.2-sources.jar - release/modules/ext/controlsfx-11.1.2-sources.jar + ext/controlsfx-11.2.1-sources.jar + release/modules/ext/controlsfx-11.2.1-sources.jar - ext/controlsfx-11.1.2.jar - release/modules/ext/controlsfx-11.1.2.jar + ext/controlsfx-11.2.1.jar + release/modules/ext/controlsfx-11.2.1.jar - ext/dd-plist-1.23.jar - release/modules/ext/dd-plist-1.23.jar + ext/dd-plist-1.28.jar + release/modules/ext/dd-plist-1.28.jar - ext/error_prone_annotations-2.11.0.jar - release/modules/ext/error_prone_annotations-2.11.0.jar + ext/error_prone_annotations-2.35.1.jar + release/modules/ext/error_prone_annotations-2.35.1.jar - ext/failureaccess-1.0.1.jar - release/modules/ext/failureaccess-1.0.1.jar + ext/failureaccess-1.0.2.jar + release/modules/ext/failureaccess-1.0.2.jar - ext/gax-2.12.2.jar - release/modules/ext/gax-2.12.2.jar + ext/gax-2.58.0.jar + release/modules/ext/gax-2.58.0.jar - ext/gax-grpc-2.12.2.jar - release/modules/ext/gax-grpc-2.12.2.jar + ext/gax-grpc-2.58.0.jar + release/modules/ext/gax-grpc-2.58.0.jar - ext/gax-httpjson-0.97.2.jar - release/modules/ext/gax-httpjson-0.97.2.jar + ext/gax-httpjson-2.58.0.jar + release/modules/ext/gax-httpjson-2.58.0.jar - ext/google-api-client-1.33.2.jar - release/modules/ext/google-api-client-1.33.2.jar + ext/google-api-client-2.7.0.jar + release/modules/ext/google-api-client-2.7.0.jar - ext/google-api-services-translate-v2-rev20170525-1.32.1.jar - release/modules/ext/google-api-services-translate-v2-rev20170525-1.32.1.jar + ext/google-api-services-translate-v2-rev20170525-2.0.0.jar + release/modules/ext/google-api-services-translate-v2-rev20170525-2.0.0.jar - ext/google-auth-library-credentials-1.5.3.jar - release/modules/ext/google-auth-library-credentials-1.5.3.jar + ext/google-auth-library-credentials-1.30.0.jar + release/modules/ext/google-auth-library-credentials-1.30.0.jar - ext/google-auth-library-oauth2-http-1.5.3.jar - release/modules/ext/google-auth-library-oauth2-http-1.5.3.jar + ext/google-auth-library-oauth2-http-1.30.0.jar + release/modules/ext/google-auth-library-oauth2-http-1.30.0.jar - ext/google-cloud-core-2.5.6.jar - release/modules/ext/google-cloud-core-2.5.6.jar + ext/google-cloud-core-2.48.0.jar + release/modules/ext/google-cloud-core-2.48.0.jar - ext/google-cloud-core-http-2.5.6.jar - release/modules/ext/google-cloud-core-http-2.5.6.jar + ext/google-cloud-core-http-2.48.0.jar + release/modules/ext/google-cloud-core-http-2.48.0.jar - ext/google-cloud-translate-2.1.11.jar - release/modules/ext/google-cloud-translate-2.1.11.jar + ext/google-cloud-translate-2.54.0.jar + release/modules/ext/google-cloud-translate-2.54.0.jar - ext/google-http-client-1.41.4.jar - release/modules/ext/google-http-client-1.41.4.jar + ext/google-http-client-1.45.0.jar + release/modules/ext/google-http-client-1.45.0.jar - ext/google-http-client-apache-v2-1.41.4.jar - release/modules/ext/google-http-client-apache-v2-1.41.4.jar + ext/google-http-client-apache-v2-1.45.0.jar + release/modules/ext/google-http-client-apache-v2-1.45.0.jar - ext/google-http-client-appengine-1.41.4.jar - release/modules/ext/google-http-client-appengine-1.41.4.jar + ext/google-http-client-appengine-1.45.0.jar + release/modules/ext/google-http-client-appengine-1.45.0.jar - ext/google-http-client-gson-1.41.4.jar - release/modules/ext/google-http-client-gson-1.41.4.jar + ext/google-http-client-gson-1.45.0.jar + release/modules/ext/google-http-client-gson-1.45.0.jar - ext/google-http-client-jackson2-1.41.4.jar - release/modules/ext/google-http-client-jackson2-1.41.4.jar + ext/google-http-client-jackson2-1.45.0.jar + release/modules/ext/google-http-client-jackson2-1.45.0.jar - ext/google-oauth-client-1.33.1.jar - release/modules/ext/google-oauth-client-1.33.1.jar + ext/google-oauth-client-1.36.0.jar + release/modules/ext/google-oauth-client-1.36.0.jar - ext/grpc-alts-1.44.1.jar - release/modules/ext/grpc-alts-1.44.1.jar + ext/grpc-alts-1.68.1.jar + release/modules/ext/grpc-alts-1.68.1.jar - ext/grpc-api-1.44.1.jar - release/modules/ext/grpc-api-1.44.1.jar + ext/grpc-api-1.68.1.jar + release/modules/ext/grpc-api-1.68.1.jar - ext/grpc-auth-1.44.1.jar - release/modules/ext/grpc-auth-1.44.1.jar + ext/grpc-auth-1.68.1.jar + release/modules/ext/grpc-auth-1.68.1.jar - ext/grpc-context-1.44.1.jar - release/modules/ext/grpc-context-1.44.1.jar + ext/grpc-context-1.68.1.jar + release/modules/ext/grpc-context-1.68.1.jar - ext/grpc-core-1.44.1.jar - release/modules/ext/grpc-core-1.44.1.jar + ext/grpc-core-1.68.1.jar + release/modules/ext/grpc-core-1.68.1.jar - ext/grpc-grpclb-1.44.1.jar - release/modules/ext/grpc-grpclb-1.44.1.jar + ext/grpc-googleapis-1.68.1.jar + release/modules/ext/grpc-googleapis-1.68.1.jar - ext/grpc-netty-shaded-1.44.1.jar - release/modules/ext/grpc-netty-shaded-1.44.1.jar + ext/grpc-grpclb-1.68.1.jar + release/modules/ext/grpc-grpclb-1.68.1.jar - ext/grpc-protobuf-1.44.1.jar - release/modules/ext/grpc-protobuf-1.44.1.jar + ext/grpc-inprocess-1.68.1.jar + release/modules/ext/grpc-inprocess-1.68.1.jar - ext/grpc-protobuf-lite-1.44.1.jar - release/modules/ext/grpc-protobuf-lite-1.44.1.jar + ext/grpc-netty-shaded-1.68.1.jar + release/modules/ext/grpc-netty-shaded-1.68.1.jar - ext/grpc-services-1.44.1.jar - release/modules/ext/grpc-services-1.44.1.jar + ext/grpc-protobuf-1.68.1.jar + release/modules/ext/grpc-protobuf-1.68.1.jar - ext/grpc-stub-1.44.1.jar - release/modules/ext/grpc-stub-1.44.1.jar + ext/grpc-protobuf-lite-1.68.1.jar + release/modules/ext/grpc-protobuf-lite-1.68.1.jar - ext/grpc-xds-1.44.1.jar - release/modules/ext/grpc-xds-1.44.1.jar + ext/grpc-s2a-1.68.1.jar + release/modules/ext/grpc-s2a-1.68.1.jar - ext/gson-2.9.0.jar - release/modules/ext/gson-2.9.0.jar + ext/grpc-services-1.68.1.jar + release/modules/ext/grpc-services-1.68.1.jar + + + ext/grpc-stub-1.68.1.jar + release/modules/ext/grpc-stub-1.68.1.jar + + + ext/grpc-util-1.68.1.jar + release/modules/ext/grpc-util-1.68.1.jar + + + ext/grpc-xds-1.68.1.jar + release/modules/ext/grpc-xds-1.68.1.jar + + + ext/gson-2.11.0.jar + release/modules/ext/gson-2.11.0.jar ext/gst1-java-core-1.4.0.jar release/modules/ext/gst1-java-core-1.4.0.jar - ext/guava-32.0.1-jre.jar - release/modules/ext/guava-32.0.1-jre.jar + ext/guava-33.3.1-jre.jar + release/modules/ext/guava-33.3.1-jre.jar - ext/httpclient-4.5.13.jar - release/modules/ext/httpclient-4.5.13.jar + ext/httpclient-4.5.14.jar + release/modules/ext/httpclient-4.5.14.jar - ext/httpcore-4.4.15.jar - release/modules/ext/httpcore-4.4.15.jar + ext/httpcore-4.4.16.jar + release/modules/ext/httpcore-4.4.16.jar - ext/imageio-bmp-3.8.2.jar - release/modules/ext/imageio-bmp-3.8.2.jar + ext/imageio-bmp-3.12.0.jar + release/modules/ext/imageio-bmp-3.12.0.jar - ext/imageio-core-3.8.2.jar - release/modules/ext/imageio-core-3.8.2.jar + ext/imageio-core-3.12.0.jar + release/modules/ext/imageio-core-3.12.0.jar - ext/imageio-icns-3.8.2.jar - release/modules/ext/imageio-icns-3.8.2.jar + ext/imageio-icns-3.12.0.jar + release/modules/ext/imageio-icns-3.12.0.jar - ext/imageio-iff-3.8.2.jar - release/modules/ext/imageio-iff-3.8.2.jar + ext/imageio-iff-3.12.0.jar + release/modules/ext/imageio-iff-3.12.0.jar - ext/imageio-jpeg-3.8.2.jar - release/modules/ext/imageio-jpeg-3.8.2.jar + ext/imageio-jpeg-3.12.0.jar + release/modules/ext/imageio-jpeg-3.12.0.jar - ext/imageio-metadata-3.8.2.jar - release/modules/ext/imageio-metadata-3.8.2.jar + ext/imageio-metadata-3.12.0.jar + release/modules/ext/imageio-metadata-3.12.0.jar - ext/imageio-pcx-3.8.2.jar - release/modules/ext/imageio-pcx-3.8.2.jar + ext/imageio-pcx-3.12.0.jar + release/modules/ext/imageio-pcx-3.12.0.jar - ext/imageio-pict-3.8.2.jar - release/modules/ext/imageio-pict-3.8.2.jar + ext/imageio-pict-3.12.0.jar + release/modules/ext/imageio-pict-3.12.0.jar - ext/imageio-pnm-3.8.2.jar - release/modules/ext/imageio-pnm-3.8.2.jar + ext/imageio-pnm-3.12.0.jar + release/modules/ext/imageio-pnm-3.12.0.jar - ext/imageio-psd-3.8.2.jar - release/modules/ext/imageio-psd-3.8.2.jar + ext/imageio-psd-3.12.0.jar + release/modules/ext/imageio-psd-3.12.0.jar - ext/imageio-sgi-3.8.2.jar - release/modules/ext/imageio-sgi-3.8.2.jar + ext/imageio-sgi-3.12.0.jar + release/modules/ext/imageio-sgi-3.12.0.jar - ext/imageio-tga-3.8.2.jar - release/modules/ext/imageio-tga-3.8.2.jar + ext/imageio-tga-3.12.0.jar + release/modules/ext/imageio-tga-3.12.0.jar - ext/imageio-thumbsdb-3.8.2.jar - release/modules/ext/imageio-thumbsdb-3.8.2.jar + ext/imageio-thumbsdb-3.12.0.jar + release/modules/ext/imageio-thumbsdb-3.12.0.jar - ext/imageio-tiff-3.8.2.jar - release/modules/ext/imageio-tiff-3.8.2.jar + ext/imageio-tiff-3.12.0.jar + release/modules/ext/imageio-tiff-3.12.0.jar ext/imgscalr-lib-4.2.jar release/modules/ext/imgscalr-lib-4.2.jar - ext/j2objc-annotations-1.3.jar - release/modules/ext/j2objc-annotations-1.3.jar + ext/j2objc-annotations-3.0.0.jar + release/modules/ext/j2objc-annotations-3.0.0.jar - ext/jackson-annotations-2.15.2.jar - release/modules/ext/jackson-annotations-2.15.2.jar + ext/jackson-annotations-2.18.2.jar + release/modules/ext/jackson-annotations-2.18.2.jar - ext/jackson-core-2.15.2.jar - release/modules/ext/jackson-core-2.15.2.jar + ext/jackson-core-2.18.2.jar + release/modules/ext/jackson-core-2.18.2.jar - ext/jackson-databind-2.15.2.jar - release/modules/ext/jackson-databind-2.15.2.jar + ext/jackson-databind-2.18.2.jar + release/modules/ext/jackson-databind-2.18.2.jar - ext/jackson-dataformat-csv-2.15.2.jar - release/modules/ext/jackson-dataformat-csv-2.15.2.jar + ext/jackson-dataformat-csv-2.18.2.jar + release/modules/ext/jackson-dataformat-csv-2.18.2.jar - ext/jackson-datatype-jsr310-2.15.2.jar - release/modules/ext/jackson-datatype-jsr310-2.15.2.jar + ext/jackson-datatype-jsr310-2.18.2.jar + release/modules/ext/jackson-datatype-jsr310-2.18.2.jar - ext/javafx-base-17.0.7-linux.jar - release/modules/ext/javafx-base-17.0.7-linux.jar + ext/javafx-base-17.0.14-ea+2-linux.jar + release/modules/ext/javafx-base-17.0.14-ea+2-linux.jar - ext/javafx-base-17.0.7-mac.jar - release/modules/ext/javafx-base-17.0.7-mac.jar + ext/javafx-base-17.0.14-ea+2-mac.jar + release/modules/ext/javafx-base-17.0.14-ea+2-mac.jar - ext/javafx-base-17.0.7-win.jar - release/modules/ext/javafx-base-17.0.7-win.jar + ext/javafx-base-17.0.14-ea+2-win.jar + release/modules/ext/javafx-base-17.0.14-ea+2-win.jar - ext/javafx-base-17.0.7.jar - release/modules/ext/javafx-base-17.0.7.jar + ext/javafx-base-17.0.14-ea+2.jar + release/modules/ext/javafx-base-17.0.14-ea+2.jar - ext/javafx-controls-17.0.7-linux.jar - release/modules/ext/javafx-controls-17.0.7-linux.jar + ext/javafx-controls-17.0.14-ea+2-linux.jar + release/modules/ext/javafx-controls-17.0.14-ea+2-linux.jar - ext/javafx-controls-17.0.7-mac.jar - release/modules/ext/javafx-controls-17.0.7-mac.jar + ext/javafx-controls-17.0.14-ea+2-mac.jar + release/modules/ext/javafx-controls-17.0.14-ea+2-mac.jar - ext/javafx-controls-17.0.7-win.jar - release/modules/ext/javafx-controls-17.0.7-win.jar + ext/javafx-controls-17.0.14-ea+2-win.jar + release/modules/ext/javafx-controls-17.0.14-ea+2-win.jar - ext/javafx-controls-17.0.7.jar - release/modules/ext/javafx-controls-17.0.7.jar + ext/javafx-controls-17.0.14-ea+2.jar + release/modules/ext/javafx-controls-17.0.14-ea+2.jar - ext/javafx-fxml-17.0.7-linux.jar - release/modules/ext/javafx-fxml-17.0.7-linux.jar + ext/javafx-fxml-17.0.14-ea+2-linux.jar + release/modules/ext/javafx-fxml-17.0.14-ea+2-linux.jar - ext/javafx-fxml-17.0.7-mac.jar - release/modules/ext/javafx-fxml-17.0.7-mac.jar + ext/javafx-fxml-17.0.14-ea+2-mac.jar + release/modules/ext/javafx-fxml-17.0.14-ea+2-mac.jar - ext/javafx-fxml-17.0.7-win.jar - release/modules/ext/javafx-fxml-17.0.7-win.jar + ext/javafx-fxml-17.0.14-ea+2-win.jar + release/modules/ext/javafx-fxml-17.0.14-ea+2-win.jar - ext/javafx-fxml-17.0.7.jar - release/modules/ext/javafx-fxml-17.0.7.jar + ext/javafx-fxml-17.0.14-ea+2.jar + release/modules/ext/javafx-fxml-17.0.14-ea+2.jar - ext/javafx-graphics-17.0.7-linux.jar - release/modules/ext/javafx-graphics-17.0.7-linux.jar + ext/javafx-graphics-17.0.14-ea+2-linux.jar + release/modules/ext/javafx-graphics-17.0.14-ea+2-linux.jar - ext/javafx-graphics-17.0.7-mac.jar - release/modules/ext/javafx-graphics-17.0.7-mac.jar + ext/javafx-graphics-17.0.14-ea+2-mac.jar + release/modules/ext/javafx-graphics-17.0.14-ea+2-mac.jar - ext/javafx-graphics-17.0.7-win.jar - release/modules/ext/javafx-graphics-17.0.7-win.jar + ext/javafx-graphics-17.0.14-ea+2-win.jar + release/modules/ext/javafx-graphics-17.0.14-ea+2-win.jar - ext/javafx-graphics-17.0.7.jar - release/modules/ext/javafx-graphics-17.0.7.jar + ext/javafx-graphics-17.0.14-ea+2.jar + release/modules/ext/javafx-graphics-17.0.14-ea+2.jar - ext/javafx-media-17.0.7-linux.jar - release/modules/ext/javafx-media-17.0.7-linux.jar + ext/javafx-media-17.0.14-ea+2-linux.jar + release/modules/ext/javafx-media-17.0.14-ea+2-linux.jar - ext/javafx-media-17.0.7-mac.jar - release/modules/ext/javafx-media-17.0.7-mac.jar + ext/javafx-media-17.0.14-ea+2-mac.jar + release/modules/ext/javafx-media-17.0.14-ea+2-mac.jar - ext/javafx-media-17.0.7-win.jar - release/modules/ext/javafx-media-17.0.7-win.jar + ext/javafx-media-17.0.14-ea+2-win.jar + release/modules/ext/javafx-media-17.0.14-ea+2-win.jar - ext/javafx-media-17.0.7.jar - release/modules/ext/javafx-media-17.0.7.jar + ext/javafx-media-17.0.14-ea+2.jar + release/modules/ext/javafx-media-17.0.14-ea+2.jar - ext/javafx-swing-17.0.7-linux.jar - release/modules/ext/javafx-swing-17.0.7-linux.jar + ext/javafx-swing-17.0.14-ea+2-linux.jar + release/modules/ext/javafx-swing-17.0.14-ea+2-linux.jar - ext/javafx-swing-17.0.7-mac.jar - release/modules/ext/javafx-swing-17.0.7-mac.jar + ext/javafx-swing-17.0.14-ea+2-mac.jar + release/modules/ext/javafx-swing-17.0.14-ea+2-mac.jar - ext/javafx-swing-17.0.7-win.jar - release/modules/ext/javafx-swing-17.0.7-win.jar + ext/javafx-swing-17.0.14-ea+2-win.jar + release/modules/ext/javafx-swing-17.0.14-ea+2-win.jar - ext/javafx-swing-17.0.7.jar - release/modules/ext/javafx-swing-17.0.7.jar + ext/javafx-swing-17.0.14-ea+2.jar + release/modules/ext/javafx-swing-17.0.14-ea+2.jar - ext/javafx-web-17.0.7-linux.jar - release/modules/ext/javafx-web-17.0.7-linux.jar + ext/javafx-web-17.0.14-ea+2-linux.jar + release/modules/ext/javafx-web-17.0.14-ea+2-linux.jar - ext/javafx-web-17.0.7-mac.jar - release/modules/ext/javafx-web-17.0.7-mac.jar + ext/javafx-web-17.0.14-ea+2-mac.jar + release/modules/ext/javafx-web-17.0.14-ea+2-mac.jar - ext/javafx-web-17.0.7-win.jar - release/modules/ext/javafx-web-17.0.7-win.jar + ext/javafx-web-17.0.14-ea+2-win.jar + release/modules/ext/javafx-web-17.0.14-ea+2-win.jar - ext/javafx-web-17.0.7.jar - release/modules/ext/javafx-web-17.0.7.jar + ext/javafx-web-17.0.14-ea+2.jar + release/modules/ext/javafx-web-17.0.14-ea+2.jar ext/javax.annotation-api-1.3.2.jar @@ -1049,8 +1053,8 @@ release/modules/ext/jna-platform-5.15.0.jar - ext/joda-time-2.10.14.jar - release/modules/ext/joda-time-2.10.14.jar + ext/joda-time-2.13.0.jar + release/modules/ext/joda-time-2.13.0.jar ext/jsr305-3.0.2.jar @@ -1065,76 +1069,72 @@ release/modules/ext/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar - ext/log4j-api-2.17.2.jar - release/modules/ext/log4j-api-2.17.2.jar + ext/log4j-api-2.24.3.jar + release/modules/ext/log4j-api-2.24.3.jar - ext/log4j-core-2.17.2.jar - release/modules/ext/log4j-core-2.17.2.jar + ext/log4j-core-2.24.3.jar + release/modules/ext/log4j-core-2.24.3.jar - ext/opencensus-api-0.31.0.jar - release/modules/ext/opencensus-api-0.31.0.jar + ext/opencensus-api-0.31.1.jar + release/modules/ext/opencensus-api-0.31.1.jar - ext/opencensus-contrib-http-util-0.31.0.jar - release/modules/ext/opencensus-contrib-http-util-0.31.0.jar - - - ext/opencensus-proto-0.2.0.jar - release/modules/ext/opencensus-proto-0.2.0.jar + ext/opencensus-contrib-http-util-0.31.1.jar + release/modules/ext/opencensus-contrib-http-util-0.31.1.jar ext/opencv-2413.jar release/modules/ext/opencv-2413.jar - ext/perfmark-api-0.23.0.jar - release/modules/ext/perfmark-api-0.23.0.jar + ext/perfmark-api-0.27.0.jar + release/modules/ext/perfmark-api-0.27.0.jar - ext/proto-google-cloud-translate-v3-2.1.11.jar - release/modules/ext/proto-google-cloud-translate-v3-2.1.11.jar + ext/proto-google-cloud-translate-v3-2.54.0.jar + release/modules/ext/proto-google-cloud-translate-v3-2.54.0.jar - ext/proto-google-cloud-translate-v3beta1-0.83.11.jar - release/modules/ext/proto-google-cloud-translate-v3beta1-0.83.11.jar + ext/proto-google-cloud-translate-v3beta1-0.136.0.jar + release/modules/ext/proto-google-cloud-translate-v3beta1-0.136.0.jar - ext/proto-google-common-protos-2.7.4.jar - release/modules/ext/proto-google-common-protos-2.7.4.jar + ext/proto-google-common-protos-2.49.0.jar + release/modules/ext/proto-google-common-protos-2.49.0.jar - ext/proto-google-iam-v1-1.2.6.jar - release/modules/ext/proto-google-iam-v1-1.2.6.jar + ext/proto-google-iam-v1-1.44.0.jar + release/modules/ext/proto-google-iam-v1-1.44.0.jar - ext/protobuf-java-3.19.4.jar - release/modules/ext/protobuf-java-3.19.4.jar + ext/protobuf-java-3.25.5.jar + release/modules/ext/protobuf-java-3.25.5.jar - ext/protobuf-java-util-3.19.4.jar - release/modules/ext/protobuf-java-util-3.19.4.jar + ext/protobuf-java-util-3.25.5.jar + release/modules/ext/protobuf-java-util-3.25.5.jar - ext/re2j-1.5.jar - release/modules/ext/re2j-1.5.jar + ext/re2j-1.7.jar + release/modules/ext/re2j-1.7.jar - ext/reload4j-1.2.19.jar - release/modules/ext/reload4j-1.2.19.jar + ext/reload4j-1.2.22.jar + release/modules/ext/reload4j-1.2.22.jar - ext/slf4j-api-1.7.36.jar - release/modules/ext/slf4j-api-1.7.36.jar + ext/slf4j-api-2.0.16.jar + release/modules/ext/slf4j-api-2.0.16.jar - ext/slf4j-reload4j-1.7.36.jar - release/modules/ext/slf4j-reload4j-1.7.36.jar + ext/slf4j-reload4j-2.0.16.jar + release/modules/ext/slf4j-reload4j-2.0.16.jar - ext/threetenbp-1.5.2.jar - release/modules/ext/threetenbp-1.5.2.jar + ext/threetenbp-1.7.0.jar + release/modules/ext/threetenbp-1.7.0.jar ext/webp-imageio-sejda-0.1.0.jar diff --git a/CoreTestLibs/nbproject/project.properties b/CoreTestLibs/nbproject/project.properties index 6ea6cbac47..fed65b4808 100644 --- a/CoreTestLibs/nbproject/project.properties +++ b/CoreTestLibs/nbproject/project.properties @@ -1,8 +1,8 @@ -file.reference.byte-buddy-1.10.13.jar=release/modules/ext/byte-buddy-1.10.13.jar -file.reference.byte-buddy-agent-1.10.13.jar=release/modules/ext/byte-buddy-agent-1.10.13.jar +file.reference.byte-buddy-1.15.11.jar=release/modules/ext/byte-buddy-1.15.11.jar +file.reference.byte-buddy-agent-1.15.11.jar=release/modules/ext/byte-buddy-agent-1.15.11.jar file.reference.hamcrest-core-1.3.jar=release/modules/ext/hamcrest-core-1.3.jar file.reference.junit-4.13.2.jar=release/modules/ext/junit-4.13.2.jar file.reference.mockito-core-4.8.1.jar=release/modules/ext/mockito-core-4.8.1.jar -file.reference.objenesis-3.1.jar=release/modules/ext/objenesis-3.1.jar +file.reference.objenesis-3.4.jar=release/modules/ext/objenesis-3.4.jar javac.source=11 javac.compilerargs=-Xlint -Xlint:-serial diff --git a/CoreTestLibs/nbproject/project.xml b/CoreTestLibs/nbproject/project.xml index 94d755e3b9..38125bd744 100644 --- a/CoreTestLibs/nbproject/project.xml +++ b/CoreTestLibs/nbproject/project.xml @@ -44,12 +44,12 @@ org.junit.validator - ext/byte-buddy-1.12.18.jar - release/modules/ext/byte-buddy-1.12.18.jar + ext/byte-buddy-1.15.11.jar + release/modules/ext/byte-buddy-1.15.11.jar - ext/byte-buddy-agent-1.12.18.jar - release/modules/ext/byte-buddy-agent-1.12.18.jar + ext/byte-buddy-agent-1.15.11.jar + release/modules/ext/byte-buddy-agent-1.15.11.jar ext/hamcrest-core-1.3.jar @@ -64,8 +64,8 @@ release/modules/ext/mockito-core-4.8.1.jar - ext/objenesis-3.3.jar - release/modules/ext/objenesis-3.3.jar + ext/objenesis-3.4.jar + release/modules/ext/objenesis-3.4.jar diff --git a/KeywordSearch/ivy.xml b/KeywordSearch/ivy.xml index 9ea3eeee4a..a5e9af68a0 100644 --- a/KeywordSearch/ivy.xml +++ b/KeywordSearch/ivy.xml @@ -1,9 +1,9 @@ ]> + From 3689e89937a27f65723c316020b6fb7136a8de4d Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 19 Dec 2024 20:53:16 -0500 Subject: [PATCH 18/52] fix in DSP processor --- .../sleuthkit/autopsy/casemodule/ImageDSProcessor.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index c1fef28484..e7e22b5763 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -207,7 +207,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour this.host = host; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.password, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -271,7 +271,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.password, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -357,7 +357,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour ingestStream = new DefaultIngestStream(); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId); + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, this.password, null); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -518,7 +518,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour ingestStream = new DefaultIngestStream(); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, host); + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, this.password, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -548,7 +548,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.password, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); From 9101f481f882c57e78ffdd47c799b16a3369eeb3 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 19 Dec 2024 21:35:16 -0500 Subject: [PATCH 19/52] updates --- .../autopsy/casemodule/Bundle.properties | 1 + .../casemodule/Bundle.properties-MERGED | 1 + .../autopsy/casemodule/ImageFilePanel.form | 25 +++++++++++++ .../autopsy/casemodule/ImageFilePanel.java | 35 ++++++++++++++++--- 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index c53c3085a9..9fc3d3315e 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -272,3 +272,4 @@ LocalFilesPanel.timeStampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.timeStampNoteLabel.text=NOTE: Time stamps may have changed when the files were copied to the current location. ImageFilePanel.passwordLabel.text=Bitlocker Password (optional): ImageFilePanel.passwordTextField.text= +ImageFilePanel.loadingLabel.text=loading... diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED index 9e7e2d7e81..f711125611 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED @@ -510,3 +510,4 @@ LocalFilesPanel.timeStampToIncludeLabel.text=Timestamps To Include: LocalFilesPanel.timeStampNoteLabel.text=NOTE: Time stamps may have changed when the files were copied to the current location. ImageFilePanel.passwordLabel.text=Bitlocker Password (optional): ImageFilePanel.passwordTextField.text= +ImageFilePanel.loadingLabel.text=loading... diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form index c46749306b..6e3633641d 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.form @@ -310,5 +310,30 @@
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java index 7cf1f85183..585a81a1d2 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java @@ -64,7 +64,7 @@ public class ImageFilePanel extends JPanel { private final String contextName; private final List fileChooserFilters; - private static int VALIDATE_TIMEOUT_MILLIS = 1500; + private static int VALIDATE_TIMEOUT_MILLIS = 1200; static ScheduledThreadPoolExecutor delayedValidationService = new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder().setNameFormat("ImageFilePanel delayed validation").build()); private Future validateAction = null; @@ -91,6 +91,7 @@ public class ImageFilePanel extends JPanel { sectorSizeComboBox.setSelectedIndex(0); errorLabel.setVisible(false); + loadingLabel.setVisible(false); this.fileChooserFilters = fileChooserFilters; } @@ -198,6 +199,7 @@ public class ImageFilePanel extends JPanel { passwordLabel = new javax.swing.JLabel(); passwordTextField = new javax.swing.JTextField(); javax.swing.JPanel spacer = new javax.swing.JPanel(); + loadingLabel = new javax.swing.JLabel(); setMinimumSize(new java.awt.Dimension(0, 65)); setPreferredSize(new java.awt.Dimension(403, 65)); @@ -425,6 +427,22 @@ public class ImageFilePanel extends JPanel { gridBagConstraints.gridy = 12; gridBagConstraints.weighty = 1.0; add(spacer, gridBagConstraints); + + loadingLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/working_spinner.gif"))); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(loadingLabel, org.openide.util.NbBundle.getMessage(ImageFilePanel.class, "ImageFilePanel.loadingLabel.text")); // NOI18N + loadingLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP); + loadingLabel.setMaximumSize(new java.awt.Dimension(500, 60)); + loadingLabel.setMinimumSize(new java.awt.Dimension(200, 20)); + loadingLabel.setPreferredSize(new java.awt.Dimension(200, 60)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 11; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + add(loadingLabel, gridBagConstraints); }// //GEN-END:initComponents @NbBundle.Messages({"ImageFilePanel.000.confirmationMessage=The selected file" @@ -474,6 +492,7 @@ public class ImageFilePanel extends JPanel { private javax.swing.JLabel errorLabel; private javax.swing.JLabel hashValuesLabel; private javax.swing.JLabel hashValuesNoteLabel; + private javax.swing.JLabel loadingLabel; private javax.swing.JLabel md5HashLabel; private javax.swing.JTextField md5HashTextField; private javax.swing.JCheckBox noFatOrphansCheckbox; @@ -593,10 +612,9 @@ public class ImageFilePanel extends JPanel { "ImageFilePanel_validatePanel_unknownError=

An unknown error occurred while attempting to validate the image

" }) public boolean validatePanel() { - errorLabel.setVisible(false); - String path = getContentPaths(); if (!isImagePathValid()) { + showError(null); return false; } @@ -635,16 +653,18 @@ public class ImageFilePanel extends JPanel { return false; } + showError(null); return true; } /** * Show an error message if error message is non-empty. Otherwise, hide - * error message. + * error message. Either way, hide loading label. * - * @param errorMessage The error message to show. + * @param errorMessage The error message to show or null for no error. */ private void showError(String errorMessage) { + loadingLabel.setVisible(false); if (StringUtils.isNotBlank(errorMessage)) { errorLabel.setVisible(true); errorLabel.setText(errorMessage); @@ -730,6 +750,11 @@ public class ImageFilePanel extends JPanel { if (ImageFilePanel.this.validateAction != null) { ImageFilePanel.this.validateAction.cancel(true); } + + errorLabel.setVisible(false); + if (!ImageFilePanel.this.loadingLabel.isVisible()) { + ImageFilePanel.this.loadingLabel.setVisible(true); + } ImageFilePanel.this.validateAction = ImageFilePanel.this.delayedValidationService.schedule( () -> { From 14cb87e4fb908648cd66055468cd7419743977b8 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 3 Jan 2025 14:35:29 -0500 Subject: [PATCH 20/52] update for loading --- ...ddImageWizardDataSourceSettingsVisual.java | 54 +++++++++--- .../autopsy/casemodule/ImageDSProcessor.java | 4 +- .../autopsy/casemodule/ImageFilePanel.java | 87 +++++++++++++++---- 3 files changed, 116 insertions(+), 29 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardDataSourceSettingsVisual.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardDataSourceSettingsVisual.java index 320a2200f7..52393fee8f 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardDataSourceSettingsVisual.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardDataSourceSettingsVisual.java @@ -49,6 +49,8 @@ final class AddImageWizardDataSourceSettingsVisual extends JPanel { private JPanel currentPanel; private final Map datasourceProcessorsMap = new HashMap<>(); + + private final PanelUpdateListener panelUpdateListener; private String currentDsp; @@ -60,6 +62,7 @@ final class AddImageWizardDataSourceSettingsVisual extends JPanel { AddImageWizardDataSourceSettingsVisual(AddImageWizardDataSourceSettingsPanel wizPanel) { initComponents(); this.wizPanel = wizPanel; + this.panelUpdateListener = new PanelUpdateListener(); typePanel.setLayout(new BorderLayout()); discoverDataSourceProcessors(); currentDsp = ImageDSProcessor.getType(); //default value to the ImageDSProcessor @@ -107,24 +110,37 @@ final class AddImageWizardDataSourceSettingsVisual extends JPanel { */ @SuppressWarnings("deprecation") private void updateCurrentPanel(JPanel panel) { + cleanupUpdateListener(currentPanel); currentPanel = panel; typePanel.removeAll(); typePanel.add(currentPanel, BorderLayout.CENTER); typePanel.validate(); typePanel.repaint(); - currentPanel.addPropertyChangeListener(new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName().equals(DataSourceProcessor.DSP_PANEL_EVENT.UPDATE_UI.toString())) { - wizPanel.enableNextButton(getCurrentDSProcessor().isPanelValid()); - } - if (evt.getPropertyName().equals(DataSourceProcessor.DSP_PANEL_EVENT.FOCUS_NEXT.toString())) { - wizPanel.moveFocusToNext(); - } - } - }); + cleanupUpdateListener(currentPanel); + currentPanel.addPropertyChangeListener(panelUpdateListener); this.wizPanel.enableNextButton(getCurrentDSProcessor().isPanelValid()); } + + /** + * Removes PanelUpdateListener from panel if found. + * @param panel The panel from which to remove the listener. + */ + private void cleanupUpdateListener(JPanel panel) { + if (panel == null) { + return; + } + + PropertyChangeListener[] listeners = panel.getPropertyChangeListeners(); + if (listeners == null) { + return; + } + + for (PropertyChangeListener listener: listeners) { + if (listener instanceof PanelUpdateListener) { + panel.removePropertyChangeListener(listener); + } + } + } /** * Returns the currently selected DS Processor @@ -221,4 +237,20 @@ final class AddImageWizardDataSourceSettingsVisual extends JPanel { protected abstract boolean addSeparatorAfter(JList list, Object value, int index); } + + /** + * A property change listener that responds to update events. + */ + private class PanelUpdateListener implements PropertyChangeListener { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals(DataSourceProcessor.DSP_PANEL_EVENT.UPDATE_UI.toString())) { + wizPanel.enableNextButton(getCurrentDSProcessor().isPanelValid()); + } + if (evt.getPropertyName().equals(DataSourceProcessor.DSP_PANEL_EVENT.FOCUS_NEXT.toString())) { + wizPanel.moveFocusToNext(); + } + } + } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index e7e22b5763..83bfb434f1 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -163,7 +163,9 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour */ @Override public boolean isPanelValid() { - return configPanel.validatePanel(); + // before attempting to validate the panel (a potentially long running operation), + // check if the validation is loading or on delay. + return !configPanel.isValidationLoading() && configPanel.validatePanel(); } /** diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java index 585a81a1d2..166067478d 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java @@ -67,7 +67,9 @@ public class ImageFilePanel extends JPanel { private static int VALIDATE_TIMEOUT_MILLIS = 1200; static ScheduledThreadPoolExecutor delayedValidationService = new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder().setNameFormat("ImageFilePanel delayed validation").build()); - private Future validateAction = null; + private final Object validateActionLock = new Object(); + private Runnable validateAction = null; + private Future validateFuture = null; /** * Creates new form ImageFilePanel @@ -632,10 +634,6 @@ public class ImageFilePanel extends JPanel { showError(Bundle.ImageFilePanel_validatePanel_invalidSHA256()); return false; } - - if (!PathValidator.isValidForCaseType(path, Case.getCurrentCase().getCaseType())) { - showError(Bundle.ImageFilePanel_validatePanel_dataSourceOnCDriveError()); - } try { String password = this.getPassword(); @@ -652,8 +650,12 @@ public class ImageFilePanel extends JPanel { showError(Bundle.ImageFilePanel_validatePanel_unknownError()); return false; } - - showError(null); + + if (!PathValidator.isValidForCaseType(path, Case.getCurrentCase().getCaseType())) { + showError(Bundle.ImageFilePanel_validatePanel_dataSourceOnCDriveError()); + } else { + showError(null); + } return true; } @@ -683,6 +685,16 @@ public class ImageFilePanel extends JPanel { return true; } + + /** + * @return True if the panel is on a delay for validating (i.e. typing a + * password for bitlocker). + */ + public boolean isValidationLoading() { + synchronized (this.validateActionLock) { + return this.validateAction != null; + } + } public void storeSettings() { String imagePathName = getContentPaths(); @@ -746,23 +758,64 @@ public class ImageFilePanel extends JPanel { delayValidate(); } - private synchronized void delayValidate() { - if (ImageFilePanel.this.validateAction != null) { - ImageFilePanel.this.validateAction.cancel(true); + /** + * Run validation on a delay to avoid password checking too many times + * while typing. + */ + private void delayValidate() { + boolean triggerUpdate = false; + synchronized (ImageFilePanel.this.validateActionLock) { + if (ImageFilePanel.this.validateFuture != null && + !ImageFilePanel.this.validateFuture.isCancelled() && + !ImageFilePanel.this.validateFuture.isDone()) { + ImageFilePanel.this.validateFuture.cancel(true); + triggerUpdate = true; + } + + ImageFilePanel.this.validateAction = new ValidationRunnable(); + + ImageFilePanel.this.validateFuture = ImageFilePanel.this.delayedValidationService.schedule( + ImageFilePanel.this.validateAction, + VALIDATE_TIMEOUT_MILLIS, + TimeUnit.MILLISECONDS); } + // trigger invalidation after setting up new runnable if not already triggered + if (triggerUpdate) { + firePropertyChange(DataSourceProcessor.DSP_PANEL_EVENT.UPDATE_UI.toString(), false, true); + } + errorLabel.setVisible(false); if (!ImageFilePanel.this.loadingLabel.isVisible()) { ImageFilePanel.this.loadingLabel.setVisible(true); } + } + + /** + * Runnable to run the updateHelper if the validation action remains + * this runnable. + */ + private class ValidationRunnable implements Runnable { - ImageFilePanel.this.validateAction = ImageFilePanel.this.delayedValidationService.schedule( - () -> { - ImageFilePanel.this.updateHelper(); - return null; - }, - VALIDATE_TIMEOUT_MILLIS, - TimeUnit.MILLISECONDS); + @Override + public void run() { + if (Thread.interrupted()) { + return; + } + + synchronized (ImageFilePanel.this.validateActionLock) { + if (ImageFilePanel.this.validateAction != this) { + return; + } + + // set the validation action to null to indicate that this is done running and can be validated. + ImageFilePanel.this.validateAction = null; + ImageFilePanel.this.validateFuture = null; + } + + ImageFilePanel.this.updateHelper(); + } + } } } From 499fe3fb8b0fbbf3546887cd4f8677ab5edd6a68 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 3 Jan 2025 17:17:08 -0500 Subject: [PATCH 21/52] version updates --- Tika/ivy.xml | 2 +- Tika/nbproject/project.properties | 184 +++---- Tika/nbproject/project.xml | 500 +++++++----------- .../netbeans/core/startup/Bundle.properties | 4 +- .../core/windows/view/ui/Bundle.properties | 6 +- 5 files changed, 278 insertions(+), 418 deletions(-) diff --git a/Tika/ivy.xml b/Tika/ivy.xml index 58a7337faa..aae3f2492b 100755 --- a/Tika/ivy.xml +++ b/Tika/ivy.xml @@ -4,7 +4,7 @@ - + @@ -79,9 +74,9 @@ - - - + + + diff --git a/Core/ivysettings.xml b/Core/ivysettings.xml index 06c2d9308f..96578e6c40 100644 --- a/Core/ivysettings.xml +++ b/Core/ivysettings.xml @@ -1,4 +1,8 @@ + + + + diff --git a/CoreLibs/ivy.xml b/CoreLibs/ivy.xml index dc97173fcc..dca5ebb87e 100644 --- a/CoreLibs/ivy.xml +++ b/CoreLibs/ivy.xml @@ -1,9 +1,3 @@ - - - - -]> @@ -12,43 +6,43 @@ - + - + - + - + - + - + - + @@ -90,8 +84,8 @@ - - + + @@ -108,30 +102,30 @@ - - - + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -146,8 +140,8 @@ - - + + // changes to bouncy castle version may also be reflected in thirdparty/IcePDF 6.2.2 diff --git a/CoreLibs/ivysettings.xml b/CoreLibs/ivysettings.xml index da1e8e957b..23bab824f7 100644 --- a/CoreLibs/ivysettings.xml +++ b/CoreLibs/ivysettings.xml @@ -1,4 +1,9 @@ + + + + + diff --git a/KeywordSearch/ivy.xml b/KeywordSearch/ivy.xml index a5e9af68a0..eb3c42ba71 100644 --- a/KeywordSearch/ivy.xml +++ b/KeywordSearch/ivy.xml @@ -1,8 +1,4 @@ - - -]> @@ -35,15 +31,15 @@ - - - + + + - - - + + + - + diff --git a/KeywordSearch/nbproject/project.properties b/KeywordSearch/nbproject/project.properties index 16289e9e73..cbf856e56d 100644 --- a/KeywordSearch/nbproject/project.properties +++ b/KeywordSearch/nbproject/project.properties @@ -1,48 +1,45 @@ file.reference.annotations-12.0.jar=release/modules/ext/annotations-12.0.jar -file.reference.commons-io-2.8.0.jar=release/modules/ext/commons-io-2.8.0.jar +file.reference.commons-io-2.11.0.jar=release/modules/ext/commons-io-2.11.0.jar file.reference.commons-lang-2.6.jar=release/modules/ext/commons-lang-2.6.jar file.reference.commons-math3-3.6.1.jar=release/modules/ext/commons-math3-3.6.1.jar -file.reference.guava-31.1-jre.jar=release/modules/ext/guava-31.1-jre.jar +file.reference.guava-16.0.1.jar=release/modules/ext/guava-16.0.1.jar file.reference.hamcrest-core-1.3.jar=release/modules/ext/hamcrest-core-1.3.jar -file.reference.http2-client-9.4.44.v20210927.jar=release/modules/ext/http2-client-9.4.44.v20210927.jar -file.reference.http2-common-9.4.44.v20210927.jar=release/modules/ext/http2-common-9.4.44.v20210927.jar -file.reference.http2-hpack-9.4.44.v20210927.jar=release/modules/ext/http2-hpack-9.4.44.v20210927.jar -file.reference.http2-http-client-transport-9.4.44.v20210927.jar=release/modules/ext/http2-http-client-transport-9.4.44.v20210927.jar +file.reference.http2-client-9.4.53.v20231009.jar=release/modules/ext/http2-client-9.4.53.v20231009.jar +file.reference.http2-common-9.4.53.v20231009.jar=release/modules/ext/http2-common-9.4.53.v20231009.jar +file.reference.http2-hpack-9.4.53.v20231009.jar=release/modules/ext/http2-hpack-9.4.53.v20231009.jar +file.reference.http2-http-client-transport-9.4.53.v20231009.jar=release/modules/ext/http2-http-client-transport-9.4.53.v20231009.jar file.reference.httpclient-4.5.13.jar=release/modules/ext/httpclient-4.5.13.jar file.reference.httpcore-4.4.14.jar=release/modules/ext/httpcore-4.4.14.jar file.reference.httpmime-4.5.13.jar=release/modules/ext/httpmime-4.5.13.jar -file.reference.icu4j-70.1.jar=release/modules/ext/icu4j-70.1.jar -file.reference.jcl-over-slf4j-1.7.24.jar=release/modules/ext/jcl-over-slf4j-1.7.24.jar -file.reference.jetty-alpn-client-9.4.44.v20210927.jar=release/modules/ext/jetty-alpn-client-9.4.44.v20210927.jar -file.reference.jetty-alpn-java-client-9.4.44.v20210927.jar=release/modules/ext/jetty-alpn-java-client-9.4.44.v20210927.jar -file.reference.jetty-alpn-openjdk8-client-9.4.44.v20210927.jar=release/modules/ext/jetty-alpn-openjdk8-client-9.4.44.v20210927.jar -file.reference.jetty-client-9.4.44.v20210927.jar=release/modules/ext/jetty-client-9.4.44.v20210927.jar -file.reference.jetty-http-9.4.44.v20210927.jar=release/modules/ext/jetty-http-9.4.44.v20210927.jar -file.reference.jetty-io-9.4.44.v20210927.jar=release/modules/ext/jetty-io-9.4.44.v20210927.jar -file.reference.jetty-util-9.4.44.v20210927.jar=release/modules/ext/jetty-util-9.4.44.v20210927.jar +file.reference.icu4j-76.1.jar=release/modules/ext/icu4j-76.1.jar +file.reference.jcl-over-slf4j-1.7.36.jar=release/modules/ext/jcl-over-slf4j-1.7.36.jar +file.reference.jetty-alpn-client-9.4.53.v20231009.jar=release/modules/ext/jetty-alpn-client-9.4.53.v20231009.jar +file.reference.jetty-alpn-java-client-9.4.53.v20231009.jar=release/modules/ext/jetty-alpn-java-client-9.4.53.v20231009.jar +file.reference.jetty-client-9.4.53.v20231009.jar=release/modules/ext/jetty-client-9.4.53.v20231009.jar +file.reference.jetty-http-9.4.53.v20231009.jar=release/modules/ext/jetty-http-9.4.53.v20231009.jar +file.reference.jetty-io-9.4.53.v20231009.jar=release/modules/ext/jetty-io-9.4.53.v20231009.jar +file.reference.jetty-util-9.4.53.v20231009.jar=release/modules/ext/jetty-util-9.4.53.v20231009.jar file.reference.jsonic-1.2.11.jar=release/modules/ext/jsonic-1.2.11.jar file.reference.junit-4.13.2.jar=release/modules/ext/junit-4.13.2.jar file.reference.language-detector-0.6.jar=release/modules/ext/language-detector-0.6.jar -file.reference.logback-classic-1.2.10.jar=release/modules/ext/logback-classic-1.2.10.jar -file.reference.logback-core-1.2.10.jar=release/modules/ext/logback-core-1.2.10.jar -file.reference.lucene-core-8.11.2.jar=release/modules/ext/lucene-core-8.11.2.jar -file.reference.netty-buffer-4.1.68.Final.jar=release/modules/ext/netty-buffer-4.1.68.Final.jar -file.reference.netty-codec-4.1.68.Final.jar=release/modules/ext/netty-codec-4.1.68.Final.jar -file.reference.netty-common-4.1.68.Final.jar=release/modules/ext/netty-common-4.1.68.Final.jar -file.reference.netty-handler-4.1.68.Final.jar=release/modules/ext/netty-handler-4.1.68.Final.jar -file.reference.netty-resolver-4.1.68.Final.jar=release/modules/ext/netty-resolver-4.1.68.Final.jar -file.reference.netty-tcnative-2.0.48.Final.jar=release/modules/ext/netty-tcnative-2.0.48.Final.jar -file.reference.netty-tcnative-classes-2.0.48.Final.jar=release/modules/ext/netty-tcnative-classes-2.0.48.Final.jar -file.reference.netty-transport-4.1.68.Final.jar=release/modules/ext/netty-transport-4.1.68.Final.jar -file.reference.netty-transport-native-epoll-4.1.68.Final.jar=release/modules/ext/netty-transport-native-epoll-4.1.68.Final.jar -file.reference.netty-transport-native-unix-common-4.1.68.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.68.Final.jar +file.reference.lucene-core-9.12.1.jar=release/modules/ext/lucene-core-9.12.1.jar +file.reference.netty-buffer-4.1.99.Final.jar=release/modules/ext/netty-buffer-4.1.99.Final.jar +file.reference.netty-codec-4.1.99.Final.jar=release/modules/ext/netty-codec-4.1.99.Final.jar +file.reference.netty-common-4.1.99.Final.jar=release/modules/ext/netty-common-4.1.99.Final.jar +file.reference.netty-handler-4.1.99.Final.jar=release/modules/ext/netty-handler-4.1.99.Final.jar +file.reference.netty-resolver-4.1.99.Final.jar=release/modules/ext/netty-resolver-4.1.99.Final.jar +file.reference.netty-transport-4.1.99.Final.jar=release/modules/ext/netty-transport-4.1.99.Final.jar +file.reference.netty-transport-classes-epoll-4.1.99.Final.jar=release/modules/ext/netty-transport-classes-epoll-4.1.99.Final.jar +file.reference.netty-transport-native-epoll-4.1.99.Final.jar=release/modules/ext/netty-transport-native-epoll-4.1.99.Final.jar +file.reference.netty-transport-native-unix-common-4.1.99.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.99.Final.jar file.reference.slf4j-api-1.7.36.jar=release/modules/ext/slf4j-api-1.7.36.jar -file.reference.snappy-java-1.1.7.6.jar=release/modules/ext/snappy-java-1.1.7.6.jar -file.reference.solr-solrj-8.11.2.jar=release/modules/ext/solr-solrj-8.11.2.jar +file.reference.snappy-java-1.1.10.1.jar=release/modules/ext/snappy-java-1.1.10.1.jar +file.reference.solr-solrj-8.11.4.jar=release/modules/ext/solr-solrj-8.11.4.jar +file.reference.stax-api-1.0.1.jar=release/modules/ext/stax-api-1.0.1.jar file.reference.stax2-api-4.2.1.jar=release/modules/ext/stax2-api-4.2.1.jar -file.reference.woodstox-core-6.2.4.jar=release/modules/ext/woodstox-core-6.2.4.jar -file.reference.zookeeper-3.8.0.jar=release/modules/ext/zookeeper-3.8.0.jar -file.reference.zookeeper-jute-3.8.0.jar=release/modules/ext/zookeeper-jute-3.8.0.jar +file.reference.woodstox-core-6.5.1.jar=release/modules/ext/woodstox-core-6.5.1.jar +file.reference.zookeeper-3.6.2.jar=release/modules/ext/zookeeper-3.6.2.jar +file.reference.zookeeper-jute-3.6.2.jar=release/modules/ext/zookeeper-jute-3.6.2.jar javac.source=17 javac.compilerargs=-Xlint -Xlint:-serial license.file=../LICENSE-2.0.txt diff --git a/KeywordSearch/nbproject/project.xml b/KeywordSearch/nbproject/project.xml index 98a84faeb5..40466c4b5f 100644 --- a/KeywordSearch/nbproject/project.xml +++ b/KeywordSearch/nbproject/project.xml @@ -239,8 +239,8 @@ release/modules/ext/annotations-12.0.jar - ext/commons-io-2.8.0.jar - release/modules/ext/commons-io-2.8.0.jar + ext/commons-io-2.11.0.jar + release/modules/ext/commons-io-2.11.0.jar ext/commons-lang-2.6.jar @@ -251,28 +251,28 @@ release/modules/ext/commons-math3-3.6.1.jar - ext/guava-31.1-jre.jar - release/modules/ext/guava-31.1-jre.jar + ext/guava-16.0.1.jar + release/modules/ext/guava-16.0.1.jar ext/hamcrest-core-1.3.jar release/modules/ext/hamcrest-core-1.3.jar - ext/http2-client-9.4.44.v20210927.jar - release/modules/ext/http2-client-9.4.44.v20210927.jar + ext/http2-client-9.4.53.v20231009.jar + release/modules/ext/http2-client-9.4.53.v20231009.jar - ext/http2-common-9.4.44.v20210927.jar - release/modules/ext/http2-common-9.4.44.v20210927.jar + ext/http2-common-9.4.53.v20231009.jar + release/modules/ext/http2-common-9.4.53.v20231009.jar - ext/http2-hpack-9.4.44.v20210927.jar - release/modules/ext/http2-hpack-9.4.44.v20210927.jar + ext/http2-hpack-9.4.53.v20231009.jar + release/modules/ext/http2-hpack-9.4.53.v20231009.jar - ext/http2-http-client-transport-9.4.44.v20210927.jar - release/modules/ext/http2-http-client-transport-9.4.44.v20210927.jar + ext/http2-http-client-transport-9.4.53.v20231009.jar + release/modules/ext/http2-http-client-transport-9.4.53.v20231009.jar ext/httpclient-4.5.13.jar @@ -287,40 +287,36 @@ release/modules/ext/httpmime-4.5.13.jar - ext/icu4j-70.1.jar - release/modules/ext/icu4j-70.1.jar + ext/icu4j-76.1.jar + release/modules/ext/icu4j-76.1.jar - ext/jcl-over-slf4j-1.7.24.jar - release/modules/ext/jcl-over-slf4j-1.7.24.jar + ext/jcl-over-slf4j-1.7.36.jar + release/modules/ext/jcl-over-slf4j-1.7.36.jar - ext/jetty-alpn-client-9.4.44.v20210927.jar - release/modules/ext/jetty-alpn-client-9.4.44.v20210927.jar + ext/jetty-alpn-client-9.4.53.v20231009.jar + release/modules/ext/jetty-alpn-client-9.4.53.v20231009.jar - ext/jetty-alpn-java-client-9.4.44.v20210927.jar - release/modules/ext/jetty-alpn-java-client-9.4.44.v20210927.jar + ext/jetty-alpn-java-client-9.4.53.v20231009.jar + release/modules/ext/jetty-alpn-java-client-9.4.53.v20231009.jar - ext/jetty-alpn-openjdk8-client-9.4.44.v20210927.jar - release/modules/ext/jetty-alpn-openjdk8-client-9.4.44.v20210927.jar + ext/jetty-client-9.4.53.v20231009.jar + release/modules/ext/jetty-client-9.4.53.v20231009.jar - ext/jetty-client-9.4.44.v20210927.jar - release/modules/ext/jetty-client-9.4.44.v20210927.jar + ext/jetty-http-9.4.53.v20231009.jar + release/modules/ext/jetty-http-9.4.53.v20231009.jar - ext/jetty-http-9.4.44.v20210927.jar - release/modules/ext/jetty-http-9.4.44.v20210927.jar + ext/jetty-io-9.4.53.v20231009.jar + release/modules/ext/jetty-io-9.4.53.v20231009.jar - ext/jetty-io-9.4.44.v20210927.jar - release/modules/ext/jetty-io-9.4.44.v20210927.jar - - - ext/jetty-util-9.4.44.v20210927.jar - release/modules/ext/jetty-util-9.4.44.v20210927.jar + ext/jetty-util-9.4.53.v20231009.jar + release/modules/ext/jetty-util-9.4.53.v20231009.jar ext/jsonic-1.2.11.jar @@ -335,84 +331,76 @@ release/modules/ext/language-detector-0.6.jar - ext/logback-classic-1.2.10.jar - release/modules/ext/logback-classic-1.2.10.jar + ext/lucene-core-9.12.1.jar + release/modules/ext/lucene-core-9.12.1.jar - ext/logback-core-1.2.10.jar - release/modules/ext/logback-core-1.2.10.jar + ext/netty-buffer-4.1.99.Final.jar + release/modules/ext/netty-buffer-4.1.99.Final.jar - ext/lucene-core-8.11.2.jar - release/modules/ext/lucene-core-8.11.2.jar + ext/netty-codec-4.1.99.Final.jar + release/modules/ext/netty-codec-4.1.99.Final.jar - ext/netty-buffer-4.1.68.Final.jar - release/modules/ext/netty-buffer-4.1.68.Final.jar + ext/netty-common-4.1.99.Final.jar + release/modules/ext/netty-common-4.1.99.Final.jar - ext/netty-codec-4.1.68.Final.jar - release/modules/ext/netty-codec-4.1.68.Final.jar + ext/netty-handler-4.1.99.Final.jar + release/modules/ext/netty-handler-4.1.99.Final.jar - ext/netty-common-4.1.68.Final.jar - release/modules/ext/netty-common-4.1.68.Final.jar + ext/netty-resolver-4.1.99.Final.jar + release/modules/ext/netty-resolver-4.1.99.Final.jar - ext/netty-handler-4.1.68.Final.jar - release/modules/ext/netty-handler-4.1.68.Final.jar + ext/netty-transport-4.1.99.Final.jar + release/modules/ext/netty-transport-4.1.99.Final.jar - ext/netty-resolver-4.1.68.Final.jar - release/modules/ext/netty-resolver-4.1.68.Final.jar + ext/netty-transport-classes-epoll-4.1.99.Final.jar + release/modules/ext/netty-transport-classes-epoll-4.1.99.Final.jar - ext/netty-tcnative-2.0.48.Final.jar - release/modules/ext/netty-tcnative-2.0.48.Final.jar + ext/netty-transport-native-epoll-4.1.99.Final.jar + release/modules/ext/netty-transport-native-epoll-4.1.99.Final.jar - ext/netty-tcnative-classes-2.0.48.Final.jar - release/modules/ext/netty-tcnative-classes-2.0.48.Final.jar - - - ext/netty-transport-4.1.68.Final.jar - release/modules/ext/netty-transport-4.1.68.Final.jar - - - ext/netty-transport-native-epoll-4.1.68.Final.jar - release/modules/ext/netty-transport-native-epoll-4.1.68.Final.jar - - - ext/netty-transport-native-unix-common-4.1.68.Final.jar - release/modules/ext/netty-transport-native-unix-common-4.1.68.Final.jar + ext/netty-transport-native-unix-common-4.1.99.Final.jar + release/modules/ext/netty-transport-native-unix-common-4.1.99.Final.jar ext/slf4j-api-1.7.36.jar release/modules/ext/slf4j-api-1.7.36.jar - ext/snappy-java-1.1.7.6.jar - release/modules/ext/snappy-java-1.1.7.6.jar + ext/snappy-java-1.1.10.1.jar + release/modules/ext/snappy-java-1.1.10.1.jar - ext/solr-solrj-8.11.2.jar - release/modules/ext/solr-solrj-8.11.2.jar + ext/solr-solrj-8.11.4.jar + release/modules/ext/solr-solrj-8.11.4.jar + + + ext/stax-api-1.0.1.jar + release/modules/ext/stax-api-1.0.1.jar ext/stax2-api-4.2.1.jar release/modules/ext/stax2-api-4.2.1.jar - ext/woodstox-core-6.2.4.jar - release/modules/ext/woodstox-core-6.2.4.jar + ext/woodstox-core-6.5.1.jar + release/modules/ext/woodstox-core-6.5.1.jar - ext/zookeeper-3.8.0.jar - release/modules/ext/zookeeper-3.8.0.jar + ext/zookeeper-3.6.2.jar + release/modules/ext/zookeeper-3.6.2.jar - ext/zookeeper-jute-3.8.0.jar - release/modules/ext/zookeeper-jute-3.8.0.jar + ext/zookeeper-jute-3.6.2.jar + release/modules/ext/zookeeper-jute-3.6.2.jar diff --git a/Tika/ivy.xml b/Tika/ivy.xml index aae3f2492b..a2d663e9c2 100755 --- a/Tika/ivy.xml +++ b/Tika/ivy.xml @@ -5,8 +5,11 @@ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 9f295600bed33d92f0c8b57a3374122114673985 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 8 Jan 2025 09:27:33 -0500 Subject: [PATCH 26/52] transitive deps update --- Core/ivy.xml | 21 ++++++++------------- CoreLibs/ivy.xml | 17 +++++------------ CoreLibs/ivysettings.xml | 1 + CoreTestLibs/ivy.xml | 3 +++ KeywordSearch/ivy.xml | 34 +++++++++++++++------------------- KeywordSearch/ivysettings.xml | 3 ++- Tika/ivy.xml | 19 +++++-------------- Tika/ivysettings.xml | 2 ++ 8 files changed, 41 insertions(+), 59 deletions(-) diff --git a/Core/ivy.xml b/Core/ivy.xml index 274d2620ca..d0eb39b50c 100644 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -30,7 +30,7 @@ - + @@ -81,19 +81,14 @@ - + + + + + + + diff --git a/CoreLibs/ivy.xml b/CoreLibs/ivy.xml index dca5ebb87e..ca1a14089c 100644 --- a/CoreLibs/ivy.xml +++ b/CoreLibs/ivy.xml @@ -130,21 +130,14 @@ - - + + - diff --git a/CoreLibs/ivysettings.xml b/CoreLibs/ivysettings.xml index 23bab824f7..d535512c6e 100644 --- a/CoreLibs/ivysettings.xml +++ b/CoreLibs/ivysettings.xml @@ -3,6 +3,7 @@ + diff --git a/CoreTestLibs/ivy.xml b/CoreTestLibs/ivy.xml index 4a8ad3cb43..ca83f300b3 100644 --- a/CoreTestLibs/ivy.xml +++ b/CoreTestLibs/ivy.xml @@ -9,5 +9,8 @@ + + + \ No newline at end of file diff --git a/KeywordSearch/ivy.xml b/KeywordSearch/ivy.xml index 374d2fa742..72036aa262 100644 --- a/KeywordSearch/ivy.xml +++ b/KeywordSearch/ivy.xml @@ -34,33 +34,29 @@ - + - - - + + diff --git a/KeywordSearch/ivysettings.xml b/KeywordSearch/ivysettings.xml index 3ee6f5cba1..9a6d79ecdc 100644 --- a/KeywordSearch/ivysettings.xml +++ b/KeywordSearch/ivysettings.xml @@ -1,7 +1,8 @@ - + + diff --git a/Tika/ivy.xml b/Tika/ivy.xml index a2d663e9c2..2c91bf3160 100755 --- a/Tika/ivy.xml +++ b/Tika/ivy.xml @@ -8,20 +8,11 @@ - - + + + + + diff --git a/Tika/ivysettings.xml b/Tika/ivysettings.xml index fd792f6844..fe242a2517 100755 --- a/Tika/ivysettings.xml +++ b/Tika/ivysettings.xml @@ -1,5 +1,7 @@ + + From 143b20794d75e2d563da0926f4bdba4132662190 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 8 Jan 2025 14:55:33 -0500 Subject: [PATCH 27/52] building; dependency check looks ok --- Core/build.xml | 2 - Core/ivy.xml | 19 +- Core/ivysettings.xml | 2 + Core/nbproject/project.properties | 58 +++--- Core/nbproject/project.xml | 112 +++++++---- .../translators/BingTranslator.java | 11 +- .../BingTranslatorSettingsPanel.java | 10 +- CoreLibs/nbproject/project.properties | 9 +- CoreLibs/nbproject/project.xml | 4 +- CoreTestLibs/nbproject/project.properties | 3 +- Experimental/nbproject/project.properties | 3 +- KeywordSearch/ivy.xml | 18 +- KeywordSearch/ivysettings.xml | 2 + KeywordSearch/nbproject/project.properties | 82 ++++---- KeywordSearch/nbproject/project.xml | 188 +++++++++++------- .../autopsy/keywordsearch/Server.java | 7 +- Tika/ivy.xml | 9 +- Tika/ivysettings.xml | 1 + Tika/nbproject/project.properties | 11 +- Tika/nbproject/project.xml | 12 +- .../nbproject/project.properties | 5 +- 21 files changed, 347 insertions(+), 221 deletions(-) diff --git a/Core/build.xml b/Core/build.xml index a18745b086..1834bb976d 100644 --- a/Core/build.xml +++ b/Core/build.xml @@ -108,8 +108,6 @@ - - diff --git a/Core/ivy.xml b/Core/ivy.xml index d0eb39b50c..148351912a 100644 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -69,6 +69,8 @@ + + @@ -82,12 +84,27 @@ + + + + + + + + + + + - + + + + + diff --git a/Core/ivysettings.xml b/Core/ivysettings.xml index 96578e6c40..d1102eaa63 100644 --- a/Core/ivysettings.xml +++ b/Core/ivysettings.xml @@ -2,6 +2,8 @@ + + diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index c59b4438b9..7408b5fb45 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -1,5 +1,11 @@ +#Wed Jan 08 19:35:29 UTC 2025 +file.reference.DatCon.jar=release/modules/ext/DatCon.jar +file.reference.Rejistry-1.1-SNAPSHOT.jar=release/modules/ext/Rejistry-1.1-SNAPSHOT.jar +file.reference.SparseBitSet-1.1.jar=release/modules/ext/SparseBitSet-1.1.jar +file.reference.YaraJNIWrapper.jar=release/modules/ext/YaraJNIWrapper.jar file.reference.activemq-all-6.1.4.jar=release/modules/ext/activemq-all-6.1.4.jar file.reference.angus-activation-2.0.2.jar=release/modules/ext/angus-activation-2.0.2.jar +file.reference.annotations-13.0.jar=release/modules/ext/annotations-13.0.jar file.reference.audience-annotations-0.12.0.jar=release/modules/ext/audience-annotations-0.12.0.jar file.reference.batik-awt-util-1.18.jar=release/modules/ext/batik-awt-util-1.18.jar file.reference.batik-constants-1.18.jar=release/modules/ext/batik-constants-1.18.jar @@ -13,26 +19,24 @@ file.reference.batik-svg-dom-1.18.jar=release/modules/ext/batik-svg-dom-1.18.jar file.reference.batik-svggen-1.18.jar=release/modules/ext/batik-svggen-1.18.jar file.reference.batik-util-1.18.jar=release/modules/ext/batik-util-1.18.jar file.reference.batik-xml-1.18.jar=release/modules/ext/batik-xml-1.18.jar -file.reference.bcpkix-jdk15on-1.54.jar=release/modules/ext/bcpkix-jdk15on-1.54.jar -file.reference.bcprov-ext-jdk15on-1.54.jar=release/modules/ext/bcprov-ext-jdk15on-1.54.jar -file.reference.bcprov-jdk15on-1.54.jar=release/modules/ext/bcprov-jdk15on-1.54.jar -file.reference.bcprov-jdk18on-1.72.jar=release/modules/ext/bcprov-jdk18on-1.72.jar +file.reference.bcpkix-jdk18on-1.79.jar=release/modules/ext/bcpkix-jdk18on-1.79.jar +file.reference.bcprov-jdk18on-1.79.jar=release/modules/ext/bcprov-jdk18on-1.79.jar +file.reference.bcutil-jdk18on-1.79.jar=release/modules/ext/bcutil-jdk18on-1.79.jar file.reference.c3p0-0.9.5.5.jar=release/modules/ext/c3p0-0.9.5.5.jar -file.reference.checker-qual-3.33.0.jar=release/modules/ext/checker-qual-3.33.0.jar +file.reference.checker-qual-3.43.0.jar=release/modules/ext/checker-qual-3.43.0.jar file.reference.commons-codec-1.11.jar=release/modules/ext/commons-codec-1.11.jar file.reference.commons-dbcp2-2.13.0.jar=release/modules/ext/commons-dbcp2-2.13.0.jar -file.reference.commons-io-2.17.0.jar=release/modules/ext/commons-io-2.17.0.jar +file.reference.commons-io-2.18.0.jar=release/modules/ext/commons-io-2.18.0.jar file.reference.commons-lang3-3.10.jar=release/modules/ext/commons-lang3-3.10.jar file.reference.commons-logging-1.3.4.jar=release/modules/ext/commons-logging-1.3.4.jar file.reference.commons-pool2-2.12.0.jar=release/modules/ext/commons-pool2-2.12.0.jar file.reference.curator-client-5.7.1.jar=release/modules/ext/curator-client-5.7.1.jar file.reference.curator-framework-5.7.1.jar=release/modules/ext/curator-framework-5.7.1.jar file.reference.curator-recipes-5.7.1.jar=release/modules/ext/curator-recipes-5.7.1.jar -file.reference.DatCon.jar=release/modules/ext/DatCon.jar file.reference.decodetect-core-0.3.jar=release/modules/ext/decodetect-core-0.3.jar -file.reference.error_prone_annotations-2.18.0.jar=release/modules/ext/error_prone_annotations-2.18.0.jar +file.reference.error_prone_annotations-2.36.0.jar=release/modules/ext/error_prone_annotations-2.36.0.jar file.reference.failureaccess-1.0.1.jar=release/modules/ext/failureaccess-1.0.1.jar -file.reference.guava-32.0.0-jre.jar=release/modules/ext/guava-32.0.0-jre.jar +file.reference.guava-33.4.0-jre.jar=release/modules/ext/guava-33.4.0-jre.jar file.reference.httpclient-4.5.14.jar=release/modules/ext/httpclient-4.5.14.jar file.reference.httpclient-win-4.5.14.jar=release/modules/ext/httpclient-win-4.5.14.jar file.reference.httpcore-4.4.16.jar=release/modules/ext/httpcore-4.4.16.jar @@ -40,14 +44,13 @@ file.reference.httpmime-4.5.14.jar=release/modules/ext/httpmime-4.5.14.jar file.reference.icepdf-core-6.2.2.jar=release/modules/ext/icepdf-core-6.2.2.jar file.reference.icepdf-viewer-6.2.2.jar=release/modules/ext/icepdf-viewer-6.2.2.jar file.reference.istack-commons-runtime-4.1.2.jar=release/modules/ext/istack-commons-runtime-4.1.2.jar -file.reference.j2objc-annotations-2.8.jar=release/modules/ext/j2objc-annotations-2.8.jar +file.reference.j2objc-annotations-3.0.0.jar=release/modules/ext/j2objc-annotations-3.0.0.jar file.reference.jackcess-4.0.7.jar=release/modules/ext/jackcess-4.0.7.jar file.reference.jackcess-encrypt-4.0.2.jar=release/modules/ext/jackcess-encrypt-4.0.2.jar file.reference.jai_core-1.1.3.jar=release/modules/ext/jai_core-1.1.3.jar file.reference.jai_imageio-1.1.jar=release/modules/ext/jai_imageio-1.1.jar file.reference.jakarta.activation-api-2.1.3.jar=release/modules/ext/jakarta.activation-api-2.1.3.jar file.reference.jakarta.annotation-api-2.1.1.jar=release/modules/ext/jakarta.annotation-api-2.1.1.jar -file.reference.jakarta.jms-api-3.1.0-javadoc.jar=release/modules/ext/jakarta.jms-api-3.1.0-javadoc.jar file.reference.jakarta.jms-api-3.1.0-sources.jar=release/modules/ext/jakarta.jms-api-3.1.0-sources.jar file.reference.jakarta.jms-api-3.1.0.jar=release/modules/ext/jakarta.jms-api-3.1.0.jar file.reference.jakarta.transaction-api-1.3.3.jar=release/modules/ext/jakarta.transaction-api-1.3.3.jar @@ -58,8 +61,9 @@ file.reference.javax.ws.rs-api-2.1.1.jar=release/modules/ext/javax.ws.rs-api-2.1 file.reference.jaxb-api-2.3.1.jar=release/modules/ext/jaxb-api-2.3.1.jar file.reference.jaxb-core-4.0.5.jar=release/modules/ext/jaxb-core-4.0.5.jar file.reference.jaxb-runtime-4.0.5.jar=release/modules/ext/jaxb-runtime-4.0.5.jar -file.reference.jdom-2.0.5-contrib.jar=release/modules/ext/jdom-2.0.5-contrib.jar -file.reference.jdom-2.0.5.jar=release/modules/ext/jdom-2.0.5.jar +file.reference.jaxen-1.2.0.jar=release/modules/ext/jaxen-1.2.0.jar +file.reference.jdom2-2.0.6.1-sources.jar=release/modules/ext/jdom2-2.0.6.1-sources.jar +file.reference.jdom2-2.0.6.1.jar=release/modules/ext/jdom2-2.0.6.1.jar file.reference.jfreechart-1.5.5.jar=release/modules/ext/jfreechart-1.5.5.jar file.reference.jgraphx-4.2.2.jar=release/modules/ext/jgraphx-4.2.2.jar file.reference.jsoup-1.18.3.jar=release/modules/ext/jsoup-1.18.3.jar @@ -67,6 +71,10 @@ file.reference.jsr305-3.0.2.jar=release/modules/ext/jsr305-3.0.2.jar file.reference.jutf7-1.0.0.jar=release/modules/ext/jutf7-1.0.0.jar file.reference.jxmapviewer2-2.8.jar=release/modules/ext/jxmapviewer2-2.8.jar file.reference.jython-standalone-2.7.4.jar=release/modules/ext/jython-standalone-2.7.4.jar +file.reference.kotlin-stdlib-1.8.21.jar=release/modules/ext/kotlin-stdlib-1.8.21.jar +file.reference.kotlin-stdlib-common-1.9.10.jar=release/modules/ext/kotlin-stdlib-common-1.9.10.jar +file.reference.kotlin-stdlib-jdk7-1.8.21.jar=release/modules/ext/kotlin-stdlib-jdk7-1.8.21.jar +file.reference.kotlin-stdlib-jdk8-1.8.21.jar=release/modules/ext/kotlin-stdlib-jdk8-1.8.21.jar file.reference.libphonenumber-8.13.52.jar=release/modules/ext/libphonenumber-8.13.52.jar file.reference.license4j-runtime-library-4.7.3.jar=release/modules/ext/license4j-runtime-library-4.7.3.jar file.reference.listenablefuture-1.0.jar=release/modules/ext/listenablefuture-1.0.jar @@ -74,40 +82,40 @@ file.reference.mchange-commons-java-0.3.0.jar=release/modules/ext/mchange-common file.reference.metadata-extractor-2.19.0.jar=release/modules/ext/metadata-extractor-2.19.0.jar file.reference.netty-buffer-4.1.113.Final.jar=release/modules/ext/netty-buffer-4.1.113.Final.jar file.reference.netty-codec-4.1.113.Final.jar=release/modules/ext/netty-codec-4.1.113.Final.jar -file.reference.netty-common-4.1.113.Final.jar=release/modules/ext/netty-common-4.1.113.Final.jar +file.reference.netty-common-4.1.116.Final.jar=release/modules/ext/netty-common-4.1.116.Final.jar file.reference.netty-handler-4.1.113.Final.jar=release/modules/ext/netty-handler-4.1.113.Final.jar file.reference.netty-resolver-4.1.113.Final.jar=release/modules/ext/netty-resolver-4.1.113.Final.jar -file.reference.netty-tcnative-boringssl-static-2.0.66.Final.jar=release/modules/ext/netty-tcnative-boringssl-static-2.0.66.Final.jar +file.reference.netty-tcnative-boringssl-static-2.0.69.Final.jar=release/modules/ext/netty-tcnative-boringssl-static-2.0.69.Final.jar file.reference.netty-tcnative-classes-2.0.66.Final.jar=release/modules/ext/netty-tcnative-classes-2.0.66.Final.jar -file.reference.netty-transport-4.1.113.Final.jar=release/modules/ext/netty-transport-4.1.113.Final.jar -file.reference.netty-transport-classes-epoll-4.1.113.Final.jar=release/modules/ext/netty-transport-classes-epoll-4.1.113.Final.jar -file.reference.netty-transport-native-epoll-4.1.113.Final-linux-x86_64.jar=release/modules/ext/netty-transport-native-epoll-4.1.113.Final-linux-x86_64.jar +file.reference.netty-transport-4.1.116.Final.jar=release/modules/ext/netty-transport-4.1.116.Final.jar +file.reference.netty-transport-classes-epoll-4.1.116.Final.jar=release/modules/ext/netty-transport-classes-epoll-4.1.116.Final.jar +file.reference.netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar=release/modules/ext/netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar file.reference.netty-transport-native-unix-common-4.1.113.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.113.Final.jar -file.reference.okhttp-2.7.5.jar=release/modules/ext/okhttp-2.7.5.jar -file.reference.okio-1.6.0.jar=release/modules/ext/okio-1.6.0.jar +file.reference.okhttp-4.12.0.jar=release/modules/ext/okhttp-4.12.0.jar +file.reference.okio-3.6.0.jar=release/modules/ext/okio-3.6.0.jar +file.reference.okio-jvm-3.6.0.jar=release/modules/ext/okio-jvm-3.6.0.jar file.reference.postgresql-42.7.3.jar=release/modules/ext/postgresql-42.7.3.jar -file.reference.Rejistry-1.1-SNAPSHOT.jar=release/modules/ext/Rejistry-1.1-SNAPSHOT.jar file.reference.sevenzipjbinding-AllPlatforms.jar=release/modules/ext/sevenzipjbinding-AllPlatforms.jar file.reference.sevenzipjbinding.jar=release/modules/ext/sevenzipjbinding.jar file.reference.sleuthkit-4.12.1.jar=release/modules/ext/sleuthkit-4.12.1.jar file.reference.sleuthkit-caseuco-4.12.1.jar=release/modules/ext/sleuthkit-caseuco-4.12.1.jar file.reference.slf4j-api-1.7.30.jar=release/modules/ext/slf4j-api-1.7.30.jar file.reference.snakeyaml-2.3.jar=release/modules/ext/snakeyaml-2.3.jar -file.reference.SparseBitSet-1.1.jar=release/modules/ext/SparseBitSet-1.1.jar file.reference.spotbugs-annotations-4.8.6.jar=release/modules/ext/spotbugs-annotations-4.8.6.jar file.reference.sqlite-jdbc-3.47.1.0.jar=release/modules/ext/sqlite-jdbc-3.47.1.0.jar file.reference.txw2-4.0.5.jar=release/modules/ext/txw2-4.0.5.jar +file.reference.xalan-2.7.3.jar=release/modules/ext/xalan-2.7.3.jar +file.reference.xercesImpl-2.12.2.jar=release/modules/ext/xercesImpl-2.12.2.jar file.reference.xml-apis-1.4.01.jar=release/modules/ext/xml-apis-1.4.01.jar file.reference.xml-apis-ext-1.3.04.jar=release/modules/ext/xml-apis-ext-1.3.04.jar file.reference.xmlgraphics-commons-2.10.jar=release/modules/ext/xmlgraphics-commons-2.10.jar file.reference.xmpcore-6.1.11.jar=release/modules/ext/xmpcore-6.1.11.jar -file.reference.YaraJNIWrapper.jar=release/modules/ext/YaraJNIWrapper.jar file.reference.zookeeper-3.9.3.jar=release/modules/ext/zookeeper-3.9.3.jar file.reference.zookeeper-jute-3.9.3.jar=release/modules/ext/zookeeper-jute-3.9.3.jar +javac.compilerargs=-Xlint -Xlint\:-serial javac.source=17 -javac.compilerargs=-Xlint -Xlint:-serial license.file=../LICENSE-2.0.txt -nbm.homepage=http://www.sleuthkit.org/ +nbm.homepage=http\://www.sleuthkit.org/ nbm.module.author=Brian Carrier nbm.needs.restart=true spec.version.base=10.25 diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index c1f7418b98..8d8e59e94e 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -377,6 +377,10 @@ ext/angus-activation-2.0.2.jar release/modules/ext/angus-activation-2.0.2.jar + + ext/annotations-13.0.jar + release/modules/ext/annotations-13.0.jar + ext/audience-annotations-0.12.0.jar release/modules/ext/audience-annotations-0.12.0.jar @@ -430,28 +434,24 @@ release/modules/ext/batik-xml-1.18.jar - ext/bcpkix-jdk15on-1.54.jar - release/modules/ext/bcpkix-jdk15on-1.54.jar + ext/bcpkix-jdk18on-1.79.jar + release/modules/ext/bcpkix-jdk18on-1.79.jar - ext/bcprov-ext-jdk15on-1.54.jar - release/modules/ext/bcprov-ext-jdk15on-1.54.jar + ext/bcprov-jdk18on-1.79.jar + release/modules/ext/bcprov-jdk18on-1.79.jar - ext/bcprov-jdk15on-1.54.jar - release/modules/ext/bcprov-jdk15on-1.54.jar - - - ext/bcprov-jdk18on-1.72.jar - release/modules/ext/bcprov-jdk18on-1.72.jar + ext/bcutil-jdk18on-1.79.jar + release/modules/ext/bcutil-jdk18on-1.79.jar ext/c3p0-0.9.5.5.jar release/modules/ext/c3p0-0.9.5.5.jar - ext/checker-qual-3.33.0.jar - release/modules/ext/checker-qual-3.33.0.jar + ext/checker-qual-3.43.0.jar + release/modules/ext/checker-qual-3.43.0.jar ext/commons-codec-1.11.jar @@ -462,8 +462,8 @@ release/modules/ext/commons-dbcp2-2.13.0.jar - ext/commons-io-2.17.0.jar - release/modules/ext/commons-io-2.17.0.jar + ext/commons-io-2.18.0.jar + release/modules/ext/commons-io-2.18.0.jar ext/commons-lang3-3.10.jar @@ -498,16 +498,16 @@ release/modules/ext/decodetect-core-0.3.jar - ext/error_prone_annotations-2.18.0.jar - release/modules/ext/error_prone_annotations-2.18.0.jar + ext/error_prone_annotations-2.36.0.jar + release/modules/ext/error_prone_annotations-2.36.0.jar ext/failureaccess-1.0.1.jar release/modules/ext/failureaccess-1.0.1.jar - ext/guava-32.0.0-jre.jar - release/modules/ext/guava-32.0.0-jre.jar + ext/guava-33.4.0-jre.jar + release/modules/ext/guava-33.4.0-jre.jar ext/httpclient-4.5.14.jar @@ -538,8 +538,8 @@ release/modules/ext/istack-commons-runtime-4.1.2.jar - ext/j2objc-annotations-2.8.jar - release/modules/ext/j2objc-annotations-2.8.jar + ext/j2objc-annotations-3.0.0.jar + release/modules/ext/j2objc-annotations-3.0.0.jar ext/jackcess-4.0.7.jar @@ -565,10 +565,6 @@ ext/jakarta.annotation-api-2.1.1.jar release/modules/ext/jakarta.annotation-api-2.1.1.jar - - ext/jakarta.jms-api-3.1.0-javadoc.jar - release/modules/ext/jakarta.jms-api-3.1.0-javadoc.jar - ext/jakarta.jms-api-3.1.0-sources.jar release/modules/ext/jakarta.jms-api-3.1.0-sources.jar @@ -610,12 +606,16 @@ release/modules/ext/jaxb-runtime-4.0.5.jar - ext/jdom-2.0.5-contrib.jar - release/modules/ext/jdom-2.0.5-contrib.jar + ext/jaxen-1.2.0.jar + release/modules/ext/jaxen-1.2.0.jar - ext/jdom-2.0.5.jar - release/modules/ext/jdom-2.0.5.jar + ext/jdom2-2.0.6.1-sources.jar + release/modules/ext/jdom2-2.0.6.1-sources.jar + + + ext/jdom2-2.0.6.1.jar + release/modules/ext/jdom2-2.0.6.1.jar ext/jfreechart-1.5.5.jar @@ -645,6 +645,22 @@ ext/jython-standalone-2.7.4.jar release/modules/ext/jython-standalone-2.7.4.jar + + ext/kotlin-stdlib-1.8.21.jar + release/modules/ext/kotlin-stdlib-1.8.21.jar + + + ext/kotlin-stdlib-common-1.9.10.jar + release/modules/ext/kotlin-stdlib-common-1.9.10.jar + + + ext/kotlin-stdlib-jdk7-1.8.21.jar + release/modules/ext/kotlin-stdlib-jdk7-1.8.21.jar + + + ext/kotlin-stdlib-jdk8-1.8.21.jar + release/modules/ext/kotlin-stdlib-jdk8-1.8.21.jar + ext/libphonenumber-8.13.52.jar release/modules/ext/libphonenumber-8.13.52.jar @@ -674,8 +690,8 @@ release/modules/ext/netty-codec-4.1.113.Final.jar - ext/netty-common-4.1.113.Final.jar - release/modules/ext/netty-common-4.1.113.Final.jar + ext/netty-common-4.1.116.Final.jar + release/modules/ext/netty-common-4.1.116.Final.jar ext/netty-handler-4.1.113.Final.jar @@ -686,36 +702,40 @@ release/modules/ext/netty-resolver-4.1.113.Final.jar - ext/netty-tcnative-boringssl-static-2.0.66.Final.jar - release/modules/ext/netty-tcnative-boringssl-static-2.0.66.Final.jar + ext/netty-tcnative-boringssl-static-2.0.69.Final.jar + release/modules/ext/netty-tcnative-boringssl-static-2.0.69.Final.jar ext/netty-tcnative-classes-2.0.66.Final.jar release/modules/ext/netty-tcnative-classes-2.0.66.Final.jar - ext/netty-transport-4.1.113.Final.jar - release/modules/ext/netty-transport-4.1.113.Final.jar + ext/netty-transport-4.1.116.Final.jar + release/modules/ext/netty-transport-4.1.116.Final.jar - ext/netty-transport-classes-epoll-4.1.113.Final.jar - release/modules/ext/netty-transport-classes-epoll-4.1.113.Final.jar + ext/netty-transport-classes-epoll-4.1.116.Final.jar + release/modules/ext/netty-transport-classes-epoll-4.1.116.Final.jar - ext/netty-transport-native-epoll-4.1.113.Final-linux-x86_64.jar - release/modules/ext/netty-transport-native-epoll-4.1.113.Final-linux-x86_64.jar + ext/netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar + release/modules/ext/netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar ext/netty-transport-native-unix-common-4.1.113.Final.jar release/modules/ext/netty-transport-native-unix-common-4.1.113.Final.jar - ext/okhttp-2.7.5.jar - release/modules/ext/okhttp-2.7.5.jar + ext/okhttp-4.12.0.jar + release/modules/ext/okhttp-4.12.0.jar - ext/okio-1.6.0.jar - release/modules/ext/okio-1.6.0.jar + ext/okio-3.6.0.jar + release/modules/ext/okio-3.6.0.jar + + + ext/okio-jvm-3.6.0.jar + release/modules/ext/okio-jvm-3.6.0.jar ext/postgresql-42.7.3.jar @@ -765,6 +785,14 @@ ext/txw2-4.0.5.jar release/modules/ext/txw2-4.0.5.jar + + ext/xalan-2.7.3.jar + release/modules/ext/xalan-2.7.3.jar + + + ext/xercesImpl-2.12.2.jar + release/modules/ext/xercesImpl-2.12.2.jar + ext/xml-apis-1.4.01.jar release/modules/ext/xml-apis-1.4.01.jar diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/translators/BingTranslator.java b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/BingTranslator.java index 574cc44313..c9ecf11a9d 100644 --- a/Core/src/org/sleuthkit/autopsy/texttranslation/translators/BingTranslator.java +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/BingTranslator.java @@ -21,13 +21,14 @@ package org.sleuthkit.autopsy.texttranslation.translators; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import com.squareup.okhttp.MediaType; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.RequestBody; -import com.squareup.okhttp.Response; + import java.io.IOException; import javax.swing.JPanel; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.coreutils.ThreadConfined; diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/translators/BingTranslatorSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/BingTranslatorSettingsPanel.java index a679dccd13..1f0cf2c9df 100644 --- a/Core/src/org/sleuthkit/autopsy/texttranslation/translators/BingTranslatorSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/BingTranslatorSettingsPanel.java @@ -22,11 +22,6 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; import com.google.gson.JsonObject; -import com.squareup.okhttp.MediaType; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.RequestBody; -import com.squareup.okhttp.Response; import java.io.IOException; import java.util.logging.Level; import org.sleuthkit.autopsy.coreutils.Logger; @@ -36,6 +31,11 @@ import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import java.awt.Desktop; import java.net.URISyntaxException; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; import org.apache.commons.lang3.StringUtils; import org.openide.util.NbBundle.Messages; diff --git a/CoreLibs/nbproject/project.properties b/CoreLibs/nbproject/project.properties index c89ce8cdb1..cef555e3b1 100644 --- a/CoreLibs/nbproject/project.properties +++ b/CoreLibs/nbproject/project.properties @@ -1,9 +1,11 @@ +#Wed Jan 08 19:35:29 UTC 2025 +file.reference.AppleJavaExtensions-1.4.jar=release/modules/ext/AppleJavaExtensions-1.4.jar +file.reference.LGoodDatePicker-11.2.1.jar=release/modules/ext/LGoodDatePicker-11.2.1.jar file.reference.animal-sniffer-annotations-1.24.jar=release/modules/ext/animal-sniffer-annotations-1.24.jar file.reference.annotations-4.1.1.4.jar=release/modules/ext/annotations-4.1.1.4.jar file.reference.ant-1.10.15.jar=release/modules/ext/ant-1.10.15.jar file.reference.ant-launcher-1.10.15.jar=release/modules/ext/ant-launcher-1.10.15.jar file.reference.api-common-2.41.0.jar=release/modules/ext/api-common-2.41.0.jar -file.reference.AppleJavaExtensions-1.4.jar=release/modules/ext/AppleJavaExtensions-1.4.jar file.reference.auto-value-annotations-1.11.0.jar=release/modules/ext/auto-value-annotations-1.11.0.jar file.reference.checker-qual-3.47.0.jar=release/modules/ext/checker-qual-3.47.0.jar file.reference.common-image-3.12.0.jar=release/modules/ext/common-image-3.12.0.jar @@ -62,7 +64,7 @@ file.reference.grpc-util-1.68.1.jar=release/modules/ext/grpc-util-1.68.1.jar file.reference.grpc-xds-1.68.1.jar=release/modules/ext/grpc-xds-1.68.1.jar file.reference.gson-2.11.0.jar=release/modules/ext/gson-2.11.0.jar file.reference.gst1-java-core-1.4.0.jar=release/modules/ext/gst1-java-core-1.4.0.jar -file.reference.guava-33.3.1-jre.jar=release/modules/ext/guava-33.3.1-jre.jar +file.reference.guava-33.4.0-jre.jar=release/modules/ext/guava-33.4.0-jre.jar file.reference.httpclient-4.5.14.jar=release/modules/ext/httpclient-4.5.14.jar file.reference.httpcore-4.4.16.jar=release/modules/ext/httpcore-4.4.16.jar file.reference.imageio-bmp-3.12.0.jar=release/modules/ext/imageio-bmp-3.12.0.jar @@ -123,7 +125,6 @@ file.reference.jna-5.16.0.jar=release/modules/ext/jna-5.16.0.jar file.reference.jna-platform-5.16.0.jar=release/modules/ext/jna-platform-5.16.0.jar file.reference.joda-time-2.13.0.jar=release/modules/ext/joda-time-2.13.0.jar file.reference.jsr305-3.0.2.jar=release/modules/ext/jsr305-3.0.2.jar -file.reference.LGoodDatePicker-11.2.1.jar=release/modules/ext/LGoodDatePicker-11.2.1.jar file.reference.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar=release/modules/ext/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar file.reference.log4j-api-2.24.3.jar=release/modules/ext/log4j-api-2.24.3.jar file.reference.log4j-core-2.24.3.jar=release/modules/ext/log4j-core-2.24.3.jar @@ -143,6 +144,6 @@ file.reference.slf4j-api-2.0.16.jar=release/modules/ext/slf4j-api-2.0.16.jar file.reference.slf4j-reload4j-2.0.16.jar=release/modules/ext/slf4j-reload4j-2.0.16.jar file.reference.threetenbp-1.7.0.jar=release/modules/ext/threetenbp-1.7.0.jar file.reference.webp-imageio-sejda-0.1.0.jar=release/modules/ext/webp-imageio-sejda-0.1.0.jar +javac.compilerargs=-Xlint -Xlint\:-serial javac.source=17 -javac.compilerargs=-Xlint -Xlint:-serial nbm.needs.restart=true diff --git a/CoreLibs/nbproject/project.xml b/CoreLibs/nbproject/project.xml index 0b2daee78f..3aefaa6d83 100644 --- a/CoreLibs/nbproject/project.xml +++ b/CoreLibs/nbproject/project.xml @@ -818,8 +818,8 @@ release/modules/ext/gst1-java-core-1.4.0.jar - ext/guava-33.3.1-jre.jar - release/modules/ext/guava-33.3.1-jre.jar + ext/guava-33.4.0-jre.jar + release/modules/ext/guava-33.4.0-jre.jar ext/httpclient-4.5.14.jar diff --git a/CoreTestLibs/nbproject/project.properties b/CoreTestLibs/nbproject/project.properties index 5830504c3e..82d59d6fa3 100644 --- a/CoreTestLibs/nbproject/project.properties +++ b/CoreTestLibs/nbproject/project.properties @@ -1,8 +1,9 @@ +#Wed Jan 08 19:28:01 UTC 2025 file.reference.byte-buddy-1.15.11.jar=release/modules/ext/byte-buddy-1.15.11.jar file.reference.byte-buddy-agent-1.15.11.jar=release/modules/ext/byte-buddy-agent-1.15.11.jar file.reference.hamcrest-core-1.3.jar=release/modules/ext/hamcrest-core-1.3.jar file.reference.junit-4.13.2.jar=release/modules/ext/junit-4.13.2.jar file.reference.mockito-core-4.8.1.jar=release/modules/ext/mockito-core-4.8.1.jar file.reference.objenesis-3.4.jar=release/modules/ext/objenesis-3.4.jar +javac.compilerargs=-Xlint -Xlint\:-serial javac.source=17 -javac.compilerargs=-Xlint -Xlint:-serial diff --git a/Experimental/nbproject/project.properties b/Experimental/nbproject/project.properties index 5f135c60e4..52c13e3bf7 100644 --- a/Experimental/nbproject/project.properties +++ b/Experimental/nbproject/project.properties @@ -1,4 +1,5 @@ +#Wed Jan 08 19:10:38 UTC 2025 file.reference.jtidy-r938.jar=release/modules/ext/jtidy-r938.jar +javac.compilerargs=-Xlint -Xlint\:-serial javac.source=17 -javac.compilerargs=-Xlint -Xlint:-serial spec.version.base=1.0 diff --git a/KeywordSearch/ivy.xml b/KeywordSearch/ivy.xml index 72036aa262..0a1d040ce5 100644 --- a/KeywordSearch/ivy.xml +++ b/KeywordSearch/ivy.xml @@ -21,7 +21,7 @@ - + @@ -30,6 +30,8 @@ + + @@ -41,9 +43,10 @@ - + + - + @@ -52,10 +55,15 @@ + - - + + + + + + diff --git a/KeywordSearch/ivysettings.xml b/KeywordSearch/ivysettings.xml index 9a6d79ecdc..8f76a6c352 100644 --- a/KeywordSearch/ivysettings.xml +++ b/KeywordSearch/ivysettings.xml @@ -2,6 +2,8 @@ + + diff --git a/KeywordSearch/nbproject/project.properties b/KeywordSearch/nbproject/project.properties index cbf856e56d..862a8772a3 100644 --- a/KeywordSearch/nbproject/project.properties +++ b/KeywordSearch/nbproject/project.properties @@ -1,48 +1,58 @@ +#Wed Jan 08 19:35:29 UTC 2025 file.reference.annotations-12.0.jar=release/modules/ext/annotations-12.0.jar -file.reference.commons-io-2.11.0.jar=release/modules/ext/commons-io-2.11.0.jar -file.reference.commons-lang-2.6.jar=release/modules/ext/commons-lang-2.6.jar +file.reference.checker-qual-3.43.0.jar=release/modules/ext/checker-qual-3.43.0.jar +file.reference.commons-codec-1.11.jar=release/modules/ext/commons-codec-1.11.jar +file.reference.commons-io-2.18.0.jar=release/modules/ext/commons-io-2.18.0.jar file.reference.commons-math3-3.6.1.jar=release/modules/ext/commons-math3-3.6.1.jar -file.reference.guava-16.0.1.jar=release/modules/ext/guava-16.0.1.jar +file.reference.error_prone_annotations-2.36.0.jar=release/modules/ext/error_prone_annotations-2.36.0.jar +file.reference.failureaccess-1.0.2.jar=release/modules/ext/failureaccess-1.0.2.jar +file.reference.guava-33.4.0-jre.jar=release/modules/ext/guava-33.4.0-jre.jar file.reference.hamcrest-core-1.3.jar=release/modules/ext/hamcrest-core-1.3.jar -file.reference.http2-client-9.4.53.v20231009.jar=release/modules/ext/http2-client-9.4.53.v20231009.jar -file.reference.http2-common-9.4.53.v20231009.jar=release/modules/ext/http2-common-9.4.53.v20231009.jar -file.reference.http2-hpack-9.4.53.v20231009.jar=release/modules/ext/http2-hpack-9.4.53.v20231009.jar -file.reference.http2-http-client-transport-9.4.53.v20231009.jar=release/modules/ext/http2-http-client-transport-9.4.53.v20231009.jar -file.reference.httpclient-4.5.13.jar=release/modules/ext/httpclient-4.5.13.jar -file.reference.httpcore-4.4.14.jar=release/modules/ext/httpcore-4.4.14.jar -file.reference.httpmime-4.5.13.jar=release/modules/ext/httpmime-4.5.13.jar +file.reference.httpclient-4.5.14.jar=release/modules/ext/httpclient-4.5.14.jar +file.reference.httpcore-4.4.16.jar=release/modules/ext/httpcore-4.4.16.jar +file.reference.httpmime-4.5.14.jar=release/modules/ext/httpmime-4.5.14.jar file.reference.icu4j-76.1.jar=release/modules/ext/icu4j-76.1.jar -file.reference.jcl-over-slf4j-1.7.36.jar=release/modules/ext/jcl-over-slf4j-1.7.36.jar -file.reference.jetty-alpn-client-9.4.53.v20231009.jar=release/modules/ext/jetty-alpn-client-9.4.53.v20231009.jar -file.reference.jetty-alpn-java-client-9.4.53.v20231009.jar=release/modules/ext/jetty-alpn-java-client-9.4.53.v20231009.jar -file.reference.jetty-client-9.4.53.v20231009.jar=release/modules/ext/jetty-client-9.4.53.v20231009.jar -file.reference.jetty-http-9.4.53.v20231009.jar=release/modules/ext/jetty-http-9.4.53.v20231009.jar -file.reference.jetty-io-9.4.53.v20231009.jar=release/modules/ext/jetty-io-9.4.53.v20231009.jar -file.reference.jetty-util-9.4.53.v20231009.jar=release/modules/ext/jetty-util-9.4.53.v20231009.jar +file.reference.j2objc-annotations-3.0.0.jar=release/modules/ext/j2objc-annotations-3.0.0.jar +file.reference.jackson-annotations-2.17.2.jar=release/modules/ext/jackson-annotations-2.17.2.jar +file.reference.jackson-core-2.17.2.jar=release/modules/ext/jackson-core-2.17.2.jar +file.reference.jackson-databind-2.17.2.jar=release/modules/ext/jackson-databind-2.17.2.jar +file.reference.jakarta.ws.rs-api-3.1.0.jar=release/modules/ext/jakarta.ws.rs-api-3.1.0.jar +file.reference.jcl-over-slf4j-2.0.13.jar=release/modules/ext/jcl-over-slf4j-2.0.13.jar +file.reference.jetty-alpn-client-10.0.22.jar=release/modules/ext/jetty-alpn-client-10.0.22.jar +file.reference.jetty-alpn-java-client-10.0.22.jar=release/modules/ext/jetty-alpn-java-client-10.0.22.jar +file.reference.jetty-client-10.0.22.jar=release/modules/ext/jetty-client-10.0.22.jar +file.reference.jetty-http-10.0.22.jar=release/modules/ext/jetty-http-10.0.22.jar +file.reference.jetty-io-10.0.22.jar=release/modules/ext/jetty-io-10.0.22.jar +file.reference.jetty-util-10.0.22.jar=release/modules/ext/jetty-util-10.0.22.jar file.reference.jsonic-1.2.11.jar=release/modules/ext/jsonic-1.2.11.jar +file.reference.jsr305-3.0.2.jar=release/modules/ext/jsr305-3.0.2.jar file.reference.junit-4.13.2.jar=release/modules/ext/junit-4.13.2.jar file.reference.language-detector-0.6.jar=release/modules/ext/language-detector-0.6.jar +file.reference.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar=release/modules/ext/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar file.reference.lucene-core-9.12.1.jar=release/modules/ext/lucene-core-9.12.1.jar -file.reference.netty-buffer-4.1.99.Final.jar=release/modules/ext/netty-buffer-4.1.99.Final.jar -file.reference.netty-codec-4.1.99.Final.jar=release/modules/ext/netty-codec-4.1.99.Final.jar -file.reference.netty-common-4.1.99.Final.jar=release/modules/ext/netty-common-4.1.99.Final.jar -file.reference.netty-handler-4.1.99.Final.jar=release/modules/ext/netty-handler-4.1.99.Final.jar -file.reference.netty-resolver-4.1.99.Final.jar=release/modules/ext/netty-resolver-4.1.99.Final.jar -file.reference.netty-transport-4.1.99.Final.jar=release/modules/ext/netty-transport-4.1.99.Final.jar -file.reference.netty-transport-classes-epoll-4.1.99.Final.jar=release/modules/ext/netty-transport-classes-epoll-4.1.99.Final.jar -file.reference.netty-transport-native-epoll-4.1.99.Final.jar=release/modules/ext/netty-transport-native-epoll-4.1.99.Final.jar -file.reference.netty-transport-native-unix-common-4.1.99.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.99.Final.jar -file.reference.slf4j-api-1.7.36.jar=release/modules/ext/slf4j-api-1.7.36.jar -file.reference.snappy-java-1.1.10.1.jar=release/modules/ext/snappy-java-1.1.10.1.jar -file.reference.solr-solrj-8.11.4.jar=release/modules/ext/solr-solrj-8.11.4.jar -file.reference.stax-api-1.0.1.jar=release/modules/ext/stax-api-1.0.1.jar -file.reference.stax2-api-4.2.1.jar=release/modules/ext/stax2-api-4.2.1.jar -file.reference.woodstox-core-6.5.1.jar=release/modules/ext/woodstox-core-6.5.1.jar -file.reference.zookeeper-3.6.2.jar=release/modules/ext/zookeeper-3.6.2.jar -file.reference.zookeeper-jute-3.6.2.jar=release/modules/ext/zookeeper-jute-3.6.2.jar +file.reference.netty-buffer-4.1.113.Final.jar=release/modules/ext/netty-buffer-4.1.113.Final.jar +file.reference.netty-codec-4.1.113.Final.jar=release/modules/ext/netty-codec-4.1.113.Final.jar +file.reference.netty-common-4.1.116.Final.jar=release/modules/ext/netty-common-4.1.116.Final.jar +file.reference.netty-handler-4.1.113.Final.jar=release/modules/ext/netty-handler-4.1.113.Final.jar +file.reference.netty-resolver-4.1.113.Final.jar=release/modules/ext/netty-resolver-4.1.113.Final.jar +file.reference.netty-tcnative-boringssl-static-2.0.66.Final.jar=release/modules/ext/netty-tcnative-boringssl-static-2.0.66.Final.jar +file.reference.netty-tcnative-classes-2.0.66.Final.jar=release/modules/ext/netty-tcnative-classes-2.0.66.Final.jar +file.reference.netty-transport-4.1.116.Final.jar=release/modules/ext/netty-transport-4.1.116.Final.jar +file.reference.netty-transport-classes-epoll-4.1.116.Final.jar=release/modules/ext/netty-transport-classes-epoll-4.1.116.Final.jar +file.reference.netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar=release/modules/ext/netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar +file.reference.netty-transport-native-unix-common-4.1.113.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.113.Final.jar +file.reference.semver4j-5.3.0.jar=release/modules/ext/semver4j-5.3.0.jar +file.reference.slf4j-api-2.0.13.jar=release/modules/ext/slf4j-api-2.0.13.jar +file.reference.solr-api-9.7.0.jar=release/modules/ext/solr-api-9.7.0.jar +file.reference.solr-solrj-9.7.0.jar=release/modules/ext/solr-solrj-9.7.0.jar +file.reference.solr-solrj-streaming-9.7.0.jar=release/modules/ext/solr-solrj-streaming-9.7.0.jar +file.reference.solr-solrj-zookeeper-9.7.0.jar=release/modules/ext/solr-solrj-zookeeper-9.7.0.jar +file.reference.swagger-annotations-jakarta-2.2.22.jar=release/modules/ext/swagger-annotations-jakarta-2.2.22.jar +file.reference.zookeeper-3.9.3.jar=release/modules/ext/zookeeper-3.9.3.jar +file.reference.zookeeper-jute-3.9.3.jar=release/modules/ext/zookeeper-jute-3.9.3.jar +javac.compilerargs=-Xlint -Xlint\:-serial javac.source=17 -javac.compilerargs=-Xlint -Xlint:-serial license.file=../LICENSE-2.0.txt -nbm.homepage=http://www.sleuthkit.org/autopsy/ +nbm.homepage=http\://www.sleuthkit.org/autopsy/ nbm.needs.restart=true spec.version.base=6.7 diff --git a/KeywordSearch/nbproject/project.xml b/KeywordSearch/nbproject/project.xml index 40466c4b5f..c557bcd310 100644 --- a/KeywordSearch/nbproject/project.xml +++ b/KeywordSearch/nbproject/project.xml @@ -239,89 +239,109 @@ release/modules/ext/annotations-12.0.jar - ext/commons-io-2.11.0.jar - release/modules/ext/commons-io-2.11.0.jar + ext/checker-qual-3.43.0.jar + release/modules/ext/checker-qual-3.43.0.jar - ext/commons-lang-2.6.jar - release/modules/ext/commons-lang-2.6.jar + ext/commons-codec-1.11.jar + release/modules/ext/commons-codec-1.11.jar + + + ext/commons-io-2.18.0.jar + release/modules/ext/commons-io-2.18.0.jar ext/commons-math3-3.6.1.jar release/modules/ext/commons-math3-3.6.1.jar - ext/guava-16.0.1.jar - release/modules/ext/guava-16.0.1.jar + ext/error_prone_annotations-2.36.0.jar + release/modules/ext/error_prone_annotations-2.36.0.jar + + + ext/failureaccess-1.0.2.jar + release/modules/ext/failureaccess-1.0.2.jar + + + ext/guava-33.4.0-jre.jar + release/modules/ext/guava-33.4.0-jre.jar ext/hamcrest-core-1.3.jar release/modules/ext/hamcrest-core-1.3.jar - ext/http2-client-9.4.53.v20231009.jar - release/modules/ext/http2-client-9.4.53.v20231009.jar + ext/httpclient-4.5.14.jar + release/modules/ext/httpclient-4.5.14.jar - ext/http2-common-9.4.53.v20231009.jar - release/modules/ext/http2-common-9.4.53.v20231009.jar + ext/httpcore-4.4.16.jar + release/modules/ext/httpcore-4.4.16.jar - ext/http2-hpack-9.4.53.v20231009.jar - release/modules/ext/http2-hpack-9.4.53.v20231009.jar - - - ext/http2-http-client-transport-9.4.53.v20231009.jar - release/modules/ext/http2-http-client-transport-9.4.53.v20231009.jar - - - ext/httpclient-4.5.13.jar - release/modules/ext/httpclient-4.5.13.jar - - - ext/httpcore-4.4.14.jar - release/modules/ext/httpcore-4.4.14.jar - - - ext/httpmime-4.5.13.jar - release/modules/ext/httpmime-4.5.13.jar + ext/httpmime-4.5.14.jar + release/modules/ext/httpmime-4.5.14.jar ext/icu4j-76.1.jar release/modules/ext/icu4j-76.1.jar - ext/jcl-over-slf4j-1.7.36.jar - release/modules/ext/jcl-over-slf4j-1.7.36.jar + ext/j2objc-annotations-3.0.0.jar + release/modules/ext/j2objc-annotations-3.0.0.jar - ext/jetty-alpn-client-9.4.53.v20231009.jar - release/modules/ext/jetty-alpn-client-9.4.53.v20231009.jar + ext/jackson-annotations-2.17.2.jar + release/modules/ext/jackson-annotations-2.17.2.jar - ext/jetty-alpn-java-client-9.4.53.v20231009.jar - release/modules/ext/jetty-alpn-java-client-9.4.53.v20231009.jar + ext/jackson-core-2.17.2.jar + release/modules/ext/jackson-core-2.17.2.jar - ext/jetty-client-9.4.53.v20231009.jar - release/modules/ext/jetty-client-9.4.53.v20231009.jar + ext/jackson-databind-2.17.2.jar + release/modules/ext/jackson-databind-2.17.2.jar - ext/jetty-http-9.4.53.v20231009.jar - release/modules/ext/jetty-http-9.4.53.v20231009.jar + ext/jakarta.ws.rs-api-3.1.0.jar + release/modules/ext/jakarta.ws.rs-api-3.1.0.jar - ext/jetty-io-9.4.53.v20231009.jar - release/modules/ext/jetty-io-9.4.53.v20231009.jar + ext/jcl-over-slf4j-2.0.13.jar + release/modules/ext/jcl-over-slf4j-2.0.13.jar - ext/jetty-util-9.4.53.v20231009.jar - release/modules/ext/jetty-util-9.4.53.v20231009.jar + ext/jetty-alpn-client-10.0.22.jar + release/modules/ext/jetty-alpn-client-10.0.22.jar + + + ext/jetty-alpn-java-client-10.0.22.jar + release/modules/ext/jetty-alpn-java-client-10.0.22.jar + + + ext/jetty-client-10.0.22.jar + release/modules/ext/jetty-client-10.0.22.jar + + + ext/jetty-http-10.0.22.jar + release/modules/ext/jetty-http-10.0.22.jar + + + ext/jetty-io-10.0.22.jar + release/modules/ext/jetty-io-10.0.22.jar + + + ext/jetty-util-10.0.22.jar + release/modules/ext/jetty-util-10.0.22.jar ext/jsonic-1.2.11.jar release/modules/ext/jsonic-1.2.11.jar + + ext/jsr305-3.0.2.jar + release/modules/ext/jsr305-3.0.2.jar + ext/junit-4.13.2.jar release/modules/ext/junit-4.13.2.jar @@ -330,77 +350,93 @@ ext/language-detector-0.6.jar release/modules/ext/language-detector-0.6.jar + + ext/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar + release/modules/ext/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar + ext/lucene-core-9.12.1.jar release/modules/ext/lucene-core-9.12.1.jar - ext/netty-buffer-4.1.99.Final.jar - release/modules/ext/netty-buffer-4.1.99.Final.jar + ext/netty-buffer-4.1.113.Final.jar + release/modules/ext/netty-buffer-4.1.113.Final.jar - ext/netty-codec-4.1.99.Final.jar - release/modules/ext/netty-codec-4.1.99.Final.jar + ext/netty-codec-4.1.113.Final.jar + release/modules/ext/netty-codec-4.1.113.Final.jar - ext/netty-common-4.1.99.Final.jar - release/modules/ext/netty-common-4.1.99.Final.jar + ext/netty-common-4.1.116.Final.jar + release/modules/ext/netty-common-4.1.116.Final.jar - ext/netty-handler-4.1.99.Final.jar - release/modules/ext/netty-handler-4.1.99.Final.jar + ext/netty-handler-4.1.113.Final.jar + release/modules/ext/netty-handler-4.1.113.Final.jar - ext/netty-resolver-4.1.99.Final.jar - release/modules/ext/netty-resolver-4.1.99.Final.jar + ext/netty-resolver-4.1.113.Final.jar + release/modules/ext/netty-resolver-4.1.113.Final.jar - ext/netty-transport-4.1.99.Final.jar - release/modules/ext/netty-transport-4.1.99.Final.jar + ext/netty-tcnative-boringssl-static-2.0.66.Final.jar + release/modules/ext/netty-tcnative-boringssl-static-2.0.66.Final.jar - ext/netty-transport-classes-epoll-4.1.99.Final.jar - release/modules/ext/netty-transport-classes-epoll-4.1.99.Final.jar + ext/netty-tcnative-classes-2.0.66.Final.jar + release/modules/ext/netty-tcnative-classes-2.0.66.Final.jar - ext/netty-transport-native-epoll-4.1.99.Final.jar - release/modules/ext/netty-transport-native-epoll-4.1.99.Final.jar + ext/netty-transport-4.1.116.Final.jar + release/modules/ext/netty-transport-4.1.116.Final.jar - ext/netty-transport-native-unix-common-4.1.99.Final.jar - release/modules/ext/netty-transport-native-unix-common-4.1.99.Final.jar + ext/netty-transport-classes-epoll-4.1.116.Final.jar + release/modules/ext/netty-transport-classes-epoll-4.1.116.Final.jar - ext/slf4j-api-1.7.36.jar - release/modules/ext/slf4j-api-1.7.36.jar + ext/netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar + release/modules/ext/netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar - ext/snappy-java-1.1.10.1.jar - release/modules/ext/snappy-java-1.1.10.1.jar + ext/netty-transport-native-unix-common-4.1.113.Final.jar + release/modules/ext/netty-transport-native-unix-common-4.1.113.Final.jar - ext/solr-solrj-8.11.4.jar - release/modules/ext/solr-solrj-8.11.4.jar + ext/semver4j-5.3.0.jar + release/modules/ext/semver4j-5.3.0.jar - ext/stax-api-1.0.1.jar - release/modules/ext/stax-api-1.0.1.jar + ext/slf4j-api-2.0.13.jar + release/modules/ext/slf4j-api-2.0.13.jar - ext/stax2-api-4.2.1.jar - release/modules/ext/stax2-api-4.2.1.jar + ext/solr-api-9.7.0.jar + release/modules/ext/solr-api-9.7.0.jar - ext/woodstox-core-6.5.1.jar - release/modules/ext/woodstox-core-6.5.1.jar + ext/solr-solrj-9.7.0.jar + release/modules/ext/solr-solrj-9.7.0.jar - ext/zookeeper-3.6.2.jar - release/modules/ext/zookeeper-3.6.2.jar + ext/solr-solrj-streaming-9.7.0.jar + release/modules/ext/solr-solrj-streaming-9.7.0.jar - ext/zookeeper-jute-3.6.2.jar - release/modules/ext/zookeeper-jute-3.6.2.jar + ext/solr-solrj-zookeeper-9.7.0.jar + release/modules/ext/solr-solrj-zookeeper-9.7.0.jar + + + ext/swagger-annotations-jakarta-2.2.22.jar + release/modules/ext/swagger-annotations-jakarta-2.2.22.jar + + + ext/zookeeper-3.9.3.jar + release/modules/ext/zookeeper-3.9.3.jar + + + ext/zookeeper-jute-3.9.3.jar + release/modules/ext/zookeeper-jute-3.9.3.jar diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index b918a81054..9786bbd2c2 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -71,6 +71,7 @@ import org.apache.solr.client.solrj.response.CollectionAdminResponse; import org.apache.solr.client.solrj.request.CoreAdminRequest; import org.apache.solr.client.solrj.response.CoreAdminResponse; import org.apache.solr.client.solrj.impl.BaseHttpSolrClient.RemoteSolrException; +import org.apache.solr.client.solrj.impl.Http2SolrClient; import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.TermsResponse; @@ -393,8 +394,10 @@ public class Server { logger.log(Level.INFO, "Creating new CloudSolrClient"); //NON-NLS int connectionTimeoutMs = org.sleuthkit.autopsy.keywordsearch.UserPreferences.getConnectionTimeout(); CloudSolrClient client = new CloudSolrClient.Builder(solrUrls) - .withConnectionTimeout(connectionTimeoutMs) - .withSocketTimeout(connectionTimeoutMs) + .withInternalClientBuilder(new Http2SolrClient.Builder() + .withConnectionTimeout(connectionTimeoutMs, TimeUnit.MILLISECONDS) + .withRequestTimeout(connectionTimeoutMs, TimeUnit.MILLISECONDS) + ) .withResponseParser(new XMLResponseParser()) .build(); if (!defaultCollectionName.isEmpty()) { diff --git a/Tika/ivy.xml b/Tika/ivy.xml index 2c91bf3160..7119a8cf4c 100755 --- a/Tika/ivy.xml +++ b/Tika/ivy.xml @@ -9,10 +9,17 @@ + + + + + - + + + diff --git a/Tika/ivysettings.xml b/Tika/ivysettings.xml index fe242a2517..1d48bc03b3 100755 --- a/Tika/ivysettings.xml +++ b/Tika/ivysettings.xml @@ -1,6 +1,7 @@ + diff --git a/Tika/nbproject/project.properties b/Tika/nbproject/project.properties index c5c97ab18a..fa82da1fbc 100755 --- a/Tika/nbproject/project.properties +++ b/Tika/nbproject/project.properties @@ -1,10 +1,12 @@ +#Wed Jan 08 19:35:29 UTC 2025 +file.reference.SparseBitSet-1.3.jar=release/modules/ext/SparseBitSet-1.3.jar file.reference.angus-activation-2.0.2.jar=release/modules/ext/angus-activation-2.0.2.jar file.reference.apache-mime4j-core-0.8.11.jar=release/modules/ext/apache-mime4j-core-0.8.11.jar file.reference.apache-mime4j-dom-0.8.11.jar=release/modules/ext/apache-mime4j-dom-0.8.11.jar file.reference.asm-9.7.1.jar=release/modules/ext/asm-9.7.1.jar file.reference.bcjmail-jdk18on-1.78.1.jar=release/modules/ext/bcjmail-jdk18on-1.78.1.jar -file.reference.bcpkix-jdk18on-1.78.1.jar=release/modules/ext/bcpkix-jdk18on-1.78.1.jar -file.reference.bcprov-jdk18on-1.78.1.jar=release/modules/ext/bcprov-jdk18on-1.78.1.jar +file.reference.bcpkix-jdk18on-1.79.jar=release/modules/ext/bcpkix-jdk18on-1.79.jar +file.reference.bcprov-jdk18on-1.79.jar=release/modules/ext/bcprov-jdk18on-1.79.jar file.reference.bcutil-jdk18on-1.78.1.jar=release/modules/ext/bcutil-jdk18on-1.78.1.jar file.reference.commons-codec-1.17.1.jar=release/modules/ext/commons-codec-1.17.1.jar file.reference.commons-collections4-4.4.jar=release/modules/ext/commons-collections4-4.4.jar @@ -41,7 +43,7 @@ file.reference.jsoup-1.18.1.jar=release/modules/ext/jsoup-1.18.1.jar file.reference.juniversalchardet-2.5.0.jar=release/modules/ext/juniversalchardet-2.5.0.jar file.reference.junrar-7.5.5.jar=release/modules/ext/junrar-7.5.5.jar file.reference.jwarc-0.30.0.jar=release/modules/ext/jwarc-0.30.0.jar -file.reference.log4j-api-2.24.1.jar=release/modules/ext/log4j-api-2.24.1.jar +file.reference.log4j-api-2.24.3.jar=release/modules/ext/log4j-api-2.24.3.jar file.reference.metadata-extractor-2.19.0.jar=release/modules/ext/metadata-extractor-2.19.0.jar file.reference.ooxml-schemas-1.4.jar=release/modules/ext/ooxml-schemas-1.4.jar file.reference.parso-2.0.14.jar=release/modules/ext/parso-2.0.14.jar @@ -56,7 +58,6 @@ file.reference.poi-scratchpad-5.3.0.jar=release/modules/ext/poi-scratchpad-5.3.0 file.reference.rome-2.1.0.jar=release/modules/ext/rome-2.1.0.jar file.reference.rome-utils-2.1.0.jar=release/modules/ext/rome-utils-2.1.0.jar file.reference.slf4j-api-2.0.16.jar=release/modules/ext/slf4j-api-2.0.16.jar -file.reference.SparseBitSet-1.3.jar=release/modules/ext/SparseBitSet-1.3.jar file.reference.tagsoup-1.2.1.jar=release/modules/ext/tagsoup-1.2.1.jar file.reference.tika-core-3.0.0.jar=release/modules/ext/tika-core-3.0.0.jar file.reference.tika-parser-apple-module-3.0.0.jar=release/modules/ext/tika-parser-apple-module-3.0.0.jar @@ -89,5 +90,5 @@ file.reference.xmlbeans-5.2.1.jar=release/modules/ext/xmlbeans-5.2.1.jar file.reference.xmpbox-3.0.3.jar=release/modules/ext/xmpbox-3.0.3.jar file.reference.xmpcore-6.1.11.jar=release/modules/ext/xmpcore-6.1.11.jar file.reference.xz-1.10.jar=release/modules/ext/xz-1.10.jar +javac.compilerargs=-Xlint -Xlint\:-serial javac.source=17 -javac.compilerargs=-Xlint -Xlint:-serial diff --git a/Tika/nbproject/project.xml b/Tika/nbproject/project.xml index d21d8835df..d1a22b74a8 100755 --- a/Tika/nbproject/project.xml +++ b/Tika/nbproject/project.xml @@ -376,12 +376,12 @@ release/modules/ext/bcjmail-jdk18on-1.78.1.jar - ext/bcpkix-jdk18on-1.78.1.jar - release/modules/ext/bcpkix-jdk18on-1.78.1.jar + ext/bcpkix-jdk18on-1.79.jar + release/modules/ext/bcpkix-jdk18on-1.79.jar - ext/bcprov-jdk18on-1.78.1.jar - release/modules/ext/bcprov-jdk18on-1.78.1.jar + ext/bcprov-jdk18on-1.79.jar + release/modules/ext/bcprov-jdk18on-1.79.jar ext/bcutil-jdk18on-1.78.1.jar @@ -528,8 +528,8 @@ release/modules/ext/jwarc-0.30.0.jar - ext/log4j-api-2.24.1.jar - release/modules/ext/log4j-api-2.24.1.jar + ext/log4j-api-2.24.3.jar + release/modules/ext/log4j-api-2.24.3.jar ext/metadata-extractor-2.19.0.jar diff --git a/thunderbirdparser/nbproject/project.properties b/thunderbirdparser/nbproject/project.properties index 94544bb70f..e162ffa946 100644 --- a/thunderbirdparser/nbproject/project.properties +++ b/thunderbirdparser/nbproject/project.properties @@ -1,3 +1,4 @@ +#Wed Jan 08 19:10:39 UTC 2025 file.reference.apache-mime4j-mbox-iterator-0.8.11.jar=release/modules/ext/apache-mime4j-mbox-iterator-0.8.11.jar file.reference.ez-vcard-0.12.1.jar=release/modules/ext/ez-vcard-0.12.1.jar file.reference.freemarker-2.3.32.jar=release/modules/ext/freemarker-2.3.32.jar @@ -5,9 +6,9 @@ file.reference.jackson-core-2.15.2.jar=release/modules/ext/jackson-core-2.15.2.j file.reference.java-libpst-0.9.5-SNAPSHOT.jar=release/modules/ext/java-libpst-0.9.5-SNAPSHOT.jar file.reference.jsoup-1.16.1.jar=release/modules/ext/jsoup-1.16.1.jar file.reference.vinnie-2.0.2.jar=release/modules/ext/vinnie-2.0.2.jar +javac.compilerargs=-Xlint -Xlint\:-serial javac.source=17 -javac.compilerargs=-Xlint -Xlint:-serial license.file=../LICENSE-2.0.txt -nbm.homepage=http://www.sleuthkit.org/autopsy/ +nbm.homepage=http\://www.sleuthkit.org/autopsy/ nbm.needs.restart=true spec.version.base=4.0 From cfd3c4e28c98f81601fe24920c5d171e286d6c38 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 8 Jan 2025 15:28:32 -0500 Subject: [PATCH 28/52] update --- .../textextractors/TikaTextExtractor.java | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/textextractors/TikaTextExtractor.java b/Core/src/org/sleuthkit/autopsy/textextractors/TikaTextExtractor.java index 0d7d4b9a0f..74080e2fc4 100644 --- a/Core/src/org/sleuthkit/autopsy/textextractors/TikaTextExtractor.java +++ b/Core/src/org/sleuthkit/autopsy/textextractors/TikaTextExtractor.java @@ -49,7 +49,6 @@ import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.parser.ParsingReader; import org.apache.tika.parser.microsoft.OfficeParserConfig; -import org.apache.tika.parser.ocr.TesseractOCRConfig; import org.apache.tika.parser.pdf.PDFParserConfig; import org.openide.util.NbBundle; import org.openide.modules.InstalledFileLocator; @@ -77,6 +76,7 @@ import java.util.ArrayList; import java.util.Set; import org.apache.tika.config.TikaConfig; import org.apache.tika.mime.MimeTypes; +import org.apache.tika.parser.ocr.TesseractOCRConfig; import org.apache.tika.parser.pdf.PDFParserConfig.OCR_STRATEGY; import org.sleuthkit.autopsy.coreutils.ExecUtil.HybridTerminator; import org.sleuthkit.autopsy.modules.filetypeid.FileTypeDetector; @@ -283,7 +283,12 @@ final class TikaTextExtractor implements TextExtractor { if (isOcrSupported()) { // Configure OCR for Tika if it chooses to run OCR // during extraction - TesseractOCRConfig ocrConfig = getTesseractConfig(); + TesseractOCRConfig ocrConfig = new TesseractOCRConfig(); + String tesseractFolder = TESSERACT_PATH.getParent(); + // coming from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=109454096#TikaOCR-OverridingDefaultConfiguration + ocrConfig.getOtherTesseractConfig().put("tessdataPath", PlatformUtil.getOcrLanguagePacksPath()); + ocrConfig.getOtherTesseractConfig().put("tesseractPath", tesseractFolder); + ocrConfig.setLanguage(languagePacks); parseContext.set(TesseractOCRConfig.class, ocrConfig); // Configure how Tika handles OCRing PDFs @@ -344,16 +349,6 @@ final class TikaTextExtractor implements TextExtractor { future.cancel(true); } } - - private TesseractOCRConfig getTesseractConfig() { - // GVDTODO look at this: https://tika.apache.org/3.0.0/configuring.html - - // String tesseractFolder = TESSERACT_PATH.getParent(); - // ocrConfig.setTesseractPath(tesseractFolder); - // ocrConfig.setLanguage(languagePacks); - // ocrConfig.setTessdataPath(PlatformUtil.getOcrLanguagePacksPath()); - return null; - } /** * Run OCR and return the file stream produced by Tesseract. From 65865adbde6a8cb254b24141ca7ae4e39952df99 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 8 Jan 2025 17:39:44 -0500 Subject: [PATCH 29/52] preliminary cleanup --- Core/nbproject/project.properties | 1 - CoreLibs/build.xml | 8 +- CoreLibs/nbproject/project.properties | 57 ++++++----- CoreLibs/nbproject/project.xml | 112 ++++++++++----------- KeywordSearch/nbproject/project.properties | 1 - Tika/nbproject/project.properties | 1 - 6 files changed, 91 insertions(+), 89 deletions(-) diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index 7408b5fb45..e3328807ef 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -1,4 +1,3 @@ -#Wed Jan 08 19:35:29 UTC 2025 file.reference.DatCon.jar=release/modules/ext/DatCon.jar file.reference.Rejistry-1.1-SNAPSHOT.jar=release/modules/ext/Rejistry-1.1-SNAPSHOT.jar file.reference.SparseBitSet-1.1.jar=release/modules/ext/SparseBitSet-1.1.jar diff --git a/CoreLibs/build.xml b/CoreLibs/build.xml index 57ab10853e..fa12044bd3 100644 --- a/CoreLibs/build.xml +++ b/CoreLibs/build.xml @@ -40,7 +40,13 @@ - + + + + + + + diff --git a/CoreLibs/nbproject/project.properties b/CoreLibs/nbproject/project.properties index cef555e3b1..8eca83e503 100644 --- a/CoreLibs/nbproject/project.properties +++ b/CoreLibs/nbproject/project.properties @@ -1,4 +1,3 @@ -#Wed Jan 08 19:35:29 UTC 2025 file.reference.AppleJavaExtensions-1.4.jar=release/modules/ext/AppleJavaExtensions-1.4.jar file.reference.LGoodDatePicker-11.2.1.jar=release/modules/ext/LGoodDatePicker-11.2.1.jar file.reference.animal-sniffer-annotations-1.24.jar=release/modules/ext/animal-sniffer-annotations-1.24.jar @@ -88,34 +87,34 @@ file.reference.jackson-core-2.18.2.jar=release/modules/ext/jackson-core-2.18.2.j file.reference.jackson-databind-2.18.2.jar=release/modules/ext/jackson-databind-2.18.2.jar file.reference.jackson-dataformat-csv-2.18.2.jar=release/modules/ext/jackson-dataformat-csv-2.18.2.jar file.reference.jackson-datatype-jsr310-2.18.2.jar=release/modules/ext/jackson-datatype-jsr310-2.18.2.jar -file.reference.javafx-base-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-base-17.0.14-ea+2-linux.jar -file.reference.javafx-base-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-base-17.0.14-ea+2-mac.jar -file.reference.javafx-base-17.0.14-ea+2-win.jar=release/modules/ext/javafx-base-17.0.14-ea+2-win.jar -file.reference.javafx-base-17.0.14-ea+2.jar=release/modules/ext/javafx-base-17.0.14-ea+2.jar -file.reference.javafx-controls-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-controls-17.0.14-ea+2-linux.jar -file.reference.javafx-controls-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-controls-17.0.14-ea+2-mac.jar -file.reference.javafx-controls-17.0.14-ea+2-win.jar=release/modules/ext/javafx-controls-17.0.14-ea+2-win.jar -file.reference.javafx-controls-17.0.14-ea+2.jar=release/modules/ext/javafx-controls-17.0.14-ea+2.jar -file.reference.javafx-fxml-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-fxml-17.0.14-ea+2-linux.jar -file.reference.javafx-fxml-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-fxml-17.0.14-ea+2-mac.jar -file.reference.javafx-fxml-17.0.14-ea+2-win.jar=release/modules/ext/javafx-fxml-17.0.14-ea+2-win.jar -file.reference.javafx-fxml-17.0.14-ea+2.jar=release/modules/ext/javafx-fxml-17.0.14-ea+2.jar -file.reference.javafx-graphics-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-graphics-17.0.14-ea+2-linux.jar -file.reference.javafx-graphics-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-graphics-17.0.14-ea+2-mac.jar -file.reference.javafx-graphics-17.0.14-ea+2-win.jar=release/modules/ext/javafx-graphics-17.0.14-ea+2-win.jar -file.reference.javafx-graphics-17.0.14-ea+2.jar=release/modules/ext/javafx-graphics-17.0.14-ea+2.jar -file.reference.javafx-media-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-media-17.0.14-ea+2-linux.jar -file.reference.javafx-media-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-media-17.0.14-ea+2-mac.jar -file.reference.javafx-media-17.0.14-ea+2-win.jar=release/modules/ext/javafx-media-17.0.14-ea+2-win.jar -file.reference.javafx-media-17.0.14-ea+2.jar=release/modules/ext/javafx-media-17.0.14-ea+2.jar -file.reference.javafx-swing-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-swing-17.0.14-ea+2-linux.jar -file.reference.javafx-swing-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-swing-17.0.14-ea+2-mac.jar -file.reference.javafx-swing-17.0.14-ea+2-win.jar=release/modules/ext/javafx-swing-17.0.14-ea+2-win.jar -file.reference.javafx-swing-17.0.14-ea+2.jar=release/modules/ext/javafx-swing-17.0.14-ea+2.jar -file.reference.javafx-web-17.0.14-ea+2-linux.jar=release/modules/ext/javafx-web-17.0.14-ea+2-linux.jar -file.reference.javafx-web-17.0.14-ea+2-mac.jar=release/modules/ext/javafx-web-17.0.14-ea+2-mac.jar -file.reference.javafx-web-17.0.14-ea+2-win.jar=release/modules/ext/javafx-web-17.0.14-ea+2-win.jar -file.reference.javafx-web-17.0.14-ea+2.jar=release/modules/ext/javafx-web-17.0.14-ea+2.jar +file.reference.javafx-base-17.0.14-ea2-linux.jar=release/modules/ext/javafx-base-17.0.14-ea2-linux.jar +file.reference.javafx-base-17.0.14-ea2-mac.jar=release/modules/ext/javafx-base-17.0.14-ea2-mac.jar +file.reference.javafx-base-17.0.14-ea2-win.jar=release/modules/ext/javafx-base-17.0.14-ea2-win.jar +file.reference.javafx-base-17.0.14-ea2.jar=release/modules/ext/javafx-base-17.0.14-ea2.jar +file.reference.javafx-controls-17.0.14-ea2-linux.jar=release/modules/ext/javafx-controls-17.0.14-ea2-linux.jar +file.reference.javafx-controls-17.0.14-ea2-mac.jar=release/modules/ext/javafx-controls-17.0.14-ea2-mac.jar +file.reference.javafx-controls-17.0.14-ea2-win.jar=release/modules/ext/javafx-controls-17.0.14-ea2-win.jar +file.reference.javafx-controls-17.0.14-ea2.jar=release/modules/ext/javafx-controls-17.0.14-ea2.jar +file.reference.javafx-fxml-17.0.14-ea2-linux.jar=release/modules/ext/javafx-fxml-17.0.14-ea2-linux.jar +file.reference.javafx-fxml-17.0.14-ea2-mac.jar=release/modules/ext/javafx-fxml-17.0.14-ea2-mac.jar +file.reference.javafx-fxml-17.0.14-ea2-win.jar=release/modules/ext/javafx-fxml-17.0.14-ea2-win.jar +file.reference.javafx-fxml-17.0.14-ea2.jar=release/modules/ext/javafx-fxml-17.0.14-ea2.jar +file.reference.javafx-graphics-17.0.14-ea2-linux.jar=release/modules/ext/javafx-graphics-17.0.14-ea2-linux.jar +file.reference.javafx-graphics-17.0.14-ea2-mac.jar=release/modules/ext/javafx-graphics-17.0.14-ea2-mac.jar +file.reference.javafx-graphics-17.0.14-ea2-win.jar=release/modules/ext/javafx-graphics-17.0.14-ea2-win.jar +file.reference.javafx-graphics-17.0.14-ea2.jar=release/modules/ext/javafx-graphics-17.0.14-ea2.jar +file.reference.javafx-media-17.0.14-ea2-linux.jar=release/modules/ext/javafx-media-17.0.14-ea2-linux.jar +file.reference.javafx-media-17.0.14-ea2-mac.jar=release/modules/ext/javafx-media-17.0.14-ea2-mac.jar +file.reference.javafx-media-17.0.14-ea2-win.jar=release/modules/ext/javafx-media-17.0.14-ea2-win.jar +file.reference.javafx-media-17.0.14-ea2.jar=release/modules/ext/javafx-media-17.0.14-ea2.jar +file.reference.javafx-swing-17.0.14-ea2-linux.jar=release/modules/ext/javafx-swing-17.0.14-ea2-linux.jar +file.reference.javafx-swing-17.0.14-ea2-mac.jar=release/modules/ext/javafx-swing-17.0.14-ea2-mac.jar +file.reference.javafx-swing-17.0.14-ea2-win.jar=release/modules/ext/javafx-swing-17.0.14-ea2-win.jar +file.reference.javafx-swing-17.0.14-ea2.jar=release/modules/ext/javafx-swing-17.0.14-ea2.jar +file.reference.javafx-web-17.0.14-ea2-linux.jar=release/modules/ext/javafx-web-17.0.14-ea2-linux.jar +file.reference.javafx-web-17.0.14-ea2-mac.jar=release/modules/ext/javafx-web-17.0.14-ea2-mac.jar +file.reference.javafx-web-17.0.14-ea2-win.jar=release/modules/ext/javafx-web-17.0.14-ea2-win.jar +file.reference.javafx-web-17.0.14-ea2.jar=release/modules/ext/javafx-web-17.0.14-ea2.jar file.reference.javax.annotation-api-1.3.2.jar=release/modules/ext/javax.annotation-api-1.3.2.jar file.reference.jericho-html-3.4.jar=release/modules/ext/jericho-html-3.4.jar file.reference.jfxtras-common-17-r1.jar=release/modules/ext/jfxtras-common-17-r1.jar diff --git a/CoreLibs/nbproject/project.xml b/CoreLibs/nbproject/project.xml index 3aefaa6d83..962c45afab 100644 --- a/CoreLibs/nbproject/project.xml +++ b/CoreLibs/nbproject/project.xml @@ -914,116 +914,116 @@ release/modules/ext/jackson-datatype-jsr310-2.18.2.jar - ext/javafx-base-17.0.14-ea+2-linux.jar - release/modules/ext/javafx-base-17.0.14-ea+2-linux.jar + ext/javafx-base-17.0.14-ea2-linux.jar + release/modules/ext/javafx-base-17.0.14-ea2-linux.jar - ext/javafx-base-17.0.14-ea+2-mac.jar - release/modules/ext/javafx-base-17.0.14-ea+2-mac.jar + ext/javafx-base-17.0.14-ea2-mac.jar + release/modules/ext/javafx-base-17.0.14-ea2-mac.jar - ext/javafx-base-17.0.14-ea+2-win.jar - release/modules/ext/javafx-base-17.0.14-ea+2-win.jar + ext/javafx-base-17.0.14-ea2-win.jar + release/modules/ext/javafx-base-17.0.14-ea2-win.jar - ext/javafx-base-17.0.14-ea+2.jar - release/modules/ext/javafx-base-17.0.14-ea+2.jar + ext/javafx-base-17.0.14-ea2.jar + release/modules/ext/javafx-base-17.0.14-ea2.jar - ext/javafx-controls-17.0.14-ea+2-linux.jar - release/modules/ext/javafx-controls-17.0.14-ea+2-linux.jar + ext/javafx-controls-17.0.14-ea2-linux.jar + release/modules/ext/javafx-controls-17.0.14-ea2-linux.jar - ext/javafx-controls-17.0.14-ea+2-mac.jar - release/modules/ext/javafx-controls-17.0.14-ea+2-mac.jar + ext/javafx-controls-17.0.14-ea2-mac.jar + release/modules/ext/javafx-controls-17.0.14-ea2-mac.jar - ext/javafx-controls-17.0.14-ea+2-win.jar - release/modules/ext/javafx-controls-17.0.14-ea+2-win.jar + ext/javafx-controls-17.0.14-ea2-win.jar + release/modules/ext/javafx-controls-17.0.14-ea2-win.jar - ext/javafx-controls-17.0.14-ea+2.jar - release/modules/ext/javafx-controls-17.0.14-ea+2.jar + ext/javafx-controls-17.0.14-ea2.jar + release/modules/ext/javafx-controls-17.0.14-ea2.jar - ext/javafx-fxml-17.0.14-ea+2-linux.jar - release/modules/ext/javafx-fxml-17.0.14-ea+2-linux.jar + ext/javafx-fxml-17.0.14-ea2-linux.jar + release/modules/ext/javafx-fxml-17.0.14-ea2-linux.jar - ext/javafx-fxml-17.0.14-ea+2-mac.jar - release/modules/ext/javafx-fxml-17.0.14-ea+2-mac.jar + ext/javafx-fxml-17.0.14-ea2-mac.jar + release/modules/ext/javafx-fxml-17.0.14-ea2-mac.jar - ext/javafx-fxml-17.0.14-ea+2-win.jar - release/modules/ext/javafx-fxml-17.0.14-ea+2-win.jar + ext/javafx-fxml-17.0.14-ea2-win.jar + release/modules/ext/javafx-fxml-17.0.14-ea2-win.jar - ext/javafx-fxml-17.0.14-ea+2.jar - release/modules/ext/javafx-fxml-17.0.14-ea+2.jar + ext/javafx-fxml-17.0.14-ea2.jar + release/modules/ext/javafx-fxml-17.0.14-ea2.jar - ext/javafx-graphics-17.0.14-ea+2-linux.jar - release/modules/ext/javafx-graphics-17.0.14-ea+2-linux.jar + ext/javafx-graphics-17.0.14-ea2-linux.jar + release/modules/ext/javafx-graphics-17.0.14-ea2-linux.jar - ext/javafx-graphics-17.0.14-ea+2-mac.jar - release/modules/ext/javafx-graphics-17.0.14-ea+2-mac.jar + ext/javafx-graphics-17.0.14-ea2-mac.jar + release/modules/ext/javafx-graphics-17.0.14-ea2-mac.jar - ext/javafx-graphics-17.0.14-ea+2-win.jar - release/modules/ext/javafx-graphics-17.0.14-ea+2-win.jar + ext/javafx-graphics-17.0.14-ea2-win.jar + release/modules/ext/javafx-graphics-17.0.14-ea2-win.jar - ext/javafx-graphics-17.0.14-ea+2.jar - release/modules/ext/javafx-graphics-17.0.14-ea+2.jar + ext/javafx-graphics-17.0.14-ea2.jar + release/modules/ext/javafx-graphics-17.0.14-ea2.jar - ext/javafx-media-17.0.14-ea+2-linux.jar - release/modules/ext/javafx-media-17.0.14-ea+2-linux.jar + ext/javafx-media-17.0.14-ea2-linux.jar + release/modules/ext/javafx-media-17.0.14-ea2-linux.jar - ext/javafx-media-17.0.14-ea+2-mac.jar - release/modules/ext/javafx-media-17.0.14-ea+2-mac.jar + ext/javafx-media-17.0.14-ea2-mac.jar + release/modules/ext/javafx-media-17.0.14-ea2-mac.jar - ext/javafx-media-17.0.14-ea+2-win.jar - release/modules/ext/javafx-media-17.0.14-ea+2-win.jar + ext/javafx-media-17.0.14-ea2-win.jar + release/modules/ext/javafx-media-17.0.14-ea2-win.jar - ext/javafx-media-17.0.14-ea+2.jar - release/modules/ext/javafx-media-17.0.14-ea+2.jar + ext/javafx-media-17.0.14-ea2.jar + release/modules/ext/javafx-media-17.0.14-ea2.jar - ext/javafx-swing-17.0.14-ea+2-linux.jar - release/modules/ext/javafx-swing-17.0.14-ea+2-linux.jar + ext/javafx-swing-17.0.14-ea2-linux.jar + release/modules/ext/javafx-swing-17.0.14-ea2-linux.jar - ext/javafx-swing-17.0.14-ea+2-mac.jar - release/modules/ext/javafx-swing-17.0.14-ea+2-mac.jar + ext/javafx-swing-17.0.14-ea2-mac.jar + release/modules/ext/javafx-swing-17.0.14-ea2-mac.jar - ext/javafx-swing-17.0.14-ea+2-win.jar - release/modules/ext/javafx-swing-17.0.14-ea+2-win.jar + ext/javafx-swing-17.0.14-ea2-win.jar + release/modules/ext/javafx-swing-17.0.14-ea2-win.jar - ext/javafx-swing-17.0.14-ea+2.jar - release/modules/ext/javafx-swing-17.0.14-ea+2.jar + ext/javafx-swing-17.0.14-ea2.jar + release/modules/ext/javafx-swing-17.0.14-ea2.jar - ext/javafx-web-17.0.14-ea+2-linux.jar - release/modules/ext/javafx-web-17.0.14-ea+2-linux.jar + ext/javafx-web-17.0.14-ea2-linux.jar + release/modules/ext/javafx-web-17.0.14-ea2-linux.jar - ext/javafx-web-17.0.14-ea+2-mac.jar - release/modules/ext/javafx-web-17.0.14-ea+2-mac.jar + ext/javafx-web-17.0.14-ea2-mac.jar + release/modules/ext/javafx-web-17.0.14-ea2-mac.jar - ext/javafx-web-17.0.14-ea+2-win.jar - release/modules/ext/javafx-web-17.0.14-ea+2-win.jar + ext/javafx-web-17.0.14-ea2-win.jar + release/modules/ext/javafx-web-17.0.14-ea2-win.jar - ext/javafx-web-17.0.14-ea+2.jar - release/modules/ext/javafx-web-17.0.14-ea+2.jar + ext/javafx-web-17.0.14-ea2.jar + release/modules/ext/javafx-web-17.0.14-ea2.jar ext/javax.annotation-api-1.3.2.jar diff --git a/KeywordSearch/nbproject/project.properties b/KeywordSearch/nbproject/project.properties index 862a8772a3..1a8de9efe6 100644 --- a/KeywordSearch/nbproject/project.properties +++ b/KeywordSearch/nbproject/project.properties @@ -1,4 +1,3 @@ -#Wed Jan 08 19:35:29 UTC 2025 file.reference.annotations-12.0.jar=release/modules/ext/annotations-12.0.jar file.reference.checker-qual-3.43.0.jar=release/modules/ext/checker-qual-3.43.0.jar file.reference.commons-codec-1.11.jar=release/modules/ext/commons-codec-1.11.jar diff --git a/Tika/nbproject/project.properties b/Tika/nbproject/project.properties index fa82da1fbc..7c62ef7bfb 100755 --- a/Tika/nbproject/project.properties +++ b/Tika/nbproject/project.properties @@ -1,4 +1,3 @@ -#Wed Jan 08 19:35:29 UTC 2025 file.reference.SparseBitSet-1.3.jar=release/modules/ext/SparseBitSet-1.3.jar file.reference.angus-activation-2.0.2.jar=release/modules/ext/angus-activation-2.0.2.jar file.reference.apache-mime4j-core-0.8.11.jar=release/modules/ext/apache-mime4j-core-0.8.11.jar From 53126638c920fe1f6f3b78eca210cb147bff7254 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 9 Jan 2025 14:14:18 -0500 Subject: [PATCH 30/52] update for proper loading --- .../autopsy/casemodule/ImageFilePanel.java | 245 ++++++++++++------ 1 file changed, 160 insertions(+), 85 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java index 166067478d..7213838357 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java @@ -25,6 +25,8 @@ import java.util.List; import java.util.concurrent.Future; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.ReentrantLock; +import java.util.function.Supplier; import java.util.logging.Level; import javax.swing.JFileChooser; import javax.swing.JOptionPane; @@ -64,10 +66,12 @@ public class ImageFilePanel extends JPanel { private final String contextName; private final List fileChooserFilters; - private static int VALIDATE_TIMEOUT_MILLIS = 1200; + private static int VALIDATE_TIMEOUT_MILLIS = 1000; static ScheduledThreadPoolExecutor delayedValidationService = new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder().setNameFormat("ImageFilePanel delayed validation").build()); - private final Object validateActionLock = new Object(); + private final ReentrantLock validationWaitingLock = new ReentrantLock(); + private final ReentrantLock validationLock = new ReentrantLock(); + private Runnable validateAction = null; private Future validateFuture = null; @@ -598,6 +602,23 @@ public class ImageFilePanel extends JPanel { this.passwordTextField.setText(null); } + /** + * Sets UI enabled state. + * + * @param enabled True + */ + private void setUIEnabled(boolean enabled, boolean validNonE01) { + this.browseButton.setEnabled(enabled); + this.noFatOrphansCheckbox.setEnabled(enabled); + this.passwordTextField.setEnabled(enabled); + this.pathTextField.setEnabled(enabled); + this.sectorSizeComboBox.setEnabled(enabled); + this.md5HashTextField.setEnabled(enabled && validNonE01); + this.sha1HashTextField.setEnabled(enabled && validNonE01); + this.sha256HashTextField.setEnabled(enabled && validNonE01); + this.timeZoneComboBox.setEnabled(enabled); + } + /** * Should we enable the next button of the wizard? * @@ -614,49 +635,66 @@ public class ImageFilePanel extends JPanel { "ImageFilePanel_validatePanel_unknownError=

An unknown error occurred while attempting to validate the image

" }) public boolean validatePanel() { - String path = getContentPaths(); - if (!isImagePathValid()) { - showError(null); - return false; - } + return runWithLock(this.validationLock, () -> { + boolean validNonE01 = true; + try { - if (!StringUtils.isBlank(getMd5()) && !HashUtility.isValidMd5Hash(getMd5())) { - showError(Bundle.ImageFilePanel_validatePanel_invalidMD5()); - return false; - } + // acquire field values at the beginning to minimize chance of changing while validating. + String path = getContentPaths(); - if (!StringUtils.isBlank(getSha1()) && !HashUtility.isValidSha1Hash(getSha1())) { - showError(Bundle.ImageFilePanel_validatePanel_invalidSHA1()); - return false; - } + validNonE01 = isValidNonE01(path); + setUIEnabled(false, validNonE01); - if (!StringUtils.isBlank(getSha256()) && !HashUtility.isValidSha256Hash(getSha256())) { - showError(Bundle.ImageFilePanel_validatePanel_invalidSHA256()); - return false; - } - - try { - String password = this.getPassword(); - TestOpenImageResult testResult = SleuthkitJNI.testOpenImage(path, password); - if (!testResult.wasSuccessful()) { - showError(Bundle.ImageFilePanel_validatePanel_imageOpenError( - StringUtils.defaultIfBlank( - testResult.getMessage(), - Bundle.ImageFilePanel_validatePanel_unknownErrorMsg()))); - return false; + String md5 = getMd5(); + String sha1 = getSha1(); + String sha256 = getSha256(); + String password = getPassword(); + + if (!isImagePathValid(path)) { + showError(null); + return false; + } + + if (!StringUtils.isBlank(md5) && !HashUtility.isValidMd5Hash(md5)) { + showError(Bundle.ImageFilePanel_validatePanel_invalidMD5()); + return false; + } + + if (!StringUtils.isBlank(sha1) && !HashUtility.isValidSha1Hash(sha1)) { + showError(Bundle.ImageFilePanel_validatePanel_invalidSHA1()); + return false; + } + + if (!StringUtils.isBlank(sha256) && !HashUtility.isValidSha256Hash(sha256)) { + showError(Bundle.ImageFilePanel_validatePanel_invalidSHA256()); + return false; + } + + try { + TestOpenImageResult testResult = SleuthkitJNI.testOpenImage(path, password); + if (!testResult.wasSuccessful()) { + showError(Bundle.ImageFilePanel_validatePanel_imageOpenError( + StringUtils.defaultIfBlank( + testResult.getMessage(), + Bundle.ImageFilePanel_validatePanel_unknownErrorMsg()))); + return false; + } + } catch (Throwable t) { + logger.log(Level.SEVERE, "An unknown error occurred test opening image: " + path, t); + showError(Bundle.ImageFilePanel_validatePanel_unknownError()); + return false; + } + + if (!PathValidator.isValidForCaseType(path, Case.getCurrentCase().getCaseType())) { + showError(Bundle.ImageFilePanel_validatePanel_dataSourceOnCDriveError()); + } else { + showError(null); + } + return true; + } finally { + setUIEnabled(true, validNonE01); } - } catch (Throwable t) { - logger.log(Level.SEVERE, "An unknown error occurred test opening image: " + path, t); - showError(Bundle.ImageFilePanel_validatePanel_unknownError()); - return false; - } - - if (!PathValidator.isValidForCaseType(path, Case.getCurrentCase().getCaseType())) { - showError(Bundle.ImageFilePanel_validatePanel_dataSourceOnCDriveError()); - } else { - showError(null); - } - return true; + }); } /** @@ -675,25 +713,28 @@ public class ImageFilePanel extends JPanel { errorLabel.setText(""); } } - - private boolean isImagePathValid() { - String path = getContentPaths(); - + + /** + * Returns true if path is valid for processing. + * + * @param path The path. + * @return True if valid for processing. + */ + private boolean isImagePathValid(String path) { if (StringUtils.isBlank(path) || (!(new File(path).isFile() || DriveUtils.isPhysicalDrive(path) || DriveUtils.isPartition(path)))) { return false; } - + return true; } /** - * @return True if the panel is on a delay for validating (i.e. typing a - * password for bitlocker). + * Returns true if the path is a valid image that is not an E01. + * @param path The path. + * @return True if valid image and not E01. */ - public boolean isValidationLoading() { - synchronized (this.validateActionLock) { - return this.validateAction != null; - } + private boolean isValidNonE01(String path) { + return StringUtils.isNotBlank(path) && isImagePathValid(path) && !path.toLowerCase().endsWith(".e01"); } public void storeSettings() { @@ -721,12 +762,13 @@ public class ImageFilePanel extends JPanel { "ImageFilePanel.moduleErr.msg=A module caused an error listening to ImageFilePanel updates." + " See log to determine which module. Some data could be incomplete.\n"}) private void updateHelper() { - if (isImagePathValid() && !getContentPaths().toLowerCase().endsWith(".e01")) { + String path = getContentPaths(); + if (isValidNonE01(path)) { setHashValuesComponentsEnabled(true); } else { setHashValuesComponentsEnabled(false); } - + firePropertyChange(DataSourceProcessor.DSP_PANEL_EVENT.UPDATE_UI.toString(), false, true); } @@ -737,6 +779,34 @@ public class ImageFilePanel extends JPanel { pathTextField.requestFocusInWindow(); } + /** + * Runs the supplier action with the reentrant lock or blocks until + * acquired. + * + * @param + * @param lock The reentrant lock. + * @param action The action to run. + * @return The value of the supplier. + */ + private T runWithLock(ReentrantLock lock, Supplier action) { + try { + lock.lock(); + return action.get(); + } finally { + lock.unlock(); + } + } + + /** + * @return True if the panel is on a delay for validating (i.e. typing a + * password for bitlocker). + */ + public boolean isValidationLoading() { + return runWithLock(this.validationWaitingLock, () -> this.validateFuture != null + && !this.validateFuture.isCancelled() + && !this.validateFuture.isDone()); + } + /** * This class validates on a delay canceling any tasks previously scheduled * so that password validation doesn't lock up the system. @@ -763,34 +833,34 @@ public class ImageFilePanel extends JPanel { * while typing. */ private void delayValidate() { - boolean triggerUpdate = false; - synchronized (ImageFilePanel.this.validateActionLock) { - if (ImageFilePanel.this.validateFuture != null && - !ImageFilePanel.this.validateFuture.isCancelled() && - !ImageFilePanel.this.validateFuture.isDone()) { - ImageFilePanel.this.validateFuture.cancel(true); - triggerUpdate = true; - } - - ImageFilePanel.this.validateAction = new ValidationRunnable(); - ImageFilePanel.this.validateFuture = ImageFilePanel.this.delayedValidationService.schedule( - ImageFilePanel.this.validateAction, + boolean triggerUpdate = runWithLock(validationWaitingLock, () -> { + + boolean toRetTriggerUpdate = false; + if (isValidationLoading()) { + validateFuture.cancel(true); + toRetTriggerUpdate = true; + } + + validateAction = new ValidationRunnable(); + + validateFuture = delayedValidationService.schedule( + validateAction, VALIDATE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); - } - + + return toRetTriggerUpdate; + }); + + errorLabel.setVisible(false); + loadingLabel.setVisible(true); + // trigger invalidation after setting up new runnable if not already triggered if (triggerUpdate) { firePropertyChange(DataSourceProcessor.DSP_PANEL_EVENT.UPDATE_UI.toString(), false, true); } - - errorLabel.setVisible(false); - if (!ImageFilePanel.this.loadingLabel.isVisible()) { - ImageFilePanel.this.loadingLabel.setVisible(true); - } } - + /** * Runnable to run the updateHelper if the validation action remains * this runnable. @@ -799,23 +869,28 @@ public class ImageFilePanel extends JPanel { @Override public void run() { - if (Thread.interrupted()) { - return; - } - - synchronized (ImageFilePanel.this.validateActionLock) { - if (ImageFilePanel.this.validateAction != this) { - return; + + boolean isRunningAction = runWithLock(validationWaitingLock, () -> { + if (validateAction != this) { + return false; } // set the validation action to null to indicate that this is done running and can be validated. - ImageFilePanel.this.validateAction = null; - ImageFilePanel.this.validateFuture = null; + validateAction = null; + validateFuture = null; + + return true; + }); + + if (!isRunningAction) { + return; + } else if (Thread.interrupted()) { + return; } - + ImageFilePanel.this.updateHelper(); } - + } } } From e35ab8acb580570e48be1aaa04ce7c24363040dc Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sun, 12 Jan 2025 17:03:47 -0500 Subject: [PATCH 31/52] updates --- Core/ivy.xml | 4 ++-- Core/nbproject/project.properties | 6 +----- Core/nbproject/project.xml | 20 ++----------------- .../sleuthkit/autopsy/coreutils/XMLUtil.java | 9 +-------- .../filetypeid/CustomFileTypesManager.java | 2 +- KeywordSearch/solr/server/etc/security.policy | 2 +- 6 files changed, 8 insertions(+), 35 deletions(-) diff --git a/Core/ivy.xml b/Core/ivy.xml index 148351912a..1746c2f06d 100644 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -43,8 +43,8 @@ - - + + diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index e3328807ef..78007a1805 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -42,7 +42,6 @@ file.reference.httpcore-4.4.16.jar=release/modules/ext/httpcore-4.4.16.jar file.reference.httpmime-4.5.14.jar=release/modules/ext/httpmime-4.5.14.jar file.reference.icepdf-core-6.2.2.jar=release/modules/ext/icepdf-core-6.2.2.jar file.reference.icepdf-viewer-6.2.2.jar=release/modules/ext/icepdf-viewer-6.2.2.jar -file.reference.istack-commons-runtime-4.1.2.jar=release/modules/ext/istack-commons-runtime-4.1.2.jar file.reference.j2objc-annotations-3.0.0.jar=release/modules/ext/j2objc-annotations-3.0.0.jar file.reference.jackcess-4.0.7.jar=release/modules/ext/jackcess-4.0.7.jar file.reference.jackcess-encrypt-4.0.2.jar=release/modules/ext/jackcess-encrypt-4.0.2.jar @@ -55,11 +54,9 @@ file.reference.jakarta.jms-api-3.1.0.jar=release/modules/ext/jakarta.jms-api-3.1 file.reference.jakarta.transaction-api-1.3.3.jar=release/modules/ext/jakarta.transaction-api-1.3.3.jar file.reference.jakarta.xml.bind-api-4.0.2.jar=release/modules/ext/jakarta.xml.bind-api-4.0.2.jar file.reference.java-diff-utils-4.15.jar=release/modules/ext/java-diff-utils-4.15.jar -file.reference.javax.activation-api-1.2.0.jar=release/modules/ext/javax.activation-api-1.2.0.jar file.reference.javax.ws.rs-api-2.1.1.jar=release/modules/ext/javax.ws.rs-api-2.1.1.jar -file.reference.jaxb-api-2.3.1.jar=release/modules/ext/jaxb-api-2.3.1.jar file.reference.jaxb-core-4.0.5.jar=release/modules/ext/jaxb-core-4.0.5.jar -file.reference.jaxb-runtime-4.0.5.jar=release/modules/ext/jaxb-runtime-4.0.5.jar +file.reference.jaxb-impl-4.0.5.jar=release/modules/ext/jaxb-impl-4.0.5.jar file.reference.jaxen-1.2.0.jar=release/modules/ext/jaxen-1.2.0.jar file.reference.jdom2-2.0.6.1-sources.jar=release/modules/ext/jdom2-2.0.6.1-sources.jar file.reference.jdom2-2.0.6.1.jar=release/modules/ext/jdom2-2.0.6.1.jar @@ -102,7 +99,6 @@ file.reference.slf4j-api-1.7.30.jar=release/modules/ext/slf4j-api-1.7.30.jar file.reference.snakeyaml-2.3.jar=release/modules/ext/snakeyaml-2.3.jar file.reference.spotbugs-annotations-4.8.6.jar=release/modules/ext/spotbugs-annotations-4.8.6.jar file.reference.sqlite-jdbc-3.47.1.0.jar=release/modules/ext/sqlite-jdbc-3.47.1.0.jar -file.reference.txw2-4.0.5.jar=release/modules/ext/txw2-4.0.5.jar file.reference.xalan-2.7.3.jar=release/modules/ext/xalan-2.7.3.jar file.reference.xercesImpl-2.12.2.jar=release/modules/ext/xercesImpl-2.12.2.jar file.reference.xml-apis-1.4.01.jar=release/modules/ext/xml-apis-1.4.01.jar diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 8d8e59e94e..5f67399107 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -533,10 +533,6 @@ ext/icepdf-viewer-6.2.2.jar release/modules/ext/icepdf-viewer-6.2.2.jar
- - ext/istack-commons-runtime-4.1.2.jar - release/modules/ext/istack-commons-runtime-4.1.2.jar - ext/j2objc-annotations-3.0.0.jar release/modules/ext/j2objc-annotations-3.0.0.jar @@ -585,25 +581,17 @@ ext/java-diff-utils-4.15.jar release/modules/ext/java-diff-utils-4.15.jar - - ext/javax.activation-api-1.2.0.jar - release/modules/ext/javax.activation-api-1.2.0.jar - ext/javax.ws.rs-api-2.1.1.jar release/modules/ext/javax.ws.rs-api-2.1.1.jar - - ext/jaxb-api-2.3.1.jar - release/modules/ext/jaxb-api-2.3.1.jar - ext/jaxb-core-4.0.5.jar release/modules/ext/jaxb-core-4.0.5.jar - ext/jaxb-runtime-4.0.5.jar - release/modules/ext/jaxb-runtime-4.0.5.jar + ext/jaxb-impl-4.0.5.jar + release/modules/ext/jaxb-impl-4.0.5.jar ext/jaxen-1.2.0.jar @@ -781,10 +769,6 @@ ext/sqlite-jdbc-3.47.1.0.jar release/modules/ext/sqlite-jdbc-3.47.1.0.jar - - ext/txw2-4.0.5.jar - release/modules/ext/txw2-4.0.5.jar - ext/xalan-2.7.3.jar release/modules/ext/xalan-2.7.3.jar diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/XMLUtil.java b/Core/src/org/sleuthkit/autopsy/coreutils/XMLUtil.java index eb3c16e1c1..f4242f9aa1 100644 --- a/Core/src/org/sleuthkit/autopsy/coreutils/XMLUtil.java +++ b/Core/src/org/sleuthkit/autopsy/coreutils/XMLUtil.java @@ -73,14 +73,7 @@ public class XMLUtil { } private static SchemaFactory getSchemaFactory(String schemaLanguage) { - // See JIRA-6958 for details about class loading and jaxb. - ClassLoader original = Thread.currentThread().getContextClassLoader(); - try { - Thread.currentThread().setContextClassLoader(XMLUtil.class.getClassLoader()); - return SchemaFactory.newInstance(schemaLanguage); - } finally { - Thread.currentThread().setContextClassLoader(original); - } + return SchemaFactory.newInstance(schemaLanguage); } private static TransformerFactory getTransformerFactory() { diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/CustomFileTypesManager.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/CustomFileTypesManager.java index dda4416ee6..63d1df7c5e 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/CustomFileTypesManager.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/CustomFileTypesManager.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.modules.filetypeid; +import jakarta.xml.bind.DatatypeConverter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -26,7 +27,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; -import javax.xml.bind.DatatypeConverter; import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; diff --git a/KeywordSearch/solr/server/etc/security.policy b/KeywordSearch/solr/server/etc/security.policy index 7716da090a..e10da56348 100755 --- a/KeywordSearch/solr/server/etc/security.policy +++ b/KeywordSearch/solr/server/etc/security.policy @@ -146,7 +146,7 @@ grant { permission java.security.SecurityPermission "putProviderProperty.SaslPlainServer"; permission java.security.SecurityPermission "insertProvider"; - permission javax.xml.bind.JAXBPermission "setDatatypeConverter"; + permission jakarta.xml.bind.JAXBPermission "setDatatypeConverter"; // SSL related properties for Solr tests permission javax.net.ssl.SSLPermission "setDefaultSSLContext"; From 97c4f97d215bf4d6674db083eda80e55769b9025 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 14 Jan 2025 21:21:48 -0500 Subject: [PATCH 32/52] updates --- CoreTestLibs/nbproject/project.properties | 1 - Experimental/nbproject/project.properties | 1 - KeywordSearch/ivy.xml | 11 +- KeywordSearch/ivysettings.xml | 8 +- KeywordSearch/nbproject/project.properties | 56 ++++---- KeywordSearch/nbproject/project.xml | 136 +++++++++--------- .../autopsy/keywordsearch/Server.java | 8 +- .../nbproject/project.properties | 1 - 8 files changed, 103 insertions(+), 119 deletions(-) diff --git a/CoreTestLibs/nbproject/project.properties b/CoreTestLibs/nbproject/project.properties index 82d59d6fa3..3cfbab46f8 100644 --- a/CoreTestLibs/nbproject/project.properties +++ b/CoreTestLibs/nbproject/project.properties @@ -1,4 +1,3 @@ -#Wed Jan 08 19:28:01 UTC 2025 file.reference.byte-buddy-1.15.11.jar=release/modules/ext/byte-buddy-1.15.11.jar file.reference.byte-buddy-agent-1.15.11.jar=release/modules/ext/byte-buddy-agent-1.15.11.jar file.reference.hamcrest-core-1.3.jar=release/modules/ext/hamcrest-core-1.3.jar diff --git a/Experimental/nbproject/project.properties b/Experimental/nbproject/project.properties index 52c13e3bf7..bbab824d65 100644 --- a/Experimental/nbproject/project.properties +++ b/Experimental/nbproject/project.properties @@ -1,4 +1,3 @@ -#Wed Jan 08 19:10:38 UTC 2025 file.reference.jtidy-r938.jar=release/modules/ext/jtidy-r938.jar javac.compilerargs=-Xlint -Xlint\:-serial javac.source=17 diff --git a/KeywordSearch/ivy.xml b/KeywordSearch/ivy.xml index 0a1d040ce5..3a03cb9dd8 100644 --- a/KeywordSearch/ivy.xml +++ b/KeywordSearch/ivy.xml @@ -17,11 +17,11 @@ - + - + - + @@ -43,7 +43,6 @@ - @@ -64,7 +63,7 @@ - - + + diff --git a/KeywordSearch/ivysettings.xml b/KeywordSearch/ivysettings.xml index 8f76a6c352..b582aee40a 100644 --- a/KeywordSearch/ivysettings.xml +++ b/KeywordSearch/ivysettings.xml @@ -1,9 +1,11 @@ - - - + + + + + diff --git a/KeywordSearch/nbproject/project.properties b/KeywordSearch/nbproject/project.properties index 1a8de9efe6..93c35e470f 100644 --- a/KeywordSearch/nbproject/project.properties +++ b/KeywordSearch/nbproject/project.properties @@ -1,52 +1,50 @@ file.reference.annotations-12.0.jar=release/modules/ext/annotations-12.0.jar file.reference.checker-qual-3.43.0.jar=release/modules/ext/checker-qual-3.43.0.jar -file.reference.commons-codec-1.11.jar=release/modules/ext/commons-codec-1.11.jar file.reference.commons-io-2.18.0.jar=release/modules/ext/commons-io-2.18.0.jar +file.reference.commons-lang-2.6.jar=release/modules/ext/commons-lang-2.6.jar file.reference.commons-math3-3.6.1.jar=release/modules/ext/commons-math3-3.6.1.jar file.reference.error_prone_annotations-2.36.0.jar=release/modules/ext/error_prone_annotations-2.36.0.jar file.reference.failureaccess-1.0.2.jar=release/modules/ext/failureaccess-1.0.2.jar file.reference.guava-33.4.0-jre.jar=release/modules/ext/guava-33.4.0-jre.jar file.reference.hamcrest-core-1.3.jar=release/modules/ext/hamcrest-core-1.3.jar -file.reference.httpclient-4.5.14.jar=release/modules/ext/httpclient-4.5.14.jar -file.reference.httpcore-4.4.16.jar=release/modules/ext/httpcore-4.4.16.jar -file.reference.httpmime-4.5.14.jar=release/modules/ext/httpmime-4.5.14.jar +file.reference.http2-client-11.0.24.jar=release/modules/ext/http2-client-11.0.24.jar +file.reference.http2-common-9.4.53.v20231009.jar=release/modules/ext/http2-common-9.4.53.v20231009.jar +file.reference.http2-hpack-9.4.53.v20231009.jar=release/modules/ext/http2-hpack-9.4.53.v20231009.jar +file.reference.http2-http-client-transport-9.4.53.v20231009.jar=release/modules/ext/http2-http-client-transport-9.4.53.v20231009.jar +file.reference.httpclient-4.5.13.jar=release/modules/ext/httpclient-4.5.13.jar +file.reference.httpcore-4.4.14.jar=release/modules/ext/httpcore-4.4.14.jar +file.reference.httpmime-4.5.13.jar=release/modules/ext/httpmime-4.5.13.jar file.reference.icu4j-76.1.jar=release/modules/ext/icu4j-76.1.jar file.reference.j2objc-annotations-3.0.0.jar=release/modules/ext/j2objc-annotations-3.0.0.jar -file.reference.jackson-annotations-2.17.2.jar=release/modules/ext/jackson-annotations-2.17.2.jar -file.reference.jackson-core-2.17.2.jar=release/modules/ext/jackson-core-2.17.2.jar -file.reference.jackson-databind-2.17.2.jar=release/modules/ext/jackson-databind-2.17.2.jar -file.reference.jakarta.ws.rs-api-3.1.0.jar=release/modules/ext/jakarta.ws.rs-api-3.1.0.jar -file.reference.jcl-over-slf4j-2.0.13.jar=release/modules/ext/jcl-over-slf4j-2.0.13.jar -file.reference.jetty-alpn-client-10.0.22.jar=release/modules/ext/jetty-alpn-client-10.0.22.jar -file.reference.jetty-alpn-java-client-10.0.22.jar=release/modules/ext/jetty-alpn-java-client-10.0.22.jar -file.reference.jetty-client-10.0.22.jar=release/modules/ext/jetty-client-10.0.22.jar -file.reference.jetty-http-10.0.22.jar=release/modules/ext/jetty-http-10.0.22.jar -file.reference.jetty-io-10.0.22.jar=release/modules/ext/jetty-io-10.0.22.jar -file.reference.jetty-util-10.0.22.jar=release/modules/ext/jetty-util-10.0.22.jar +file.reference.jcl-over-slf4j-1.7.36.jar=release/modules/ext/jcl-over-slf4j-1.7.36.jar +file.reference.jetty-alpn-client-9.4.53.v20231009.jar=release/modules/ext/jetty-alpn-client-9.4.53.v20231009.jar +file.reference.jetty-alpn-java-client-9.4.53.v20231009.jar=release/modules/ext/jetty-alpn-java-client-9.4.53.v20231009.jar +file.reference.jetty-client-9.4.53.v20231009.jar=release/modules/ext/jetty-client-9.4.53.v20231009.jar +file.reference.jetty-http-9.4.53.v20231009.jar=release/modules/ext/jetty-http-9.4.53.v20231009.jar +file.reference.jetty-io-9.4.53.v20231009.jar=release/modules/ext/jetty-io-9.4.53.v20231009.jar +file.reference.jetty-util-9.4.53.v20231009.jar=release/modules/ext/jetty-util-9.4.53.v20231009.jar file.reference.jsonic-1.2.11.jar=release/modules/ext/jsonic-1.2.11.jar file.reference.jsr305-3.0.2.jar=release/modules/ext/jsr305-3.0.2.jar file.reference.junit-4.13.2.jar=release/modules/ext/junit-4.13.2.jar file.reference.language-detector-0.6.jar=release/modules/ext/language-detector-0.6.jar file.reference.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar=release/modules/ext/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar -file.reference.lucene-core-9.12.1.jar=release/modules/ext/lucene-core-9.12.1.jar -file.reference.netty-buffer-4.1.113.Final.jar=release/modules/ext/netty-buffer-4.1.113.Final.jar -file.reference.netty-codec-4.1.113.Final.jar=release/modules/ext/netty-codec-4.1.113.Final.jar +file.reference.lucene-core-8.11.4.jar=release/modules/ext/lucene-core-8.11.4.jar +file.reference.netty-buffer-4.1.99.Final.jar=release/modules/ext/netty-buffer-4.1.99.Final.jar +file.reference.netty-codec-4.1.99.Final.jar=release/modules/ext/netty-codec-4.1.99.Final.jar file.reference.netty-common-4.1.116.Final.jar=release/modules/ext/netty-common-4.1.116.Final.jar -file.reference.netty-handler-4.1.113.Final.jar=release/modules/ext/netty-handler-4.1.113.Final.jar -file.reference.netty-resolver-4.1.113.Final.jar=release/modules/ext/netty-resolver-4.1.113.Final.jar +file.reference.netty-handler-4.1.99.Final.jar=release/modules/ext/netty-handler-4.1.99.Final.jar +file.reference.netty-resolver-4.1.99.Final.jar=release/modules/ext/netty-resolver-4.1.99.Final.jar file.reference.netty-tcnative-boringssl-static-2.0.66.Final.jar=release/modules/ext/netty-tcnative-boringssl-static-2.0.66.Final.jar file.reference.netty-tcnative-classes-2.0.66.Final.jar=release/modules/ext/netty-tcnative-classes-2.0.66.Final.jar file.reference.netty-transport-4.1.116.Final.jar=release/modules/ext/netty-transport-4.1.116.Final.jar file.reference.netty-transport-classes-epoll-4.1.116.Final.jar=release/modules/ext/netty-transport-classes-epoll-4.1.116.Final.jar -file.reference.netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar=release/modules/ext/netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar -file.reference.netty-transport-native-unix-common-4.1.113.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.113.Final.jar -file.reference.semver4j-5.3.0.jar=release/modules/ext/semver4j-5.3.0.jar -file.reference.slf4j-api-2.0.13.jar=release/modules/ext/slf4j-api-2.0.13.jar -file.reference.solr-api-9.7.0.jar=release/modules/ext/solr-api-9.7.0.jar -file.reference.solr-solrj-9.7.0.jar=release/modules/ext/solr-solrj-9.7.0.jar -file.reference.solr-solrj-streaming-9.7.0.jar=release/modules/ext/solr-solrj-streaming-9.7.0.jar -file.reference.solr-solrj-zookeeper-9.7.0.jar=release/modules/ext/solr-solrj-zookeeper-9.7.0.jar -file.reference.swagger-annotations-jakarta-2.2.22.jar=release/modules/ext/swagger-annotations-jakarta-2.2.22.jar +file.reference.netty-transport-native-epoll-4.1.116.Final.jar=release/modules/ext/netty-transport-native-epoll-4.1.116.Final.jar +file.reference.netty-transport-native-unix-common-4.1.99.Final.jar=release/modules/ext/netty-transport-native-unix-common-4.1.99.Final.jar +file.reference.slf4j-api-1.7.36.jar=release/modules/ext/slf4j-api-1.7.36.jar +file.reference.snappy-java-1.1.10.7.jar=release/modules/ext/snappy-java-1.1.10.7.jar +file.reference.solr-solrj-8.11.4.jar=release/modules/ext/solr-solrj-8.11.4.jar +file.reference.stax2-api-4.2.1.jar=release/modules/ext/stax2-api-4.2.1.jar +file.reference.woodstox-core-6.5.1.jar=release/modules/ext/woodstox-core-6.5.1.jar file.reference.zookeeper-3.9.3.jar=release/modules/ext/zookeeper-3.9.3.jar file.reference.zookeeper-jute-3.9.3.jar=release/modules/ext/zookeeper-jute-3.9.3.jar javac.compilerargs=-Xlint -Xlint\:-serial diff --git a/KeywordSearch/nbproject/project.xml b/KeywordSearch/nbproject/project.xml index c557bcd310..ca03edaf12 100644 --- a/KeywordSearch/nbproject/project.xml +++ b/KeywordSearch/nbproject/project.xml @@ -242,14 +242,14 @@ ext/checker-qual-3.43.0.jar release/modules/ext/checker-qual-3.43.0.jar - - ext/commons-codec-1.11.jar - release/modules/ext/commons-codec-1.11.jar - ext/commons-io-2.18.0.jar release/modules/ext/commons-io-2.18.0.jar + + ext/commons-lang-2.6.jar + release/modules/ext/commons-lang-2.6.jar + ext/commons-math3-3.6.1.jar release/modules/ext/commons-math3-3.6.1.jar @@ -271,16 +271,32 @@ release/modules/ext/hamcrest-core-1.3.jar - ext/httpclient-4.5.14.jar - release/modules/ext/httpclient-4.5.14.jar + ext/http2-client-11.0.24.jar + release/modules/ext/http2-client-11.0.24.jar - ext/httpcore-4.4.16.jar - release/modules/ext/httpcore-4.4.16.jar + ext/http2-common-9.4.53.v20231009.jar + release/modules/ext/http2-common-9.4.53.v20231009.jar - ext/httpmime-4.5.14.jar - release/modules/ext/httpmime-4.5.14.jar + ext/http2-hpack-9.4.53.v20231009.jar + release/modules/ext/http2-hpack-9.4.53.v20231009.jar + + + ext/http2-http-client-transport-9.4.53.v20231009.jar + release/modules/ext/http2-http-client-transport-9.4.53.v20231009.jar + + + ext/httpclient-4.5.13.jar + release/modules/ext/httpclient-4.5.13.jar + + + ext/httpcore-4.4.14.jar + release/modules/ext/httpcore-4.4.14.jar + + + ext/httpmime-4.5.13.jar + release/modules/ext/httpmime-4.5.13.jar ext/icu4j-76.1.jar @@ -291,48 +307,32 @@ release/modules/ext/j2objc-annotations-3.0.0.jar - ext/jackson-annotations-2.17.2.jar - release/modules/ext/jackson-annotations-2.17.2.jar + ext/jcl-over-slf4j-1.7.36.jar + release/modules/ext/jcl-over-slf4j-1.7.36.jar - ext/jackson-core-2.17.2.jar - release/modules/ext/jackson-core-2.17.2.jar + ext/jetty-alpn-client-9.4.53.v20231009.jar + release/modules/ext/jetty-alpn-client-9.4.53.v20231009.jar - ext/jackson-databind-2.17.2.jar - release/modules/ext/jackson-databind-2.17.2.jar + ext/jetty-alpn-java-client-9.4.53.v20231009.jar + release/modules/ext/jetty-alpn-java-client-9.4.53.v20231009.jar - ext/jakarta.ws.rs-api-3.1.0.jar - release/modules/ext/jakarta.ws.rs-api-3.1.0.jar + ext/jetty-client-9.4.53.v20231009.jar + release/modules/ext/jetty-client-9.4.53.v20231009.jar - ext/jcl-over-slf4j-2.0.13.jar - release/modules/ext/jcl-over-slf4j-2.0.13.jar + ext/jetty-http-9.4.53.v20231009.jar + release/modules/ext/jetty-http-9.4.53.v20231009.jar - ext/jetty-alpn-client-10.0.22.jar - release/modules/ext/jetty-alpn-client-10.0.22.jar + ext/jetty-io-9.4.53.v20231009.jar + release/modules/ext/jetty-io-9.4.53.v20231009.jar - ext/jetty-alpn-java-client-10.0.22.jar - release/modules/ext/jetty-alpn-java-client-10.0.22.jar - - - ext/jetty-client-10.0.22.jar - release/modules/ext/jetty-client-10.0.22.jar - - - ext/jetty-http-10.0.22.jar - release/modules/ext/jetty-http-10.0.22.jar - - - ext/jetty-io-10.0.22.jar - release/modules/ext/jetty-io-10.0.22.jar - - - ext/jetty-util-10.0.22.jar - release/modules/ext/jetty-util-10.0.22.jar + ext/jetty-util-9.4.53.v20231009.jar + release/modules/ext/jetty-util-9.4.53.v20231009.jar ext/jsonic-1.2.11.jar @@ -355,28 +355,28 @@ release/modules/ext/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar - ext/lucene-core-9.12.1.jar - release/modules/ext/lucene-core-9.12.1.jar + ext/lucene-core-8.11.4.jar + release/modules/ext/lucene-core-8.11.4.jar - ext/netty-buffer-4.1.113.Final.jar - release/modules/ext/netty-buffer-4.1.113.Final.jar + ext/netty-buffer-4.1.99.Final.jar + release/modules/ext/netty-buffer-4.1.99.Final.jar - ext/netty-codec-4.1.113.Final.jar - release/modules/ext/netty-codec-4.1.113.Final.jar + ext/netty-codec-4.1.99.Final.jar + release/modules/ext/netty-codec-4.1.99.Final.jar ext/netty-common-4.1.116.Final.jar release/modules/ext/netty-common-4.1.116.Final.jar - ext/netty-handler-4.1.113.Final.jar - release/modules/ext/netty-handler-4.1.113.Final.jar + ext/netty-handler-4.1.99.Final.jar + release/modules/ext/netty-handler-4.1.99.Final.jar - ext/netty-resolver-4.1.113.Final.jar - release/modules/ext/netty-resolver-4.1.113.Final.jar + ext/netty-resolver-4.1.99.Final.jar + release/modules/ext/netty-resolver-4.1.99.Final.jar ext/netty-tcnative-boringssl-static-2.0.66.Final.jar @@ -395,40 +395,32 @@ release/modules/ext/netty-transport-classes-epoll-4.1.116.Final.jar - ext/netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar - release/modules/ext/netty-transport-native-epoll-4.1.116.Final-linux-x86_64.jar + ext/netty-transport-native-epoll-4.1.116.Final.jar + release/modules/ext/netty-transport-native-epoll-4.1.116.Final.jar - ext/netty-transport-native-unix-common-4.1.113.Final.jar - release/modules/ext/netty-transport-native-unix-common-4.1.113.Final.jar + ext/netty-transport-native-unix-common-4.1.99.Final.jar + release/modules/ext/netty-transport-native-unix-common-4.1.99.Final.jar - ext/semver4j-5.3.0.jar - release/modules/ext/semver4j-5.3.0.jar + ext/slf4j-api-1.7.36.jar + release/modules/ext/slf4j-api-1.7.36.jar - ext/slf4j-api-2.0.13.jar - release/modules/ext/slf4j-api-2.0.13.jar + ext/snappy-java-1.1.10.7.jar + release/modules/ext/snappy-java-1.1.10.7.jar - ext/solr-api-9.7.0.jar - release/modules/ext/solr-api-9.7.0.jar + ext/solr-solrj-8.11.4.jar + release/modules/ext/solr-solrj-8.11.4.jar - ext/solr-solrj-9.7.0.jar - release/modules/ext/solr-solrj-9.7.0.jar + ext/stax2-api-4.2.1.jar + release/modules/ext/stax2-api-4.2.1.jar - ext/solr-solrj-streaming-9.7.0.jar - release/modules/ext/solr-solrj-streaming-9.7.0.jar - - - ext/solr-solrj-zookeeper-9.7.0.jar - release/modules/ext/solr-solrj-zookeeper-9.7.0.jar - - - ext/swagger-annotations-jakarta-2.2.22.jar - release/modules/ext/swagger-annotations-jakarta-2.2.22.jar + ext/woodstox-core-6.5.1.jar + release/modules/ext/woodstox-core-6.5.1.jar ext/zookeeper-3.9.3.jar diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 9786bbd2c2..158dd48453 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -71,7 +71,6 @@ import org.apache.solr.client.solrj.response.CollectionAdminResponse; import org.apache.solr.client.solrj.request.CoreAdminRequest; import org.apache.solr.client.solrj.response.CoreAdminResponse; import org.apache.solr.client.solrj.impl.BaseHttpSolrClient.RemoteSolrException; -import org.apache.solr.client.solrj.impl.Http2SolrClient; import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.TermsResponse; @@ -394,11 +393,8 @@ public class Server { logger.log(Level.INFO, "Creating new CloudSolrClient"); //NON-NLS int connectionTimeoutMs = org.sleuthkit.autopsy.keywordsearch.UserPreferences.getConnectionTimeout(); CloudSolrClient client = new CloudSolrClient.Builder(solrUrls) - .withInternalClientBuilder(new Http2SolrClient.Builder() - .withConnectionTimeout(connectionTimeoutMs, TimeUnit.MILLISECONDS) - .withRequestTimeout(connectionTimeoutMs, TimeUnit.MILLISECONDS) - ) - .withResponseParser(new XMLResponseParser()) + .withConnectionTimeout(connectionTimeoutMs) + .withSocketTimeout(connectionTimeoutMs) .build(); if (!defaultCollectionName.isEmpty()) { client.setDefaultCollection(defaultCollectionName); diff --git a/thunderbirdparser/nbproject/project.properties b/thunderbirdparser/nbproject/project.properties index e162ffa946..66a9ccce1e 100644 --- a/thunderbirdparser/nbproject/project.properties +++ b/thunderbirdparser/nbproject/project.properties @@ -1,4 +1,3 @@ -#Wed Jan 08 19:10:39 UTC 2025 file.reference.apache-mime4j-mbox-iterator-0.8.11.jar=release/modules/ext/apache-mime4j-mbox-iterator-0.8.11.jar file.reference.ez-vcard-0.12.1.jar=release/modules/ext/ez-vcard-0.12.1.jar file.reference.freemarker-2.3.32.jar=release/modules/ext/freemarker-2.3.32.jar From f875da5c1257a6edb642e433dddf266cee013321 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 15 Jan 2025 16:41:50 -0500 Subject: [PATCH 33/52] updates for auto ingest --- .../autopsy/casemodule/ImageDSProcessor.java | 134 ++++++++++++------ .../casemodule/LocalDiskDSProcessor.java | 18 ++- .../commandlineingest/CommandLineCommand.java | 4 +- .../CommandLineIngestManager.java | 7 +- .../CommandLineOptionProcessor.java | 39 +++-- .../DataSourceProcessor.java | 46 ++++++ .../AutoIngestDataSource.java | 16 ++- .../AutoIngestDataSourceProcessor.java | 70 +++++++++ .../DataSourceProcessorUtility.java | 63 +++++++- .../autoingest/AutoIngestManager.java | 9 +- .../autoingest/AutopsyManifestFileParser.java | 6 +- .../experimental/autoingest/Manifest.java | 13 ++ 12 files changed, 348 insertions(+), 77 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index 83bfb434f1..8f63d8459d 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.logging.Level; import java.util.UUID; import javax.swing.filechooser.FileFilter; +import org.apache.commons.lang3.StringUtils; import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.openide.util.lookup.ServiceProviders; @@ -184,7 +185,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour */ @Override public void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { - run(null, progressMonitor, callback); + run(null, null, progressMonitor, callback); } /** @@ -204,9 +205,16 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour */ @Override public void run(Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { + run(null, host, progressMonitor, callback); + } + + + @Override + public void run(String password, Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { ingestStream = new DefaultIngestStream(); readConfigSettings(); this.host = host; + this.password = StringUtils.defaultString(password, this.password); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.password, this.host); @@ -220,6 +228,46 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, this.password, progressMonitor, callback); } + + + /** + * Adds a data source to the case database using a background task in a + * separate thread and the given settings instead of those provided by the + * selection and configuration panel. Returns as soon as the background task + * is started and uses the callback object to signal task completion and + * return results. + * + * @param deviceId An ASCII-printable identifier for the device + * associated with the data source that is + * intended to be unique across multiple cases + * (e.g., a UUID). + * @param imagePath Path to the image file. + * @param timeZone The time zone to use when processing dates + * and times for the image, obtained from + * java.util.TimeZone.getID. + * @param ignoreFatOrphanFiles Whether to parse orphans if the image has a + * FAT filesystem. + * @param progressMonitor Progress monitor for reporting progress + * during processing. + * @param callback Callback to call when processing is done. + */ + public void run(String deviceId, String imagePath, String timeZone, boolean ignoreFatOrphanFiles, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { + ingestStream = new DefaultIngestStream(); + try { + image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, null, null); + } catch (TskCoreException ex) { + logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); + final List errors = new ArrayList<>(); + errors.add(ex.getMessage()); + callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); + return; + } + + doAddImageProcess(deviceId, imagePath, 0, timeZone, ignoreFatOrphanFiles, null, null, null, this.password, progressMonitor, callback); + } + + /** * Adds a data source to the case database using a background task in a @@ -241,7 +289,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour @Override public void runWithIngestStream(IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, DataSourceProcessorCallback callBack) { - runWithIngestStream(null, settings, progress, callBack); + runWithIngestStream(null, null, settings, progress, callBack); } /** @@ -265,10 +313,18 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour @Override public void runWithIngestStream(Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, DataSourceProcessorCallback callBack) { + runWithIngestStream(null, host, settings, progress, callBack); + } + + + @Override + public void runWithIngestStream(String password, Host host, IngestJobSettings settings, + DataSourceProcessorProgressMonitor progress, DataSourceProcessorCallback callBack) { // Read the settings from the wizard readConfigSettings(); this.host = host; + this.password = StringUtils.defaultIfEmpty(password, this.password); // Set up the data source before creating the ingest stream try { @@ -296,6 +352,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, this.password, progress, callBack); } + /** * Store the options from the config panel. */ @@ -334,43 +391,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return true; } - /** - * Adds a data source to the case database using a background task in a - * separate thread and the given settings instead of those provided by the - * selection and configuration panel. Returns as soon as the background task - * is started and uses the callback object to signal task completion and - * return results. - * - * @param deviceId An ASCII-printable identifier for the device - * associated with the data source that is - * intended to be unique across multiple cases - * (e.g., a UUID). - * @param imagePath Path to the image file. - * @param timeZone The time zone to use when processing dates - * and times for the image, obtained from - * java.util.TimeZone.getID. - * @param ignoreFatOrphanFiles Whether to parse orphans if the image has a - * FAT filesystem. - * @param progressMonitor Progress monitor for reporting progress - * during processing. - * @param callback Callback to call when processing is done. - */ - public void run(String deviceId, String imagePath, String timeZone, boolean ignoreFatOrphanFiles, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { - ingestStream = new DefaultIngestStream(); - try { - image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, this.password, null); - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); - final List errors = new ArrayList<>(); - errors.add(ex.getMessage()); - callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); - return; - } - - doAddImageProcess(deviceId, imagePath, 0, timeZone, ignoreFatOrphanFiles, null, null, null, this.password, progressMonitor, callback); - } - + /** * Adds a data source to the case database using a background task in a * separate thread and the given settings instead of those provided by the @@ -472,6 +493,13 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour @Override public int canProcess(Path dataSourcePath) throws AutoIngestDataSourceProcessorException { + return canProcess(dataSourcePath, null); + } + + + + @Override + public int canProcess(Path dataSourcePath, String password) throws AutoIngestDataSourceProcessorException { // check file extension for supported types if (!isAcceptedByFiler(dataSourcePath.toFile(), filtersList)) { @@ -504,23 +532,29 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour @Override public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { - process(deviceId, dataSourcePath, null, progressMonitor, callBack); + process(deviceId, dataSourcePath, this.password, null, progressMonitor, callBack); } @Override public void process(String deviceId, Path dataSourcePath, Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { + process(deviceId, dataSourcePath, this.password, host, progressMonitor, callBack); + } + + @Override + public void process(String deviceId, Path dataSourcePath, String password, Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { // this method does not use the config panel this.deviceId = deviceId; this.imagePath = dataSourcePath.toString(); this.sectorSize = 0; this.timeZone = Calendar.getInstance().getTimeZone().getID(); + this.password = password; this.host = host; this.ignoreFatOrphanFiles = false; ingestStream = new DefaultIngestStream(); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, this.password, host); + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, password, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -529,28 +563,36 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return; } - doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, null, progressMonitor, callBack); + doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, password, progressMonitor, callBack); } + + @Override public IngestStream processWithIngestStream(String deviceId, Path dataSourcePath, IngestJobSettings settings, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { - return processWithIngestStream(deviceId, dataSourcePath, null, settings, progressMonitor, callBack); + return processWithIngestStream(deviceId, dataSourcePath, this.password, null, settings, progressMonitor, callBack); } @Override public IngestStream processWithIngestStream(String deviceId, Path dataSourcePath, Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { + return processWithIngestStream(deviceId, dataSourcePath, this.password, host, settings, progressMonitor, callBack); + } + + @Override + public IngestStream processWithIngestStream(String deviceId, Path dataSourcePath, String password, Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { // this method does not use the config panel this.deviceId = deviceId; this.imagePath = dataSourcePath.toString(); this.sectorSize = 0; this.timeZone = Calendar.getInstance().getTimeZone().getID(); this.host = host; + this.password = password; this.ignoreFatOrphanFiles = false; // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.password, host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, password, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -570,8 +612,10 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return null; } - doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, null, progressMonitor, callBack); + doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, password, progressMonitor, callBack); return ingestStream; } + + } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java index e63943a456..463d5c9bcd 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java @@ -136,9 +136,14 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { */ @Override public void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { - run(null, progressMonitor, callback); + run(null, null, progressMonitor, callback); } + @Override + public void run(Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { + run(null, host, progressMonitor, callback); + } + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and @@ -155,7 +160,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { * to return results. */ @Override - public void run(Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { + public void run(String password, Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { deviceId = UUID.randomUUID().toString(); drivePath = configPanel.getContentPath(); sectorSize = configPanel.getSectorSize(); @@ -168,12 +173,13 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { } this.host = host; + this.password = password; Image image; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), new String[]{drivePath}, sectorSize, - timeZone, null, null, null, deviceId, this.host); + timeZone, null, null, null, deviceId, this.password, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding local disk with path " + drivePath + " to database", ex); final List errors = new ArrayList<>(); @@ -183,7 +189,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { } addDiskTask = new AddImageTask( - new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings, password), + new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings, this.password), progressMonitor, new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), new StreamingAddImageTaskCallback(new DefaultIngestStream(), callback)); @@ -242,7 +248,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), new String[]{drivePath}, sectorSize, - timeZone, null, null, null, deviceId); + timeZone, null, null, null, deviceId, this.password, null); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding local disk with path " + drivePath + " to database", ex); final List errors = new ArrayList<>(); @@ -251,7 +257,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { return; } - addDiskTask = new AddImageTask(new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings, password), + addDiskTask = new AddImageTask(new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings, this.password), progressMonitor, new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), new StreamingAddImageTaskCallback(new DefaultIngestStream(), callback)); diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineCommand.java b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineCommand.java index 1cacabe67c..378af77b75 100755 --- a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineCommand.java +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineCommand.java @@ -49,7 +49,9 @@ class CommandLineCommand { DATA_SOURCE_PATH, DATA_SOURCE_ID, INGEST_PROFILE_NAME, - REPORT_PROFILE_NAME; + REPORT_PROFILE_NAME, + BITLOCKER_KEY, + ; } private final CommandType type; diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java index ffc31fff1c..64940a022d 100755 --- a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java @@ -198,7 +198,8 @@ public class CommandLineIngestManager extends CommandLineManager { } String dataSourcePath = inputs.get(CommandLineCommand.InputType.DATA_SOURCE_PATH.name()); - dataSource = new AutoIngestDataSource(UUID.randomUUID().toString(), Paths.get(dataSourcePath)); + String password = inputs.get(CommandLineCommand.InputType.BITLOCKER_KEY.name()); + dataSource = new AutoIngestDataSource(UUID.randomUUID().toString(), Paths.get(dataSourcePath), password); runDataSourceProcessor(caseForJob, dataSource); String outputDirPath = getOutputDirPath(caseForJob); @@ -406,7 +407,7 @@ public class CommandLineIngestManager extends CommandLineManager { // Get an ordered list of data source processors to try List validDataSourceProcessors; try { - validDataSourceProcessors = DataSourceProcessorUtility.getOrderedListOfDataSourceProcessors(dataSource.getPath()); + validDataSourceProcessors = DataSourceProcessorUtility.getOrderedListOfDataSourceProcessors(dataSource.getPath(), dataSource.getPassword()); } catch (AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException ex) { LOGGER.log(Level.SEVERE, "Exception while determining best data source processor for {0}", dataSource.getPath()); // rethrow the exception. @@ -429,7 +430,7 @@ public class CommandLineIngestManager extends CommandLineManager { DataSourceProcessorCallback callBack = new AddDataSourceCallback(caseForJob, dataSource, taskId, ingestLock); caseForJob.notifyAddingDataSource(taskId); LOGGER.log(Level.INFO, "Identified data source type for {0} as {1}", new Object[]{dataSource.getPath(), selectedProcessor.getDataSourceType()}); - selectedProcessor.process(dataSource.getDeviceId(), dataSource.getPath(), progressMonitor, callBack); + selectedProcessor.process(dataSource.getDeviceId(), dataSource.getPath(), dataSource.getPassword(), null, progressMonitor, callBack); ingestLock.wait(); // at this point we got the content object(s) from the current DSP. diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java index 921c2e0a65..1d4b55f49a 100755 --- a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java @@ -30,6 +30,7 @@ import java.util.Set; import java.util.logging.Level; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.apache.commons.lang3.ArrayUtils; import org.sleuthkit.autopsy.coreutils.Logger; import org.netbeans.api.sendopts.CommandException; import org.netbeans.spi.sendopts.Env; @@ -52,6 +53,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { private final Option dataSourcePathOption = Option.requiredArgument('s', "dataSourcePath"); private final Option dataSourceObjectIdOption = Option.requiredArgument('i', "dataSourceObjectId"); private final Option addDataSourceCommandOption = Option.withoutArgument('a', "addDataSource"); + private final Option bitlockerKeyCommandOption = Option.withoutArgument('k', "key"); private final Option runIngestCommandOption = Option.optionalArgument('r', "runIngest"); private final Option listAllDataSourcesCommandOption = Option.withoutArgument('l', "listAllDataSources"); private final Option generateReportsOption = Option.optionalArgument('g', "generateReports"); @@ -81,20 +83,21 @@ public class CommandLineOptionProcessor extends OptionProcessor { @Override protected Set + + ext/bzip2-0.9.1.jar + release/modules/ext/bzip2-0.9.1.jar + ext/commons-codec-1.17.1.jar release/modules/ext/commons-codec-1.17.1.jar @@ -439,6 +443,26 @@ ext/fontbox-3.0.3.jar release/modules/ext/fontbox-3.0.3.jar + + ext/geoapi-3.0.2.jar + release/modules/ext/geoapi-3.0.2.jar + + + ext/grib-4.5.5.jar + release/modules/ext/grib-4.5.5.jar + + + ext/httpclient-4.5.14.jar + release/modules/ext/httpclient-4.5.14.jar + + + ext/httpcore-4.4.16.jar + release/modules/ext/httpcore-4.4.16.jar + + + ext/httpmime-4.5.14.jar + release/modules/ext/httpmime-4.5.14.jar + ext/istack-commons-runtime-4.1.2.jar release/modules/ext/istack-commons-runtime-4.1.2.jar @@ -471,6 +495,10 @@ ext/jakarta.activation-api-2.1.3.jar release/modules/ext/jakarta.activation-api-2.1.3.jar + + ext/jakarta.ws.rs-api-3.1.0.jar + release/modules/ext/jakarta.ws.rs-api-3.1.0.jar + ext/jakarta.xml.bind-api-4.0.2.jar release/modules/ext/jakarta.xml.bind-api-4.0.2.jar @@ -491,6 +519,10 @@ ext/jbig2-imageio-3.0.4.jar release/modules/ext/jbig2-imageio-3.0.4.jar + + ext/jcip-annotations-1.0.jar + release/modules/ext/jcip-annotations-1.0.jar + ext/jcl-over-slf4j-2.0.16.jar release/modules/ext/jcl-over-slf4j-2.0.16.jar @@ -507,10 +539,22 @@ ext/jhighlight-1.1.0.jar release/modules/ext/jhighlight-1.1.0.jar + + ext/jj2000-5.2.jar + release/modules/ext/jj2000-5.2.jar + ext/jmatio-1.5.jar release/modules/ext/jmatio-1.5.jar + + ext/jna-5.15.0.jar + release/modules/ext/jna-5.15.0.jar + + + ext/json-simple-1.1.1.jar + release/modules/ext/json-simple-1.1.1.jar + ext/jsoup-1.18.1.jar release/modules/ext/jsoup-1.18.1.jar @@ -535,10 +579,18 @@ ext/metadata-extractor-2.19.0.jar release/modules/ext/metadata-extractor-2.19.0.jar + + ext/netcdf4-4.5.5.jar + release/modules/ext/netcdf4-4.5.5.jar + ext/ooxml-schemas-1.4.jar release/modules/ext/ooxml-schemas-1.4.jar + + ext/openjson-1.0.13.jar + release/modules/ext/openjson-1.0.13.jar + ext/parso-2.0.14.jar release/modules/ext/parso-2.0.14.jar @@ -575,6 +627,10 @@ ext/poi-scratchpad-5.3.0.jar release/modules/ext/poi-scratchpad-5.3.0.jar + + ext/protobuf-java-3.25.5.jar + release/modules/ext/protobuf-java-3.25.5.jar + ext/rome-2.1.0.jar release/modules/ext/rome-2.1.0.jar @@ -583,6 +639,30 @@ ext/rome-utils-2.1.0.jar release/modules/ext/rome-utils-2.1.0.jar + + ext/sis-feature-1.4.jar + release/modules/ext/sis-feature-1.4.jar + + + ext/sis-metadata-1.4.jar + release/modules/ext/sis-metadata-1.4.jar + + + ext/sis-netcdf-1.4.jar + release/modules/ext/sis-netcdf-1.4.jar + + + ext/sis-referencing-1.4.jar + release/modules/ext/sis-referencing-1.4.jar + + + ext/sis-storage-1.4.jar + release/modules/ext/sis-storage-1.4.jar + + + ext/sis-utility-1.4.jar + release/modules/ext/sis-utility-1.4.jar + ext/slf4j-api-2.0.16.jar release/modules/ext/slf4j-api-2.0.16.jar @@ -591,6 +671,10 @@ ext/SparseBitSet-1.3.jar release/modules/ext/SparseBitSet-1.3.jar + + ext/sqlite-jdbc-3.46.1.3.jar + release/modules/ext/sqlite-jdbc-3.46.1.3.jar + ext/tagsoup-1.2.1.jar release/modules/ext/tagsoup-1.2.1.jar @@ -599,6 +683,14 @@ ext/tika-core-3.0.0.jar release/modules/ext/tika-core-3.0.0.jar + + ext/tika-parser-advancedmedia-module-3.0.0.jar + release/modules/ext/tika-parser-advancedmedia-module-3.0.0.jar + + + ext/tika-parser-advancedmedia-package-3.0.0.jar + release/modules/ext/tika-parser-advancedmedia-package-3.0.0.jar + ext/tika-parser-apple-module-3.0.0.jar release/modules/ext/tika-parser-apple-module-3.0.0.jar @@ -635,6 +727,10 @@ ext/tika-parser-image-module-3.0.0.jar release/modules/ext/tika-parser-image-module-3.0.0.jar + + ext/tika-parser-jdbc-commons-3.0.0.jar + release/modules/ext/tika-parser-jdbc-commons-3.0.0.jar + ext/tika-parser-mail-commons-3.0.0.jar release/modules/ext/tika-parser-mail-commons-3.0.0.jar @@ -667,6 +763,22 @@ ext/tika-parser-pkg-module-3.0.0.jar release/modules/ext/tika-parser-pkg-module-3.0.0.jar + + ext/tika-parser-scientific-module-3.0.0.jar + release/modules/ext/tika-parser-scientific-module-3.0.0.jar + + + ext/tika-parser-scientific-package-3.0.0.jar + release/modules/ext/tika-parser-scientific-package-3.0.0.jar + + + ext/tika-parser-sqlite3-module-3.0.0.jar + release/modules/ext/tika-parser-sqlite3-module-3.0.0.jar + + + ext/tika-parser-sqlite3-package-3.0.0.jar + release/modules/ext/tika-parser-sqlite3-package-3.0.0.jar + ext/tika-parser-text-module-3.0.0.jar release/modules/ext/tika-parser-text-module-3.0.0.jar @@ -695,6 +807,10 @@ ext/txw2-4.0.5.jar release/modules/ext/txw2-4.0.5.jar + + ext/unit-api-2.2.jar + release/modules/ext/unit-api-2.2.jar + ext/vorbis-java-core-0.8.jar release/modules/ext/vorbis-java-core-0.8.jar From 3e9f647d8e38541fd2ccf5a5c5f9e09c93f1af58 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 17 Jan 2025 21:41:21 -0500 Subject: [PATCH 38/52] update for metadata changes in deps --- .../KeywordSearchIngestModule.java | 141 ++++++++++++++---- 1 file changed, 111 insertions(+), 30 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java index b3a0a1b3b3..629eaf65b8 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java @@ -19,7 +19,6 @@ package org.sleuthkit.autopsy.keywordsearch; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.io.CharSource; import java.io.IOException; @@ -33,10 +32,26 @@ import java.util.HashMap; import java.util.List; import static java.util.Locale.US; import java.util.Map; +import java.util.Map.Entry; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.Stream; +import org.apache.commons.lang3.tuple.Pair; +import org.apache.commons.lang3.tuple.Triple; +import org.apache.tika.metadata.DublinCore; +import org.apache.tika.metadata.FileSystem; +import org.apache.tika.metadata.IPTC; +import org.apache.tika.metadata.Office; +import org.apache.tika.metadata.OfficeOpenXMLCore; +import org.apache.tika.metadata.OfficeOpenXMLExtended; +import org.apache.tika.metadata.PDF; +import org.apache.tika.metadata.Photoshop; +import org.apache.tika.metadata.TikaCoreProperties; +import org.apache.tika.metadata.XMP; +import org.apache.tika.metadata.XMPDM; import org.apache.tika.mime.MimeTypes; import org.openide.util.Lookup; import org.openide.util.NbBundle; @@ -130,24 +145,69 @@ public final class KeywordSearchIngestModule implements FileIngestModule { "application/x-z", //NON-NLS "application/x-compress"); //NON-NLS - private static final List METADATA_DATE_TYPES - = ImmutableList.of( - "Last-Save-Date", //NON-NLS - "Last-Printed", //NON-NLS - "Creation-Date"); //NON-NLS - - private static final Map METADATA_TYPES_MAP = ImmutableMap.builder() - .put("Last-Save-Date", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_MODIFIED) - .put("Last-Author", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_USER_ID) - .put("Creation-Date", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED) - .put("Company", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ORGANIZATION) - .put("Author", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_OWNER) - .put("Application-Name", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME) - .put("Last-Printed", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_LAST_PRINTED_DATETIME) - .put("Producer", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME) - .put("Title", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DESCRIPTION) - .put("pdf:PDFVersion", BlackboardAttribute.ATTRIBUTE_TYPE.TSK_VERSION) - .build(); + private static final Map> METADATA_TYPES_MAP = Stream.of( + Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_MODIFIED, List.of( + "Last-Save-Date", + TikaCoreProperties.MODIFIED.getName(), + FileSystem.MODIFIED.getName(), + DublinCore.MODIFIED.getName(), + PDF.DOC_INFO_MODIFICATION_DATE.getName(), + PDF.PDFVT_MODIFIED.getName(), + XMP.MODIFY_DATE.getName(), + XMPDM.AUDIO_MOD_DATE.getName(), + XMPDM.METADATA_MOD_DATE.getName(), + XMPDM.VIDEO_MOD_DATE.getName())), + Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_USER_ID, List.of( + "Last-Author", + Office.LAST_AUTHOR.getName(), + TikaCoreProperties.MODIFIER.getName())), + Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED, List.of( + "Creation-Date", + TikaCoreProperties.CREATED.getName(), + FileSystem.CREATED.getName(), + DublinCore.CREATED.getName(), + IPTC.DATE_CREATED.getName(), + Office.CREATION_DATE.getName(), + PDF.DOC_INFO_CREATED.getName(), + Photoshop.DATE_CREATED.getName(), + XMP.CREATE_DATE.getName())), + Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ORGANIZATION, List.of( + "Company", + DublinCore.PUBLISHER.getName(), + IPTC.ORGANISATION_NAME.getName(), + OfficeOpenXMLExtended.COMPANY.getName())), + Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_OWNER, List.of( + "Author", + TikaCoreProperties.CREATOR.getName(), + DublinCore.CREATOR.getName(), + Office.INITIAL_AUTHOR.getName(), + Office.AUTHOR.getName(), + Photoshop.AUTHORS_POSITION.getName(), + PDF.DOC_INFO_CREATOR.getName())), + Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME, List.of( + "Application-Name", + "Producer", + OfficeOpenXMLExtended.APPLICATION.getName(), + org.apache.tika.metadata.RTFMetadata.EMB_APP_VERSION.getName())), + Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_LAST_PRINTED_DATETIME, List.of( + "Last-Printed", + OfficeOpenXMLCore.LAST_PRINTED.getName())), + Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DESCRIPTION, List.of( + "Title", + DublinCore.TITLE.getName(), + IPTC.TITLE.getName(), + PDF.DOC_INFO_TITLE.getName())), + Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_VERSION, List.of( + PDF.PDF_VERSION.getName(), + OfficeOpenXMLCore.VERSION.getName()))) + .flatMap(pr -> { + BlackboardAttribute.ATTRIBUTE_TYPE attrType = pr.getKey(); + List keys = pr.getValue(); + return IntStream.range(0, keys.size()) + .mapToObj(idx -> Triple.of(keys.get(idx), attrType, idx)); + }) + .collect(Collectors.toMap(Triple::getLeft, trip -> Pair.of(trip.getMiddle(), trip.getRight()), (v1, v2) -> v1.getRight() < v2.getRight() ? v1 : v2)); + private static final String IMAGE_MIME_TYPE_PREFIX = "image/"; @@ -624,14 +684,28 @@ public final class KeywordSearchIngestModule implements FileIngestModule { Collection attributes = new ArrayList<>(); Collection bbartifacts = new ArrayList<>(); + + /** + * Get best matched metadata for each attribute type found in metadata map. + */ + Map> intermediateMapping = new HashMap<>(); for (Map.Entry entry : metadata.entrySet()) { - if (METADATA_TYPES_MAP.containsKey(entry.getKey())) { - BlackboardAttribute bba = checkAttribute(entry.getKey(), entry.getValue()); - if (bba != null) { - attributes.add(bba); - } + Pair attrPair = METADATA_TYPES_MAP.get(entry.getKey()); + if (attrPair != null) { + intermediateMapping.compute(attrPair.getKey(), (k, v) -> { + if (v == null || v.getKey() > attrPair.getValue()) { + return Pair.of(attrPair.getValue(), entry.getValue()); + } else { + return v; + } + }); } } + + for (Entry> interEntry: intermediateMapping.entrySet()) { + attributes.add(checkAttribute(interEntry.getKey(), interEntry.getValue().getValue())); + } + if (!attributes.isEmpty()) { try { BlackboardArtifact bbart = aFile.newDataArtifact(new BlackboardArtifact.Type(BlackboardArtifact.ARTIFACT_TYPE.TSK_METADATA), attributes); @@ -653,24 +727,31 @@ public final class KeywordSearchIngestModule implements FileIngestModule { } } - private BlackboardAttribute checkAttribute(String key, String value) { + /** + * Create a metadata blackboard attribute based on specified content. + * @param attrType The attribute type. + * @param key The key for the attribute. + * @param value The value of the attribute. + * @return + */ + private BlackboardAttribute checkAttribute(BlackboardAttribute.ATTRIBUTE_TYPE attrType, String value) { String moduleName = KeywordSearchIngestModule.class.getName(); - if (!value.isEmpty() && value.charAt(0) != ' ') { - if (METADATA_DATE_TYPES.contains(key)) { + if (attrType != null && !value.isEmpty() && value.charAt(0) != ' ') { + if (attrType.getValueType() == BlackboardAttribute.TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE.DATETIME) { SimpleDateFormat metadataDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", US); Long metadataDateTime = Long.valueOf(0); try { String metadataDate = value.replaceAll("T", " ").replaceAll("Z", ""); Date usedDate = metadataDateFormat.parse(metadataDate); metadataDateTime = usedDate.getTime() / 1000; - return new BlackboardAttribute(METADATA_TYPES_MAP.get(key), moduleName, metadataDateTime); + return new BlackboardAttribute(attrType, moduleName, metadataDateTime); } catch (ParseException ex) { // catching error and displaying date that could not be parsed then will continue on. - logger.log(Level.WARNING, String.format("Failed to parse date/time %s for metadata attribute %s.", value, key), ex); //NON-NLS + logger.log(Level.WARNING, String.format("Failed to parse date/time %s for metadata attribute %s.", value, attrType == null ? "" : attrType.name()), ex); //NON-NLS return null; } } else { - return new BlackboardAttribute(METADATA_TYPES_MAP.get(key), moduleName, value); + return new BlackboardAttribute(attrType, moduleName, value); } } From 461cf2a324dd0cc511757791646e8b3a405b60ef Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sat, 18 Jan 2025 20:20:26 -0500 Subject: [PATCH 39/52] update for tests --- Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java index 1507e14792..b08193f99c 100644 --- a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java +++ b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java @@ -181,6 +181,7 @@ public class AutopsyTestCases { String img_path = getEscapedPath(System.getProperty("img_path")); String imageDir = img_path; ((JTextComponent) jtfo0.getSource()).setText(imageDir); + new Timeout("pausing", 60000).sleep(); JComboBoxOperator comboBoxOperator = new JComboBoxOperator(wo, 0); comboBoxOperator.setSelectedItem("(GMT-5:00) America/New_York"); wo.btNext().clickMouse(); @@ -219,6 +220,7 @@ public class AutopsyTestCases { // set the current directory one level above the directory containing logicalFileSet folder. fileChooserOperator.goUpLevel(); fileChooserOperator.chooseFile(new File(getEscapedPath(System.getProperty("img_path"))).getName()); + new Timeout("pausing", 60000).sleep(); wo.btNext().clickMouse(); } catch (TimeoutExpiredException ex) { logger.log(Level.SEVERE, "AutopsyTestCases.testNewCaseWizard encountered timed out", ex); From 04bfe053c475f0bd9220dca06dea6866a269e3a7 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sat, 18 Jan 2025 20:28:09 -0500 Subject: [PATCH 40/52] look at appveyor --- appveyor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index c43b0f7669..7703516136 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -6,14 +6,14 @@ cache: - C:\ProgramData\chocolatey\lib - '%APPVEYOR_BUILD_FOLDER%\Core\test\qa-functional\data' -image: Visual Studio 2015 +image: Visual Studio 2019 platform: x64 environment: global: TSK_HOME: "C:\\sleuthkit" - JDK_HOME: "C:\\Program Files\\Java\\jdk13" - JAVA_HOME: "C:\\Program Files\\Java\\jdk13" + JDK_HOME: "C:\\Program Files\\Java\\jdk17" + JAVA_HOME: "C:\\Program Files\\Java\\jdk17" PYTHON: "C:\\Python36-x64" install: From 2e6dda6e363e75172f7cfd28865d82dac3274f7b Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sat, 18 Jan 2025 20:32:35 -0500 Subject: [PATCH 41/52] update --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 7703516136..f5ac88ceb2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -27,7 +27,7 @@ install: - python setupSleuthkitBranch.py services: - - postgresql95 + - postgresql96 build_script: - cd %TSK_HOME% From 64104fd4a3d5199db498c6ee7ad37b9ee5339db9 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sun, 19 Jan 2025 09:25:11 -0500 Subject: [PATCH 42/52] update for tests --- Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java index b08193f99c..909514b7a8 100644 --- a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java +++ b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java @@ -177,6 +177,7 @@ public class AutopsyTestCases { JToggleButtonOperator jtbo = new JToggleButtonOperator(wo, 0); jtbo.clickMouse(); wo.btNext().clickMouse(); + new Timeout("pausing", 60000).sleep(); JTextFieldOperator jtfo0 = new JTextFieldOperator(wo, 0); String img_path = getEscapedPath(System.getProperty("img_path")); String imageDir = img_path; @@ -213,6 +214,7 @@ public class AutopsyTestCases { JToggleButtonOperator jtbo = new JToggleButtonOperator(wo, 2); jtbo.clickMouse(); wo.btNext().clickMouse(); + new Timeout("pausing", 60000).sleep(); JButtonOperator addButtonOperator = new JButtonOperator(wo, "Add"); addButtonOperator.pushNoBlock(); JFileChooserOperator fileChooserOperator = new JFileChooserOperator(); From bcad8ae128268bee94e971ed6aac3d49a5ea8f16 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sun, 19 Jan 2025 09:39:11 -0500 Subject: [PATCH 43/52] appveyor update --- appveyor.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index f5ac88ceb2..36fa7e6541 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -45,4 +45,7 @@ build_script: test_script: - cd %APPVEYOR_BUILD_FOLDER% - - cmd: ant -q test-no-regression + - SET NETBEANS_PLAT_VER=15 + - SET AUTOPSY_PLATFORM_PATH="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/%NETBEANS_PLAT_VER%" + - SET AUTOPSY_HARNESS_PATH="%AUTOPSY_PLATFORM_PATH%/harness" + - cmd: ant -q ant -Dnbplatform.active.dir="%AUTOPSY_PLATFORM_PATH%" -Dnbplatform.default.harness.dir="%AUTOPSY_HARNESS_PATH%" test-no-regression From ad8c422cd99b9897999136460dce96707563d990 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sun, 19 Jan 2025 11:16:53 -0500 Subject: [PATCH 44/52] update for appveyor --- appveyor.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 36fa7e6541..59516800fe 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -45,7 +45,4 @@ build_script: test_script: - cd %APPVEYOR_BUILD_FOLDER% - - SET NETBEANS_PLAT_VER=15 - - SET AUTOPSY_PLATFORM_PATH="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/%NETBEANS_PLAT_VER%" - - SET AUTOPSY_HARNESS_PATH="%AUTOPSY_PLATFORM_PATH%/harness" - - cmd: ant -q ant -Dnbplatform.active.dir="%AUTOPSY_PLATFORM_PATH%" -Dnbplatform.default.harness.dir="%AUTOPSY_HARNESS_PATH%" test-no-regression + - cmd: ant -q ant -Dnbplatform.active.dir="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/15" -Dnbplatform.default.harness.dir="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/15/harness" test-no-regression From e0cf037ba910ab20096a4d95ba643e5393631260 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sun, 19 Jan 2025 11:40:48 -0500 Subject: [PATCH 45/52] typo fix --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 59516800fe..6f9e9f1c9a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -45,4 +45,4 @@ build_script: test_script: - cd %APPVEYOR_BUILD_FOLDER% - - cmd: ant -q ant -Dnbplatform.active.dir="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/15" -Dnbplatform.default.harness.dir="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/15/harness" test-no-regression + - cmd: ant -q -Dnbplatform.active.dir="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/15" -Dnbplatform.default.harness.dir="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/15/harness" test-no-regression From b104f0b6bb6efc53a91db4b45e75aae71d7a1cf5 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sun, 19 Jan 2025 12:40:46 -0500 Subject: [PATCH 46/52] update --- appveyor.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 6f9e9f1c9a..9b4d1791c8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,6 +15,8 @@ environment: JDK_HOME: "C:\\Program Files\\Java\\jdk17" JAVA_HOME: "C:\\Program Files\\Java\\jdk17" PYTHON: "C:\\Python36-x64" + PLATFORM_REL_DIR: "netbeans-plat/15" + HARNESS_REL_DIR: "netbeans-plat/15/harness" install: - ps: choco install nuget.commandline @@ -41,8 +43,8 @@ build_script: - cmd: ant -q - ps: popd - cd %APPVEYOR_BUILD_FOLDER% - - cmd: ant -q build + - cmd: ant -q -Dnbplatform.active.dir="%APPVEYOR_BUILD_FOLDER%/%PLATFORM_REL_DIR%" -Dnbplatform.default.harness.dir="%APPVEYOR_BUILD_FOLDER%/%HARNESS_REL_DIR%" build test_script: - cd %APPVEYOR_BUILD_FOLDER% - - cmd: ant -q -Dnbplatform.active.dir="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/15" -Dnbplatform.default.harness.dir="%APPVEYOR_BUILD_FOLDER%/netbeans-plat/15/harness" test-no-regression + - cmd: ant -Dnbplatform.active.dir="%APPVEYOR_BUILD_FOLDER%/%PLATFORM_REL_DIR%" -Dnbplatform.default.harness.dir="%APPVEYOR_BUILD_FOLDER%/%HARNESS_REL_DIR%" test-no-regression From e8f5ff7bbe10fca40107291d3c78a41ab6e87442 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sun, 19 Jan 2025 12:45:49 -0500 Subject: [PATCH 47/52] update for test case again --- Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java index 909514b7a8..65a985af1d 100644 --- a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java +++ b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java @@ -185,6 +185,7 @@ public class AutopsyTestCases { new Timeout("pausing", 60000).sleep(); JComboBoxOperator comboBoxOperator = new JComboBoxOperator(wo, 0); comboBoxOperator.setSelectedItem("(GMT-5:00) America/New_York"); + new Timeout("pausing", 60000).sleep(); wo.btNext().clickMouse(); } catch (TimeoutExpiredException ex) { logger.log(Level.SEVERE, "AutopsyTestCases.testNewCaseWizard encountered timed out", ex); From 406b37d8aeb2d47f040aed0a354dbfab68605ee8 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sun, 19 Jan 2025 15:24:44 -0500 Subject: [PATCH 48/52] test update --- appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 9b4d1791c8..82e65d2c26 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -47,4 +47,5 @@ build_script: test_script: - cd %APPVEYOR_BUILD_FOLDER% - - cmd: ant -Dnbplatform.active.dir="%APPVEYOR_BUILD_FOLDER%/%PLATFORM_REL_DIR%" -Dnbplatform.default.harness.dir="%APPVEYOR_BUILD_FOLDER%/%HARNESS_REL_DIR%" test-no-regression + - cmd: ant -f "%APPVEYOR_BUILD_FOLDER%/Core/build.xml" -Dnbplatform.active.dir="%APPVEYOR_BUILD_FOLDER%/%PLATFORM_REL_DIR%" -Dnbplatform.default.harness.dir="%APPVEYOR_BUILD_FOLDER%/%HARNESS_REL_DIR%" test-unit + - cmd: ant -f "%APPVEYOR_BUILD_FOLDER%/KeywordSearch/build.xml" -Dnbplatform.active.dir="%APPVEYOR_BUILD_FOLDER%/%PLATFORM_REL_DIR%" -Dnbplatform.default.harness.dir="%APPVEYOR_BUILD_FOLDER%/%HARNESS_REL_DIR%" test-unit \ No newline at end of file From e27cbf2d28cbce5f7e59db4e4a3bdf7e13710e55 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Sun, 19 Jan 2025 17:19:37 -0500 Subject: [PATCH 49/52] lots of pauses --- .../org/sleuthkit/autopsy/testing/AutopsyTestCases.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java index 65a985af1d..668dca62ac 100644 --- a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java +++ b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java @@ -175,7 +175,9 @@ public class AutopsyTestCases { //select the toggle button for Disk Image or VM File it will be the first button created and proceed to next panel JToggleButtonOperator jtbo = new JToggleButtonOperator(wo, 0); + new Timeout("pausing", 60000).sleep(); jtbo.clickMouse(); + new Timeout("pausing", 60000).sleep(); wo.btNext().clickMouse(); new Timeout("pausing", 60000).sleep(); JTextFieldOperator jtfo0 = new JTextFieldOperator(wo, 0); @@ -187,6 +189,7 @@ public class AutopsyTestCases { comboBoxOperator.setSelectedItem("(GMT-5:00) America/New_York"); new Timeout("pausing", 60000).sleep(); wo.btNext().clickMouse(); + new Timeout("pausing", 60000).sleep(); } catch (TimeoutExpiredException ex) { logger.log(Level.SEVERE, "AutopsyTestCases.testNewCaseWizard encountered timed out", ex); logSystemDiagnostics(); @@ -210,10 +213,12 @@ public class AutopsyTestCases { // pass by host menu with auto-generate host (which should already be selected) wo.btNext().clickMouse(); - + new Timeout("pausing", 60000).sleep(); + //select the toggle button for Logical Files it will be the third button created and proceed to next panel JToggleButtonOperator jtbo = new JToggleButtonOperator(wo, 2); jtbo.clickMouse(); + new Timeout("pausing", 60000).sleep(); wo.btNext().clickMouse(); new Timeout("pausing", 60000).sleep(); JButtonOperator addButtonOperator = new JButtonOperator(wo, "Add"); @@ -225,6 +230,7 @@ public class AutopsyTestCases { fileChooserOperator.chooseFile(new File(getEscapedPath(System.getProperty("img_path"))).getName()); new Timeout("pausing", 60000).sleep(); wo.btNext().clickMouse(); + new Timeout("pausing", 60000).sleep(); } catch (TimeoutExpiredException ex) { logger.log(Level.SEVERE, "AutopsyTestCases.testNewCaseWizard encountered timed out", ex); logSystemDiagnostics(); From 6a59805b16f6fe7babfe6f84a3a10ad61cd64c4e Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 20 Jan 2025 13:56:15 -0500 Subject: [PATCH 50/52] update for test --- .../autopsy/testing/AutopsyTestCases.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java index 668dca62ac..86665516bb 100644 --- a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java +++ b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java @@ -46,6 +46,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import javax.imageio.ImageIO; import javax.swing.JDialog; +import javax.swing.SwingUtilities; import javax.swing.text.JTextComponent; import javax.swing.tree.TreePath; import org.apache.commons.io.IOUtils; @@ -64,7 +65,6 @@ import org.netbeans.jemmy.operators.JCheckBoxOperator; import org.netbeans.jemmy.operators.JComboBoxOperator; import org.netbeans.jemmy.operators.JDialogOperator; import org.netbeans.jemmy.operators.JFileChooserOperator; -import org.netbeans.jemmy.operators.JLabelOperator; import org.netbeans.jemmy.operators.JListOperator; import org.netbeans.jemmy.operators.JTabbedPaneOperator; import org.netbeans.jemmy.operators.JTableOperator; @@ -175,21 +175,24 @@ public class AutopsyTestCases { //select the toggle button for Disk Image or VM File it will be the first button created and proceed to next panel JToggleButtonOperator jtbo = new JToggleButtonOperator(wo, 0); - new Timeout("pausing", 60000).sleep(); jtbo.clickMouse(); - new Timeout("pausing", 60000).sleep(); wo.btNext().clickMouse(); - new Timeout("pausing", 60000).sleep(); + new Timeout("pausing", 5000).sleep(); JTextFieldOperator jtfo0 = new JTextFieldOperator(wo, 0); String img_path = getEscapedPath(System.getProperty("img_path")); String imageDir = img_path; + logger.log(Level.INFO, "setting image path to " + imageDir); ((JTextComponent) jtfo0.getSource()).setText(imageDir); - new Timeout("pausing", 60000).sleep(); + new Timeout("pausing", 5000).sleep(); JComboBoxOperator comboBoxOperator = new JComboBoxOperator(wo, 0); + logger.log(Level.INFO, "setting time zone"); comboBoxOperator.setSelectedItem("(GMT-5:00) America/New_York"); - new Timeout("pausing", 60000).sleep(); - wo.btNext().clickMouse(); - new Timeout("pausing", 60000).sleep(); + // do in invoke later to allow time for validation to happen. + SwingUtilities.invokeLater(() -> { + new Timeout("pausing", 5000).sleep(); + logger.log(Level.INFO, "clicking next button"); + wo.btNext().clickMouse(); + }); } catch (TimeoutExpiredException ex) { logger.log(Level.SEVERE, "AutopsyTestCases.testNewCaseWizard encountered timed out", ex); logSystemDiagnostics(); @@ -213,14 +216,11 @@ public class AutopsyTestCases { // pass by host menu with auto-generate host (which should already be selected) wo.btNext().clickMouse(); - new Timeout("pausing", 60000).sleep(); - + //select the toggle button for Logical Files it will be the third button created and proceed to next panel JToggleButtonOperator jtbo = new JToggleButtonOperator(wo, 2); jtbo.clickMouse(); - new Timeout("pausing", 60000).sleep(); wo.btNext().clickMouse(); - new Timeout("pausing", 60000).sleep(); JButtonOperator addButtonOperator = new JButtonOperator(wo, "Add"); addButtonOperator.pushNoBlock(); JFileChooserOperator fileChooserOperator = new JFileChooserOperator(); @@ -228,9 +228,7 @@ public class AutopsyTestCases { // set the current directory one level above the directory containing logicalFileSet folder. fileChooserOperator.goUpLevel(); fileChooserOperator.chooseFile(new File(getEscapedPath(System.getProperty("img_path"))).getName()); - new Timeout("pausing", 60000).sleep(); wo.btNext().clickMouse(); - new Timeout("pausing", 60000).sleep(); } catch (TimeoutExpiredException ex) { logger.log(Level.SEVERE, "AutopsyTestCases.testNewCaseWizard encountered timed out", ex); logSystemDiagnostics(); From f21febc9e9e0c6443497001cb4f2303e7a513041 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 20 Jan 2025 18:53:46 -0500 Subject: [PATCH 51/52] try new thread instead --- .../src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java index 86665516bb..f8e886d1d7 100644 --- a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java +++ b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java @@ -188,11 +188,11 @@ public class AutopsyTestCases { logger.log(Level.INFO, "setting time zone"); comboBoxOperator.setSelectedItem("(GMT-5:00) America/New_York"); // do in invoke later to allow time for validation to happen. - SwingUtilities.invokeLater(() -> { + new Thread(() -> { new Timeout("pausing", 5000).sleep(); logger.log(Level.INFO, "clicking next button"); wo.btNext().clickMouse(); - }); + }).start(); } catch (TimeoutExpiredException ex) { logger.log(Level.SEVERE, "AutopsyTestCases.testNewCaseWizard encountered timed out", ex); logSystemDiagnostics(); From f165decee54ae04f68c25de91659bb1cbd9e403d Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 20 Jan 2025 18:56:30 -0500 Subject: [PATCH 52/52] try new thread instead --- Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java index f8e886d1d7..774a2a7eb6 100644 --- a/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java +++ b/Testing/src/org/sleuthkit/autopsy/testing/AutopsyTestCases.java @@ -193,6 +193,7 @@ public class AutopsyTestCases { logger.log(Level.INFO, "clicking next button"); wo.btNext().clickMouse(); }).start(); + new Timeout("pausing", 8000).sleep(); } catch (TimeoutExpiredException ex) { logger.log(Level.SEVERE, "AutopsyTestCases.testNewCaseWizard encountered timed out", ex); logSystemDiagnostics();