diff --git a/Core/ivy.xml b/Core/ivy.xml index fba2d99acd..3d2352648d 100644 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -1,3 +1,6 @@ + +]> @@ -72,6 +75,15 @@ + + + + + + + + + @@ -84,5 +96,6 @@ + diff --git a/Core/ivysettings.xml b/Core/ivysettings.xml index fd792f6844..06c2d9308f 100644 --- a/Core/ivysettings.xml +++ b/Core/ivysettings.xml @@ -4,6 +4,7 @@ + diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index a24bcb423e..9adb1c7649 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -18,6 +18,7 @@ file.reference.bcprov-jdk15on-1.70.jar=release/modules/ext/bcprov-jdk15on-1.70.j file.reference.bcutil-jdk15on-1.70.jar=release/modules/ext/bcutil-jdk15on-1.70.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-lang3-3.10.jar=release/modules/ext/commons-lang3-3.10.jar @@ -31,6 +32,10 @@ file.reference.decodetect-core-0.3.jar=release/modules/ext/decodetect-core-0.3.j 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.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 @@ -46,6 +51,7 @@ file.reference.javax.activation-api-1.2.0.jar=release/modules/ext/javax.activati 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.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.jgraphx-4.2.2.jar=release/modules/ext/jgraphx-4.2.2.jar @@ -55,6 +61,7 @@ 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.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 diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 0553a915ca..9b960955aa 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -66,6 +66,14 @@ + + org.netbeans.modules.keyring + + + + 1.41 + + org.netbeans.modules.options.api @@ -165,14 +173,6 @@ 9.29 - org.openide.filesystems.nb @@ -323,6 +323,7 @@ + com.basistech.df.cybertriage.autopsy.ctoptions.subpanel net.sf.sevenzipjbinding net.sf.sevenzipjbinding.impl net.sf.sevenzipjbinding.simple @@ -448,6 +449,10 @@ ext/checker-qual-3.33.0.jar release/modules/ext/checker-qual-3.33.0.jar + + ext/commons-codec-1.11.jar + release/modules/ext/commons-codec-1.11.jar + ext/commons-dbcp2-2.9.0.jar release/modules/ext/commons-dbcp2-2.9.0.jar @@ -500,6 +505,22 @@ ext/guava-32.0.1-jre.jar release/modules/ext/guava-32.0.1-jre.jar + + ext/httpclient-4.5.14.jar + release/modules/ext/httpclient-4.5.14.jar + + + ext/httpclient-win-4.5.14.jar + release/modules/ext/httpclient-win-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/icepdf-core-6.2.2.jar release/modules/ext/icepdf-core-6.2.2.jar @@ -560,6 +581,10 @@ ext/jaxb-runtime-2.3.3.jar release/modules/ext/jaxb-runtime-2.3.3.jar + + ext/jdom-2.0.5-contrib.jar + release/modules/ext/jdom-2.0.5-contrib.jar + ext/jdom-2.0.5.jar release/modules/ext/jdom-2.0.5.jar @@ -596,6 +621,10 @@ ext/libphonenumber-8.12.45.jar release/modules/ext/libphonenumber-8.12.45.jar + + ext/license4j-runtime-library-4.7.1.jar + release/modules/ext/license4j-runtime-library-4.7.1.jar + ext/listenablefuture-1.0.jar release/modules/ext/listenablefuture-1.0.jar diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties b/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties new file mode 100644 index 0000000000..caab36116d --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties @@ -0,0 +1,9 @@ + +# Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license +# Click nbfs://nbhost/SystemFileSystem/Templates/Other/properties.properties to edit this template + + +CTIntegrationMissingDialog.title=Cyber Triage Importer Module Required +CTIntegrationMissingDialog.descriptionLabel.text=

The Cyber Triage Importer Module is required to open this case.

To open this case:

  • Extract the module from the Integrations tab in the Cyber Triage options panel.
  • Select the 'Plugins' option from the 'Tools' menu, and go to the 'Downloaded' tab.
  • Click 'Add Plugins...' and select the path of the plugin.
  • Press 'Install' to finish the installation.
+CTIntegrationMissingDialog.docsLabel.text=For more information, refer to the Cyber Triage Users Guide +CTIntegrationMissingDialog.okButton.text=OK diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties-MERGED b/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties-MERGED new file mode 100644 index 0000000000..caab36116d --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/Bundle.properties-MERGED @@ -0,0 +1,9 @@ + +# Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license +# Click nbfs://nbhost/SystemFileSystem/Templates/Other/properties.properties to edit this template + + +CTIntegrationMissingDialog.title=Cyber Triage Importer Module Required +CTIntegrationMissingDialog.descriptionLabel.text=

The Cyber Triage Importer Module is required to open this case.

To open this case:

  • Extract the module from the Integrations tab in the Cyber Triage options panel.
  • Select the 'Plugins' option from the 'Tools' menu, and go to the 'Downloaded' tab.
  • Click 'Add Plugins...' and select the path of the plugin.
  • Press 'Install' to finish the installation.
+CTIntegrationMissingDialog.docsLabel.text=For more information, refer to the Cyber Triage Users Guide +CTIntegrationMissingDialog.okButton.text=OK diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.form b/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.form new file mode 100644 index 0000000000..e61f2f6cbd --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.form @@ -0,0 +1,131 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.java b/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.java new file mode 100644 index 0000000000..9e534c9833 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/CTIntegrationMissingDialog.java @@ -0,0 +1,165 @@ +/* + * 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; + +import java.awt.Desktop; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.logging.Level; +import javax.swing.JComponent; +import org.sleuthkit.autopsy.coreutils.Logger; + +/** + * Provides directions with how to enable CT integration with Autopsy when + * trying to open a CT exported case. + */ +public class CTIntegrationMissingDialog extends javax.swing.JDialog { + + private static final String DOCS_PAGE_URL = "https://docs.cybertriage.com/en/latest/chapters/integrations/autopsy.html"; + + private static final Logger LOGGER = Logger.getLogger(CTIntegrationMissingDialog.class.getName()); + + /** + * Creates new form CTIntegrationMissingDialog + */ + public CTIntegrationMissingDialog(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + } + + /** + * 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 + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; + + javax.swing.JLabel descriptionLabel = new javax.swing.JLabel(); + javax.swing.JLabel docsLabel = new javax.swing.JLabel(); + link = new javax.swing.JLabel(); + javax.swing.JPanel paddingPanel = new javax.swing.JPanel(); + javax.swing.JButton okButton = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle(org.openide.util.NbBundle.getMessage(CTIntegrationMissingDialog.class, "CTIntegrationMissingDialog.title")); // NOI18N + setAlwaysOnTop(true); + setResizable(false); + getContentPane().setLayout(new java.awt.GridBagLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(descriptionLabel, org.openide.util.NbBundle.getMessage(CTIntegrationMissingDialog.class, "CTIntegrationMissingDialog.descriptionLabel.text")); // NOI18N + descriptionLabel.setMinimumSize(new java.awt.Dimension(483, 116)); + 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); + getContentPane().add(descriptionLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(docsLabel, org.openide.util.NbBundle.getMessage(CTIntegrationMissingDialog.class, "CTIntegrationMissingDialog.docsLabel.text")); // NOI18N + docsLabel.setMinimumSize(new java.awt.Dimension(312, 16)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0); + getContentPane().add(docsLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(link, "" + DOCS_PAGE_URL + ""); + link.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + link.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + linkMouseClicked(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 1; + 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); + getContentPane().add(link, gridBagConstraints); + + javax.swing.GroupLayout paddingPanelLayout = new javax.swing.GroupLayout(paddingPanel); + paddingPanel.setLayout(paddingPanelLayout); + paddingPanelLayout.setHorizontalGroup( + paddingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); + paddingPanelLayout.setVerticalGroup( + paddingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 2; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.weighty = 1.0; + getContentPane().add(paddingPanel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(CTIntegrationMissingDialog.class, "CTIntegrationMissingDialog.okButton.text")); // NOI18N + okButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + okButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; + gridBagConstraints.insets = new java.awt.Insets(10, 5, 5, 5); + getContentPane().add(okButton, gridBagConstraints); + + pack(); + }// //GEN-END:initComponents + + private void linkMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_linkMouseClicked + if (Desktop.isDesktopSupported()) { + try { + Desktop.getDesktop().browse(new URI(DOCS_PAGE_URL)); + } catch (IOException | URISyntaxException e) { + LOGGER.log(Level.SEVERE, "Error opening link to: " + DOCS_PAGE_URL, e); + } + } else { + LOGGER.log(Level.WARNING, "Desktop API is not supported. Link cannot be opened."); + } + }//GEN-LAST:event_linkMouseClicked + + private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed + dispose(); + }//GEN-LAST:event_okButtonActionPerformed + + public void showDialog(JComponent parentComp) { + setLocationRelativeTo(parentComp == null ? getParent() : parentComp); + pack(); + setVisible(true); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel link; + // End of variables declaration//GEN-END:variables +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTApiDAO.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTApiDAO.java new file mode 100644 index 0000000000..f21873f565 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTApiDAO.java @@ -0,0 +1,133 @@ +/* + * 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.ctapi; + +import com.basistech.df.cybertriage.autopsy.ctapi.json.AuthTokenRequest; +import com.basistech.df.cybertriage.autopsy.ctapi.json.AuthTokenResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.json.AuthenticatedRequestData; +import com.basistech.df.cybertriage.autopsy.ctapi.json.CTCloudBean; +import com.basistech.df.cybertriage.autopsy.ctapi.json.CTCloudBeanResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.json.DecryptedLicenseResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.json.FileReputationRequest; +import com.basistech.df.cybertriage.autopsy.ctapi.json.FileUploadRequest; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseRequest; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.json.MetadataUploadRequest; +import com.basistech.df.cybertriage.autopsy.ctapi.util.CTHostIDGenerationUtil; +import java.io.InputStream; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.commons.collections.CollectionUtils; +import org.sleuthkit.autopsy.core.UserPreferences; +import org.sleuthkit.autopsy.coreutils.Version; + +/** + * + * Data access layer for handling the CT api. + */ +public class CTApiDAO { + + private static final String LICENSE_REQUEST_PATH = "/_ah/api/license/v1/activate"; + private static final String AUTH_TOKEN_REQUEST_PATH = "/_ah/api/auth/v2/generate_token"; + private static final String CTCLOUD_SERVER_HASH_PATH = "/_ah/api/reputation/v1/query/file/hash/md5?query_types=CORRELATION,MALWARE"; + private static final String CTCLOUD_UPLOAD_FILE_METADATA_PATH = "/_ah/api/reputation/v1/upload/meta"; + + private static final String AUTOPSY_PRODUCT = "AUTOPSY"; + + private static final CTApiDAO instance = new CTApiDAO(); + + private CTApiDAO() { + } + + public static CTApiDAO getInstance() { + return instance; + } + + private static String getAppVersion() { + return Version.getVersion(); + } + + private final CTCloudHttpClient httpClient = CTCloudHttpClient.getInstance(); + + public LicenseResponse getLicenseInfo(String licenseString) throws CTCloudException { + LicenseRequest licenseRequest = new LicenseRequest() + .setBoostLicenseCode(licenseString) + .setHostId(CTHostIDGenerationUtil.generateLicenseHostID()) + .setProduct(AUTOPSY_PRODUCT) + .setTimeZoneId(UserPreferences.getInferredUserTimeZone()); + + return httpClient.doPost(LICENSE_REQUEST_PATH, licenseRequest, LicenseResponse.class); + + } + + public AuthTokenResponse getAuthToken(DecryptedLicenseResponse decrypted) throws CTCloudException { + return getAuthToken(decrypted, null); + } + + public AuthTokenResponse getAuthToken(DecryptedLicenseResponse decrypted, Long fileUploadSize) throws CTCloudException { + AuthTokenRequest authTokenRequest = new AuthTokenRequest() + .setAutopsyVersion(getAppVersion()) + .setRequestFileUpload(fileUploadSize != null && fileUploadSize > 0) + .setFileUploadSize(fileUploadSize != null && fileUploadSize > 0 ? fileUploadSize : null) + .setBoostLicenseId(decrypted.getBoostLicenseId()) + .setHostId(decrypted.getLicenseHostId()); + + return httpClient.doPost(AUTH_TOKEN_REQUEST_PATH, authTokenRequest, AuthTokenResponse.class); + } + + public void uploadFile(FileUploadRequest fileUploadRequest) throws CTCloudException { + httpClient.doFileUploadPut(fileUploadRequest); + } + + public void uploadMeta(AuthenticatedRequestData authenticatedRequestData, MetadataUploadRequest metaRequest) throws CTCloudException { + httpClient.doPost(CTCLOUD_UPLOAD_FILE_METADATA_PATH, getAuthParams(authenticatedRequestData), metaRequest, null); + } + + private static Map getAuthParams(AuthenticatedRequestData authenticatedRequestData) { + return new HashMap() { + { + put("api_key", authenticatedRequestData.getApiKey()); + put("token", authenticatedRequestData.getToken()); + put("host_id", authenticatedRequestData.getHostId()); + } + }; + } + + public List getReputationResults(AuthenticatedRequestData authenticatedRequestData, List md5Hashes) throws CTCloudException { + if (CollectionUtils.isEmpty(md5Hashes)) { + return Collections.emptyList(); + } + + FileReputationRequest fileRepReq = new FileReputationRequest() + .setHashes(md5Hashes); + + CTCloudBeanResponse resp = httpClient.doPost( + CTCLOUD_SERVER_HASH_PATH, + getAuthParams(authenticatedRequestData), + fileRepReq, + CTCloudBeanResponse.class + ); + + return resp == null || resp.getItems() == null + ? Collections.emptyList() + : resp.getItems(); + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudException.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudException.java new file mode 100644 index 0000000000..95605c4bce --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudException.java @@ -0,0 +1,99 @@ +/* + * 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.ctapi; + + +import java.util.Objects; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.exception.ExceptionUtils; + +/** + * An exception thrown due to an error that occurs while making a CT Cloud REST + * API request. + */ +public class CTCloudException extends Exception{ + private final ErrorCode errorCode; + + 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."), + 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."), + TEMP_UNAVAILABLE("CT-500", "CyberTriage Cloud Service temporarily unavailable; please try again later. If this problem persists, contact Basis support at " + Constants.SUPPORT_AT_CYBERTRIAGE_DOT_COM), + UNKNOWN("CT-080", "Unknown error while communicating with CyberTriage Cloud Service. If this problem persists, contact Basis support at "+ Constants.SUPPORT_AT_CYBERTRIAGE_DOT_COM +" for assistance."), + UNKNOWN_HOST("CT-081", "Unknown host error. If this problem persists, contact Basis support at "+ Constants.SUPPORT_AT_CYBERTRIAGE_DOT_COM +" for assistance."), + NETWORK_ERROR("CT-015", "Error connecting to CyberTriage Cloud.\n" + + "Check your firewall or proxy settings.\n" + + "Contact Support (support@cybertriage.com) for further assistance"); + private final String errorcode; + private final String description; + + private ErrorCode(String errorcode, String description) { + this.errorcode = errorcode; + this.description = description; + } + + public String getCode() { + return errorcode; + } + + public String getDescription() { + return description; + } + + } + + public CTCloudException(CTCloudException.ErrorCode errorCode) { + super(errorCode.name()); + this.errorCode = errorCode; + } + + public CTCloudException(CTCloudException.ErrorCode errorCode, Throwable throwable) { + super(errorCode.name(), throwable); + this.errorCode = errorCode; + } + + public ErrorCode getErrorCode() { + return errorCode; + } + + public String getErrorDetails() { + if(getErrorCode() == CTCloudException.ErrorCode.UNKNOWN && Objects.nonNull(getCause())){ + return String.format("An API error %s occurred. Please try again, and contact Basis support at %s for help if the problem persists.", + StringUtils.isNotBlank(getCause().getLocalizedMessage()) ? "("+getCause().getLocalizedMessage()+")": "(Unknown)", + Constants.SUPPORT_AT_CYBERTRIAGE_DOT_COM ); + }else { + return getErrorCode().getDescription(); + } + } + + /* + * Attempts to find a more specific error code than "Unknown" for the given exception. + */ + public static ErrorCode parseUnknownException(Throwable throwable) { + + String stackTrace = ExceptionUtils.getStackTrace(throwable); + if (stackTrace.contains("UnknownHostException")) { + return ErrorCode.UNKNOWN_HOST; + } + + return ErrorCode.UNKNOWN; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudHttpClient.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudHttpClient.java new file mode 100644 index 0000000000..0a7c69cdee --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/CTCloudHttpClient.java @@ -0,0 +1,436 @@ +/* + * 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.ctapi; + +import com.basistech.df.cybertriage.autopsy.ctapi.CTCloudException.ErrorCode; +import com.basistech.df.cybertriage.autopsy.ctapi.json.FileUploadRequest; +import com.basistech.df.cybertriage.autopsy.ctapi.util.ObjectMapperUtil; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.io.InputStream; +import java.net.Proxy; +import java.net.ProxySelector; +import java.net.SocketAddress; +import java.net.URI; +import java.net.URISyntaxException; +import java.security.KeyManagementException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.UnrecoverableKeyException; +import java.text.MessageFormat; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.logging.Level; +import java.util.stream.Stream; +import javax.net.ssl.KeyManager; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpEntity; +import org.apache.http.HttpStatus; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.util.EntityUtils; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.InputStreamEntity; +import org.apache.http.entity.StringEntity; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.client.WinHttpClients; +import org.apache.http.impl.conn.SystemDefaultRoutePlanner; +import org.apache.http.ssl.SSLInitializationException; +import org.netbeans.core.ProxySettings; +import org.openide.util.Lookup; +import org.sleuthkit.autopsy.coreutils.Version; + +/** + * Makes the http requests to CT cloud. + * + * NOTE: regarding proxy settings, the host and port are handled by the + * NbProxySelector. Any proxy authentication is handled by NbAuthenticator which + * is installed at startup (i.e. NbAuthenticator.install). See + * GeneralOptionsModel.testHttpConnection to see how the general options panel + * tests the connection. + */ +class CTCloudHttpClient { + + private static final Logger LOGGER = Logger.getLogger(CTCloudHttpClient.class.getName()); + private static final String HOST_URL = Version.getBuildType() == Version.Type.RELEASE ? Constants.CT_CLOUD_SERVER : Constants.CT_CLOUD_DEV_SERVER; + private static final String NB_PROXY_SELECTOR_NAME = "org.netbeans.core.NbProxySelector"; + + private static final int CONNECTION_TIMEOUT_MS = 58 * 1000; // milli sec + + private static final CTCloudHttpClient instance = new CTCloudHttpClient(); + + public static CTCloudHttpClient getInstance() { + return instance; + } + + private final ObjectMapper mapper = ObjectMapperUtil.getInstance().getDefaultObjectMapper(); + private final SSLContext sslContext; + private final ProxySelector proxySelector; + + private CTCloudHttpClient() { + // leave as null for now unless we want to customize this at a later date + this.sslContext = createSSLContext(); + this.proxySelector = getProxySelector(); + } + + private static URI getUri(String host, String path, Map urlReqParams) throws URISyntaxException { + String url = host + path; + URIBuilder builder = new URIBuilder(url); + + if (!MapUtils.isEmpty(urlReqParams)) { + for (Entry e : urlReqParams.entrySet()) { + String key = e.getKey(); + String value = e.getValue(); + if (StringUtils.isNotBlank(key) || StringUtils.isNotBlank(value)) { + builder.addParameter(key, value); + } + } + } + + return builder.build(); + } + + public O doPost(String urlPath, Object jsonBody, Class classType) throws CTCloudException { + return doPost(urlPath, Collections.emptyMap(), jsonBody, classType); + } + + public O doPost(String urlPath, Map urlReqParams, Object jsonBody, Class classType) throws CTCloudException { + + URI postURI = null; + try { + postURI = getUri(HOST_URL, urlPath, urlReqParams); + LOGGER.log(Level.INFO, "initiating http connection to ctcloud server"); + try (CloseableHttpClient httpclient = createConnection(proxySelector, sslContext)) { + + HttpPost postRequest = new HttpPost(postURI); + + configureRequestTimeout(postRequest); + postRequest.setHeader("Content-type", "application/json"); + + if (jsonBody != null) { + String requestBody = mapper.writeValueAsString(jsonBody); + if (StringUtils.isNotBlank(requestBody)) { + HttpEntity entity = new StringEntity(requestBody, "UTF-8"); + postRequest.setEntity(entity); + } + } + + LOGGER.log(Level.INFO, "initiating http post request to ctcloud server " + postRequest.getURI()); + try (CloseableHttpResponse response = httpclient.execute(postRequest)) { + + if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { + LOGGER.log(Level.INFO, "Response Received. - Status OK"); + // Parse Response + if (classType != null) { + HttpEntity entity = response.getEntity(); + String entityStr = EntityUtils.toString(entity); + O respObj = mapper.readValue(entityStr, classType); + return respObj; + } else { + return null; + } + } else { + LOGGER.log(Level.WARNING, "Response Received. - Status Error {}", response.getStatusLine()); + handleNonOKResponse(response, ""); + } + } catch (Exception ex) { + LOGGER.log(Level.WARNING, "Error when parsing response from CyberTriage Cloud", ex); + throw new CTCloudException(CTCloudException.parseUnknownException(ex), ex); + } + } + } catch (IOException ex) { + LOGGER.log(Level.WARNING, "IO Exception raised when connecting to CT Cloud using " + postURI, ex); + throw new CTCloudException(CTCloudException.ErrorCode.NETWORK_ERROR, ex); + } catch (SSLInitializationException ex) { + LOGGER.log(Level.WARNING, "No such algorithm exception raised when creating SSL connection for CT Cloud using " + postURI, ex); + throw new CTCloudException(CTCloudException.ErrorCode.NETWORK_ERROR, ex); + } catch (URISyntaxException ex) { + LOGGER.log(Level.WARNING, "Wrong URL syntax for CT Cloud " + postURI, ex); + throw new CTCloudException(CTCloudException.ErrorCode.UNKNOWN, ex); + } + + return null; + } + + public void doFileUploadPut(FileUploadRequest fileUploadRequest) throws CTCloudException { + if (fileUploadRequest == null) { + throw new CTCloudException(ErrorCode.BAD_REQUEST, new IllegalArgumentException("fileUploadRequest cannot be null")); + } + + String fullUrlPath = fileUploadRequest.getFullUrlPath(); + String fileName = fileUploadRequest.getFileName(); + InputStream fileInputStream = fileUploadRequest.getFileInputStream(); + Long contentLength = fileUploadRequest.getContentLength(); + + if (StringUtils.isBlank(fullUrlPath) || fileInputStream == null || contentLength == null || contentLength <= 0) { + throw new CTCloudException(ErrorCode.BAD_REQUEST, new IllegalArgumentException("fullUrlPath, fileInputStream, contentLength must not be empty, null or less than 0")); + } + + URI putUri; + try { + putUri = new URI(fullUrlPath); + } catch (URISyntaxException ex) { + LOGGER.log(Level.WARNING, "Wrong URL syntax for CT Cloud " + fullUrlPath, ex); + throw new CTCloudException(CTCloudException.ErrorCode.UNKNOWN, ex); + } + + try (CloseableHttpClient httpclient = createConnection(proxySelector, sslContext)) { + LOGGER.log(Level.INFO, "initiating http post request to ctcloud server " + fullUrlPath); + HttpPut put = new HttpPut(putUri); + configureRequestTimeout(put); + + put.addHeader("Connection", "keep-alive"); + put.setEntity(new InputStreamEntity(fileInputStream, contentLength, ContentType.APPLICATION_OCTET_STREAM)); + + try (CloseableHttpResponse response = httpclient.execute(put)) { + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK || statusCode == HttpStatus.SC_NO_CONTENT) { + LOGGER.log(Level.INFO, "Response Received. - Status OK"); + } else { + LOGGER.log(Level.WARNING, MessageFormat.format("Response Received. - Status Error {0}", response.getStatusLine())); + handleNonOKResponse(response, fileName); + } + } + } catch (SSLInitializationException ex) { + LOGGER.log(Level.WARNING, "SSL exception raised when connecting to Reversing Labs for file content upload ", ex); + throw new CTCloudException(CTCloudException.ErrorCode.NETWORK_ERROR, ex); + } catch (IOException ex) { + LOGGER.log(Level.WARNING, "IO Exception raised when connecting to Reversing Labs for file content upload ", ex); + throw new CTCloudException(CTCloudException.ErrorCode.NETWORK_ERROR, ex); + } + } + + /** + * A generic way to handle the HTTP response - when the response code is NOT + * 200 OK. + * + * @param response + * @param fileName - used only for logging. + * @throws MalwareScannerException + * @throws IOException + */ + private void handleNonOKResponse(CloseableHttpResponse response, String fileName) throws CTCloudException, IOException { + LOGGER.log(Level.WARNING, MessageFormat.format( + "Response code {0}. Message Body {1}", + response.getStatusLine().getStatusCode(), + EntityUtils.toString(response.getEntity()))); + + switch (response.getStatusLine().getStatusCode()) { + + case HttpStatus.SC_BAD_REQUEST: + //400: Bad request => Unsupported HTTP method or invalid http request (e.g., empty body). + throw new CTCloudException(CTCloudException.ErrorCode.BAD_REQUEST); + case HttpStatus.SC_UNAUTHORIZED: + //401 Invalid API key => An invalid API key, or no API key, has been provided + throw new CTCloudException(CTCloudException.ErrorCode.INVALID_KEY); + case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED: + // 407 Proxy server authentication required. + throw new CTCloudException(CTCloudException.ErrorCode.PROXY_UNAUTHORIZED); + case HttpStatus.SC_FORBIDDEN: + throw new CTCloudException(CTCloudException.ErrorCode.UN_AUTHORIZED); + case HttpStatus.SC_INTERNAL_SERVER_ERROR: + //500 Internal error Server temporarily unavailable; please try again later. If the issue persists, please contact RL. + throw new CTCloudException(CTCloudException.ErrorCode.TEMP_UNAVAILABLE); + case HttpStatus.SC_SERVICE_UNAVAILABLE: + //503 Server is too busy. Try again later. + //503 Failed to request scan. Try again later. The server is currently unable to handle the request due to a temporary overloading or maintenance of the server. If the issue persists, please contact RL. + throw new CTCloudException(CTCloudException.ErrorCode.TEMP_UNAVAILABLE); + case HttpStatus.SC_GATEWAY_TIMEOUT: + throw new CTCloudException(CTCloudException.ErrorCode.GATEWAY_TIMEOUT); + default: + String returnData = EntityUtils.toString(response.getEntity()); + LOGGER.log(Level.WARNING, MessageFormat.format("upload response content for {0}:\n {1}", fileName, returnData)); + throw new CTCloudException(CTCloudException.ErrorCode.NETWORK_ERROR); + } + } + + /** + * NOTE That this is not a perfect solution as timeouts set this way does + * not terminate a connection forcefully after a specified interval. so if + * there is data streaming in from the server at a small speed the + * connection will be kept open. + * + * @param request + */ + private void configureRequestTimeout(HttpRequestBase request) { + RequestConfig config = RequestConfig.custom() + .setConnectionRequestTimeout(CONNECTION_TIMEOUT_MS) + .setConnectTimeout(CONNECTION_TIMEOUT_MS) + .setSocketTimeout(CONNECTION_TIMEOUT_MS) + .build(); + request.setConfig(config); + } + + /** + * Get ProxySelector present (favoring NbProxySelector if present). + * + * @return The found ProxySelector or null. + */ + private static ProxySelector getProxySelector() { + Collection selectors = Lookup.getDefault().lookupAll(ProxySelector.class); + return (selectors != null ? selectors.stream() : Stream.empty()) + .filter(s -> s != null) + .map(s -> (ProxySelector) s) + .sorted((a, b) -> { + String aName = a.getClass().getCanonicalName(); + String bName = b.getClass().getCanonicalName(); + boolean aIsNb = aName.equalsIgnoreCase(NB_PROXY_SELECTOR_NAME); + boolean bIsNb = bName.equalsIgnoreCase(NB_PROXY_SELECTOR_NAME); + if (aIsNb == bIsNb) { + return StringUtils.compareIgnoreCase(aName, bName); + } else { + return aIsNb ? -1 : 1; + } + }) + .findFirst() + // TODO take this out to remove proxy selector logging + .map(s -> new LoggingProxySelector(s)) + .orElse(null); + } + + /** + * Create an SSLContext object using our in-memory keystore. + * + * @return + */ + private static SSLContext createSSLContext() { + LOGGER.log(Level.INFO, "Creating custom SSL context"); + try { + + // I'm not sure how much of this is really necessary to set up, but it works + SSLContext sslContext = SSLContext.getInstance("TLSv1.2"); + KeyManager[] keyManagers = getKeyManagers(); + TrustManager[] trustManagers = getTrustManagers(); + sslContext.init(keyManagers, trustManagers, new SecureRandom()); + return sslContext; + } catch (NoSuchAlgorithmException | KeyManagementException ex) { + LOGGER.log(Level.SEVERE, "Error creating SSL context", ex); + return null; + } + } + + // jvm default key manager + // based in part on this: https://stackoverflow.com/questions/1793979/registering-multiple-keystores-in-jvm/16229909 + private static KeyManager[] getKeyManagers() { + LOGGER.log(Level.INFO, "Using default algorithm to create trust store: " + KeyManagerFactory.getDefaultAlgorithm()); + try { + KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + kmf.init(null, null); + return kmf.getKeyManagers(); + } catch (NoSuchAlgorithmException | KeyStoreException | UnrecoverableKeyException ex) { + LOGGER.log(Level.SEVERE, "Error getting KeyManagers", ex); + return new KeyManager[0]; + } + + } + + // jvm default trust store + // based in part on this: https://stackoverflow.com/questions/1793979/registering-multiple-keystores-in-jvm/16229909 + private static TrustManager[] getTrustManagers() { + try { + LOGGER.log(Level.INFO, "Using default algorithm to create trust store: " + TrustManagerFactory.getDefaultAlgorithm()); + TrustManagerFactory tmf + = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + tmf.init((KeyStore) null); + X509TrustManager tm = (X509TrustManager) tmf.getTrustManagers()[0]; + + return new TrustManager[]{tm}; + } catch (KeyStoreException | NoSuchAlgorithmException ex) { + LOGGER.log(Level.SEVERE, "Error getting TrustManager", ex); + return new TrustManager[0]; + } + } + + /** + * Creates a connection to CT Cloud with the given arguments. + * + * @param proxySelector The proxy selector. + * @param sslContext The ssl context or null. + * @return The connection to CT Cloud. + */ + private static CloseableHttpClient createConnection(ProxySelector proxySelector, SSLContext sslContext) throws SSLInitializationException { + HttpClientBuilder builder; + + if (ProxySettings.getProxyType() != ProxySettings.DIRECT_CONNECTION + && StringUtils.isBlank(ProxySettings.getAuthenticationUsername()) + && ArrayUtils.isEmpty(ProxySettings.getAuthenticationPassword()) + && WinHttpClients.isWinAuthAvailable()) { + + builder = WinHttpClients.custom(); + builder.useSystemProperties(); + LOGGER.log(Level.WARNING, "Using Win HTTP Client"); + } else { + builder = HttpClients.custom(); + // builder.setDefaultRequestConfig(config); + LOGGER.log(Level.WARNING, "Using default http client"); + } + + if (sslContext != null) { + builder.setSSLContext(sslContext); + } + + if (proxySelector != null) { + builder.setRoutePlanner(new SystemDefaultRoutePlanner(proxySelector)); + } + + return builder.build(); + } + + private static class LoggingProxySelector extends ProxySelector { + + private final ProxySelector delegate; + + public LoggingProxySelector(ProxySelector delegate) { + this.delegate = delegate; + } + + @Override + public List select(URI uri) { + List selectedProxies = delegate.select(uri); + LOGGER.log(Level.INFO, MessageFormat.format("Proxy selected for {0} are {1}", uri, selectedProxies)); + return selectedProxies; + } + + @Override + public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { + LOGGER.log(Level.WARNING, MessageFormat.format("Connection failed connecting to {0} socket address {1}", uri, sa), ioe); + delegate.connectFailed(uri, sa, ioe); + } + + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/Constants.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/Constants.java new file mode 100644 index 0000000000..8290d6621d --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/Constants.java @@ -0,0 +1,87 @@ +/* + * 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.ctapi; + +import java.net.URI; + +/** + * Constants regarding connections to cyber triage cloud. + */ +final class Constants { + + public static final String CYBER_TRIAGE = "CyberTriage"; + + public static final String IS_MEMORY_IMAGE = "IS_MEMORY_IMAGE"; + + + public static final String SSLTEST_URL = "https://www2.cybertriage.com/ssl_test.html"; + + + + + public static final String CT_CLOUD_DEV_SERVER = "https://cyber-triage-dev.appspot.com"; + + public static final String CT_CLOUD_SERVER = "https://rep1.cybertriage.com"; + + /** + * Link to watch demo video + * @since 3.1.0 + */ + public static final String DEMO_VIDEO_URL = "https://www.cybertriage.com/video/cyber-triage-demo-video/?utm_source=Cyber+Triage+Tool&utm_campaign=Eval+Demo+Video"; + + /** + * Link request quote + * @since 3.1.0 + */ + public static final String REQUEST_QUOTE_URL = "https://www.cybertriage.com/request-quote/?utm_source=Cyber+Triage+Tool&utm_campaign=Eval+Quote"; + + /** + * Latest help document URL + * @since 3.2.0 + */ + public static final URI USER_GUIDE_LATEST_URL = URI.create("https://docs.cybertriage.com/en/latest/?utm_source=Cyber+Triage+Tool&utm_campaign=Help+Docs"); + + /** + * Visit website URL + * @since 3.1.0 + */ + public static final String VISIT_WEBSITE_URL ="https://www.cybertriage.com/eval_data_202109/?utm_source=Cyber+Triage+Tool&utm_campaign=Eval+Data+Button"; + + + /** + * URL for visiting the website after the data is ingested on the dashboard. + */ + public static final String EVAL_WEBSITE_AUTO_URL = "https://www.cybertriage.com/eval_data_202109_auto/?utm_source=Cyber+Triage+Tool&utm_campaign=Eval+Data+Auto/"; //CT-4045 + + + public static final String SUPPORT_AT_CYBERTRIAGE_DOT_COM = "support@cybertriage.com"; + + public static final String SALES_AT_CYBERTRIAGE_DOT_COM = "sales@cybertriage.com"; + + public final static String AUTODETECT = "Auto Detect"; + + public final static int RESTAPI_PORT = 9443; + + public static final String INVALID_HOSTNAME_REQUEST = "Request rejected. Invalid host name. Hostname contains characters that are not allowed. \n" + + "Characters that are not allowed include `~!@#$&^*(){}[]\\\\|;'\",<>/? \n" + + "You may input the host IP address if the name is not resolving."; + public static final String INVALID_HOSTNAME_UI = "Invalid host name. Hostname contains characters that are not allowed. \n" + + "Characters that are not allowed include `~!@#$&^*(){}[]\\\\|;'\",<>/?"; + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/AuthTokenRequest.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/AuthTokenRequest.java new file mode 100644 index 0000000000..f137818346 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/AuthTokenRequest.java @@ -0,0 +1,89 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * POJO for an auth token request. + */ +public class AuthTokenRequest { + + @JsonProperty("autopsy_version") + private String autopsyVersion; + + @JsonProperty("boost_license_id") + private String boostLicenseId; + + @JsonProperty("requestFileUpload") + private boolean requestFileUpload; + + @JsonProperty("fileUploadSize") + private Long fileUploadSize; + + @JsonProperty("host_id") + private String hostId; + + public String getAutopsyVersion() { + return autopsyVersion; + } + + public AuthTokenRequest setAutopsyVersion(String autopsyVersion) { + this.autopsyVersion = autopsyVersion; + return this; + } + + public String getBoostLicenseId() { + return boostLicenseId; + } + + public AuthTokenRequest setBoostLicenseId(String boostLicenseId) { + this.boostLicenseId = boostLicenseId; + return this; + } + + public boolean isRequestFileUpload() { + return requestFileUpload; + } + + public AuthTokenRequest setRequestFileUpload(boolean requestFileUpload) { + this.requestFileUpload = requestFileUpload; + return this; + } + + public Long getFileUploadSize() { + return fileUploadSize; + } + + public AuthTokenRequest setFileUploadSize(Long fileUploadSize) { + this.fileUploadSize = fileUploadSize; + return this; + } + + + public String getHostId() { + return hostId; + } + + public AuthTokenRequest setHostId(String hostId) { + this.hostId = hostId; + return this; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/AuthTokenResponse.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/AuthTokenResponse.java new file mode 100644 index 0000000000..d4ac70e16c --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/AuthTokenResponse.java @@ -0,0 +1,105 @@ +/* + * 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.ctapi.json; + +import com.basistech.df.cybertriage.autopsy.ctapi.util.ObjectMapperUtil.InstantEpochMillisDeserializer; +import com.basistech.df.cybertriage.autopsy.ctapi.util.ObjectMapperUtil.InstantEpochSecsDeserializer; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import java.time.Instant; + +/** + * POJO for an auth token response. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class AuthTokenResponse { + + private final Long hashLookupCount; + private final Long hashLookupLimit; + private final Long fileUploadLimit; + private final Long fileUploadCount; + private final String fileUploadUrl; + private final Instant expiration; + private final String token; + private final String apiKey; + private final Instant resetDate; + + @JsonCreator + public AuthTokenResponse( + @JsonProperty("token") String token, + @JsonProperty("api_key") String apiKey, + @JsonProperty("hashLookupCount") Long hashLookupCount, + @JsonProperty("hashLookupLimit") Long hashLookupLimit, + @JsonProperty("fileUploadLimit") Long fileUploadLimit, + @JsonProperty("fileUploadCount") Long fileUploadCount, + @JsonProperty("fileUploadUrl") String fileUploadUrl, + @JsonDeserialize(using = InstantEpochSecsDeserializer.class) + @JsonProperty("expiration") Instant expiration, + @JsonDeserialize(using = InstantEpochMillisDeserializer.class) + @JsonProperty("resetDate") Instant resetDate + ) { + this.token = token; + this.apiKey = apiKey; + this.hashLookupCount = hashLookupCount; + this.hashLookupLimit = hashLookupLimit; + this.fileUploadLimit = fileUploadLimit; + this.fileUploadCount = fileUploadCount; + this.fileUploadUrl = fileUploadUrl; + this.expiration = expiration; + this.resetDate = resetDate; + } + + public Long getHashLookupCount() { + return hashLookupCount; + } + + public Long getHashLookupLimit() { + return hashLookupLimit; + } + + public Long getFileUploadLimit() { + return fileUploadLimit; + } + + public Long getFileUploadCount() { + return fileUploadCount; + } + + public String getFileUploadUrl() { + return fileUploadUrl; + } + + public Instant getExpiration() { + return expiration; + } + + public String getToken() { + return token; + } + + public String getApiKey() { + return apiKey; + } + + public Instant getResetDate() { + return resetDate; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/AuthenticatedRequestData.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/AuthenticatedRequestData.java new file mode 100644 index 0000000000..ebb716871a --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/AuthenticatedRequestData.java @@ -0,0 +1,52 @@ +/* + * 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.ctapi.json; + +/** + * Data required for an authenticated request. + */ +public class AuthenticatedRequestData { + + private final String token; + private final String apiKey; + private final String hostId; + + public AuthenticatedRequestData(DecryptedLicenseResponse decrypted, AuthTokenResponse authResp) { + this(authResp.getToken(), authResp.getApiKey(), decrypted.getLicenseHostId()); + } + + public AuthenticatedRequestData(String token, String apiKey, String hostId) { + this.token = token; + this.apiKey = apiKey; + this.hostId = hostId; + } + + public String getToken() { + return token; + } + + public String getApiKey() { + return apiKey; + } + + public String getHostId() { + return hostId; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/BoostLicenseResponse.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/BoostLicenseResponse.java new file mode 100644 index 0000000000..83970a7074 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/BoostLicenseResponse.java @@ -0,0 +1,66 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * POJO for a boost license response object that is a part of the license + * response. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class BoostLicenseResponse { + + private final String version; + private final String iv; + private final String encryptedKey; + private final String encryptedJson; + + @JsonCreator + public BoostLicenseResponse( + @JsonProperty("version") String version, + @JsonProperty("iv") String iv, + @JsonProperty("encryptedKey") String encryptedKey, + @JsonProperty("encryptedJson") String encryptedJson) { + + this.version = version; + this.iv = iv; + this.encryptedKey = encryptedKey; + this.encryptedJson = encryptedJson; + } + + public String getVersion() { + return version; + } + + public String getIv() { + return iv; + } + + public String getEncryptedKey() { + return encryptedKey; + } + + public String getEncryptedJson() { + return encryptedJson; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudBean.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudBean.java new file mode 100644 index 0000000000..6df2dcbdb8 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudBean.java @@ -0,0 +1,103 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +/** + * + * @author rishwanth + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class CTCloudBean { + + public static enum Status { + FOUND, + NOT_FOUND, + ERROR, + LIMITS_EXCEEDED, + BEING_SCANNED; + } + + @Nonnull + @JsonProperty("malware") + private MalwareResultBean malwareResult; + + @JsonProperty("correlation") + private CorrelationResultBean correlationResult; + + @Nonnull + @JsonProperty("md5_hash") + private String md5HashValue; + + @Nullable + @JsonProperty("sha1_hash") + private String sha1HashValue; + + public String getMd5HashValue() { + return md5HashValue; + } + + public String getSha1HashValue() { + return sha1HashValue; + } + + public void setMd5HashValue(String md5HashValue) { + this.md5HashValue = md5HashValue; + } + + public void setSha1HashValue(String sha1HashValue) { + this.sha1HashValue = sha1HashValue; + } + + public MalwareResultBean getMalwareResult() { + return malwareResult; + } + + public void setMalwareResult(MalwareResultBean malwareResult) { + this.malwareResult = malwareResult; + } + + public CorrelationResultBean getCorrelationResult() { + return correlationResult; + } + + public void setCorrelationResult(CorrelationResultBean correlationResult) { + this.correlationResult = correlationResult; + } + + @Override + public String toString() { + return "CTCloudBean{" + + "status=" + malwareResult.getStatus() + + ", malwareDescription=" + malwareResult.getMalwareDescription() + + ", score=" + malwareResult.getCTScore() + + ", md5HashValue=" + md5HashValue + + ", sha1HashValue=" + sha1HashValue + + ", firstSeen=" + malwareResult.getFirstAnalyzedDate() + + ", lastSeen=" + malwareResult.getLastAnalyzedDate() + + ", statusDescription=" + malwareResult.getStatusDescription() + + ", metadata=" + malwareResult.getMetadata() + + '}'; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudBeanResponse.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudBeanResponse.java new file mode 100644 index 0000000000..704ee1d19e --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudBeanResponse.java @@ -0,0 +1,45 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; + +/** + * Container for file reputation result list response. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class CTCloudBeanResponse { + + private final List items; + + @JsonCreator + public CTCloudBeanResponse( + @JsonProperty("items") List items + ) { + this.items = items; + } + + public List getItems() { + return items; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudCorrelationResultBean.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudCorrelationResultBean.java new file mode 100644 index 0000000000..31de5d0057 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudCorrelationResultBean.java @@ -0,0 +1,58 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.Nonnull; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class CTCloudCorrelationResultBean { + + @JsonProperty("correlation") + private CorrelationResultBean correlationResult; + + @Nonnull + @JsonProperty("signature") + private String signature; + + public CorrelationResultBean getCorrelationResult() { + return correlationResult; + } + + public void setCorrelationResult(CorrelationResultBean correlationResult) { + this.correlationResult = correlationResult; + } + + public String getSignature() { + return signature; + } + + public void setSignature(String signature) { + this.signature = signature; + } + + @Override + public String toString() { + return "CTCloudCorrelationResultBean{" + + "correlationResult=" + correlationResult + + ", signature=" + signature + + '}'; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudCostBean.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudCostBean.java new file mode 100644 index 0000000000..9c3272219b --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTCloudCostBean.java @@ -0,0 +1,46 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * + * @author rishwanth + */ +class CTCloudCostBean { + + private final String provider; + + private final Integer units; + + public CTCloudCostBean(@JsonProperty("provider") String provider, @JsonProperty("units") Integer units) { + this.provider = provider; + this.units = units; + } + + public String getProvider() { + return provider; + } + + public Integer getUnits() { + return units; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTScore.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTScore.java new file mode 100644 index 0000000000..4a9b910548 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CTScore.java @@ -0,0 +1,82 @@ +/* + * 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.ctapi.json; + +import com.google.common.base.MoreObjects; +import static com.google.common.base.Preconditions.checkArgument; +import org.sleuthkit.datamodel.Score; +import org.sleuthkit.datamodel.Score.Priority; +import org.sleuthkit.datamodel.Score.Significance; + +/** + * + * Score class represents a conclusion and the relative confidence in the conclusion about + * a subject. A subject may be an Item, a category/analysis result etc. + * @since 1.7.0 + * + */ +public enum CTScore { + + /* + Enum names without method defaults to AUTO + NOTABLE -> NOTABLE + */ + + // Unknown None + UNKNOWN(new Score(Significance.UNKNOWN, Priority.NORMAL)), + // GOOD_MEDIUM + LIKELY_NONE(new Score(Significance.LIKELY_NONE, Priority.NORMAL)), + // SUSPICIOUS_HIGH / BAD_MEDIUM + LIKELY_NOTABLE(new Score(Significance.LIKELY_NOTABLE, Priority.NORMAL)), + // GOOD_HIGH + NONE(new Score(Significance.NONE, Priority.NORMAL)), + // BAD_HIGH + NOTABLE(new Score(Significance.NOTABLE, Priority.NORMAL)), + // SUSPICIOUS (User flagged) + LIKELY_NOTABLE_MANUAL(new Score(Significance.LIKELY_NOTABLE, Priority.OVERRIDE)), + // Good (User flagged) + NONE_MANUAL(new Score(Significance.NONE, Priority.OVERRIDE)), + // Bad (User flagged) + NOTABLE_MANUAL(new Score(Significance.NOTABLE, Priority.OVERRIDE)); + + + private final Score tskScore; + + /** + * Create a CTScore instance based on score + * @param tskScore + */ + private CTScore(Score tskScore) { + + checkArgument(tskScore.getSignificance() == Significance.UNKNOWN ? tskScore.getPriority() == Priority.NORMAL : true, "Unknown Conclusions expects no (NORMAL) priority"); + this.tskScore = tskScore; + } + + public Score getTskCore() { + return tskScore; + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("Method Category", tskScore.getPriority()) + .add("Significance", tskScore.getSignificance()).toString(); + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CorrelationFrequency.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CorrelationFrequency.java new file mode 100644 index 0000000000..4fdf1bcdd8 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CorrelationFrequency.java @@ -0,0 +1,29 @@ +/* + * 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.ctapi.json; + +/** + * + * @author rishwanth + */ +public enum CorrelationFrequency { + UNIQUE, + RARE, + COMMON; +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CorrelationResultBean.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CorrelationResultBean.java new file mode 100644 index 0000000000..6715acc20b --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/CorrelationResultBean.java @@ -0,0 +1,51 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * + * @author rishwanth + */ +public class CorrelationResultBean { + + @JsonProperty("frequency") + private CorrelationFrequency frequency; + + @JsonProperty("frequency_description") + private String frequencyDescription; + + public CorrelationFrequency getFrequency() { + return frequency; + } + + public String getFrequencyDescription() { + return frequencyDescription; + } + + public void setFrequency(CorrelationFrequency frequency) { + this.frequency = frequency; + } + + public void setFrequencyDescription(String frequencyDescription) { + this.frequencyDescription = frequencyDescription; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/DecryptedLicenseResponse.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/DecryptedLicenseResponse.java new file mode 100644 index 0000000000..d939d6ed75 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/DecryptedLicenseResponse.java @@ -0,0 +1,118 @@ +/* + * 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.ctapi.json; + +import com.basistech.df.cybertriage.autopsy.ctapi.util.ObjectMapperUtil.InstantEpochMillisDeserializer; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import java.time.Instant; + +/** + * POJO for after encrypted boost license has been decrypted. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class DecryptedLicenseResponse { + + private final String boostLicenseId; + private final String licenseHostId; + private final Instant expirationDate; + private final Long hashLookups; + private final Long fileUploads; + private final Instant activationTime; + private final String product; + private final LicenseLimitType limitType; + private final String timezone; + private final String customerEmail; + private final String customerName; + + @JsonCreator + public DecryptedLicenseResponse( + @JsonProperty("boostLicenseId") String boostLicenseId, + @JsonProperty("licenseHostId") String licenseHostId, + @JsonDeserialize(using = InstantEpochMillisDeserializer.class) + @JsonProperty("expirationDate") Instant expirationDate, + @JsonProperty("hashLookups") Long hashLookups, + @JsonProperty("fileUploads") Long fileUploads, + @JsonDeserialize(using = InstantEpochMillisDeserializer.class) + @JsonProperty("activationTime") Instant activationTime, + @JsonProperty("product") String product, + @JsonProperty("limitType") LicenseLimitType limitType, + @JsonProperty("timezone") String timezone, + @JsonProperty("customerEmail") String customerEmail, + @JsonProperty("customerName") String customerName + ) { + this.boostLicenseId = boostLicenseId; + this.licenseHostId = licenseHostId; + this.expirationDate = expirationDate; + this.hashLookups = hashLookups; + this.fileUploads = fileUploads; + this.activationTime = activationTime; + this.product = product; + this.limitType = limitType; + this.timezone = timezone; + this.customerEmail = customerEmail; + this.customerName = customerName; + } + + public String getBoostLicenseId() { + return boostLicenseId; + } + + public String getLicenseHostId() { + return licenseHostId; + } + + public Long getHashLookups() { + return hashLookups; + } + + public Long getFileUploads() { + return fileUploads; + } + + public Instant getActivationTime() { + return activationTime; + } + + public String getProduct() { + return product; + } + + public LicenseLimitType getLimitType() { + return limitType; + } + + public Instant getExpirationDate() { + return expirationDate; + } + + public String getTimezone() { + return timezone; + } + + public String getCustomerEmail() { + return customerEmail; + } + + public String getCustomerName() { + return customerName; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/FileReputationRequest.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/FileReputationRequest.java new file mode 100644 index 0000000000..46dfcb7bd4 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/FileReputationRequest.java @@ -0,0 +1,40 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; + +/** + * Request for file reputation results. + */ +public class FileReputationRequest { + + @JsonProperty("hashes") + private List hashes; + + public List getHashes() { + return hashes; + } + + public FileReputationRequest setHashes(List hashes) { + this.hashes = hashes; + return this; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/FileUploadRequest.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/FileUploadRequest.java new file mode 100644 index 0000000000..48d8dc77b4 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/FileUploadRequest.java @@ -0,0 +1,69 @@ +/* + * 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.ctapi.json; + +import java.io.InputStream; + +/** + * Data for a file upload request. + */ +public class FileUploadRequest { + + private String fullUrlPath; + private String fileName; + private InputStream fileInputStream; + private Long contentLength; + + public String getFullUrlPath() { + return fullUrlPath; + } + + public FileUploadRequest setFullUrlPath(String fullUrlPath) { + this.fullUrlPath = fullUrlPath; + return this; + } + + public String getFileName() { + return fileName; + } + + public FileUploadRequest setFileName(String fileName) { + this.fileName = fileName; + return this; + } + + public InputStream getFileInputStream() { + return fileInputStream; + } + + public FileUploadRequest setFileInputStream(InputStream fileInputStream) { + this.fileInputStream = fileInputStream; + return this; + } + + public Long getContentLength() { + return contentLength; + } + + public FileUploadRequest setContentLength(Long contentLength) { + this.contentLength = contentLength; + return this; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseInfo.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseInfo.java new file mode 100644 index 0000000000..127df9987d --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseInfo.java @@ -0,0 +1,40 @@ +/* + * 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.ctapi.json; + +/** + * Contains license info and decrypted boost license. + */ +public class LicenseInfo { + private final LicenseResponse licenseResponse; + private final DecryptedLicenseResponse decryptedLicense; + + public LicenseInfo(LicenseResponse licenseResponse, DecryptedLicenseResponse decryptedLicense) { + this.licenseResponse = licenseResponse; + this.decryptedLicense = decryptedLicense; + } + + public LicenseResponse getLicenseResponse() { + return licenseResponse; + } + + public DecryptedLicenseResponse getDecryptedLicense() { + return decryptedLicense; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseLimitType.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseLimitType.java new file mode 100644 index 0000000000..7d185f86ae --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseLimitType.java @@ -0,0 +1,30 @@ +/* + * 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.ctapi.json; + +/** + * The limit type (and reset) for the license. + */ +public enum LicenseLimitType { + HOURLY, + DAILY, + WEEKLY, + MONTHLY, + NO_RESET; +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseRequest.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseRequest.java new file mode 100644 index 0000000000..18a1b1c4bf --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseRequest.java @@ -0,0 +1,77 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * POJO for license request information. + */ +public class LicenseRequest { + @JsonProperty("host_id") + private String hostId; + + @JsonProperty("boost_license_code") + private String boostLicenseCode; + + @JsonProperty("product") + private String product; + + @JsonProperty("time_zone_id") + private String timeZoneId; + + public String getHostId() { + return hostId; + } + + public LicenseRequest setHostId(String hostId) { + this.hostId = hostId; + return this; + } + + public String getBoostLicenseCode() { + return boostLicenseCode; + } + + public LicenseRequest setBoostLicenseCode(String boostLicenseCode) { + this.boostLicenseCode = boostLicenseCode; + return this; + } + + public String getProduct() { + return product; + } + + public LicenseRequest setProduct(String product) { + this.product = product; + return this; + } + + public String getTimeZoneId() { + return timeZoneId; + } + + public LicenseRequest setTimeZoneId(String timeZoneId) { + this.timeZoneId = timeZoneId; + return this; + } + + + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseResponse.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseResponse.java new file mode 100644 index 0000000000..a3a8247884 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/LicenseResponse.java @@ -0,0 +1,64 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Response POJO for request for license. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class LicenseResponse { + + private final Boolean success; + private final Boolean hostChanged; + private final Long hostChangesRemaining; + private final BoostLicenseResponse boostLicense; + + @JsonCreator + public LicenseResponse( + @JsonProperty("success") Boolean success, + @JsonProperty("hostChanged") Boolean hostChanged, + @JsonProperty("hostChangesRemaining") Long hostChangesRemaining, + @JsonProperty("boostLicense") BoostLicenseResponse boostLicense + ) { + this.success = success; + this.hostChanged = hostChanged; + this.hostChangesRemaining = hostChangesRemaining; + this.boostLicense = boostLicense; + } + + public Boolean isSuccess() { + return success; + } + + public Boolean isHostChanged() { + return hostChanged; + } + + public Long getHostChangesRemaining() { + return hostChangesRemaining; + } + + public BoostLicenseResponse getBoostLicense() { + return boostLicense; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/MalwareResultBean.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/MalwareResultBean.java new file mode 100644 index 0000000000..a77ec55ac0 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/MalwareResultBean.java @@ -0,0 +1,170 @@ +/* + * 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.ctapi.json; + +import com.basistech.df.cybertriage.autopsy.ctapi.util.ObjectMapperUtil.ZonedDateTimeDeserializer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import java.time.ZonedDateTime; +import java.util.List; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +/** + * + * @author rishwanth + */ +public class MalwareResultBean { + + public static enum Status { + FOUND, + NOT_FOUND, + ERROR, + LIMITS_EXCEEDED, + BEING_SCANNED; + } + + @Nullable + @JsonProperty("malware_description") + private String malwareDescription; + + @Nonnull + @JsonProperty("status") + private Status status; + + @Nonnull + @JsonProperty("score") + private String score; + + private CTScore ctScore; + + @Nullable + @JsonProperty("first_scan_date") + @JsonDeserialize(using = ZonedDateTimeDeserializer.class) + private ZonedDateTime firstAnalyzedDate; + + @Nullable + @JsonProperty("last_scan_date") + @JsonDeserialize(using = ZonedDateTimeDeserializer.class) + private ZonedDateTime lastAnalyzedDate; + + @JsonProperty("metadata") + private List metadata; + + @Nullable + @JsonProperty("status_description") + private String statusDescription; + + + @Nullable + @JsonProperty + private List cost; + + @JsonIgnore + public CTScore getCTScore() { + return ctScore; + } + + public String getScore() { + return score; + } + + public ZonedDateTime getFirstAnalyzedDate() { + return firstAnalyzedDate; + } + + public ZonedDateTime getLastAnalyzedDate() { + return lastAnalyzedDate; + } + + public List getMetadata() { + if (metadata != null) { + return List.copyOf(metadata); + } else { + return List.of(); // empty list + } + } + + public Status getStatus() { + return status; + } + + public String getStatusDescription() { + return statusDescription; + } + + + public String getMalwareDescription() { + return malwareDescription; + } + + public void setMalwareDescription(String malwareDescription) { + this.malwareDescription = malwareDescription; + } + + public void setStatus(Status status) { + this.status = status; + } + + public void setScore(String score) { + this.score = score; + switch(score) { + case "GOOD_HIGH": + this.ctScore = CTScore.NONE; + break; + case "GOOD_MEDIUM": + this.ctScore = CTScore.LIKELY_NONE; + break; + case "BAD_HIGH": + this.ctScore = CTScore.NOTABLE; + break; + case "BAD_MEDIUM": + this.ctScore = CTScore.LIKELY_NOTABLE; + break; + default: + this.ctScore = CTScore.UNKNOWN; + break; + } + } + + public void setFirstAnalyzedDate(ZonedDateTime firstAnalyzedDate) { + this.firstAnalyzedDate = firstAnalyzedDate; + } + + public void setLastAnalyzedDate(ZonedDateTime lastAnalyzedDate) { + this.lastAnalyzedDate = lastAnalyzedDate; + } + + public void setMetadata(List metadata) { + this.metadata = List.copyOf(metadata); + } + + public void setStatusDescription(String statusDescription) { + this.statusDescription = statusDescription; + } + + public List getCost() { + return List.copyOf(cost); + } + + public void setCost(List cost) { + this.cost = List.copyOf(cost); + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/MetadataLabel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/MetadataLabel.java new file mode 100644 index 0000000000..60b6ce34ad --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/MetadataLabel.java @@ -0,0 +1,58 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Metadata entry. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class MetadataLabel { + + private final String key; + private final String value; + private final String extendedInfo; + + @JsonCreator + public MetadataLabel( + @JsonProperty("key") String key, + @JsonProperty("value") String value, + @JsonProperty("info") String extendedInfo + ) { + this.key = key; + this.value = value; + this.extendedInfo = extendedInfo; + } + + public String getKey() { + return key; + } + + public String getValue() { + return value; + } + + public String getExtendedInfo() { + return extendedInfo; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/MetadataUploadRequest.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/MetadataUploadRequest.java new file mode 100644 index 0000000000..7d7e1e7f64 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/json/MetadataUploadRequest.java @@ -0,0 +1,109 @@ +/* + * 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.ctapi.json; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class MetadataUploadRequest { + + @JsonProperty("file_upload_url") + private String fileUploadUrl; + + @JsonProperty("sha1") + private String sha1; + + @JsonProperty("sha256") + private String sha256; + + @JsonProperty("md5") + private String md5; + + @JsonProperty("filePath") + private String filePath; + + @JsonProperty("fileSize") + private Long fileSizeBytes; + + @JsonProperty("createdDate") + private Long createdDate; + + public String getFileUploadUrl() { + return fileUploadUrl; + } + + public MetadataUploadRequest setFileUploadUrl(String fileUploadUrl) { + this.fileUploadUrl = fileUploadUrl; + return this; + } + + public String getSha1() { + return sha1; + } + + public MetadataUploadRequest setSha1(String sha1) { + this.sha1 = sha1; + return this; + } + + public String getSha256() { + return sha256; + } + + public MetadataUploadRequest setSha256(String sha256) { + this.sha256 = sha256; + return this; + } + + public String getMd5() { + return md5; + } + + public MetadataUploadRequest setMd5(String md5) { + this.md5 = md5; + return this; + } + + public String getFilePath() { + return filePath; + } + + public MetadataUploadRequest setFilePath(String filePath) { + this.filePath = filePath; + return this; + } + + public Long getFileSizeBytes() { + return fileSizeBytes; + } + + public MetadataUploadRequest setFileSizeBytes(Long fileSizeBytes) { + this.fileSizeBytes = fileSizeBytes; + return this; + } + + public Long getCreatedDate() { + return createdDate; + } + + public MetadataUploadRequest setCreatedDate(Long createdDate) { + this.createdDate = createdDate; + return this; + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/CTHostIDGenerationUtil.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/CTHostIDGenerationUtil.java new file mode 100644 index 0000000000..415a773f59 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/CTHostIDGenerationUtil.java @@ -0,0 +1,69 @@ +/* + * 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.ctapi.util; + +import com.license4j.HardwareID; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.logging.Level; +import org.apache.commons.lang3.StringUtils; +import org.sleuthkit.autopsy.coreutils.Logger; + +/** + * Utility class to generate license hostID and Target hostID for malware scan + * + * @author rishwanth + */ +public class CTHostIDGenerationUtil { + + private static final Logger LOGGER = Logger.getLogger(CTHostIDGenerationUtil.class.getName()); + private static final String USER_NAME = System.getProperty("user.name"); + private static String cachedId = ""; + + /** + * Host ID Algorithm: Get MAC address from License4J. Get MD5 hash of it and + * grab the first 16 characters of the hash. Get user name that Cyber Triage + * is running as. MD5 hash of user name. Grab first 16 characters. + * Concatenate them and separate with underscore. Example: + * c84f70d1baf96420_7d7519bf21602c24 + * + * @return + */ + public static String generateLicenseHostID() { + if (StringUtils.isBlank(cachedId)) { + try { + String hostName = StringUtils.defaultString(InetAddress.getLocalHost().getCanonicalHostName()); + String macAddressMd5 = StringUtils.isNotBlank(HardwareID.getHardwareIDFromEthernetAddress()) + ? Md5HashUtil.getMD5MessageDigest(HardwareID.getHardwareIDFromEthernetAddress()).substring(0, 16) + : Md5HashUtil.getMD5MessageDigest(hostName).substring(0, 16); + + String usernameMd5 = StringUtils.isNotBlank(USER_NAME) + ? Md5HashUtil.getMD5MessageDigest(USER_NAME).substring(0, 16) + : Md5HashUtil.getMD5MessageDigest(hostName).substring(0, 16); + + cachedId = macAddressMd5 + "_" + usernameMd5; + + } catch (UnknownHostException ex) { + LOGGER.log(Level.WARNING, "Unable to determine host name.", ex); + } + } + + return cachedId; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/LicenseDecryptorUtil.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/LicenseDecryptorUtil.java new file mode 100644 index 0000000000..f62b57d795 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/LicenseDecryptorUtil.java @@ -0,0 +1,177 @@ +/* + * 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.ctapi.util; + +import com.basistech.df.cybertriage.autopsy.ctapi.json.BoostLicenseResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.json.DecryptedLicenseResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseInfo; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseResponse; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import java.security.InvalidKeyException; +import java.security.KeyFactory; +import java.security.NoSuchAlgorithmException; +import java.security.PublicKey; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.KeySpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.Base64; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +/** + * Decrypts the payload of boost license. + */ +public class LicenseDecryptorUtil { + + private static final LicenseDecryptorUtil instance = new LicenseDecryptorUtil(); + + public static LicenseDecryptorUtil getInstance() { + return instance; + } + + private final ObjectMapper objectMapper = ObjectMapperUtil.getInstance().getDefaultObjectMapper(); + + private LicenseDecryptorUtil() { + } + + public LicenseInfo createLicenseInfo(LicenseResponse licenseResponse) throws JsonProcessingException, InvalidLicenseException { + if (licenseResponse == null || licenseResponse.getBoostLicense() == null) { + throw new InvalidLicenseException("License or boost license are null"); + } + + DecryptedLicenseResponse decrypted = parseLicenseJSON(licenseResponse.getBoostLicense()); + return new LicenseInfo(licenseResponse, decrypted); + } + + /** + * Decrypts a boost license response. + * + * @param licenseResponse The boost license response. + * @return The decrypted license response. + * @throws JsonProcessingException + * @throws + * com.basistech.df.cybertriage.autopsy.ctapi.util.LicenseDecryptorUtil.InvalidLicenseException + */ + public DecryptedLicenseResponse parseLicenseJSON(BoostLicenseResponse licenseResponse) throws JsonProcessingException, InvalidLicenseException { + + String decryptedJsonResponse; + try { + decryptedJsonResponse = decryptLicenseString( + licenseResponse.getEncryptedJson(), + licenseResponse.getIv(), + licenseResponse.getEncryptedKey(), + licenseResponse.getVersion() + ); + } catch (IOException | GeneralSecurityException ex) { + throw new InvalidLicenseException("An exception occurred while parsing the license string", ex); + } + + DecryptedLicenseResponse decryptedLicense = objectMapper.readValue(decryptedJsonResponse, DecryptedLicenseResponse.class); + if (!"AUTOPSY".equalsIgnoreCase(decryptedLicense.getProduct())) { + // license file is expected to contain product of "CYBERTRIAGE" + throw new InvalidLicenseException("Not a valid Autopsy license"); + } + + return decryptedLicense; + } + + private String decryptLicenseString(String encryptedJson, String ivBase64, String encryptedKey, String version) throws IOException, GeneralSecurityException, InvalidLicenseException { + if (!"1.0".equals(version)) { + throw new InvalidLicenseException("Unexpected file version: " + version); + } + + byte[] encryptedKeyBytes = Base64.getDecoder().decode(encryptedKey); + byte[] keyBytes = decryptKey(encryptedKeyBytes); + SecretKey key = new SecretKeySpec(keyBytes, 0, keyBytes.length, "AES"); + + byte[] ivBytes = Base64.getDecoder().decode(ivBase64); + IvParameterSpec iv = new IvParameterSpec(ivBytes); + + byte[] encryptedLicenseJsonBytes = Base64.getDecoder().decode(encryptedJson); + + String algorithm = "AES/CBC/PKCS5Padding"; + Cipher cipher = Cipher.getInstance(algorithm); + cipher.init(Cipher.DECRYPT_MODE, key, iv); + byte[] licenseJsonBytes = cipher.doFinal(encryptedLicenseJsonBytes); + + return new String(licenseJsonBytes, StandardCharsets.UTF_8); + } + + private PublicKey getPublicKey() throws InvalidKeySpecException, NoSuchAlgorithmException { + + String publicKeyString = """ + -----BEGIN PUBLIC KEY----- + MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwIKulLyaLQ2WeO0gIW2G + 3jQqny3Y/7VUevBKulAEywaUbvECvZ4zGsnaMyACjXxMNkA1xU2WeSMP/WqC03wz + 4d71liUeAqOYKMdGHXFN2qswWz/ufK6An0pTEqYaoiUfcwSBVo2ZTUcMQexScKaS + ghmaWqBHBYx+lBkVMcLG2PtLDRZbqgJvJr2QCzMSVUpEGGQEWs7YolIq46KCgqsq + pTdfrdqd59x6oRhTLegswzxwLyouvrKbRqKR2ZRbVvlGtUnnnlLDuhEfd0flMxuv + W98Siw6dWe1K3x45nDu5py2G9Q9fZS8/2KHUC6QcLLstLIoPnZjCl9Lcur1U6s9N + f5aLI9mwMfmSJsoVOuwx2/MC98uHvPoPbG4ZjiT0aaGg4JccTGD6pssDA35zPhkk + 1l6wktEYtyF2A7zjzuFxioQz8fHBzIbHPCxzu4S2gh3qOVFf7c9COmX9MsnB70o2 + EZ1rxlFIJ7937IGJNwWOQuiMKTpEeT6BwTdQNZQPqCUGvZ5eEjhrm57yCF4zuyrt + AR8DG7ahK2YAarADHRyxTuxH1qY7E5/CTQKYk9tIYsV4O05CKj7B8rBMtjVNjb4b + d7JwPW43Z3J6jo/gLlVdGSPg8vQDNVLl6sdDM4Pm1eJEzgR2JlqXDCRDUGNNsXH2 + qt9Ru8ykX7PAfF2Q3/qg1jkCAwEAAQ== + -----END PUBLIC KEY----- + """; + + publicKeyString = publicKeyString.replaceAll("-----BEGIN PUBLIC KEY-----", "").replaceAll("-----END PUBLIC KEY-----", "").replaceAll("\\s", ""); + byte[] publicKeyBytes = Base64.getDecoder().decode(publicKeyString); + + KeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + PublicKey publicKey = keyFactory.generatePublic(keySpec); + + return publicKey; + } + + private byte[] decryptKey(byte[] encryptedKeyBytes) throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { + + PublicKey publicKey = getPublicKey(); + + Cipher decryptCipher = Cipher.getInstance("RSA"); + decryptCipher.init(Cipher.DECRYPT_MODE, publicKey); + + byte[] decryptedBytes = decryptCipher.doFinal(encryptedKeyBytes); + + return decryptedBytes; + } + + public class InvalidLicenseException extends Exception { + + public InvalidLicenseException(String message) { + super(message); + } + + public InvalidLicenseException(String message, Throwable cause) { + super(message, cause); + } + + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/Md5HashUtil.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/Md5HashUtil.java new file mode 100644 index 0000000000..49878f3e71 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/Md5HashUtil.java @@ -0,0 +1,45 @@ +/* + * 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.ctapi.util; +import com.google.common.base.Charsets; +import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hashing; +import org.apache.commons.lang3.StringUtils; +/** + * + * @author jayaram + */ +public class Md5HashUtil { + /** + * Returns MD5 hash value for the lower case value of the string provided. + * @param inp + * @return + */ + public static String getMD5MessageDigest(String inp) { + if (StringUtils.isNotBlank(inp)) { + HashFunction hf = Hashing.md5(); // Using despite its deprecation as md5 is good enough for our uses. + HashCode hc = hf.newHasher() + .putString(inp.toLowerCase(), Charsets.UTF_8) + .hash(); + return hc.toString(); + } + return ""; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/ObjectMapperUtil.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/ObjectMapperUtil.java new file mode 100644 index 0000000000..5562141255 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctapi/util/ObjectMapperUtil.java @@ -0,0 +1,190 @@ +/* + * 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.ctapi.util; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JacksonException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import java.io.IOException; +import java.time.DateTimeException; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; +import java.time.format.DateTimeParseException; +import java.util.Locale; +import java.util.function.Function; + +/** + * Creates default ObjectMapper + */ +public class ObjectMapperUtil { + + private static final ObjectMapperUtil instance = new ObjectMapperUtil(); + + public static ObjectMapperUtil getInstance() { + return instance; + } + + private ObjectMapperUtil() { + + } + + public ObjectMapper getDefaultObjectMapper() { + ObjectMapper defaultMapper = new ObjectMapper(); + defaultMapper.registerModule(new JavaTimeModule()); + return defaultMapper; + } + + public static class UTCBaseZonedDateTimeDeserializer extends JsonDeserializer { + + private final DateTimeFormatter formatter; + + public UTCBaseZonedDateTimeDeserializer(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + @Override + public ZonedDateTime deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JacksonException { + String date = jp.getText(); + if (date == null) { + return null; + } + + try { + LocalDateTime ldt = LocalDateTime.parse(date, formatter); + return ZonedDateTime.of(ldt, ZoneOffset.UTC); + } catch (DateTimeParseException ex) { + return null; + } + } + } + + public static class ZonedDateTimeDeserializer extends UTCBaseZonedDateTimeDeserializer { + + public ZonedDateTimeDeserializer() { + super(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + } + + public static class MDYDateDeserializer extends JsonDeserializer { + + private final DateTimeFormatter formatter; + + public MDYDateDeserializer() { + this.formatter = new DateTimeFormatterBuilder() + .parseCaseInsensitive() + .appendPattern("MMM d, [uuuu][uu]") + .toFormatter(Locale.ENGLISH); + } + + @Override + public ZonedDateTime deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JacksonException { + String date = jp.getText(); + if (date == null) { + return null; + } + + try { + LocalDate ld = LocalDate.parse(date, formatter); + LocalDateTime ldt = ld.atStartOfDay(); + return ZonedDateTime.of(ldt, ZoneOffset.UTC); + } catch (DateTimeParseException ex) { + return null; + } + } + } + + public static class EpochTimeDeserializer extends JsonDeserializer { + + private final Function timeDeserializer; + + public EpochTimeDeserializer(Function timeDeserializer) { + this.timeDeserializer = timeDeserializer; + } + + @Override + public T deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JacksonException { + JsonNode node = jp.getCodec().readTree(jp); + + Long timeVal = null; + if (node.isNumber()) { + timeVal = node.asLong(); + } else { + String nodeText = node.asText(); + try { + timeVal = Long.parseLong(nodeText); + } catch (NumberFormatException ex) { + // do nothing if can't parse as number + } + } + + if (timeVal != null) { + try { + return timeDeserializer.apply(timeVal); + } catch (DateTimeException ex) { + // do nothing if can't parse to epoch + } + } + + return null; + } + } + + public static class InstantEpochMillisDeserializer extends EpochTimeDeserializer { + + public InstantEpochMillisDeserializer() { + super(InstantEpochMillisDeserializer::convert); + } + + private static Instant convert(Long longVal) { + try { + return Instant.ofEpochMilli(longVal); + } catch (DateTimeException ex) { + // do nothing if can't parse to epoch + + return null; + } + } + } + + public static class InstantEpochSecsDeserializer extends EpochTimeDeserializer { + + public InstantEpochSecsDeserializer() { + super(InstantEpochSecsDeserializer::convert); + } + + private static Instant convert(Long longVal) { + try { + return Instant.ofEpochSecond(longVal); + } catch (DateTimeException ex) { + // do nothing if can't parse to epoch + + return null; + } + } + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/Bundle.properties b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/Bundle.properties new file mode 100644 index 0000000000..840725f5d7 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/Bundle.properties @@ -0,0 +1,9 @@ + +# Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license +# Click nbfs://nbhost/SystemFileSystem/Templates/Other/properties.properties to edit this template +OptionsCategory_Name_CyberTriage=Cyber Triage +OptionsCategory_Keywords_CyberTriage=Cyber Triage,Cyber,Triage +LicenseDisclaimerPanel.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. +LicenseDisclaimerPanel.purchaseFromLabel.text=You can purchase a license from +LicenseDisclaimerPanel.border.title=Disclaimer +LicenseDisclaimerPanel.trialLabel.text=You can try a free 7-day trial from diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/Bundle.properties-MERGED b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/Bundle.properties-MERGED new file mode 100644 index 0000000000..840725f5d7 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/Bundle.properties-MERGED @@ -0,0 +1,9 @@ + +# Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license +# Click nbfs://nbhost/SystemFileSystem/Templates/Other/properties.properties to edit this template +OptionsCategory_Name_CyberTriage=Cyber Triage +OptionsCategory_Keywords_CyberTriage=Cyber Triage,Cyber,Triage +LicenseDisclaimerPanel.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. +LicenseDisclaimerPanel.purchaseFromLabel.text=You can purchase a license from +LicenseDisclaimerPanel.border.title=Disclaimer +LicenseDisclaimerPanel.trialLabel.text=You can try a free 7-day trial from diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.form new file mode 100644 index 0000000000..1aee51eb33 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.form @@ -0,0 +1,39 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java new file mode 100644 index 0000000000..83a4a9a51a --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanel.java @@ -0,0 +1,166 @@ +/* + * 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; + +import com.basistech.df.cybertriage.autopsy.ctoptions.subpanel.CTOptionsSubPanel; +import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.Collection; +import java.util.Comparator; +import java.util.List; +import java.util.logging.Logger; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javax.swing.JPanel; +import org.netbeans.spi.options.OptionsPanelController; +import org.openide.util.Lookup; +import org.sleuthkit.autopsy.ingest.IngestModuleGlobalSettingsPanel; + +/** + * Options panel for Cyber Triage. + */ +public class CTOptionsPanel extends IngestModuleGlobalSettingsPanel { + + private static final int MAX_SUBPANEL_WIDTH = 650; + + private static final Logger logger = Logger.getLogger(CTOptionsPanel.class.getName()); + + private final List subPanels; + + /** + * Creates new form CTOptions loading any CTOptionsSubPanel instances to be + * displayed. + */ + public CTOptionsPanel() { + initComponents(); + Collection coll = Lookup.getDefault().lookupAll(CTOptionsSubPanel.class); + Stream panelStream = coll != null ? coll.stream() : Stream.empty(); + this.subPanels = panelStream + .map(panel -> { + try { + // lookup is returning singleton instances which means this panel gets messed up when accessed + // from multiple places because the panel's children are being added to a different CTOptionsPanel + return (CTOptionsSubPanel) panel.getClass().getConstructor().newInstance(); + } catch (Exception ex) { + return null; + } + }) + .filter(item -> item != null) + .sorted(Comparator.comparing(p -> p.getClass().getSimpleName().toUpperCase()).reversed()) + .collect(Collectors.toList()); + addSubOptionsPanels(this.subPanels); + } + + 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; + + for (int i = 0; i < subPanels.size(); i++) { + CTOptionsSubPanel subPanel = subPanels.get(i); + + subPanel.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals(OptionsPanelController.PROP_CHANGED)) { + CTOptionsPanel.this.firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + } + }); + + GridBagConstraints gridBagConstraints = new GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = i + 1; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + gridBagConstraints.weighty = 0; + gridBagConstraints.weightx = 0; + + contentPane.add(subPanel, gridBagConstraints); + } + + GridBagConstraints verticalConstraints = new GridBagConstraints(); + verticalConstraints.gridx = 0; + verticalConstraints.gridy = subPanels.size() + 1; + verticalConstraints.weighty = 1; + verticalConstraints.weightx = 0; + + JPanel verticalSpacer = new JPanel(); + + verticalSpacer.setMinimumSize(new Dimension(MAX_SUBPANEL_WIDTH, 0)); + verticalSpacer.setPreferredSize(new Dimension(MAX_SUBPANEL_WIDTH, 0)); + verticalSpacer.setMaximumSize(new Dimension(MAX_SUBPANEL_WIDTH, Short.MAX_VALUE)); + contentPane.add(verticalSpacer, verticalConstraints); + + GridBagConstraints horizontalConstraints = new GridBagConstraints(); + horizontalConstraints.gridx = 1; + horizontalConstraints.gridy = 0; + horizontalConstraints.weighty = 0; + horizontalConstraints.weightx = 1; + + JPanel horizontalSpacer = new JPanel(); + contentPane.add(horizontalSpacer, horizontalConstraints); + } + + /** + * 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 + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.JScrollPane scrollPane = new javax.swing.JScrollPane(); + contentPane = new javax.swing.JPanel(); + + setLayout(new java.awt.BorderLayout()); + + contentPane.setLayout(new java.awt.GridBagLayout()); + scrollPane.setViewportView(contentPane); + + add(scrollPane, java.awt.BorderLayout.CENTER); + }// //GEN-END:initComponents + + @Override + public void saveSettings() { + subPanels.forEach(panel -> panel.saveSettings()); + } + + public void loadSavedSettings() { + subPanels.forEach(panel -> panel.loadSettings()); + } + + public boolean valid() { + return subPanels.stream().allMatch(panel -> panel.valid()); + } + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JPanel contentPane; + // End of variables declaration//GEN-END:variables +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanelController.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanelController.java new file mode 100644 index 0000000000..12993e1c39 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/CTOptionsPanelController.java @@ -0,0 +1,133 @@ +/* + * 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; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import javax.swing.JComponent; +import org.netbeans.spi.options.OptionsPanelController; +import org.openide.util.HelpCtx; +import org.openide.util.Lookup; + +/** + * Options panel controller for CyberTriage. + */ +@OptionsPanelController.TopLevelRegistration(categoryName = "#OptionsCategory_Name_CyberTriage", + iconBase = "com/basistech/df/cybertriage/autopsy/images/logo.png", + position = 999999, + keywords = "#OptionsCategory_Keywords_CyberTriage", + keywordsCategory = "CyberTriage") +public final class CTOptionsPanelController extends OptionsPanelController { + + private CTOptionsPanel panel; + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); + private boolean changed; + + /** + * Component should load its data here. + */ + @Override + public void update() { + getPanel().loadSavedSettings(); + changed = false; + } + + /** + * This method is called when both the Ok and Apply buttons are pressed. It + * applies to any of the panels that have been opened in the process of + * using the options pane. + */ + @Override + public void applyChanges() { + if (changed) { + getPanel().saveSettings(); + changed = false; + } + } + + /** + * This method is called when the Cancel button is pressed. It applies to + * any of the panels that have been opened in the process of using the + * options pane. + */ + @Override + public void cancel() { + } + + @Override + public boolean isValid() { + return getPanel().valid(); + } + + /** + * Used to determine whether any changes have been made to this controller's + * panel. + * + * @return Whether or not a change has been made. + */ + @Override + public boolean isChanged() { + return changed; + } + + @Override + public HelpCtx getHelpCtx() { + return null; + } + + @Override + public JComponent getComponent(Lookup masterLookup) { + return getPanel(); + } + + @Override + public void addPropertyChangeListener(PropertyChangeListener l) { + pcs.addPropertyChangeListener(l); + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener l) { + pcs.removePropertyChangeListener(l); + } + + private CTOptionsPanel getPanel() { + if (panel == null) { + panel = new CTOptionsPanel(); + panel.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals(OptionsPanelController.PROP_CHANGED)) { + changed(); + } + } + }); + } + return panel; + } + + void changed() { + if (!changed) { + changed = true; + pcs.firePropertyChange(OptionsPanelController.PROP_CHANGED, false, true); + } + pcs.firePropertyChange(OptionsPanelController.PROP_VALID, null, null); + + } +} 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 new file mode 100644 index 0000000000..3c86b5446d --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties @@ -0,0 +1,27 @@ + +# Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license +# Click nbfs://nbhost/SystemFileSystem/Templates/Other/properties.properties to edit this template + +CTLicenseDialog.title=Add a License... +CTLicenseDialog.licenseNumberLabel.text=License Number: +CTLicenseDialog.licenseNumberTextField.text=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +CTLicenseDialog.cancelButton.text=Cancel +CTLicenseDialog.okButton.text=Ok +CTLicenseDialog.warningLabel.text= +CTMalwareScannerOptionsPanel.hashLookupsRemainingLabel.text= +CTMalwareScannerOptionsPanel.countersResetLabel.text= +CTMalwareScannerOptionsPanel.maxFileUploadsLabel.text= +CTMalwareScannerOptionsPanel.maxHashLookupsLabel.text= +CTMalwareScannerOptionsPanel.malwareScansMessageLabel.text= +CTMalwareScannerOptionsPanel.malwareScansPanel.border.title=Malware Scanner +CTMalwareScannerOptionsPanel.licenseInfoAddButton.text=Add License +CTMalwareScannerOptionsPanel.licenseInfoIdLabel.text= +CTMalwareScannerOptionsPanel.licenseInfoExpiresLabel.text= +CTMalwareScannerOptionsPanel.fileUploadsRemainingLabel.text= +CTMalwareScannerOptionsPanel.licenseInfoUserLabel.text= +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 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 new file mode 100644 index 0000000000..0e888c7fac --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/Bundle.properties-MERGED @@ -0,0 +1,65 @@ + +# Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license +# Click nbfs://nbhost/SystemFileSystem/Templates/Other/properties.properties to edit this template + +CTLicenseDialog.title=Add a License... +CTLicenseDialog.licenseNumberLabel.text=License Number: +CTLicenseDialog.licenseNumberTextField.text=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +CTLicenseDialog.cancelButton.text=Cancel +CTLicenseDialog.okButton.text=Ok +CTLicenseDialog.warningLabel.text= +CTLicenseDialog_verifyInput_licenseNumberError=Please verify license number format of 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' +CTMalwareScannerOptionsPanel.hashLookupsRemainingLabel.text= +CTMalwareScannerOptionsPanel.countersResetLabel.text= +CTMalwareScannerOptionsPanel.maxFileUploadsLabel.text= +CTMalwareScannerOptionsPanel.maxHashLookupsLabel.text= +CTMalwareScannerOptionsPanel.malwareScansMessageLabel.text= +CTMalwareScannerOptionsPanel.malwareScansPanel.border.title=Malware Scanner +CTMalwareScannerOptionsPanel.licenseInfoAddButton.text=Add License +CTMalwareScannerOptionsPanel.licenseInfoIdLabel.text= +CTMalwareScannerOptionsPanel.licenseInfoExpiresLabel.text= +CTMalwareScannerOptionsPanel.fileUploadsRemainingLabel.text= +CTMalwareScannerOptionsPanel.licenseInfoUserLabel.text= +CTMalwareScannerOptionsPanel_getResetSuffix_daily=/day +CTMalwareScannerOptionsPanel_getResetSuffix_hourly=/hour +CTMalwareScannerOptionsPanel_getResetSuffix_monthly=/month +CTMalwareScannerOptionsPanel_getResetSuffix_weekly=/week +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_title=Invalid License Number +CTMalwareScannerOptionsPanel_LicenseFetcher_apiErr_title=Server Error +CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_desc=A general error occurred while fetching license information. Please try again later. +CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_title=General Error +# {0} - expiresDate +CTMalwareScannerOptionsPanel_licenseInfo_expires=Expires: {0} +# {0} - idNumber +CTMalwareScannerOptionsPanel_licenseInfo_id=ID: {0} +# {0} - userName +# {1} - email +CTMalwareScannerOptionsPanel_licenseInfo_userInfo=User: {0}
Email: {1} +# {0} - countersResetDate +CTMalwareScannerOptionsPanel_malwareScans_countersReset=Counters reset: {0} +# {0} - fileUploadsRemaining +CTMalwareScannerOptionsPanel_malwareScans_fileUploadsRemaining=File uploads remaining: {0} +# {0} - hashLookupsRemaining +CTMalwareScannerOptionsPanel_malwareScans_hashLookupsRemaining=Hash lookups remaining: {0} +# {0} - maxDailyFileLookups +# {1} - resetSuffix +CTMalwareScannerOptionsPanel_malwareScans_maxDailyFileLookups=Max file uploads: {0}{1} +# {0} - maxDailyLookups +# {1} - resetSuffix +CTMalwareScannerOptionsPanel_malwareScans_maxDailyHashLookups=Max Hash lookups: {0}{1} +CTMalwareScannerOptionsPanel_MalwareScansFetcher_apiErr_title=Server Error +CTMalwareScannerOptionsPanel_MalwareScansFetcher_localErr_desc=A general error occurred while fetching malware scans information. Please try again later. +CTMalwareScannerOptionsPanel_MalwareScansFetcher_localErr_title=General Error +CTOPtionsPanel_loadLicenseInfo_loading=Loading... +CTOPtionsPanel_loadMalwareScansInfo_loading=Loading... +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 diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicenseDialog.form b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicenseDialog.form new file mode 100644 index 0000000000..e7cd2743a0 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicenseDialog.form @@ -0,0 +1,138 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicenseDialog.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicenseDialog.java new file mode 100644 index 0000000000..3bff998901 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicenseDialog.java @@ -0,0 +1,196 @@ +/* + * 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 java.util.regex.Pattern; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import org.apache.commons.lang3.StringUtils; +import org.openide.util.NbBundle.Messages; + +/** + * License dialog + */ +class CTLicenseDialog extends javax.swing.JDialog { + + private static final Pattern LICENSE_PATTERN = Pattern.compile("^\\s*[a-zA-Z0-9\\-]+?\\s*$"); + private String licenseString = null; + + /** + * Creates new form CTLicenseDialog + */ + public CTLicenseDialog(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + this.licenseNumberTextField.getDocument().putProperty("filterNewlines", Boolean.TRUE); + this.licenseNumberTextField.getDocument().addDocumentListener(new DocumentListener() { + @Override + public void changedUpdate(DocumentEvent e) { + verifyInput(); + } + + @Override + public void insertUpdate(DocumentEvent e) { + verifyInput(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + verifyInput(); + } + }); + } + + String getValue() { + return licenseString; + } + + @Messages({ + "CTLicenseDialog_verifyInput_licenseNumberError=Please verify license number format of 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'" + }) + private void verifyInput() { + String licenseInput = StringUtils.defaultString(this.licenseNumberTextField.getText()); + if (LICENSE_PATTERN.matcher(licenseInput).matches()) { + this.warningLabel.setText(""); + this.okButton.setEnabled(true); + } else { + this.warningLabel.setText(Bundle.CTLicenseDialog_verifyInput_licenseNumberError()); + this.okButton.setEnabled(false); + } + } + + /** + * 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 + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; + + javax.swing.JLabel licenseNumberLabel = new javax.swing.JLabel(); + warningLabel = new javax.swing.JLabel(); + javax.swing.JPanel buttonPadding = new javax.swing.JPanel(); + okButton = new javax.swing.JButton(); + cancelButton = new javax.swing.JButton(); + licenseNumberTextField = new javax.swing.JTextField(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle(org.openide.util.NbBundle.getMessage(CTLicenseDialog.class, "CTLicenseDialog.title")); // NOI18N + setAlwaysOnTop(true); + setResizable(false); + getContentPane().setLayout(new java.awt.GridBagLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(licenseNumberLabel, org.openide.util.NbBundle.getMessage(CTLicenseDialog.class, "CTLicenseDialog.licenseNumberLabel.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.insets = new java.awt.Insets(5, 5, 5, 5); + getContentPane().add(licenseNumberLabel, gridBagConstraints); + + warningLabel.setForeground(java.awt.Color.RED); + org.openide.awt.Mnemonics.setLocalizedText(warningLabel, org.openide.util.NbBundle.getMessage(CTLicenseDialog.class, "CTLicenseDialog.warningLabel.text")); // NOI18N + warningLabel.setMaximumSize(new java.awt.Dimension(419, 36)); + warningLabel.setMinimumSize(new java.awt.Dimension(419, 36)); + warningLabel.setPreferredSize(new java.awt.Dimension(419, 36)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 2; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + getContentPane().add(warningLabel, gridBagConstraints); + + javax.swing.GroupLayout buttonPaddingLayout = new javax.swing.GroupLayout(buttonPadding); + buttonPadding.setLayout(buttonPaddingLayout); + buttonPaddingLayout.setHorizontalGroup( + buttonPaddingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); + buttonPaddingLayout.setVerticalGroup( + buttonPaddingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 3; + gridBagConstraints.weightx = 1.0; + getContentPane().add(buttonPadding, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(CTLicenseDialog.class, "CTLicenseDialog.okButton.text")); // NOI18N + okButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + okButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + getContentPane().add(okButton, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(CTLicenseDialog.class, "CTLicenseDialog.cancelButton.text")); // NOI18N + cancelButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cancelButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + getContentPane().add(cancelButton, gridBagConstraints); + + licenseNumberTextField.setText(org.openide.util.NbBundle.getMessage(CTLicenseDialog.class, "CTLicenseDialog.licenseNumberTextField.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + getContentPane().add(licenseNumberTextField, gridBagConstraints); + + pack(); + }// //GEN-END:initComponents + + private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed + this.licenseString = this.licenseNumberTextField.getText(); + this.dispose(); + }//GEN-LAST:event_okButtonActionPerformed + + private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed + this.licenseString = null; + this.dispose(); + }//GEN-LAST:event_cancelButtonActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton cancelButton; + private javax.swing.JTextField licenseNumberTextField; + private javax.swing.JButton okButton; + private javax.swing.JLabel warningLabel; + // End of variables declaration//GEN-END:variables +} 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 new file mode 100644 index 0000000000..43e34a8d2a --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTLicensePersistence.java @@ -0,0 +1,101 @@ +/* + * 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.json.LicenseInfo; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.util.LicenseDecryptorUtil; +import com.basistech.df.cybertriage.autopsy.ctapi.util.ObjectMapperUtil; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.File; +import java.io.IOException; +import java.nio.file.Paths; +import java.util.Optional; +import java.util.logging.Level; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.PlatformUtil; + +/** + * Handles persisting CT Settings. + */ +public class CTLicensePersistence { + + private static final String CT_SETTINGS_DIR = "CyberTriage"; + private static final String CT_LICENSE_FILENAME = "CyberTriageLicense.json"; + private static final String MALWARE_INGEST_SETTINGS_FILENAME = "MalwareIngestSettings.json"; + + private static final Logger logger = Logger.getLogger(CTLicensePersistence.class.getName()); + + private static final CTLicensePersistence instance = new CTLicensePersistence(); + + private final ObjectMapper objectMapper = ObjectMapperUtil.getInstance().getDefaultObjectMapper(); + + public static CTLicensePersistence getInstance() { + return instance; + } + + public synchronized boolean saveLicenseResponse(LicenseResponse licenseResponse) { + if (licenseResponse != null) { + File licenseFile = getCTLicenseFile(); + try { + licenseFile.getParentFile().mkdirs(); + objectMapper.writeValue(licenseFile, licenseResponse); + return true; + } catch (IOException ex) { + logger.log(Level.WARNING, "There was an error writing CyberTriage license to file: " + licenseFile.getAbsolutePath(), ex); + } + } + + return false; + } + + public synchronized Optional loadLicenseResponse() { + Optional toRet = Optional.empty(); + File licenseFile = getCTLicenseFile(); + if (licenseFile.exists() && licenseFile.isFile()) { + try { + toRet = Optional.ofNullable(objectMapper.readValue(licenseFile, LicenseResponse.class)); + } catch (IOException ex) { + logger.log(Level.WARNING, "There was an error reading CyberTriage license to file: " + licenseFile.getAbsolutePath(), ex); + } + } + + return toRet; + } + + public synchronized Optional loadLicenseInfo() { + return loadLicenseResponse().flatMap((license) -> { + try { + return Optional.ofNullable(LicenseDecryptorUtil.getInstance().createLicenseInfo(license)); + } catch (JsonProcessingException | LicenseDecryptorUtil.InvalidLicenseException ex) { + logger.log(Level.WARNING, "There was an error decrypting license data from license file", ex); + return Optional.empty(); + } + }); + } + + private File getCTLicenseFile() { + return Paths.get(PlatformUtil.getModuleConfigDirectory(), CT_SETTINGS_DIR, CT_LICENSE_FILENAME).toFile(); + } + + private File getMalwareIngestFile() { + return Paths.get(PlatformUtil.getModuleConfigDirectory(), CT_SETTINGS_DIR, MALWARE_INGEST_SETTINGS_FILENAME).toFile(); + } +} 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 new file mode 100644 index 0000000000..dcdfb0a767 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.form @@ -0,0 +1,255 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 new file mode 100644 index 0000000000..375943188c --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/CTMalwareScannerOptionsPanel.java @@ -0,0 +1,746 @@ +/* + * 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.ctoptions.subpanel.CTOptionsSubPanel; +import com.basistech.df.cybertriage.autopsy.ctapi.CTCloudException; +import com.basistech.df.cybertriage.autopsy.ctapi.CTApiDAO; +import com.basistech.df.cybertriage.autopsy.ctapi.json.AuthTokenResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.json.DecryptedLicenseResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseInfo; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseLimitType; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseResponse; +import com.basistech.df.cybertriage.autopsy.ctapi.util.LicenseDecryptorUtil; +import com.basistech.df.cybertriage.autopsy.ctapi.util.LicenseDecryptorUtil.InvalidLicenseException; +import java.awt.Desktop; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Optional; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; +import org.apache.commons.lang3.StringUtils; +import org.netbeans.spi.options.OptionsPanelController; +import org.openide.util.NbBundle; +import org.openide.util.NbBundle.Messages; +import org.openide.util.lookup.ServiceProvider; +import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.core.UserPreferences; + +/** + * Options panel to be displayed in the CTOptionsPanel for settings regarding + * Cyber Triage Malware Scanner settings and license setup. + */ +@ServiceProvider(service = CTOptionsSubPanel.class) +public class CTMalwareScannerOptionsPanel extends CTOptionsSubPanel { + + private static final Logger logger = Logger.getLogger(CTMalwareScannerOptionsPanel.class.getName()); + + private static final DateTimeFormatter LICENSE_EXPIRES_FORMAT = DateTimeFormatter + .ofPattern("MMMM d, YYYY") + .withZone(ZoneId.of(UserPreferences.getInferredUserTimeZone())); + + private static final DateTimeFormatter MALWARE_SCANS_RESET_FORMAT = DateTimeFormatter + .ofPattern("MMM d, YYYY' at 'h:mma") + .withZone(ZoneId.of(UserPreferences.getInferredUserTimeZone())); + + private final CTApiDAO ctApiDAO = CTApiDAO.getInstance(); + private final CTLicensePersistence ctPersistence = CTLicensePersistence.getInstance(); + + private volatile LicenseInfo licenseInfo = null; + private volatile String licenseInfoMessage = null; + private volatile LicenseFetcher licenseFetcher = null; + + private static final String PURCHASE_URL = "https://cybertriage.com/autopsy-malware-module"; + + private volatile AuthTokenResponse authTokenResponse = null; + private volatile String authTokenMessage = null; + private volatile AuthTokenFetcher authTokenFetcher = null; + + /** + * Main constructor. + */ + public CTMalwareScannerOptionsPanel() { + initComponents(); + + this.addComponentListener(new ComponentAdapter() { + @Override + public void componentHidden(ComponentEvent e) { + synchronized (CTMalwareScannerOptionsPanel.this) { + if (CTMalwareScannerOptionsPanel.this.isLicenseAddRunning()) { + CTMalwareScannerOptionsPanel.this.licenseFetcher.cancel(true); + CTMalwareScannerOptionsPanel.this.licenseFetcher = null; + } + + if (CTMalwareScannerOptionsPanel.this.isMalwareScansRunning()) { + CTMalwareScannerOptionsPanel.this.authTokenFetcher.cancel(true); + CTMalwareScannerOptionsPanel.this.authTokenFetcher = null; + } + } + } + + @Override + public void componentShown(ComponentEvent e) { + synchronized (CTMalwareScannerOptionsPanel.this) { + if (CTMalwareScannerOptionsPanel.this.licenseInfo != null) { + loadMalwareScansInfo(CTMalwareScannerOptionsPanel.this.licenseInfo); + } + } + } + } + ); + } + + @Override + public synchronized void saveSettings() { + ctPersistence.saveLicenseResponse(getLicenseInfo()); + } + + @Override + public boolean valid() { + return true; + } + + @Override + public synchronized void loadSettings() { + Optional licenseInfoOpt = ctPersistence.loadLicenseInfo(); + LicenseInfo licenseInfo = licenseInfoOpt.orElse(null); + setLicenseDisplay(licenseInfo, null); + setMalwareScansDisplay(null, null); + if (licenseInfo != null) { + loadMalwareScansInfo(licenseInfo); + this.purchaseFromLabel.setVisible(false); + this.purchaseLink.setVisible(false); + } else { + this.purchaseFromLabel.setVisible(true); + this.purchaseLink.setVisible(true); + } + } + + private static String getHtmlLink(String url) { + return "" + url + ""; + } + + private void gotoLink(String url) { + if (Desktop.isDesktopSupported()) { + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException | URISyntaxException e) { + logger.log(Level.SEVERE, "Error opening link to: " + url, e); + } + } else { + logger.log(Level.WARNING, "Desktop API is not supported. Link cannot be opened."); + } + } + + private synchronized LicenseResponse getLicenseInfo() { + return this.licenseInfo == null ? null : this.licenseInfo.getLicenseResponse(); + } + + private synchronized void setLicenseDisplay(LicenseInfo licenseInfo, String licenseMessage) { + this.licenseInfo = licenseInfo; + this.licenseInfoMessage = licenseMessage; + renderLicenseState(); + } + + private synchronized void setMalwareScansDisplay(AuthTokenResponse authTokenResponse, String authTokenMessage) { + this.authTokenResponse = authTokenResponse; + this.authTokenMessage = authTokenMessage; + renderLicenseState(); + } + + /** + * @return True if there is an operation to fetch the license. + */ + private synchronized boolean isLicenseAddRunning() { + return this.licenseFetcher != null && !this.licenseFetcher.isCancelled() && !this.licenseFetcher.isDone(); + } + + /** + * @return True if there is an operation to fetch malware scans information. + */ + private synchronized boolean isMalwareScansRunning() { + return this.authTokenFetcher != null && !this.authTokenFetcher.isCancelled() && !this.authTokenFetcher.isDone(); + } + + @Messages({ + "CTOPtionsPanel_loadLicenseInfo_loading=Loading..." + }) + private synchronized void loadLicenseInfo(String licenseNumber) { + if (isLicenseAddRunning()) { + this.licenseFetcher.cancel(true); + } + setLicenseDisplay(null, Bundle.CTOPtionsPanel_loadLicenseInfo_loading()); + setMalwareScansDisplay(null, null); + this.licenseFetcher = new LicenseFetcher(licenseNumber); + this.licenseFetcher.execute(); + } + + @Messages({ + "CTOPtionsPanel_loadMalwareScansInfo_loading=Loading..." + }) + private synchronized void loadMalwareScansInfo(LicenseInfo licenseInfo) { + if (isMalwareScansRunning()) { + this.authTokenFetcher.cancel(true); + } + + if (licenseInfo == null || licenseInfo.getDecryptedLicense() == null) { + setMalwareScansDisplay(null, null); + return; + } + + setMalwareScansDisplay(null, Bundle.CTOPtionsPanel_loadMalwareScansInfo_loading()); + + this.authTokenFetcher = new AuthTokenFetcher(licenseInfo.getDecryptedLicense()); + this.authTokenFetcher.execute(); + } + + /** + * 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 + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; + + malwareScansPanel = new javax.swing.JPanel(); + javax.swing.JLabel disclaimer = new javax.swing.JLabel(); + javax.swing.JPanel licenseInfoPanel = new javax.swing.JPanel(); + licenseInfoMessageLabel = new javax.swing.JLabel(); + licenseInfoExpiresLabel = new javax.swing.JLabel(); + licenseInfoIdLabel = new javax.swing.JLabel(); + licenseInfoUserLabel = new javax.swing.JLabel(); + licenseInfoAddButton = new javax.swing.JButton(); + maxFileUploadsLabel = new javax.swing.JLabel(); + maxHashLookupsLabel = new javax.swing.JLabel(); + hashLookupsRemainingLabel = new javax.swing.JLabel(); + malwareScansMessageLabel = new javax.swing.JLabel(); + countersResetLabel = new javax.swing.JLabel(); + fileUploadsRemainingLabel = new javax.swing.JLabel(); + javax.swing.JPanel purchasePanel = new javax.swing.JPanel(); + purchaseFromLabel = new javax.swing.JLabel(); + purchaseLink = new javax.swing.JLabel(); + + setLayout(new java.awt.GridBagLayout()); + + malwareScansPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.malwareScansPanel.border.title"))); // NOI18N + 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); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + 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); + malwareScansPanel.add(disclaimer, gridBagConstraints); + + licenseInfoPanel.setLayout(new java.awt.GridBagLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(licenseInfoMessageLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.licenseInfoMessageLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + 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(licenseInfoMessageLabel, 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 = 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.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(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.anchor = java.awt.GridBagConstraints.NORTHEAST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + licenseInfoPanel.add(licenseInfoAddButton, 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 = 4; + 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(maxHashLookupsLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.maxHashLookupsLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 3; + 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 = 3; + 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 + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 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(malwareScansMessageLabel, 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.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 + 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(0, 5, 5, 5); + licenseInfoPanel.add(fileUploadsRemainingLabel, 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; + malwareScansPanel.add(licenseInfoPanel, gridBagConstraints); + + purchasePanel.setLayout(new java.awt.GridBagLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(purchaseFromLabel, org.openide.util.NbBundle.getMessage(CTMalwareScannerOptionsPanel.class, "CTMalwareScannerOptionsPanel.purchaseFromLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + purchasePanel.add(purchaseFromLabel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(purchaseLink, getHtmlLink(PURCHASE_URL)); + purchaseLink.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + purchaseLink.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + purchaseLinkMouseClicked(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 0); + purchasePanel.add(purchaseLink, gridBagConstraints); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 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); + 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); + }// //GEN-END:initComponents + + @Messages({ + "CTMalwareScannerOptionsPanel_licenseAddDialog_title=Add a License...", + "CTMalwareScannerOptionsPanel_licenseAddDialog_desc=License Number:", + "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'"}) + private void licenseInfoAddButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_licenseInfoAddButtonActionPerformed + CTLicenseDialog licenseDialog = new CTLicenseDialog(WindowManager.getDefault().getMainWindow(), true); + licenseDialog.setLocationRelativeTo(this); + licenseDialog.setVisible(true); + String licenseNumber = licenseDialog.getValue(); + if (licenseNumber != null) { + synchronized (this) { + if (this.licenseInfo == null || !licenseNumber.trim().equalsIgnoreCase(this.licenseInfo.getDecryptedLicense().getBoostLicenseId())) { + loadLicenseInfo(licenseNumber); + return; + } + } + + JOptionPane.showMessageDialog( + this, + Bundle.CTMalwareScannerOptionsPanel_licenseAddDialogEnteredErr_desc(), + Bundle.CTMalwareScannerOptionsPanel_licenseAddDialogEnteredErr_title(), + JOptionPane.INFORMATION_MESSAGE); + + } + }//GEN-LAST:event_licenseInfoAddButtonActionPerformed + + private void purchaseLinkMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_purchaseLinkMouseClicked + gotoLink(PURCHASE_URL); + }//GEN-LAST:event_purchaseLinkMouseClicked + + @NbBundle.Messages({ + "# {0} - userName", + "# {1} - email", + "CTMalwareScannerOptionsPanel_licenseInfo_userInfo=User: {0}
Email: {1}", + "# {0} - expiresDate", + "CTMalwareScannerOptionsPanel_licenseInfo_expires=Expires: {0}", + "# {0} - idNumber", + "CTMalwareScannerOptionsPanel_licenseInfo_id=ID: {0}", + "# {0} - maxDailyLookups", + "# {1} - resetSuffix", + "CTMalwareScannerOptionsPanel_malwareScans_maxDailyHashLookups=Max Hash lookups: {0}{1}", + "# {0} - maxDailyFileLookups", + "# {1} - resetSuffix", + "CTMalwareScannerOptionsPanel_malwareScans_maxDailyFileLookups=Max file uploads: {0}{1}", + "# {0} - countersResetDate", + "CTMalwareScannerOptionsPanel_malwareScans_countersReset=Counters reset: {0}", + "# {0} - hashLookupsRemaining", + "CTMalwareScannerOptionsPanel_malwareScans_hashLookupsRemaining=Hash lookups remaining: {0}", + "# {0} - fileUploadsRemaining", + "CTMalwareScannerOptionsPanel_malwareScans_fileUploadsRemaining=File uploads remaining: {0}"}) + private synchronized void renderLicenseState() { + this.licenseInfoAddButton.setEnabled(!isLicenseAddRunning()); + + this.licenseInfoMessageLabel.setVisible(StringUtils.isNotBlank(this.licenseInfoMessage)); + this.licenseInfoMessageLabel.setText(this.licenseInfoMessage); + + if (licenseInfo == null) { + this.licenseInfoExpiresLabel.setVisible(false); + this.licenseInfoIdLabel.setVisible(false); + this.licenseInfoUserLabel.setVisible(false); + this.purchaseFromLabel.setVisible(true); + this.purchaseLink.setVisible(true); + } else { + this.purchaseFromLabel.setVisible(false); + this.purchaseLink.setVisible(false); + + this.licenseInfoExpiresLabel.setVisible(true); + this.licenseInfoExpiresLabel.setText(Bundle.CTMalwareScannerOptionsPanel_licenseInfo_expires( + this.licenseInfo.getDecryptedLicense().getExpirationDate() == null + ? "" + : LICENSE_EXPIRES_FORMAT.format(this.licenseInfo.getDecryptedLicense().getExpirationDate()))); + this.licenseInfoIdLabel.setVisible(true); + this.licenseInfoIdLabel.setText(Bundle.CTMalwareScannerOptionsPanel_licenseInfo_id(StringUtils.defaultString(this.licenseInfo.getDecryptedLicense().getBoostLicenseId()))); + this.licenseInfoUserLabel.setVisible(true); + this.licenseInfoUserLabel.setText(Bundle.CTMalwareScannerOptionsPanel_licenseInfo_userInfo( + StringUtils.defaultString(this.licenseInfo.getDecryptedLicense().getCustomerName()), + StringUtils.defaultString(this.licenseInfo.getDecryptedLicense().getCustomerEmail()))); + } + + this.malwareScansMessageLabel.setVisible(StringUtils.isNotBlank(this.authTokenMessage)); + this.malwareScansMessageLabel.setText(this.authTokenMessage); + + if (authTokenResponse == null || this.licenseInfo == null) { + this.maxHashLookupsLabel.setVisible(false); + this.maxFileUploadsLabel.setVisible(false); + this.countersResetLabel.setVisible(false); + this.hashLookupsRemainingLabel.setVisible(false); + this.fileUploadsRemainingLabel.setVisible(false); + } else { + this.maxHashLookupsLabel.setVisible(true); + this.maxHashLookupsLabel.setText(Bundle.CTMalwareScannerOptionsPanel_malwareScans_maxDailyHashLookups( + this.authTokenResponse.getHashLookupLimit(), + getResetSuffix(this.licenseInfo.getDecryptedLicense().getLimitType()))); + + this.maxFileUploadsLabel.setVisible(true); + this.maxFileUploadsLabel.setText(Bundle.CTMalwareScannerOptionsPanel_malwareScans_maxDailyFileLookups( + this.authTokenResponse.getFileUploadLimit(), + getResetSuffix(this.licenseInfo.getDecryptedLicense().getLimitType()))); + + this.countersResetLabel.setVisible(true); + this.countersResetLabel.setText(getCountersResetText(this.licenseInfo.getDecryptedLicense().getLimitType(), this.authTokenResponse)); + + this.hashLookupsRemainingLabel.setVisible(true); + this.hashLookupsRemainingLabel.setText( + Bundle.CTMalwareScannerOptionsPanel_malwareScans_hashLookupsRemaining( + remaining(this.authTokenResponse.getHashLookupLimit(), this.authTokenResponse.getHashLookupCount()))); + + this.fileUploadsRemainingLabel.setVisible(true); + this.fileUploadsRemainingLabel.setText( + Bundle.CTMalwareScannerOptionsPanel_malwareScans_fileUploadsRemaining( + remaining(this.authTokenResponse.getFileUploadLimit(), this.authTokenResponse.getFileUploadCount()))); + } + } + + private static String getCountersResetText(LicenseLimitType limitType, AuthTokenResponse authTokenResponse) { + if (limitType == null || limitType == LicenseLimitType.NO_RESET) { + return ""; + } else { + return Bundle.CTMalwareScannerOptionsPanel_malwareScans_countersReset( + MALWARE_SCANS_RESET_FORMAT.format(authTokenResponse.getResetDate())); + } + } + + @Messages({ + "CTMalwareScannerOptionsPanel_getResetSuffix_hourly=/hour", + "CTMalwareScannerOptionsPanel_getResetSuffix_daily=/day", + "CTMalwareScannerOptionsPanel_getResetSuffix_weekly=/week", + "CTMalwareScannerOptionsPanel_getResetSuffix_monthly=/month" + }) + private String getResetSuffix(LicenseLimitType limitType) { + if (limitType == null) { + return ""; + } + + switch (limitType) { + case HOURLY: + return Bundle.CTMalwareScannerOptionsPanel_getResetSuffix_hourly(); + case DAILY: + return Bundle.CTMalwareScannerOptionsPanel_getResetSuffix_daily(); + case WEEKLY: + return Bundle.CTMalwareScannerOptionsPanel_getResetSuffix_weekly(); + case MONTHLY: + return Bundle.CTMalwareScannerOptionsPanel_getResetSuffix_monthly(); + case NO_RESET: + default: + return ""; + } + } + + private long remaining(Long total, Long used) { + total = total == null ? 0 : total; + used = used == null ? 0 : used; + return total - used; + } + + private void acceptEula(LicenseResponse licenseResponse) { + try { + final EULADialog eulaDialog = new EULADialog(WindowManager.getDefault().getMainWindow(), true); + eulaDialog.setLocationRelativeTo(this); + eulaDialog.setSize(eulaDialog.getPreferredSize()); + eulaDialog.setVisible(true); + + if (eulaDialog.isAcceptPressed()) { + // only indicate a change to save if we have accepted EULA for a license + 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); + } + } + + @NbBundle.Messages({ + "CTMalwareScannerOptionsPanel_LicenseFetcher_apiErr_title=Server Error", + "CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_title=General Error", + "CTMalwareScannerOptionsPanel_LicenseFetcher_localErr_desc=A general error occurred while fetching license information. Please try again later.",}) + private class LicenseFetcher extends SwingWorker { + + private final String licenseText; + + public LicenseFetcher(String licenseText) { + this.licenseText = licenseText; + } + + @Override + protected LicenseResponse doInBackground() throws Exception { + if (this.isCancelled()) { + return null; + } + return ctApiDAO.getLicenseInfo(licenseText); + } + + @Override + protected void done() { + try { + LicenseResponse licenseResponse = get(); + if (licenseResponse != null && licenseResponse.isSuccess()) { + SwingUtilities.invokeLater(() -> acceptEula(licenseResponse)); + } else { + logger.log(Level.WARNING, "An API error occurred while fetching license information. License fetch was not successful"); + JOptionPane.showMessageDialog( + CTMalwareScannerOptionsPanel.this, + CTCloudException.ErrorCode.UN_AUTHORIZED.getDescription(), + Bundle.CTMalwareScannerOptionsPanel_LicenseFetcher_apiErr_title(), + JOptionPane.ERROR_MESSAGE); + setLicenseDisplay(licenseInfo, null); + loadMalwareScansInfo(licenseInfo); + } + } catch (InterruptedException | CancellationException ex) { + // ignore cancellation; just load current license + setLicenseDisplay(licenseInfo, null); + loadMalwareScansInfo(licenseInfo); + } catch (ExecutionException ex) { + 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); + } 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); + } + setLicenseDisplay(licenseInfo, null); + loadMalwareScansInfo(licenseInfo); + } finally { + synchronized (CTMalwareScannerOptionsPanel.this) { + CTMalwareScannerOptionsPanel.this.licenseFetcher = null; + } + } + } + } + + @NbBundle.Messages({ + "CTMalwareScannerOptionsPanel_MalwareScansFetcher_apiErr_title=Server Error", + "CTMalwareScannerOptionsPanel_MalwareScansFetcher_localErr_title=General Error", + "CTMalwareScannerOptionsPanel_MalwareScansFetcher_localErr_desc=A general error occurred while fetching malware scans information. Please try again later.",}) + private class AuthTokenFetcher extends SwingWorker { + + private final DecryptedLicenseResponse decryptedLicense; + + public AuthTokenFetcher(DecryptedLicenseResponse decryptedLicense) { + this.decryptedLicense = decryptedLicense; + } + + @Override + protected AuthTokenResponse doInBackground() throws Exception { + if (this.isCancelled()) { + return null; + } + + return ctApiDAO.getAuthToken(decryptedLicense); + } + + @Override + protected void done() { + AuthTokenResponse authTokenResponse = null; + try { + authTokenResponse = get(); + } catch (InterruptedException | CancellationException ex) { + // ignore cancellation + } 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); + } 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); + } + } finally { + synchronized (CTMalwareScannerOptionsPanel.this) { + CTMalwareScannerOptionsPanel.this.authTokenFetcher = null; + if (!this.isCancelled()) { + setMalwareScansDisplay(authTokenResponse, null); + } + } + } + } + } + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel countersResetLabel; + private javax.swing.JLabel fileUploadsRemainingLabel; + private javax.swing.JLabel hashLookupsRemainingLabel; + private javax.swing.JButton licenseInfoAddButton; + private javax.swing.JLabel licenseInfoExpiresLabel; + private javax.swing.JLabel licenseInfoIdLabel; + private javax.swing.JLabel licenseInfoMessageLabel; + private javax.swing.JLabel licenseInfoUserLabel; + private javax.swing.JLabel malwareScansMessageLabel; + private javax.swing.JPanel malwareScansPanel; + private javax.swing.JLabel maxFileUploadsLabel; + private javax.swing.JLabel maxHashLookupsLabel; + private javax.swing.JLabel purchaseFromLabel; + private javax.swing.JLabel purchaseLink; + // End of variables declaration//GEN-END:variables +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/EULA.htm b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/EULA.htm new file mode 100644 index 0000000000..5b4989807b --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/EULA.htm @@ -0,0 +1 @@ +

CYBER TRIAGE

END USER LICENSE AGREEMENT

v. 1.17, 1/2023

BASISTECH LLC, A DELAWARE LIMITED LIABILITY COMPANY HAVING ITS MAIN OFFICE AT 1070 BROADWAY, SOMERVILLE,, MASSACHUSETTS 02144 (“BASIS”) IS WILLING TO LICENSE THE SOFTWARE (DEFINED BELOW) TO YOU, AS CUSTOMER (“YOU”) ONLY IF YOU ACCEPT ALL TERMS AND CONDITIONS CONTAINED IN THIS END USER LICENSE AGREEMENT (“AGREEMENT”).  PLEASE READ THE TERMS AND CONDITIONS CAREFULLY.   BY CLICKING OR CHECKING ANY “I ACCEPT,” “I AGREE” OR OTHER SIMILAR BUTTON/CHECK­BOX, YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS STATED IN THIS AGREEMENT.  IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THESE TERMS AND CONDITIONS, IN WHICH CASE THE TERMS “YOU” OR “YOUR” SHALL REFER TO SUCH ENTITY.  IF YOU DO NOT AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT, DO NOT CLICK OR CHECK ANY “I ACCEPT,” “I AGREE” OR OTHER SIMILAR BUTTON/CHECK­BOX.

  1. SOFTWARE LICENSE.  
  1. Software. This Agreement applies to the Basis Cyber Triage software (“Software”) provided to You by Basis with this Agreement, and related user/operating documentation (“Documentation”). The Software includes free features (“Free Features”), as well as features that require payment of license fees (“Paid Features”).   Each copy of the Software shall have a version number and a release date (the “Release Date”).
  2. Trial License.  If You have downloaded a copy of the Software for the first time, and You have not purchased  a paid license for Software (directly or via a reseller),, Basis grants to You a non-exclusive trial license to use the Software and Documentation for a trial period of seven (7) days (the “Trial Period”), commencing on Your download of the Software (the “Start Date”).  During the Trial Period, You will be able and permitted to use all Free Features and Paid Features of the Software, subject to compliance with the terms of this Agreement, provided that the Trial License granted to You will be for use of object code only. Upon submission of Your written request, Basis may (but shall have no obligation to) provide You with a special license key to extend the Trial Period for a mutually agreed period. At the end of the Trial Period (including any agreed extension thereof), Your access to and right to use the Paid Features will automatically terminate, unless You have purchased a license for the Paid Features from Basis.
  3. Free Features License. Following the Trial Period, or if You download a copy of the Software not for the first time and have not purchased a paid license for Software, Basis grants to You a  non-exclusive license to use the Free Features of the Software only (“Free License”), and the Documentation, subject to the terms and conditions of this Agreement, commencing upon termination of the Trial Period and/or Your free download of the Software (the “Free License Start Date”) and terminating on the first anniversary of the applicable Release Date (unless earlier terminated pursuant to the terms of this Agreement), provided that the license granted to You will be for use of object code only. Upon termination of Your Free License, You shall have no right to use the Software unless You have purchased a paid license for the Software, or You have received a new Free License from Basis.
  4. Paid License Grant. If You have purchased a paid license from Basis (directly or via a reseller), Basis grants to You a non-exclusive license to use the Software and Documentation, including the Free Features and the Paid Features (“Paid License”), commencing on delivery of a production license key  for the Paid License (“Paid License Start Date”), subject to the terms and conditions of this Agreement.. 
  5. Paid License Term: The license term for a Paid License, which may be annual or perpetual, shall be determined by the specific Software product that You have purchased, as set forth in an applicable quote and as described on the following webpage:
    https://www.cybertriage.com/product-sku/
      (each of the products and services identified by a separate SKU are referred to herein as “Products”).
  6. Delivery/Acceptance.  All Software provided under this Agreement shall be deemed to have been accepted by You upon Your download of the Software or delivery of the applicable license key, whichever occurs first.  A production license key for a Paid License shall be delivered/offered for download promptly after Basis receives payment of the applicable license fees.  
  7. Copies.  All copies of the Software are subject to the provisions of this Agreement, and all titles trademarks, and copyright and restricted rights notices shall be reproduced in any copies.  Copying of the Documentation is permitted for internal use only.  
  8. Ownership.  You acquire only the right to use the Software; You do not acquire any rights of ownership.  All rights, title, and interest in the Software and feedback from You regarding the Software shall at all times remain the property of Basis (or, as applicable, Basis's third party providers).  Basis reserves all rights not expressly granted herein.
  9. Optional License to Hosted Scanning Service.  The Paid Features include an opt-in module for a hosted scanning service (“Scanning Service”) provided by Reversing Labs International, GMBH (“ReversingLabs”).  The Scanning Service allows You to upload files and hashes and have them scanned for malware, with the results being publically available. You must have a valid Trial License or Paid License to access and use the Scanning Service. YOUR USE OF THE SCANNING SERVICE IS OPTIONAL AND UNLESS OTHERWISE AGREED TO IN WRITING BY BASIS, YOU WILL HAVE AN HOURLY OR DAILY LIMIT OF FILE SCANS AND HASH SCANS AS DESCRIBED BY THE APPLICABLE PRODUCT.  TRIAL LICENSES ARE SUBJECT TO DAILY OR HOURLY LIMITS APPLIED AT BASIS’S DISCRETION.  EXCEPT IN THE CASE OF A TRIAL LICENSE, YOUR SUBSCRIPTION PERIOD FOR THE SCANNING SERVICE IS AS DESCRIBED BY THE APPLICABLE PRODUCT.  IF YOU USE THE SCANNING SERVICE, YOU WILL BE DEEMED AN END-USER OF THE SCANNING SERVICE WHO’S PERMISSION TO USE THE SCANNING SERVICE IS SPONSORED BY BASIS, THROUGH BASIS’S REVERSINGLABS ACCOUNT, AND YOU AGREE TO COMPLY WITH THE TERMS OF THE REVERSINGLABS END-USER SOFTWARE LICENSE AGREEMENT, A COPY OF WHICH IS ATTACHED AS EXHIBIT A TO THIS AGREEMENT (THE “SCANNING SERVICE EULA”), AS SUCH TERMS APPLY TO END-USERS,  IF YOU DO NOT WANT TO UPLOAD YOUR FILES OR HASHES, THEN DO NOT USE THE SCANNING SERVICE.
  10. Information Stored by Basis. Basis may retain and store an anonymized list of the hash values uploaded by each End-User, for purposes of improving the analytics available to users of the Software (e.g., to provide statistics on the frequency with which a particular hash value is uploaded). Such information may be stored on a third-party hosted cloud server, controlled by Basis. The foregoing server may also store the following information: (a) License ID numbers (without associating such numbers with named End-Users), for authentication purposes; and (b) the daily number of hash lookups performed by each License ID, for purposes of enforcing license limits. Basis may also retain and store anonymized analytical results. Such results will include the count and type of items scored as “Suspicious” and “Bad”, for purposes of identifying errors in the Software. By using the Software, You agree to the storage of such information by Basis.
  1. OBLIGATIONS.
  1. User Limit.  Each Paid License is limited to use by a single individual. Any use of the Software provided under this Agreement by more than one user is a material breach of this Agreement. If you have a Trial License or a Free License, your license is limited to use by the individual who downloaded the Software.     
  2. Usage Restrictions.  You shall not: (A) sublicense or redistribute the Software; (B) use the Software in a manner that is contrary to applicable law or in violation of any third party rights of privacy or intellectual property rights; or (C) translate, create a derivative work of, reverse engineer, reverse assemble, dissemble, or decompile the Software or any part thereof or otherwise attempt to discover any source code or modify or adapt the Software in any manner or form unless expressly allowed in the Documentation or under applicable law (solely for the purpose of achieving interoperability).  You are responsible for all use of the Software and You shall cause Your users to be in compliance with this Agreement.        
  1. FEES AND PAYMENT.  If You purchased a Paid License, You shall pay the license fees for the applicable Product as specified by Basis.  All fees are non-refundable.
  2. TERM AND TERMINATION.  
  1. Agreement Term.  This Agreement shall remain in effect for as long as you have either a Free License or a Paid License from Basis (“Agreement Term”), unless earlier terminated in accordance with this Section.  
  2. Termination for Breach.  Basis may terminate this Agreement effective immediately upon written notice to You if You breach any provision of this Agreement or of the Scanning Service EULA, and if such breach is curable, fail to cure within thirty (30) days after receipt of Basis’s written notice thereof.    
  3. Termination of Scanning Service.  If as a result of a change in the relationship between Basis and the vendor of the Scanning Service, Basis terminates, replaces or changes vendors, Basis will use commercially reasonable efforts to (A) allow You to continue using the service until the end of Your paid subscription period (if any) and (B) communicate details and terms regarding the new service, if any, to You at or before your next annual subscription renewal.  
  4. Effect of Termination.  Upon termination of any license granted hereunder, You shall immediately cease all use of the applicable Software and delete all copies and license keys in Your possession or under Your control.  Termination or expiration of this Agreement or any license shall not limit either party from pursuing any other remedies available to it, including injunctive relief, nor shall such termination or expiration relieve Your obligation to pay all fees that accrued prior to such termination or expiration.  The following Sections shall survive any termination or expiration: 1.8, 4.4, 8-9 and 10, 12, 13 and 14; and to assist in interpreting such surviving provisions, the definitions of defined terms used in those provisions shall also survive.
  1. TAXES.  Basis fees do not include any local, state, federal or foreign taxes, levies or duties of any nature, including value-added, sale, use or withholding taxes (“Taxes”).  You are responsible for paying all Taxes, excluding only taxes based on Basis's net income.  If Basis has the legal obligation to pay or collect Taxes for which You are obligated to pay pursuant to the terms of this Section, the appropriate amount shall be invoiced to and paid by You unless You provide Basis with a valid tax exemption certificate authorized by the appropriate taxing authority.

  1. MAINTENANCE AND SUPPORT SERVICES.   If the Product you have purchased includes Support Services, as defined below, You shall be entitled to receive the Support Services for the period indicated in the applicable Product description, subject to full payment of the applicable fees.  “Support Services” shall mean e-mail support during regular business hours, Boston, MA, time, as well as updates, bug-fixes and minor version releases, each as defined by Basis and on a “when-and-if-available” basis (“Updates”). Updates shall be subject to this Agreement, as it may be amended and provided to You at the time of the applicable Update.    
  2. AUDIT.  Basis may audit Your use of the Software on thirty (30) days’ advanced written notice.  You will cooperate with the audit, including by providing access to any books, computers, records, or other information that relate or may relate to use of the Software.  Such audit will not unreasonably interfere with Your business activities.  In the event that an audit reveals unauthorized use of the Software, You will reimburse Basis for the reasonable cost of the audit, in addition to such other rights and remedies as Basis may have.  Basis will not conduct an audit more than once per calendar year.
  3. WARRANTIES.  
  1. Software Warranty, Duration and Remedy.  Basis warrants that it has title to the Software and/or the authority to grant licenses to use the Software.  During a period of thirty (30) days starting from the Paid License Start Date, Basis warrants that the Software will substantially perform as described in the Documentation, provided that the Software: (A) has been properly installed and used at all times in accordance with the Documentation, and (B) has not been modified or added to by persons other than Basis.  In the event of breach of the warranty in this Subsection 8.1, You shall promptly give Basis written notice and upon receipt, Basis will promptly repair the Software or replace it with software of substantially similar functionality, or if the error is irreparable in Basis’s reasonable determination, then Basis shall provide You with a refund of Your paid fees.  THE REMEDIES SET FORTH IN THE PREVIOUS SENTENCE ARE YOUR SOLE AND EXCLUSIVE REMEDIES FOR A BREACH OF WARRANTY.  
  2. Disclaimer.  EXCEPT FOR THE WARRANTIES DESCRIBED IN SECTION 8.1 IN CONNECTION WITH A PAID LICENSE, BASIS MAKES NO REPRESENTATIONS OR WARRANTIES REGARDING THE CONTENT, EFFECTIVENESS, USEFULNESS, RELIABILITY, AVAILABILITY, TIMELINESS, QUALITY, NON-INFRINGEMENT, SUITABILITY, ACCURACY OR COMPLETENESS OF THE SOFTWARE OR THE SCANNING SERVICE OR THEIR OPERATION OR THAT THE SOFTWARE OR SCANNING SERVICE WILL OPERATE IN CONJUNCTION WITH OTHER SYSTEM SOFTWARE WHICH YOU MAY SELECT OR THE RESULTS YOU MAY OBTAIN BY USING THE SOFTWARE OR THE SCANNING SERVICE OR THAT THE SOFTWARE OR SCANNING SERVICE WILL BE UNINTERRUPTED OR ERROR-FREE OR THAT THE SOFTWARE OR SCANNING SERVICE WILL MEET YOUR REQUIREMENTS OR THAT ALL SOFTWARE OR SCANNING SERVICE ERRORS WILL BE CORRECTED OR THAT IT IS COMPLETELY SECURE.  THERE ARE NO OTHER WARRANTIES OR REPRESENTATIONS, GUARANTEES OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, THOSE OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT OF THIRD PARTY RIGHTS.  YOU ASSUME ALL RESPONSIBILITY FOR DETERMINING WHETHER THE SOFTWARE AND THE SCANNING SERIVCE OR THE INFORMATION GENERATED BY THEM IS ACCURATE OR SUFFICIENT FOR YOUR PURPOSES.
  1. LIMITATION OF LIABILITY.
  1. Exclusion of Consequential Damages.  YOU AGREE THAT THE CONSIDERATION WHICH BASIS IS CHARGING HEREUNDER DOES NOT INCLUDE CONSIDERATION FOR ASSUMPTION BY BASIS OF THE RISK OF YOUR INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES.  TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BASIS AND ITS LICENSORS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, EXEMPLARY, PUNITIVE, SPECIAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF PROFITS, BUSINESS OPPORTUNITIES, REVENUE, DATA, OR USE, INCURRED BY YOU OR ANY THIRD PARTY, WHETHER IN AN ACTION IN CONTRACT OR TORT OR OTHERWISE, ARISING FROM OR RELATED TO THE USE OF THE SOFTWARE OR THE SCANNING SERVICE OR ANY DATA DERIVED THEREFROM, EVEN IF BASIS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  2. Limitation on Direct Damages.  TO THE MAXIMUM EXTENT PERMITTED BY LAW, LIABILITY OF BASIS AND ITS LICENSORS UNDER THIS AGREEMENT FOR DIRECT DAMAGES TO YOU SHALL IN NO EVENT EXCEED THE AMOUNT OF FEES PAID BY YOU UNDER THIS AGREEMENT.
  3. THE FOREGOING LIMITATIONS SHALL APPLY REGARDLESS OF WHETHER BASIS OR ITS LICENSORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND REGARDLESS OF WHETHER ANY REMEDY FAILS OF ITS ESSENTIAL PURPOSE.  
  1. COMPLIANCE WITH LAW. You shall comply with all laws applicable to the actions contemplated by this Agreement.  You acknowledge that the Software is of United States origin, is provided subject to the U.S. Export Administration Regulations, may be subject to the export control laws of the applicable territory, and that diversion contrary to applicable export control laws is prohibited. You represent that (A) You are not, and are not acting on behalf of, (1) any person who is a citizen, national, or resident of, or who is controlled by the government of any country to which the United States has prohibited export transactions; or (2) any person or entity listed on the U.S. Treasury Department list of Specially Designated Nationals and Blocked Persons, or the U.S. Commerce Department Denied Persons List or Entity List; and (B) you will not permit the Software to be used for, any purposes prohibited by law, including, any prohibited development, design, manufacture or production of missiles or nuclear, chemical or biological weapons. The Software and accompanying documentation are deemed to be “commercial computer software” and “commercial computer software documentation”, respectively, pursuant to DFARS Section 227.7202 and FAR Section 12.212(b), as applicable. Any use, modification, reproduction, release, performing, displaying or disclosing of the Software and documentation by or for the U.S. Government shall be governed solely by the terms and conditions of this Agreement.  You assume sole responsibility for any required export approval and/or licenses and all related costs and for the violation of any United States export law or regulation or any other law or regulation of an applicable jurisdiction.  
  2. THIRD PARTY COMPONENTS.  The Software may contain third party owned components, some of which are subject to open source licenses.  Except as permitted by any applicable open source licenses, You shall not use, or permit others to use, such third party owned components apart from the Software.  Your license rights with respect to components subject to open source licenses are defined by the terms of such licenses; nothing in this Agreement is intended to alter, enlarge, or restrict Your rights or obligations under the applicable open source licenses with respect to such open source code.
  3. ASSIGNMENT.  You may assign or transfer all of your rights and interests in this Agreement to another party provided that (A) You give prompt prior written notice to Basis; (B) the proposed transferee is not a direct competitor of Basis (as reasonably determined by Basis); (C) You retain no copies after assignment or transfer; and (D) the transferee agrees to all of the terms of this Agreement.  
  4. GDPR ADDENDUM. If You reside in the European Union, or, if You upload to the Scanning Service files or data samples that contain data relating to real persons that reside in the European Union, then this EULA is subject to the GDPR Addendum that is either attached to this EULA or provided to you separately. In those instances where the GDPR Addendum applies and when there is a conflict between this EULA and the GDPR Addendum, the GDPR Addendum controls.
  5. GENERAL TERMS.  For the avoidance of doubt, the Product descriptions are incorporated into this Agreement by this reference.  This Agreement constitutes the complete agreement between the parties and supersedes all previous agreements or representations, written or oral (including any evaluation agreement), with respect to the Software and services specified herein. ANY CUSTOMER TERMS AND CONDITIONS ATTACHED TO OR REFERENCED IN A CUSTOMER PURCHASE ORDER SHALL BE OF NO FORCE AND EFFECT.

This Agreement may not be modified or amended except in a writing signed by a duly authorized representative of each party.  Wherever possible, each provision of this Agreement shall be interpreted in such manner as to be effective and valid under applicable law, but if any provision of this Agreement shall be prohibited by or invalid under applicable law, such provision shall be ineffective only to the extent of such prohibition or invalidity without invalidating the remainder of such provision or the remaining provisions of this Agreement.  The waiver by either party of any default or breach of this Agreement shall not constitute a waiver of any other or subsequent default or breach.  This Agreement is entered into solely for the benefit of Basis and You, and no third party shall be deemed a beneficiary of this Agreement and no third party shall have the right to make any claim or assert any right under it.  This Agreement and all matters relating to or arising out of this Agreement shall be governed and interpreted by and construed under the laws of the Commonwealth of Massachusetts, without reference to its choice of law provisions and without reference to the United Nations Convention on Contracts for the International Sale of Goods.  The parties agree to submit to the exclusive jurisdiction and venue of state or federal courts located in Boston, Massachusetts.  All notices, including notices of address change, required to be sent hereunder shall be in writing and shall be deemed to have been given when sent by registered mail, overnight mail, or a nationally recognized courier to the addresses listed in the Order Form, or by email to the addresses listed in the Order Form, with receipt of acknowledgement (not automatically generated).  Basis and You agree that any principle of construction or rule of law that provides that agreement be construed against the drafter of the agreement in the event of any inconsistency or ambiguity shall not apply to this Agreement.  Except for any obligation by You to make a payment required under this Agreement, neither party will be liable for any failure or delay in performance due, in whole or in part, to causes beyond its reasonable control, such as natural disasters, wars, strikes and other upheavals.


EXHIBIT 1

REVERSING LABS INTERNATIONAL, GMBH

END-USER SOFTWARE LICENSE AGREEMENT

[Agreement follows on the next page]


END-USER SOFTWARE LICENSE AGREEMENT

PLEASE READ THIS END USER LICENSE AGREEMENT (“EULA”) CAREFULLY. THIS EULA IS A LEGAL AGREEMENT BETWEEN YOU (EITHER AN INDIVIDUAL OR A SINGLE ENTITY) (“LICENSEE” OR “YOU”) AND REVERSING LABS INTERNATIONAL, GMBH, A SWISS LIMITED LIABILITY COMPANY (“REVERSINGLABS”). YOU MUST REVIEW AND EITHER ACCEPT OR REJECT THE TERMS OF THIS EULA BEFORE INSTALLING OR USING THE SOFTWARE. BY CLICKING THE “I ACCEPT” BUTTON, INSTALLING OR OTHERWISE USING THE SOFTWARE, YOU ACKNOWLEDGE THAT YOU HAVE READ ALL OF THE TERMS AND CONDITIONS OF THIS EULA, UNDERSTAND THEM, AND AGREE TO BE LEGALLY BOUND BY THEM. THIS AGREEMENT IS ENFORCEABLE AGAINST YOU AND ANY LEGAL ENTITY THAT OBTAINED THE SOFTWARE AND ON WHOSE BEHALF IT IS USED: FOR EXAMPLE, IF APPLICABLE, YOUR EMPLOYER. IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, DO NOT USE THE SOFTWARE.

If you have entered into a separate agreement with ReversingLabs permitting you to use the Software, that agreement, rather than this EULA, will govern your use of the Software. If all or some portion of the Software has been licensed by another party for your use (e.g., your employer or an individual or company with which you conduct business), your right to use that Software or Data Service and to obtain any related Services is subject to the terms and conditions of the agreement(s) between ReversingLabs and the other party, whether the other party has agreed to the terms of this EULA or to the terms of a separate, written agreement.

If you or your users reside in the European Union, or, if you provide us files or data samples that contain data relating to real persons that reside in the European Union, then this EULA is subject to the GDPR Addendum that is either attached to this EULA or provided to you separately. In those instances where the GDPR Addendum applies and when there is a conflict between this EULA and the GDPR Addendum, the GDPR Addendum controls.

1. DEFINITIONS. The following capitalized terms used in this EULA have the meanings indicated:

1.1 “Account” means an instance of the Software accessible by a single login to the Software.

1.2 “API” means application programming interfaces that ReversingLabs may make available with the Software or as a separate option from time to time. These interfaces allow your programmers to build integrations with the Software.

1.3 “Computer” means an end user personal computer or personal computing device containing one or more CPUs that is not utilized as a Server.

1.4 “Data” means the detailed information related to and samples of known good files, known bad files and Internet locations stored, processed and otherwise maintained in the ReversingLabs’ threat intelligence database, which information is sometimes licensed provided for use with Software and sometimes provided separately, either on a stand-alone basis or as part of a Data Service.

1.5 “Data Service” means any Internet-based service by which ReversingLabs provides Data to you.

1.6 “Delivery Date” means (i) for cloud-based Software, the date on which ReversingLabs sends or otherwise makes available to you the access code(s) and other instructions, if applicable, for utilizing the Software; and (ii) for installed Software, the date on which ReversingLabs sends or makes available to you a digital file containing the Software and any instructions for installation.

1.7 “Documentation” means any online help text and/or manuals, readme files, build notes, functional specifications, instructions, and any related materials provided with the Software. The term "Documentation" includes any updates or modifications ReversingLabs may choose to make available with respect to the Documentation.

1.8 “End User” means you and any human being whose permitted use of any Software or Data Service you sponsor.

1.9 “Intellectual Property Rights" means any rights existing under patent law, copyright law, data and database protection law, trade secret law, and any and all similar proprietary rights of ReversingLabs embodied in the Software.

1.10 “Order Form(s)” means the proposal form provided by ReversingLabs and accepted by you, evidencing your initial purchase of a license and/or subscription to the Software, Data Service and/or Data, plus any subsequent Order Forms submitted online or in written form, in each case specifying, among other things, the specific ReversingLabs Products and Services to be provided to you, the applicable fees, and the term of the agreement. Each Order Form is incorporated into, and therefore is a part of, this Agreement.

1.11 “ReversingLabs Products and Services” means the Software, Data Service, and/or Data licensed to you, as provided in the Order Form associated with this Agreement.

1.12 “Server” means a computer server owned, leased or otherwise controlled by you or a third party on which a licensed copy of a ReversingLabs’ server-based Software product is installed.

1.13 “Services” means hosting services, software maintenance services, support services (including deployment support services), and any other services ReversingLabs may provide you in connection with your use of the Software.

1.14 “Software” means the ReversingLabs software accompanying this EULA, in object code form, together with any of the following that may form a part of it or subsequently be provided by ReversingLabs for use with it: (i) the Data Service; (ii) APIs, tools, toolsets, and other software applications or components; (iii) artwork, photographs, and video or audio content; (iv) Documentation; and (v) any Updates to or Upgrades of any of the foregoing that may be covered by this EULA.

1.15 "Source Code" shall mean computer programs, instructions and related material for implementing proprietary algorithms (and other trade secret or otherwise proprietary methods and processes) written in a human-readable source language in a form capable of serving as the input to a compiler or assembler program, and in form capable of being modified, supported and enhanced by programmers reasonably familiar with the source language. By way of clarification, and not limitation, the term "Source Code" means the preferred form of the code for making modifications to it, including all modules it contains, plus any associated interface definition files, and scripts used to control compilation and installation of an executable or otherwise, create, manage, administer, or operate the hosting environment where the software service is deployed.

1.16 “Updates” means bug fixes, patches, or other additions, revisions to or modifications of Software and/or Data that ReversingLabs provides to you or any End User, including those it makes generally available to customers that subscribe to its maintenance services. An Update to Software typically is identified by a change in a number and/or letter to the right of the first decimal point in a product’s version number. Updates do not include Upgrades.

1.17 “Upgrade” means a major release of Software and/or Data, as determined by ReversingLabs in its sole discretion. An Upgrade to Software and/or Data typically is identified by a new product name or a new number to the left of the first decimal point in the version number of an existing product name.

1.18 “Web Site” means ReversingLabs’ web site located at http://www.reversinglabs.com.

2. OWNERSHIP. The ReversingLabs Products and Services are licensed, not sold. You acknowledge that the ReversingLabs Products and Services (including any changes you may request or suggest) are the property of ReversingLabs and/or its licensors.

Title to the ReversingLabs Products and Services (including each copy of any of them) and all related intellectual property rights embodied in or represented by the ReversingLabs Products and Services will remain with ReversingLabs and/or its licensors at all times. All rights and licenses not expressly granted are reserved to ReversingLabs, and there shall be no licenses or rights implied under this EULA, based on any course of conduct, or otherwise.

3. LICENSE GRANT. Subject to the terms and conditions of this EULA, ReversingLabs, under its Intellectual Property Rights, hereby grants to Licensee:

3.1 For Software and Data: a limited, non-exclusive, non-transferable, worldwide license to access, execute, display, perform, and otherwise use the Software and/or Data, in machine-readable object code, solely for the number of authorized users set forth on your Order Form (if applicable). Licensee shall be entitled to make one (1) copy of any client-side components of the Software (if applicable), solely for archival or backup purposes. To the extent the Order Form includes rights to a Reversing Labs software development kit ("SDK"), ReversingLabs hereby grants you a non-exclusive and non-transferable (except as provided in Section 12.9 (Software, Data and EULA Transfer)) right and license under its Intellectual Property Rights to use and reproduce the SDK on any tangible media in binary code for the sole purpose of integrating the Software with other software and systems via the Software's APIs solely for your internal business use. If the Software you are installing is evaluation or trial use Software, your rights are limited as described below in Section 6.

3.2 License Term. The license granted in Section 3.1 shall be either (i) perpetual or (ii) subscription based for a one year term commencing upon the date the ReversingLabs Products and Services are first made available to you, as set forth in the Order Form.

4. Restrictions. During the term of your license and/or subscription, you agree to comply with the following restrictions and limitations, and you agree not to permit others (including any End User whose use of the ReversingLabs Products and Services you sponsor) to violate them:

4.1 You shall: (i) adopt and enforce such internal policies, procedures and monitoring mechanisms as are reasonably necessary to ensure that the Software is used only in accordance with the terms of this EULA and (ii) take all steps necessary to ensure that no

person or entity will have unauthorized access to the ReversingLabs Products and Services.

4.2 You shall not: (i) copy (except as provided above), sell, rent, assign, sublicense, lease, encumber or otherwise transfer or attempt to transfer the Software, Data, or any portion thereof; (ii) permit any third party to use or have access to the ReversingLabs Products and Services, whether by timesharing, networking (except as expressly permitted hereunder) or any other means; (iii) reverse engineer, decompile, disassemble, or otherwise seek to discover the source code of the ReversingLabs Products and Services; (iv) possess or use the Software or any portion thereof, other than in machine readable object code; (v) make any copies of the Software or Data, other than as permitted by Section 3 hereof; (vi) remove any copyright, trademark, patent or other proprietary notices from the ReversingLabs Products and Services or any portion thereof; (vii) modify, translate, or create any derivative work thereof, but your computer code written to current APIs for the Software that are published by ReversingLabs or otherwise disclosed by ReversingLabs to you will not be considered modifications or derivative works for purposes of this restriction; (viii) modify, disable, circumvent, avoid, bypass, remove, deactivate, impair or otherwise interfere with features of the ReversingLabs Products and Services that enforce license restrictions or limits or report technical or statistical information regarding the ReversingLabs Products and Services or its use to ReversingLabs; or (ix) continue to use prior versions of any ReversingLabs Products and Services after installing an Upgrade of the ReversingLabs Products and Services or any Update or Upgrade that wholly replaces the ReversingLabs Products and Services. To the extent that the right to decompile, disassemble, or reverse engineer the Software is permitted by applicable law, you agree not to do so if ReversingLabs makes available to you a separate software module that allows you to achieve interoperability of an independently created computer program for use with the Software. You agree that, prior to attempting to achieve such interoperability, you will obtain written notification from ReversingLabs that it is unwilling to make such a software module available within a reasonable period of time.

4.3 The ReversingLabs Products and Services activation key(s) and/or user account(s) (if any) is intended solely for your use. You are solely responsible for maintaining the confidentiality and security of your activation key(s) and/or user account(s) (if any). You are solely responsible and liable for any and all use of your activation key(s) and/or user account(s) (if any) and for activities that occur on or through your activation key(s) and/or user account(s) (if any). You agree to notify ReversingLabs immediately about any unauthorized access to, or use of, any of your activation key(s) and/or user account(s) (if any).

4.4 Open Source Material; License Restrictions.

4.4.1 Relevant Definitions. The term "Open Source Software License" means a license under which software is publicly distributed

(or otherwise made publicly available) in source code format, including licenses such as the GNU General Public License (GPL), GNU Lesser General Public License (LGPL), Affero General Public License, Mozilla Public License (MPL), BSD licenses, Artistic License, Apache License and other, similar open source software licenses. The term "Open Source Material" means software that is subject to Open Source Software Licenses.

4.4.2 Use of Open Source Material; Restrictions. ReversingLabs may provide Open Source Material for use in connection with certain Software. You acknowledge that (i) your use of any such Open Source Material is subject to the associated Open Source Software Licenses, and (ii) you shall comply with all such Open Source Software Licenses. A list of applicable Open Source Material and the associated Open Source Software Licenses are available upon request.

5. U.S. Government End Users. The ReversingLabs Products and Services are “commercial item(s)” as defined at 48 C.F.R. 2.101, consisting of "commercial computer software," “computer database,” and "computer software documentation." Notwithstanding anything to the contrary in this EULA, the U.S. Government sometimes makes certain minimum rights of use, reproduction, and disclosure a condition of its purchase or acquisition of commercial software. Accordingly:

5.1 GSA Multiple Award and Federal Supply Schedule Acquisitions. For government purchases or acquisitions through a GSA Multiple Award or Federal Supply Schedule contract, use, reproduction, and disclosure of the Software and Data are subject only to the rights of use, reproduction, and disclosure as stated in Sections 3 and 4 of this EULA. Provided, however, that in the event of a conflict between any provision in Sections 3 and 4 of this EULA and the restrictions set forth in ¶¶ 6 and 9 of GSA’s “Terms and Conditions

Applicable to . . . [SINs] 132-32 . . ., 132-33 . . . 132-34 . . . “ and GSA’s “Terms and Conditions Applicable to . . . [SINs] 132-51 . . . and

132-52,” The foregoing GSA Terms and Conditions shall take precedence. Note, however, that any modification or combination of the ReversingLabs Products and Services under those rights will entirely void the warranty per Section 9.1 of this EULA.

5.2 FAR Acquisitions. For government agency purchases or acquisitions, other than DOD acquisitions subject to 5.3, under the authority of Federal Acquisition Regulation (“FAR”) Part 12, the rights of use, reproduction, and disclosure are only as stated in Sections 3 and 4 of this EULA.

5.3 DOD Acquisitions. For government purchases or acquisitions by the Department of Defense, a Military Department or Defense Agency, the rights of use, reproduction, and disclosure are only as stated in Sections 3 and 4 of this EULA, per DFARS 227.7202-3(a).

6. EVALUATION AND TRIAL USE. If ReversingLabs provides ReversingLabs Products and Services to you for evaluation or trial use (“Evaluation/Trial Use Products and Services”), then your rights are limited as described in this section. You may use the ReversingLabs Evaluation/Trial Use Products and Services in a manner consistent with the terms of this EULA solely for evaluation/trial purposes for a period ranging from two (2) weeks up to sixty (60) days from the Delivery Date, as specified in your Order Form, or for such other period as may be indicated in writing by ReversingLabs at or after the time of delivery. In light of the fact that Evaluation/Trial Use Products and Services are provided to you free of charge, ReversingLabs disclaims the limited warranty set forth below in Section 9.1, and neither ReversingLabs nor any Released Party will be liable for direct damages related to Evaluation/Trial Use Products and Services, as explained more fully in Section 10.2. Access to Evaluation/Trial Use Products and Services may include a "time-out" mechanism that will automatically downgrade or disable the Evaluation/Trial Use Products and Services or otherwise prevent access to the Evaluation/Trial Use Products and Services at the end of the evaluation/trial period.

7. MAINTENANCE AND SUPPORT. Technical support for the ReversingLabs Products and Services may be accessed via email or other contact information provided on the ReversingLabs website (if applicable). Unless you subscribe to an enhanced maintenance and/or support offering, you are not entitled to receive additional maintenance or support for the ReversingLabs Products and Services (though any Updates or Upgrades ReversingLabs may provide you will be covered by this EULA, unless ReversingLabs requires you to accept a new agreement at the time they are provided). If you subscribe to a ReversingLabs maintenance and/or support offering, ReversingLabs will provide you with maintenance and/or support services corresponding to the service level(s) to which you have subscribed, as set forth in a separate agreement you may enter into with ReversingLabs related to such services. Whether or not you subscribe to a maintenance and/or support offering, ReversingLabs reserves the right to provide you with Updates or supplements to the Software when we consider it necessary to do so to ensure that the Software functions properly. Any technical information you provide ReversingLabs in connection with support services it provides you may be used by ReversingLabs for its business purposes, including product and service development.

8. SAMPLE FILE ANALYSIS. You may submit sample files to ReversingLabs for analysis and inclusion in our threat intelligence database ("Sample Files"). We may, in our sole discretion, unpack and analyze Sample Files to expose internal information, including but not limited to IP addresses, names, custom application information, images, compression, encryption, and executable files (the "Analyzed Information"). We may, in our sole discretion, include the Analyzed Information in our database, which is accessible to our other customers. By submitting Sample Files to us, you grant to ReversingLabs under your intellectual property rights a perpetual, irrevocable, worldwide, transferrable, sub-licensable, royalty-free right to use, copy, modify, display, perform, distribute and otherwise exploit the Sample Files. It is your responsibility to use discretion in submitting files to ReversingLabs for analysis. If you believe a file may contain proprietary or other sensitive information that you do not want shared with our other customers, DO NOT SUBMIT SUCH FILE TO REVERSINGLABS. REVERSINGLABS FULLY DISCLAIMS ANY RESPONSIBILITY FOR THE CONTENT OF SAMPLE FILES UPLOADED TO OUR DATABASE. YOU EXPRESSLY AGREE THAT YOUR SUBMISSION OF SAMPLE FILES FOR ANALYSIS AND INCLUSION IN THE REVERSINGLABS DATABASE IS AT YOUR SOLE RISK. If you believe a Sample File has been submitted to us in error (a "Submission Error"), you may contact us and request that the particular file be removed from our database.

REMOVAL OF THE FILE IN QUESTION SHALL BE THE SOLE REMEDY FOR SUBMISSION ERRORS.

9. LIMITED WARRANTIES AND WARRANTY DISCLAIMER.

9.1 ReversingLabs warrants that, for a period of 90 days after the Delivery Date, the Software and/or Data (including any Upgrades for which ReversingLabs does not require you to accept the terms of a replacement agreement, but excluding Updates) will function substantially in accordance with relevant, published specifications (or substantially error free where there are no published specifications). As your exclusive remedy for breach of this warranty, ReversingLabs will, at its option, either replace or repair the defective Software and/or Data or refund all fees paid for it, as well as any fees paid for maintenance, support and Hosted Services associated with the defective Software and/or Data that were and/or are to be provided after the Delivery Date of the defective Software and/or Data. Notwithstanding the foregoing, ReversingLabs will not be responsible for (i) any breach of warranty not reported during

the warranty period; (ii) any malfunctioning of Software and/or Data that you, an End User, or a third party has modified, misused, or damaged; (iii) any malfunctioning of Software and/or Data caused by hardware or network configuration, (iv) any malfunctioning of Software and/or Data caused by third party software or services, or (v) any malfunctioning of Software and/or Data caused by your failure to incorporate all Updates and/or Upgrades provided to you by ReversingLabs. THIS WARRANTY DOES NOT APPLY TO REVERSINGLABS PRODUCTS AND SERVICES COVERED BY SECTION 6 OF THIS EULA.

This warranty gives you specific legal rights. You may also have other legal rights that vary from state to state and country to country.

9.2 LICENSEE SPECIFICALLY ACKNOWLEDGES THAT FILES CONTAINED IN THE REVERSINGLABS DATA SERVICE INCLUDES MALWARE (HARMFUL VIRUSES, TIME BOMBS AND OTHER DISRUPTIVE OR MALICIOUS CODE OR MECHANISMS). LICENSEE EXPRESSLY ASSUMES ALL RISK AND RESPONSIBILITY ASSOCIATED WITH THE POSSESSION, HANDLING AND USE OF MALWARE INCLUDED WITHIN THE DATA SERVICE.

9.3 EXCEPT FOR THE LIMITED WARRANTY SET FORTH IN SECTION 9.1, REVERSINGLABS, ITS LICENSORS AND LICENSORS’ DISTRIBUTORS DISCLAIM ALL WARRANTIES WITH RESPECT TO ALL REVERSINGLABS PRODUCTS AND SERVICES AND ALL THIRD PARTY PRODUCTS OR SERVICES YOU OR END USERS MAY UTILIZE IN CONNECTION WITH REVERSINGLABS PRODUCTS AND SERVICES, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN PARTICULAR, REVERSINGLABS DOES NOT REPRESENT THAT THE REVERSINGLABS PRODUCTS AND SERVICES ARE ERROR FREE, WILL OPERATE IN AN UNINTERRUPTED MANNER, ARE COMPLETELY SECURE, OR WILL INTEROPERATE WITH THIRD PARTY SOFTWARE OR SERVICES. UNLESS YOU HAVE SUBSCRIBED TO A SERVICES OFFERING THAT GUARANTEES A PARTICULAR LEVEL OF SERVICE AND/OR A FIXED TERM OF SERVICE, ALL SERVICES ARE PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS AND ARE SUBJECT TO CHANGE OR TERMINATION AT ANY TIME AND FOR ANY REASON WITHOUT NOTICE. THE REVERSINGLABS PRODUCTS AND SERVICES ARE NOT DESIGNED OR MANUFACTURED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT SYSTEMS, OR WEAPON OR COMBAT SYSTEMS, IN WHICH THEIR FAILURE COULD LEAD DIRECTLY TO PERSONAL INJURY, DEATH, OR PROPERTY OR ENVIRONMENTAL DAMAGE. REVERSINGLABS DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH USES. REVERSINGLABS EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES WITH RESPECT TO ANY AND ALL MALWARE INCLUDED WITHIN THE DATA.

9.4 U.S. Government Customers and End Users. The ReversingLabs Products and Services are “commercial items” as defined at 48 C.F.R. 2.101, consisting of "commercial computer software," “computer database,” and " computer software documentation." For government purchases or acquisitions through a GSA Supply Schedule contract, the government customer and end user accept the standard, commercial ReversingLabs warranty terms per ¶ 3.a of GSA’s “Terms and Conditions Applicable to . . . [SINs] 132-32 . . ., 132-33 . . . and 132-34 . . .” For government purchases or acquisitions under the authority of Federal Acquisition Regulation (“FAR”) Part 12, the government customer and end user accept the standard, commercial ReversingLabs warranty terms and FAR 52.212-4(p). For all government purchases or acquisitions that are not through a GSA Multiple Award or Federal Supply Schedule contract, the government customer and end user accept the standard, commercial ReversingLabs warranty per FAR 46.709.

10. EXCLUSION OF DAMAGES AND LIMITATION OF LIABILITY.

10.1 TO THE MAXIMUM EXTENT PERMITTED BY LAW (INCLUDING ANY APPLICABLE CONSUMER PROTECTION LAW OF A FOREIGN JURISDICTION), NEITHER REVERSINGLABS NOR ANY OF ITS DIRECTORS, OFFICERS, EMPLOYEES, CONTROLLED OR CONTROLLING ENTITIES, LICENSORS OR LICENSORS’ DISTRIBUTORS (EACH, A “RELEASED PARTY”), WILL HAVE ANY LIABILITY TO YOU OR ANY END USERS FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR PUNITIVE DAMAGES (INCLUDING, WITHOUT LIMITATION, ANY LOSS OF USE, LOST PROFITS, BUSINESS OR REVENUE, LOSS OF GOODWILL OR OTHER ECONOMIC ADVANTAGE, OR LOSS OF PRIVACY) ARISING OUT OF OR RELATED TO THIS EULA, OR THE REVERSINGLABS PRODUCTS AND SERVICES, EVEN IF REVERSINGLABS OR A RELEASED PARTY HAS BEEN ADVISED OF, OR KNEW OR SHOULD HAVE KNOWN OF, THE POSSIBILITY OF SUCH DAMAGES. FOR SAKE OF CLARITY, REVERSINGLABS EXPRESSLY DISCLAIMS ALL LIABILITY WITH RESPECT TO ANY AND ALL MALWARE INCLUDED WITHIN THE DATA. TO THE EXTENT THIS EXCLUSION OF LIABILITY IS UNENFORCEABLE, DESPITE THE PARTIES' EXPRESS AGREEMENT TO IT AS AN ESSENTIAL ELEMENT OF THIS AGREEMENT, REVERSINGLABS' LIABILITY WITH RESPECT TO SUCH MALWARE WILL BE LIMITED AS PROVIDED IN SECTION 10.3.

10.2 NOTWITHSTANDING PARAGRAPH 10.1 ABOVE OR ANYTHING ELSE TO THE CONTRARY SET FORTH IN THIS EULA, IF

YOUR CLAIMED DAMAGES ARISE FROM OR RELATE TO REVERSINGLABS PRODUCTS AND SERVICES COVERED BY SECTION 6 OF THIS EULA, THEN, TO THE MAXIMUM EXTENT PERMITTED BY LAW (INCLUDING ANY APPLICABLE CONSUMER PROTECTION LAW OF A FOREIGN JURISDICTION), NEITHER REVERSINGLABS NOR ANY RELEASED PARTY WILL HAVE ANY LIABILITY TO YOU OR ANY END USERS FOR DAMAGES OF ANY KIND ARISING OUT OF OR RELATED TO THIS EULA, THE REVERSINGLABS PRODUCTS AND SERVICES, INCLUDING BUT NOT LIMITED TO DIRECT DAMAGES, EVEN IF REVERSINGLABS OR A RELEASED PARTY HAS BEEN ADVISED OF, OR KNEW OR SHOULD HAVE KNOWN OF, THE POSSIBILITY OF SUCH DAMAGES.

10.3 WITHOUT LIMITING THE SCOPE OR EFFECT OF SECTIONS 10.1 OR 10.2 ABOVE, IN NO EVENT WILL REVERSINGLABS’ AND THE RELEASED PARTIES’ TOTAL LIABILITY WITH RESPECT TO ALL CLAIMS ARISING OUT OF OR RELATED TO THIS EULA, THE REVERSINGLABS PRODUCTS AND SERVICES (INCLUDING CLAIMS OF NEGLIGENCE AND STRICT LIABILITY) EXCEED THE LOWER OF (i) THE AGGREGATE DIRECT DAMAGES ACTUALLY INCURRED BY YOU AND YOUR END USERS, OR (ii) US$5OO.

10.4 SOME JURISDICTIONS LIMIT THE EXCLUSION OF DAMAGES OR LIMITATION OF LIABILITY, SO THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU. IF ANY PART OF THE EXCLUSIONS OF DAMAGES OR LIMITATIONS OF LIABILITY SET FORTH IN THIS EULA IS UNENFORCEABLE UNDER APPLICABLE LAW, REVERSINGLABS’ AND THE RELEASED PARTIES’ AGGREGATE LIABILITY WILL BE LIMITED TO THE MAXIMUM EXTENT PERMITTED BY LAW, EVEN IF ANY REMEDY FAILS ITS ESSENTIAL PURPOSE.

11. TERM AND TERMINATION. The term of this EULA shall be as set forth in Section 3.2 unless you and ReversingLabs enter into a new agreement that entirely replaces this EULA or unless ReversingLabs terminates this EULA as provided herein. Without prejudice to any other rights, ReversingLabs may terminate this EULA if you fail to comply with its terms and conditions. If ReversingLabs terminates this EULA, (i) you must immediately stop using the ReversingLabs Products and Services and destroy all copies of the Software, Data and all of its component parts (if applicable), and (ii) ReversingLabs will have no further obligation to provide any Services being provided to you or any End Users as of the termination date. Termination of this Agreement shall not affect rights of your external End Users receiving any Software or Data integrated in or otherwise combined with Licensee’s own products/services

prior to the date of termination, provided, however, that ReversingLabs shall have received payment of any fees owing from Licensee therefor. The parties’ respective rights and obligations under Sections 2 (Ownership), 4 (Restrictions), 8 (Limited Warranty and Warranty Disclaimer), 10 (Exclusion of Damages and Limitation of Liability), and Section 12 (General Provisions) will survive the termination of this EULA.

12. GENERAL PROVISIONS.

12.1 Export Restrictions. You agree to comply with all applicable laws and regulations of governmental bodies and agencies related to use of the ReversingLabs Products and Services and your performance under this EULA. In particular, you acknowledge that the Software and Data is of United States origin, is subject to United States export laws and regulations, and may not be exported or re-exported to certain countries or to persons or entities prohibited from receiving U.S. exports (including Denied Parties, Specially Designated Nationals, and entities on the Bureau of Export Administration Entity List or involved with missile technology or nuclear, chemical or biological weapons). The Software and Data also may be subject to the export, import or other laws of other countries.

You represent that you are eligible to receive favorable treatment under current United States export control laws and regulations, and that you will not use or transfer the Software and Data in violation of any U.S. or foreign laws or regulations, or permit others to do so.

12.2 Data Protection. Each party undertakes to comply with its obligations under the relevant EU data protection and privacy legislation including (where applicable) the EU Data Protection Directive (95/46) and equivalent national legislation.

12.3 Waiver. No delay or omission by either party to exercise any right or power arising upon the other party’s nonperformance or breach will impair that right or power or be construed as a waiver of it. Any waiver must be in writing and signed by the waiving party. A waiver on one occasion will not be construed as a waiver of any subsequent event of nonperformance or breach.

12.4 Severability. If any provision of this EULA is declared to be unenforceable for any reason, the remainder of this EULA will continue in full force and effect, and the unenforceable provision will be deemed modified to the extent necessary to comply with the applicable requirements of law, while retaining to the maximum extent permitted by law its intended effect, scope and economic effect.

12.5 Governing Law. The interpretation and performance of this EULA will be governed by the laws of the Commonwealth of Massachusetts, USA, applicable to contracts executed in and performed entirely within Massachusetts, but excluding any choice of law principles that would result in the application of the laws of another jurisdiction. The parties expressly agree that the United Nations Convention on Contracts for the International Sale of Goods will not apply to this EULA.

12.6 Dispute Resolution. Any litigation arising under or related to this EULA will be brought only in the United States District Court for the District of Massachusetts, or, if federal subject matter jurisdiction is lacking, then in the Massachusetts state court for the division and county in which ReversingLabs’ or its successor’s or assign’s principal office in Massachusetts is then located. You hereby submit to the personal jurisdiction of these courts and waive all objections to placing venue exclusively before them. The prevailing party in any litigation arising under or related to this EULA, in addition to any other relief granted to it, will be entitled to recover from the losing party its reasonable attorneys’ fees and costs incurred in connection with the litigation. Notwithstanding the foregoing, ReversingLabs acknowledges that the Contract Disputes Act, its implementing regulations, and its judicial interpretations may take precedence when the U.S. Government is the party accepting this EULA, if required by law; whenever commercial item protections or other exceptions permit the commercially offered disputes resolution clause to apply, however, it applies in full force.

12.7 Returns. If you are a consumer in a European Union member state, you have the rights conferred by this section. In the European Union, you are entitled to cancel your order for the Software and any associated Services within 14 working days from the date on which you downloaded the Software. You are not entitled to cancel your order for Software or Services if you accept this EULA and install the Software. To cancel your order please discontinue the installation process and notify us of your decision in writing or by email within 14 working days of download at the postal or e-mail address indicated below. ReversingLabs will refund the amount you paid for the cancelled Software and Services within 30 days. If you request a refund, you will not be entitled to use the Software or obtain Services unless you place a new order and pay all charges that then apply.

Reversing Labs International, GmbH
C/O Herbert Trachsler
Seefeldstrasse 283
8008 Zurich
Switzerland

12.8 Payment and Taxes. You agree to pay all applicable fees and other charges for Software and Services you acquire. Unless prepaid, all fees and charges are payable in U.S. dollars and are due net thirty (30) days from the date of invoice. ReversingLabs may charge a late fee of 1.5% per month or the maximum rate allowable by law, whichever is greater, on any balance remaining unpaid for more than thirty (30) days, except that interest on payments by U.S. government customers will be calculated according to the Prompt Payment Act and its implementing regulations. Prices are exclusive of all applicable taxes. You agree to pay all taxes (including but not limited to sales, use, excise, and value-added taxes), tariffs, duties, customs fees or similar charges imposed or levied on all Software and Services you acquire, with the exception of taxes on ReversingLabs' net income.

12.9 Software, Data and EULA Transfer. Except with respect to the ReversingLabs Products and Services covered by Section 6, the initial licensee of any ReversingLabs Products and Services utilized by you on your own Computer or Server may make a one-time, permanent transfer of this EULA and the ReversingLabs Products and Services directly to an individual or a single entity. The transfer must include all of the Software (including all component parts and Documentation) and this EULA, and it may not occur by way of consignment or any other indirect transfer. The transferee of the one-time transfer must agree to comply with the terms of this EULA, including the obligation not to further transfer this Software. You may not otherwise transfer the Software or assign any of your rights or obligations under this EULA.

12.10 Entire Agreement. This EULA and the Order Form(s) incorporated herein set forth the entire agreement between you and ReversingLabs with respect to the ReversingLabs Products and Services, and supersedes all prior communications, understandings and agreements, as well as the terms and conditions set forth in or on any purchase order, acknowledgement form, check, or any other document or instrument you may issue to ReversingLabs or transmit in connection with any payment for the ReversingLabs Products and Services.

Copyright ReversingLabs, Inc. 2012. All Rights Reserved. ReversingLabs, TitaniumCore, TiCore, TitaniumCloud, and TiCloud are trademarks of ReversingLabs Corp.

v. 1.17, 1/2023

\ No newline at end of file diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/EULADialog.form b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/EULADialog.form new file mode 100644 index 0000000000..ea67d1f7d7 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/EULADialog.form @@ -0,0 +1,112 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/EULADialog.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/EULADialog.java new file mode 100644 index 0000000000..0279cafb9b --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/ctcloud/EULADialog.java @@ -0,0 +1,175 @@ +/* + * 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 java.awt.BorderLayout; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import javafx.application.Platform; +import javafx.concurrent.Worker.State; +import javafx.embed.swing.JFXPanel; +import javafx.scene.Scene; +import javafx.scene.layout.VBox; +import javafx.scene.paint.Color; +import javafx.scene.web.WebView; +import javax.swing.SwingUtilities; +import org.apache.commons.io.IOUtils; +import org.sleuthkit.autopsy.coreutils.Logger; + +/** + * Dialog for displaying the Cyber Triage EULA before the license is saved. + */ +class EULADialog extends javax.swing.JDialog { + + private static final Logger LOGGER = Logger.getLogger(EULADialog.class.getName()); + private static final String EULA_RESOURCE = "EULA.htm"; + + private boolean acceptPressed = false; + + /** + * Creates new form EULADialog + */ + public EULADialog(java.awt.Frame parent, boolean modal) throws IOException { + super(parent, modal); + initComponents(); + loadEULA(); + } + + boolean isAcceptPressed() { + return acceptPressed; + } + + private void loadEULA() throws IOException { + InputStream eulaInputStream = EULADialog.class.getResourceAsStream(EULA_RESOURCE); + final String htmlString = IOUtils.toString(eulaInputStream, StandardCharsets.UTF_8); + final JFXPanel fxPanel = new JFXPanel(); + this.viewablePanel.add(fxPanel, BorderLayout.CENTER); + Platform.runLater(() -> { + WebView webView = new WebView(); + webView.setMaxSize(Short.MAX_VALUE, Short.MAX_VALUE); + webView.setPrefSize(Short.MAX_VALUE, Short.MAX_VALUE); + webView.setMinSize(100, 100); + webView.getEngine().getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> { + if (newState == State.SUCCEEDED) { + SwingUtilities.invokeLater(() -> EULADialog.this.acceptButton.setEnabled(true)); + } + }); + webView.getEngine().loadContent(htmlString, "text/html"); + VBox root = new VBox(webView); + Scene scene = new Scene(root, Color.RED); + fxPanel.setScene(scene); + }); + } + + /** + * 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 + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; + + viewablePanel = new javax.swing.JPanel(); + javax.swing.JPanel paddingPanel = new javax.swing.JPanel(); + acceptButton = new javax.swing.JButton(); + javax.swing.JButton cancelButton = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle(org.openide.util.NbBundle.getMessage(EULADialog.class, "EULADialog.title")); // NOI18N + setMaximumSize(new java.awt.Dimension(32767, 32767)); + setPreferredSize(new java.awt.Dimension(550, 550)); + setSize(new java.awt.Dimension(550, 550)); + getContentPane().setLayout(new java.awt.GridBagLayout()); + + viewablePanel.setLayout(new java.awt.BorderLayout()); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.weighty = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + getContentPane().add(viewablePanel, gridBagConstraints); + + paddingPanel.setMaximumSize(new java.awt.Dimension(32767, 0)); + + javax.swing.GroupLayout paddingPanelLayout = new javax.swing.GroupLayout(paddingPanel); + paddingPanel.setLayout(paddingPanelLayout); + paddingPanelLayout.setHorizontalGroup( + paddingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); + paddingPanelLayout.setVerticalGroup( + paddingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.weightx = 1.0; + getContentPane().add(paddingPanel, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(acceptButton, org.openide.util.NbBundle.getMessage(EULADialog.class, "EULADialog.acceptButton.text")); // NOI18N + acceptButton.setEnabled(false); + acceptButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + acceptButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 1; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5); + getContentPane().add(acceptButton, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(EULADialog.class, "EULADialog.cancelButton.text")); // NOI18N + cancelButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cancelButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 1; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + getContentPane().add(cancelButton, gridBagConstraints); + + pack(); + }// //GEN-END:initComponents + + private void acceptButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_acceptButtonActionPerformed + acceptPressed = true; + dispose(); + }//GEN-LAST:event_acceptButtonActionPerformed + + private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed + dispose(); + }//GEN-LAST:event_cancelButtonActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton acceptButton; + private javax.swing.JPanel viewablePanel; + // End of variables declaration//GEN-END:variables +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/subpanel/CTOptionsSubPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/subpanel/CTOptionsSubPanel.java new file mode 100644 index 0000000000..73f1fa20c3 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/ctoptions/subpanel/CTOptionsSubPanel.java @@ -0,0 +1,31 @@ +/* + * 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.subpanel; + +import javax.swing.JPanel; + +/** + * A panel to be put in the CyberTriage options. + */ + +public abstract class CTOptionsSubPanel extends JPanel { + public abstract void loadSettings(); + public abstract void saveSettings(); + public abstract boolean valid(); +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/images/logo.png b/Core/src/com/basistech/df/cybertriage/autopsy/images/logo.png new file mode 100644 index 0000000000..7f5ab5ba4c Binary files /dev/null and b/Core/src/com/basistech/df/cybertriage/autopsy/images/logo.png differ diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties new file mode 100644 index 0000000000..ebde860d0b --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties @@ -0,0 +1,14 @@ + +# Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license +# 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.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.instructionsTextLabel.text= +CTIncidentImportOptionsPanel.instructionsTextLabel.text=For instructions on obtaining the module refer to: 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 new file mode 100644 index 0000000000..ebde860d0b --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/Bundle.properties-MERGED @@ -0,0 +1,14 @@ + +# Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license +# 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.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.instructionsTextLabel.text= +CTIncidentImportOptionsPanel.instructionsTextLabel.text=For instructions on obtaining the module refer to: diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form new file mode 100644 index 0000000000..7382a2de2c --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.form @@ -0,0 +1,171 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java new file mode 100644 index 0000000000..bf018701ca --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTIncidentImportOptionsPanel.java @@ -0,0 +1,288 @@ +/** ************************************************************************* + ** This data and information is proprietary to, and a valuable trade secret + ** of, Sleuth Kit Labs. It is given in confidence by Sleuth Kit Labs + ** and may only be used as permitted under the license agreement under which + ** it has been distributed, and in no other way. + ** + ** Copyright (c) 2023 Sleuth Kit Labs, LLC. All rights reserved + ** + ** The technical data and information provided herein are provided with + ** `limited rights', and the computer software provided herein is provided + ** with `restricted rights' as those terms are defined in DAR and ASPR + ** 7-104.9(a). + ************************************************************************** */ +package com.basistech.df.cybertriage.autopsy.incidentoptions; + +import com.basistech.df.cybertriage.autopsy.ctoptions.subpanel.CTOptionsSubPanel; +import java.awt.Desktop; +import java.io.File; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Collections; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JFileChooser; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import org.apache.commons.lang3.StringUtils; +import org.netbeans.spi.options.OptionsPanelController; +import org.openide.util.lookup.ServiceProvider; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.guiutils.JFileChooserFactory; + +/** + * Options panel for CyberTriage options for importing a CyberTriage incident + */ +@ServiceProvider(service = CTOptionsSubPanel.class) +public class CTIncidentImportOptionsPanel extends CTOptionsSubPanel { + + private static final Logger logger = Logger.getLogger(CTIncidentImportOptionsPanel.class.getName()); + + private static final String CT_IMPORTER_DOC_LINK = "https://docs.cybertriage.com/en/latest/chapters/integrations/autopsy.html"; + + private final JFileChooserFactory fileRepoChooserFactory = new JFileChooserFactory(); + private final CTSettingsPersistence ctPersistence = CTSettingsPersistence.getInstance(); + + private static String getHtmlLink(String url) { + return "" + url + ""; + } + + /** + * Creates new form CTIncidentImportOptionsPanel + */ + public CTIncidentImportOptionsPanel() { + initComponents(); + this.fileRepoPathField.getDocument().addDocumentListener(new DocumentListener() { + @Override + public void changedUpdate(DocumentEvent e) { + fireSettingsChanged(); + } + + @Override + public void insertUpdate(DocumentEvent e) { + fireSettingsChanged(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + fireSettingsChanged(); + } + }); + + Case.addEventTypeSubscriber(Collections.singleton(Case.Events.CURRENT_CASE), (evt) -> { + CTIncidentImportOptionsPanel.this.setEnabledItems(evt.getNewValue() != null); + }); + } + + private void setCTSettingsDisplay(CTSettings ctSettings) { + this.fileRepoPathField.setText(ctSettings.getFileRepoPath()); + } + + @Override + public synchronized void saveSettings() { + ctPersistence.saveCTSettings(getSettings()); + } + + @Override + public synchronized void loadSettings() { + CTSettings ctSettings = ctPersistence.loadCTSettings(); + setCTSettingsDisplay(ctSettings); + setEnabledItems(Case.isCaseOpen()); + } + + private void setEnabledItems(boolean caseOpen) { + this.caseOpenWarningLabel.setVisible(caseOpen); + this.fileRepoBrowseButton.setEnabled(!caseOpen); + this.fileRepoPathField.setEnabled(!caseOpen); + } + + private void fireSettingsChanged() { + this.firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + + private CTSettings getSettings() { + return new CTSettings().setFileRepoPath(this.fileRepoPathField.getText()); + } + + @Override + public boolean valid() { + return new File(this.fileRepoPathField.getText()).isDirectory(); + } + + /** + * 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 + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; + + incidentTextPanel = new javax.swing.JPanel(); + incidentTextLabel = new javax.swing.JLabel(); + instructionsPanel = new javax.swing.JPanel(); + instructionsTextLabel = new javax.swing.JLabel(); + instructionsLinkLabel = new javax.swing.JLabel(); + repoPanel = new javax.swing.JPanel(); + javax.swing.JLabel fileRepoPathLabel = new javax.swing.JLabel(); + fileRepoPathField = new javax.swing.JTextField(); + fileRepoBrowseButton = new javax.swing.JButton(); + caseOpenWarningLabel = new javax.swing.JLabel(); + + setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.border.title_1"))); // NOI18N + setLayout(new java.awt.GridBagLayout()); + + incidentTextPanel.setLayout(new java.awt.GridBagLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(incidentTextLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.incidentTextLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + incidentTextPanel.add(incidentTextLabel, gridBagConstraints); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + add(incidentTextPanel, gridBagConstraints); + + instructionsPanel.setLayout(new java.awt.GridBagLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(instructionsTextLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.instructionsTextLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0); + instructionsPanel.add(instructionsTextLabel, gridBagConstraints); + instructionsTextLabel.getAccessibleContext().setAccessibleName("For instructions on obtaining the module refer to:"); + + org.openide.awt.Mnemonics.setLocalizedText(instructionsLinkLabel, getHtmlLink(CT_IMPORTER_DOC_LINK)); + instructionsLinkLabel.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + instructionsLinkLabel.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + instructionsLinkLabelMouseClicked(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + instructionsPanel.add(instructionsLinkLabel, gridBagConstraints); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + add(instructionsPanel, gridBagConstraints); + + repoPanel.setLayout(new java.awt.GridBagLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(fileRepoPathLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.fileRepoPathLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + repoPanel.add(fileRepoPathLabel, gridBagConstraints); + + fileRepoPathField.setText(org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.fileRepoPathField.text")); // NOI18N + fileRepoPathField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + fileRepoPathFieldActionPerformed(evt); + } + }); + 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; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + repoPanel.add(fileRepoPathField, gridBagConstraints); + fileRepoPathField.getAccessibleContext().setAccessibleName(""); + + org.openide.awt.Mnemonics.setLocalizedText(fileRepoBrowseButton, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.fileRepoBrowseButton.text")); // NOI18N + fileRepoBrowseButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + fileRepoBrowseButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 1; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); + repoPanel.add(fileRepoBrowseButton, gridBagConstraints); + + caseOpenWarningLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/modules/hashdatabase/warning16.png"))); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(caseOpenWarningLabel, org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.caseOpenWarningLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 2; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; + 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.anchor = java.awt.GridBagConstraints.NORTHWEST; + add(repoPanel, gridBagConstraints); + }// //GEN-END:initComponents + private void fileRepoBrowseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileRepoBrowseButtonActionPerformed + JFileChooser fileChooser = fileRepoChooserFactory.getChooser(); + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + fileChooser.setMultiSelectionEnabled(false); + + File curSelectedDir = StringUtils.isBlank(this.fileRepoPathField.getText()) ? null : new File(this.fileRepoPathField.getText()); + if (curSelectedDir == null || !curSelectedDir.isDirectory()) { + curSelectedDir = new File(CTSettings.getDefaultFileRepoPath()); + } + + fileChooser.setCurrentDirectory(curSelectedDir); + fileChooser.setDialogTitle(org.openide.util.NbBundle.getMessage(CTIncidentImportOptionsPanel.class, "CTIncidentImportOptionsPanel.fileRepoFileChooser.title")); + int retVal = fileChooser.showOpenDialog(this); + if (retVal == JFileChooser.APPROVE_OPTION) { + this.fileRepoPathField.setText(fileChooser.getSelectedFile().getAbsolutePath()); + } + }//GEN-LAST:event_fileRepoBrowseButtonActionPerformed + + private void fileRepoPathFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileRepoPathFieldActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_fileRepoPathFieldActionPerformed + + private void instructionsLinkLabelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_instructionsLinkLabelMouseClicked + gotoLink(CT_IMPORTER_DOC_LINK); + }//GEN-LAST:event_instructionsLinkLabelMouseClicked + + private void gotoLink(String url) { + if (Desktop.isDesktopSupported()) { + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException | URISyntaxException e) { + logger.log(Level.SEVERE, "Error opening link to: " + url, e); + } + } else { + logger.log(Level.WARNING, "Desktop API is not supported. Link cannot be opened."); + } + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel caseOpenWarningLabel; + private javax.swing.JButton fileRepoBrowseButton; + private javax.swing.JTextField fileRepoPathField; + private javax.swing.JLabel incidentTextLabel; + private javax.swing.JPanel incidentTextPanel; + private javax.swing.JLabel instructionsLinkLabel; + private javax.swing.JPanel instructionsPanel; + private javax.swing.JLabel instructionsTextLabel; + private javax.swing.JPanel repoPanel; + // End of variables declaration//GEN-END:variables +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTSettings.java b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTSettings.java new file mode 100644 index 0000000000..35e2d108ea --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTSettings.java @@ -0,0 +1,72 @@ +/** ************************************************************************* + ** This data and information is proprietary to, and a valuable trade secret + ** of, Sleuth Kit Labs. It is given in confidence by Sleuth Kit Labs + ** and may only be used as permitted under the license agreement under which + ** it has been distributed, and in no other way. + ** + ** Copyright (c) 2023 Sleuth Kit Labs, LLC. All rights reserved + ** + ** The technical data and information provided herein are provided with + ** `limited rights', and the computer software provided herein is provided + ** with `restricted rights' as those terms are defined in DAR and ASPR + ** 7-104.9(a). + ************************************************************************** */ +package com.basistech.df.cybertriage.autopsy.incidentoptions; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Objects; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.openide.modules.Places; + +/** + * CT settings that don't include license information. This code must be kept in-sync with code in + * CT Autopsy Importer NBM. + */ +public class CTSettings { + + private static final String DEFAULT_FILE_REPO_PATH = getAppDataLocalDirectory(); + + // taken from com.basistech.df.cybertriage.utils.SystemProperties + private static String getAppDataLocalDirectory() { + + Logger LOGGER = java.util.logging.Logger.getLogger(CTSettings.class.getCanonicalName()); + if (Objects.nonNull(Places.getUserDirectory()) && Places.getUserDirectory().getAbsolutePath().endsWith("testuserdir")) { // APP is in testing .. this should return the test path + LOGGER.log(Level.INFO, "Application Data (test mode) Path: " + Places.getUserDirectory().getAbsolutePath()); + return Places.getUserDirectory().getAbsolutePath(); + } else { + Path localAppPath = Paths.get(System.getenv("LOCALAPPDATA"), "cybertriage"); + try { + Files.createDirectories(localAppPath); + LOGGER.log(Level.INFO, "Application Data Path: " + localAppPath.toString()); + return localAppPath.toString(); + } catch (IOException ex) { + LOGGER.log(Level.SEVERE, "IO Error, defaulting to user dir", ex); + return Places.getUserDirectory().getAbsolutePath(); // In case of an IO Error + } + } + } + + public static String getDefaultFileRepoPath() { + return DEFAULT_FILE_REPO_PATH; + } + + static CTSettings getDefaultSettings() { + return new CTSettings() + .setFileRepoPath(DEFAULT_FILE_REPO_PATH); + } + + private String fileRepoPath = DEFAULT_FILE_REPO_PATH; + + public String getFileRepoPath() { + return fileRepoPath; + } + + public CTSettings setFileRepoPath(String fileRepoPath) { + this.fileRepoPath = fileRepoPath; + return this; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTSettingsPersistence.java b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTSettingsPersistence.java new file mode 100644 index 0000000000..be60813edd --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/incidentoptions/CTSettingsPersistence.java @@ -0,0 +1,80 @@ +/** ************************************************************************* + ** This data and information is proprietary to, and a valuable trade secret + ** of, Sleuth Kit Labs. It is given in confidence by Sleuth Kit Labs + ** and may only be used as permitted under the license agreement under which + ** it has been distributed, and in no other way. + ** + ** Copyright (c) 2023 Sleuth Kit Labs, LLC. All rights reserved + ** + ** The technical data and information provided herein are provided with + ** `limited rights', and the computer software provided herein is provided + ** with `restricted rights' as those terms are defined in DAR and ASPR + ** 7-104.9(a). + ************************************************************************** */ +package com.basistech.df.cybertriage.autopsy.incidentoptions; + +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.File; +import java.io.IOException; +import java.nio.file.Paths; +import java.util.logging.Level; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.PlatformUtil; + +/** + * Handles persisting CT Settings. This code must be kept in-sync with code in + * CT Autopsy Importer NBM. + */ +public class CTSettingsPersistence { + + private static final String CT_SETTINGS_DIR = "CyberTriage"; + private static final String CT_SETTINGS_FILENAME = "CyberTriageSettings.json"; + + private static final Logger logger = Logger.getLogger(CTSettingsPersistence.class.getName()); + + private static final CTSettingsPersistence instance = new CTSettingsPersistence(); + + private final ObjectMapper objectMapper = new ObjectMapper(); + + public static CTSettingsPersistence getInstance() { + return instance; + } + + public synchronized boolean saveCTSettings(CTSettings ctSettings) { + if (ctSettings != null) { + + File settingsFile = getCTSettingsFile(); + settingsFile.getParentFile().mkdirs(); + try { + objectMapper.writeValue(settingsFile, ctSettings); + return true; + } catch (IOException ex) { + logger.log(Level.WARNING, "There was an error writing CyberTriage settings to file: " + settingsFile.getAbsolutePath(), ex); + } + } + + return false; + } + + public synchronized CTSettings loadCTSettings() { + + CTSettings settings = null; + File settingsFile = getCTSettingsFile(); + if (settingsFile.isFile()) { + try { + settings = objectMapper.readValue(settingsFile, CTSettings.class); + } catch (IOException ex) { + logger.log(Level.WARNING, "There was an error reading CyberTriage settings to file: " + settingsFile.getAbsolutePath(), ex); + } + } + + return settings == null + ? CTSettings.getDefaultSettings() + : settings; + + } + + private File getCTSettingsFile() { + return Paths.get(PlatformUtil.getModuleConfigDirectory(), CT_SETTINGS_DIR, CT_SETTINGS_FILENAME).toFile(); + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/BatchProcessor.java b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/BatchProcessor.java new file mode 100644 index 0000000000..a65d319dc2 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/BatchProcessor.java @@ -0,0 +1,84 @@ +/* + * 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.malwarescan; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; + +/** + * Processes a batch when number of items reaches batchSize or flush. Processing + * blocks (and subsequently add and flush operations) until previous batch + * finishes. + */ +class BatchProcessor { + + private ExecutorService processingExecutorService = Executors.newSingleThreadExecutor(); + + private final BlockingQueue batchingQueue; + private final int batchSize; + private final Consumer> itemsConsumer; + private final long secondsTimeout; + + public BatchProcessor(int batchSize, long secondsTimeout, Consumer> itemsConsumer) { + this.batchingQueue = new LinkedBlockingQueue<>(batchSize); + this.batchSize = batchSize; + this.itemsConsumer = itemsConsumer; + this.secondsTimeout = secondsTimeout; + } + + public synchronized void add(T item) throws InterruptedException { + batchingQueue.add(item); + if (batchingQueue.size() >= batchSize) { + asyncProcessBatch(); + } + } + + public synchronized void flushAndReset() throws InterruptedException { + // get any remaining + asyncProcessBatch(); + + // don't accept any new additions + processingExecutorService.shutdown(); + + // await termination + processingExecutorService.awaitTermination(secondsTimeout, TimeUnit.SECONDS); + + // get new (not shut down executor) + processingExecutorService = Executors.newSingleThreadExecutor(); + } + + private synchronized void asyncProcessBatch() throws InterruptedException { + if (!batchingQueue.isEmpty()) { + final List processingList = new ArrayList<>(); + + // transfer batching queue to processing queue + batchingQueue.drainTo(processingList); + + // submit to be processed + processingExecutorService.submit(() -> itemsConsumer.accept(processingList)); + } + } + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/Bundle.properties b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/Bundle.properties new file mode 100644 index 0000000000..fbf6db930c --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/Bundle.properties @@ -0,0 +1,7 @@ +MalwareScanIngestSettingsPanel.uploadFilesCheckbox.AccessibleContext.accessibleName=Upload file content for files that do not have results +MalwareScanIngestSettingsPanel.uploadFilesCheckbox.label=Upload file content for files that do not have results +MalwareScanIngestSettingsPanel.uploadFilesCheckbox.text=Upload file content for files that do not have results +DataSourceIntegrityIngestSettingsPanel.queryFilesTextArea.text=Query for existing results using file\u2019s hash +MalwareScanIngestSettingsPanel.ingestSettingsLabel.text=Ingest Settings +MalwareScanIngestSettingsPanel.paidLicenseTextArea.text=This module requires a paid license. \nSee the Global Options panel for details +MalwareScanIngestSettingsPanel.queryFilesCheckbox.text=Query for existing results using file\u2019s hash 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 new file mode 100644 index 0000000000..decbae37cf --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/Bundle.properties-MERGED @@ -0,0 +1,50 @@ +MalwareScanIngestModule_longPollForNotFound_fileLookupPolling_desc=Waiting for all uploaded files to complete scanning. +MalwareScanIngestModule_longPollForNotFound_fileLookupPolling_title=Waiting for File Upload Results +MalwareScanIngestModule_longPollForNotFound_timeout_desc=There was a timeout while waiting for file uploads to be processed. Please try again later. +MalwareScanIngestModule_longPollForNotFound_timeout_title=File Upload Results Timeout +MalwareScanIngestModule_malwareTypeDisplayName=Malware +# {0} - errorResponse +MalwareScanIngestModule_SharedProcessing_authTokenResponseError_desc=Received error: ''{0}'' when fetching the API authentication token for the license +MalwareScanIngestModule_SharedProcessing_authTokenResponseError_title=Authentication API error +MalwareScanIngestModule_SharedProcessing_createAnalysisResult_No=NO +MalwareScanIngestModule_SharedProcessing_createAnalysisResult_Yes=YES +MalwareScanIngestModule_SharedProcessing_exhaustedHashLookups_desc=The remaining hash lookups for this license have been exhausted +MalwareScanIngestModule_SharedProcessing_exhaustedHashLookups_title=Hash Lookups Exhausted +MalwareScanIngestModule_SharedProcessing_exhaustedResultsHashLookups_desc=Not all files were processed because hash lookup limits were exceeded. Please try again when your limits reset. +MalwareScanIngestModule_SharedProcessing_exhaustedResultsHashLookups_title=Lookup Limits Exceeded +MalwareScanIngestModule_SharedProcessing_flushTimeout_desc=A timeout occurred while finishing processing +MalwareScanIngestModule_SharedProcessing_flushTimeout_title=Processing Timeout +MalwareScanIngestModule_SharedProcessing_generalProcessingError_desc=An error occurred while processing hash lookup results +MalwareScanIngestModule_SharedProcessing_generalProcessingError_title=Hash Lookup Error +# {0} - errorResponse +MalwareScanIngestModule_SharedProcessing_repServicenResponseError_desc=Received error: ''{0}'' when fetching hash lookup results +MalwareScanIngestModule_SharedProcessing_repServicenResponseError_title=Lookup API error +MalwareScanIngestModule_ShareProcessing_batchTimeout_desc=Batch processing timed out +MalwareScanIngestModule_ShareProcessing_batchTimeout_title=Batch Processing Timeout +# {0} - remainingLookups +MalwareScanIngestModule_ShareProcessing_lowLookupsLimitWarning_desc=This license only has {0} lookups remaining. +MalwareScanIngestModule_ShareProcessing_lowLookupsLimitWarning_title=Hash Lookups Low +# {0} - remainingUploads +MalwareScanIngestModule_ShareProcessing_lowUploadsLimitWarning_desc=This license only has {0} file uploads remaining. +MalwareScanIngestModule_ShareProcessing_lowUploadsLimitWarning_title=File Uploads Limit Low +MalwareScanIngestModule_ShareProcessing_noLicense_desc=No Cyber Triage license could be loaded. Cyber Triage processing will be disabled. +MalwareScanIngestModule_ShareProcessing_noLicense_title=No Cyber Triage License +MalwareScanIngestModule_ShareProcessing_noLookupsRemaining_desc=There are no more remaining hash lookups for this license at this time. Malware scanning will be disabled. +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_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 +MalwareScanIngestModule_uploadFile_notUploadable_desc=A file did not meet requirements for upload (object id: {0}). +MalwareScanIngestModule_uploadFile_notUploadable_title=Not Able to Upload +MalwareScanIngestModuleFactory_description=Identifies executable files with malware. +MalwareScanIngestModuleFactory_displayName=Cyber Triage Malware Scanner +MalwareScanIngestModuleFactory_version=1.0.0 +MalwareScanIngestSettingsPanel.uploadFilesCheckbox.AccessibleContext.accessibleName=Upload file content for files that do not have results +MalwareScanIngestSettingsPanel.uploadFilesCheckbox.label=Upload file content for files that do not have results +MalwareScanIngestSettingsPanel.uploadFilesCheckbox.text=Upload file content for files that do not have results +DataSourceIntegrityIngestSettingsPanel.queryFilesTextArea.text=Query for existing results using file\u2019s hash +MalwareScanIngestSettingsPanel.ingestSettingsLabel.text=Ingest Settings +MalwareScanIngestSettingsPanel.paidLicenseTextArea.text=This module requires a paid license. \nSee the Global Options panel for details +MalwareScanIngestSettingsPanel.queryFilesCheckbox.text=Query for existing results using file\u2019s hash diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java new file mode 100644 index 0000000000..ba8bd556b1 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java @@ -0,0 +1,1053 @@ +/* + * 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.malwarescan; + +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.AuthenticatedRequestData; +import com.basistech.df.cybertriage.autopsy.ctapi.json.CTCloudBean; +import com.basistech.df.cybertriage.autopsy.ctapi.json.FileUploadRequest; +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseInfo; +import com.basistech.df.cybertriage.autopsy.ctapi.json.MalwareResultBean.Status; +import com.basistech.df.cybertriage.autopsy.ctapi.json.MetadataUploadRequest; +import com.basistech.df.cybertriage.autopsy.ctoptions.ctcloud.CTLicensePersistence; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HexFormat; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.logging.Level; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.curator.shaded.com.google.common.collect.Lists; +import org.openide.util.NbBundle.Messages; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; +import org.sleuthkit.autopsy.ingest.FileIngestModule; +import org.sleuthkit.autopsy.ingest.IngestJobContext; +import org.sleuthkit.autopsy.ingest.IngestModule; +import org.sleuthkit.autopsy.modules.filetypeid.FileTypeDetector; +import org.sleuthkit.datamodel.AbstractFile; +import org.sleuthkit.datamodel.AnalysisResult; +import org.sleuthkit.datamodel.Blackboard; +import org.sleuthkit.datamodel.BlackboardArtifact; +import org.sleuthkit.datamodel.ReadContentInputStream; +import org.sleuthkit.datamodel.HashUtility; +import org.sleuthkit.datamodel.HashUtility.HashResult; +import org.sleuthkit.datamodel.HashUtility.HashType; +import org.sleuthkit.datamodel.Score; +import org.sleuthkit.datamodel.SleuthkitCase; +import org.sleuthkit.datamodel.TskCoreException; +import org.sleuthkit.datamodel.TskData; + +/** + * Uses CT cloud API to determine if file is malware + */ +class MalwareScanIngestModule implements FileIngestModule { + + private static final SharedProcessing sharedProcessing = new SharedProcessing(); + private boolean uploadFiles; + private boolean queryFiles; + + MalwareScanIngestModule(MalwareScanIngestSettings settings) { + uploadFiles = settings.shouldUploadFiles(); + queryFiles = settings.shouldQueryFiles(); + } + + @Override + public void startUp(IngestJobContext context) throws IngestModuleException { + sharedProcessing.startUp(context, uploadFiles); + } + + @Override + public ProcessResult process(AbstractFile af) { + return sharedProcessing.process(af); + } + + @Override + public void shutDown() { + sharedProcessing.shutDown(); + } + + /** + * Does the bulk of processing for the ingest module and handles concurrent + * ingest modules adding files simultaneously. + */ + private static class SharedProcessing { + + // batch size of 200 files max + private static final int BATCH_SIZE = 200; + // 1 day timeout for all API requests + private static final long FLUSH_SECS_TIMEOUT = 24 * 60 * 60; + + //minimum lookups left before issuing warning + private static final long LOW_LOOKUPS_REMAINING = 250; + + //minimum file uploads left before issuing warning + private static final long LOW_UPLOADS_REMAINING = 25; + + // min and max upload size in bytes + private static final long MIN_UPLOAD_SIZE = 1; + private static final long MAX_UPLOAD_SIZE = 100_000_000; // 100MB + + private static final int NUM_FILE_UPLOAD_RETRIES = 7; + private static final long FILE_UPLOAD_RETRY_SLEEP_MILLIS = 60 * 1000; + + private static final Set EXECUTABLE_MIME_TYPES = Stream.of( + "application/x-bat",//NON-NLS + "application/x-dosexec",//NON-NLS + "application/vnd.microsoft.portable-executable",//NON-NLS + "application/x-msdownload",//NON-NLS + "application/exe",//NON-NLS + "application/x-exe",//NON-NLS + "application/dos-exe",//NON-NLS + "vms/exe",//NON-NLS + "application/x-winexe",//NON-NLS + "application/msdos-windows",//NON-NLS + "application/x-msdos-program"//NON-NLS + ).collect(Collectors.toSet()); + + private static final String MALWARE_TYPE_NAME = "TSK_MALWARE"; + private static final String MALWARE_CONFIG = "Cyber Triage Cloud"; + + private static final Logger logger = Logger.getLogger(MalwareScanIngestModule.class.getName()); + + private final BatchProcessor batchProcessor = new BatchProcessor( + BATCH_SIZE, + FLUSH_SECS_TIMEOUT, + (lst) -> SharedProcessing.this.handleBatch(SharedProcessing.this.ingestJobState, lst)); + + private final CTLicensePersistence ctSettingsPersistence = CTLicensePersistence.getInstance(); + private final CTApiDAO ctApiDAO = CTApiDAO.getInstance(); + + private IngestJobState ingestJobState = null; + + @Messages({ + "MalwareScanIngestModule_malwareTypeDisplayName=Malware", + "MalwareScanIngestModule_ShareProcessing_noLicense_title=No Cyber Triage License", + "MalwareScanIngestModule_ShareProcessing_noLicense_desc=No Cyber Triage license could be loaded. Cyber Triage processing will be disabled.", + "MalwareScanIngestModule_ShareProcessing_noLookupsRemaining_title=No remaining lookups", + "MalwareScanIngestModule_ShareProcessing_noLookupsRemaining_desc=There are no more remaining hash lookups for this license at this time. Malware scanning will be disabled.", + "MalwareScanIngestModule_ShareProcessing_lowLookupsLimitWarning_title=Hash Lookups Low", + "# {0} - remainingLookups", + "MalwareScanIngestModule_ShareProcessing_lowLookupsLimitWarning_desc=This license only has {0} lookups remaining.", + "MalwareScanIngestModule_ShareProcessing_noUploadsRemaining_title=No remaining file uploads", + "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.",}) + synchronized void startUp(IngestJobContext context, boolean uploadFiles) throws IngestModuleException { + // only run this code once per startup + if (ingestJobState != null) { + return; + } + + try { + ingestJobState = getNewJobState(context, uploadFiles); + } catch (Exception ex) { + ingestJobState = IngestJobState.DISABLED; + throw new IngestModuleException("An exception occurred on MalwareScanIngestModule startup", ex); + } + } + + /** + * Sets up the state necessary for a new ingest job. + * + * @param context The ingest job context. + * @return A pair of the runtime state (i.e. started up, disabled) and + * parameters required for the job. + * @throws Exception + */ + private IngestJobState getNewJobState(IngestJobContext context, boolean uploadFiles) throws Exception { + // 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; + } + + AuthTokenResponse authTokenResponse = ctApiDAO.getAuthToken(licenseInfoOpt.get().getDecryptedLicense()); + // syncronously fetch malware scans info + + // determine lookups remaining + long lookupsRemaining = remaining(authTokenResponse.getHashLookupLimit(), authTokenResponse.getHashLookupCount()); + if (lookupsRemaining <= 0) { + notifyWarning( + Bundle.MalwareScanIngestModule_ShareProcessing_noLookupsRemaining_title(), + Bundle.MalwareScanIngestModule_ShareProcessing_noLookupsRemaining_desc(), + null); + + return IngestJobState.DISABLED; + } else if (lookupsRemaining < LOW_LOOKUPS_REMAINING) { + notifyWarning( + Bundle.MalwareScanIngestModule_ShareProcessing_lowLookupsLimitWarning_title(), + Bundle.MalwareScanIngestModule_ShareProcessing_lowLookupsLimitWarning_desc(lookupsRemaining), + null); + } + + // determine lookups remaining + if (uploadFiles) { + long uploadsRemaining = remaining(authTokenResponse.getFileUploadLimit(), authTokenResponse.getFileUploadCount()); + if (uploadsRemaining <= 0) { + notifyWarning( + Bundle.MalwareScanIngestModule_ShareProcessing_noUploadsRemaining_title(), + Bundle.MalwareScanIngestModule_ShareProcessing_noUploadsRemaining_desc(), + null); + uploadFiles = false; + } else if (lookupsRemaining < LOW_UPLOADS_REMAINING) { + notifyWarning( + Bundle.MalwareScanIngestModule_ShareProcessing_lowUploadsLimitWarning_title(), + Bundle.MalwareScanIngestModule_ShareProcessing_lowUploadsLimitWarning_desc(lookupsRemaining), + null); + } + } + + // setup necessary variables for processing + SleuthkitCase tskCase = Case.getCurrentCaseThrows().getSleuthkitCase(); + BlackboardArtifact.Type malwareType = tskCase.getBlackboard().getOrAddArtifactType( + MALWARE_TYPE_NAME, + Bundle.MalwareScanIngestModule_malwareTypeDisplayName(), + BlackboardArtifact.Category.ANALYSIS_RESULT); + + return new IngestJobState( + context, + tskCase, + new PathNormalizer(tskCase), + new FileTypeDetector(), + licenseInfoOpt.get(), + malwareType, + uploadFiles, + true + ); + } + + /** + * Determines remaining given a possibly null limit and used count. + * + * @param limit The limit (can be null). + * @param used The number used (can be null). + * @return The remaining amount. + */ + private static long remaining(Long limit, Long used) { + limit = limit == null ? 0 : limit; + used = used == null ? 0 : used; + return limit - used; + } + + /** + * Gets the md5 hash from the abstract file or calculates it. + * + * @param af The abstract file. + * @return The md5 hash (or null if could not be determined). + */ + private static String getOrCalcHash(AbstractFile af, HashType hashType) { + switch (hashType) { + case MD5: + if (StringUtils.isNotBlank(af.getMd5Hash())) { + return af.getMd5Hash(); + } + break; + case SHA256: + if (StringUtils.isNotBlank(af.getSha256Hash())) { + return af.getSha256Hash(); + } + } + + try { + List hashResults = HashUtility.calculateHashes(af, Collections.singletonList(hashType)); + if (CollectionUtils.isNotEmpty(hashResults)) { + for (HashResult hashResult : hashResults) { + if (hashResult.getType() == hashType) { + return hashResult.getValue(); + } + } + } + } catch (TskCoreException ex) { + logger.log(Level.WARNING, + MessageFormat.format("An error occurred while processing hash for file name: {0} and obj id: {1} and hash type {2}.", + af.getName(), + af.getId(), + hashType.name()), + ex); + } + + return null; + } + + /** + * Gets or calculates the md5 for a file. + * + * @param af The file. + * @return The hash. + */ + private static String getOrCalcMd5(AbstractFile af) { + return getOrCalcHash(af, HashType.MD5); + } + + /** + * Gets or calculates the sha256 for a file. + * + * @param af The file. + * @return The hash. + */ + private static String getOrCalcSha256(AbstractFile af) { + return getOrCalcHash(af, HashType.SHA256); + } + + /** + * Gets or calculates the sha1 for a file. + * + * @param af The file. + * @return The hash. + */ + private static String getOrCalcSha1(AbstractFile af) throws NoSuchAlgorithmException, ReadContentInputStream.ReadContentInputStreamException { + if (StringUtils.isNotBlank(af.getSha1Hash())) { + return af.getSha1Hash(); + } + // taken from https://stackoverflow.com/questions/6293713/java-how-to-create-sha-1-for-a-file + MessageDigest digest = MessageDigest.getInstance("SHA-1"); + ReadContentInputStream afStream = new ReadContentInputStream(af); + int n = 0; + byte[] buffer = new byte[8192]; + while (n != -1) { + n = afStream.read(buffer); + if (n > 0) { + digest.update(buffer, 0, n); + } + } + byte[] hashBytes = digest.digest(); + String hashString = HexFormat.of().formatHex(hashBytes); + return hashString; + } + + /** + * Processes a file. The file goes through the lookup process if the + * file meets acceptable criteria: 1) not FileKnown.KNOWN 2) is + * executable 3) does not have any pre-existing TSK_MALWARE results 4) + * file lookup has not been disabled. + * + * @param af The file. + * @return OK or ERROR. + */ + @Messages({ + "MalwareScanIngestModule_ShareProcessing_batchTimeout_title=Batch Processing Timeout", + "MalwareScanIngestModule_ShareProcessing_batchTimeout_desc=Batch processing timed out" + }) + IngestModule.ProcessResult process(AbstractFile af) { + try { + if (ingestJobState != null + && ingestJobState.isDoFileLookups() + && !ingestJobState.getIngestJobContext().fileIngestIsCancelled() + && af.getKnown() != TskData.FileKnown.KNOWN + && EXECUTABLE_MIME_TYPES.contains(StringUtils.defaultString(ingestJobState.getFileTypeDetector().getMIMEType(af)).trim().toLowerCase()) + && CollectionUtils.isEmpty(af.getAnalysisResults(ingestJobState.getMalwareType()))) { + + String md5 = getOrCalcMd5(af); + if (StringUtils.isNotBlank(md5)) { + batchProcessor.add(new FileRecord(af.getId(), md5)); + } + } + return ProcessResult.OK; + } catch (TskCoreException ex) { + notifyWarning( + Bundle.MalwareScanIngestModule_SharedProcessing_generalProcessingError_title(), + Bundle.MalwareScanIngestModule_SharedProcessing_generalProcessingError_desc(), + ex); + return IngestModule.ProcessResult.ERROR; + } catch (InterruptedException ex) { + notifyWarning( + Bundle.MalwareScanIngestModule_ShareProcessing_batchTimeout_title(), + Bundle.MalwareScanIngestModule_ShareProcessing_batchTimeout_desc(), + ex); + return IngestModule.ProcessResult.ERROR; + } + } + + /** + * Handles a batch of files to be sent to CT file lookup for results. + * + * @param ingestJobState The current state of operation for the ingest + * job. + * @param fileRecords The file records to be uploaded. + */ + @Messages({ + "MalwareScanIngestModule_SharedProcessing_authTokenResponseError_title=Authentication API error", + "# {0} - errorResponse", + "MalwareScanIngestModule_SharedProcessing_authTokenResponseError_desc=Received error: ''{0}'' when fetching the API authentication token for the license", + "MalwareScanIngestModule_SharedProcessing_repServicenResponseError_title=Lookup API error", + "# {0} - errorResponse", + "MalwareScanIngestModule_SharedProcessing_repServicenResponseError_desc=Received error: ''{0}'' when fetching hash lookup results", + "MalwareScanIngestModule_SharedProcessing_exhaustedHashLookups_title=Hash Lookups Exhausted", + "MalwareScanIngestModule_SharedProcessing_exhaustedHashLookups_desc=The remaining hash lookups for this license have been exhausted", + "MalwareScanIngestModule_SharedProcessing_generalProcessingError_title=Hash Lookup Error", + "MalwareScanIngestModule_SharedProcessing_generalProcessingError_desc=An error occurred while processing hash lookup results",}) + private void handleBatch(IngestJobState ingestJobState, List fileRecords) { + if (ingestJobState == null + || !ingestJobState.isDoFileLookups() + || ingestJobState.getIngestJobContext().fileIngestIsCancelled() + || fileRecords == null + || fileRecords.isEmpty()) { + return; + } + + // create mapping of md5 to corresponding object ids as well as just the list of md5's + Map> md5ToObjId = new HashMap<>(); + + for (FileRecord fr : fileRecords) { + if (fr == null || StringUtils.isBlank(fr.getMd5hash()) || fr.getObjId() <= 0) { + continue; + } + + String sanitizedMd5 = normalizedMd5(fr.getMd5hash()); + md5ToObjId + .computeIfAbsent(sanitizedMd5, (k) -> new ArrayList<>()) + .add(fr.getObjId()); + } + + List md5Hashes = new ArrayList<>(md5ToObjId.keySet()); + + if (md5Hashes.isEmpty()) { + return; + } + + try { + List repResult = getHashLookupResults(ingestJobState, md5Hashes); + handleLookupResults(ingestJobState, md5ToObjId, repResult); + } catch (Exception ex) { + notifyWarning( + Bundle.MalwareScanIngestModule_SharedProcessing_generalProcessingError_title(), + Bundle.MalwareScanIngestModule_SharedProcessing_generalProcessingError_desc(), + ex); + } + } + + /** + * Handles results received from CT Cloud. + * + * @param ingestJobState The current state of operations of the ingest + * module. + * @param md5ToObjId The mapping of md5 to a list of object ids. + * @param repResult The ct cloud results. + * @throws org.sleuthkit.datamodel.Blackboard.BlackboardException + * @throws TskCoreException + */ + @Messages({ + "MalwareScanIngestModule_SharedProcessing_exhaustedResultsHashLookups_title=Lookup Limits Exceeded", + "MalwareScanIngestModule_SharedProcessing_exhaustedResultsHashLookups_desc=Not all files were processed because hash lookup limits were exceeded. Please try again when your limits reset.",}) + private void handleLookupResults(IngestJobState ingestJobState, Map> md5ToObjId, List repResult) throws Blackboard.BlackboardException, TskCoreException, TskCoreException, CTCloudException, NoSuchAlgorithmException, ReadContentInputStream.ReadContentInputStreamException { + if (CollectionUtils.isEmpty(repResult)) { + return; + } + + Map> statusGroupings = repResult.stream() + .filter(bean -> bean.getMalwareResult() != null) + .collect(Collectors.groupingBy(bean -> bean.getMalwareResult().getStatus())); + + // for all found items, create analysis results + List found = statusGroupings.get(Status.FOUND); + createAnalysisResults(ingestJobState, found, md5ToObjId); + + // if being scanned, check list to run later + handleNonFoundResults(ingestJobState, md5ToObjId, statusGroupings.get(Status.BEING_SCANNED), false); + + // if not found, try upload + handleNonFoundResults(ingestJobState, md5ToObjId, statusGroupings.get(Status.NOT_FOUND), true); + + // indicate a general error if some result in an error + if (CollectionUtils.isNotEmpty(statusGroupings.get(Status.ERROR))) { + notifyWarning( + Bundle.MalwareScanIngestModule_SharedProcessing_generalProcessingError_title(), + Bundle.MalwareScanIngestModule_SharedProcessing_generalProcessingError_desc(), + null); + } + + // indicate some results were not processed if limits exceeded in results + if (CollectionUtils.isNotEmpty(statusGroupings.get(Status.LIMITS_EXCEEDED))) { + notifyWarning( + Bundle.MalwareScanIngestModule_SharedProcessing_exhaustedResultsHashLookups_title(), + Bundle.MalwareScanIngestModule_SharedProcessing_exhaustedResultsHashLookups_desc(), + null); + } + } + + /** + * Handles a CT cloud response objects that have a status that isn't + * FOUND but still are queryable (i.e. NOT_FOUND, BEING_SCANNED). + * + * @param ingestJobState The current state of operations of the ingest + * module. + * @param md5ToObjId The mapping of md5 to a list of object ids. + * @param results The ct cloud results. + * @param performFileUpload True if the class of results warrants file + * upload (i.e. NOT_FOUND) + */ + private void handleNonFoundResults(IngestJobState ingestJobState, Map> md5ToObjId, List results, boolean performFileUpload) throws CTCloudException, TskCoreException, NoSuchAlgorithmException, ReadContentInputStream.ReadContentInputStreamException { + if (CollectionUtils.isNotEmpty(results) + && ingestJobState.isDoFileLookups() + && ((performFileUpload && ingestJobState.isUploadUnknownFiles()) || (!performFileUpload && ingestJobState.isQueryForMissing()))) { + + for (CTCloudBean beingScanned : CollectionUtils.emptyIfNull(results)) { + + String sanitizedMd5 = normalizedMd5(beingScanned.getMd5HashValue()); + if (StringUtils.isBlank(sanitizedMd5)) { + continue; + } + List correspondingObjIds = md5ToObjId.get(sanitizedMd5); + if (CollectionUtils.isEmpty(correspondingObjIds)) { + continue; + } + + if (performFileUpload) { + uploadFile(ingestJobState, sanitizedMd5, correspondingObjIds.get(0)); + } + + ingestJobState.getUnidentifiedHashes().put(sanitizedMd5, correspondingObjIds); + } + } + } + + /** + * Makes CT Cloud REST API query for results regarding the status of a + * list of md5 hashes for executables. + * + * @param ingestJobState The current state of operations of the ingest + * module. + * @param md5Hashes The md5 hashes to check. + * @return The results from CT Cloud. + * @throws CTCloudException + */ + private List getHashLookupResults(IngestJobState ingestJobState, List md5Hashes) throws CTCloudException { + if (ingestJobState.getIngestJobContext().fileIngestIsCancelled()) { + return Collections.emptyList(); + } + + // get an auth token with the license + AuthTokenResponse authTokenResponse = ctApiDAO.getAuthToken(ingestJobState.getLicenseInfo().getDecryptedLicense()); + + // make sure we are in bounds for the remaining scans + long remainingScans = remaining(authTokenResponse.getHashLookupLimit(), authTokenResponse.getHashLookupCount()); + if (remainingScans <= 0) { + ingestJobState.disableDoFileLookups(); + notifyWarning( + Bundle.MalwareScanIngestModule_SharedProcessing_exhaustedHashLookups_title(), + Bundle.MalwareScanIngestModule_SharedProcessing_exhaustedHashLookups_desc(), + null); + return Collections.emptyList(); + } else if (ingestJobState.getIngestJobContext().fileIngestIsCancelled()) { + return Collections.emptyList(); + } + + // while we have a valid auth token, also check file uploads. + if (ingestJobState.isUploadUnknownFiles()) { + long remainingUploads = remaining(authTokenResponse.getFileUploadLimit(), authTokenResponse.getFileUploadCount()); + if (remainingUploads <= 0) { + ingestJobState.disableUploadUnknownFiles(); + notifyWarning( + Bundle.MalwareScanIngestModule_uploadFile_noRemainingFileUploads_title(), + Bundle.MalwareScanIngestModule_uploadFile_noRemainingFileUploads_desc(), + null); + } + } + + // using auth token, get results + return ctApiDAO.getReputationResults( + new AuthenticatedRequestData(ingestJobState.getLicenseInfo().getDecryptedLicense(), authTokenResponse), + md5Hashes + ); + } + + /** + * Normalizes an md5 string for the purposes of lookup in a map. + * + * @param orig The original value. + * @return The normalized value + */ + private static String normalizedMd5(String orig) { + return StringUtils.defaultString(orig).trim().toLowerCase(); + } + + /** + * Whether or not an abstract file meets the requirements to be + * uploaded. + * + * @param af The abstract file. + * @return True if can be uploaded. + */ + private static boolean isUploadable(AbstractFile af) { + long size = af.getSize(); + return size >= MIN_UPLOAD_SIZE && size <= MAX_UPLOAD_SIZE; + } + + /** + * Uploads a file to CT Cloud if the file is valid for upload. + * + * @param ingestJobState The current state of the ingest job. + * @param objId The object id of the file to upload to CT cloud. + * @return True if successfully uploaded. + * @throws CTCloudException + * @throws TskCoreException + */ + @Messages({ + "MalwareScanIngestModule_uploadFile_notUploadable_title=Not Able to Upload", + "# {0} - objectId", + "MalwareScanIngestModule_uploadFile_notUploadable_desc=A file did not meet requirements for upload (object id: {0}).", + "MalwareScanIngestModule_uploadFile_noRemainingFileUploads_title=No Remaining File Uploads", + "MalwareScanIngestModule_uploadFile_noRemainingFileUploads_desc=There are no more file uploads on this license at this time. File uploads will be disabled for remaining uploads.",}) + private boolean uploadFile(IngestJobState ingestJobState, String md5, long objId) throws CTCloudException, TskCoreException, NoSuchAlgorithmException, ReadContentInputStream.ReadContentInputStreamException { + if (!ingestJobState.isUploadUnknownFiles() || ingestJobState.getIngestJobContext().fileIngestIsCancelled()) { + return false; + } + + AbstractFile af = ingestJobState.getTskCase().getAbstractFileById(objId); + if (af == null) { + return false; + } + + if (!isUploadable(af)) { + notifyWarning( + Bundle.MalwareScanIngestModule_uploadFile_notUploadable_title(), + Bundle.MalwareScanIngestModule_uploadFile_notUploadable_desc(objId), + null); + return false; + } + + // get auth token / file upload url + AuthTokenResponse authTokenResponse = ctApiDAO.getAuthToken(ingestJobState.getLicenseInfo().getDecryptedLicense(), af.getSize()); + if (StringUtils.isBlank(authTokenResponse.getFileUploadUrl())) { + throw new CTCloudException(CTCloudException.ErrorCode.NETWORK_ERROR); + } else if (remaining(authTokenResponse.getFileUploadLimit(), authTokenResponse.getFileUploadCount()) <= 0) { + // don't proceed with upload if reached limit + ingestJobState.disableUploadUnknownFiles(); + notifyWarning( + Bundle.MalwareScanIngestModule_uploadFile_noRemainingFileUploads_title(), + Bundle.MalwareScanIngestModule_uploadFile_noRemainingFileUploads_desc(), + null); + + return false; + } else if (ingestJobState.getIngestJobContext().fileIngestIsCancelled()) { + return false; + } + + // upload bytes + ReadContentInputStream fileInputStream = new ReadContentInputStream(af); + + ctApiDAO.uploadFile(new FileUploadRequest() + .setContentLength(af.getSize()) + .setFileInputStream(fileInputStream) + .setFileName(af.getName()) + .setFullUrlPath(authTokenResponse.getFileUploadUrl()) + ); + + // upload metadata + MetadataUploadRequest metaRequest = new MetadataUploadRequest() + .setCreatedDate(af.getCrtime() == 0 ? null : af.getCrtime()) + .setFilePath(ingestJobState.getPathNormalizer().normalizePath(af.getUniquePath())) + .setFileSizeBytes(af.getSize()) + .setFileUploadUrl(authTokenResponse.getFileUploadUrl()) + .setMd5(md5) + .setSha1(getOrCalcSha1(af)) + .setSha256(getOrCalcSha256(af)); + + ctApiDAO.uploadMeta(new AuthenticatedRequestData(ingestJobState.getLicenseInfo().getDecryptedLicense(), authTokenResponse), metaRequest); + return true; + } + + /** + * Does long polling for any pending results. + * + * @param ingestJobState The state of the ingest job. + * @throws InterruptedException + * @throws CTCloudException + * @throws org.sleuthkit.datamodel.Blackboard.BlackboardException + * @throws TskCoreException + */ + @Messages({ + "MalwareScanIngestModule_longPollForNotFound_fileLookupPolling_title=Waiting for File Upload Results", + "MalwareScanIngestModule_longPollForNotFound_fileLookupPolling_desc=Waiting for all uploaded files to complete scanning.", + "MalwareScanIngestModule_longPollForNotFound_timeout_title=File Upload Results Timeout", + "MalwareScanIngestModule_longPollForNotFound_timeout_desc=There was a timeout while waiting for file uploads to be processed. Please try again later.",}) + private void longPollForNotFound(IngestJobState ingestJobState) throws InterruptedException, CTCloudException, Blackboard.BlackboardException, TskCoreException { + if (!ingestJobState.isDoFileLookups() + || !ingestJobState.isQueryForMissing() + || MapUtils.isEmpty(ingestJobState.getUnidentifiedHashes()) + || ingestJobState.getIngestJobContext().fileIngestIsCancelled()) { + return; + } + + MessageNotifyUtil.Notify.info( + Bundle.MalwareScanIngestModule_longPollForNotFound_fileLookupPolling_title(), + Bundle.MalwareScanIngestModule_longPollForNotFound_fileLookupPolling_desc() + ); + logger.log(Level.INFO, "Begin polling for malware status of file uploads."); + + Map> remaining = new HashMap<>(ingestJobState.getUnidentifiedHashes()); + + for (int retry = 0; retry < NUM_FILE_UPLOAD_RETRIES; retry++) { + List> md5Batches = Lists.partition(new ArrayList<>(remaining.keySet()), BATCH_SIZE); + for (List batch : md5Batches) { + // if we have exceeded limits or cancelled, then we're done. + if (!ingestJobState.isDoFileLookups() || ingestJobState.getIngestJobContext().fileIngestIsCancelled()) { + return; + } + + List repResult = getHashLookupResults(ingestJobState, batch); + + Map> statusGroupings = repResult.stream() + .filter(bean -> bean.getMalwareResult() != null) + .collect(Collectors.groupingBy(bean -> bean.getMalwareResult().getStatus())); + + // for all found items, create analysis results + List found = statusGroupings.get(Status.FOUND); + + createAnalysisResults(ingestJobState, found, remaining); + + // remove any found items from the list of items to long poll for + for (CTCloudBean foundItem : CollectionUtils.emptyIfNull(found)) { + String normalizedMd5 = normalizedMd5(foundItem.getMd5HashValue()); + remaining.remove(normalizedMd5); + } + } + + if (remaining.isEmpty()) { + return; + } + + // exponential backoff before trying again + long waitMultiplier = ((long) Math.pow(2, retry)); + + logger.log(Level.INFO, MessageFormat.format("Waiting {0} milliseconds before polling again for malware status of file uploads.", (waitMultiplier * FILE_UPLOAD_RETRY_SLEEP_MILLIS))); + + for (int i = 0; i < waitMultiplier; i++) { + if (!ingestJobState.isDoFileLookups() || ingestJobState.getIngestJobContext().fileIngestIsCancelled()) { + return; + } + + Thread.sleep(FILE_UPLOAD_RETRY_SLEEP_MILLIS); + } + } + + notifyWarning( + Bundle.MalwareScanIngestModule_longPollForNotFound_timeout_title(), + Bundle.MalwareScanIngestModule_longPollForNotFound_timeout_desc(), + null + ); + } + + /** + * Creates TSK_MALWARE analysis results based on a list of cloud beans + * received from the CT cloud api. + * + * @param ingestJobState The ingest job state. + * @param repResult The list of cloud beans. Only cloud beans with a + * malware status + * @param md5ToObjId The mapping of md5 + * @throws org.sleuthkit.datamodel.Blackboard.BlackboardException + * @throws TskCoreException + */ + private void createAnalysisResults(IngestJobState ingestJobState, List repResult, Map> md5ToObjId) throws Blackboard.BlackboardException, TskCoreException { + if (CollectionUtils.isEmpty(repResult)) { + return; + } + + List createdArtifacts = new ArrayList<>(); + SleuthkitCase.CaseDbTransaction trans = null; + try { + trans = ingestJobState.getTskCase().beginTransaction(); + for (CTCloudBean result : repResult) { + String sanitizedMd5 = normalizedMd5(result.getMd5HashValue()); + List objIds = md5ToObjId.remove(sanitizedMd5); + if (CollectionUtils.isEmpty(objIds)) { + continue; + } + + for (Long objId : objIds) { + AnalysisResult res = createAnalysisResult(ingestJobState, trans, result, objId); + if (res != null) { + // only post results that have score NOTABLE or LIKELY_NOTABLE + Score score = res.getScore(); + if (score.getSignificance() == Score.Significance.NOTABLE || score.getSignificance() == Score.Significance.LIKELY_NOTABLE) { + createdArtifacts.add(res); + } + } + } + } + + trans.commit(); + trans = null; + } finally { + if (trans != null) { + trans.rollback(); + createdArtifacts.clear(); + trans = null; + } + } + + if (!CollectionUtils.isEmpty(createdArtifacts)) { + ingestJobState.getTskCase().getBlackboard().postArtifacts( + createdArtifacts, + Bundle.MalwareScanIngestModuleFactory_displayName(), + ingestJobState.getIngestJobId() + ); + } + + } + + /** + * Creates an analysis result for the given information. + * + * @param ingestJobState The state of the ingest job. + * @param trans The case database transaction to use. + * @param cloudBean The bean indicating the malware result. + * @param objId The object id of the corresponding file that will + * receive the analysis result. + * @return The created analysis result or null if none created. + * @throws org.sleuthkit.datamodel.Blackboard.BlackboardException + */ + @Messages({ + "MalwareScanIngestModule_SharedProcessing_createAnalysisResult_Yes=YES", + "MalwareScanIngestModule_SharedProcessing_createAnalysisResult_No=NO" + }) + private AnalysisResult createAnalysisResult(IngestJobState ingestJobState, SleuthkitCase.CaseDbTransaction trans, CTCloudBean cloudBean, Long objId) throws Blackboard.BlackboardException { + if (objId == null || cloudBean == null || cloudBean.getMalwareResult() == null || cloudBean.getMalwareResult().getStatus() != Status.FOUND) { + logger.log(Level.WARNING, MessageFormat.format("Attempting to create analysis result with invalid parameters [objId: {0}, cloud bean status: {1}]", + objId == null + ? "" + : objId, + (cloudBean == null || cloudBean.getMalwareResult() == null || cloudBean.getMalwareResult().getStatus() == null) + ? "" + : cloudBean.getMalwareResult().getStatus().name() + )); + return null; + } + + Score score = cloudBean.getMalwareResult().getCTScore() == null + ? Score.SCORE_UNKNOWN + : cloudBean.getMalwareResult().getCTScore().getTskCore(); + + String conclusion = score.getSignificance() == Score.Significance.NOTABLE || score.getSignificance() == Score.Significance.LIKELY_NOTABLE + ? Bundle.MalwareScanIngestModule_SharedProcessing_createAnalysisResult_Yes() + : Bundle.MalwareScanIngestModule_SharedProcessing_createAnalysisResult_No(); + + String justification = cloudBean.getMalwareResult().getStatusDescription(); + + return ingestJobState.getTskCase().getBlackboard().newAnalysisResult( + ingestJobState.getMalwareType(), + objId, + ingestJobState.getDsId(), + score, + conclusion, + MALWARE_CONFIG, + justification, + Collections.emptyList(), + trans).getAnalysisResult(); + } + + /** + * Called when ingest should shut down. + */ + @Messages({ + "MalwareScanIngestModule_SharedProcessing_flushTimeout_title=Processing Timeout", + "MalwareScanIngestModule_SharedProcessing_flushTimeout_desc=A timeout occurred while finishing processing" + }) + synchronized void shutDown() { + // if already shut down, return + if (ingestJobState == null) { + return; + } + + // flush any remaining items + try { + batchProcessor.flushAndReset(); + longPollForNotFound(ingestJobState); + } catch (InterruptedException ex) { + notifyWarning( + Bundle.MalwareScanIngestModule_SharedProcessing_flushTimeout_title(), + Bundle.MalwareScanIngestModule_SharedProcessing_flushTimeout_desc(), + ex); + } catch (Exception ex) { + notifyWarning( + Bundle.MalwareScanIngestModule_SharedProcessing_generalProcessingError_title(), + Bundle.MalwareScanIngestModule_SharedProcessing_generalProcessingError_desc(), + ex); + } finally { + // set state to shut down and clear any remaining + ingestJobState = null; + } + } + + /** + * Creates a warning notification to display in the lower right corner + * and a corresponding log message. + * + * @param title The title of the warning. + * @param message The message of the warning. + * @param ex The corresponding exception (or null if none). + */ + private static void notifyWarning(String title, String message, Exception ex) { + MessageNotifyUtil.Notify.warn(title, message); + logger.log(Level.WARNING, message, ex); + } + + class FileRecord { + + private final long objId; + private final String md5hash; + + FileRecord(long objId, String md5hash) { + this.objId = objId; + this.md5hash = md5hash; + } + + long getObjId() { + return objId; + } + + String getMd5hash() { + return md5hash; + } + + } + + /** + * Represents the state of the current ingest job. + * + * NOTE: if doFileLookups is false, most variables will likely be null + * (TSK case, file type detector, etc.) and should not be used. The + * contract for this class should be that if doFileLookups is true or + * uploadUnknownFiles is true, the remaining variables should be non + * null, if doFileLookups is false and uploadUnknownFiles is false, no + * other access to this class can be made reliably. + */ + static class IngestJobState { + + static final IngestJobState DISABLED = new IngestJobState( + null, + null, + null, + null, + null, + null, + false, + false + ); + + private final SleuthkitCase tskCase; + private final FileTypeDetector fileTypeDetector; + private final LicenseInfo licenseInfo; + private final BlackboardArtifact.Type malwareType; + private final long dsId; + private final long ingestJobId; + private final boolean queryForMissing; + private final Map> unidentifiedHashes = new HashMap<>(); + + // this can change mid run + private boolean uploadUnknownFiles; + private boolean doFileLookups; + private final IngestJobContext ingestJobContext; + private final PathNormalizer pathNormalizer; + + IngestJobState(IngestJobContext ingestJobContext, SleuthkitCase tskCase, PathNormalizer pathNormalizer, FileTypeDetector fileTypeDetector, LicenseInfo licenseInfo, BlackboardArtifact.Type malwareType, boolean uploadUnknownFiles, boolean doFileLookups) { + this.tskCase = tskCase; + this.fileTypeDetector = fileTypeDetector; + this.pathNormalizer = pathNormalizer; + this.licenseInfo = licenseInfo; + this.malwareType = malwareType; + this.dsId = ingestJobContext == null ? 0L : ingestJobContext.getDataSource().getId(); + this.ingestJobId = ingestJobContext == null ? 0L : ingestJobContext.getJobId(); + this.ingestJobContext = ingestJobContext; + // for now, querying for any missing files will be tied to whether initially we should upload files and do lookups at all + this.queryForMissing = uploadUnknownFiles && doFileLookups; + this.uploadUnknownFiles = uploadUnknownFiles; + this.doFileLookups = doFileLookups; + } + + SleuthkitCase getTskCase() { + return tskCase; + } + + IngestJobContext getIngestJobContext() { + return ingestJobContext; + } + + FileTypeDetector getFileTypeDetector() { + return fileTypeDetector; + } + + LicenseInfo getLicenseInfo() { + return licenseInfo; + } + + BlackboardArtifact.Type getMalwareType() { + return malwareType; + } + + long getDsId() { + return dsId; + } + + long getIngestJobId() { + return ingestJobId; + } + + Map> getUnidentifiedHashes() { + return unidentifiedHashes; + } + + boolean isQueryForMissing() { + return queryForMissing; + } + + boolean isUploadUnknownFiles() { + return uploadUnknownFiles; + } + + void disableUploadUnknownFiles() { + this.uploadUnknownFiles = false; + } + + boolean isDoFileLookups() { + return doFileLookups; + } + + void disableDoFileLookups() { + this.doFileLookups = false; + } + + public PathNormalizer getPathNormalizer() { + return pathNormalizer; + } + + } + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModuleFactory.java b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModuleFactory.java new file mode 100644 index 0000000000..83cb93f689 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModuleFactory.java @@ -0,0 +1,105 @@ +/* + * 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.malwarescan; + +import com.basistech.df.cybertriage.autopsy.ctoptions.CTOptionsPanel; +import org.openide.util.NbBundle.Messages; +import org.openide.util.lookup.ServiceProvider; +import org.sleuthkit.autopsy.ingest.FileIngestModule; +import org.sleuthkit.autopsy.ingest.IngestModuleFactoryAdapter; +import org.sleuthkit.autopsy.ingest.IngestModuleGlobalSettingsPanel; +import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettings; +import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettingsPanel; +import org.sleuthkit.autopsy.ingest.NoIngestModuleIngestJobSettings; + +/** + * Factory for malware scan ingest modules. + */ +@ServiceProvider(service = org.sleuthkit.autopsy.ingest.IngestModuleFactory.class) +@Messages({ + "MalwareScanIngestModuleFactory_displayName=Cyber Triage Malware Scanner", + "MalwareScanIngestModuleFactory_description=Identifies executable files with malware.", + "MalwareScanIngestModuleFactory_version=1.0.0" +}) +public class MalwareScanIngestModuleFactory extends IngestModuleFactoryAdapter { + + /** + * @return The display name for the factory (static method). + */ + public static String getDisplayName() { + return Bundle.MalwareScanIngestModuleFactory_displayName(); + } + + @Override + public String getModuleDisplayName() { + return MalwareScanIngestModuleFactory.getDisplayName(); + } + + @Override + public String getModuleDescription() { + return Bundle.MalwareScanIngestModuleFactory_description(); + } + + @Override + public String getModuleVersionNumber() { + return Bundle.MalwareScanIngestModuleFactory_version(); + } + + @Override + public boolean isFileIngestModuleFactory() { + return true; + } + + @Override + public FileIngestModule createFileIngestModule(IngestModuleIngestJobSettings ingestOptions) { + return new MalwareScanIngestModule((MalwareScanIngestSettings) ingestOptions); + } + + @Override + public boolean hasGlobalSettingsPanel() { + return true; + } + + @Override + public IngestModuleGlobalSettingsPanel getGlobalSettingsPanel() { + CTOptionsPanel optionsPanel = new CTOptionsPanel(); + optionsPanel.loadSavedSettings(); + return optionsPanel; + } + + @Override + public boolean hasIngestJobSettingsPanel() { + return true; + } + + @Override + public IngestModuleIngestJobSettingsPanel getIngestJobSettingsPanel(IngestModuleIngestJobSettings settings) { + if (settings instanceof MalwareScanIngestSettings) { + return new MalwareScanIngestSettingsPanel((MalwareScanIngestSettings) settings); + } + /* + * Compatibility check for older versions. + */ + if (settings instanceof NoIngestModuleIngestJobSettings) { + return new MalwareScanIngestSettingsPanel(new MalwareScanIngestSettings()); + } + + throw new IllegalArgumentException("Expected settings argument to be an instance of IngestSettings"); + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestSettings.java b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestSettings.java new file mode 100644 index 0000000000..158e967745 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestSettings.java @@ -0,0 +1,96 @@ +/* + * 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.malwarescan; + +import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettings; + +/** + * Ingest job settings for the Malware scanner module. + */ +final class MalwareScanIngestSettings implements IngestModuleIngestJobSettings { + + private static final long serialVersionUID = 1L; + + private static final boolean DEFAULT_QUERY_FILES = true; + private static final boolean DEFAULT_UPLOAD_FILES = true; + + public boolean queryFiles; + public boolean uploadFiles; + + /** + * Instantiate the ingest job settings with default values. + */ + MalwareScanIngestSettings() { + this.queryFiles = DEFAULT_QUERY_FILES; + this.uploadFiles = DEFAULT_UPLOAD_FILES; + } + + /** + * Instantiate the ingest job settings. + * + * @param computeHashes Compute hashes if none are present + * @param verifyHashes Verify hashes if any are present + */ + MalwareScanIngestSettings(boolean queryFiles, boolean uploadFiles) { + this.queryFiles = queryFiles; + this.uploadFiles = uploadFiles; + } + + @Override + public long getVersionNumber() { + return serialVersionUID; + } + + /** + * Should files be queried? + * + * @return true if files should be queried, false otherwise + */ + public boolean shouldQueryFiles() { + return queryFiles; + } + + /** + * Set whether files should be queried. + * + * @param queryFiles true if files should be queried + */ + void setqueryFiles(boolean queryFiles) { + this.queryFiles = queryFiles; + } + + + /** + * Should files be uploaded? + * + * @return true if files should be uploaded, false otherwise + */ + public boolean shouldUploadFiles() { + return uploadFiles; + } + + /** + * Set whether files should be uploaded. + * + * @param uploadFiles true if files should be uploaded + */ + void setUploadFiles(boolean uploadFiles) { + this.uploadFiles = uploadFiles; + } +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestSettingsPanel.form b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestSettingsPanel.form new file mode 100644 index 0000000000..46a928c98e --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestSettingsPanel.form @@ -0,0 +1,123 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestSettingsPanel.java b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestSettingsPanel.java new file mode 100644 index 0000000000..a418de0f83 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestSettingsPanel.java @@ -0,0 +1,149 @@ +/* + * Autopsy 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.malwarescan; + +import com.basistech.df.cybertriage.autopsy.ctapi.json.LicenseInfo; +import com.basistech.df.cybertriage.autopsy.ctoptions.ctcloud.CTLicensePersistence; +import java.util.Optional; +import org.sleuthkit.autopsy.modules.dataSourceIntegrity.*; +import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettings; +import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettingsPanel; + +/** + * Ingest job settings panel for the Malware scanner ingest. + */ +@SuppressWarnings("PMD.SingularField") // UI widgets cause lots of false positives +final class MalwareScanIngestSettingsPanel extends IngestModuleIngestJobSettingsPanel { + + private final CTLicensePersistence ctPersistence = CTLicensePersistence.getInstance(); + + MalwareScanIngestSettingsPanel(MalwareScanIngestSettings settings) { + initComponents(); + customizeComponents(settings); + } + + /** + * Update components with values from the ingest job settings. + * + * @param settings The ingest job settings. + */ + private void customizeComponents(MalwareScanIngestSettings settings) { + Optional licenseInfoOpt = ctPersistence.loadLicenseInfo(); + LicenseInfo licenseInfo = licenseInfoOpt.orElse(null); + if (licenseInfo != null) { + this.paidLicenseTextArea.setVisible(false); + this.queryFilesCheckbox.setVisible(true); + this.queryFilesCheckbox.setEnabled(false); + this.uploadFilesCheckbox.setVisible(true); + this.queryFilesCheckbox.setSelected(true); + this.uploadFilesCheckbox.setSelected(settings.shouldUploadFiles()); + } else { + this.paidLicenseTextArea.setVisible(true); + this.queryFilesCheckbox.setVisible(false); + this.uploadFilesCheckbox.setVisible(false); + } + } + + @Override + public IngestModuleIngestJobSettings getSettings() { + return new MalwareScanIngestSettings(queryFilesCheckbox.isSelected(), uploadFilesCheckbox.isSelected()); + } + + /** + * 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 + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + queryFilesCheckbox = new javax.swing.JCheckBox(); + uploadFilesCheckbox = new javax.swing.JCheckBox(); + ingestSettingsLabel = new javax.swing.JLabel(); + paidLicenseTextArea = new javax.swing.JTextArea(); + + setPreferredSize(new java.awt.Dimension(300, 155)); + + queryFilesCheckbox.setSelected(true); + org.openide.awt.Mnemonics.setLocalizedText(queryFilesCheckbox, org.openide.util.NbBundle.getMessage(MalwareScanIngestSettingsPanel.class, "MalwareScanIngestSettingsPanel.queryFilesCheckbox.text")); // NOI18N + queryFilesCheckbox.setEnabled(false); + + org.openide.awt.Mnemonics.setLocalizedText(uploadFilesCheckbox, org.openide.util.NbBundle.getMessage(MalwareScanIngestSettingsPanel.class, "MalwareScanIngestSettingsPanel.uploadFilesCheckbox.text")); // NOI18N + uploadFilesCheckbox.setFocusable(false); + uploadFilesCheckbox.setLabel(org.openide.util.NbBundle.getMessage(MalwareScanIngestSettingsPanel.class, "MalwareScanIngestSettingsPanel.uploadFilesCheckbox.label")); // NOI18N + + ingestSettingsLabel.setFont(ingestSettingsLabel.getFont().deriveFont(ingestSettingsLabel.getFont().getStyle() | java.awt.Font.BOLD)); + org.openide.awt.Mnemonics.setLocalizedText(ingestSettingsLabel, org.openide.util.NbBundle.getMessage(MalwareScanIngestSettingsPanel.class, "MalwareScanIngestSettingsPanel.ingestSettingsLabel.text")); // NOI18N + + paidLicenseTextArea.setColumns(20); + paidLicenseTextArea.setFont(new java.awt.Font("Segoe UI", 1, 12)); // NOI18N + paidLicenseTextArea.setRows(5); + paidLicenseTextArea.setText(org.openide.util.NbBundle.getMessage(MalwareScanIngestSettingsPanel.class, "MalwareScanIngestSettingsPanel.paidLicenseTextArea.text")); // NOI18N + paidLicenseTextArea.setWrapStyleWord(true); + paidLicenseTextArea.setBorder(null); + paidLicenseTextArea.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); + paidLicenseTextArea.setFocusable(false); + paidLicenseTextArea.setOpaque(false); + paidLicenseTextArea.setRequestFocusEnabled(false); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(6, 6, 6) + .addComponent(ingestSettingsLabel)) + .addGroup(layout.createSequentialGroup() + .addGap(6, 6, 6) + .addComponent(uploadFilesCheckbox)) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(queryFilesCheckbox)) + .addGroup(layout.createSequentialGroup() + .addGap(5, 5, 5) + .addComponent(paidLicenseTextArea, javax.swing.GroupLayout.PREFERRED_SIZE, 243, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(185, 185, 185)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(ingestSettingsLabel) + .addGap(18, 18, 18) + .addComponent(queryFilesCheckbox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(uploadFilesCheckbox) + .addGap(18, 18, 18) + .addComponent(paidLicenseTextArea, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + + uploadFilesCheckbox.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(MalwareScanIngestSettingsPanel.class, "MalwareScanIngestSettingsPanel.uploadFilesCheckbox.AccessibleContext.accessibleName")); // NOI18N + }// //GEN-END:initComponents + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel ingestSettingsLabel; + private javax.swing.JTextArea paidLicenseTextArea; + private javax.swing.JCheckBox queryFilesCheckbox; + private javax.swing.JCheckBox uploadFilesCheckbox; + // End of variables declaration//GEN-END:variables + +} diff --git a/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/PathNormalizer.java b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/PathNormalizer.java new file mode 100644 index 0000000000..f8a0a299a5 --- /dev/null +++ b/Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/PathNormalizer.java @@ -0,0 +1,201 @@ +/* + * 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.malwarescan; + +import com.google.common.net.InetAddresses; +import java.net.InetAddress; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import java.util.logging.Level; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import org.apache.commons.lang3.StringUtils; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.datamodel.SleuthkitCase; +import org.sleuthkit.datamodel.TskCoreException; + +/** + * Utility class to anonymize paths. + */ +class PathNormalizer { + + private static final Logger LOGGER = Logger.getLogger(PathNormalizer.class.getName()); + + private static final String ANONYMIZED_USERNAME = ""; + private static final String ANONYMIZED_IP = ""; + private static final String ANONYMIZED_HOSTNAME = ""; + private static final String FORWARD_SLASH = "/"; + private static final String BACK_SLASH = "\\"; + + private static final Pattern USER_PATH_FORWARD_SLASH_REGEX = Pattern.compile("(? getUsernames() { + try { + return this.skCase.getOsAccountManager().getOsAccounts().stream() + .filter(acct -> acct != null) + .map(acct -> acct.getLoginName().orElse(null)) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + } catch (TskCoreException ex) { + LOGGER.log(Level.WARNING, "There was an error getting current os accounts", ex); + return Collections.emptyList(); + } + } + + public String normalizePath(String inputString) { + if (StringUtils.isBlank(inputString)) { + return ""; + } + + String anonymousString = anonymizeUserFromPathsWithForwardSlashes(inputString); + anonymousString = anonymizeUserFromPathsWithBackSlashes(anonymousString); + anonymousString = anonymizeServerFromUNCPath(anonymousString); + + return anonymousString; + } + + private String anonymizeUserFromPathsWithForwardSlashes(String stringWithUsername) { + String anonymousString = stringWithUsername; + anonymousString = regexReplace(anonymousString, USER_PATH_FORWARD_SLASH_REGEX_XP, USERNAME_REGEX_REPLACEMENT); + anonymousString = regexReplace(anonymousString, USER_PATH_FORWARD_SLASH_REGEX, USERNAME_REGEX_REPLACEMENT); + anonymousString = replaceFolder(anonymousString, getUsernames(), ANONYMIZED_USERNAME, FORWARD_SLASH); + return anonymousString; + } + + // Most paths in CyberTriage are normalized with forward slashes + // but there can still be strings containing paths that are not normalized such paths contained in arguments or event log payloads + private String anonymizeUserFromPathsWithBackSlashes(String stringWithUsername) { + String anonymousString = stringWithUsername; + anonymousString = regexReplace(anonymousString, USER_PATH_BACK_SLASH_REGEX_XP, USERNAME_REGEX_REPLACEMENT); + anonymousString = regexReplace(anonymousString, USER_PATH_BACK_SLASH_REGEX, USERNAME_REGEX_REPLACEMENT); + anonymousString = replaceFolder(anonymousString, getUsernames(), ANONYMIZED_USERNAME, BACK_SLASH); + + return anonymousString; + } + + private String anonymizeServerFromUNCPath(String inputString) { + + Set serverNames = new HashSet<>(); + String anonymousString = inputString.toLowerCase(Locale.ENGLISH); + + Matcher forwardSlashMatcher = UNC_PATH_FORWARD_SLASH_PATTERN.matcher(anonymousString); + while (forwardSlashMatcher.find()) { + String serverName = forwardSlashMatcher.group(2); + serverNames.add(serverName); + } + + Matcher backSlashMatcher = UNC_PATH_BACK_SLASH_PATTERN.matcher(anonymousString); + while (backSlashMatcher.find()) { + String serverName = backSlashMatcher.group(2); + serverNames.add(serverName); + } + + for (String serverName : serverNames) { + + if (StringUtils.isBlank(serverName)) { + continue; + } + + if (InetAddresses.isInetAddress(serverName) && isLocalIP(serverName)) { + anonymousString = replaceFolder(anonymousString, Collections.singletonList(serverName), ANONYMIZED_IP); + } else { + anonymousString = replaceFolder(anonymousString, Collections.singletonList(serverName), ANONYMIZED_HOSTNAME); + } + + } + + return anonymousString; + } + + private static String regexReplace(String orig, Pattern pattern, String regexReplacement) { + Matcher matcher = pattern.matcher(orig); + return matcher.replaceAll(regexReplacement); + } + + private static String replaceFolder(String orig, List valuesToReplace, String replacementValue) { + String anonymized = orig; + anonymized = replaceFolder(anonymized, valuesToReplace, replacementValue, FORWARD_SLASH); + anonymized = replaceFolder(anonymized, valuesToReplace, replacementValue, BACK_SLASH); + return anonymized; + } + + private static String replaceFolder(String orig, List valuesToReplace, String replacementValue, String folderDelimiter) { + if (orig == null || valuesToReplace == null) { + return orig; + } + + String anonymousString = orig; + + // ensure non-null + folderDelimiter = StringUtils.defaultString(folderDelimiter); + replacementValue = StringUtils.defaultString(replacementValue); + + // replace + for (String valueToReplace : valuesToReplace) { + if (StringUtils.isNotEmpty(valueToReplace)) { + anonymousString = StringUtils.replace(anonymousString, + folderDelimiter + valueToReplace + folderDelimiter, + folderDelimiter + replacementValue + folderDelimiter); + } + } + + return anonymousString; + } + + /** + * Returns true if IP Address is Any Local / Site Local / Link Local / Loop + * back local. Sample list "0.0.0.0", wildcard addres + * "10.1.1.1","10.10.10.10", site local address "127.0.0.0","127.2.2.2", + * loopback address "169.254.0.0","169.254.10.10", Link local address + * "172.16.0.0","172.31.245.245", site local address + * + * @param ipAddress + * @return + */ + public static boolean isLocalIP(String ipAddress) { + try { + InetAddress a = InetAddresses.forString(ipAddress); + return a.isAnyLocalAddress() || a.isSiteLocalAddress() + || a.isLoopbackAddress() || a.isLinkLocalAddress(); + } catch (IllegalArgumentException ex) { + LOGGER.log(Level.WARNING, "Invalid IP string", ex); + return false; + } + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/actions/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/actions/Bundle_ar.properties new file mode 100644 index 0000000000..4b0266503f --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/actions/Bundle_ar.properties @@ -0,0 +1,99 @@ +AddBlackboardArtifactTagAction.pluralTagResult=Agregar etiquetas de resultado +AddBlackboardArtifactTagAction.singularTagResult=Agregar etiqueta de resultado +AddBlackboardArtifactTagAction.taggingErr=Error de etiquetado +# {0} - artifactName +AddBlackboardArtifactTagAction.unableToTag.msg=No se puede etiquetar {0}. +AddContentTagAction.cannotApplyTagErr=No se puede aplicar etiqueta +AddContentTagAction.pluralTagFile=Agregar etiquetas de archivo +AddContentTagAction.singularTagFile=Agregar etiqueta de archivo +# {0} - fileName +# {1} - tagName +AddContentTagAction.tagExists={0} ha sido etiquetado como {1}. No se puede volver a aplicar la misma etiqueta. +AddContentTagAction.taggingErr=Error de etiquetado +# {0} - fileName +AddContentTagAction.unableToTag.msg=Incapaz de etiquetar {0}, no es un archivo regular. +# {0} - fileName +AddContentTagAction.unableToTag.msg2=Incapaz de etiquetar {0}. +CTL_DumpThreadAction=Volcado de hilo +CTL_ShowIngestProgressSnapshotAction=Detalles del estado de ingestion +DeleteBlackboardArtifactTagAction.deleteTag=Eliminar etiqueta(s) seleccionada(s) +DeleteBlackboardArtifactTagAction.tagDelErr=Error de eliminacion de etiqueta +# {0} - tagName +DeleteBlackboardArtifactTagAction.unableToDelTag.msg=Incapaz de eliminar la etiqueta {0}. +DeleteContentTagAction.deleteTag=Eliminar etiqueta(s) seleccionada(s) +DeleteContentTagAction.tagDelErr=Error de eliminacion de etiqueta +# {0} - tagName +DeleteContentTagAction.unableToDelTag.msg=Incapaz de eliminar la etiqueta {0}. +DeleteFileBlackboardArtifactTagAction.deleteTag=Eliminar etiqueta de resultado +# {0} - artifactID +DeleteFileBlackboardArtifactTagAction.deleteTag.alert=Incapaz de desetiquetar artefacto {0}. +# {0} - artifactID +DeleteFileBlackboardArtifactTagAction.deleteTags.alert=Incapaz de desetiquetar artefacto {0}. +DeleteFileContentTagAction.deleteTag=Eliminar Etiqueta de Archivo +# {0} - fileID +DeleteFileContentTagAction.deleteTag.alert=No se puede desetiquetar archivo {0}. +ExitAction.confirmationDialog.message=Ingestion esta en curso, estas seguro/a de que quieres salir? +ExitAction.confirmationDialog.title=Ingestion en Curso +# {0} - exception message +ExitAction.messageBox.caseCloseExceptionMessage=Error closing case: {0} +GetTagNameDialog.descriptionLabel.text=Descripcion: +GetTagNameDialog.notableCheckbox.text=Tag indica que el item es notable. +GetTagNameDialog.tagDescriptionIllegalCharacters.message=Las descripciones de tags no pueden contener comas (,) o puntos y comas (;) +GetTagNameDialog.tagDescriptionIllegalCharacters.title=Caracter no valido en la descripcion del tag +GetTagNameDialog.tagNameAlreadyExists.message=El nombre del tag debe ser unico. Un tag con este nombre ya existe. +GetTagNameDialog.tagNameAlreadyExists.title=Nombre de Tag Duplicado +GetTagNameDialog.tagNameField.text= +GetTagNameDialog.cancelButton.text=Cancelar +GetTagNameDialog.okButton.text=OK +GetTagNameDialog.preexistingLabel.text=Nombres de Tags Preexistentes: +GetTagNameDialog.newTagPanel.border.title=Nuevo Tag +GetTagNameDialog.tagNameLabel.text=Nombre de etiqueta: +GetTagNameAndCommentDialog.newTagButton.text=Nueva Etiqueta +GetTagNameAndCommentDialog.okButton.text=OK +GetTagNameAndCommentDialog.commentText.toolTipText=Ingresa un comentario opcional para la etiqueta o dejalo en blanco +GetTagNameAndCommentDialog.commentText.text= +GetTagNameAndCommentDialog.commentLabel.text=Comentario: +# To change this template, choose Tools | Templates +# and open the template in the editor. +GetTagNameAndCommentDialog.cancelButton.text=Cancelar +GetTagNameAndCommentDialog.tagLabel.text=Etiqueta: +AddTagAction.bookmarkFile=Guardar archivo como marcador +AddTagAction.quickTag=Etiqueta Rapida +AddTagAction.noTags=Sin etiquetas +AddTagAction.newTag=Nueva Etiqueta... +AddTagAction.tagAndComment=Etiqueta y Comentario... +AddBookmarkTagAction.bookmark.text=Marcador +GetTagNameAndCommentDialog.noTags=Sin Etiquetas +GetTagNameAndCommentDialog.selectTag=Seleccionar Etiqueta +GetTagNameAndCommentDialog.cancelName=Cancelar +GetTagNameDialog.createTag=Crear Etiqueta +GetTagNameDialog.cancelName=Cancelar +GetTagNameDialog.mustSupplyTtagName.msg=Debes suministrar un nombre de etiqueta para continuar. +GetTagNameDialog.tagNameErr=Nombre de etiqueta. +GetTagNameDialog.illegalChars.msg=El nombre de etiqueta contiene caracteres no permitidos.\nNo puede contener ninguno de los siguientes simbolos: \\ : * ? " < > | , ; +GetTagNameDialog.illegalCharsErr=Caracteres no permitidos. +GetTagNameDialog.unableToAddTagNameToCase.msg=Incapaz de agregar el nombre de etiqueta {0} al caso. +GetTagNameDialog.taggingErr=Error de etiquetado +GetTagNameDialog.tagNameAlreadyDef.msg=Se ha definido previamente un nombre de etiqueta {0}. +GetTagNameDialog.dupTagErr=Error de etiqueta duplicada +GetTagNameDialog.tagNameExistsTskCore.msg=El nombre de etiqueta {0} ya existe en la base de datos, pero ocurrio un error al recuperarlo. +OpenLogFolder.error1=Archivo de registro no encontrado: {0} +OpenLogFolder.CouldNotOpenLogFolder=No se pudo abrir la carpeta de registros +CTL_OpenLogFolder=Abrir carpeta de registros +CTL_OpenOutputFolder=Abrir carpeta de casos +OpenOutputFolder.error1=Carpeta del Caso No Encontrada: {0} +OpenOutputFolder.noCaseOpen=No hay caso abierto, por lo tanto, no hay carpeta de caso actual disponible. +OpenOutputFolder.CouldNotOpenOutputFolder=No es posible abrir carepta de casos +# {0} - old tag name +# {1} - artifactID +ReplaceBlackboardArtifactTagAction.replaceTag.alert=Incapaz de reemplazar etiqueta {0} por el artefacto {1}. +# {0} - old tag name +# {1} - content obj id +ReplaceContentTagAction.replaceTag.alert=Incapaz de reemplazar etiqueta {0} por {1}. +ReplaceTagAction.replaceTag=Reemplazar Etiqueta(s) Seleccionada(s) Con +ShowIngestProgressSnapshotAction.actionName.text=Obten una Instantanea del Progreso de Ingesta +OpenPythonModulesFolderAction.actionName.text=Python Plugins +OpenPythonModulesFolderAction.errorMsg.folderNotFound=Carpeta de complementos de Python no encontrada: {0} +CTL_OpenPythonModulesFolderAction=Python Plugins +GetTagNameAndCommentDialog.tagCombo.toolTipText=Seleccionar etiqueta para usar +CTL_ExitAction=Salir diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ar.properties new file mode 100644 index 0000000000..e0934aa215 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ar.properties @@ -0,0 +1,48 @@ + +AllCasesSearchAction.getName.text=Busqueda Repositorio Central +# {0} - numero de casos +AllCasesSearchDialog.caseLabel.text=El Repositorio Central contiene {0} caso(s). +AllCasesSearchDialog.correlationValueTextField.domainExample=Example: "domain.com" +AllCasesSearchDialog.correlationValueTextField.emailExample=Example: "user@host.com" +AllCasesSearchDialog.correlationValueTextField.filesExample=Example: "f0e1d2c3b4a5968778695a4b3c2d1e0f" +AllCasesSearchDialog.correlationValueTextField.iccidExample=Example: "89 91 19 1299 99 329451 0" +AllCasesSearchDialog.correlationValueTextField.imeiExample=Example: "351756061523999" +AllCasesSearchDialog.correlationValueTextField.imsiExample=Example: "310150123456789" +AllCasesSearchDialog.correlationValueTextField.macExample=Example: "0C-14-F2-01-AF-45" +AllCasesSearchDialog.correlationValueTextField.phoneExample=Example: "(800)123-4567" +AllCasesSearchDialog.correlationValueTextField.ssidExample=Example: "WirelessNetwork-5G" +AllCasesSearchDialog.correlationValueTextField.usbExample=Example: "4&1234567&0" +AllCasesSearchDialog.descriptionLabel.text=Buscar el Repositorio Central para los valores dados. +AllCasesSearchDialog.dialogTitle.text=Busqueda Repositorio Central +AllCasesSearchDialog.emptyNode.text=No se encontraron resultados. +AllCasesSearchDialog.errorLabel.text=\ +AllCasesSearchDialog.correlationTypeLabel.text=Tipo: +AllCasesSearchDialog.resultsDescription.text=Busqueda Repositorio Central +AllCasesSearchDialog.resultsTitle.text=Todos los Casos +AllCasesSearchDialog.searchButton.AccessibleContext.accessibleDescription= +AllCasesSearchDialog.searchButton.AccessibleContext.accessibleName=Search +AllCasesSearchDialog.searchButton.text=Buscar +AllCasesSearchDialog.correlationValueLabel.text=Valor: +AllCasesSearchDialog.casesLabel.text=\ +AllCasesSearchDialog.correlationValueTextArea.text= +AllCasesSearchDialog.normalizedLabel.text=Los valores se normalizarán para asegurar consistencia en mayúsculas y formato. +AllCasesSearchDialog.validation.genericMessage=El valor proporcionado no es válido. +AllCasesSearchDialog.validation.invalidDomain=El valor proporcionado no es un dominio válido. +AllCasesSearchDialog.validation.invalidEmail=El valor proporcionado no es una dirección de correo electrónico válida. +AllCasesSearchDialog.validation.invalidHash=El valor proporcionado no es un hash MD5 válido. +AllCasesSearchDialog.validation.invalidIccid=El valor proporcionado no es un número ICCID válido. +AllCasesSearchDialog.validation.invalidImei=El valor proporcionado no es un número IMEI válido. +AllCasesSearchDialog.validation.invalidImsi=El valor proporcionado no es un número IMSI válido. +AllCasesSearchDialog.validation.invalidMac=El valor proporcionado no es una dirección MAC válida. +AllCasesSearchDialog.validation.invalidPhone=El valor proporcionado no es un número de teléfono válido. +AllCasesSearchDialog.validation.invalidSsid=El valor proporcionado no es una red inalámbrica válida. +AllCasesSearchNode.getName.text=Otros Casos de Búsqueda +CorrelationAttributeInstanceNode.columnName.case=Caso +CorrelationAttributeInstanceNode.columnName.comment=Comentario +CorrelationAttributeInstanceNode.columnName.dataSource=Fuente de Datos +CorrelationAttributeInstanceNode.columnName.device=Dispositivo +CorrelationAttributeInstanceNode.columnName.known=Conocido +CorrelationAttributeInstanceNode.columnName.name=Nombre +CorrelationAttributeInstanceNode.columnName.path=Ruta +CorrelationAttributeInstanceNode.columnName.value=Valor +CTL_AllCasesSearchAction=Busqueda Repositorio Central diff --git a/Core/src/org/sleuthkit/autopsy/apputils/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/apputils/Bundle_ar.properties new file mode 100644 index 0000000000..ce7aeab964 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/apputils/Bundle_ar.properties @@ -0,0 +1,4 @@ +CTL_ResetWindowsAction=Restablecer Windows +ResetWindowAction.caseCloseFailure.text=Incapaz de cerrar el caso actual, el software se reiniciara y las ubicaciones de las ventanas se restableceran la proxima vez que se cierre el software.. +ResetWindowAction.caseSaveMetadata.text=Incapaz de guardar la ruta del caso actual, el software se reiniciara y las ubicaciones de las ventanas se restableceran, pero el caso actual no se abrira al reiniciar.. +ResetWindowAction.confirm.text=Para realizar el restablecimiento de las ubicaciones de las ventanas, el software se cerrara y reiniciara. Si actualmente hay un caso abierto, se cerrara. Si la ingestion o una busqueda esta en curso, se terminara. ¿Estas seguro de que deseas reiniciar el software para restablecer todas las ubicaciones de las ventanas? diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index cae89e41ce..92b64b840b 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -66,8 +66,8 @@ Case.open.msgDlg.updated.msg=Updated case database schema.\nA backup copy of the Case.open.msgDlg.updated.title=Case Database Schema Update Case.checkImgExist.confDlg.doesntExist.msg=One of the images associated with \n\ this case are missing. Would you like to search for them now?\n\ -Previously, the image was located at:\n\ -{0}\n\ +Previously, the image with host, {0}, was located at:\n\ +{1}\n\ Please note that you will still be able to browse directories and generate reports\n\ if you choose No, but you will not be able to view file content or run the ingest process. Case.checkImgExist.confDlg.doesntExist.title=Missing Image diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED index b671940118..ce1fb9aa70 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED @@ -16,6 +16,7 @@ Case.exceptionMessage.cannotDeleteCurrentCase=Cannot delete current case, it mus Case.exceptionMessage.cannotGetLockToDeleteCase=Cannot delete case because it is open for another user or host. Case.exceptionMessage.cannotLocateMainWindow=Cannot locate main application window Case.exceptionMessage.cannotOpenMultiUserCaseNoSettings=Multi-user settings are missing (see Tools, Options, Multi-user tab), cannot open a multi-user case. +Case.exceptionMessage.contentProviderCouldNotBeFound=Content provider was specified for the case but could not be loaded. # {0} - exception message Case.exceptionMessage.couldNotCreatCollaborationMonitor=Failed to create collaboration monitor:\n{0}. # {0} - exception message @@ -252,8 +253,8 @@ Case.open.msgDlg.updated.msg=Updated case database schema.\nA backup copy of the Case.open.msgDlg.updated.title=Case Database Schema Update Case.checkImgExist.confDlg.doesntExist.msg=One of the images associated with \n\ this case are missing. Would you like to search for them now?\n\ -Previously, the image was located at:\n\ -{0}\n\ +Previously, the image with host, {0}, was located at:\n\ +{1}\n\ Please note that you will still be able to browse directories and generate reports\n\ if you choose No, but you will not be able to view file content or run the ingest process. Case.checkImgExist.confDlg.doesntExist.title=Missing Image diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ar.properties new file mode 100644 index 0000000000..0d441e9d44 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ar.properties @@ -0,0 +1,483 @@ +AddImageWizardIngestConfigPanel.name.text=Configurar Ingesta +AddImageWizardSelectDspVisual.multiUserWarning.text=Este tipo de Procesador de Fuente de Datos no esta disponible en modo multiusuario +AddImageWizardSelectHostPanel_title=Seleccionar Host para agregar la Fuente de Datos a +AddImageWizardSelectHostVisual_getValidationMessage_noHostSelected=Por favor, seleccione un host existente. +AddImageWizardSelectHostVisual_title=Seleccionar Host +# {0} - exception message +Case.closeException.couldNotCloseCase=Error al cerrar el caso: {0} +Case.creationException.couldNotAcquireResourcesLock=No se pudo obtener el bloqueo de los recursos del caso +Case.deleteCaseConfirmationDialog.message=¿Esta seguro de que desea cerrar y eliminar el caso actual? +Case.deleteCaseConfirmationDialog.title=¿Eliminar el caso actual? +# {0} - exception message +Case.deleteCaseFailureMessageBox.message=Error al eliminar el caso: {0} +Case.deleteCaseFailureMessageBox.title=No se pudo eliminar el caso +Case.exceptionMessage.cancelled=Cancelado. +Case.exceptionMessage.cannotDeleteCurrentCase=No se puede eliminar el caso actual, primero debe cerrarse. +Case.exceptionMessage.cannotGetLockToDeleteCase=No se puede eliminar el caso porque esta abierto para otro usuario o host. +Case.exceptionMessage.cannotLocateMainWindow=No se puede localizar la ventana principal de la aplicacion +Case.exceptionMessage.cannotOpenMultiUserCaseNoSettings=Faltan las configuraciones de multiusuario (ver Herramientas, Opciones, pestania de multiusuario), no se puede abrir un caso de multiusuario. +# {0} - exception message +Case.exceptionMessage.couldNotCreatCollaborationMonitor=Error al crear el monitor de colaboracion:\n{0}. +# {0} - exception message +Case.exceptionMessage.couldNotCreateCaseDatabase=Error al crear la base de datos del caso:\n{0}. +# {0} - exception message +Case.exceptionMessage.couldNotCreateCaseNodeData=Error al crear los datos del nodo del servicio de coordinacion:\n{0}. +# {0} - exception message +Case.exceptionMessage.couldNotGetDbServerConnectionInfo=Error al obtener informacion de conexion del servidor de la base de datos del caso:\n{0}. +# {0} - exception message +Case.exceptionMessage.couldNotOpenCaseDatabase=Error al abrir la base de datos del caso:\n{0}. +# {0} - exception message +Case.exceptionMessage.couldNotOpenRemoteEventChannel=Error al abrir el canal de eventos remotos:\n{0}. +# {0} - exception message +Case.exceptionMessage.couldNotSaveCaseMetadata=Error al guardar los metadatos del caso:\n{0}. +# {0} - exception message +Case.exceptionMessage.couldNotSaveDbNameToMetadataFile=Error al guardar el nombre de la base de datos del caso en el archivo de metadatos del caso:\n{0}. +# {0} - exception message +Case.exceptionMessage.couldNotUpdateCaseNodeData=Error al actualizar los datos del nodo del servicio de coordinacion:\n{0}. +Case.exceptionMessage.dataSourceNotFound=No se encontro la fuente de datos. +# {0} - case display name +Case.exceptionMessage.deletionInterrupted=Se cancelo la eliminacion del caso {0}. +Case.exceptionMessage.emptyCaseDir=Debe especificar una ruta de directorio para el caso. +Case.exceptionMessage.emptyCaseName=Debe especificar un nombre de caso. +Case.exceptionMessage.errorDeletingDataSourceFromCaseDb=Ocurrio un error al eliminar la fuente de datos de la base de datos del caso. +Case.exceptionMessage.errorDeletingDataSourceFromTextIndex=Ocurrio un error al eliminar la fuente de datos del indice de texto. +Case.exceptionMessage.errorsDeletingCase=Ocurrieron errores al eliminar el caso. Consulte el registro de la aplicacion para mas detalles. +# {0} - exception message +Case.exceptionMessage.execExceptionWrapperMessage={0} +# {0} - exception message +Case.exceptionMessage.failedToConnectToCoordSvc=No se pudo conectar al servicio de coordinacion:\n{0}. +# {0} - exception message +Case.exceptionMessage.failedToFetchCoordSvcNodeData=No se pudo obtener los datos del nodo del servicio de coordinacion:\n{0}. +# {0} - exception message +Case.exceptionMessage.failedToLockCaseForDeletion=No se pudo bloquear exclusivamente el caso para su eliminacion:\n{0}. +# {0} - exception message +Case.exceptionMessage.failedToReadMetadata=No se pudo leer los metadatos del caso:\n{0}. +Case.exceptionMessage.metadataUpdateError=No se pudo actualizar los metadatos del caso +# {0} - exception message +Case.exceptionMessage.unsupportedSchemaVersionMessage=Version del esquema de la base de datos del caso no soportada:\n{0}. +Case.lockingException.couldNotAcquireExclusiveLock=No se pudo obtener un bloqueo exclusivo en el caso. +Case.lockingException.couldNotAcquireSharedLock=No se pudo obtener un bloqueo compartido en el caso. +Case.open.exception.multiUserCaseNotEnabled=No se puede abrir un caso multiusuario si los casos multiusuario no estan habilitados. Consulte Herramientas, Opciones, Multiusuario. +# {0} - image +Case.openFileSystems.openingImage=Abriendo todos los sistemas de archivos para la imagen: {0}... +# {0} - case +Case.openFileSystems.retrievingImages=Recuperando imagenes para el caso: {0}... +Case.progressIndicatorCancelButton.label=Cancelar +Case.progressIndicatorTitle.closingCase=Cerrando caso +Case.progressIndicatorTitle.creatingCase=Creando caso +Case.progressIndicatorTitle.deletingCase=Eliminando caso +Case.progressIndicatorTitle.deletingDataSource=Eliminando fuente de datos +Case.progressIndicatorTitle.openingCase=Abriendo caso +Case.progressMessage.cancelling=Cancelando... +Case.progressMessage.clearingTempDirectory=Limpiando el directorio temporal del caso... +Case.progressMessage.closingApplicationServiceResources=Cerrando recursos de servicio especificos del caso... +Case.progressMessage.closingCaseDatabase=Cerrando la base de datos del caso... +Case.progressMessage.connectingToCoordSvc=Conectando al servicio de coordinacion... +Case.progressMessage.creatingCaseDatabase=Creando la base de datos del caso... +Case.progressMessage.creatingCaseDirectory=Creando directorio de caso... +Case.progressMessage.creatingCaseNodeData=Creando datos del nodo de servicio de coordinacion... +Case.progressMessage.deletingCaseDatabase=Eliminando base de datos de caso... +Case.progressMessage.deletingCaseDirCoordSvcNode=Eliminando directorio de caso, nodo de servicio de coordinacion... +Case.progressMessage.deletingCaseDirectory=Eliminando directorio de caso... +Case.progressMessage.deletingDataSource=Eliminando la fuente de datos del caso... +Case.progressMessage.deletingResourcesCoordSvcNode=Eliminando recursos del caso, nodo de servicio de coordinacion... +Case.progressMessage.deletingTextIndex=Eliminando indice de texto... +Case.progressMessage.fetchingCoordSvcNodeData=Obteniendo datos del nodo de servicio de coordinacion para el caso... +Case.progressMessage.openingApplicationServiceResources=Abriendo recursos de caso del servicio de aplicaciones... +Case.progressMessage.openingCaseDatabase=Abriendo base de datos del caso... +Case.progressMessage.openingCaseLevelServices=Abriendo servicios a nivel de caso... +Case.progressMessage.preparing=Preparando... +Case.progressMessage.removingCaseFromRecentCases=Eliminando caso del menu de Casos Recientes... +Case.progressMessage.savingCaseMetadata=Guardando metadatos del caso en archivo... +Case.progressMessage.settingUpNetworkCommunications=Configurando comunicaciones de red... +Case.progressMessage.shuttingDownNetworkCommunications=Cerrando comunicaciones de red... +Case.progressMessage.switchingLogDirectory=Cambiando directorio de registro... +Case.progressMessage.updatingCaseNodeData=Actualizando datos del nodo de servicio de coordinacion... +# {0} - serviceName +Case.serviceCloseResourcesProgressIndicator.title={0} Cerrando recursos del caso +# {0} - service name +Case.serviceOpenCaseResourcesProgressIndicator.cancellingMessage=Cancelando apertura de recursos del casoy {0}... +# {0} - service name +Case.serviceOpenCaseResourcesProgressIndicator.title={0} Abriendo recursos del caso +# {0} - service name +Case.servicesException.notificationTitle={0} Error +# {0} - service name +# {1} - exception message +Case.servicesException.serviceResourcesCloseError=No se pudieron cerrar los recursos del caso para el servicio {0}: {1} +Case_caseType_multiUser=Caso multiusuario +Case_caseType_singleUser=Caso de usuario unico +CaseDetailsPanel.casePanel.border.title=Caso +CaseDetailsPanel.examinerLabel.text=Nombre: +CaseDetailsPanel.examinerPanel.border.title=Examinador +CaseDetailsPanel.lbCaseUUIDLabel.text=Identificador del caso: +CaseDetailsPanel.lbExaminerEmailLabel.text=Correo electronico: +CaseDetailsPanel.lbExaminerPhoneLabel.text=Telefono: +CaseDetailsPanel.lbNotesLabel.text=Notas: +CaseDetailsPanel.lbOrganizationNameLabel.text=Nombre: +CaseDetailsPanel.lbPointOfContactEmailLabel.text=Correo electronico: +CaseDetailsPanel.lbPointOfContactNameLabel.text=Punto de contacto: +CaseDetailsPanel.lbPointOfContactPhoneLabel.text=Telefono: +CaseDetailsPanel.pnOrganization.border.title=Organizacion +CaseInformationPanel.caseDetails.header=Detalles +CaseInformationPanel.editDetailsButton.text=Editar detalles +CaseInformationPanel.editDetailsDialog.title=Editar detalles del caso +CaseOpenAction.msgDlg.cantOpenCase.title=Error al abrir el caso +CTL_AddImage=Agregar fuente de datos +CTL_AddImageButton=Agregar fuente de datos +CTL_CaseCloseAct=Cerrar caso +CTL_CaseNewAction=Nuevo caso +CTL_CaseDetailsAction=Detalles del caso +CTL_CaseDeleteAction=Eliminar caso +CTL_CaseDeleteAction=Eliminar caso +CTL_CaseOpenAction=Abrir caso +CTL_UnpackagePortableCaseAction=Desempacar y abrir caso portatil +DeleteDataSourceAction.confirmationDialog.message=¿Estas seguro de que deseas quitar la fuente de datos seleccionada del caso?\nTen en cuenta que el caso se cerrara y volvera a abrir durante la eliminacion.. +# {0} - exception message +DeleteDataSourceAction.exceptionMessage.couldNotReopenCase=No se pudo volver a abrir el caso:\n{0}\nPor favor, revisa el registro de la aplicacion para mas detalles.. +# {0} - exception message +DeleteDataSourceAction.exceptionMessage.dataSourceDeletionError=Ocurrio un error al eliminar la fuente de datos:\n{0}\nPor favor, revisa el registro de la aplicacion para mas detalles.. +DeleteDataSourceAction.ingestRunningWarningDialog.message=No se pueden eliminar fuentes de datos de un caso cuando la ingestion esta en ejecucion.. +DeleteDataSourceAction.name.text=Eliminar fuente de datos +EditOptionalCasePropertiesPanel.cancelButton.text=Cancelar +EditOptionalCasePropertiesPanel.saveButton.text=Guardar +GeneralFilter.encaseImageDesc.text=Imagenes de Encase (*.e01) +GeneralFilter.executableDesc.text=Ejecutables (*.exe) +GeneralFilter.graphicImageDesc.text=Imagenes (*.png, *.jpg, *.jpeg, *.gif, *.bmp) +GeneralFilter.rawImageDesc.text=Imagenes en bruto (*.img, *.dd, *.001, *.aa, *.raw, *.bin) +GeneralFilter.virtualMachineImageDesc.text=Maquinas virtuales (*.vmdk, *.vhd) +ImageFilePanel.000.confirmationMessage=TEl archivo seleccionado tiene extension .001, pero hay un archivo .000 en la secuencia de imagenes en bruto.\n¿Deberia usarse el archivo .000 como inicio en lugar del archivo .001 seleccionado?\n +ImageFilePanel.moduleErr=Error de modulo +ImageFilePanel.moduleErr.msg=Un modulo causo un error al escuchar las actualizaciones del panel de archivos de imagen. Revisa el registro para determinar que modulo. Algunos datos podrian estar incompletos..\n +ImageFilePanel.validatePanel.dataSourceOnCDriveError=Advertencia: La ruta de la fuente de datos para varios usuarios esta en la unidad "C:" +ImageFilePanel.validatePanel.invalidMD5=Hash MD5 invalido +ImageFilePanel.validatePanel.invalidSHA1=Hash SHA1 invalido +ImageFilePanel.validatePanel.invalidSHA256=Hash SHA256 invalido +IngestJobInfoPanel.IngestJobTableModel.EndTime.header=Hora de finalizacion +IngestJobInfoPanel.IngestJobTableModel.IngestStatus.header=Estado de ingestion +IngestJobInfoPanel.IngestJobTableModel.StartTime.header=Hora de inicio +IngestJobInfoPanel.IngestModuleTableModel.ModuleName.header=Nombre del modulo +IngestJobInfoPanel.IngestModuleTableModel.ModuleVersion.header=Version del modulo +IngestJobInfoPanel.loadIngestJob.error.text=Error al cargar trabajos de ingestion. +IngestJobInfoPanel.loadIngestJob.error.title=Fallo en la carga +LocalDiskPanel.errorMessage.noOpenCaseBody=Panel de Disco Local no pudo obtener el caso abierto. +LocalDiskPanel.errorMessage.noOpenCaseTitle=No hay caso abierto disponible +LocalDiskPanel.imageWriterError.directoryNotExist=Error - directorio no existe +LocalDiskPanel.imageWriterError.emptyPath=Error - ingresar ruta para VHD +LocalDiskPanel.imageWriterError.fileExists=Error - ruta de VHD ya existe +LocalDiskPanel.imageWriterError.isDirectory=Error - ruta de VHD es un directorio +LocalDiskPanel.localDiskMessage.unspecified=No especificado +LocalDiskPanel.moduleErrorMessage.body=Un modulo causo un error al escuchar actualizaciones del Panel de Disco Local. Consulte el registro para determinar que modulo. Algunos datos podrian estar incompletos. +LocalDiskPanel.moduleErrorMessage.title=Error del modulo +LocalDiskSelectionDialog.columnName.diskName=Nombre del disco +LocalDiskSelectionDialog.columnName.diskSize=Tamanio del disco +LocalDiskSelectionDialog.errorMessage.disksNotDetected=No se detectaron discos. En algunos sistemas, se requieren privilegios de administrador (o "Ejecutar como administrador"). +LocalDiskSelectionDialog.errorMessage.drivesNotDetected=No se detectaron unidades locales. La deteccion automatica no es compatible en este sistema operativo o se requieren privilegios de administrador +LocalDiskSelectionDialog.errorMessage.someDisksNotDetected=Algunos discos no fueron detectados. En algunos sistemas, se requieren privilegios de administrador (o "Ejecutar como administrador"). +LocalDiskSelectionDialog.moduleErrorMessage.body=Un modulo causo un error al escuchar actualizaciones del Panel de Disco Local. Consulte el registro para determinar que modulo. Algunos datos podrian estar incompletos. +LocalDiskSelectionDialog.moduleErrorMessage.title=Error del modulo +LocalDiskSelectionDialog.tableMessage.loading=Cargando discos locales... +LocalDiskSelectionDialog.tableMessage.noDrives=No hay unidades accesibles +LocalFilesDSProcessor.logicalEvidenceFilter.desc=Archivos de evidencia logica (L01) +LocalFilesPanel.pathValidation.dataSourceOnCDriveError=Advertencia: La ruta al origen de datos multiusuario esta en la unidad "C:" +LocalFilesPanel.pathValidation.getOpenCase=WARNING: Excepcion al obtener el caso abierto. +LogicalEvidenceFilePanel.moduleErr.msg=Un modulo causo un error al escuchar las actualizaciones del panel de archivos de evidencia logica. Consulte el registro para determinar que modulo. Algunos datos podrian estar incompletos.. +LogicalEvidenceFilePanel.moduleErr.name=Error del modulo +LogicalEvidenceFilePanel.pathValidation.dataSourceOnCDriveError=Advertencia: La ruta al origen de datos multiusuario esta en la unidad "C:" +LogicalEvidenceFilePanel.pathValidation.getOpenCase.Error=Advertencia: Excepcion al obtener el caso abierto. +LogicalEvidenceFilePanel.validatePanel.nonL01Error.text=Solo se admiten archivos con la extension de archivo .l01 aqui. +LogicalFilesDspPanel.subTypeComboBox.l01FileOption.text=Archivo de evidencia logica (L01) +LogicalFilesDspPanel.subTypeComboBox.localFilesOption.text=Archivos y carpetas locales +OpenIDE-Module-Name=Caso +NewCaseVisualPanel1.caseNameLabel.text_1=Nombre del caso: +NewCaseVisualPanel1.caseDirLabel.text=Directorio base: +NewCaseVisualPanel1.caseDirBrowseButton.text=Examinar +NewCaseVisualPanel1.caseNameTextField.text_1= +NewCaseVisualPanel1.caseParentDirTextField.text= +NewCaseVisualPanel1.caseDirTextField.text_1= +CueBannerPanel.autopsyLogo.text= +CueBannerPanel.closeButton.text=Close +# {0} - caseErrorMessage +OpenMultiUserCaseAction.caseOpeningErrorErrorMsg=Error al abrir el caso: {0} +OpenMultiUserCaseAction.menuItemText=Abrir caso +OpenMultiUserCaseDialog.title=Abrir caso multiusuario +OpenRecentCasePanel.cancelButton.text=Cancelar +OpenRecentCasePanel.jLabel1.text=Casos recientes +AddImageErrorsDialog.title=Agregar registro de imagenes +AddImageErrorsDialog.copyButton.toolTipText=Copiar errores al portapapeles +AddImageErrorsDialog.copyButton.text=Copiar +AddImageErrorsDialog.closeButton.toolTipText=Cerrar esta ventana +AddImageErrorsDialog.closeButton.text=Cerrar +OpenRecentCasePanel.openButton.text=Abrir +ImageFilePanel.pathLabel.text=Ruta: +ImageFilePanel.browseButton.text=Examinar +ImageFilePanel.pathTextField.text= +MissingImageDialog.selectButton.text=Seleccionar imagen +MissingImageDialog.titleLabel.text=Buscar imagen faltante +MissingImageDialog.cancelButton.text=Cancelar +AddImageWizardAddingProgressVisual.statusLabel.text=Fuente de datos ha sido agregada a la base de datos local. Archivos estan siendo analizados.. +AddImageWizardAddingProgressVisual.progressLabel.text= +AddImageWizardAddingProgressVisual.viewLogButton.text=Ver Registro +AddImageWizardAddingProgressVisual.subTitle1Label.text=Procesando fuente de datos y agregandola a una base de datos local. El analisis de archivos iniciara cuando esto termine.. +ImageFilePanel.timeZoneLabel.text=Zona horaria: +ImageFilePanel.noFatOrphansCheckbox.text=Ignorar archivos huerfanos en sistemas de archivos FAT +ImageFilePanel.noFatOrphansCheckbox.toolTipText= +ImageFilePanel.descLabel.text=(resultados mas rapidos, aunque algunos datos no seran buscados) +LocalDiskPanel.timeZoneLabel.text=Zona horaria: +LocalDiskPanel.noFatOrphansCheckbox.toolTipText= +LocalDiskPanel.noFatOrphansCheckbox.text=Ignorar archivos huerfanos en sistemas de archivos FAT +LocalDiskPanel.descLabel.text=(resultados mas rapidos, aunque algunos datos no seran buscados) +MissingImageDialog.browseButton.text=Navegar +MissingImageDialog.pathNameTextField.text= +AddImageWizardAddingProgressVisual.progressTextArea.border.title=Estado +AddImageAction.wizard.title=Agregar Fuente de Datos +AddImageAction.ingestConfig.ongoingIngest.msg=La ingestion esta en curso en otra fuente de datos. Agregar una nueva fuente ahora podria reducir la velocidad de la ingestion actual..
¿Desea continuar y aniadir una nueva fuente de datos ahora? +AddImageAction.ingestConfig.ongoingIngest.title=Ingestion en progreso +AddImageTask.run.progress.adding=Agregando: {0} +AddImageTask.interrupt.exception.msg=Error deteniendo el proceso de agregar imagen. +AddImageWizardAddingProgressPanel.isValid.focusNext=Siguiente > +AddImageWizardAddingProgressPanel.stateStarted.progressBarText=*Este proceso puede llevar algo de tiempo para fuentes de datos grandes. +AddImageWizardAddingProgressVisual.addingDsComplete.text=Agregando Fuente de Datos - Completo +AddImageWizardAddingProgressVisual.getName.text=Agregar Fuente de Datos +AddImageWizardAddingProgressVisual.showErrors.critText=*Error al agregar la fuente de datos (se encontraron errores criticos). Haz clic abajo para ver el registro. +AddImageWizardAddingProgressVisual.showErrors.nonCritText=*Fuente de Datos agregada (se encontraron errores no criticos). Haz clic abajo para ver el registro. +AddImageWizardChooseDataSourcePanel.moveFocusNext=Siguiente > +AddImageWizardChooseDataSourceVisual.getName.text=Seleccionar Fuente de Datos +AddImageWizardIngestConfigPanel.dsProcDone.noErrs.text=*Fuente de Datos agregada. +AddImageWizardIngestConfigPanel.dsProcDone.errs.text=*Se encontraron errores al agregar la Fuente de Datos. +AddImageWizardIngestConfigVisual.getName.text=Configurar Ingesta +AddImageWizardIterator.stepXofN=Etapa {0} de {1} +AddLocalFilesTask.localFileAdd.progress.text=Agregando: {0}/{1} +Case.getCurCase.exception.noneOpen=No se puede obtener el caso actual; ¡no hay caso abierto! +Case.open.msgDlg.updated.msg=Esquema de la base de datos del caso actualizado.\nSe ha realizado una copia de seguridad de la base de datos con la siguiente ruta:\n {0} +Case.open.msgDlg.updated.title=Actualizacion del Esquema de la Base de Datos del Caso +Case.checkImgExist.confDlg.doesntExist.msg=Falta una de las imagenes asociados con \neste caso. ¿Desea buscarlas ahora?\nAnteriormente la imagen estaba ubicada en:\n{0}\nTenga en cuenta que aun podra navegar por los directorios y generar informes\nsi elige NO, pero no podra ver el contenido de archivos o ejecutar el proceso de ingestion. +Case.checkImgExist.confDlg.doesntExist.title=Imagen faltante +Case.addImg.exception.msg=Error al agregar imagen al caso +Case.updateCaseName.exception.msg=Error mientras se intenta actualizar el nombre del caso. +Case.updateExaminer.exception.msg=Error mientras se intenta actualizar el examinador. +Case.updateCaseNum.exception.msg=Error mientras se intenta actualizar el numero del caso. +Case.exception.errGetRootObj=Error al obtener objetos raiz. +Case.createCaseDir.exception.existNotDir=No se puede crear el directorio del caso, ya existe y no es un directorio: {0} +Case.createCaseDir.exception.existCantRW=No se puede crear el directorio del caso, ya existe y no se puede leer/escribir: {0} +Case.createCaseDir.exception.cantCreate=No se puede crear el directorio del caso o ya existe: {0} +Case.createCaseDir.exception.cantCreateCaseDir=No se pudo crear el directorio del caso: {0} +Case.createCaseDir.exception.cantCreateModDir=No se pudo crear el directorio de salida de modulos: {0} +Case.createCaseDir.exception.cantCreateReportsDir=No se pudo crear el directorio de salida de informes: {0} +Case.CollaborationSetup.FailNotify.ErrMsg=Error al conectar con otros nodos que puedan estar colaborando en este caso.. +Case.CollaborationSetup.FailNotify.Title=Fallo de conexion. +Case.GetCaseTypeGivenPath.Failure=No se puede obtener el tipo de caso. +Case.metaDataFileCorrupt.exception.msg=El archivo de metadatos del caso (.aut) esta corrupto.. +Case.deleteReports.deleteFromDiskException.log.msg=No se puede eliminar el informe del disco.. +Case.deleteReports.deleteFromDiskException.msg=No se puede eliminar el informe {0} del disco. Puedes eliminarlo manualmente desde {1} +CaseDeleteAction.closeConfMsg.text=¿Estas seguro/a de que quieres cerrar y eliminar este caso? \nNombre del caso: {0}\nDirectorio del Caso: {1} +CaseDeleteAction.closeConfMsg.title=Advertencia: Cerrando el Caso Actual +CaseDeleteAction.msgDlg.fileInUse.msg=La accion de eliminar no puede completarse completamente porque la carpeta o archivo en ella esta abierto por otro programa.\n\nCierre la carpeta y el archivo e intentelo de nuevo o puede eliminar el caso manualmente. +CaseDeleteAction.msgDlg.fileInUse.title=Error: Carpeta En Uso +CaseDeleteAction.msgDlg.caseDelete.msg=Caso {0} ha sido eliminado. +CaseOpenAction.autFilter.title={0} Archivo de Caso ( {1}) +CaseCreateAction.msgDlg.cantCreateCase.msg=No se puede crear el caso +IntervalErrorReport.NewIssues=nuevo problema(s) +IntervalErrorReport.TotalIssues=total de problema(s) +IntervalErrorReport.ErrorText=Error de Conexion de Base de Datos +CaseDetailsAction.window.title=Detalles del Caso +CueBannerPanel.title.text=Abrir Caso Reciente +ImageDSProcessor.dsType.text=Archivo de Imagen de Disco o VM +ImageDSProcessor.allDesc.text=Todos los Tipos Soportados +LocalDiskDSProcessor.dsType.text=Disco Local +LocalFilesDSProcessor.dsType=Archivos Logicos +LocalFilesDSProcessor.toString.text=Archivos Logicos +LocalFilesPanel.contentType.text=LOCAL +LocalFilesPanel.moduleErr=Error del Modulo +LocalFilesPanel.moduleErr.msg=Un modulo causo un error al escuchar las actualizaciones del Panel de Archivos Locales. Verificar el registro para determinar que modulo. Algunos datos podrian estar incompletos. +MissingImageDialog.display.title=Buscar Imagen Faltante +MissingImageDialog.confDlg.noFileSel.msg=Ningun archivo de imagen ha sido seleccionado. ¿Estas seguro/a?\n¿quiere salir sin encontrar la imagen? +MissingImageDialog.confDlg.noFileSel.title=Imagen faltante +MissingImageDialog.ErrorSettingImage=Error al establecer la ruta de la imagen. Por favor, intenta de nuevo. +NewCaseVisualPanel1.getName.text=Informacion del Caso +NewCaseVisualPanel1.caseDirBrowse.selectButton.text=Seleccionar +NewCaseVisualPanel1.badCredentials.text=Mala configuracion multiusuario (ver Herramientas, Opciones, Multiusuario) o los servicios estan fuera de servicio. +NewCaseVisualPanel2.getName.text=Informacion Opcional +NewCaseWizardAction.newCase.windowTitle.text=Informacion del Caso Nueva +NewCaseWizardAction.getName.text=Asistente para Nuevo Caso +NewCaseWizardAction.databaseProblem1.text=No se puede abrir la base de datos. Cancelando la creacion del caso. +NewCaseWizardAction.databaseProblem2.text=Error +NewCaseWizardPanel1.validate.errMsg.invalidSymbols=El Nombre del Caso no puede contener ninguno de los siguientes simbolos: \\ / : * ? " < > | +NewCaseWizardPanel1.validate.errMsg.dirExists=Directorio del Caso. ''{0}'' ya existe. +NewCaseWizardPanel1.validate.confMsg.createDir.msg=El directorio base "{0}" no existe. \n\n¿Quiere crear ese directorio? +NewCaseWizardPanel1.validate.confMsg.createDir.title=Crear directorio +NewCaseWizardPanel1.validate.errMsg.cantCreateParDir.msg=Error: No se pudo crear el directorio principal del caso {0} +NewCaseWizardPanel1.validate.errMsg.prevCreateBaseDir.msg=Evitado de crear el directorio base {0} +NewCaseWizardPanel1.validate.errMsg.cantCreateDir=Error: No se pudo crear el directorio. +NewCaseWizardPanel1.validate.errMsg.invalidBaseDir.msg=ERROR: El Directorio Base que ingresaste no es valido.\nPor favor, ingrese un Directorio Base valido. +NewCaseWizardPanel1.createDir.errMsg.cantCreateDir.msg=ERROR: No se pudo crear el directorio del caso. \nIntroduzca un nombre de caso y un directorio validos. +NewCaseWizardPanel2.validate.errCreateCase.msg=Error al crear el caso +OpenRecentCasePanel.colName.caseName=Nombre del Caso +OpenRecentCasePanel.colName.path=Ruta +OptionalCasePropertiesPanel.bnNewOrganization.text=Administrar Organizaciones +OptionalCasePropertiesPanel.caseDisplayNameLabel.text=Nombre: +OptionalCasePropertiesPanel.caseNumberLabel.text=Numero: +OptionalCasePropertiesPanel.casePanel.border.title=Caso +OptionalCasePropertiesPanel.errorDialog.emptyCaseNameMessage=No se ingreso el nombre del caso. +OptionalCasePropertiesPanel.errorDialog.invalidCaseNameMessage=Los nombres de caso no pueden incluir los siguientes simbolos: \\, /, :, *, ?, ", <, >, | +OptionalCasePropertiesPanel.errorDialog.noOpenCase.errMsg=Excepcion mientras se obtiene el caso abierto. +OptionalCasePropertiesPanel.examinerLabel.text=Nombre: +OptionalCasePropertiesPanel.examinerPanel.border.title=Examinador +OptionalCasePropertiesPanel.lbExaminerEmailLabel.text=Correo electronico: +OptionalCasePropertiesPanel.lbExaminerPhoneLabel.text=Telefono: +OptionalCasePropertiesPanel.lbNotesLabel.text=Notas: +OptionalCasePropertiesPanel.lbOrganizationNameLabel.text=Analisis de la organizacion se esta realizando para: +OptionalCasePropertiesPanel.lbPointOfContactEmailLabel.text=Correo electronico: +OptionalCasePropertiesPanel.lbPointOfContactNameLabel.text=Punto de contacto +OptionalCasePropertiesPanel.lbPointOfContactPhoneLabel.text=Telefono: +OptionalCasePropertiesPanel.orgainizationPanel.border.title=Organizacion +RecentCases.exception.caseIdxOutOfRange.msg=El indice del caso reciente {0} esta fuera de rango. +RecentCases.getName.text=Borrar Casos Recientes +# {0} - case name +RecentItems.openRecentCase.msgDlg.text=El caso {0} ya no existe. +SelectDataSourceProcessorPanel.name.text=Seleccionar Tipo de Fuente de Datos +StartupWindow.title.text=Bienvenido +# {0} - autFilePath +StartupWindowProvider.openCase.cantOpen=No se puede abrir el caso previamente abierto con el archivo de metadatos: {0} +# {0} - reOpenFilePath +StartupWindowProvider.openCase.deleteOpenFailure=No se puede abrir ni eliminar el archivo que contiene la ruta {0} al caso previamente abierto. El caso anterior no se abrira. +# {0} - autFilePath +StartupWindowProvider.openCase.noFile=No se puede abrir el caso previamente abierto porque no se encontro el archivo de metadatos: {0} +UnpackagePortableCaseDialog.title.text=Desempaquetar Caso Portatil +UnpackagePortableCaseDialog.UnpackagePortableCaseDialog.extensions=Estuche portatil comprimido (.zip, .zip.001) +UnpackagePortableCaseDialog.validatePaths.badExtension=La extension del archivo debe ser .zip o .zip.001 +# {0} - case folder +UnpackagePortableCaseDialog.validatePaths.caseFolderExists=La carpeta {0} ya existe +UnpackagePortableCaseDialog.validatePaths.caseIsNotFile=La ruta seleccionada no es un archivo +UnpackagePortableCaseDialog.validatePaths.caseNotFound=El archivo no existe +UnpackagePortableCaseDialog.validatePaths.folderNotFound=La carpeta no existe +UnpackagePortableCaseDialog.validatePaths.notAFolder=La ubicacion de salida no es un directorio +UnpackagePortableCaseProgressDialog.propertyChange.success=Estuche descomprimido con exito +UnpackagePortableCaseProgressDialog.title.text=Progreso de descompresion del estuche portatil +UnpackageWorker.doInBackground.canceled=Descompresion cancelada por el usuario +UnpackageWorker.doInBackground.errorCompressingCase=Error al descomprimir el estuche +UnpackageWorker.doInBackground.errorFinding7zip=No se pudo localizar el ejecutable 7-Zip +UnpackageWorker.doInBackground.previouslySeenCase=El estuche ha sido abierto previamente. ¿Abrirlo de nuevo? +UpdateRecentCases.menuItem.clearRecentCases.text=Borrar casos recientes +UpdateRecentCases.menuItem.empty=-Vacio- +AddImageWizardIngestConfigPanel.CANCEL_BUTTON.text=Cancelar +NewCaseVisualPanel1.CaseFolderOnCDriveError.text=Advertencia: La ruta a la carpeta del caso para varios usuarios esta en la unidad "C:" +NewCaseVisualPanel1.CaseFolderOnInternalDriveWindowsError.text=Advertencia: La ruta a la carpeta del caso esta en la unidad "C:". La carpeta del caso se crea en el sistema de destino +NewCaseVisualPanel1.CaseFolderOnInternalDriveLinuxError.text=Advertencia: La ruta a la carpeta del caso esta en el sistema de destino. Crear carpeta del caso en la unidad montada. +NewCaseVisualPanel1.uncPath.error=Error: Las rutas UNC no estan permitidas para casos de usuario unico. +CollaborationMonitor.addingDataSourceStatus.msg={0} Agregando fuente de datos +CollaborationMonitor.analyzingDataSourceStatus.msg={0} analizando {1} +MissingImageDialog.lbWarning.text= +MissingImageDialog.lbWarning.toolTipText= +NewCaseVisualPanel1.caseParentDirWarningLabel.text= +NewCaseVisualPanel1.multiUserCaseRadioButton.text=Multi-Usuario\t\t +NewCaseVisualPanel1.singleUserCaseRadioButton.text=Usuario unico +NewCaseVisualPanel1.caseTypeLabel.text=Tipo de Caso: +SingleUserCaseConverter.BadDatabaseFileName=¡Archivo de base de datos no existe! +SingleUserCaseConverter.AlreadyMultiUser=¡El caso ya es multiusuario! +SingleUserCaseConverter.NonUniqueDatabaseName=Nombre de base de datos no es unico. +SingleUserCaseConverter.UnableToCopySourceImages=Incapaz de copiar imagenes de origen +SingleUserCaseConverter.CanNotOpenDatabase=Incapaz de abrir base de datos +CloseCaseWhileIngesting.Warning=La ingestion esta en ejecucion. ¿Estas seguro(a) de que deseas cerrar el caso? +CloseCaseWhileIngesting.Warning.title=Advertencia: Esto cerrara el caso actual +CasePropertiesForm.imagesTable.columnModel.title1=Eliminar +CasePropertiesForm.imagesTable.columnModel.title0=Ruta +IngestJobInfoPanel.jLabel1.text=Modulos de Ingestion +IngestJobInfoPanel.jLabel2.text=Trabajos de Ingestion +CaseInformationPanel.closeButton.text=Cerrar +LocalDiskPanel.copyImageCheckbox.text=Crear una imagen VHD de la unidad mientras esta siendo analizada. +LocalDiskPanel.jLabel1.text=Nota que al menos un modulo de ingestion debe ejecutarse para crear una copia completa +LocalDiskPanel.pathTextField.text= +LocalDiskPanel.browseButton.text=Examinar +LocalDiskPanel.changeDatabasePathCheckbox.text=Actualizar el caso para usar el archivo VHD al completar +CueBannerPanel.openRecentCaseButton.text= +CueBannerPanel.openRecentCaseLabel.text=Abrir caso reciente +ReviewModeCasePanel.cannotOpenCase=No se puede abrir el caso +ReviewModeCasePanel.casePathNotFound=Ruta del caso no encontrada +ReviewModeCasePanel.caseIsLocked=El caso de un solo usuario esta bloqueado. +ReviewModeCasePanel.CaseHeaderText=Caso +ReviewModeCasePanel.CreatedTimeHeaderText=Tiempo de creacion +ReviewModeCasePanel.StatusIconHeaderText=Estado +ReviewModeCasePanel.OutputFolderHeaderText=Carpeta de salida +ReviewModeCasePanel.LastAccessedTimeHeaderText=Tiempo de ultimo acceso +ReviewModeCasePanel.MetadataFileHeaderText=Archivo de metadatos +CueBannerPanel.newCaseLabel.text=Nuevo caso +CueBannerPanel.openCaseButton.text= +CueBannerPanel.openCaseLabel.text=Abrir caso +CueBannerPanel.newCaseButton.text= +ImageFilePanel.sectorSizeLabel.text=Tamanio de sector: +LocalDiskPanel.sectorSizeLabel.text=Tamanio de Sector: +LocalFilesPanel.displayNameLabel.text=Nombre de visualizacion del conjunto de archivos logicos: Predeterminado +LocalFilesPanel.errorLabel.text=Etiqueta de error +LocalFilesPanel.selectedPaths.toolTipText= +LocalFilesPanel.clearButton.toolTipText=Limpia las rutas de archivo locales seleccionadas actualmente +LocalFilesPanel.clearButton.text=Limpiar +LocalFilesPanel.selectButton.actionCommand=Agregar +LocalFilesPanel.selectButton.toolTipText=Agregar archivos y carpetas locales como archivos logicos +LocalFilesPanel.selectButton.text=Agregar +LocalFilesPanel.localFileChooser.dialogTitle=Seleccionar Archivos o Carpetas Locales +LocalFilesPanel.localFileChooser.approveButtonToolTipText= +LocalFilesPanel.localFileChooser.approveButtonText=Seleccionar +LogicalEvidenceFilePanel.selectButton.actionCommand=Agregar +LogicalEvidenceFilePanel.selectButton.toolTipText=Agregar archivos y carpetas locales como archivos logicos +LogicalEvidenceFilePanel.selectButton.text=Seleccionar +LogicalEvidenceFilePanel.errorLabel.text=Etiqueta de Error +LogicalEvidenceFilePanel.logicalEvidenceFileChooser.dialogTitle=Seleccionar Archivos o Carpetas Locales +LogicalEvidenceFilePanel.logicalEvidenceFileChooser.approveButtonToolTipText= +LogicalEvidenceFilePanel.logicalEvidenceFileChooser.approveButtonText=Seleccionar +LogicalEvidenceFilePanel.logicalEvidencePathField.text= +LocalFilesPanel.changeNameButton.text=Cambiar +LocalDiskPanel.selectDiskButton.text=Seleccionar Disco +LocalDiskSelectionDialog.refreshLocalDisksButton.text=Actualizar Discos Locales +LocalDiskSelectionDialog.errorLabel.text=Etiqueta de Error +LocalDiskSelectionDialog.selectLocalDiskLabel.text=Seleccionar un disco local: +LocalDiskSelectionDialog.cancelButton.text=Cancelar +LocalDiskSelectionDialog.okButton.text=Aceptar +LocalDiskPanel.localDiskLabel.text=Disco Local: +LocalDiskPanel.imageWriterErrorLabel.text=Etiqueta de Error +LocalDiskSelectionDialog.title=Seleccionar Disco Local +ImageFilePanel.md5HashLabel.text=MD5: +ImageFilePanel.sha1HashLabel.text=SHA-1: +ImageFilePanel.sha256HashLabel.text=SHA-256: +ImageFilePanel.sha256HashTextField.text= +ImageFilePanel.sha1HashTextField.text= +ImageFilePanel.md5HashTextField.text= +ImageFilePanel.errorLabel.text=Etiqueta de Error +ImageFilePanel.hashValuesNoteLabel.text=NOTA: Estos valores no seran validados cuando se agregue la fuente de datos.. +ImageFilePanel.hashValuesLabel.text=Valores Hash (opcional): +CaseDetailsPanel.crDateLabel.text=Fecha de Creacion: +CaseDetailsPanel.caseDirLabel.text=Directorio del Caso: +CaseDetailsPanel.caseNumberLabel.text=Numero de Caso: +CaseDetailsPanel.lbDbName.text=Nombre de la Base de Datos: +CaseDetailsPanel.lbDbType.text=Tipo de Caso: +CaseDetailsPanel.caseNameLabel.text=Nombre del Caso: +OpenMultiUserCasePanel.searchLabel.text=Selecciona cualquier caso y comienza a escribir para buscar por nombre de caso +OpenMultiUserCasePanel.cancelButton.text=Cancelar +OpenMultiUserCasePanel.openSingleUserCaseButton.text=Abrir Caso de Usuario unico... +OpenMultiUserCasePanel.openSelectedCaseButton.text=Abrir Caso Seleccionado +OpenMultiUserCasePanel.searchLabel.text=Selecciona cualquier caso y comienza a escribir para buscar por nombre de caso +UnpackagePortableCaseDialog.desc2Label.text=Modulo de Informe de Caso Portatil. +UnpackagePortableCaseDialog.desc1Label.text=Desempaqueta un caso portatil para que pueda abrirse en Autopsy. Los casos portatiles se crean a traves de la +UnpackagePortableCaseDialog.exitButton.text=Salir +UnpackagePortableCaseDialog.unpackageButton.text=Desempaquetar +UnpackagePortableCaseDialog.caseSelectButton.text=Navegar +UnpackagePortableCaseDialog.outputSelectButton.text=Navegar +UnpackagePortableCaseDialog.caseTextField.text= +UnpackagePortableCaseDialog.outputTextField.text= +UnpackagePortableCaseDialog.caseErrorLabel.text=jLabel1 +UnpackagePortableCaseDialog.outputErrorLabel.text=jLabel1 +UnpackagePortableCaseProgressDialog.cancelButton.text=Cancelar +UnpackagePortableCaseProgressDialog.okButton.text=Aceptar +UnpackagePortableCaseProgressDialog.resultLabel.text=resultLabel +UnpackagePortableCaseDialog.extractLabel.text=Carpeta para extraer en: +UnpackagePortableCaseDialog.caseLabel.text=Caso Portatil: +NewCaseVisualPanel1.caseDataStoredLabel.text_1=Los datos del caso se almacenaran en el siguiente directorio: +SolrNotConfiguredDialog.okButton.text=Aceptar +SolrNotConfiguredDialog.title=Solr 8 Server No Configurado +SolrNotConfiguredDialog.EmptyKeywordSearchHostName=Solr 8 conexiones parametros no estan configurados. Por favor ir a Herramientas->Opciones->Multi Usuario. +SolrNotConfiguredDialog.messageLabel.text=Casos Multi-Usuario habilitados pero servidor Solr 8 no ha sido configurado.
\nNuevos casos solo pueden crearse con Solr 8. Por favor ve a Herramientas->Opciones->Multi Usuario.\n +AddImageWizardSelectHostVisual.hostDescription.text=Los hosts son usados para organizar fuentes de datos y otros datos. +AddImageWizardSelectHostVisual.useExistingHostRadio.text=Usar host existente +AddImageWizardSelectHostVisual.specifyNewHostTextField.text= +AddImageWizardSelectHostVisual.specifyNewHostRadio.text=Especificar nuevo nombre de host +AddImageWizardSelectHostVisual.generateNewRadio.text=Generar nuevo nombre de host basado en el nombre de la fuente de datos +AddImageWizardSelectHostVisual.validationMessage.text=\ diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 69dd44f219..79e91535eb 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.casemodule; +import com.basistech.df.cybertriage.autopsy.CTIntegrationMissingDialog; import org.sleuthkit.autopsy.featureaccess.FeatureAccessUtils; import com.google.common.annotations.Beta; import com.google.common.eventbus.Subscribe; @@ -178,6 +179,7 @@ public class Case { private static final String CASE_ACTION_THREAD_NAME = "%s-case-action"; private static final String CASE_RESOURCES_THREAD_NAME = "%s-manage-case-resources"; private static final String NO_NODE_ERROR_MSG_FRAGMENT = "KeeperErrorCode = NoNode"; + private static final String CT_PROVIDER_PREFIX = "CTStandardContentProvider_"; private static final Logger logger = Logger.getLogger(Case.class.getName()); private static final AutopsyEventPublisher eventPublisher = new AutopsyEventPublisher(); private static final Object caseActionSerializationLock = new Object(); @@ -193,6 +195,8 @@ public class Case { private final SleuthkitEventListener sleuthkitEventListener; private CollaborationMonitor collaborationMonitor; private Services caseServices; + // matches something like '\\.\PHYSICALDRIVE0' + private static final String PLACEHOLDER_DS_PATH_REGEX = "^\\s*\\\\\\\\\\.\\\\PHYSICALDRIVE\\d*\\s*$"; private volatile boolean hasDataSource = false; private volatile boolean hasData = false; @@ -1304,9 +1308,18 @@ public class Case { for (Map.Entry entry : imgPaths.entrySet()) { long obj_id = entry.getKey(); String path = entry.getValue(); - boolean fileExists = (new File(path).isFile() || DriveUtils.driveExists(path)); + boolean fileExists = (new File(path).exists()|| DriveUtils.driveExists(path)); if (!fileExists) { + // CT-7336: ignore relocating datasources if file provider is present and placeholder path is used. + if (newCurrentCase.getMetadata() != null + && !StringUtils.isBlank(newCurrentCase.getMetadata().getContentProviderName()) + && (path == null || path.matches(PLACEHOLDER_DS_PATH_REGEX))) { + continue; + } + try { + DataSource ds = newCurrentCase.getSleuthkitCase().getDataSource(obj_id); + String hostName = StringUtils.defaultString(ds.getHost() == null ? "" : ds.getHost().getName()); // Using invokeAndWait means that the dialog will // open on the EDT but this thread will wait for an // answer. Using invokeLater would cause this loop to @@ -1316,7 +1329,7 @@ public class Case { public void run() { int response = JOptionPane.showConfirmDialog( mainFrame, - NbBundle.getMessage(Case.class, "Case.checkImgExist.confDlg.doesntExist.msg", path), + NbBundle.getMessage(Case.class, "Case.checkImgExist.confDlg.doesntExist.msg", hostName, path), NbBundle.getMessage(Case.class, "Case.checkImgExist.confDlg.doesntExist.title"), JOptionPane.YES_NO_OPTION); if (response == JOptionPane.YES_OPTION) { @@ -1328,7 +1341,7 @@ public class Case { } }); - } catch (InterruptedException | InvocationTargetException ex) { + } catch (InterruptedException | InvocationTargetException | TskCoreException | TskDataException ex) { logger.log(Level.SEVERE, "Failed to show missing image confirmation dialog", ex); //NON-NLS } } @@ -2732,6 +2745,7 @@ public class Case { "Case.progressMessage.openingCaseDatabase=Opening case database...", "# {0} - exception message", "Case.exceptionMessage.couldNotOpenCaseDatabase=Failed to open case database:\n{0}.", "# {0} - exception message", "Case.exceptionMessage.unsupportedSchemaVersionMessage=Unsupported case database schema version:\n{0}.", + "Case.exceptionMessage.contentProviderCouldNotBeFound=Content provider was specified for the case but could not be loaded.", "Case.open.exception.multiUserCaseNotEnabled=Cannot open a multi-user case if multi-user cases are not enabled. See Tools, Options, Multi-User." }) private void openCaseDataBase(ProgressIndicator progressIndicator) throws CaseActionException { @@ -2740,14 +2754,15 @@ public class Case { String databaseName = metadata.getCaseDatabaseName(); ContentStreamProvider contentProvider = loadContentProvider(metadata.getContentProviderName()); + if (StringUtils.isNotBlank(metadata.getContentProviderName()) && contentProvider == null) { + if (metadata.getContentProviderName().trim().toUpperCase().startsWith(CT_PROVIDER_PREFIX.toUpperCase())) { + new CTIntegrationMissingDialog(WindowManager.getDefault().getMainWindow(), true).showDialog(null); + } + throw new CaseActionException(Bundle.Case_exceptionMessage_contentProviderCouldNotBeFound()); + } if (CaseType.SINGLE_USER_CASE == metadata.getCaseType()) { - // only prefix with metadata directory if databaseName is a relative path - String fullDatabasePath = (new File(databaseName).isAbsolute()) - ? databaseName - : Paths.get(metadata.getCaseDirectory(), databaseName).toString(); - - caseDb = SleuthkitCase.openCase(fullDatabasePath, contentProvider); + caseDb = SleuthkitCase.openCase(metadata.getCaseDatabasePath(), contentProvider); } else if (UserPreferences.getIsMultiUserModeEnabled()) { caseDb = SleuthkitCase.openCase(databaseName, UserPreferences.getDatabaseConnectionInfo(), metadata.getCaseDirectory(), contentProvider); } else { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseMetadata.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseMetadata.java index c9170b1e68..91566a01bb 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseMetadata.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseMetadata.java @@ -29,16 +29,8 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Locale; -import java.util.Map; -import java.util.Map.Entry; -import java.util.stream.Collectors; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -51,13 +43,10 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.Pair; -import org.openide.util.Lookup; import org.sleuthkit.autopsy.coreutils.Version; import org.sleuthkit.autopsy.coreutils.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; -import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; @@ -121,7 +110,6 @@ public final class CaseMetadata { private static final String SCHEMA_VERSION_SIX = "6.0"; private final static String CONTENT_PROVIDER_ELEMENT_NAME = "ContentProvider"; private final static String CONTENT_PROVIDER_NAME_ELEMENT_NAME = "Name"; - private final static String CONTENT_PROVIDER_ARG_DEFAULT_KEY = "DEFAULT"; /* * Unread fields, regenerated on save. @@ -136,7 +124,7 @@ public final class CaseMetadata { private String caseName; private CaseDetails caseDetails; private String caseDatabaseName; - private String caseDatabasePath; // Legacy + private String caseDatabasePath; private String textIndexName; // Legacy private String createdDate; private String createdByVersion; @@ -258,7 +246,9 @@ public final class CaseMetadata { * @return The case directory. */ public String getCaseDirectory() { - return metadataFilePath.getParent().toString(); + return StringUtils.isBlank(this.caseDatabasePath) + ? metadataFilePath.getParent().toString() + : Paths.get(this.caseDatabasePath).getParent().toString(); } /** @@ -637,6 +627,7 @@ public final class CaseMetadata { this.textIndexName = getElementTextContent(caseElement, TEXT_INDEX_ELEMENT, false); break; default: + this.caseDatabasePath = getElementTextContent(caseElement, CASE_DB_ABSOLUTE_PATH_ELEMENT_NAME, false); this.caseDatabaseName = getElementTextContent(caseElement, CASE_DB_NAME_RELATIVE_ELEMENT_NAME, true); this.textIndexName = getElementTextContent(caseElement, TEXT_INDEX_ELEMENT, false); break; @@ -650,11 +641,9 @@ public final class CaseMetadata { */ Path possibleAbsoluteCaseDbPath = Paths.get(this.caseDatabaseName); Path caseDirectoryPath = Paths.get(getCaseDirectory()); - if (possibleAbsoluteCaseDbPath.getNameCount() > 1) { + if (possibleAbsoluteCaseDbPath.toFile().isAbsolute()) { this.caseDatabasePath = this.caseDatabaseName; this.caseDatabaseName = caseDirectoryPath.relativize(possibleAbsoluteCaseDbPath).toString(); - } else { - this.caseDatabasePath = caseDirectoryPath.resolve(caseDatabaseName).toAbsolutePath().toString(); } } catch (ParserConfigurationException | SAXException | IOException ex) { @@ -719,12 +708,12 @@ public final class CaseMetadata { * @return The full path to the case database file for a single-user case. * * @throws UnsupportedOperationException If called for a multi-user case. - * @deprecated Do not use. */ - @Deprecated public String getCaseDatabasePath() throws UnsupportedOperationException { if (Case.CaseType.SINGLE_USER_CASE == caseType) { - return Paths.get(getCaseDirectory(), caseDatabaseName).toString(); + return StringUtils.isBlank(this.caseDatabasePath) + ? this.metadataFilePath.getParent().resolve(this.caseDatabaseName).toString() + : this.caseDatabasePath; } else { throw new UnsupportedOperationException(); } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/multiusercasesbrowser/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/casemodule/multiusercasesbrowser/Bundle_ar.properties new file mode 100644 index 0000000000..c602e4c9d6 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/multiusercasesbrowser/Bundle_ar.properties @@ -0,0 +1,12 @@ +MultiUserCaseBrowserCustomizer.column.caseDbDeleteStatus=Base de datos de casos eliminada +MultiUserCaseBrowserCustomizer.column.caseDirDeleteStatus=Directorio de casos eliminado +MultiUserCaseBrowserCustomizer.column.createTime=Crear tiempo +MultiUserCaseBrowserCustomizer.column.dataSourcesDeleteStatus=Fuentes de datos eliminadas +MultiUserCaseBrowserCustomizer.column.directory=Directorio +MultiUserCaseBrowserCustomizer.column.displayName=Nombre +MultiUserCaseBrowserCustomizer.column.lastAccessTime=Ultimo tiempo de acceso +MultiUserCaseBrowserCustomizer.column.manifestFileZNodesDeleteStatus=Znodes del manifiesto eliminados +MultiUserCaseBrowserCustomizer.column.textIndexDeleteStatus=Indice de texto eliminado +MultiUserCaseNode.column.createTime=Falso +MultiUserCaseNode.columnValue.true=Verdadero +MultiUserCasesBrowserPanel.waitNode.message=Por favor, espere.... diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ar.properties new file mode 100644 index 0000000000..eb6388b82b --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ar.properties @@ -0,0 +1,31 @@ +OptionsCategory_Name_TagNamesOptions=Etiquetas Personalizadas +OptionsCategory_TagNames=Nombres de Etiqueta +TagNameDefinition.predefTagNames.bookmark.text=Marcador +TagNameDefinition.predefTagNames.followUp.text=Seguimiento +TagNameDefinition.predefTagNames.notableItem.text=Elemento Notable +TagNameDialog.descriptionLabel.text=Descripcion: +TagNameDialog.editTitle.text=Editar Etiqueta +TagNameDialog.JOptionPane.tagDescriptionIllegalCharacters.message=Las descripciones de etiquetas no pueden contener comas (,) ni puntos y comas (;) +TagNameDialog.JOptionPane.tagDescriptionIllegalCharacters.title=Caracter no valido en la descripcion de la etiqueta +TagNameDialog.notableCheckbox.text=La etiqueta indica que el elemento es notable. +TagNameDialog.title.text=Nueva Etiqueta +TagNameDialog.JOptionPane.tagNameIllegalCharacters.message=El nombre de la etiqueta no puede contener ninguno de los siguientes simbolos: \\ : * ? " < > | , ; +TagNameDialog.JOptionPane.tagNameIllegalCharacters.title=Caracter no valido en el nombre de la etiqueta +TagNameDialog.JOptionPane.tagNameEmpty.message=El nombre de la etiqueta no puede estar vacio +TagNameDialog.JOptionPane.tagNameEmpty.title=Nombre de etiqueta vacio +TagOptionsPanel.deleteTagNameButton.text=Eliminar Etiqueta +TagOptionsPanel.descriptionLabel.text=Descripcion de la Etiqueta: +TagOptionsPanel.editTagNameButton.text=Editar Etiqueta +TagOptionsPanel.ingestRunningWarningLabel.text=No se pueden realizar cambios en las etiquetas existentes cuando el proceso de ingestion esta en ejecucion! +TagOptionsPanel.isNotableLabel.text=La etiqueta indica que el elemento es notable: +TagOptionsPanel.newTagNameButton.text=Nueva Etiqueta +TagOptionsPanel.notableYesOrNoLabel.text= +TagOptionsPanel.panelDescriptionTextArea.text=Crear y gestionar etiquetas. Las etiquetas se pueden aplicar a archivos y resultados en el caso. Las etiquetas destacadas haran que los elementos etiquetados con ellas sean marcados como notables al utilizar un repositorio central. Cambiar el estado de una etiqueta solo afectara a los elementos en el caso actual.. +TagOptionsPanel.TagNameDialog.tagNameAlreadyExists.message=El nombre de la etiqueta debe ser unico. Ya existe una etiqueta con este nombre.. +TagOptionsPanel.TagNameDialog.tagNameAlreadyExists.title=Nombre de Etiqueta Duplicado +TagOptionsPanel.tagTypesListLabel.text=Nombres de Etiqueta: +TagNameDialog.okButton.text=Aceptar +TagNameDialog.cancelButton.text=Cancelar +TagNameDialog.tagNameTextField.text= +TagNameDialog.newTagNameLabel.text=Nombre: +TagsManager.notableTagEnding.text=\ (Notable) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle_ar.properties new file mode 100644 index 0000000000..eacf4409bd --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle_ar.properties @@ -0,0 +1,11 @@ +AddEditCentralRepoCommentAction.menuItemText.addEditCentralRepoComment=Agregar/Editar Comentario del Repositorio Central +AddEditCentralRepoCommentAction.menuItemText.addEditCentralRepoCommentEmptyFile=Agregar/Editar Comentario del Repositorio Central (Archivo Vacio) +AddEditCentralRepoCommentAction.menuItemText.addEditCentralRepoCommentNoMD5=Agregar/Editar Comentario del Repositorio Central (Sin Hash MD5) +CentralRepoCommentDialog.title.addEditCentralRepoComment=Agregar/Editar Comentario del Repositorio Central +OpenIDE-Module-Name=Repositorio Central +OpenIDE-Module-Display-Category=Modulo de Ingesta +OpenIDE-Module-Short-Description=Modulo de Ingesta del Repositorio Central +OpenIDE-Module-Long-Description=Modulo de ingestion del Repositorio Central y base de datos central. \n\nEl modulo de ingesta del repositorio central almacena los atributos de los artefactos que coinciden con los tipos de correlacion seleccionados en una base de datos central.\nLos atributos almacenados se utilizan en casos futuros para correlacionar y analizar archivos y artefactos durante la ingesta. +CentralRepoCommentDialog.commentLabel.text=Comentario: +CentralRepoCommentDialog.okButton.text=&OK +CentralRepoCommentDialog.cancelButton.text=C&ancel diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/application/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/application/Bundle_ar.properties new file mode 100644 index 0000000000..406bf5aed8 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/application/Bundle_ar.properties @@ -0,0 +1,8 @@ +OtherOccurrences.csvHeader.attribute=Coincidencia atributo +OtherOccurrences.csvHeader.case=Caso +OtherOccurrences.csvHeader.comment=Comentario +OtherOccurrences.csvHeader.dataSource=Fuente de datos +OtherOccurrences.csvHeader.device=Dispositivo +OtherOccurrences.csvHeader.known=Conocido +OtherOccurrences.csvHeader.path=Ruta +OtherOccurrences.csvHeader.value=Valor del atributo diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/Bundle_ar.properties new file mode 100644 index 0000000000..8130fc5d8d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/Bundle_ar.properties @@ -0,0 +1,47 @@ +DataContentViewerOtherCases.table.toolTip.text=Haga clic en el nombre de la columna para ordenar. Haga clic derecho en la tabla para mas opciones.. +DataContentViewerOtherCases.title=Otras ocurrencias +DataContentViewerOtherCases.toolTip=Muestra instancias del archivo/artefacto seleccionado de otras ocurrencias.. +OccurrencePanel.caseCreatedDateLabel.text=Fecha de creacion: +OccurrencePanel.caseDetails.text=Detalles del caso +OccurrencePanel.caseNameLabel.text=Nombre: +OccurrencePanel.commonProperties.text=Propiedades comunes +OccurrencePanel.commonPropertyCommentLabel.text=Comentario: +OccurrencePanel.commonPropertyKnownStatusLabel.text=Estado conocido: +OccurrencePanel.commonPropertyTypeLabel.text=Tipo: +OccurrencePanel.commonPropertyValueLabel.text=Valor: +OccurrencePanel.dataSourceDetails.text=Detalles de la fuente de datos +OccurrencePanel.dataSourceNameLabel.text=Nombre: +OccurrencePanel.fileDetails.text=Detalles del archivo +OccurrencePanel.filePathLabel.text=Ruta del archivo: +OtherOccurrencesCasesTableModel.case=Caso +OtherOccurrencesCasesTableModel.noData=Sin datos. +OtherOccurrencesDataSourcesTableModel.dataSourceName=Nombre de la fuente de datos +OtherOccurrencesDataSourcesTableModel.noData=Sin datos. +OtherOccurrencesFilesTableModel.fileName=Nombre del archivo +OtherOccurrencesFilesTableModel.noData=Sin datos. +OtherOccurrencesPanel.caseDatasourceFileSplitPane.toolTipText= +OtherOccurrencesPanel.caseDetailsDialog.noCaseNameError=Error +OtherOccurrencesPanel.caseDetailsDialog.noDetails=Sin detalles para este caso. +OtherOccurrencesPanel.caseDetailsDialog.noDetailsReference=Sin detalles del caso para propiedades de referencia global. +OtherOccurrencesPanel.caseDetailsDialog.notSelected=Ninguna fila seleccionada +# {0} - commonality percentage +# {1} - correlation type +# {2} - correlation value +OtherOccurrencesPanel.correlatedArtifacts.byType={0}% de fuentes de datos tienen {2} (tipo: {1})\n +OtherOccurrencesPanel.correlatedArtifacts.failed=Error al obtener detalles de frecuencia. +OtherOccurrencesPanel.correlatedArtifacts.isEmpty=No hay archivos o artefactos para correlacionar. +OtherOccurrencesPanel.correlatedArtifacts.title=Frecuencia de atributo +OtherOccurrencesPanel.earliestCaseLabel.toolTipText= +OtherOccurrencesPanel.earliestCaseLabel.text=Fecha de inicio del Repositorio Central: +OtherOccurrencesPanel.earliestCaseDate.text=Fecha de caso mas temprana +OtherOccurrencesPanel.foundIn.text=Se encontraron %d instancias en %d casos y %d fuentes de datos. +OtherOccurrencesPanel.foundInLabel.text= +OtherOccurrencesPanel.filesTable.toolTipText=Haga clic en el nombre de la columna para ordenar. Haga clic derecho en la tabla para mas opciones.. +OtherOccurrencesPanel.exportToCSVMenuItem.text=Exportar todas las otras ocurrencias a CSV +OtherOccurrencesPanel.noOpenCase.errMsg=Ningun caso abierto disponible. +OtherOccurrencesPanel.showCommonalityMenuItem.text=Mostrar frecuencia +OtherOccurrencesPanel.showCaseDetailsMenuItem.text=Mostrar detalles del caso +OtherOccurrencesPanel.table.noArtifacts=El articulo no tiene atributos con los que buscar. +OtherOccurrencesPanel.table.noResultsFound=No se encontraron resultados. +OtherOccurrencesPanel_earliestCaseNotAvailable=No disponible. +OtherOccurrencesPanel_table_loadingResults=Cargando resultados diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Bundle_ar.properties new file mode 100644 index 0000000000..9392df6027 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Bundle_ar.properties @@ -0,0 +1,56 @@ +# {0} - majorVersion +AbstractSqlEamDb.badMajorSchema.message=Valor incorrecto para la version del esquema ({0}) - la base de datos esta corrupta. +# {0} - minorVersion +AbstractSqlEamDb.badMinorSchema.message=Valor incorrecto para la version menor del esquema ({0}) - la base de datos esta corrupta. +# {0} - platformName +AbstractSqlEamDb.cannotUpgrage.message=La plataforma de base de datos seleccionada "{0}" no puede ser actualizada. +AbstractSqlEamDb.failedToReadMajorVersion.message=Error al leer la version del esquema del Repositorio Central. +AbstractSqlEamDb.failedToReadMinorVersion.message=Error al leer la version menor del esquema del Repositorio Central. +AbstractSqlEamDb.upgradeSchema.incompatible=El Repositorio Central seleccionado no es compatible con la version actual de la aplicacion, por favor actualiza la aplicacion si deseas utilizar este Repositorio Central. +CentralRepoDbChoice.Disabled.Text=Desactivado +CentralRepoDbChoice.PostgreSQL.Text=PostgreSQL Personalizado +CentralRepoDbChoice.PostgreSQL_Multiuser.Text=PostgreSQL utilizando configuraciones multiusuario +CentralRepoDbChoice.Sqlite.Text=SQLite +CentralRepoDbManager.connectionErrorMsg.text=Error al conectar con la base de datos del repositorio central. +CentralRepositoryService.progressMsg.startingListener=Iniciando el escuchador de eventos... +CentralRepositoryService.progressMsg.updatingSchema=Comprobando actualizaciones del esquema... +CentralRepositoryService.progressMsg.waitingForListeners=Finalizando la adicion de datos a la base de datos del repositorio central.... +CentralRepositoryService.serviceName=Servicio de Repositorio Central +CorrelationAttributeInstance.invalidName.message=Nombre de tabla de base de datos no valido. El nombre debe empezar con una letra minuscula y solo puede contener letras minusculas, numeros y '_'. +CorrelationAttributeInstance.nullName.message=El nombre de la base de datos es nulo. +CorrelationAttributeUtil.emailaddresses.text=Direcciones de correo electronico +CorrelationType.DOMAIN.displayName=Dominio +CorrelationType.EMAIL.displayName=Direccion de correo electronico +CorrelationType.FILES.displayName=MD5 del archivo +CorrelationType.ICCID.displayName=Numero ICCID +CorrelationType.IMEI.displayName=Numero IMEI +CorrelationType.IMSI.displayName=Numero IMSI +CorrelationType.MAC.displayName=Direccion MAC +CorrelationType.OS_ACCOUNT.displayName=Cuenta de SO +CorrelationType.PHONE.displayName=Numero de telefono +CorrelationType.PROG_NAME.displayName=Programa instalado +CorrelationType.SSID.displayName=Red inalambrica +CorrelationType.USBID.displayName=Dispositivo USB +EamArtifactInstances.knownStatus.bad=Incorrecto +EamArtifactInstances.knownStatus.known=Conocido +EamArtifactInstances.knownStatus.unknown=Desconocido +EamCase.title.caseDisplayName=Nombre del caso: +EamCase.title.caseNumber=Numero de caso +EamCase.title.caseUUID=UUID del caso: +EamCase.title.creationDate=Fecha de creacion: +EamCase.title.examinerEmail=Correo del Examinador: +EamCase.title.examinerName=Nombre del Examinador: +EamCase.title.examinerPhone=Telefono del Examinador: +EamCase.title.notes=Notas: +EamCase.title.org=Organizacion: +EamDbUtil.centralRepoConnectionFailed.message=No es posible conectar al Repositorio Central. +EamDbUtil.centralRepoDisabled.message=\ El Repositorio Central ha sido deshabilitado. +EamDbUtil.centralRepoUpgradeFailed.message=No se pudo actualizar el Repositorio Central. +EamDbUtil.exclusiveLockAquisitionFailure.message=No es posible adquirir bloqueo exclusivo para el Repositorio Central. +Persona.defaultName=Sin nombre +PostgresEamDb.centralRepoDisabled.message=El modulo del Repositorio Central no esta habilitado. +PostgresEamDb.connectionFailed.message=Error al obtener conexion a la base de datos. +PostgresEamDb.multiUserLockError.message=Error al adquirir bloqueo de base de datos +SqliteEamDb.centralRepositoryDisabled.message=El modulo del Repositorio Central no esta habilitado. +SqliteEamDb.connectionFailedMessage.message=Error al obtener conexion a la base de datos. +SqliteEamDb.databaseMissing.message=Falta la base de datos del repositorio central. diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Bundle_ar.properties new file mode 100644 index 0000000000..6936a36791 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Bundle_ar.properties @@ -0,0 +1,8 @@ +caseeventlistener.evidencetag=Evidencia +CentralRepositoryNotificationDialog.bulletHeader=Estos datos son utilizados para: +CentralRepositoryNotificationDialog.bulletOne=Ignorar elementos comunes (archivos, dominios y cuentas) +CentralRepositoryNotificationDialog.bulletThree=Crear personajes que agrupan cuentas +CentralRepositoryNotificationDialog.bulletTwo=Identificar donde se vio previamente un elemento +CentralRepositoryNotificationDialog.finalRemarks=Para limitar lo que se almacena, usa el panel de opciones del Repositorio Central. +CentralRepositoryNotificationDialog.header=Autopsy almacena datos sobre cada caso en su Repositorio Central. +Installer.centralRepoUpgradeFailed.title=Repositorio central deshabilitado diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/Bundle_ar.properties new file mode 100644 index 0000000000..556dc240c1 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/Bundle_ar.properties @@ -0,0 +1,30 @@ +CentralRepoIngestModule_artifact_type_inbox_msg_header=Tipo de Artefacto +CentralRepoIngestModule_cannotGetCrCaseErrMsg=Caso no presente en el repositorio central +CentralRepoIngestModule_cannotGetCrDataSourceErrMsg=Fuente de datos no presente en el repositorio central +CentralRepoIngestModule_crDatabaseTypeMismatch=Los casos de multiples usuarios requieren un repositorio central de PostgreSQL +CentralRepoIngestModule_crInaccessibleErrMsg=Error al acceder al repositorio central +CentralRepoIngestModule_crNotEnabledErrMsg=Se requiere repositorio central, pero no está habilitado +CentralRepoIngestModule_filename_inbox_msg_header=Nombre del Archivo +CentralRepoIngestModule_md5Hash_inbox_msg_header=MD5 Hash +CentralRepoIngestModule_missingFileCorrAttrTypeErrMsg=Tipo de atributo de correlacion para archivos no encontrado en el repositorio central +CentralRepoIngestModule_noCurrentCaseErrMsg=Error al obtener el caso actual +CentralRepoIngestModule_notable_attr_inbox_msg_header=Atributo notable +# {0} - Name of item that is Notable +CentralRepoIngestModule_notable_inbox_msg_subject=Notable: {0} +# {0} - list of cases +CentralRepoIngestModule_notableJustification=Marcado previamente como notable en casos {0} +CentralRepoIngestModule_notableSetName=Marcado previamente como notable (Repositorio Central) +CentralRepoIngestModule_prev_cases_inbox_msg_header=Casos anteriores +# {0} - list of cases +CentralRepoIngestModule_prevSeenJustification=Visto previamente en casos {0} +CentralRepoIngestModule_prevSeenOsAcctConfig=Usuarios vistos previamente (Repositorio Central) +CentralRepoIngestModule_prevSeenOsAcctSetName=Usuarios vistos en casos anteriores +CentralRepoIngestModule_prevSeenSetName=Visto previamente (Repositorio Central) +CentralRepoIngestModule_prevUnseenJustification=Visto previamente en cero casos +CentralRepoIngestModuleFactory.ingestmodule.desc=Guarda propiedades en el repositorio central para una correlación posterior +CentralRepoIngestModuleFactory.ingestmodule.name=Repositorio Central +IngestSettingsPanel.ingestSettingsLabel.text=Configuraciones de Ingesta +IngestSettingsPanel.flagTaggedNotableItemsCheckbox.text=Etiqueta elementos marcados previamente como notables +IngestSettingsPanel.flagPreviouslySeenDevicesCheckbox.text=Etiqueta dispositivos y usuarios vistos previamente en otros casos +IngestSettingsPanel.createCorrelationPropertiesCheckbox.text=Guardar elementos en el Repositorio Central +IngestSettingsPanel.flagUniqueAppsCheckbox.text=Etiqueta aplicaciones y dominios no vistos en otros casos diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle_ar.properties new file mode 100644 index 0000000000..cba1bc4895 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle_ar.properties @@ -0,0 +1,157 @@ +AddNewOrganizationDialog.addNewOrg.msg=Aniadir nueva organizacion +AddNewOrganizationDialog.bnOk.addFailed.text=Error al agregar nueva organizacion. +AddNewOrganizationDialog.validation.incompleteFields=Se requiere el nombre de la organizacion. +CasesTableModel.case=Nombre del caso +CasesTableModel.creationDate=Fecha de creacion +CasesTableModel.noData=No hay casos +DataSourcesTableModel.dataSource=Nombre de la fuente de datos +DataSourcesTableModel.deviceId=ID del dispositivo +DataSourcesTableModel.noData=No hay fuentes de datos +EamDbSettingsDialog.chooserPath.failedToGetDbPathMsg=La ruta de la base de datos seleccionada no es valida. Intente nuevamente. +EamDbSettingsDialog.fcDatabasePath.title=Seleccionar ubicacion para central_repository.db +EamDbSettingsDialog.lbDatabaseType.text=Tipo de base de datos : +EamDbSettingsDialog.lbSingleUserSqLite.text=SQLite solo debe ser utilizado por un examinador a la vez. +EamDbSettingsDialog.okButton.connectionErrorMsg.text=Error al conectar con la base de datos del repositorio central. +EamDbSettingsDialog.okButton.corruptDatabaseExists.message=La base de datos del repositorio central existe pero no es el formato correcto. Eliminela manualmente o elija una ruta diferente (si corresponde). +EamDbSettingsDialog.okButton.corruptDatabaseExists.title=Error al cargar la base de datos del repositorio central +EamDbSettingsDialog.okButton.createDbDialog.message=La base de datos del repositorio central no existe, ¿desea crearla? +EamDbSettingsDialog.okButton.createDbDialog.title=La base de datos del repositorio central no existe +EamDbSettingsDialog.okButton.createDbError.title=No se puede crear la base de datos del repositorio central +EamDbSettingsDialog.okButton.createPostgresDbError.message=No se puede crear la base de datos del repositorio central de Postgres, asegurese de que la direccion, el puerto y las credenciales de inicio de sesion sean correctas para el servidor de Postgres e intente nuevamente. +EamDbSettingsDialog.okButton.createSQLiteDbError.message=No se puede crear la base de datos del repositorio central de SQLite, asegurese de que la ubicacion exista y tenga permisos de escritura e intente nuevamente. +EamDbSettingsDialog.okButton.databaseConnectionFailed.message=No se puede conectar con la base de datos del repositorio central. Verifique su configuracion e intente nuevamente. +EamDbSettingsDialog.okButton.databaseConnectionFailed.title=Fallo en la conexion con la base de datos del repositorio central +EamDbSettingsDialog.okButton.errorMsg.text=Por favor, reinicie Autopsy para comenzar a usar la nueva plataforma de base de datos. +EamDbSettingsDialog.okButton.errorTitle.text=Reinicio requerido. +EamDbSettingsDialog.textPrompt.dbName=Nombre de la base de datos +EamDbSettingsDialog.textPrompt.hostnameOrIP=Nombre de host o direccion IP +EamDbSettingsDialog.textPrompt.password=Contrasenia del usuario de la base de datos +EamDbSettingsDialog.textPrompt.port=Numero de puerto +EamDbSettingsDialog.textPrompt.user=Usuario de base de datos +EamDbSettingsDialog.title.text=Configuracion de base de datos del repositorio central +EamDbSettingsDialog.validation.finished=Haga clic en Aceptar para guardar la configuracion de su base de datos y volver a las opciones. O seleccione un tipo de base de datos diferente.. +EamDbSettingsDialog.validation.incompleteFields=Complete todos los valores para la base de datos seleccionada.. +EamOptionsController.moduleErr=Error procesando cambios de valor.. +EamOptionsController.moduleErr.msg=Error en el procesamiento del cambio de valor.. +GlobalSettingsPanel.askForCentralRepoDbChoice.customPostgrestChoice.text=Configurar PostgreSQL +GlobalSettingsPanel.askForCentralRepoDbChoice.disableChoice.text=Desactivar el Repositorio Central +GlobalSettingsPanel.askForCentralRepoDbChoice.sqliteChoice.text=Usar SQLite +GlobalSettingsPanel.onMultiUserChange.disabledMu.description=El Repositorio Central se reconfigurara para utilizar una base de datos local SQLite.. +GlobalSettingsPanel.onMultiUserChange.disabledMu.description2=Presione Configurar PostgreSQL para cambiar a una base de datos PostgreSQL.. +GlobalSettingsPanel.onMultiUserChange.disabledMu.title=Cambio necesario en el Repositorio Central +# {0} - server name +GlobalSettingsPanel.onMultiUserChange.enable.description=¿Desea actualizar el Repositorio Central para usar el servidor PostgreSQL en {0}? +GlobalSettingsPanel.onMultiUserChange.enable.description2=Cualquier dato en un Repositorio Central SQLite existente no se transferira a la nueva base de datos.. +GlobalSettingsPanel.onMultiUserChange.enable.title=Repositorio Central +GlobalSettingsPanel.testCurrentConfiguration.dbDoesNotExist.message=La base de datos no existe.. +GlobalSettingsPanel.validationErrMsg.ingestRunning=No puede cambiar la configuracion mientras se esta ejecutando el proceso de ingestion.. +GlobalSettingsPanel.validationerrMsg.mustConfigure=Configure la base de datos para habilitar este modulo.. +ManageCasesDialog.title.text=Administrar Casos +ManageCorrelationPropertiesDialog.noneSelected=No hay propiedades de correlacion habilitadas.. +ManageCorrelationPropertiesDialog.okbutton.failure=Error al guardar las selecciones actualizadas.. +ManageCorrelationPropertiesDialog.title=Administrar Propiedades de Correlacion +ManageOrganizationsDialog.closeButton.text=Cerrar +ManageOrganizationsDialog.confirmDeletion.message=¿Esta seguro de que desea eliminar la organizacion seleccionada del repositorio central? +ManageOrganizationsDialog.confirmDeletion.title=Confirmar Eliminacion +ManageOrganizationsDialog.deleteButton.text=Eliminar +ManageOrganizationsDialog.editButton.text=Editar +ManageOrganizationsDialog.newButton.text=Nuevo +ManageOrganizationsDialog.orgDescriptionTextArea.text=Las organizaciones se utilizan para proporcionar informacion de contacto adicional para el contenido con el que estan asociadas.. +ManageOrganizationsDialog.orgDetailsLabel.text=Detalles de la Organizacion +ManageOrganizationsDialog.orgListLabel.text=Organizaciones +ManageOrganizationsDialog.orgNameLabel.text=Nombre de la Organizacion: +ManageOrganizationsDialog.pocEmailLabel.text=Correo Electronico del Punto de Contacto: +ManageOrganizationsDialog.pocNameLabel.text=Nombre del Punto de Contacto: +ManageOrganizationsDialog.pocPhoneLabel.text=Telefono del Punto de Contacto: +ManageOrganizationsDialog.title.text=Administrar Organizaciones +ManageOrganizationsDialog.unableToDeleteOrg.message=Incapaz de eliminar organizacion seleccionada. +ManageOrganizationsDialog.unableToDeleteOrg.title=Incapaz de Eliminar +OptionsCategory_Name_Central_Repository_Options=Repositorio Central +OptionsCategory_Keywords_Central_Repository_Options=Configuracion del Repositorio Central +ImportHashDatabaseDialog.known.text=Conocido +ImportHashDatabaseDialog.knownBad.text=Destacable +EamPostgresSettingsDialog.lbUserPassword.text=Contrasenia de Usuario : +EamPostgresSettingsDialog.lbUserName.text=Nombre de Usuario : +EamPostgresSettingsDialog.bnCancel.text=Cancelar +EamPostgresSettingsDialog.lbPort.text=Puerto : +EamPostgresSettingsDialog.lbHostName.text=Nombre de Anfitrion / IP : +EamPostgresSettingsDialog.bnTestConnection.text=Probar Conexion +EamPostgresSettingsDialog.lbDatabaseName.text=Nombre de la Base de Datos : +EamSqliteSettingsDialog.bnCancel.text=Cancelar +EamSqliteSettingsDialog.lbTestDatabase.text= +EamSqliteSettingsDialog.bnTestDatabase.text=Probar Conexion +EamSqliteSettingsDialog.lbTestDatabaseWarning.text= +EamSqliteSettingsDialog.bnDatabasePathFileOpen.text=Navegar... +EamSqliteSettingsDialog.tfDatabasePath.toolTipText=Nombre de Archivo y Ruta para guardar el archivo db de SQLite +EamSqliteSettingsDialog.tfDatabasePath.text= +EamSqliteSettingsDialog.lbDatabasePath.text=Ruta de la Base de Datos : +ImportHashDatabaseDialog.tfDatabaseName.tooltip=Nombre para este conjunto de hash +ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=Numero de Version del Conjunto de Hash +ImportHashDatabaseDialog.tfDatabaseName.tooltip=Nombre para este conjunto de hash +ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=Numero de Version del Conjunto de Hash +GlobalSettingsPanel.tbOops.text= +GlobalSettingsPanel.lbDatabaseSettings.text=Configuracion de la Base de Datos +GlobalSettingsPanel.bnImportDatabase.label=Importar Conjunto de Hash +AddNewOrganizationDialog.lbPocPhone.text=Telefono: +AddNewOrganizationDialog.lbPocEmail.text=Correo Electronico: +AddNewOrganizationDialog.lbPocName.text=Nombre: +AddNewOrganizationDialog.lbPocHeading.text=Punto de Contacto: +AddNewOrganizationDialog.lbOrganizationName.text=Nombre de la Organizacion: +AddNewOrganizationDialog.bnCancel.text=Cancelar +AddNewOrganizationDialog.bnOK.text=Aceptar +AddNewOrganizationDialog.tfName.tooltip=Nombre del PdC (Punto de Contacto) +ManageTagsDialog.okButton.text=Aceptar +ManageTagsDialog.cancelButton.text=Cancelar +ManageArtifactTypesDialog.taInstructionsMsg.text=Habilitar una o mas propiedades de correlacion para usar durante la ingestion. Ten en cuenta que estas propiedades son globales y afectan a todos los usuarios del Repositorio Central.. +EamSqliteSettingsDialog.bnOk.text=Aceptar +EamPostgresSettingsDialog.bnSave.text=Guardar +EamDbSettingsDialog.bnDatabasePathFileOpen.text=Navegar... +EamDbSettingsDialog.tfDatabasePath.toolTipText=Nombre de Archivo y Ruta para guardar el archivo db de SQLite +EamDbSettingsDialog.tfDatabasePath.text= +EamDbSettingsDialog.lbDatabasePath.text=Ruta de la Base de Datos : +EamDbSettingsDialog.bnCancel.text=Cancelar +EamDbSettingsDialog.bnOk.text=Aceptar +EamDbSettingsDialog.lbHostName.text=Nombre de Host / IP : +EamDbSettingsDialog.lbUserPassword.text=Contrasenia de Usuario : +EamDbSettingsDialog.lbUserName.text=Nombre de Usuario : +EamDbSettingsDialog.lbPort.text=Puerto : +GlobalSettingsPanel.pnDatabaseConfiguration.title=Configuracion de la Base de Datos +GlobalSettingsPanel.lbDbPlatformTypeLabel.text=Tipo: +GlobalSettingsPanel.lbDbNameLabel.text=Nombre: +GlobalSettingsPanel.bnDbConfigure.text=Configurar +GlobalSettingsPanel.lbDbLocationLabel.text=Ubicacion: +ManageCorrelationPropertiesDialog.lbWarningMsg.text=Mensaje de Advertencia +ManageCorrelationPropertiesDialog.cancelButton.text=Cancelar +ManageCorrelationPropertiesDialog.okButton.text=Aceptar +GlobalSettingsPanel.bnManageProperties.text=Administrar Propiedades de Correlacion +EamDbSettingsDialog.lbDatabaseDesc.text=Archivo de Base de Datos: +GlobalSettingsPanel.cbUseCentralRepo.text=Utilizar un Repositorio Central +GlobalSettingsPanel.organizationTextArea.text=La informacion de la organizacion puede ser rastreada en el Repositorio Central. +GlobalSettingsPanel.manageOrganizationButton.text=Administrar Organizaciones +GlobalSettingsPanel.lbCentralRepository.text=Un Repositorio Central te permite correlacionar archivos y resultados entre casos. La configuracion del Repositorio Central no puede modificarse mientras un caso esta abierto.. +GlobalSettingsPanel.pnCorrelationProperties.border.title=Propiedades de Correlacion +GlobalSettingsPanel.organizationPanel.border.title=Organizaciones +GlobalSettingsPanel.casesPanel.border.title=Detalles del Caso +GlobalSettingsPanel.showCasesButton.text=Administrar Casos +ShowCasesDialog.closeButton.AccessibleContext.accessibleName=Cerrar +ShowCasesDialog.closeButton.actionCommand=Cerrar +ShowCasesDialog.closeButton.text=Cerrar +ShowCasesDialog.caseDetailsTable.toolTipText=Haz clic en el nombre de la columna para ordenar. Haz clic derecho en la tabla para mas opciones.. +ShowCasesDialog.title=Detalles del Caso +GlobalSettingsPanel.Case\ Details.AccessibleContext.accessibleName=Detalles de los Casos +ShowCasesDialog.caseDetailsTable.AccessibleContext.accessibleDescription=Haz clic en el nombre de la columna para ordenar. +GlobalSettingsPanel.casesTextArea.text=Mostrar tabla que lista los detalles del caso en el Repositorio Central. +GlobalSettingsPanel.ingestRunningWarningLabel.text=¡No se pueden realizar cambios en la configuracion del Repositorio Central mientras la ingestion esta en curso! +GlobalSettingsPanel.correlationPropertiesTextArea.text=Elige que propiedades de archivo y resultado almacenar en el Repositorio Central para una correlacion posterior.\n +ManageCasesDialog.examinerPhoneLabel.text=Telefono del Examinador: +ManageCasesDialog.examinerNameLabel.text=Nombre del Examinador: +ManageCasesDialog.examinerEmailLabel.text=Correo Electronico del Examinador: +ManageCasesDialog.caseNumberLabel.text=Numero de Caso: +ManageCasesDialog.orgLabel.text=Organizacion: +ManageCasesDialog.closeButton.text=Cerrar +ManageCasesDialog.notesLabel.text=Notas: +ManageCasesDialog.dataSourcesLabel.text=Fuentes de Datos: +ManageCasesDialog.caseInfoLabel.text=Informacion del Caso: +GlobalSettingsPanel.bnTestConfigure.text=Prueba +GlobalSettingsPanel.testStatusLabel.toolTipText= +GlobalSettingsPanel.testStatusLabel.text= diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle _ar.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle _ar.properties new file mode 100644 index 0000000000..7f5e0ec4a5 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle _ar.properties @@ -0,0 +1,137 @@ +AddMetadataDialog.title.text=Agregar Metadatos +AddMetadataDialog_dup_msg=Ya se ha agregado una entrada de metadatos con este nombre a esta persona. +AddMetadataDialog_dup_Title=Fallo al agregar metadatos +AddMetadataDialog_empty_name_msg=Una entrada de metadatos no puede tener un nombre o valor vacio. +AddMetadataDialog_empty_name_Title=Campos faltantes +CreatePersonaAccountDialog.title.text=Crear cuenta +CreatePersonaAccountDialog_error_msg=Error al crear la cuenta. +CreatePersonaAccountDialog_error_title=Fallo de la cuenta +CreatePersonaAccountDialog_invalid_account_msg=El identificador de la cuenta no es valido. +CreatePersonaAccountDialog_invalid_account_Title=Identificador de cuenta invalido +CreatePersonaAccountDialog_success_msg=Cuenta agregada. +CreatePersonaAccountDialog_success_title=Cuenta agregada +CTL_OpenPersonas=Personas +CTL_PersonasTopComponentAction=Personas +CTL_PersonaDetailsTopComponent=Detalles de la persona +OpenPersonasAction.displayName=Personas +PersonaAccountDialog.title.text=Agregar cuenta +PersonaAccountDialog_dup_msg=Esta cuenta ya esta agregada a la persona. +PersonaAccountDialog_dup_Title=Fallo al agregar la cuenta +PersonaAccountDialog_get_types_exception_msg=Fallo al acceder al repositorio central. +PersonaAccountDialog_get_types_exception_Title=Fallo del repositorio central +PersonaAccountDialog_identifier_empty_msg=El campo de identificacion no puede estar vacio. +PersonaAccountDialog_identifier_empty_Title=Identificador vacio +PersonaAccountDialog_invalid_account_msg=El identificador de la cuenta no es valido. +PersonaAccountDialog_invalid_account_Title=Identificador de cuenta invalido +PersonaAccountDialog_search_empty_msg=Cuenta no encontrada para el identificador y tipo dados. +PersonaAccountDialog_search_empty_Title=Cuenta no encontrada +PersonaAccountDialog_search_failure_msg=Fallo en la busqueda de cuentas del repositorio central. +PersonaAccountDialog_search_failure_Title=Fallo al agregar la cuenta +PersonaAliasDialog.title.text=Agregar Alias +PersonaAliasDialog_dup_msg=Este alias ya ha sido agregado a la persona. +PersonaAliasDialog_dup_Title=Fallo al agregar el alias +PersonaAliasDialog_empty_msg=Un alias no puede estar vacio. +PersonaAliasDialog_empty_Title=Alias vacio +PersonaDetailsDialog.cancelBtn.text=Cancelar +PersonaDetailsDialog.okBtn.text=Aceptar +PersonaDetailsDialogCreateTitle=Crear Persona +PersonaDetailsDialogEditTitle=Editar Persona +PersonaDetailsDialogViewTitle=Ver Persona +PersonaDetailsPanel.casesLbl.text=Casos encontrados en: +PersonaDetailsPanel.deleteAliasBtn.text=Eliminar +PersonaDetailsPanel.addAliasBtn.text=Agregar +PersonaDetailsPanel.aliasesLabel.text=Alias: +PersonaDetailsPanel.deleteMetadataBtn.text=Eliminar +PersonaDetailsPanel.addMetadataBtn.text=Agregar +PersonaDetailsPanel.metadataLabel.text=Metadatos: +PersonaDetailsPanel.deleteAccountBtn.text=Eliminar +PersonaDetailsPanel.addAccountBtn.text=Agregar +PersonaDetailsPanel.accountsLbl.text=Cuentas: +PersonaDetailsPanel.nameField.text= +PersonaDetailsPanel.nameLbl.text=Nombre: +AddAliasDialog.accountsLbl.text=Cuenta: +AddAliasDialog.okBtn.text=Aceptar +AddAliasDialog.cancelBtn.text=Cancelar +PersonaDetailsPanel.casesLbl.text=Casos encontrados en +PersonaDetailsPanel.deleteAliasBtn.text=Eliminar +PersonaDetailsPanel.addAliasBtn.text=Agregar +PersonaDetailsPanel.aliasesLabel.text=Alias +PersonaDetailsPanel.deleteMetadataBtn.text=Eliminar +PersonaDetailsPanel.addMetadataBtn.text=Agregar +PersonaDetailsPanel.metadataLabel.text=Metadatos +PersonaDetailsPanel.deleteAccountBtn.text=Eliminar +PersonaDetailsPanel.addAccountBtn.text=Agregar +PersonaDetailsPanel.accountsLbl.text=Cuentas +PersonaDetailsPanel.commentField.text= +PersonaDetailsPanel.commentLbl.text=Comentario: +PersonaDetailsPanel.nameLbl.text=Nombre: +PersonaDetailsPanel.examinerLbl.text=Creado por: +PersonaDetailsPanel.examinerField.text= +PersonaDetailsPanel.creationDateLbl.text=Creado en: +PersonaDetailsPanel.creationDateField.text= +PersonaAccountDialog.confidenceLbl.text=Confianza: +PersonaAccountDialog.justificationTextField.text= +PersonaAccountDialog.justificationLbl.text=Justificacion: +PersonaAccountDialog.typeLbl.text=Tipo: +PersonaAccountDialog.identifierTextField.text= +PersonaAccountDialog.identiferLbl.text=Identificador: +PersonaAccountDialog.okBtn.text=Aceptar +PersonaAccountDialog.cancelBtn.text=Cancelar +PersonaAliasDialog.cancelBtn.text_1=Cancelar +PersonaAliasDialog.confidenceLbl.text=Confianza: +PersonaAliasDialog.justificationTextField.text= +PersonaAliasDialog.justificationLbl.text=Justificacion: +PersonaAliasDialog.aliasTextField.text= +PersonaAliasDialog.aliasLbl.text=Alias: +PersonaAliasDialog.okBtn.text_1=Aceptar +PersonaDetailsPanel_CentralRepoErr_msg=Fallo al escribir en el repositorio central. +PersonaDetailsPanel_CentralRepoErr_Title=Fallo del repositorio central +PersonaDetailsPanel_empty_justification_msg=El campo de justificacion no puede estar vacio +PersonaDetailsPanel_empty_justification_Title=Justificacion vacia +PersonaDetailsPanel_EmptyComment_msg=El comentario de la persona no puede estar vacio. +PersonaDetailsPanel_EmptyComment_Title=Comentario de persona vacio +PersonaDetailsPanel_EmptyName_msg=El nombre de la persona no puede estar vacio. +PersonaDetailsPanel_EmptyName_Title=Nombre de persona vacio +PersonaDetailsPanel_load_exception_msg=Error al cargar la persona. +PersonaDetailsPanel_load_exception_Title=Fallo de inicializacion +PersonaDetailsPanel_NotEnoughAccounts_msg=Una persona necesita al menos una cuenta. +PersonaDetailsPanel_NotEnoughAccounts_Title=Cuenta faltante +PersonaMetadataDialog.confidenceLbl.text=Confianza: +PersonaMetadataDialog.justificationTextField.text= +PersonaMetadataDialog.justificationLbl.text=Justificacion: +PersonaMetadataDialog.valueTextField.text= +PersonaMetadataDialog.valueLbl.text=Valor: +PersonaMetadataDialog.nameTextField.text= +PersonaMetadataDialog.nameLbl.text=Nombre: +PersonaMetadataDialog.okBtn.text=Aceptar +PersonaMetadataDialog.cancelBtn.text=Cancelar +PersonaDetailsPanel.editAccountBtn.text=Editar +PersonaDetailsPanel.editMetadataBtn.text=Editar +PersonaDetailsPanel.editAliasBtn.text=Editar +PersonasTopComponent.searchAccountRadio.text=Cuenta +PersonasTopComponent.searchNameRadio.text=Nombre +PersonasTopComponent.searchField.text= +PersonasTopComponent.deleteBtn.text=Eliminar Persona +PersonasTopComponent.editBtn.text=Editar Persona +PersonasTopComponent.createBtn.text=Nueva Persona +PersonasTopComponent.createAccountBtn.text=Crear cuenta +PersonasTopComponent.searchBtn.text=Mostrar +PersonasTopComponent.resultsTable.columnModel.title1=Nombre +PersonasTopComponent.resultsTable.columnModel.title0=ID +PersonasTopComponent.resultsTable.toolTipText= +CreatePersonaAccountDialog.cancelBtn.text=Cancelar +CreatePersonaAccountDialog.typeLbl.text=Tipo: +CreatePersonaAccountDialog.identifierTextField.text= +CreatePersonaAccountDialog.identiferLbl.text=Identificador: +CreatePersonaAccountDialog.okBtn.text=Aceptar +PersonasTopComponent.introText.text=Las personas representan una identidad en linea. Se abarcan casos y se almacenan en el Repositorio Central en funcion de las cuentas que se encontraron en artefactos. Puedes crear, editar y eliminar personas aqui.. +PersonasTopComponent.cbFilterByKeyword.text=Filtrar personas por nombre o cuenta +PersonaDetailsPanel.nameField.text= +PersonasTopComponent_delete_confirmation_msg=¿Estas seguro de que deseas eliminar esta persona? +PersonasTopComponent_delete_confirmation_Title=¿Estas seguro? +PersonasTopComponent_delete_exception_msg=Fallo al eliminar la persona. +PersonasTopComponent_delete_exception_Title=Fallo al eliminar +PersonasTopComponent_Name=Personas +PersonasTopComponent_noCR_msg=El Repositorio Central no esta habilitado. +PersonasTopComponent_search_exception_msg=Fallo en la busqueda de personas. +PersonasTopComponent_search_exception_Title=Hubo un fallo durante la busqueda. Intenta abrir un caso para inicializar completamente la base de datos del repositorio central.. diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ar.properties new file mode 100644 index 0000000000..f0e68860b1 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ar.properties @@ -0,0 +1,23 @@ +CommandLineIngestSettingPanel_empty_report_name_mgs=Nombre del perfil de informe estaba vacio, no se creo ningun perfil. +CommandLineIngestSettingPanel_existing_report_name_mgs=Nombre del perfil de informe ya existe, no se creo ningun perfil. +CommandLineIngestSettingPanel_invalid_report_name_mgs=Nombre del perfil de informe contenia caracteres no permitidos, no se creo ningun perfil. +CommandListIngestSettingsPanel_Default_Report_DisplayName=Predeterminado +CommandListIngestSettingsPanel_Make_Config=Crear nuevo perfil... +CommandListIngestSettingsPanel_Report_Name_Msg=Por favor proporciona un nombre de perfil de informe (solo letras, digitos y caracteres de subrayado): +OpenIDE-Module-Name=CommandLineAutopsy +OptionsCategory_Keywords_Command_Line_Ingest_Settings=Configuracion de Ingesta de Linea de Comando +OptionsCategory_Keywords_General=Opciones +OptionsCategory_Name_Command_Line_Ingest=Ingesta de Linea de Comando +CommandLinePanel.jLabel1.text=Ejecutando tarea de linea de comando. +CommandLineStartupWindow.title.text=Ejecutando en Modo de Linea de Comando +CommandLineIngestSettingsPanel.bnEditIngestSettings.text=Configurar +CommandLineIngestSettingsPanel.bnEditReportSettings.actionCommand=Configuracion del Modulo de Informes +CommandLineIngestSettingsPanel.bnEditReportSettings.toolTipText=Configuracion de generacion de informes para el contexto del modo de procesamiento de linea de comando. +CommandLineIngestSettingsPanel.bnEditReportSettings.text=Configurar +CommandLineIngestSettingsPanel.bnEditIngestSettings.toolTipText=Configuracion del trabajo de Ingesta para el contexto del modo de procesamiento de linea de comando. +CommandLineIngestSettingsPanel.ingestDescriptionTextPane.text=Configurar los perfiles para usar desde la linea de comando. +CommandLineIngestSettingsPanel.reportDescriptionTextPane.text=Los perfiles de informe definen que modulo de informe y configuracion utilizar. +CommandLineIngestSettingsPanel.reportProfileLabel.text=Perfil de Informe: +CommandLineIngestSettingsPanel.ingestProfileLabel.text=Perfil de Ingesta: +CommandLineIngestSettingsPanel.bnEditReportSettings.AccessibleContext.accessibleName=Configurar +CommandLineIngestSettingsPanel.jTextPane1.text=Los perfiles de ingesta definen que filtros, modulos y configuracion de ingesta utilizar. diff --git a/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/Bundle_ar.properties new file mode 100644 index 0000000000..7ca0e6e604 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/Bundle_ar.properties @@ -0,0 +1,116 @@ +AbstractCommonFilesMetadataBuilder.buildCategorySelectionString.all=Todas las Categorias de Archivos +AbstractCommonFilesMetadataBuilder.buildCategorySelectionString.doc=Documentos +AbstractCommonFilesMetadataBuilder.buildCategorySelectionString.media=Medios +# {0} - threshold percent +AbstractCommonFilesMetadataBuilder.getPercentFilter.thresholdPercent=, Umbral {0}% +# {0} - attr type +# {1} - threshold string +AllInterCaseCommonAttributeSearcher.buildTabTitle.titleInterAll=Propiedades Comunes (Todos los Casos del Repositorio Central, {0}{1}) +# {0} - build category +# {1} - threshold string +AllIntraCaseCommonAttributeSearcher.buildTabTitle.titleIntraAll=Propiedades Comunes (Todas las Fuentes de Datos, {0}{1}) +# {0} - number of datasources +CommonAttributePanel.dataSourcesLabel.text=El Repositorio Central actual contiene {0} fuente(s) de datos. +CommonAttributePanel.exception=Excepcion Inesperada cargando Fuentes de Datos. +CommonAttributePanel.frame.title=Encontrar Propiedades Comunes +CommonAttributePanel.incompleteResults.continueText=\n\n ¿Continuar con la busqueda de todas formas? +CommonAttributePanel.incompleteResults.introText=Los resultados pueden estar incompletos. No todas las fuentes de datos en el caso actual fueron ingresadas en el Repositorio Central actual. Las siguientes fuentes de datos no han sido procesadas: +CommonAttributePanel.incompleteResults.title=La busqueda puede estar incompleta +CommonAttributePanel.intraCasePanel.title=Opciones del Caso Actual +CommonAttributePanel.search.done.exception=Excepcion Inesperada ejecutando Encontrar Propiedades Comunes. +CommonAttributePanel.search.done.interupted=Algo salio mal al encontrar propiedades comunes. +CommonAttributePanel.search.done.noCurrentCaseException=No se puede abrir el archivo del caso. +CommonAttributePanel.search.done.noResults=No se encontraron resultados. +CommonAttributePanel.search.done.searchProgressDisplay=Mostrando Resultados de Propiedades Comunes. +CommonAttributePanel.search.done.searchProgressGathering=Recopilando Resultados de Propiedades Comunes. +CommonAttributePanel.search.done.sqlException=No se pueden consultar las propiedades o fuentes de datos en la base de datos. +CommonAttributePanel.search.done.tskCoreException=No se puede ejecutar la consulta contra la base de datos. +CommonAttributePanel.search.results.pathText=Resultados de Propiedades Comunes +CommonAttributePanel.setupCases.done.exeutionException=Excepcion Inesperada cargando casos. +CommonAttributePanel.setupCases.done.interruptedException=Algo salio mal al construir el cuadro de dialogo de busqueda de Archivos Comunes. +CommonAttributePanel.setupDataSources.done.exception=Excepcion Inesperada cargando fuentes de datos. +CommonAttributePanel.setupDataSources.done.interupted=Algo salio mal al construir el cuadro de dialogo de busqueda de Archivos Comunes. +CommonAttributePanel.setupDataSources.done.noCurrentCaseException=No se puede abrir el archivo del caso. +CommonAttributePanel.setupDataSources.done.sqlException=No se pueden consultar las fuentes de datos en la base de datos. +CommonAttributePanel.setupDataSources.done.tskCoreException=No se puede ejecutar la consulta contra la base de datos. +CommonAttributePanel.setupDataSources.updateUi.noDataSources=No se encontraron fuentes de datos. +CommonAttributePanel.title=Panel de Propiedades Comunes +CommonAttributeSearchAction.getName.text=Encontrar Propiedades Comunes +CommonAttributeSearchAction.openPanel.caseNotInCentralRepo=\n - El caso actual no esta en el Repositorio Central. +CommonAttributeSearchAction.openPanel.centralRepoDisabled=\n - El Repositorio Central esta deshabilitado. +CommonAttributeSearchAction.openPanel.centralRepoInvalid=\n - La configuracion del Repositorio Central es invalida. +CommonAttributeSearchAction.openPanel.intro=La caracteristica de encontrar propiedades comunes no esta disponible porque: +CommonAttributeSearchAction.openPanel.noCaseOpen=\n - Ningun caso esta abierto. +CommonAttributeSearchAction.openPanel.notEnoughCases=\n - Menos de 2 casos existen en el Repositorio Central. +CommonAttributeSearchAction.openPanel.notEnoughDataSources=\n - No hay multiples fuentes de datos en el caso actual. +CommonAttributeSearchAction.openPanel.resolution=\n\nAborda uno de estos problemas para habilitar esta funcion. +CommonAttributeValueNode.CommonAttributeValueNode.format=Valor: %s +CommonFilesNode.getName.text=Archivos Comunes +CommonFilesPanel.commonFilesSearchLabel.text=Encuentra archivos en multiples fuentes de datos en el caso actual. +CommonFilesPanel.text=Indica que fuentes de datos considerar al buscar duplicados: +CommonFilesPanel.jRadioButton1.text=jRadioButton1 +CommonFilesPanel.jRadioButton2.text=Entre el caso actual y casos en el Repositorio Central +CommonFilesPanel.intraCaseRadio.label=Correlaciona solo dentro del caso actual +CommonFilesPanel.interCaseRadio.label=Correlaciona entre todos los casos conocidos (usa el Repositorio Central) +CommonFilesSearchResultsViewerTable.caseColLbl=Caso +CommonFilesSearchResultsViewerTable.dataSourceColLbl=Fuente de Datos +CommonFilesSearchResultsViewerTable.instancesColLbl=Instancias +CommonFilesSearchResultsViewerTable.localPath=Ruta Principal en el Caso Actual +CommonFilesSearchResultsViewerTable.noDescText=\ +CommonFilesSearchResultsViewerTable.pathColLbl=Ruta Principal +CommonFilesSearchResultsViewerTable.valueColLbl=Valor +InstanceCountNode.createSheet.noDescription=\ +InstanceCountNode.displayName=Existe en %s fuentes de datos (%s) +IntraCasePanel.selectDataSourceComboBox.actionCommand= +CommonAttributePanel.jCheckBox1.text=Ocultar archivos encontrados en mas de +CommonAttributePanel.jLabel1.text=% de fuentes de datos en repositorio central. +CommonAttributePanel.percentageThresholdCheck.text_1=Ocultar archivos encontrados en mas de +CommonAttributePanel.jCheckBox1.text=Ocultar archivos encontrados en mas de +CommonAttributePanel.jLabel1.text=% de fuentes de datos en repositorio central. +CommonAttributePanel.percentageThreshold.text=20 +CommonAttributePanel.jLabel1.text_1=% de fuentes de datos en repositorio central. +InterCasePanel.correlationTypeComboBox.toolTipText=Tipo de correlacion seleccionada +IntraCasePanel.selectedFileCategoriesButton.text=Solo los tipos de archivo seleccionados: +IntraCasePanel.categoriesLabel.text=Tipos de archivo a mostrar: +IntraCasePanel.allFileCategoriesRadioButton.toolTipText=No se aplican filtros a los resultados... +IntraCasePanel.allFileCategoriesRadioButton.text=Todos los tipos de archivo +IntraCasePanel.documentsCheckbox.text=Documentos +IntraCasePanel.pictureVideoCheckbox.text=Imagenes y videos +IntraCasePanel.selectedFileCategoriesButton.toolTipText=Selecciona entre las opciones a continuacion... +CommonAttributePanel.percentageThresholdTextTwo.text_1=% de fuentes de datos en Repositorio Central. +CommonAttributePanel.percentageThresholdCheck.text_1_1=Ocultar elementos encontrados en mas de +CommonAttributePanel.intraCaseRadio.text=Entre fuentes de datos en el caso actual +CommonAttributePanel.errorText.text=Para realizar una busqueda, debes seleccionar una categoria de archivo. +CommonAttributePanel.searchButton.text=Buscar +InterCasePanel.categoriesLabel.text=Tipos de archivo a mostrar: +InterCasePanel.documentsCheckbox.text=Documentos +InterCasePanel.pictureVideoCheckbox.text=Imagenes y videos +InterCasePanel.selectedFileCategoriesButton.toolTipText=Selecciona entre las opciones a continuacion... +InterCasePanel.selectedFileCategoriesButton.text=Solo los tipos de archivo seleccionados: +InterCasePanel.allFileCategoriesRadioButton.toolTipText=No se aplican filtros a los resultados... +InterCasePanel.allFileCategoriesRadioButton.text=Todos los tipos de archivo +InterCasePanel.specificCentralRepoCaseCheckbox.text=Los elementos comunes deben existir en un caso especifico: +IntraCasePanel.onlySpecificDataSourceCheckbox.text=Los elementos comunes deben existir en una fuente de datos especifica: +CommonAttributePanel.interCasePanel.border.title=Opciones de Repositorio Central +CommonAttributePanel.intraCasePanel.border.title=Opciones del caso actual +CommonAttributePanel.commonItemSearchDescription.text=Encontrar elementos que existan en multiples fuentes de datos o casos +CommonAttributePanel.scopeLabel.text=Alcance de la busqueda: +InterCasePanel.correlationComboBoxLabel.text=Tipo de propiedad a comparar: +CommonAttributePanel.percentageThresholdInputBox.text=20 +CommonAttributePanel.resultsDisplayLabel.text_2=Mostrar resultados organizados por: +CommonAttributePanel.organizeByCaseRadio.text=Caso +CommonAttributePanel.organizeByCountRadio.text=Numero de ocurrencias +CommonAttributePanel.caseResultsRadioButton.text=Caso +CommonAttributePanel.countResultsRadioButton.text=Numero de fuentes de datos +CommonAttributePanel.displayResultsLabel.text_2=Mostrar resultados organizados por: +# {0} - case name +# {1} - attr type +# {2} - threshold string +SingleInterCaseCommonAttributeSearcher.buildTabTitle.titleInterSingle=Propiedades Comunes (Repositorio Central Caso: {0}, {1}{2}) +# {0} - data source name +# {1} - build category +# {2} - threshold string +SingleIntraCaseCommonAttributeSearcher.buildTabTitle.titleIntraSingle=Propiedades Comunes (Fuente de Datos: {0}, {1}{2}) +UserInputErrorManager.categories=No se incluyen categorias de archivo en la busqueda. +UserInputErrorManager.frequency=Porcentaje de frecuencia invalido: 0 < % < 100. +ValueNode.createSheet.noDescription=\ diff --git a/Core/src/org/sleuthkit/autopsy/communications/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/communications/Bundle_ar.properties new file mode 100644 index 0000000000..4a556e7267 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/communications/Bundle_ar.properties @@ -0,0 +1,100 @@ +AccountNode.accountName=Cuenta +AccountNode.accountType=Tipo +AccountNode.device=Dispositivo +AccountNode.messageCount=Articulos +applyText=Aplicar +CTL_OpenCVTAction=Comunicaciones +CVTTopComponent.name=\ Visualizacion de Comunicaciones +CVTTopComponent.TabConstraints.tabTitle=Visualizar +CVTTopComponent.accountsBrowser.TabConstraints.tabTitle=Navegar +FiltersPanel.applyFiltersButton.text=Aplicar +FiltersPanel.devicesLabel.text=Dispositivos: +FiltersPanel.accountTypesLabel.text=Tipos de Cuenta: +FiltersPanel.filtersTitleLabel.text=Filtros +FiltersPanel.unCheckAllAccountTypesButton.text=Desmarcar Todo +FiltersPanel.checkAllAccountTypesButton.text=Marcar Todo +FiltersPanel.unCheckAllDevicesButton.text=Desmarcar Todo +FiltersPanel.checkAllDevicesButton.text=Marcar Todo +FiltersPanel.dateRangeLabel.text=Rango de Fechas: +FiltersPanel.startCheckBox.text=Inicio: +FiltersPanel.endCheckBox.text=Fin: +FiltersPanel.refreshButton.text=Actualizar +FiltersPanel.deviceRequiredLabel.text=Seleccionar al menos uno. +FiltersPanel.accountTypeRequiredLabel.text=Seleccionar al menos uno. +FiltersPanel.needsRefreshLabel.text=Los datos mostrados pueden estar desactualizados. Presiona Actualizar para actualizarlos.. +OpenCVTAction.displayName=Comunicaciones +PinAccountsAction.pluralText=Agregar Cuentas Seleccionadas a la Visualizacion +PinAccountsAction.singularText=Agregar Cuenta Seleccionada a la Visualizacion +refreshText=Actualizar Resultados +ResetAndPinAccountsAction.pluralText=Visualizar Solo Cuentas Seleccionadas +ResetAndPinAccountsAction.singularText=Visualizar Solo Cuenta Seleccionada +UnpinAccountsAction.pluralText=Eliminar Cuentas Seleccionadas +UnpinAccountsAction.singularText=Eliminar Cuenta Seleccionada +VisalizationPanel.paintingError=Problema al pintar la visualizacion. +# {0} - default name +VisualizationPane_accept_defaultName=El nombre del informe estaba vacio. Presiona Aceptar para aceptar el nombre del informe predeterminado.: {0} +VisualizationPane_blank_report_title=Nombre del Informe en Blanco +VisualizationPane_DisplayName=Abrir Informe +VisualizationPane_fileName_prompt=Ingresa un nombre para el Informe de Instantaneas de Comunicaciones: +VisualizationPane_MessageBoxTitle=Error al Abrir Informe +VisualizationPane_MissingReportFileMessage=El archivo del informe ya no existe.. +VisualizationPane_NoAssociatedEditorMessage=No hay un editor asociado para informes de este tipo o la aplicacion asociada no se pudo iniciar.. +VisualizationPane_NoOpenInEditorSupportMessage=Esta plataforma (sistema operativo) no admite abrir un archivo en un editor de esta manera.. +VisualizationPane_Open_Report=Abrir Informe +# {0} - report name +VisualizationPane_overrite_exiting=¿Sobrescribir informe existente?\n{0} +VisualizationPane_Report_OK_Button=Aceptar +# {0} - report path +VisualizationPane_Report_Success=Informe creado exitosamente en:\n{0} +VisualizationPane_ReportFileOpenPermissionDeniedMessage=Permiso denegado para abrir el archivo del informe. +VisualizationPane_reportName=Instantanea de Comunicaciones +VisualizationPanel.cancelButton.text=Cancelar +VisualizationPanel.computingLayout=Calculando Diseño +VisualizationPanel.jButton1.text=Organico Rapido +CVTTopComponent.vizPanel.TabConstraints.tabTitle=Visualizar +CVTTopComponent.accountsBrowser.TabConstraints.tabTitle_1=Navegar +CVTTopComponent.browseVisualizeTabPane.AccessibleContext.accessibleName=Visualizar +CVTTopComponent.vizPanel.TabConstraints.tabTitle_1=Visualizar +VisualizationPanel.fitGraphButton.text= +VisualizationPanel.fitZoomButton.toolTipText=Ajustar visualizacion al espacio disponible. +VisualizationPanel.fitZoomButton.text= +# {0} - layout name +VisualizationPanel.layoutFail.text={0} Fallo en el diseño. Prueba un diseño diferente.. +# {0} - layout name +VisualizationPanel.layoutFailWithLockedVertices.text={0} Fallo en el diseño con vertices bloqueados. Desbloquea algunos vertices o prueba un diseño diferente.. +VisualizationPanel.lockAction.pluralText=Bloquear Cuentas Seleccionadas +VisualizationPanel.lockAction.singularText=Bloquear Cuenta Seleccionada +VisualizationPanel.unlockAction.pluralText=Desbloquear Cuentas Seleccionadas +VisualizationPanel.unlockAction.singularText=Desbloquear Cuenta Seleccionada +VisualizationPanel.zoomActualButton.toolTipText=Restaurar zoom predeterminado de la visualizacion. +VisualizationPanel.zoomActualButton.text= +VisualizationPanel.zoomInButton.toolTipText=Acercar visualizacion. +VisualizationPanel.zoomInButton.text= +VisualizationPanel.zoomOutButton.toolTipText=Alejar visualizacion. +VisualizationPanel.zoomOutButton.text= +VisualizationPanel.fastOrganicLayoutButton.text= +VisualizationPanel.backButton.text_1= +VisualizationPanel.circleLayoutButton.text=Circulo +VisualizationPanel.organicLayoutButton.text=Organico +VisualizationPanel.hierarchyLayoutButton.text=Jerarquico +VisualizationPanel.clearVizButton.text_1= +VisualizationPanel.snapshotButton.text_1=Informe de Instantaneas +VisualizationPanel.clearVizButton.actionCommand= +VisualizationPanel.backButton.toolTipText=Haz clic para volver al estado anterior. +VisualizationPanel.forwardButton.toolTipText=Haz clic para avanzar al siguiente estado. +VisualizationPanel.fastOrganicLayoutButton.toolTipText=Haz clic para redibujar la visualizacion. +VisualizationPanel.clearVizButton.toolTipText=Haz clic para borrar la visualizacion. +FiltersPanel.limitHeaderLabel.text=Limite de Comunicaciones: +FiltersPanel.mostRecentLabel.text=Mas Reciente: +FiltersPanel.limitErrorMsgLabel.text=Valor entero no valido. +VisualizationPanel.forwardButton.text= +VisualizationPanel.zoomPercentLabel.text=100% +VisualizationPanel.zoomLabel.text=Zoom: +VisualizationPanel.snapshotButton.toolTipText=Generar Informe de Instantaneas. +CVTTopComponent.filtersPane.TabConstraints.tabTitle=Filtros +CVTTopComponent.filterTabPanel.TabConstraints.tabTitle=Filtros +VisualizationPanel.jTextPane1.text=Haz clic derecho en una cuenta en la tabla de Navegar Cuentas y selecciona "Visualizar" para comenzar. +VisualizationPanel_action_dialogs_title=Comunicaciones +VisualizationPanel_action_name_text=Informe de Instantaneas +VisualizationPanel_module_name=Comunicaciones +VisualizationPanel_snapshot_report_failure=Informe de instantaneas no creado. Ocurrio un error durante la creacion.. diff --git a/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ar.properties new file mode 100644 index 0000000000..84ac78647d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ar.properties @@ -0,0 +1,95 @@ +CallLogViewer_device_label=Dispositivo +CallLogViewer_duration_label=Duracion (segundos) +CallLogViewer_noCallLogs= +CallLogViewer_recipient_label=Para/Desde +CallLogViewer_title=Registros de llamadas +ContactDetailsPane.nameLabel.text=Marcador de posicion +ContactNode_Email=Direccion de correo electronico +ContactNode_Home_Number=Numero de casa +ContactNode_Mobile_Number=Numero movil +ContactNode_Name=Nombre +ContactNode_Office_Number=Numero de oficina +ContactNode_Phone=Numero de telefono +ContactNode_URL=URL +ContactsViewer_columnHeader_Email=Correo electronico +ContactsViewer_columnHeader_Name=Nombre +ContactsViewer_columnHeader_Phone=Telefono +ContactsViewer_noContacts_message= +ContactsViewer_tabTitle=Contactos +MediaViewer_Name=Adjuntos multimedia +MediaViewer_selection_failure_msg=Error al obtener adjuntos multimedia para las cuentas seleccionadas. +MediaViewer_selection_failure_title=Fallo en la seleccion +MessageNode_Node_Property_Attms=Recuento de adjuntos +MessageNode_Node_Property_Date=Fecha +MessageNode_Node_Property_From=De +MessageNode_Node_Property_Subject=Asunto +MessageNode_Node_Property_To=Para +MessageNode_Node_Property_Type=Tipo +MessageViewer_columnHeader_Attms=Adjuntos +MessageViewer_columnHeader_Date=Fecha +MessageViewer_columnHeader_EarlyDate=Mensaje mas temprano +MessageViewer_columnHeader_From=De +MessageViewer_columnHeader_Subject=Asunto +MessageViewer_columnHeader_To=Para +MessageViewer_no_messages= +MessageViewer_tabTitle=Mensajes +MessageViewer_viewMessage_all=Todos +MessageViewer_viewMessage_calllogs=Registros de llamadas +MessageViewer_viewMessage_selected=Seleccionados +MessageViewer_viewMessage_unthreaded=No enhebrado +# {0} - PersonaAccount count +RelationshipsNodeUtilities_Tooltip_suffix=(1 de {0}) +# {0} - Contact Name +# {1} - Persona Name +RelationshipsNodeUtilities_Tooltip_Template=Contacto: {0} - Persona: {1} +# {0} - accountIdentifer +SummaryPersonaPane_not_account_in_cr=No se pudo encontrar una cuenta con el identificador {0} en el Repositorio Central. +SummaryViewer.countsPanel.border.title=Comunicaciones +OutlineViewPanel.messageLabel.text= +SummaryViewer.messagesDataLabel.text=mensajes +SummaryViewer.callLogsDataLabel.text=registros de llamadas +SummaryViewer.contactsDataLabel.text=contactos +SummaryViewer.messagesLabel.text=Mensajes: +SummaryViewer.callLogsLabel.text=Registros de llamadas: +SummaryViewer_Account_Description=Esta cuenta representa un dispositivo en el caso. +SummaryViewer_Account_Description_MuliSelect=La informacion de resumen no esta disponible cuando se seleccionan varias cuentas. +SummaryViewer_CaseRefNameColumn_Title=Nombre del caso +SummaryViewer_CentralRepository_Message= +SummaryViewer_Country_Code=Pais: +SummaryViewer_Creation_Date_Title=Fecha de creacion +SummaryViewer_Device_Account_Description=Esta cuenta fue referenciada por un dispositivo en el caso. +SummaryViewer_Fetching_References= +SummaryViewer_FileRef_Message= +SummaryViewer_FileRefNameColumn_Title=Ruta +SummaryViewer_loading_count_message=Cargando.... +SummaryViewer_Persona_CR_Message= +SummaryViewer_Select_account_for_persona= +SummaryViewer_TabTitle=Resumen +ThreadRootMessagePanel.showAllCheckBox.text=Mostrar Todos los Mensajes +ThreadPane.backButton.text=<--- +SummaryViewer.caseReferencesPanel.border.title=Otras Ocurrencias +MessageViewer.threadsLabel.text=Seleccione un Hilo para Ver +MessageViewer.threadNameLabel.text= +MessageViewer.showingMessagesLabel.text=Mostrando Mensajes para el Hilo: +MessageViewer.backButton.AccessibleContext.accessibleDescription= +MessageViewer.backButton.text=Hilos +MessageViewer.showAllButton.text=Todos los Mensajes +SummaryViewer.thumbnailCntLabel.text=Adjuntos multimedia: +SummaryViewer.thumbnailsDataLabel.text=adjuntos +SummaryViewer.attachmentDataLabel.text=recuento +SummaryViewer.accountLabel.text= +SummaryViewer.contanctsPanel.border.title=Contactos de la Cuenta +SummaryViewer.accoutDescriptionLabel.text= +SummaryViewer.attachmentsLabel.text=Adjuntos Totales: +SummaryViewer.referencesLabel.text=Referencias de Comunicacion: +SummaryViewer.referencesDataLabel.text= +SummaryViewer.contactsLabel.text=Entradas de Agenda: +SummaryViewer.accountCountry.text= +SummaryViewer.fileRefPane.border.title=Referencias de Archivos en el Caso Actual +SummaryViewer.selectAccountFileRefLabel.text= +SummaryViewer.personaPanel.border.title=Personas +PersonaPanel.personaIDLabel.text=jLabel1 +SummaryPersonaPane.noPersonaLabel.text=No se encontraron personas +SummaryPersonaPane.messageLabel.text= +SummaryPersonaPane.createButton.text=Crear +PersonaPanel.viewButton.text=Ver diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ar.properties new file mode 100644 index 0000000000..2b822845e2 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ar.properties @@ -0,0 +1,955 @@ +# Copyright 2014-2020 Basis Technology Corp. +# +# Copyright 2006-2017 ICEsoft Technologies Canada Corp. +# +# 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. +# + +ApplicationContentViewer.title=Aplicacion +ApplicationContentViewer.toolTip=Muestra el contenido del archivo. +FXVideoPanel.pauseButton.infoLabel.playbackErr=No se puede reproducir el video. +FXVideoPanel.progress.bufferingCancelled=Se cancelo el almacenamiento en bufer de medios +FXVideoPanel.progress.bufferingInterrupted=El almacenamiento en bufer de medios fue interrumpido +FXVideoPanel.progress.errorWritingVideoToDisk=Error escribiendo video en disco +FXVideoPanel.mediaPane.infoLabel=Playback de videos eliminados no es soportado, usar reproductor externo. +FXVideoPanel.progress.bufferingFile=Almacenando en bufer {0} +FXVideoPanel.progressLabel.buffering=Almacenando en bufer... +FXVideoPanel.media.unsupportedFormat=Formato no compatible. +GstVideoPanel.cannotProcFile.err=El reproductor multimedia no puede procesar este archivo. +GstVideoPanel.noOpenCase.errMsg=No hay caso abierto disponible. +Html_text_display_error=El HTML text no puede ser mostrado, puede que no sea correctamente formado HTML. +HtmlPanel_showImagesToggleButton_hide=Ocultar Imagenes +HtmlPanel_showImagesToggleButton_show=Descargar Imagenes +HtmlViewer_encoding_error=Este archivo tiene encoding no soportado +HtmlViewer_file_error=Este archivo no se encuentra o no es legible. +MediaFileViewer.initGst.gstException.msg=Error inicializando gstreamer para visualizacion de audio/video y extraccion de frames. Visualizacion de video y audio sera deshabilitada. +GstVideoPanel.setupVideo.infoLabel.text=Playback de videos eliminados no es soportado, usar reproductor externo. +GstVideoPanel.exception.problemFile.msg=No se pueden capturar frames de este archivo ({0}). +GstVideoPanel.exception.problemPlay.msg=Problema con archivo de video; problema al intentar reproducir mientras se obtiene la duracion. +GstVideoPanel.exception.problemPause.msg=Problema con archivo de video; problema al intentar pausar mientras se obtiene la duracion. +GstVideoPanel.exception.problemPauseCaptFrame.msg=Problema con archivo de video; problema al intentar pausar mientras se captura un frame. +GstVideoPanel.exception.problemPlayCaptFrame.msg=Problema con archivo de video; problema al intentar reproducir mientras se captura un frame. +GstVideoPanel.exception.problemStopCaptFrame.msg=Problema con archivo de video; problema al intentar detener mientras se captura un frame. +GstVideoPanel.progress.buffering=Almacenando en bufer... +GstVideoPanel.progressLabel.bufferingErr=Error almacenando en bufer el archivo +GstVideoPanel.progress.infoLabel.updateErr=Error actualizando progreso del video: {0} +GstVideoPanel.ExtractMedia.progress.buffering=Almacenando en bufer {0} +MediaFileViewer.AccessibleContext.accessibleDescription= +MediaFileViewer.title=Medios +MediaFileViewer.toolTip=Muestra archivos multimedia soportados (imagenes, videos, audio) +MediaPlayerPanel.noSupport=Archivo no soportado. +MediaPlayerPanel.playbackDisabled=Se encontro un problema con el servicio de reproduccion de video y audio. Reproduccion de video y audio sera deshabilitada durante el resto de la sesion. +MediaPlayerPanel.timeFormat=%02d:%02d:%02d +MediaPlayerPanel.unknownTime=Desconocido +MediaViewImagePanel.createTagOption=Crear +MediaViewImagePanel.deleteTagOption=Eliminar +MediaViewImagePanel.errorLabel.OOMText=No se pudo cargar archivo en Media View: insuficiente memoria. +MediaViewImagePanel.errorLabel.text=No se pudo cargar archivo en Media View. +MediaViewImagePanel.exportSaveText=Guardar +MediaViewImagePanel.exportTagOption=Exportar +MediaViewImagePanel.externalViewerButton.text=Abrir en visor externo Ctrl+E +MediaViewImagePanel.fileChooserTitle=Elegir ubicacion de guardado +MediaViewImagePanel.hideTagOption=Ocultar +MediaViewImagePanel.successfulExport=Imagen etiquetada guardada exitosamente. +MediaViewImagePanel.unsuccessfulExport=No se puede exportar imagen etiquetada a disco. +MediaViewVideoPanel.pauseButton.text=\u25ba +MediaViewVideoPanel.progressLabel.text=00:00 +MediaViewVideoPanel.infoLabel.text=Info +MediaViewImagePanel.imgFileTooLarge.msg=No se pudo cargar archivo de imagen (demasiado grande): {0} + +Metadata.headerTitle=Metadatos +Metadata.nodeText.loading=Carga de metadatos... +Metadata.nodeText.none=Ninguno +Metadata.nodeText.truncated=(resultados truncados) +Metadata.nodeText.unknown=Desconocido +Metadata.tableRowTitle.acquisitionDetails=Detalles de adquisicion +Metadata.tableRowTitle.deviceId=ID de dispositivo +Metadata.tableRowTitle.downloadSource=Descargado desde +Metadata.tableRowTitle.imageType=Tipo +Metadata.tableRowTitle.mimeType=Tipo MIME +Metadata.tableRowTitle.name=Nombre +Metadata.tableRowTitle.sectorSize=Tamanio de sector +Metadata.tableRowTitle.sha1=SHA1 +Metadata.tableRowTitle.sha256=SHA-256 +Metadata.tableRowTitle.size=Tamanio +Metadata.tableRowTitle.fileNameAlloc=Asignacion de nombre de archivo +Metadata.tableRowTitle.metadataAlloc=Asignacion de metadatos +Metadata.tableRowTitle.modified=Modificado +Metadata.tableRowTitle.accessed=Accedido +Metadata.tableRowTitle.created=Creado +Metadata.tableRowTitle.changed=Cambiado +Metadata.tableRowContent.md5notCalc=No calculado +Metadata.tableRowTitle.md5=MD5 +Metadata.tableRowTitle.hashLookupResults=Resultados de busqueda de hash +Metadata.tableRowTitle.internalid=ID interno +Metadata.tableRowTitle.localPath=Ruta local +Metadata.tableRowTitle.timezone=Zona horaria +Metadata.tableRowTitle.type=Tipo +Metadata.title=Metadatos del archivo +Metadata.toolTip=Muestra metadatos sobre el archivo. +Metadata.nodeText.nonFilePassedIn=Se proporciono un elemento que no es un archivo +Metadata.nodeText.text=Desde The Sleuth Kit istat Tool: +Metadata.nodeText.exceptionNotice.text=Error al obtener metadatos del archivo: +MessageArtifactViewer.textbodyScrollPane.TabConstraints.tabTitle=Texto +JPEGViewerDummy.jLabel1.text=Estas viendo un archivo JPEG: +JPEGViewerDummy.jTextField1.text=jTextField1 +Metadata_dataArtifactTitle=Metadatos del archivo de origen +MetadataWorker.doInBackground.noDataMsg=Sin datos +PDFViewer.encryptedDialog=Este documento esta protegido por contrasenia. +PDFViewer.errorDialog=Se produjo un error al abrir este documento PDF. Verifica los registros para obtener mas informacion. Puedes continuar usando esta funcion en otros documentos PDF.. +PListNode.KeyCol=Clave +PListNode.TypeCol=Tipo +PListNode.ValueCol=Valor +PListViewer.DataType.message=Valor de datos binarios no mostrado +PListViewer.ExportFailed.message=Error en la exportacion del archivo Plist. +PListViewer.ExportSuccess.message=El archivo Plist se exporto correctamente +PListViewer.processPlist.errorMessage=Error al analizar/mostrar archivo plist. +PListViewer.processPlist.interruptedMessage=Interrupcion durante el analisis/mostrado de archivo plist. +SQLiteTableView.DisplayAs.text=Mostrar como +SQLiteTableView.DisplayAsMenuItem.Date=Fecha +SQLiteTableView.DisplayAsMenuItem.RawData=Datos sin procesar +SQLiteViewer.comboBox.noTableEntry=No se encontraron tablas +SQLiteViewer.csvExport.confirm.msg=¿Quieres sobrescribir el archivo existente? +SQLiteViewer.csvExport.fileName.empty=Por favor, ingresa un nombre de archivo para exportar. +SQLiteViewer.csvExport.title=Exportar a archivo CSV +SQLiteViewer.errorMessage.failedToExtractFile=No se pudo extraer el archivo de la fuente de datos. +SQLiteViewer.errorMessage.failedToinitJDBCDriver=No se pudo cargar el controlador JDBC para SQLite. +SQLiteViewer.errorMessage.failedToQueryDatabase=No se pudieron leer las tablas de la base de datos en el archivo. +SQLiteViewer.errorMessage.interrupted=Se interrumpio el procesamiento del archivo. +SQLiteViewer.errorMessage.noCurrentCase=El caso ha sido cerrado. +# {0} - exception message +SQLiteViewer.errorMessage.unexpectedError=Se produjo un error inesperado:\n{0). +SQLiteViewer.exportTableToCsv.FileName=Nombre de archivo: +SQLiteViewer.exportTableToCsv.TableName=Nombre de tabla: +SQLiteViewer.exportTableToCsv.write.errText=Error al exportar contenido de tabla a archivo CSV. +SQLiteViewer.nextPageButton.text= +SQLiteViewer.prevPageButton.text= +SQLiteViewer.numPagesLabel.text=N +SQLiteViewer.jLabel3.text=de +SQLiteViewer.currPageLabel.text=x +SQLiteViewer.jLabel2.text=Pagina +SQLiteViewer.numEntriesField.text=num Entradas +SQLiteViewer.jLabel1.text=Tabla +PListViewer.exportButton.text=Exportar +SQLiteViewer.exportCsvButton.text=Exportar a CSV +MediaViewImagePanel.rotateLeftButton.text= +MediaViewImagePanel.zoomInButton.text= +MediaViewImagePanel.rotateRightButton.text= +MediaViewImagePanel.zoomOutButton.text= +MediaViewImagePanel.zoomResetButton.text=Restablecer +MediaViewImagePanel.zoomTextField.text= +MediaViewImagePanel.rotationTextField.text= +MediaViewImagePanel.rotateLeftButton.toolTipText= +HtmlPanel.showImagesToggleButton.text=Descargar imagenes +MediaViewImagePanel.tagsMenu.text_1=Menu de etiquetas +MediaPlayerPanel.progressLabel.text=00:00:00/00:00:00 +MediaPlayerPanel.audioSlider.toolTipText= +MediaPlayerPanel.rewindButton.text= +MediaPlayerPanel.fastForwardButton.text= +MediaPlayerPanel.playButton.text= +MediaPlayerPanel.infoLabel.text=Sin errores +MediaPlayerPanel.VolumeIcon.text=Volumen +MediaPlayerPanel.playBackSpeedLabel.text=Velocidad: + +# The following message properties were taken from IcePDF 6.2.2 to allow +# for Japanese translation. +# + +##### +### This MessageBundle contains English text for ICEpdf View and Pilot RI's +## +# + + +# {0} - tableName +SQLiteViewer.readTable.errorText=Error al obtener filas para la tabla: {0} +# {0} - tableName +SQLiteViewer.selectTable.errorText=Error al obtener cantidad de filas para la tabla: {0} +TranslatablePanel.comboBoxOption.originalText=Texto Original +TranslatablePanel.comboBoxOption.translatedText=Texto Traducido +# {0} - exception message +TranslatablePanel.onSetContentError.text=Se produjo un error al mostrar el texto: {0} +## Window toolbar Title +viewer.window.title.default=Visor ICEpdf +viewer.window.title.open.default=Visor ICEpdf - [{0}] + +#status bar +viewer.statusbar.currentPage=Pagina {0} / {1} + +viewer.common.number.one=1 +viewer.common.number.two=2 +viewer.common.number.three=3 +viewer.common.number.four=4 +viewer.common.number.five=5 +viewer.common.number.six=6 +viewer.common.number.seven=7 +viewer.common.number.eight=8 +viewer.common.number.nine=9 +viewer.common.number.ten=10 +viewer.common.number.eleven=11 +viewer.common.number.twelve=12 +viewer.common.number.thirteen=13 +viewer.common.number.fourteen=14 +viewer.common.number.fifteen=15 +viewer.common.number.sixteen=16 +viewer.common.number.seventeen=17 +viewer.common.number.eighteen=18 +viewer.common.number.nineteen=19 +viewer.common.number.twenty=20 +viewer.common.number.twentyOne=21 +viewer.common.number.twentyTwo=22 +viewer.common.number.twentyThree=23 +viewer.common.number.twentyFour=24 +viewer.common.number.twentyFive=25 +viewer.common.number.twentySix=26 +viewer.common.number.twentySeven=27 +viewer.common.number.thirtySix=36 +viewer.common.number.fortyEight=48 + +## Top Page Control Toolbar +viewer.toolbar.hideToolBar.label=Ocultar Barra de Herramientas +viewer.toolbar.showToolBar.label=Mostrar Barra de Herramientas +viewer.toolbar.showUtilityPane.label=Mostrar Panel de Utilidades +viewer.toolbar.hideUtilityPane.label=Ocultar Panel de Utilidades +viewer.toolbar.open.label= +viewer.toolbar.open.tooltip=Abrir Documento +viewer.toolbar.saveAs.label=Guardar Como +viewer.toolbar.saveAs.tooltip=Guardar Como... +viewer.toolbar.print.label=Imprimir +viewer.toolbar.print.tooltip=Imprimir Documento +viewer.toolbar.search.label=Buscar +viewer.toolbar.search.tooltip=Buscar en el Documento +viewer.toolbar.utilityPane.label=Panel de Utilidades +viewer.toolbar.utilityPane.tooltip=Mostrar/Ocultar Panel de Utilidades +viewer.toolbar.navigation.label= +viewer.toolbar.navigation.pages.tooltip=Numero de Paginas +viewer.toolbar.navigation.pages.firstPage.label= +viewer.toolbar.navigation.current.tooltip=Numero de Pagina Actual +viewer.toolbar.navigation.current.firstPage.label= +viewer.toolbar.navigation.firstPage.label= +viewer.toolbar.navigation.firstPage.tooltip=Primera Pagina +viewer.toolbar.navigation.previousPage.label= +viewer.toolbar.navigation.previousPage.tooltip=Pagina Anterior +viewer.toolbar.navigation.nextPage.label= +viewer.toolbar.navigation.nextPage.tooltip=Pagina Siguiente +viewer.toolbar.navigation.lastPage.label= +viewer.toolbar.navigation.lastPage.tooltip=ultima Pagina +viewer.toolbar.pageIndicator=de {0} +viewer.toolbar.zoom.label= +viewer.toolbar.zoom.tooltip=Zoom +viewer.toolbar.zoom.out.label= +viewer.toolbar.zoom.out.tooltip=Alejar +viewer.toolbar.zoom.in.label= +viewer.toolbar.zoom.in.tooltip=Acercar +viewer.toolbar.pageFit.actualsize.label= +viewer.toolbar.pageFit.actualsize.tooltip=Tamanio Real +viewer.toolbar.pageFit.fitWindow.label= +viewer.toolbar.pageFit.fitWindow.tooltip=Ajustar a la Ventana +viewer.toolbar.pageFit.fitWidth.label= +viewer.toolbar.pageFit.fitWidth.tooltip=Ajustar al Ancho +viewer.toolbar.rotation.left.label= +viewer.toolbar.rotation.left.tooltip=Girar a la Izquierda +viewer.toolbar.rotation.right.label= +viewer.toolbar.rotation.right.tooltip=Girar a la Derecha +viewer.toolbar.tool.pan.label= +viewer.toolbar.tool.pan.tooltip=Herramienta de Desplazamiento +viewer.toolbar.tool.text.label= +viewer.toolbar.tool.text.tooltip=Herramienta de Seleccion de Texto +viewer.toolbar.tool.select.label= +viewer.toolbar.tool.select.tooltip=Herramienta de Seleccion +viewer.toolbar.tool.link.label= +viewer.toolbar.tool.link.tooltip=Herramienta de Anotacion de Enlace +viewer.toolbar.tool.highlight.label=Resaltar +viewer.toolbar.tool.highlight.tooltip=Herramienta de Anotacion de Resaltado +viewer.toolbar.tool.strikeOut.label=Tachar +viewer.toolbar.tool.strikeOut.tooltip=Herramienta de Anotacion Tachar +viewer.toolbar.tool.underline.label=Subrayar +viewer.toolbar.tool.underline.tooltip=Herramienta de Anotacion Subrayado +viewer.toolbar.tool.line.label=Linea +viewer.toolbar.tool.line.tooltip=Herramienta de Anotacion de Linea +viewer.toolbar.tool.lineArrow.label=Flecha de Linea +viewer.toolbar.tool.lineArrow.tooltip=Herramienta de Anotacion Flecha de Linea +viewer.toolbar.tool.rectangle.label=Rectangulo +viewer.toolbar.tool.rectangle.tooltip=Herramienta de Anotacion Rectangulo +viewer.toolbar.tool.circle.label=Circulo +viewer.toolbar.tool.circle.tooltip=Herramienta de Anotacion Circulo +viewer.toolbar.tool.ink.label=Tinta +viewer.toolbar.tool.ink.tooltip=Herramienta de Anotacion de Tinta +viewer.toolbar.tool.freeText.label=Texto Libre +viewer.toolbar.tool.freeText.tooltip=Herramienta de Anotacion Texto Libre +viewer.toolbar.tool.textAnno.label=Anotacion de Texto +viewer.toolbar.tool.textAnno.tooltip=Herramienta de Anotacion de Texto +viewer.toolbar.tool.plolyLine.label=Polilinea +viewer.toolbar.tool.plolyLine.tooltip=Herramienta de Anotacion Polilinea +viewer.toolbar.tool.zoomIn.label= +viewer.toolbar.tool.zoomIn.tooltip=Herramienta de Acercar +viewer.toolbar.tool.zoomMarquis.label= +viewer.toolbar.tool.zoomMarquis.tooltip=Herramienta de Cuadro de Zoom +viewer.toolbar.tool.zoomDynamic.label= +viewer.toolbar.tool.zoomDynamic.tooltip=Herramienta de Zoom Dinamico +viewer.toolbar.tool.zoomOut.label= +viewer.toolbar.tool.zoomOut.tooltip=Herramienta de Alejar +viewer.toolbar.pageFit.fontEngine.label= +viewer.toolbar.pageFit.fontEngine.tooltip=Habilitar/Deshabilitar Motor de Fuente +viewer.toolbar.tool.forms.highlight.label=Resaltar Formularios +viewer.toolbar.tool.forms.highlight.tooltip=Mostrar/Ocultar Resaltado de Formularios + +## Bottom Page View Control Toolbar +viewer.toolbar.pageView.nonContinuous.singlePage.label= +viewer.toolbar.pageView.nonContinuous.singlePage.tooltip=Vista de Pagina Individual No Continua +viewer.toolbar.pageView.nonContinuous.facingPage.label= +viewer.toolbar.pageView.nonContinuous.facingPage.tooltip=Vista de Pagina Adyacente No Continua +viewer.toolbar.pageView.continuous.singlePage.label= +viewer.toolbar.pageView.continuous.singlePage.tooltip=Vista de Pagina Individual Continua +viewer.toolbar.pageView.continuous.facingPage.label= +viewer.toolbar.pageView.continuous.facingPage.tooltip=Vista de Pagina Adyacente Continua + + +## File Menu and submenu items +viewer.menu.file.label=Archivo +viewer.menu.file.mnemonic=F +viewer.menu.open.label=Abrir +viewer.menu.open.file.label=Archivo... +viewer.menu.open.URL.label=URL... +viewer.menu.close.label=Cerrar +viewer.menu.saveAs.label=Guardar Como... +viewer.menu.exportText.label=Exportar Texto... +viewer.menu.exportSVG.label=Exportar SVG... +viewer.menu.documentPermission.label=Permisos del Documento... +viewer.menu.documentInformation.label=Informacion del Documento... +viewer.menu.documentFonts.label=Fuentes del Documento... +viewer.menu.printSetup.label=Configuracion de Impresion... +viewer.menu.print.label=Imprimir... +viewer.menu.exit.label=Salir + +## View Menu and submenu items +viewer.menu.edit.label=Editar +viewer.menu.edit.mnemonic=E +viewer.menu.edit.undo.label=Deshacer +viewer.menu.edit.redo.label=Rehacer +viewer.menu.edit.copy.label=Copiar +viewer.menu.edit.delete.label=Eliminar +viewer.menu.edit.selectAll.label=Seleccionar Todo +viewer.menu.edit.deselectAll.label=Deseleccionar Todo +## View Menu and submenu items +viewer.menu.view.label=Ver +viewer.menu.view.mnemonic=V +viewer.menu.view.actualSize.label=Tamanio Real +viewer.menu.view.fitInWindow.label=Ajustar a la Ventana +viewer.menu.view.fitWidth.label=Ajustar al Ancho +viewer.menu.view.zoomIn.label=Acercar +viewer.menu.view.zoomOut.label=Alejar +viewer.menu.view.rotateLeft.label=Girar a la Izquierda +viewer.menu.view.rotateRight.label=Girar a la Derecha +viewer.menu.view.hideToolBar.label=Ocultar Barra de Herramientas +viewer.menu.view.showToolBar.label=Mostrar Barra de Herramientas +viewer.menu.view.showUtilityPane.label=Mostrar Panel de Utilidades +viewer.menu.view.hideUtilityPane.label=Ocultar Panel de Utilidades + +## Document Menu and submenu items +viewer.menu.document.label=Documento +viewer.menu.document.mnemonic=D +viewer.menu.document.firstPage.label=Primera Pagina +viewer.menu.document.previousPage.label=Pagina Anterior +viewer.menu.document.nextPage.label=Pagina Siguiente +viewer.menu.document.lastPage.label=ultima Pagina +viewer.menu.document.search.label=Buscar... +viewer.menu.document.gotToPage.label=Ir a Pagina... + +## Window Menu and submenu items +viewer.menu.window.label=Ventana +viewer.menu.window.mnemonic=W +viewer.menu.window.minAll.label=Minimizar Todo +viewer.menu.window.minAll.mnemonic=M +viewer.menu.window.frontAll.label=Traer Todo al Frente +viewer.menu.window.frontAll.mnemonic=B +viewer.menu.window.1.label=1 +viewer.menu.window.1.mnemonic=1 +viewer.menu.window.2.label=2 +viewer.menu.window.2.mnemonic=2 +viewer.menu.window.3.label=3 +viewer.menu.window.3.mnemonic=3 +viewer.menu.window.4.label=4 +viewer.menu.window.4.mnemonic=4 +viewer.menu.window.5.label=5 +viewer.menu.window.5.mnemonic=5 +viewer.menu.window.6.label=6 +viewer.menu.window.6.mnemonic=6 +viewer.menu.window.7.label=7 +viewer.menu.window.7.mnemonic=7 +viewer.menu.window.8.label=8 +viewer.menu.window.8.mnemonic=8 +viewer.menu.window.9.label=9 +viewer.menu.window.9.mnemonic=9 +## Add as many entries as you want, to viewer.menu.window.X.label and mnemonic +## where X is an incrementing integer. The mnemonic should be one unique +## character found within the label + +## Help Menu and submenu items +viewer.menu.help.label=Ayuda +viewer.menu.help.mnemonic=H +viewer.menu.help.about.label=Acerca del Visor ICEpdf... + +## General error dialog +viewer.dialog.error.exception.title=ICEsoft ICEpdf - Excepcion +viewer.dialog.error.exception.msg=Se produjo un error al ejecutar tu comando debido a la siguiente excepcion\n{0}. + +## Open File Dialog +viewer.dialog.openFile.title=Abrir Archivo +viewer.dialog.openFile.error.title=ICEsoft ICEpdf - Error al Abrir Archivo +viewer.dialog.openFile.error.msg=ICEpdf no pudo abrir el archivo especificado en {0}\nEl archivo puede estar corrupto o no ser de un tipo de archivo compatible.. + +viewer.dialog.openDocument.pdfException.title=ICEsoft ICEpdf - Excepcion PDF +viewer.dialog.openDocument.pdfException.msg=ICEpdf no pudo abrir el archivo especificado {0} \nEl archivo puede estar corrupto o no ser de un tipo de archivo compatible.. + +viewer.dialog.openDocument.pdfSecurityException.title=ICEsoft ICEpdf - Excepcion de Seguridad de PDF +viewer.dialog.openDocument.pdfSecurityException.msg=ICEpdf no pudo abrir el archivo encriptado en {0}\nEsto puede ser el resultado de una contrasenia invalida o de un proveedor de seguridad JCE faltante.\n\nPor favor, consulta la Guia del Desarrollador de ICEpdf para obtener mas informacion.. + +viewer.dialog.openDocument.exception.title=ICEsoft ICEpdf - Excepcion +viewer.dialog.openDocument.exception.msg=ICEpdf no pudo abrir el archivo especificado en {0}\nEl archivo puede estar corrupto o no ser de un tipo de archivo compatible.. + +viewer.dialog.openURL.exception.title=ICEsoft ICEpdf - Excepcion de URL +viewer.dialog.openURL.exception.msg=ICEpdf no pudo abrir el archivo especificado. {0} \nen URL: {1} +viewer.dialog.openURL.downloading.msg=Descargando {0} + +## General error dialog +viewer.dialog.information.copyAll.title=ICEsoft ICEpdf - Informacion +viewer.dialog.information.copyAll.msg=El documento tiene mas de {0} paginas, por favor usa\n"Exportar texto..." para extraer el texto del documento. + +## Open URL Dialog +viewer.dialog.security.title=Seguridad del Documento +viewer.dialog.security.msg=Este PDF esta protegido +viewer.dialog.security.password.label=Contrasenia: +viewer.dialog.security.okButton.label=Aceptar +viewer.dialog.security.okButton.mnemonic=O +viewer.dialog.security.cancelButton.label=Cancelar +viewer.dialog.security.cancelButton.mnemonic=C + + +## Open URL Dialog +viewer.dialog.openURL.title=Abrir URL + +### Save a Copy Dialog +viewer.dialog.saveAs.title=Guardar Como +viewer.dialog.saveAs.extensionError.title=ICEsoft ICEpdf - Error al Guardar +viewer.dialog.saveAs.extensionError.msg=ICEpdf no pudo guardar en {0} porque no es un tipo de archivo compatible. +viewer.dialog.saveAs.noExtensionError.title=ICEsoft ICEpdf - Error al Guardar +viewer.dialog.saveAs.noExtensionError.msg=Por favor, especifica una extension de archivo. +viewer.dialog.saveAs.noneUniqueName.title=ICEsoft ICEpdf - Error al Guardar +viewer.dialog.saveAs.noneUniqueName.msg=El archivo llamado {0} ya existe. Por favor, especifica un nombre unico. +viewer.dialog.saveAs.noPermission.title=Visor ICEpdf RI - Error al Guardar +viewer.dialog.saveAs.noPermission.msg=No tienes permiso o credenciales para guardar este documento. +viewer.dialog.saveAs.noUpdates.title=Visor ICEpdf RI +viewer.dialog.saveAs.noUpdates.msg=Los cambios en el documento no se guardaran, por favor actualiza a ICEpdf PRO. +viewer.dialog.saveOnClose.noUpdates.title=Visor ICEpdf RI +viewer.dialog.saveOnClose.noUpdates.msg=¿Deseas guardar los cambios en {0}? + +## Export Text Dialog +viewer.dialog.exportText.title=Exportar Texto del Documento +viewer.dialog.exportText.progress.msg=Extrayendo Texto del PDF +viewer.dialog.exportText.noExtensionError.title=ICEsoft ICEpdf - Error al Guardar +viewer.dialog.exportText.noExtensionError.msg=Por favor, especifica una extension de archivo. +# Text extraction output file +viewer.exportText.fileStamp.msg=Visor ICEsoft ICEpdf, (c) ICEsoft Technologies, Inc.. +viewer.exportText.pageStamp.msg= +# Completed x out of y page(s). +viewer.exportText.fileStamp.progress.msg=Completado {0} de {1}. +viewer.exportText.fileStamp.progress.oneFile.msg={2} pagina +viewer.exportText.fileStamp.progress.moreFile.msg={2} paginas + +## Export SVG Dialog +viewer.dialog.exportSVG.title=Exportar a SVG +viewer.dialog.exportSVG.status.exporting.msg=Exportando pagina {0} al archivo SVG {1} ... +viewer.dialog.exportSVG.status.error.msg=Problema al exportar la pagina {0} al archivo SVG {1} : {2} +viewer.dialog.exportSVG.status.finished.msg=Finalizada la exportacion de la pagina {0} al archivo SVG {1} +viewer.dialog.exportSVG.noExtensionError.title=ICEsoft ICEpdf - Error de SVG +viewer.dialog.exportSVG.noExtensionError.msg=Por favor, especifica una extension de archivo. +viewer.dialog.exportSVG.exportError.title=ICEsoft ICEpdf - Error de SVG +viewer.dialog.exportSVG.exportError.msg=ICEpdf no pudo exportar a {0} \n... porque no es un tipo de archivo compatible o \n... porque el archivo ha sido corrompido.. + +# Printing Progress bar +viewer.dialog.printing.status.progress.msg=Pagina {0} de {1} +viewer.dialog.printing.status.start.msg=Enviando Pagina(s) a la Impresora + + +## Document Permissions Dialog +viewer.dialog.documentPermissions.title=Permisos del Documento +viewer.dialog.documentPermissions.securityMethod.label=Metodo de Seguridad: +viewer.dialog.documentPermissions.userPassword.label=Contrasenia del Usuario: +viewer.dialog.documentPermissions.ownerPassword.label=Contrasenia del Propietario: +viewer.dialog.documentPermissions.printing.label=Impresion: +viewer.dialog.documentPermissions.changing.label=Cambiar el Documento: +viewer.dialog.documentPermissions.copyExtraction.label=Copiar o Extraer Contenido: +viewer.dialog.documentPermissions.comments.label=Crear Comentarios y Campos de Formularios: +viewer.dialog.documentPermissions.formFillingIn.label=Rellenar Campos de Formularios o Firmar: +viewer.dialog.documentPermissions.accessibility.label=Accesibilidad de Contenido Habilitada: +viewer.dialog.documentPermissions.assembly.label=Ensamblaje de Documentos: +viewer.dialog.documentPermissions.encryptionLevel.label=Nivel de Encriptacion: +viewer.dialog.documentPermissions.securityLevel={0}-bits v{1} R {2} +viewer.dialog.documentPermissions.none=Ninguno +viewer.dialog.documentPermissions.no=No +viewer.dialog.documentPermissions.yes=Si +viewer.dialog.documentPermissions.allowed=Permitido +viewer.dialog.documentPermissions.notAllowed=No Permitido +viewer.dialog.documentPermissions.fullyAllowed=Totalmente Permitido +viewer.dialog.documentPermissions.standardSecurity=Seguridad Estandar de Adobe Acrobat +viewer.dialog.documentPermissions.partial=Parcial (Baja Calidad) + + +## Document Information Dialog +viewer.dialog.documentInformation.title=Informacion del Documento +viewer.dialog.documentInformation.title.label=Titulo: +viewer.dialog.documentInformation.subject.label=Tema: +viewer.dialog.documentInformation.author.label=Autor: +viewer.dialog.documentInformation.keywords.label=Palabras Clave: +viewer.dialog.documentInformation.creator.label=Creador: +viewer.dialog.documentInformation.producer.label=Productor: +viewer.dialog.documentInformation.created.label=Creado: +viewer.dialog.documentInformation.modified.label=Modificado: +viewer.dialog.documentInformation.notAvailable=No Disponible + +## Go to Page Dialog +viewer.dialog.goToPage.title=Ir a Pagina... +viewer.dialog.goToPage.description.label=Numero de Pagina + +## About Dialog +viewer.dialog.about.title=Acerca del Visor ICEpdf +viewer.dialog.about.pageNumber.label=\n\nConsulta el sitio web de ICEpdf para las ultimas noticias:\nhttp://www.icepdf.org/ \n\n + +## Font Properties Dialog +viewer.dialog.fonts.title=Propiedades de Fuente del Documento +viewer.dialog.fonts.border.label=Fuentes utilizadas en este documento +viewer.dialog.fonts.info.type.label=Tipo: {0} +viewer.dialog.fonts.info.encoding.label=Codificacion: {0} +viewer.dialog.fonts.info.substitution.type.label=Tipo Real: {0} +viewer.dialog.fonts.info.substitution.path.label=Ruta: {0} +viewer.dialog.fonts.searching.label=Recopilando datos de fuentes ({0}%). +viewer.dialog.fonts.resetCache.label=Restablecer Cache +viewer.dialog.fonts.resetCache.tip=Restablecer el archivo de cache de propiedades de fuentes y escanear el sistema en busca de fuentes nuevas. + +## Utility Pane Bookmarks Tab +viewer.utilityPane.bookmarks.tab.title=Marcadores + +## Utility Pane Bookmarks Tab +viewer.utilityPane.attachments.tab.title=Adjuntos +viewer.utilityPane.attachments.column.fileName.title=Nombre +viewer.utilityPane.attachments.column.description.title=Descripcion +viewer.utilityPane.attachments.column.modified.title=Modificado +viewer.utilityPane.attachments.column.size.title=Tamanio +viewer.utilityPane.attachments.column.compressedSize.title=Tamanio comprimido +viewer.utilityPane.attachments.menu.saveAs.label=Guardar Como... +viewer.utilityPane.attachments.saveAs.replace.title=Visor ICEsoft ICEpdf - Error al Guardar +viewer.utilityPane.attachments.saveAs.replace.msg=El archivo llamado {0} ya existe. ¿Quieres reemplazarlo? + +## Utility Pane Thumbnails +viewer.utilityPane.thumbs.tab.title=Miniaturas + +## Layers Pane +viewer.utilityPane.layers.tab.title=Capas + +## Signature Pane +viewer.utilityPane.signatures.tab.title=Firmas +viewer.utilityPane.signatures.tab.certTree.error.label=Campos de Firma no Firmados. No se pudo validar el certificado del firmante {0} {1}. +viewer.utilityPane.signatures.tab.certTree.rootSigned.label=Firmado por {0} {1}. +viewer.utilityPane.signatures.tab.certTree.rootValidating.label=Validando firma {0} {1}. +viewer.utilityPane.signatures.tab.certTree.cert.invalid.label=La firma no es valida: +viewer.utilityPane.signatures.tab.certTree.cert.unknown.label=La firma es valida: +viewer.utilityPane.signatures.tab.certTree.cert.valid.label=La validez de la firma es desconocida: +viewer.utilityPane.signatures.tab.certTree.doc.modified.label=Esta version del documento esta sin cambios, pero se han realizado cambios posteriores. +viewer.utilityPane.signatures.tab.certTree.doc.unmodified.label=El documento no ha sido modificado desde que fue firmado. +viewer.utilityPane.signatures.tab.certTree.doc.major.label=El documento ha sido modificado o corrompido desde que fue firmado. +viewer.utilityPane.signatures.tab.certTree.signature.identity.unknown.label=La identidad del firmante es desconocida porque no se pudo encontrar en tu almacen de claves. +viewer.utilityPane.signatures.tab.certTree.signature.identity.unchecked.label=La firma es valida, pero no se pudo verificar la revocacion de la identidad del firmante. +viewer.utilityPane.signatures.tab.certTree.signature.identity.valid.label=La identidad del firmante es valida. +viewer.utilityPane.signatures.tab.certTree.signature.time.local.label=La hora de firma proviene del reloj de la computadora de este firmante. +viewer.utilityPane.signatures.tab.certTree.signature.time.embedded.label=La firma incluia un sello de tiempo incrustado, pero no se pudo validar. +viewer.utilityPane.signatures.tab.certTree.signature.details.label=Detalles de la Firma +viewer.utilityPane.signatures.tab.certTree.signature.details.reason.label=Motivo: {0} +viewer.utilityPane.signatures.tab.certTree.signature.details.location.label=Ubicacion: {0} +viewer.utilityPane.signatures.tab.certTree.signature.details.full.label=Detalles del Certificado... +viewer.utilityPane.signatures.tab.certTree.signature.lastChecked.label=ultima Verificacion: {0} +viewer.utilityPane.signatures.tab.certTree.unsigned.label=Campos de Firma no Firmados. + +## Signature certificate view dialog. +viewer.utilityPane.signatures.cert.dialog.title=Detalles del Certificado +viewer.utilityPane.signatures.cert.dialog.closeButton.label=Cerrar +viewer.utilityPane.signatures.cert.dialog.closeButton.mnemonic=C +viewer.utilityPane.signatures.cert.dialog.info.notAvailable.label=N/A +viewer.utilityPane.signatures.cert.dialog.info.unknownSubject.label=Asunto N/A +viewer.utilityPane.signatures.cert.dialog.info.unknownIssuer.label=Emisor N/A +viewer.utilityPane.signatures.cert.dialog.info.certificateInfo.label={0} - {1} +viewer.utilityPane.signatures.cert.dialog.info.column1.label=Campo +viewer.utilityPane.signatures.cert.dialog.info.column2.label=Valor +viewer.utilityPane.signatures.cert.dialog.info.version.label=Version +viewer.utilityPane.signatures.cert.dialog.info.version.value=v{0} +viewer.utilityPane.signatures.cert.dialog.info.serialNumber.label=Numero de Serie +viewer.utilityPane.signatures.cert.dialog.info.serialNumber.value={0} +viewer.utilityPane.signatures.cert.dialog.info.signatureAlgorithm.label=Algoritmo de Firma +viewer.utilityPane.signatures.cert.dialog.info.signatureAlgorithm.value={0} +viewer.utilityPane.signatures.cert.dialog.info.issuer.label=Emisor +viewer.utilityPane.signatures.cert.dialog.info.issuer.value=Organizacion: {0} \nUnidad de Organizacion: {1} \nNombre Comun: {2} \nLocal: {3} \nState: {4} \nCountry: {5} \nEmail: {6} +viewer.utilityPane.signatures.cert.dialog.info.validity.label=Validez +viewer.utilityPane.signatures.cert.dialog.info.validity.value=Desde: {0}\n Para: {1} +viewer.utilityPane.signatures.cert.dialog.info.subject.label=Asunto +viewer.utilityPane.signatures.cert.dialog.info.subject.value=Organizacion: {0} \nUnidad de Organizacion: {1} \nNombre Comun: {2} \nLocal: {3} \nState: {4} \nCountry: {5} \nEmail: {6} +viewer.utilityPane.signatures.cert.dialog.info.signature.label=Firma +viewer.utilityPane.signatures.cert.dialog.info.md5.label=Huella Digital MD5 +viewer.utilityPane.signatures.cert.dialog.info.md5.value={0} +viewer.utilityPane.signatures.cert.dialog.info.sha1.label=Huella Digital SHA1 +viewer.utilityPane.signatures.cert.dialog.info.sha1.value={0} +viewer.utilityPane.signatures.verify.initializingMessage.label=Validando {0} de {1} Firmas +viewer.utilityPane.signatures.verify.completeMessage.label=Proceso de validacion completo +viewer.utilityPane.signatures.verify.validating.label=Validando firma... +## Annotation Tab +viewer.utilityPane.annotation.tab.title=Anotaciones +## Utility Pane Annotation Link Tab +viewer.utilityPane.annotation.link.appearance.title=Anotacion de Enlace +viewer.utilityPane.annotation.link.highlightType=Estilo de Resaltado: +viewer.utilityPane.annotation.link.none=Ninguno +viewer.utilityPane.annotation.link.invert=Invertir` +viewer.utilityPane.annotation.link.outline=Contorno +viewer.utilityPane.annotation.link.push=Empujar + +## Utility Pane Annotation text markup Tab +viewer.utilityPane.annotation.textMarkup.appearance.title=Anotacion de Marcado de Texto +viewer.utilityPane.annotation.textMarkup.highlightType=Tipo: +viewer.utilityPane.annotation.textMarkup.colorChooserTitle=Color de Marcado +viewer.utilityPane.annotation.textMarkup.colorLabel=Color: +viewer.utilityPane.annotation.textMarkup.transparencyLabel=Transparencia: +## Utility Pane Annotation line Tab +viewer.utilityPane.annotation.line.appearance.title=Anotacion de Linea +viewer.utilityPane.annotation.line.lineThickness=Grosor de Linea: +viewer.utilityPane.annotation.line.lineStyle=Estilo de Linea: +viewer.utilityPane.annotation.line.startStyle=Inicio: +viewer.utilityPane.annotation.line.endStyle=Fin: +viewer.utilityPane.annotation.line.colorChooserTitle=Color de Linea +viewer.utilityPane.annotation.line.colorInternalChooserTitle=Color Interno de Linea +viewer.utilityPane.annotation.line.colorLabel=Color: +viewer.utilityPane.annotation.line.colorInternalLabel=Color de Relleno: +viewer.utilityPane.annotation.line.end.none=Ninguno +viewer.utilityPane.annotation.line.end.openArrow=Flecha Abierta +viewer.utilityPane.annotation.line.end.closedArrow=Flecha Cerrada +viewer.utilityPane.annotation.line.end.diamond=Diamante +viewer.utilityPane.annotation.line.end.square=Cuadrado +viewer.utilityPane.annotation.line.end.circle=Circulo +viewer.utilityPane.annotation.line.transparencyLabel=Transparencia: + +## Utility Pane Annotation square Tab +viewer.utilityPane.annotation.square.appearance.title=Anotacion de Cuadrado +viewer.utilityPane.annotation.square.lineThickness=Grosor de Borde: +viewer.utilityPane.annotation.square.lineStyle=Estilo de Borde: +viewer.utilityPane.annotation.square.colorBorderChooserTitle=Color de Borde +viewer.utilityPane.annotation.square.colorInteriorChooserTitle=Color de Relleno +viewer.utilityPane.annotation.square.borderTypeLabel=Tipo de Borde: +viewer.utilityPane.annotation.square.colorBorderLabel=Color de Borde: +viewer.utilityPane.annotation.square.colorInteriorLabel=Color de Relleno: +viewer.utilityPane.annotation.square.fillTypeLabel=Tipo de Relleno: +viewer.utilityPane.annotation.square.transparencyLabel=Transparencia: +## Utility Pane Annotation free text Tab +viewer.utilityPane.annotation.freeText.appearance.title=Anotacion de Texto Libre +viewer.utilityPane.annotation.freeText.font.name=Nombre de Fuente: +viewer.utilityPane.annotation.freeText.font.style=Estilo de Fuente: +viewer.utilityPane.annotation.freeText.font.size=Tamanio de Fuente: +viewer.utilityPane.annotation.freeText.font.color=Color de Fuente: +viewer.utilityPane.annotation.freeText.font.color.ChooserTitle=Color de Fuente +viewer.utilityPane.annotation.freeText.border.thickness=Grosor de Borde: +viewer.utilityPane.annotation.freeText.border.type=Tipo de Borde: +viewer.utilityPane.annotation.freeText.border.style=Estilo de Borde: +viewer.utilityPane.annotation.freeText.border.color=Color de Borde: +viewer.utilityPane.annotation.freeText.border.color.ChooserTitle=Color de Borde +viewer.utilityPane.annotation.freeText.fill.type=Tipo de Relleno: +viewer.utilityPane.annotation.freeText.fill.color=Color de Relleno: +viewer.utilityPane.annotation.freeText.transparencyLabel=Transparencia: +viewer.utilityPane.annotation.freeText.fill.color.ChooserTitle=Color de Relleno +viewer.utilityPane.annotation.freeText.font.dialog=Dialogo +viewer.utilityPane.annotation.freeText.font.dialogInput=Entrada de Dialogo +viewer.utilityPane.annotation.freeText.font.monospaced=Espaciado Monoespaciado +viewer.utilityPane.annotation.freeText.font.serif=Serif +viewer.utilityPane.annotation.freeText.font.sanSerif=SansSerif +viewer.utilityPane.annotation.freeText.font.style.plain=Plain +viewer.utilityPane.annotation.freeText.font.style.italic=Italic +viewer.utilityPane.annotation.freeText.font.style.bold=Bold +viewer.utilityPane.annotation.freeText.font.name.helvetica=Helvetica +viewer.utilityPane.annotation.freeText.font.name.helveticaOblique=Helvetica-Oblique +viewer.utilityPane.annotation.freeText.font.name.helveticaBold=Helvetica-Bold +viewer.utilityPane.annotation.freeText.font.name.HelveticaBoldOblique=Helvetica-BoldOblique +viewer.utilityPane.annotation.freeText.font.name.timesItalic=Times-Italic +viewer.utilityPane.annotation.freeText.font.name.timesBold=Times-Bold +viewer.utilityPane.annotation.freeText.font.name.timesBoldItalic=Times-BoldItalic +viewer.utilityPane.annotation.freeText.font.name.timesRoman=Times-Roman +viewer.utilityPane.annotation.freeText.font.name.courier=Courier +viewer.utilityPane.annotation.freeText.font.name.courierOblique=Courier-Oblique +viewer.utilityPane.annotation.freeText.font.name.courierBoldOblique=Courier-BoldOblique +viewer.utilityPane.annotation.freeText.font.name.courierBold=Courier-Bold + +## Utility Pane Annotation text Tab +viewer.utilityPane.annotation.text.appearance.title=Anotacion de Texto +viewer.utilityPane.annotation.text.iconName=Icono: +viewer.utilityPane.annotation.text.iconName.comment=Comentario +viewer.utilityPane.annotation.text.iconName.check=Marca de Verificacion +viewer.utilityPane.annotation.text.iconName.checkMark=Marca de Verificacion +viewer.utilityPane.annotation.text.iconName.circle=Circulo +viewer.utilityPane.annotation.text.iconName.cross=Cruz +viewer.utilityPane.annotation.text.iconName.crossHairs=Cruz de Mira +viewer.utilityPane.annotation.text.iconName.help=Ayuda +viewer.utilityPane.annotation.text.iconName.insert=Insertar +viewer.utilityPane.annotation.text.iconName.key=Clave +viewer.utilityPane.annotation.text.iconName.newParagraph=Nuevo Parrafo +viewer.utilityPane.annotation.text.iconName.paragraph=Parrafo +viewer.utilityPane.annotation.text.iconName.rightArrow=Flecha Derecha +viewer.utilityPane.annotation.text.iconName.rightPointer=Puntero Derecho +viewer.utilityPane.annotation.text.iconName.star=Estrella +viewer.utilityPane.annotation.text.iconName.upArrow=Flecha hacia Arriba +viewer.utilityPane.annotation.text.iconName.upLeftArrow=Flecha hacia Arriba y a la Izquierda + +## Utility Pane Annotation circle Tab +viewer.utilityPane.annotation.circle.appearance.title=Anotacion de Circulo +viewer.utilityPane.annotation.circle.lineThickness=Grosor de Borde: +viewer.utilityPane.annotation.circle.lineStyle=Estilo de Borde: +viewer.utilityPane.annotation.circle.colorBorderChooserTitle=Color de Borde +viewer.utilityPane.annotation.circle.colorInteriorChooserTitle=Color Interior +viewer.utilityPane.annotation.circle.colorBorderLabel=Color de Borde: +viewer.utilityPane.annotation.circle.colorInteriorLabel=Color de Relleno: +viewer.utilityPane.annotation.circle.fillTypeLabel=Tipo de Relleno: +viewer.utilityPane.annotation.circle.transparencyLabel=Transparencia: +## Utility Pane Annotation ink Tab +viewer.utilityPane.annotation.ink.appearance.title=Anotacion de Tinta +viewer.utilityPane.annotation.ink.lineThickness=Grosor de Tinta: +viewer.utilityPane.annotation.ink.lineStyle=Estilo de Tinta: +viewer.utilityPane.annotation.ink.colorBorderChooserTitle=Color de Tinta +viewer.utilityPane.annotation.ink.colorBorderLabel=Color de Tinta: +viewer.utilityPane.annotation.ink.transparencyLabel=Transparencia: +## Utility Pane border Tab +viewer.utilityPane.annotation.border.title=Borde +viewer.utilityPane.annotation.border.linkType=Tipo de Borde: +viewer.utilityPane.annotation.border.lineThickness=Grosor de Borde: +viewer.utilityPane.annotation.border.lineStyle=Estilo de Borde: +viewer.utilityPane.annotation.border.colorChooserTitle=Color de Borde +viewer.utilityPane.annotation.border.colorLabel=Color: +viewer.utilityPane.annotation.border.borderType.visibleRectangle=Visible +viewer.utilityPane.annotation.border.borderType.invisibleRectangle=Invisible +viewer.utilityPane.annotation.border.solid=Solido +viewer.utilityPane.annotation.border.dashed=Discontinuo +viewer.utilityPane.annotation.border.beveled=Biselado +viewer.utilityPane.annotation.border.inset=Hundido +viewer.utilityPane.annotation.border.underline=Subrayado +## Utility Pane border Tab +viewer.utilityPane.annotation.flags.title=Banderas +viewer.utilityPane.annotation.flags.noRotate=Sin Girar: +viewer.utilityPane.annotation.flags.noZoom=Sin Zoom: +viewer.utilityPane.annotation.flags.readOnly=Solo Lectura: +viewer.utilityPane.annotation.flags.printable=Imprimible: +viewer.utilityPane.annotation.flags.yes=Imprimible: +viewer.utilityPane.annotation.flags.enabled=Habilitado +viewer.utilityPane.annotation.flags.disabled=Deshabilitado +## annotation action pane and dialogs. +viewer.utilityPane.action.selectionTitle=Accion +viewer.utilityPane.action.addAction=Agregar +viewer.utilityPane.action.editAction=Editar +viewer.utilityPane.action.removeAction=Eliminar +viewer.utilityPane.action.type.destination.label=Destino +viewer.utilityPane.action.type.uriAction.label=Accion de URI +viewer.utilityPane.action.type.goToAction.label=Accion Ir A +viewer.utilityPane.action.type.launchAction.label=Accion de Lanzamiento +viewer.utilityPane.action.dialog.new.title=Agregar Nueva Accion +viewer.utilityPane.action.dialog.new.msgs=Tipo de Accion: +viewer.utilityPane.action.dialog.delete.title=Confirmacion de Eliminacion +viewer.utilityPane.action.dialog.delete.msgs=¿Estas seguro de que deseas eliminar esta accion? +## uri action dialog test +viewer.utilityPane.action.dialog.uri.title=Propiedades de Accion de URI +viewer.utilityPane.action.dialog.uri.msgs=URI: +## launch action dialog test +viewer.utilityPane.action.dialog.launch.title=Propiedades de Accion de Lanzamiento +viewer.utilityPane.action.dialog.launch.msgs=Ruta de Archivo: +## GoTo action dialog text +viewer.utilityPane.action.dialog.goto.title=Propiedades de Accion Ir A +viewer.utilityPane.action.dialog.goto.page.label=Pagina: +viewer.utilityPane.action.dialog.goto.type.label=Tipo +viewer.utilityPane.action.dialog.goto.type.xyz.label=Absoluto +viewer.utilityPane.action.dialog.goto.type.fit.label=Ajustar a la Pagina +viewer.utilityPane.action.dialog.goto.type.fith.label=Ajustar Ancho Superior +viewer.utilityPane.action.dialog.goto.type.fitv.label=Ajustar Ancho Izquierdo +viewer.utilityPane.action.dialog.goto.type.fitr.label=Ajustar Cuadro de Zoom +viewer.utilityPane.action.dialog.goto.type.fitb.label=Ajustar Limites de Pagina +viewer.utilityPane.action.dialog.goto.type.fitbh.label=Ajustar Limites Superior +viewer.utilityPane.action.dialog.goto.type.fitbv.label=Ajustar Limites Izquierdo +viewer.utilityPane.action.dialog.goto.right.label=Derecha: +viewer.utilityPane.action.dialog.goto.left.label=Izquierda: +viewer.utilityPane.action.dialog.goto.top.label=Superior: +viewer.utilityPane.action.dialog.goto.bottom.label=Inferior: +viewer.utilityPane.action.dialog.goto.zoom.label=Zoom: +viewer.utilityPane.action.dialog.goto.unassigned.label=NaN +viewer.utilityPane.action.dialog.goto.current.label=Vista Actual: +viewer.utilityPane.action.dialog.goto.current=Establecer Ubicacion +viewer.utilityPane.action.dialog.goto.name.label=Nombre: +viewer.utilityPane.action.dialog.goto.browse=Examinar... +viewer.utilityPane.action.dialog.goto.explicitDestination.title=Destino Implicito +viewer.utilityPane.action.dialog.goto.nameDestination.title=Destino Nombrado +# Destination Named Tree +viewer.utilityPane.action.dialog.goto.nameTree.title=arbol de Nombres del Documento +viewer.utilityPane.action.dialog.goto.nameTree.root.label=arbol de Nombres +viewer.utilityPane.action.dialog.goto.nameTree.branch.label={0} a {1} + +## Utility Pane Search Tab +viewer.utilityPane.search.tab.title=Buscar +viewer.utilityPane.search.searchText.label=Buscar Texto: +viewer.utilityPane.search.results.label=Resultados: +viewer.utilityPane.search.searchButton.label=Buscar +viewer.utilityPane.search.clearSearchButton.label=Limpiar +viewer.utilityPane.search.caseSenstiveCheckbox.label=Distinguir mayusculas y minusculas +viewer.utilityPane.search.wholeWordCheckbox.label=Solo palabras completas +viewer.utilityPane.search.cumlitiveCheckbox.label=Acumulativo +viewer.utilityPane.search.showPagesCheckbox.label=Mostrar Paginas +viewer.utilityPane.search.stopButton.label=Detener +viewer.utilityPane.search.searching.msg=Buscar... +# Searching x out of y page(s) +viewer.utilityPane.search.searching1.msg=Buscando {0} de {1} +viewer.utilityPane.search.searching1.oneFile.msg={2} pagina +viewer.utilityPane.search.searching1.moreFile.msg={2} paginas +# Page x (y result(s)) +viewer.utilityPane.search.result.msg=Pagina {0} ({1}) +viewer.utilityPane.search.result.oneFile.msg={2} resultado +viewer.utilityPane.search.result.moreFile.msg={2} resultados +# Searched x page(s) (y matches) +viewer.utilityPane.search.progress.msg=Buscado {0} {1} ({2}) +viewer.utilityPane.search.progress.onePage.msg=pagina +viewer.utilityPane.search.progress.morePage.msg=paginas +viewer.utilityPane.search.progress.oneMatch.msg={2} coincidencia +viewer.utilityPane.search.progress.moreMatch.msg={2} coincidencias + +## Popup Annotation component +viewer.annotation.popup.reply.label=Responder +viewer.annotation.popup.delete.label=Eliminar +viewer.annotation.popup.status.label=Establecer Estado +viewer.annotation.popup.status.accepted.label=Aceptado +viewer.annotation.popup.status.cancelled.label=Cancelado +viewer.annotation.popup.status.completed.label=Completado +viewer.annotation.popup.status.rejected.label=Rechazado +viewer.annotation.popup.status.none.label=Ninguno +viewer.annotation.popup.openAll.label=Abrir todas las Ventanas Emergentes +viewer.annotation.popup.minimizeAll.label=Minimizar Ventanas Emergentes +viewer.annotation.popup.replyTo.label=Re: {0} +viewer.annotation.popup.status.none.title=Ninguno: {0} +viewer.annotation.popup.status.none.msg=Ninguno establecido por {0} +viewer.annotation.popup.status.accepted.title=Aceptado: {0} +viewer.annotation.popup.status.accepted.msg=Aceptado establecido por {0} +viewer.annotation.popup.status.cancelled.title=Cancelado: {0} +viewer.annotation.popup.status.cancelled.msg=Cancelado establecido por {0} +viewer.annotation.popup.status.completed.title=Completado: {0} +viewer.annotation.popup.status.completed.msg=Completado establecido por {0} +viewer.annotation.popup.status.rejected.title=Rechazado: {0} +viewer.annotation.popup.status.rejected.msg=Rechazado establecido por {0} + +## Signature component +viewer.annotation.signature.menu.validateSignature.label=Validar Firma +viewer.annotation.signature.menu.showCertificates.label=Mostrar Propiedades del Certificado +viewer.annotation.signature.menu.signatureProperties.label=Mostrar Propiedades de la Firma +viewer.annotation.signature.menu.signaturePageNavigation.label=Ir a Pagina... + +## Signature validation dialog. +viewer.annotation.signature.validation.dialog.title=Resumen de Validacion de Firmas +viewer.annotation.signature.validation.dialog.close.button.label=Cerrar +viewer.annotation.signature.validation.dialog.signerProperties.button.label=Propiedades de la Firma... +# common validation messages +viewer.annotation.signature.validation.common.invalid.label=La firma no es valida: +viewer.annotation.signature.validation.common.unknown.label=La firma es valida: +viewer.annotation.signature.validation.common.valid.label=La validez de la firma es desconocida: +viewer.annotation.signature.validation.common.signedBy.label=- Firmado por {0} {1} +viewer.annotation.signature.validation.common.doc.modified.label=- Esta version del documento esta sin cambios, pero se han realizado cambios posteriores. +viewer.annotation.signature.validation.common.doc.unmodified.label=- El documento no ha sido modificado desde que fue firmado. +viewer.annotation.signature.validation.common.doc.major.label=- El documento ha sido modificado o corrompido desde que fue firmado. +viewer.annotation.signature.validation.common.identity.unknown.label=- La identidad del firmante es desconocida porque no se pudo encontrar en tu almacen de claves. +viewer.annotation.signature.validation.common.identity.unchecked.label=- La firma es valida, pero no se pudo verificar la revocacion de la identidad del firmante. +viewer.annotation.signature.validation.common.identity.valid.label=- La identidad del firmante es valida. +viewer.annotation.signature.validation.common.time.local.label=- La hora de firma proviene del reloj de la computadora de este firmante. +viewer.annotation.signature.validation.common.time.embedded.label=- La firma incluia un sello de tiempo incrustado, pero no se pudo validar. +viewer.annotation.signature.validation.common.notAvailable.label=N/A + +## Signatures properties Dialog. +viewer.annotation.signature.properties.dialog.title=Propiedades de la Firma +viewer.annotation.signature.properties.dialog.invalid.label=La firma no es valida +viewer.annotation.signature.properties.dialog.unknown.label=La firma es valida +viewer.annotation.signature.properties.dialog.valid.label=La validez de la firma es desconocida +viewer.annotation.signature.properties.dialog.signedBy.label=Firmado por {0} {1} +viewer.annotation.signature.properties.dialog.signingTime.label=Firmado a las: {0} +viewer.annotation.signature.properties.dialog.reason.label=Motivo: {0} +viewer.annotation.signature.properties.dialog.location.label=Ubicacion: {0} +# SignatureSigner Info +viewer.annotation.signature.properties.dialog.pathValidation.success=- Las comprobaciones de validacion de ruta fueron exitosas. +viewer.annotation.signature.properties.dialog.pathValidation.failure=- Las comprobaciones de validacion de ruta no fueron exitosas. +viewer.annotation.signature.properties.dialog.revocation.success=- El certificado del firmante es valido y no ha sido revocado.. +viewer.annotation.signature.properties.dialog.revocation.failure=- La verificacion de revocacion no se realizo.. +viewer.annotation.signature.properties.dialog.certificateExpired.failure=- El certificado del firmante ha expirado.. +viewer.annotation.signature.properties.dialog.showCertificates.label=Certificado del Firmante... +viewer.annotation.signature.properties.dialog.validity.title=Resumen de Validez +viewer.annotation.signature.properties.dialog.signerInfo.title=Informacion del Firmante + +## Common Button Labels +viewer.button.ok.label=Aceptar +viewer.button.ok.mnemonic=O +viewer.button.cancel.label=Cancelar +viewer.button.cancel.mnemonic=C + +## Pilot Specific Mesages +pilot.title=ICEbrowser - Error de Piloto ICEpdf +pilot.loading.msg=Abriendo el documento {0} ... +pilot.display.msg=Mostrando {0} +pilot.loading.error.msg=Piloto PDF: No se pudo cargar {0}. +pilot.error.classLoading=Clase requerida {0} no encontrada. La biblioteca requerida 'icepdf.jar' puede que no este en la ruta de clases - Piloto PDF deshabilitado."; + +### +# General Error Messages + + +# Command Line Errors +viewer.commandLin.error=Usage: java org.icepdf.ri.viewer.Main [-loadfile ] [-loadurl ] +# Launcher errors +viewer.launcher.URLError.dialog.title=ICEsoft ICEpdf +viewer.launcher.URLError.dialog.message=ICEpdf no pudo abrir el archivo especificado. {0} en URL: {1}. +viewer.launcher.lookAndFeel.error.message=El aspecto y comportamiento especificado ({0}) no es accesible desde esta plataforma. + +# Pilot Loading Errors + + +### parser error dialogs +parse.title=Error al Analizar Propiedades +parse.integer=Advertencia: {0} no es un numero entero correcto. +parse.float=Advertencia: {0} no es un numero flotante correcto. +parse.double=Advertencia: {0} no es un numero doble correcto. +parse.choice=Advertencia: {0} no es una opcion valida. +parse.laf=Advertencia: el aspecto y comportamiento {0} no es compatible. + +### Properties Manager Errors +manager.properties.title=Administrador de Propiedades de ICEpdf +fontManager.properties.title=Administrador de Fuentes de ICEpdf + +manager.properties.createNewDirectory=Para crear el directorio {0},\nDonde el Visor ICEpdf almacenara los cambios en su configuracion, haz clic en Si.\n\nSi haces clic en "No", todos los cambios que realices en la configuracion del Visor ICEpdf se perderan cuando salgas de la aplicacion.\nSe perderan al cerrar la aplicacion. \n\n + +manager.properties.failedCreation=No se puede crear el directorio del visor ICEpdf para almacenar los datos del usuario:\n{0}\nEl Visor ICEpdf no guardara los cambios en su configuracion predeterminada. + +manager.properties.session.nolock=Error al crear el archivo de bloqueo:\n{0}\n + +manager.properties.session.readError=Error al cargar el archivo de propiedades: \n{0} + +manager.properties.deleted=El archivo de propiedades ha sido eliminado\n({0})\nRecreate it ? + +manager.properties.modified=El archivo de propiedades ha sido modificado desde la ultima actualizacion\n({0,date,long})\n¿Te gustaria fusionar los cambios en el archivo con las propiedades actuales? + +manager.properties.saveError=No se puede guardar el archivo de propiedades.\nEncountered the folowing error :\n{0} + +manager.properties.lafError=El aspecto y comportamiento {0} proporcionado en las propiedades predeterminadas no es compatible.\nUsando la configuracion predeterminada del sistema. + +manager.properties.brokenProperty=Propiedad predeterminada daniada {0} value: {1} + +manager.properties.missingProperty=Falta el valor de la propiedad predeterminada {0}: {1} + diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/analysisresults/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/analysisresults/Bundle_ar.properties new file mode 100644 index 0000000000..59b4d9c4b4 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/analysisresults/Bundle_ar.properties @@ -0,0 +1,12 @@ +AnalysisResultsContentPanel_aggregateScore_displayKey=Puntuación Agregada +AnalysisResultsContentPanel_content_displayKey=Articulo +# {0} - analysisResultsNumber +AnalysisResultsContentPanel_result_headerKey=Resultado del Analisis {0} +AnalysisResultsContentViewer_setNode_errorMessage=Hubo un error cargando los resultados. +AnalysisResultsContentViewer_setNode_loadingMessage=Cargando... +AnalysisResultsContentViewer_title=Resultados del Analisis +AnalysisResultsContentViewer_tooltip=Visualizador para Resultados del Analisis relacionados con el nodo seleccionado. +AnalysisResultsViewModel_displayAttributes_conclusion=Conclusion +AnalysisResultsViewModel_displayAttributes_configuration=Configuracion +AnalysisResultsViewModel_displayAttributes_score=Puntuacion +AnalysisResultsViewModel_displayAttributes_type=Tipo diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/annotations/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/annotations/Bundle_ar.properties new file mode 100644 index 0000000000..e5cdf60863 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/annotations/Bundle_ar.properties @@ -0,0 +1,22 @@ +AnnotationsContentViewer.onEmpty=No encontramos anotaciones para este item en particular. +AnnotationsContentViewer.title=Anotaciones +AnnotationsContentViewer.toolTip=Muestra etiquetas y comentarios asociados con el contenido seleccionado. +AnnotationUtils.centralRepositoryEntry.title=Comentarios del Repositorio Central +AnnotationUtils.centralRepositoryEntryDataLabel.case=Caso: +AnnotationUtils.centralRepositoryEntryDataLabel.comment=Comentario: +AnnotationUtils.centralRepositoryEntryDataLabel.path=Ruta: +AnnotationUtils.centralRepositoryEntryDataLabel.type=Tipo: +AnnotationUtils.fileHitEntry.artifactCommentTitle=Comentario de Artefacto +AnnotationUtils.fileHitEntry.comment=Comentario: +AnnotationUtils.fileHitEntry.hashSetHitTitle=Comentarios de Conjuntos de Hash Hit +AnnotationUtils.fileHitEntry.interestingFileHitTitle=Comentarios de Archivos Interesantes Encontrados +AnnotationUtils.fileHitEntry.interestingItemTitle=Comentarios de Elementos Interesantes +AnnotationUtils.fileHitEntry.setName=Nombre del Conjunto: +AnnotationUtils.onEmpty=No encontramos anotaciones para este item en particular. +AnnotationUtils.sourceFile.title=Archivo Fuente +AnnotationUtils.tagEntry.title=Etiquetas +AnnotationUtils.tagEntryDataLabel.comment=Comentario: +AnnotationUtils.tagEntryDataLabel.tag=Etiqueta: +AnnotationUtils.tagEntryDataLabel.tagUser=Examinador: +AnnotationUtils.title=Anotaciones +AnnotationUtils.toolTip=Muestra etiquetas y comentarios asociados con el contenido seleccionado. diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/Bundle_ar.properties new file mode 100644 index 0000000000..a8dbf5cc74 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/Bundle_ar.properties @@ -0,0 +1,120 @@ +CalllogArtifactViewer_cr_disabled_message=Habilitar Repositorio Central para ver, crear y editar personas. +CallLogArtifactViewer_heading_metadata=Metadatos +CallLogArtifactViewer_heading_others=Otros Atributos +CallLogArtifactViewer_heading_parties=Partes +CallLogArtifactViewer_heading_Source=Fuente +CallLogArtifactViewer_label_datasource=Fuente de Datos +CallLogArtifactViewer_label_date=Fecha +CallLogArtifactViewer_label_direction=Direccion +CallLogArtifactViewer_label_duration=Duracion +CallLogArtifactViewer_label_from=Desde +CallLogArtifactViewer_label_hostName=Anfitrion +CallLogArtifactViewer_label_to=Para +CallLogArtifactViewer_suffix_local=(Local) +CallLogArtifactViewer_value_unknown=Desconocido +# {0} - contact name +CommunicationArtifactViewerHelper_contact_label=Contacto: {0} +CommunicationArtifactViewerHelper_contact_label_unknown=Desconocido +CommunicationArtifactViewerHelper_menuitem_copy=Copiar +CommunicationArtifactViewerHelper_persona_button_create=Crear +CommunicationArtifactViewerHelper_persona_button_view=Ver +CommunicationArtifactViewerHelper_persona_label=Persona: +CommunicationArtifactViewerHelper_persona_searching=Busqueda... +CommunicationArtifactViewerHelper_persona_unknown=Desconocido +ContactArtifactViewer.contactImage.text= +ContactArtifactViewer_contactname_unknown=Desconocido +ContactArtifactViewer_cr_disabled_message=Habilitar Repositorio Central para ver, crear y editar personas. +ContactArtifactViewer_emails_header=Correo electronico +ContactArtifactViewer_found_all_accounts_label=Se encontraron todas las cuentas. +ContactArtifactViewer_heading_Source=Fuente +# {0} - accountIdentifer +ContactArtifactViewer_id_not_found_in_cr=No se pudo encontrar la(s) cuenta(s) asociada(s) al contacto {0} en el Repositorio Central. +ContactArtifactViewer_label_datasource=Fuente de Datos +ContactArtifactViewer_label_host=Anfitrion +ContactArtifactViewer_missing_account_label=Cuenta de contacto faltante +ContactArtifactViewer_others_header=Otro +ContactArtifactViewer_persona_account_justification=Cuenta encontrada en artefacto de Contacto +ContactArtifactViewer_persona_button_new=Crear +ContactArtifactViewer_persona_button_view=Ver +ContactArtifactViewer_persona_header=Persona +ContactArtifactViewer_persona_label=Persona +ContactArtifactViewer_persona_match_num=Coincidencia +ContactArtifactViewer_persona_no_match=No se encontraron coincidencias +ContactArtifactViewer_persona_searching=Busqueda... +ContactArtifactViewer_persona_unknown=Desconocido +ContactArtifactViewer_phones_header=Telefono +DataContentViewerArtifact.failedToGetAttributes.message=No se pudieron obtener algunos o todos los atributos de la base de datos de casos +DataContentViewerArtifact.failedToGetSourcePath.message=No se pudo obtener la ruta del archivo de origen de la base de datos de casos +DefaultTableArtifactContentViewer.attrsTableHeader.sources=Fuente(s) +DefaultTableArtifactContentViewer.attrsTableHeader.type=Tipo +DefaultTableArtifactContentViewer.attrsTableHeader.value=Valor +GeneralPurposeArtifactViewer.dates.created=Creado +GeneralPurposeArtifactViewer.dates.end=Final +GeneralPurposeArtifactViewer.dates.start=Comienzo +GeneralPurposeArtifactViewer.dates.time=Tiempo +GeneralPurposeArtifactViewer.details.attrHeader=Detalles +GeneralPurposeArtifactViewer.details.bookmarkHeader=Detalles del Marcador +GeneralPurposeArtifactViewer.details.cachedHeader=Archivo en Cache +GeneralPurposeArtifactViewer.details.cookieHeader=Detalles de la Cookie +GeneralPurposeArtifactViewer.details.dataSource=Fuente de Datos +GeneralPurposeArtifactViewer.details.datesHeader=Fechas +GeneralPurposeArtifactViewer.details.downloadHeader=Archivo Descargado +GeneralPurposeArtifactViewer.details.file=Archivo +GeneralPurposeArtifactViewer.details.historyHeader=Detalles de la Visita +GeneralPurposeArtifactViewer.details.otherHeader=Otro +GeneralPurposeArtifactViewer.details.searchHeader=Busqueda en la Web +GeneralPurposeArtifactViewer.details.sourceHeader=Fuente +GeneralPurposeArtifactViewer.noFile.text=\ (ya no existe) +GeneralPurposeArtifactViewer.term.label=Termino +GeneralPurposeArtifactViewer.unknown.text=Desconocido +GeneralPurposeArtifactViewer_details_host=Anfitrion +GeneralPurposeArtifactViewer_menuitem_copy=Copiar +MessageAccountPanel.account.justification=Cuenta encontrada en artefacto de Mensaje +MessageAccountPanel_button_create_label=Crear +MessageAccountPanel_button_view_label=Ver +MessageAccountPanel_contact_label=Contacto: +MessageAccountPanel_copy_label=Copiar +# {0} - accountIdentifer +MessageAccountPanel_id_not_found_in_cr=No se pudo encontrar una cuenta con el identificador {0} en el Repositorio Central. +MessageAccountPanel_no_matches=No se encontraron coincidencias. +MessageAccountPanel_persona_label=Persona: +MessageAccountPanel_unknown_label=Desconocido +MessageArtifactViewer.AttachmentPanel.title=Adjuntos +MessageArtifactViewer.ccLabel.text=CC: +MessageArtifactViewer.rtfbodyScrollPane.TabConstraints.tabTitle=RTF +MessageArtifactViewer.toText.text=aqui va la lista para listar +MessageArtifactViewer.toLabel.text=Para: +MessageArtifactViewer.htmlPane.TabConstraints.tabTitle=HTML +MessageArtifactViewer.fromText.text=aqui va la direccion del remitente +MessageArtifactViewer.datetimeText.text=aqui va la fecha +MessageArtifactViewer.headersScrollPane.TabConstraints.tabTitle=Encabezados +MessageArtifactViewer.fromLabel.text=De: +MessageArtifactViewer.accountsTab.TabConstraints.tabTitle=Cuentas +MessageArtifactViewer.directionText.text=direccion +MessageArtifactViewer.subjectText.text=aqui va el asunto +MessageArtifactViewer.viewInNewWindowButton.text=Ver en Ventana Nueva +MessageArtifactViewer.subjectLabel.text=Asunto: +MessageArtifactViewer.attachmentsPanel.TabConstraints.tabTitle=Adjuntos +MessageArtifactViewer.ccText.text=aqui va la lista de cc +MessageArtifactViewer.textbodyScrollPane.TabConstraints.tabTitle=Texto +DefaultTableArtifactContentViewer.selectAllMenuItem.text=Seleccionar Todo +# Copyright 2020 Basis Technology Corp. + +# 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. + +DefaultTableArtifactContentViewer.copyMenuItem.text=Copiar +PersonaAccountFetcher.account.justification=Cuenta encontrada en artefacto de Registro de Llamadas +# {0} - accountIdentifer +PersonaAccountFetcher_not_account_in_cr=No se pudo encontrar una cuenta con el identificador {0} en el Repositorio Central. +# {0} - Persona count +PersonaDisplayTask_persona_count_suffix=(1 de {0}) diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/contextviewer/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/contextviewer/Bundle_ar.properties new file mode 100644 index 0000000000..4924bc555b --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/contextviewer/Bundle_ar.properties @@ -0,0 +1,27 @@ +ContextUsagePanel.jUsageGoToResultButton.text=Ir a Resultado +ContextSourcePanel.jSourceGoToResultButton.text=Ir a Resultado +ContextUsagePanel.jUsageTextLabel.text=Label2 +ContextUsagePanel.jUsageNameLabel.text=jUsageLabel +ContextSourcePanel.jSourceTextLabel.text=Label2 +ContextSourcePanel.jSourceNameLabel.text=jSourceNameLabel +ContextViewer.attachmentSource=Adjunto a: +ContextViewer.downloadedOn=En +ContextViewer.downloadSource=Descargado de: +ContextViewer.downloadURL=URL +ContextViewer.email=Correo electronico +ContextViewer.jSourceLabel.text=Uso +ContextViewer.jUsageLabel.text=Fuente +ContextViewer.jUnknownLabel.text=Desconocido +ContextViewer.message=Mensaje +ContextViewer.messageFrom=De +ContextViewer.messageOn=En +ContextViewer.messageTo=A +ContextViewer.on=Abierto a +ContextViewer.programExecution=Ejecución del Programa: +ContextViewer.recentDocs=Documentos Recientes: +ContextViewer.runOn=Ejecutado el Programa En +ContextViewer.runUnknown=\ Ejecutado el Programa en tiempo desconocido +ContextViewer.title=Contexto +ContextViewer.toolTip=Muestra contexto para el archivo seleccionado. +ContextViewer.unknown=Abierto en tiempo desconocido +ContextViewer.unknownSource=Desconocido diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/Bundle_ar.properties new file mode 100644 index 0000000000..b820f2f2f1 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/Bundle_ar.properties @@ -0,0 +1,21 @@ +OsAccountDataPanel_administrator_title=Administrador +OsAccountDataPanel_basic_address=Direccion +OsAccountDataPanel_basic_admin=Administrador +OsAccountDataPanel_basic_creationDate=Fecha de Creacion +OsAccountDataPanel_basic_fullname=Nombre Completo +OsAccountDataPanel_basic_login=Inicio de Sesion +OsAccountDataPanel_basic_title=Propiedades Basicas +OsAccountDataPanel_basic_type=Tipo +OsAccountDataPanel_data_accessed_title=Ultimo Inicio de Sesion +OsAccountDataPanel_host_count_title=Conteo de Inicios de Sesion +# {0} - hostName +OsAccountDataPanel_host_section_title={0} Detalles +OsAccountDataPanel_realm_address=Direccion +OsAccountDataPanel_realm_confidence=Confianza +OsAccountDataPanel_realm_name=Nombre +OsAccountDataPanel_realm_scope=Alcance +OsAccountDataPanel_realm_title=Propiedades del Dominio +OsAccountDataPanel_realm_unknown=Desconocido +OsAccountViewer_title=Cuenta de Sistema Operativo +OsAccountViewer_tooltip=Visor de cuentas de Sistema Operativo relacionadas con el nodo seleccionado. +TableDataPanel.titleLabel.text=Titulo diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/textcontentviewer/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/textcontentviewer/Bundle_ar.properties new file mode 100644 index 0000000000..5869cc4761 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/textcontentviewer/Bundle_ar.properties @@ -0,0 +1,24 @@ +StringContentPanel_Loading_String=Cargando texto... +StringsTextViewer.goToPageTextField.msgDlg=Por favor ingrese un numero de pagina valido entre 1 y {0} +StringsTextViewer.goToPageTextField.err=Numero de pagina invalido +StringsTextViewer.setDataView.errorText=(no se pudo leer el desplazamiento {0}-{1}) +StringsTextViewer.setDataView.errorNoText=(el desplazamiento {0}-{1} no contiene texto) +StringsTextViewer.title=Cadenas +StringsTextViewer.toolTip=Muestra cadenas ASCII y Unicode extraidas del archivo. +StringsContentPanel.selectAllMenuItem.text=Seleccionar todo +StringsContentPanel.currentPageLabel.text_1=1 +StringsContentPanel.copyMenuItem.text=Copiar +StringsContentPanel.ofLabel.text_1=de +StringsContentPanel.totalPageLabel.text_1=1000 +StringsContentPanel.languageLabel.toolTipText= +StringsContentPanel.languageLabel.text=Guion: +StringsContentPanel.languageCombo.toolTipText=Idioma a intentar al interpretar (extraer y decodificar) cadenas de datos binarios +StringsContentPanel.goToPageTextField.text= +StringsContentPanel.goToPageLabel.text=Ir a la pagina: +StringsContentPanel.prevPageButton.text= +StringsContentPanel.pageLabel2.text=Pagina +StringsContentPanel.nextPageButton.text= +StringsContentPanel.pageLabel.text_1=Pagina: +TextContentViewer.title=Texto +TextContentViewer.tooltip=Muestra el texto asociado con el elemento seleccionado +TextContentViewerPanel.defaultName=Texto diff --git a/Core/src/org/sleuthkit/autopsy/core/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/core/Bundle_ar.properties new file mode 100644 index 0000000000..62a0daa628 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/core/Bundle_ar.properties @@ -0,0 +1,37 @@ +Installer.closing.confirmationDialog.message=La ingestion esta en ejecucion, ¿estas seguro/a de que deseas salir? +Installer.closing.confirmationDialog.title=La ingestion esta en ejecucion +# {0} - exception message +Installer.closing.messageBox.caseCloseExceptionMessage=Error al cerrar el caso: {0} +OpenIDE-Module-Display-Category=Infraestructura +OpenIDE-Module-Long-Description=\ + This is the core Autopsy module.\n\n\ + The module contains the core components needed for the bare application to run; the RCP platform, windowing GUI, sleuthkit bindings, datamodel / storage, explorer, result viewers, content viewers, ingest framework, reporting, and core tools, such as the file search.\n\n\ + The framework included in the module contains APIs for developing modules for ingest, viewers and reporting. \ + The modules can be deployed as Plugins using the Autopsy plugin installer.\n\ + This module should not be uninstalled - without it, Autopsy will not run.\n\n\ + For more information, see http://www.sleuthkit.org/autopsy/ +OpenIDE-Module-Name=Autopsy-Core +OpenIDE-Module-Short-Description=Modulo principal de Autopsy +org_sleuthkit_autopsy_core_update_center=http://sleuthkit.org/autopsy/updates.xml +Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Centro de actualizaciones de Autopsy +Installer.errorInitJavafx.msg=Error initializing JavaFX. +Installer.errorInitJavafx.details=\ Algunas caracteristicas no estaran disponibles. Verifica que tengas instalado JavaFX (OpenJFX 8). +ServicesMonitor.failedService.notify.title=El servicio esta caido +ServicesMonitor.failedService.notify.msg=Conexion a {0} no disponible +ServicesMonitor.restoredService.notify.title=El servicio esta activo +ServicesMonitor.restoredService.notify.msg=Conexion a {0} establecida +ServicesMonitor.statusChange.notify.title=Actualizacion del estado del servicio +ServicesMonitor.statusChange.notify.msg=El estado de {0} es {1} +ServicesMonitor.nullServiceName.excepton.txt=El nombre del servicio solicitado es nulo +ServicesMonitor.unknownServiceName.excepton.txt=El nombre del servicio solicitado {0} es desconocido +ServicesMonitor.KeywordSearchNull=No se puede encontrar el servicio de busqueda de palabras clave +ServicesMonitor.InvalidPortNumber=Numero de puerto Solr 8 no valido. +ServicesMonitor.remoteCaseDatabase.displayName.text=Servicio de base de datos de casos multiusuario +ServicesMonitor.remoteKeywordSearch.displayName.text=Servicio de busqueda de palabras clave multiusuario +ServicesMonitor.messaging.displayName.text=Servicio de mensajeria +ServicesMonitor.databaseConnectionInfo.error.msg=Error al acceder a la informacion de conexion de la base de datos de casos +ServicesMonitor.messagingService.connErr.text=Error al acceder a la informacion de conexion del servicio de mensajeria +Actions/Case=Caso +Menu/Case=Caso +Toolbars/Case=Caso +Menu/Case/OpenRecentCase=Abrir caso reciente diff --git a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java index cee09547a3..da9e2629f1 100644 --- a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java +++ b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java @@ -22,6 +22,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.file.Paths; +import java.time.ZoneId; import java.util.Arrays; import java.util.List; import java.util.Properties; @@ -385,6 +386,30 @@ public final class UserPreferences { public static String getTimeZoneForDisplays() { return viewPreferences.get(TIME_ZONE_FOR_DISPLAYS, TimeZone.GMT_ZONE.getID()); } + + /** + * Returns the inferred preferred time zone deriving in order: + * 1) Starts with user preference if set + * 2) Gets system time zone if can be determined + * 3) Otherwise uses GMT + * + * @return Returns preferred time zone id. + */ + public static String getInferredUserTimeZone() { + String timeZonePref = viewPreferences.get(TIME_ZONE_FOR_DISPLAYS, null); + if (StringUtils.isBlank(timeZonePref)) { + ZoneId systemZoneId = ZoneId.systemDefault(); + if (systemZoneId != null) { + timeZonePref = systemZoneId.getId(); + } + } + + if (StringUtils.isBlank(timeZonePref)) { + timeZonePref = TimeZone.GMT_ZONE.getID(); + } + + return timeZonePref; + } public static void setTimeZoneForDisplays(String timeZone) { viewPreferences.put(TIME_ZONE_FOR_DISPLAYS, timeZone); diff --git a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ar.properties new file mode 100644 index 0000000000..fe70772beb --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ar.properties @@ -0,0 +1,3 @@ +CoreComponentControl.CTL_DirectoryTreeTopComponent=Arbol de Directorios +CoreComponentControl.CTL_FavoritesTopComponent=Favoritos +OpenIDE-Module-Name=Interfaces de Componentes Principales diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ar.properties new file mode 100644 index 0000000000..0c7f6e41e0 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ar.properties @@ -0,0 +1,324 @@ +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.invalidImageSpecified.text=Archivo de imagen especificado no valido. +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.invalidPath.text=Ruta no valida. +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.pathNotSet.text=La ruta del logotipo de la agencia debe establecerse. +AutopsyOptionsPanel.invalidImageFile.msg=El archivo seleccionado no pudo usarse como logotipo de la agencia. +AutopsyOptionsPanel.invalidImageFile.title=Archivo de Imagen No Valido +AutopsyOptionsPanel.logNumAlert.invalidInput.text=Se requiere un numero entero positivo aqui. +AutopsyOptionsPanel.memFieldValidationLabel.developerMode.text=La configuracion de memoria no esta disponible mientras se ejecuta en modo desarrollador +AutopsyOptionsPanel.memFieldValidationLabel.invalidCharacters.text=Caracteres no validos, el valor debe ser un numero entero positivo +AutopsyOptionsPanel.memFieldValidationLabel.not64BitInstall.text=Configuracion de memoria JVM solo habilitada para la version de 64 bits +AutopsyOptionsPanel.memFieldValidationLabel.noValueEntered.text=No se ha ingresado ningun valor +# {0} - systemMemory +AutopsyOptionsPanel.memFieldValidationLabel.overMaxMemory.text=El valor debe ser menor que la memoria total del sistema de {0} GB +# {0} - minimumMemory +AutopsyOptionsPanel.memFieldValidationLabel.underMinMemory.text=El valor debe ser al menos {0} GB +AutopsyOptionsPanel_heapDumpBrowseButtonActionPerformed_fileAlreadyExistsMessage=El archivo ya existe. Por favor, selecciona una nueva ubicacion. +AutopsyOptionsPanel_heapDumpBrowseButtonActionPerformed_fileAlreadyExistsTitle=Archivo ya Existe +AutopsyOptionsPanel_isHeapPathValid_developerMode=No se puede cambiar la ruta del volcado de memoria mientras se esta en modo de desarrollador. +AutopsyOPtionsPanel_isHeapPathValid_illegalCharacters=Por favor, selecciona una ruta sin comillas. +AutopsyOptionsPanel_isHeapPathValid_not64BitMachine=Cambiar la configuracion de la ruta del volcado de memoria solo esta habilitado para la version de 64 bits. +AutopsyOptionsPanel_isHeapPathValid_selectValidDirectory=Por favor, selecciona un directorio existente. +AutopsyOptionsPanel_storeTempDir_onChoiceError_description=Hubo un error al actualizar la seleccion de la opcion de directorio temporal. +AutopsyOptionsPanel_storeTempDir_onChoiceError_title=Error al Guardar la Eleccion del Directorio Temporal +# {0} - path +AutopsyOptionsPanel_storeTempDir_onError_description=Hubo un error al crear el directorio temporal en el sistema de archivos en: {0}. +AutopsyOptionsPanel_storeTempDir_onError_title=Error al Guardar el Directorio Temporal +# {0} - path +AutopsyOptionsPanel_tempDirectoryBrowseButtonActionPerformed_onInvalidPath_description=No se pudo crear el directorio temporal dentro de la ruta especificada: {0} +AutopsyOptionsPanel_tempDirectoryBrowseButtonActionPerformed_onInvalidPath_title=La ruta no puede ser utilizada +CTL_CustomAboutAction=Acerca de +CTL_DataContentAction=DataContent +CTL_DataContentTopComponent=Contenido de Datos +CTL_OfflineHelpAction=Documentacion de Autopsy sin Conexion +CTL_OnlineHelpAction=Documentacion de Autopsy en Linea +DataArtifactContentViewer.failedToGetAttributes.message=Error al obtener algunos o todos los atributos de la base de datos del caso +DataArtifactContentViewer.failedToGetSourcePath.message=Error al obtener la ruta del archivo fuente de la base de datos del caso +DataContentViewerHex.copyingFile=Copiando archivo para abrirlo en HxD... +DataContentViewerHex.launchError=No se pudo iniciar HxD Editor. Por favor, especifica la ubicacion de instalacion de HxD en Herramientas -> Opciones -> Visor Externo +DataContentViewerHex_loading_text=Cargando hexadecimal desde archivo... +DataResultViewerTable.commentRender.name=C +DataResultViewerTable.commentRender.toolTip=C (Comentarios) indica si el elemento tiene un comentario +DataResultViewerTable.commentRenderer.crAndTagComment.toolTip=Los comentarios existen tanto en el Repositorio Central como en las etiquetas asociadas +DataResultViewerTable.commentRenderer.crComment.toolTip=El comentario existe en el Repositorio Central +DataResultViewerTable.commentRenderer.noComment.toolTip=No se encontraron comentarios +DataResultViewerTable.commentRenderer.tagComment.toolTip=El comentario existe en las etiquetas asociadas +DataResultViewerTable.countRender.name=O +DataResultViewerTable.countRender.toolTip=O (Ocurrencias) indica la cantidad de fuentes de datos que contienen el elemento en el Repositorio Central +DataResultViewerTable.exportCSVButtonActionPerformed.empty=No hay datos para exportar +DataResultViewerTable.firstColLbl=Nombre +DataResultViewerTable.goToPageTextField.err=Numero de pagina no valido +# {0} - totalPages +DataResultViewerTable.goToPageTextField.msgDlg=Por favor, ingresa un numero de pagina valido entre 1 y {0} +# {0} - currentPage +# {1} - totalPages +DataResultViewerTable.pageNumbers.curOfTotal={0} de {1} +DataResultViewerTable.scoreRender.name=S +DataResultViewerTable.scoreRender.toolTip=S (Nucleo) indica si el elemento es interesante o notable +DataResultViewerTable.title=Tabla +DataResultViewerThumbnail.sortLabel.text=Ordenado por: --- +# {0} - sort criteria +DataResultViewerThumbnail.sortLabel.textTemplate=Ordenado por: {0} +DataResultViewerThumbnail.thumbnailSizeComboBox.large=Miniaturas Grandes +DataResultViewerThumbnail.thumbnailSizeComboBox.medium=Miniaturas Medianas +DataResultViewerThumbnail.thumbnailSizeComboBox.small=Miniaturas Pequenias +MultiUserSettingsPanel_Close_Case_To_Modify=Cerrar caso para modificar la configuracion +OptionsCategory_Name_General=Aplicacion +OptionsCategory_Keywords_General=Opciones de Autopsy +HINT_DataContentTopComponent=Esta es una ventana de Contenido de Datos +HINT_NodeTableTopComponent=Esta es una ventana de Resultados de Datos +OpenIDE-Module-Name=CoreComponents +DataContentViewerHex.prevPageButton.text= +DataContentViewerHex.nextPageButton.text= +DataContentViewerHex.pageLabel.text_1=Pagina: +DataContentViewerHex.currentPageLabel.text_1=1 +DataContentViewerHex.ofLabel.text_1=de +DataContentViewerHex.totalPageLabel.text_1=100 +DataContentViewerHex.pageLabel2.text=Pagina + +# {0} - file name +ThumbnailViewNode.progressHandle.text=Generando miniatura para {0} +SortChooser.dialogTitle=Elegir Criterio de Ordenacion +ThumbnailViewChildren.progress.cancelling=(Cancelando) +# Product Information panel +LBL_Description=
\n Product Version: {0} ({9})
Sleuth Kit Version: {7}
Netbeans RCP Build: {8}
Java: {1}; {2}
System: {3}; {4}; {5}
Userdir: {6}
+Format_OperatingSystem_Value={0} version {1} running on {2} +LBL_Copyright=
Autopsy™ is a digital forensics platform based on The Sleuth Kit™ and other tools.
Copyright © 2003-2020.
+URL_ON_IMG=http://www.sleuthkit.org/ +FILE_FOR_LOCAL_HELP=file:/// +INDEX_FOR_LOCAL_HELP=/docs/index.html +LBL_Close=Cerrar +DataContentViewerHex.copyMenuItem.text=Copiar +DataContentViewerHex.selectAllMenuItem.text=Seleccionar Todo +DataArtifactContentViewer.totalPageLabel.text=100 +DataArtifactContentViewer.prevPageButton.text= +DataArtifactContentViewer.pageLabel2.text=Resultado +DataArtifactContentViewer.nextPageButton.text= +DataArtifactContentViewer.currentPageLabel.text=1 +DataArtifactContentViewer.ofLabel.text=de +DataArtifactContentViewer.pageLabel.text=Resultado: +AdvancedConfigurationDialog.applyButton.text=OK +DataContentViewerHex.goToPageTextField.text= +DataContentViewerHex.goToPageLabel.text=Ir a Pagina: +DataResultViewerThumbnail.pageLabel.text=Pagina: +DataResultViewerThumbnail.pagesLabel.text=Paginas: +DataResultViewerThumbnail.pagePrevButton.text= +DataResultViewerThumbnail.pageNextButton.text= +DataResultViewerThumbnail.imagesLabel.text=Imagenes: +DataResultViewerThumbnail.imagesRangeLabel.text=- +DataResultViewerThumbnail.pageNumLabel.text=- +DataResultViewerThumbnail.filePathLabel.text=\ \ \ +DataResultViewerThumbnail.goToPageLabel.text=Ir a Pagina: +DataResultViewerThumbnail.goToPageField.text= +AdvancedConfigurationDialog.cancelButton.text=Cancelar +DataArtifactContentViewer.waitText=Recuperando y preparando datos, por favor espera... +DataArtifactContentViewer.errorText=Error al recuperar el resultado +DataArtifactContentViewer.title=Artefactos de Datos +DataArtifactContentViewer.toolTip=Muestra los Resultados asociados al archivo +DataContentViewerHex.goToPageTextField.msgDlg=Por favor, ingresa un numero de pagina valido entre 1 y {0} +DataContentViewerHex.goToPageTextField.err=Numero de pagina no valido +DataContentViewerHex.setDataView.errorText=(no se pudo leer el desplazamiento {0}-{1}) +DataContentViewerHex.title=Hex +DataContentViewerHex.toolTip=Muestra el contenido binario de un archivo en hexadecimal, con bytes que se pueden mostrar como caracteres ASCII a la derecha. +DataResultPanel.pleasewaitNodeDisplayName=Por favor, espera... +DataResultViewerTable.illegalArgExc.noChildFromParent=No se pudo obtener un Nodo secundario del Nodo padre proporcionado. +DataResultViewerTable.illegalArgExc.childWithoutPropertySet=El Nodo secundario no tiene el PropertySet regular. +DataResultViewerThumbnail.title=Miniatura +DataResultViewerThumbnail.goToPageTextField.msgDlg=Por favor, ingresa un numero de pagina valido entre 1 y {0} +DataResultViewerThumbnail.goToPageTextField.err=Numero de pagina no valido +DataResultViewerThumbnail.genThumbs=Generando Miniaturas... +DataResultViewerThumbnail.pageNumbers.curOfTotal={0} de {1} +GeneralOptionsPanelController.moduleErr=Error del Modulo +GeneralOptionsPanelController.moduleErr.msg=Un modulo provoco un error al escuchar actualizaciones de GeneralOptionsPanelController. Consulta el registro para determinar que modulo. Es posible que algunos datos esten incompletos.. +ProductInformationPanel.verbLoggingEnabled.text=Registro detallado habilitado +ProductInformationPanel.propertyUnknown.text=desconocido +ProductInformationPanel.getVMValue.text={0} {1} +TableFilterNode.displayName.text=Nombre +DataResultViewerThumbnail.comboBox.smallThumbnails=Miniaturas Pequenias +DataResultViewerThumbnail.comboBox.mediumThumbnails=Miniaturas Medianas +DataResultViewerThumbnail.comboBox.largeThumbnails=Miniaturas Grandes +DataResultViewerThumbnail.switchPage.done.errMsg=Error al crear miniaturas: {0} +AboutWindowPanel.actVerboseLogging.text=Activar registro detallado +OptionsCategory_Name_Multi_User_Settings=Multiusuario +OptionsCategory_Keywords_Multi_User_Options=Configuracion Multiusuario +MultiUserSettingsPanel.cbEnableMultiUser.text=Habilitar casos multiusuario +MultiUserSettingsPanel.lbDatabaseSettings.text=Configuracion del Servidor de Base de Datos +MultiUserSettingsPanel.validationErrMsg.incomplete=Completa todos los valores +MultiUserSettingsPanel.nonWindowsOs.msg=Los casos multiusuario solo estan disponibles en plataformas Windows +MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort=Numero de puerto de base de datos no valido +MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort=Numero de puerto de servicio de mensajes no valido +MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort=Numero de puerto de servidor Solr 8 no valido +MultiUserSettingsPanel.validationErrMsg.invalidSolr4ServerPort=Numero de puerto de servidor Solr 4 no valido +MultiUserSettingsPanel.validationErrMsg.invalidZkServerPort=Numero de puerto de servidor ZooKeeper no valido +MultiUserSettingsPanel.validationErrMsg.invalidZkServerHostName=Nombre de host del servidor ZooKeeper no establecido +MultiUserSettingsPanel.validationErrMsg.solrNotConfigured=Se debe configurar el servidor Solr 8 y/o el servidor Solr 4 +MultiUserSettingsPanel.validationErrMsg.invalidMessgeServiceURI=El host y/o puerto del servicio de mensajes no son validos +DataContentViewerHex.goToOffsetLabel.text=Saltar a Desplazamiento +DataContentViewerHex.goToOffsetTextField.text= +DataContentViewerHex.goToOffsetTextField.msgDlg=Desplazamiento no valido: {0} +DataContentViewerHex.setDataView.invalidOffset.negativeOffsetValue=No se puede saltar al desplazamiento resultante +MultiUserSettingsPanel.tbOops.text= +MultiUserSettingsPanel.lbTestDatabase.text= +MultiUserSettingsPanel.bnTestDatabase.text=Probar Conexion +MultiUserSettingsPanel.tbDbHostname.toolTipText=Nombre de host o direccion IP +MultiUserSettingsPanel.tbDbHostname.text= +MultiUserSettingsPanel.tbDbPort.toolTipText=Numero de puerto +MultiUserSettingsPanel.tbDbPort.text= +MultiUserSettingsPanel.tbDbUsername.toolTipText=Nombre de usuario +MultiUserSettingsPanel.tbDbUsername.text= +MultiUserSettingsPanel.tbDbPassword.toolTipText=Contrasenia +MultiUserSettingsPanel.tbDbPassword.text= +MultiUserSettingsPanel.lbTestMessageService.text= +MultiUserSettingsPanel.bnTestMessageService.text=Probar Conexion +MultiUserSettingsPanel.lbMessageServiceSettings.text=Configuracion del Servidor de Mensajes ActiveMQ +MultiUserSettingsPanel.tbMsgPort.toolTipText=Numero de Puerto +MultiUserSettingsPanel.tbMsgPort.text= +MultiUserSettingsPanel.tbMsgUsername.toolTipText=Nombre de Usuario (opcional) +MultiUserSettingsPanel.tbMsgUsername.text= +MultiUserSettingsPanel.tbMsgPassword.toolTipText=Contrasenia (opcional) +MultiUserSettingsPanel.tbMsgPassword.text= +MultiUserSettingsPanel.tbMsgHostname.toolTipText=Nombre de Host o Direccion IP +MultiUserSettingsPanel.tbMsgHostname.text= +MultiUserSettingsPanel.lbTestMessageWarning.text= +MultiUserSettingsPanel.lbTestDbWarning.text= +MultiUserSettingsPanel.KeywordSearchNull=No se puede encontrar el servicio de busqueda por palabra clave +MultiUserSettingsPanel.Solr4ConnectionInfoMissing.error=Falta o es incompleta la informacion de conexion a Solr 4 +MultiUserSettingsPanel.Solr8ConnectionInfoMissing.error=Falta o es incompleta la informacion de conexion a Solr 8 +MultiUserSettingsPanel.UnableToConnectToZK=No se puede conectar al servicio de ZooKeeper +MultiUserSettingsPanel.InvalidPortNumber=Numero de puerto no valido +AutopsyOptionsPanel.agencyLogoImageLabel.toolTipText= +SortChooserDialog.label=Eliminar +SortChooser.addCriteriaButton.text=Agregar Criterio de Ordenacion +DataResultViewerThumbnail.sortButton.text=Ordenar +CriterionChooser.ascendingRadio.text=\u25b2 Ascendente\n +CriterionChooser.removeButton.text=Eliminar +CriterionChooser.descendingRadio.text=\u25bc Descendente +DataResultPanel.matchLabel.text=Resultados +DataResultPanel.numberOfChildNodesLabel.text=0 +DataResultPanel.descriptionLabel.text=directoryPath (ruta de directorio) +ViewOptionsController.moduleErr=Error procesando cambios de valor. +ViewOptionsController.moduleErr.msg=Fallo en el procesamiento de cambios de valor. +ViewPreferencesPanel.currentCaseSettingsPanel.border.title=Configuracion Actual del Caso +OptionsCategory_Name_View=Ver +OptionsCategory_Keywords_View=Vista +ViewPreferencesPanel.currentSessionSettingsPanel.border.title=Configuracion Actual de la Sesion +ViewPreferencesPanel.hideRejectedResultsCheckbox.text=Ocultar resultados rechazados +DataContentViewerHex.launchHxDButton.text=Abrir en HxD +ExternalViewerGlobalSettingsPanel.jButton2.text=jButton2 +ExternalViewerGlobalSettingsPanel.newRuleButton1.text=Nueva Regla +ExternalViewerGlobalSettingsPanel.newRuleButton.text=Nueva Regla +ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text=Examinar +ExternalViewerGlobalSettingsPanel.jLabel2.text=Establecer extensiones de visor de contenido ejecutable +ExternalViewerGlobalSettingsPanel.jLabel1.text=Ruta de HxD Editor: +ExternalViewerGlobalSettingsPanel.editRuleButton.text=Editar Regla +ExternalViewerGlobalSettingsPanel.deleteRuleButton.text=Eliminar Regla +ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text=Establecer visor de aplicacion para archivos con tipos de MIME/extensiones especificos: +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title1=Aplicacion +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title0=Tipo de MIME/Extension +AddExternalViewerRulePanel.nameLabel.text=Tipo de MIME o extension +AddExternalViewerRulePanel.browseButton.text=Examinar +AddExternalViewerRulePanel.exePathTextField.text= +AddExternalViewerRulePanel.exePathLabel.text=Ruta del programa a utilizar para archivos con este tipo o extension +AddExternalViewerRulePanel.extRadioButton.text=Extension +AddExternalViewerRulePanel.mimeRadioButton.text=Tipo de MIME +AddExternalViewerRulePanel.nameTextField.text= +ExternalViewerGlobalSettingsPanel.jButton2.text_1=jButton2 +ExternalViewerGlobalSettingsPanel.newRuleButton1.text_1=Nueva Regla +ExternalViewerGlobalSettingsPanel.newRuleButton.text_1=Nueva Regla +ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text_1=Examinar +ExternalViewerGlobalSettingsPanel.jLabel2.text_1=Establecer extensiones de visor de contenido ejecutable +ExternalViewerGlobalSettingsPanel.jLabel1.text_1=Ruta de HxD Editor: +ExternalViewerGlobalSettingsPanel.HxDPath.text=C:/Program Files/HxD/HxD.exe +ExternalViewerGlobalSettingsPanel.editRuleButton.text_1=Editar Regla +ExternalViewerGlobalSettingsPanel.deleteRuleButton.text_1=Eliminar Regla +ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text_1=Establecer visor de aplicacion para archivos con tipos de MIME/extensiones especificos: +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title1_1=Aplicacion +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title0_1=Tipo de MIME/Extension +DataResultViewerTable.gotoPageTextField.text= +DataResultViewerTable.gotoPageLabel.AccessibleContext.accessibleName= +DataResultViewerTable.gotoPageLabel.text=Ir a Pagina: +DataResultViewerTable.pageNextButton.text= +DataResultViewerTable.pagePrevButton.text= +DataResultViewerTable.pagesLabel.text=Paginas: +DataResultViewerTable.pageNumLabel.text= +DataResultViewerTable.pageLabel.text=Pagina: +DataResultViewerTable.exportCSVButton.text=Guardar Tabla como CSV +MultiUserSettingsPanel.tbSolr4Hostname.toolTipText=Solr 4 Nombre de Host o Direccion IP +MultiUserSettingsPanel.tbSolr4Port.toolTipText=Numero de Puerto de Solr 4 +MultiUserSettingsPanel.lbZkSettings.text=Configuracion del Servidor ZooKeeper +MultiUserSettingsPanel.lbSolr4Settings.text=Configuracion del Servidor Solr 4 +MultiUserSettingsPanel.lbSolr8Settings.text=Configuracion del Servidor Solr 8 +MultiUserSettingsPanel.tbZkHostname.toolTipText=Nombre de Host o Direccion IP de ZooKeeper. ZooKeeper integrado generalmente se ejecuta en el mismo host que el servidor Solr. +MultiUserSettingsPanel.tbZkPort.toolTipText=Numero de puerto de ZooKeeper. ZooKeeper integrado utiliza un numero de puerto que es 1,000 mayor que el numero de puerto del servicio Solr. Por ejemplo, si el numero de puerto del servicio Solr es 8983, entonces el numero de puerto de ZooKeeper integrado es 9983. +MultiUserSettingsPanel.tbSolr8Hostname.toolTipText=Solr 8 Nombre de Host o Direccion IP +MultiUserSettingsPanel.tbSolr8Port.toolTipText=Numero de Puerto de Solr 8 +MultiUserSettingsPanel.restartRequiredLabel.text=Se requiere reiniciar la aplicacion para que los cambios surtan efecto. +MultiUserSettingsPanel.MustRestart=Autopsy debe reiniciarse para que la nueva configuracion surta efecto +MultiUserSettingsPanel.lbSolrNote1.text=Ingresa la configuracion del servidor Solr 8 y/o Solr 4. +MultiUserSettingsPanel.lbSolrNote2.text=La nueva indexacion de texto solo se puede realizar con Solr 8. +AutopsyOptionsPanel.tempDirectoryBrowseButton.text=Examinar +AutopsyOptionsPanel.a.AccessibleContext.accessibleName=Directorio Temporal +AutopsyOptionsPanel.tempDirectoryPanel.AccessibleContext.accessibleName=Directorio Temporal +AutopsyOptionsPanel.tempDirectoryPanel.name=Directorio Temporal +AutopsyOptionsPanel.tempDirectoryPanel.border.title=Directorio Temporal Raiz +AutopsyOptionsPanel.tempDirectoryWarningLabel.text=Cierra el caso actual para cambiar el directorio temporal. +AutopsyOptionsPanel.solrJVMHeapWarning.text=NOTA: Establecer un valor demasiado grande puede afectar el rendimiento general. +AutopsyOptionsPanel.maxMemoryUnitsLabel2.text=MB +AutopsyOptionsPanel.maxSolrMemoryLabel.text=Memoria Maxima de JVM de Solr: +AutopsyOptionsPanel.logNumAlert.text= +AutopsyOptionsPanel.maxLogFileCount.text=Archivos de Registro Maximos: +AutopsyOptionsPanel.restartNecessaryWarning.text=Es necesario reiniciar para que los cambios de memoria surtan efecto. +AutopsyOptionsPanel.totalMemoryLabel.text=Memoria Total del Sistema: +AutopsyOptionsPanel.maxMemoryUnitsLabel.text=GB +AutopsyOptionsPanel.maxMemoryLabel.text=Memoria Maxima de JVM: +AutopsyOptionsPanel.runtimePanel.border.title=Tiempo de Ejecucion +ViewPreferencesPanel.maxResultsLabel.toolTipText=\nEstablecer este valor en 0 mostrara todos los resultados en la tabla de resultados.\n
Ten en cuenta que configurar este valor como 0 puede resultar en una respuesta deficiente de la interfaz de usuario cuando hay un gran numero de resultados.\n +ViewPreferencesPanel.maxResultsLabel.text=Numero maximo de resultados para mostrar en la tabla: +ViewPreferencesPanel.fileNameTranslationColumnCheckbox.text=Agregar columna en el visor de resultados para la traduccion de nombres de archivo. +ViewPreferencesPanel.scoColumnsWrapAroundText.text=para reducir los tiempos de carga. +ViewPreferencesPanel.translateTextLabel.text=Traducir texto: +ViewPreferencesPanel.scoColumnsCheckbox.text=S(nucleo), C(omentarios) y O(currencias) +ViewPreferencesPanel.scoColumnsLabel.text=No agregar columnas para: +ViewPreferencesPanel.hideOtherUsersTagsLabel.text=Ocultar etiquetas de otros usuarios en ele: +ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text=area de Etiquetas en el arbol +ViewPreferencesPanel.useAnotherTimeRadioButton.text=Usar otra zona horaria +ViewPreferencesPanel.useLocalTimeRadioButton.text=Usar la zona horaria local +ViewPreferencesPanel.displayTimeLabel.text=Al mostrar las horas: +ViewPreferencesPanel.viewsHideSlackCheckbox.text=area de Vistas +ViewPreferencesPanel.dataSourcesHideSlackCheckbox.text=area de Fuentes de Datos (la jerarquia de directorios) +ViewPreferencesPanel.hideSlackFilesLabel.text=Ocultar archivos de "slack" en el: +ViewPreferencesPanel.viewsHideKnownCheckbox.text=area de Vistas +ViewPreferencesPanel.dataSourcesHideKnownCheckbox.text=area de Fuentes de Datos (la jerarquia de directorios) +ViewPreferencesPanel.hideKnownFilesLabel.text=Ocultar archivos conocidos (es decir, los de NIST NSRL) en el: +ViewPreferencesPanel.keepCurrentViewerRadioButton.toolTipText=Por ejemplo, permanecer en la vista Hex cuando se selecciona un archivo JPEG. +ViewPreferencesPanel.keepCurrentViewerRadioButton.text=Permanecer en el mismo visor de archivos +ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=Por ejemplo, cambiar de Hex a Multimedia cuando se selecciona un archivo JPEG. +ViewPreferencesPanel.useBestViewerRadioButton.text=Cambiar al visor de archivos mas especifico +ViewPreferencesPanel.selectFileLabel.text=Al seleccionar un archivo: +ViewPreferencesPanel.globalSettingsPanel.border.title=Configuracion Global +MultiUserSettingsPanel.bnTestSolr8.text=Probar Conexion +MultiUserSettingsPanel.lbTestSolr8.text= +MultiUserSettingsPanel.bnTestSolr4.text=Probar Conexion +MultiUserSettingsPanel.lbTestSolr4.text= +MultiUserSettingsPanel.bnTestZK.text=Probar Conexion +MultiUserSettingsPanel.lbTestZK.text= +MultiUserSettingsPanel.lbWarning.text= +AutopsyOptionsPanel.rdpPanel.border.title=Escalado de Alta DPI de Windows +AutopsyOptionsPanel.sizingTextPane.text=Realice los siguientes cambios si la aplicacion es dificil de navegar en sistemas de Alta DPI:\n\n1. Haz clic derecho en el icono de la aplicacion en tu escritorio, menu de inicio, etc..\n2. Cambiar las propiedades\n3. Ir a la pestania "Compatibilidad"\n4. Hacer clic en el boton "Cambiar configuracion de alta DPI"\n5. Seleccionar "Anular el comportamiento de escala de alta DPI" \n6. Cambiar la opcion del menu desplegable "Escala realizada por:" a "Sistema"\n7. Reiniciar Autopsy +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.text= +AutopsyOptionsPanel.specifyLogoRB.text=Especificar un logotipo +AutopsyOptionsPanel.defaultLogoRB.text=Usar el predeterminado +AutopsyOptionsPanel.agencyLogoPreview.text=
No logo
selected
+AutopsyOptionsPanel.browseLogosButton.text=Examinar +AutopsyOptionsPanel.agencyLogoPathField.text= +AutopsyOptionsPanel.logoPanel.border.title=Logotipo +ViewPreferencesPanel.radioGroupByPersonHost.text=Agrupar por Persona/Host +ViewPreferencesPanel.radioGroupByDataType.text=Agrupar por Tipo de Datos +AutopsyOptionsPanel.tempLocalRadio.text=Directorio temporal local +AutopsyOptionsPanel.tempCaseRadio.text=Carpeta temporal en el directorio del caso +AutopsyOptionsPanel.tempCustomRadio.text=Personalizado +AutopsyOptionsPanel.tempCustomField.text= +AutopsyOptionsPanel.tempOnCustomNoPath.text=Por favor, seleccione una ruta para el directorio temporal raiz personalizado. +AutopsyOptionsPanel.heapDumpFileField.text= +AutopsyOptionsPanel.heapDumpBrowseButton.text=Examinar +AutopsyOptionsPanel.heapFileLabel.text=Ubicacion Personalizada de Captura de Memoria (Heap Dump): +AutopsyOptionsPanel.heapFieldValidationLabel.text= diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/coreutils/Bundle_ar.properties new file mode 100644 index 0000000000..e03237e64f --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/coreutils/Bundle_ar.properties @@ -0,0 +1,42 @@ +FileTypeCategory.Audio.displayName=Audio +FileTypeCategory.Documents.displayName=Documentos +FileTypeCategory.Executables.displayName=Ejecutables +FileTypeCategory.Image.displayName=Imagen +FileTypeCategory.Media.displayName=Medios +FileTypeCategory.Video.displayName=Video +FileTypeCategory.Visual.displayName=Visual +# {0} - file name +GetOrGenerateThumbnailTask.generatingPreviewFor=Generando vista previa para {0} +# {0} - file name +GetOrGenerateThumbnailTask.loadingThumbnailFor=Cargando miniatura para {0} +ImageUtils.ffmpegLoadedError.msg=La biblioteca OpenCV FFMpeg no pudo cargarse, consulta el registro para mas detalles +ImageUtils.ffmpegLoadedError.title=OpenCV FFMpeg +OpenIDE-Module-Name=CoreUtils +JLNK.noPrefPath.text=No se encontro una ruta preferida +PlatformUtil.nameUnknown=desconocido +PlatformUtil.verUnknown=desconocido +PlatformUtil.archUnknown=desconocido +PlatformUtil.jrePath.jreDir.msg=Se encontro el directorio jre incrustado en: {0} +PlatformUtil.jrePath.usingJavaPath.msg=Usando la ruta del archivo binario de Java: {0} +PlatformUtil.getPID.sigarNotInit.msg=No se puede obtener el PID, sigar no inicializado +PlatformUtil.getPID.gen.msg=No se puede obtener el PID,{0} +PlatformUtil.getJavaPID.sigarNotInit.msg=No se puede obtener el PID de un proceso de Java, sigar no inicializado +PlatformUtil.getJavaPID.gen.msg=No se puede obtener el PID para la consulta: {0}, {1} +PlatformUtil.getJavaPIDs.sigarNotInit=No se pueden obtener los PID de un proceso de Java, sigar no inicializado +PlatformUtil.getJavaPIDs.gen.msg=No se pueden obtener los PID para la consulta: {0}, {1} +PlatformUtil.killProcess.sigarNotInit.msg=No se puede matar el proceso por el PID, sigar no inicializado. +PlatformUtil.killProcess.gen.msg=No se puede matar el proceso: {0}, {1} +PlatformUtil.getProcVmUsed.sigarNotInit.msg=No se puede obtener el uso de memoria virtual, sigar no inicializado. +PlatformUtil.getProcVmUsed.gen.msg=No se puede obtener el uso de memoria virtual, {0} +PlatformUtil.getJvmMemInfo.usageText=Uso de la memoria de la JVM: {0}, Uso de la memoria no asignada de la JVM: {1} +PlatformUtil.getPhysicalMemInfo.usageText=Uso de la memoria fisica (maximo, total, libre): {0}, {1}, {2} +PlatformUtil.getAllMemUsageInfo.usageText={0}\n\ +{1}\n\ +Memoria Virtual del Proceso: {2} +# {0} - file name +ReadImageTask.mesageText=Leyendo imagen: {0} +StringExtract.illegalStateException.cannotInit.msg=Tabla Unicode no inicializada correctamente, no se puede instanciar StringExtract +TextConverter.convert.exception.txt=No se puede convertir el texto {0} a texto hexadecimal +TextConverter.convertFromHex.exception.txt=No se puede convertir el texto hexadecimal a texto +# {0} - file name +VideoUtils.genVideoThumb.progress.text=extrayendo archivo temporal {0} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Artifacts.java b/Core/src/org/sleuthkit/autopsy/datamodel/Artifacts.java index 3dee283999..a38383c183 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Artifacts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Artifacts.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2021 Basis Technology Corp. + * Copyright 2011-2023 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -72,6 +72,10 @@ public class Artifacts { private static final Set INGEST_JOB_EVENTS_OF_INTEREST = EnumSet.of(IngestManager.IngestJobEvent.COMPLETED, IngestManager.IngestJobEvent.CANCELLED); + + // this is currently a custom TSK artifact type, created in MalwareScanIngestModule + private static BlackboardArtifact.Type MALWARE_ARTIFACT_TYPE = null; + private static final String MALWARE_HITS = "TSK_MALWARE"; /** * Base class for a parent node of artifacts. @@ -242,6 +246,16 @@ public class Artifacts { */ @SuppressWarnings("deprecation") private static TypeNodeKey getTypeKey(BlackboardArtifact.Type type, SleuthkitCase skCase, long dsObjId) { + + // Get the custom TSK_MALWARE artifact type from case database + if (MALWARE_ARTIFACT_TYPE == null) { + try { + MALWARE_ARTIFACT_TYPE = skCase.getArtifactType(MALWARE_HITS); + } catch (TskCoreException ex) { + logger.log(Level.WARNING, "Unable to get TSK_MALWARE artifact type from database : ", ex); //NON-NLS + } + } + int typeId = type.getTypeID(); if (TSK_EMAIL_MSG.getTypeID() == typeId) { EmailExtracted.RootNode emailNode = new EmailExtracted(skCase, dsObjId).new RootNode(); @@ -267,7 +281,9 @@ public class Artifacts { } else if (TSK_HASHSET_HIT.getTypeID() == typeId) { HashsetHits.RootNode hashsetHits = new HashsetHits(skCase, dsObjId).new RootNode(); return new TypeNodeKey(hashsetHits, TSK_HASHSET_HIT); - + } else if (MALWARE_ARTIFACT_TYPE != null && MALWARE_ARTIFACT_TYPE.getTypeID() == typeId) { + MalwareHits.RootNode malwareHits = new MalwareHits(skCase, dsObjId).new RootNode(); + return new TypeNodeKey(malwareHits, MALWARE_ARTIFACT_TYPE); } else { return new TypeNodeKey(type, dsObjId); } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyItemVisitor.java b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyItemVisitor.java index d433d0d6df..5ebd7c4216 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyItemVisitor.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyItemVisitor.java @@ -60,6 +60,8 @@ public interface AutopsyItemVisitor { T visit(KeywordHits kh); T visit(HashsetHits hh); + + T visit(MalwareHits mh); T visit(EmailExtracted ee); @@ -169,6 +171,11 @@ public interface AutopsyItemVisitor { return defaultVisit(hh); } + @Override + public T visit(MalwareHits mh) { + return defaultVisit(mh); + } + @Override public T visit(InterestingHits ih) { return defaultVisit(ih); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties index f663054325..75b612a0b4 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties @@ -101,7 +101,7 @@ ImageNode.createSheet.name.displayName=Name ImageNode.createSheet.name.desc=no description Installer.exception.tskVerStringNull.msg=Sleuth Kit JNI test call returned without error, but version string was null\! Installer.exception.taskVerStringBang.msg=Sleuth Kit JNI test call returned without error, but version string was ""\! -Installer.tskLibErr.msg=Problem with Sleuth Kit JNI. Test call failed\!\n\nDetails: {0} +Installer.tskLibErr.msg=Problem with Sleuth Kit JNI. Test call failed\!\n Is Autopsy or Cyber Triage already running?\n\nDetails: {0} Installer.tskLibErr.err=Fatal Error\! InterestingHits.interestingItems.text=INTERESTING ITEMS InterestingHits.displayName.text=Interesting Items diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED index 5dbdff8b89..4d958cf39b 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED @@ -315,7 +315,7 @@ ImageNode.createSheet.name.displayName=Name ImageNode.createSheet.name.desc=no description Installer.exception.tskVerStringNull.msg=Sleuth Kit JNI test call returned without error, but version string was null\! Installer.exception.taskVerStringBang.msg=Sleuth Kit JNI test call returned without error, but version string was ""\! -Installer.tskLibErr.msg=Problem with Sleuth Kit JNI. Test call failed\!\n\nDetails: {0} +Installer.tskLibErr.msg=Problem with Sleuth Kit JNI. Test call failed\!\n Is Autopsy or Cyber Triage already running?\n\nDetails: {0} Installer.tskLibErr.err=Fatal Error\! InterestingHits.interestingItems.text=INTERESTING ITEMS InterestingHits.displayName.text=Interesting Items @@ -418,6 +418,7 @@ ScoreContent_createSheet_filterType_displayName=Type ScoreContent_createSheet_name_desc=no description ScoreContent_createSheet_name_displayName=Name ScoreContent_ScoreContentNode_name=Score +ScoreContent_ScoreFileNode_type=File ScoreContent_susFilter_text=Suspicious Items SlackFileNode.getActions.viewInNewWin.text=View in New Window SlackFileNode.getActions.viewFileInDir.text=View File in Directory diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ar.properties new file mode 100644 index 0000000000..5147ae6832 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ar.properties @@ -0,0 +1,477 @@ +AbstractAbstractFileNode.accessTimeColLbl=Hora de acceso +AbstractAbstractFileNode.attrAddrColLbl=Direccion Atributos +AbstractAbstractFileNode.changeTimeColLbl=Hora de cambio +AbstractAbstractFileNode.createdTimeColLbl=Hora de creacion +AbstractAbstractFileNode.createSheet.comment.displayName=C +AbstractAbstractFileNode.createSheet.comment.name=C +# {0} - occurrenceCount +AbstractAbstractFileNode.createSheet.count.description=Se encontraron {0} fuente(s) de datos con ocurrencias del valor de correlacion MD5 +AbstractAbstractFileNode.createSheet.count.displayName=O +AbstractAbstractFileNode.createSheet.count.hashLookupNotRun.description=La busqueda del hash no se habia ejecutado en este archivo cuando se poblo la columna +AbstractAbstractFileNode.createSheet.count.name=O +AbstractAbstractFileNode.createSheet.score.name=S +AbstractAbstractFileNode.extensionColLbl=Extension +AbstractAbstractFileNode.flagsDirColLbl=Marcas(Dir) +AbstractAbstractFileNode.flagsMetaColLbl=Marcas(Meta) +AbstractAbstractFileNode.groupidColLbl=ID de Grupo +AbstractAbstractFileNode.knownColLbl=Conocido +AbstractAbstractFileNode.locationColLbl=Ubicacion +AbstractAbstractFileNode.md5HashColLbl=Hash MD5 +AbstractAbstractFileNode.metaAddrColLbl=Direccion Meta. +AbstractAbstractFileNode.mimeType=Tipo MIME +AbstractAbstractFileNode.modeColLbl=Modo +AbstractAbstractFileNode.modifiedTimeColLbl=Hora de modificacion +AbstractAbstractFileNode.nameColLbl=Nombre +AbstractAbstractFileNode.objectId=ID de Objeto +AbstractAbstractFileNode.originalName=Nombre Original +AbstractAbstractFileNode.sha256HashColLbl=Hash SHA-256 +AbstractAbstractFileNode.sizeColLbl=Tamanio +AbstractAbstractFileNode.tagsProperty.displayName=Etiquetas +AbstractAbstractFileNode.typeDirColLbl=Tipo(Dir) +AbstractAbstractFileNode.typeMetaColLbl=Tipo(Meta) +AbstractAbstractFileNode.useridColLbl=ID de Usuario +AbstractContentNode.nodescription=sin descripcion +AbstractContentNode.valueLoading=cargando valor +# {0} - significanceDisplayName +AbstractContentNode_getScorePropertyAndDescription_description=Tiene un resultado de analisis de {0} +AbstractFsContentNode.noDesc.text=sin descripcion +AnalysisResults_name=Resultados del Analisis +ArtifactStringContent.attrsTableHeader.sources=Fuente(s) +ArtifactStringContent.attrsTableHeader.type=Tipo +ArtifactStringContent.attrsTableHeader.value=Valor +ArtifactStringContent.failedToGetAttributes.message=Error al obtener algunos o todos los atributos de la base de datos del caso +ArtifactStringContent.failedToGetSourcePath.message=Error al obtener la ruta del archivo fuente de la base de datos del caso +AttachmentNode.getActions.openInExtViewer.text=Abrir en Visor Externo Ctrl+E +AttachmentNode.getActions.searchFilesSameMD5.text=Buscar archivos con el mismo hash MD5 +AttachmentNode.getActions.viewFileInDir.text=Ver archivo en el directorio +AttachmentNode.getActions.viewInNewWin.text=Ver en una nueva ventana +# {0} - node name +BaseChildFactory.NoSuchEventBusException.message=Sin autobus de eventos para el nodo: {0} +BlackboardArtifactNode.createSheet.artifactDetails.displayName=Detalles del Resultado +BlackboardArtifactNode.createSheet.artifactDetails.name=Detalles del Resultado +BlackboardArtifactNode.createSheet.artifactMD5.displayName=Hash MD5 +BlackboardArtifactNode.createSheet.artifactMD5.name=Hash MD5 +BlackboardArtifactNode.createSheet.artifactType.displayName=Tipo de Resultado +BlackboardArtifactNode.createSheet.artifactType.name=Tipo de Resultado +BlackboardArtifactNode.createSheet.comment.displayName=C +BlackboardArtifactNode.createSheet.comment.name=C +# {0} - occurrenceCount +# {1} - attributeType +BlackboardArtifactNode.createSheet.count.description=Se encontraron {0} fuente(s) de datos con ocurrencias del valor de correlacion de tipo {1} +BlackboardArtifactNode.createSheet.count.displayName=O +BlackboardArtifactNode.createSheet.count.name=O +BlackboardArtifactNode.createSheet.count.noCorrelationAttributes.description=No se encontraron propiedades de correlacion +BlackboardArtifactNode.createSheet.count.noCorrelationValues.description=No se pueden encontrar otras ocurrencias porque no existe un valor para la propiedad de correlacion disponible +BlackboardArtifactNode.createSheet.fileSize.displayName=Tamanio +BlackboardArtifactNode.createSheet.fileSize.name=Tamanio +BlackboardArtifactNode.createSheet.interestingResult.description=El resultado tiene un resultado interesante asociado. +BlackboardArtifactNode.createSheet.noScore.description=Sin puntuacion +BlackboardArtifactNode.createSheet.notableFile.description=Archivo asociado reconocido como notable. +BlackboardArtifactNode.createSheet.notableTaggedItem.description=Resultado o archivo asociado etiquetado con etiqueta notable. +BlackboardArtifactNode.createSheet.path.displayName=Ruta +BlackboardArtifactNode.createSheet.path.name=Ruta +BlackboardArtifactNode.createSheet.score.displayName=S +BlackboardArtifactNode.createSheet.score.name=S +BlackboardArtifactNode.createSheet.srcFile.displayName=Nombre de la Fuente +BlackboardArtifactNode.createSheet.srcFile.name=Nombre de la Fuente +BlackboardArtifactNode.createSheet.srcFile.origDisplayName=Nombre Original +BlackboardArtifactNode.createSheet.srcFile.origName=Nombre Original +BlackboardArtifactNode.createSheet.taggedItem.description=El resultado o archivo asociado ha sido etiquetado. +BlackboardArtifactNode.createSheet.tags.displayName=Etiquetas +BlackboardArtifactNode_analysisSheet_conclusion_name=Conclusion +BlackboardArtifactNode_analysisSheet_configuration_name=Configuracion +BlackboardArtifactNode_analysisSheet_justifaction_name=Justificacion +BlackboardArtifactNode_analysisSheet_score_name=Puntuacion +BlackboardArtifactNode_analysisSheet_sourceType_name=Tipo de Fuente +BlackboardArtifactNode_analysisSheet_soureName_name=Nombre de la Fuente +# {0} - type +BlackboardArtifactNode_getAssociatedFileActions_viewAssociatedFileAction=Ver {0} en el Directorio +# {0} - type +BlackboardArtifactNode_getAssociatedFileActions_viewAssociatedFileInTimelineAction=Ver {0} en la Linea de Tiempo... +BlackboardArtifactNode_getAssociatedTypeStr_associated=Archivo Asociado +BlackboardArtifactNode_getAssociatedTypeStr_webCache=Archivo en Cache +BlackboardArtifactNode_getAssociatedTypeStr_webDownload=Archivo Descargado +# {0} - contentType +BlackboardArtifactNode_getSrcContentAction_actionDisplayName=Ver Fuente {0} en el Directorio +BlackboardArtifactNode_getSrcContentViewerActions_openInExtViewer=Abrir en el Visor Externo Ctrl+E +BlackboardArtifactNode_getSrcContentViewerActions_viewInNewWin=Ver item en una Nueva Ventana +BlackboardArtifactNode_getTimelineArtifactAction_displayName=Ver item Seleccionado en la Linea de Tiempo... +# {0} - contentType +BlackboardArtifactNode_getTimelineSrcContentAction_actionDisplayName=Ver Fuente {0} en la Linea de Tiempo... +BlackboardArtifactNode_getViewSrcContentAction_type_DataArtifact=Artefacto de Datos +BlackboardArtifactNode_getViewSrcContentAction_type_File=Archivo +BlackboardArtifactNode_getViewSrcContentAction_type_OSAccount=Cuenta del Sistema Operativo +BlackboardArtifactNode_getViewSrcContentAction_type_unknown=item +BlackboardArtifactTagNode.createSheet.userName.text=Nombre de Usuario +BlackboardArtifactTagNode.viewSourceArtifact.text=Ver Resultado de la Fuente +Category.five=CAT-5: No pertinente +Category.four=CAT-4: Ejemplar/Comparacion (Uso Interno Solamente) +Category.one=CAT-1: Explotacion Infantil (Ilegal) +Category.three=CAT-3: CGI/Animacion (Explotacion Infantil) +Category.two=CAT-2: Explotacion Infantil (No Ilegal/Dificil de Determinar la Edad) +Category.zero=CAT-0: No Categorizado (Sin Categoria) +ContentTagNode.createSheet.artifactMD5.displayName=Hash MD5 +ContentTagNode.createSheet.artifactMD5.name=Hash MD5 +ContentTagNode.createSheet.origFileName=Nombre Original +ContentTagNode.createSheet.userName.text=Nombre de Usuario +DataArtifacts_name=Artefactos de Datos +DataSourcesHostsNode_name=Fuentes de Datos +DeletedContent.allDelFilter.text=Todos +DeletedContent.createSheet.filterType.desc=sin descripcion +DeletedContent.createSheet.filterType.displayName=Tipo +DeletedContent.createSheet.name.desc=sin descripcion +DeletedContent.createSheet.name.displayName=Nombre +DeletedContent.deletedContentsNode.name=Archivos Eliminados +DeletedContent.fsDelFilter.text=Sistema de Archivos +DeleteReportAction.showConfirmDialog.errorMsg=Se produjo un error al eliminar los informes. +DeleteReportAction.showConfirmDialog.multiple.explanation=Los informes permaneceran en el disco. +DeleteReportAction.showConfirmDialog.single.explanation=El informe permanecera en el disco. +FileNode.getActions.openInExtViewer.text=Abrir en Visor Externo Ctrl+E +FileNode.getActions.searchFilesSameMD5.text=Buscar archivos con el mismo hash MD5 +FileNode.getActions.viewFileInDir.text=Ver Archivo en el Directorio +FileNode.getActions.viewInNewWin.text=Ver item en una Nueva Ventana +FileTypeExtensionFilters.tskDatabaseFilter.text=Bases de Datos +FileTypes.bgCounting.placeholder=\ (contando...) +FileTypes.createSheet.name.desc=sin descripcion +FileTypes.createSheet.name.displayName=Nombre +FileTypes.createSheet.name.name=Nombre +FileTypes.name.text=Tipos de Archivo +FileTypesByMimeType.name.text=Por Tipo MIME +FileTypesByMimeTypeNode.createSheet.mediaSubtype.desc=sin descripcion +FileTypesByMimeTypeNode.createSheet.mediaSubtype.displayName=Subtipo +FileTypesByMimeTypeNode.createSheet.mediaSubtype.name=Subtipo +FileTypesByMimeTypeNode.createSheet.mediaType.desc=sin descripcion +FileTypesByMimeTypeNode.createSheet.mediaType.displayName=Tipo +FileTypesByMimeTypeNode.createSheet.mediaType.name=Tipo +GetSCOTask.occurrences.defaultDescription=No se encontraron propiedades de correlacion +GetSCOTask.occurrences.multipleProperties=Existen varias propiedades de correlacion diferentes para este resultado +HostGroupingNode_unknownHostNode_title=Host Desconocido +HostNode_actions_associateWithExisting=Asociar con persona existente... +HostNode_actions_associateWithNew=Asociar con nueva persona... +# {0} - hostName +HostNode_actions_removeFromPerson=Eliminar de la persona ({0}) +HostNode_createSheet_nameProperty=Nombre +ImageNode.action.runIngestMods.text=Ejecutar Modulos de Ingesta +ImageNode.createSheet.deviceId.desc=ID del Dispositivo de la Imagen +ImageNode.createSheet.deviceId.displayName=ID del Dispositivo +ImageNode.createSheet.deviceId.name=ID del Dispositivo +ImageNode.createSheet.sectorSize.desc=Tamanio del sector de la imagen en bytes. +ImageNode.createSheet.sectorSize.displayName=Tamanio del Sector (Bytes) +ImageNode.createSheet.sectorSize.name=Tamanio del Sector (Bytes) +ImageNode.createSheet.size.desc=Tamanio de la fuente de datos en bytes. +ImageNode.createSheet.size.displayName=Tamanio (Bytes) +ImageNode.createSheet.size.name=Tamanio (Bytes) +ImageNode.createSheet.timezone.desc=Zona horaria de la imagen +ImageNode.createSheet.timezone.displayName=Zona Horaria +ImageNode.createSheet.timezone.name=Zona Horaria +ImageNode.createSheet.type.desc=Tipo de la imagen. +ImageNode.createSheet.type.displayName=Tipo +ImageNode.createSheet.type.name=Tipo +ImageNode.createSheet.type.text=Imagen +ImageNode.getActions.openFileSearchByAttr.text=Abrir Busqueda de Archivos por Atributos +KeyValueNode.menuItemText.viewFileInDir=Ver Archivo Fuente en el Directorio +KeywordHits.createNodeForKey.accessTime.desc=Hora de Acceso +KeywordHits.createNodeForKey.accessTime.displayName=Hora de Acceso +KeywordHits.createNodeForKey.accessTime.name=Hora de Acceso +KeywordHits.createNodeForKey.chgTime.desc=Hora de Cambio +KeywordHits.createNodeForKey.chgTime.displayName=Hora de Cambio +KeywordHits.createNodeForKey.chgTime.name=Hora de Cambio +KeywordHits.createNodeForKey.modTime.desc=Hora de Modificacione +KeywordHits.createNodeForKey.modTime.displayName=Hora de Modificacion +KeywordHits.createNodeForKey.modTime.name=Hora de Modificacion +KeywordHits.createSheet.filesWithHits.desc=sin descripcion +KeywordHits.createSheet.filesWithHits.displayName=Archivos con Coincidencias +KeywordHits.createSheet.filesWithHits.name=Archivos con Coincidencias +KeywordHits.createSheet.listName.desc=sin descripcion +KeywordHits.createSheet.listName.displayName=Nombre de la Lista +KeywordHits.createSheet.listName.name=Nombre de la Lista +KeywordHits.createSheet.name.desc=sin descripcion +KeywordHits.createSheet.name.displayName=Nombre +KeywordHits.createSheet.name.name=Nombre +KeywordHits.createSheet.numChildren.desc=sin descripcion +KeywordHits.createSheet.numChildren.displayName=Numero de Hijos +KeywordHits.createSheet.numChildren.name=Numero de Hijos +KeywordHits.kwHits.text=Coincidencias de Palabras Clave +KeywordHits.simpleLiteralSearch.text=Busqueda de Palabra Clave Literal Individual +KeywordHits.singleRegexSearch.text=Busqueda de Expresion Regular Individual +LayoutFileNode.getActions.viewFileInDir.text=Ver Archivo en el Directorio +LocalFilesDataSourceNode.createSheet.deviceId.desc=ID del Dispositivo de la Imagen +LocalFilesDataSourceNode.createSheet.deviceId.displayName=ID del Dispositivo +LocalFilesDataSourceNode.createSheet.deviceId.name=ID del Dispositivo +LocalFilesDataSourceNode.createSheet.name.desc=sin descripcion +LocalFilesDataSourceNode.createSheet.name.displayName=Nombre +LocalFilesDataSourceNode.createSheet.name.name=Nombre +LocalFilesDataSourceNode.createSheet.noDesc=sin descripcion +LocalFilesDataSourceNode.createSheet.size.desc=Tamanio de la fuente de datos en bytes. +LocalFilesDataSourceNode.createSheet.size.displayName=Tamanio (Bytes) +LocalFilesDataSourceNode.createSheet.size.name=Tamanio (Bytes) +LocalFilesDataSourceNode.createSheet.timezone.desc=Zona horaria de la imagen +LocalFilesDataSourceNode.createSheet.timezone.displayName=Zona Horaria +LocalFilesDataSourceNode.createSheet.timezone.name=Zona Horaria +LocalFilesDataSourceNode.createSheet.type.desc=Tipo de la imagen. +LocalFilesDataSourceNode.createSheet.type.displayName=Tipo +LocalFilesDataSourceNode.createSheet.type.name=Tipo +LocalFilesDataSourceNode.createSheet.type.text=Conjunto de Archivos Logicos +OpenIDE-Module-Name=Modelo de Datos +AbstractContentChildren.CreateTSKNodeVisitor.exception.noNodeMsg=No hay Nodo definido para el elemento Sleuthkit dado +AbstractContentChildren.createAutopsyNodeVisitor.exception.noNodeMsg=No hay Nodo definido para el elemento Mostrable dado +AbstractContentNode.exception.cannotChangeSysName.msg=No se puede cambiar el nombre del sistema. +ArtifactStringContent.getStr.srcFilePath.text=Ruta del Archivo Fuente +ArtifactStringContent.getStr.err=Error al obtener el contenido +ArtifactTypeNode.createSheet.artType.name=Tipo de Artefacto +ArtifactTypeNode.createSheet.artType.displayName=Tipo de Artefacto +ArtifactTypeNode.createSheet.artType.desc=sin descripcion +ArtifactTypeNode.createSheet.childCnt.name=Recuento de Hijos +ArtifactTypeNode.createSheet.childCnt.displayName=Recuento de Hijos +ArtifactTypeNode.createSheet.childCnt.desc=sin descripcion +BlackboardArtifactNode.noDesc.text=sin descripcion +BlackboardArtifactNode.createSheet.ext.name=Extension +BlackboardArtifactNode.createSheet.ext.displayName=Extension +BlackboardArtifactNode.createSheet.mimeType.name=Tipo MIME +BlackboardArtifactNode.createSheet.mimeType.displayName=Tipo MIME +BlackboardArtifactNode.createSheet.filePath.name=Ruta del Archivo +BlackboardArtifactNode.createSheet.filePath.displayName=Ruta del Archivo +BlackboardArtifactNode.createSheet.dataSrc.name=Fuente de Datos +BlackboardArtifactNode.createSheet.dataSrc.displayName=Fuente de Datos +BlackboardArtifactTagNode.createSheet.srcFile.text=Nombre de la Fuente +BlackboardArtifactTagNode.createSheet.unavail.text=No disponible +BlackboardArtifactTagNode.createSheet.srcFilePath.text=Ruta del Archivo Fuente +BlackboardArtifactTagNode.createSheet.resultType.text=Tipo de Resultado +BlackboardArtifactTagNode.createSheet.comment.text=Comentario +BlackboardArtifactTagTypeNode.displayName.text=Etiquetas del Resultado +BlackboardArtifactTagTypeNode.createSheet.name.name=Nombre +BlackboardArtifactTagTypeNode.createSheet.name.displayName=Nombre +ContentTagNode.createSheet.file.name=Archivo +ContentTagNode.createSheet.file.displayName=Archivo +ContentTagNode.createSheet.unavail.path=No disponible +ContentTagNode.createSheet.filePath.name=Ruta del Archivo +ContentTagNode.createSheet.filePath.displayName=Ruta del Archivo +ContentTagNode.createSheet.comment.name=Comentario +ContentTagNode.createSheet.comment.displayName=Comentario +ContentTagNode.createSheet.fileModifiedTime.name=Hora de Modificacion +ContentTagNode.createSheet.fileModifiedTime.displayName=Hora de Modificacion +ContentTagNode.createSheet.fileChangedTime.name=Hora de Cambio +ContentTagNode.createSheet.fileChangedTime.displayName=Hora de Cambio +ContentTagNode.createSheet.fileAccessedTime.name=Hora de Acceso +ContentTagNode.createSheet.fileAccessedTime.displayName=Hora de Acceso +ContentTagNode.createSheet.fileCreatedTime.name=Hora de Creacion +ContentTagNode.createSheet.fileCreatedTime.displayName=Hora de Creacion +ContentTagNode.createSheet.fileSize.name=Tamanio +ContentTagNode.createSheet.fileSize.displayName=Tamanio +ContentTagTypeNode.displayName.text=Etiquetas del Archivo +ContentTagTypeNode.createSheet.name.name=Nombre +ContentTagTypeNode.createSheet.name.displayName=Nombre +ContentUtils.exception.msg=No se puede extraer {0} +DataModelActionsFactory.srcFileInDir.text=Ver Archivo Fuente en el Directorio +DataModelActionsFactory.fileInDir.text=Ver Archivo en el Directorio +DataModelActionsFactory.viewNewWin.text=Ver en una Nueva Ventana +DataModelActionsFactory.openExtViewer.text=Abrir en el Visor Externo Ctrl+E +DataSourcesNode.name=Fuentes de Datos +DataSourcesNode.group_by_datasource.name=Archivos de Fuentes de Datos +DataSourcesNode.createSheet.name.name=Nombre +DataSourcesNode.createSheet.name.displayName=Nombre +DataSourcesNode.createSheet.name.desc=sin descripcion +DirectoryNode.parFolder.text=[carpeta principal] +DirectoryNode.curFolder.text=[carpeta actual] +DirectoryNode.getActions.viewFileInDir.text=Ver Archivo en el Directorio +DirectoryNode.viewInNewWin.text=Ver en una Nueva Ventana +EmailExtracted.mailAccount.text=Cuenta +EmailExtracted.mailFolder.text=Carpeta +EmailExtracted.defaultAcct.text=Predeterminado +EmailExtracted.defaultFolder.text=Predeterminado +EmailExtracted.createSheet.name.name=Nombre +EmailExtracted.createSheet.name.displayName=Nombre +EmailExtracted.createSheet.name.desc=sin descripcion +ExtractedContentNode.name.text=Contenido Extraido +ExtractedContentNode.createSheet.name.name=Nombre +ExtractedContentNode.createSheet.name.displayName=Nombre +ExtractedContentNode.createSheet.name.desc=sin descripcion +LocalFileNode.viewFileInDir.text=Ver Archivo en el Directorio +FileSize.fileSizeRootNode.name=Tamanio del Archivo +FileSize.createSheet.name.name=Nombre +FileSize.createSheet.name.displayName=Nombre +FileSize.createSheet.name.desc=sin descripcion +FileSize.createSheet.filterType.name=Rango de Tamanio +FileSize.createSheet.filterType.displayName=Rango de Tamanio +FileSize.createSheet.filterType.desc=sin descripcion +FileSize.exception.notSupported.msg=No es compatible con este tipo de Elemento Mostrable: {0} +FileTypeChildren.exception.notSupported.msg=No es compatible con este tipo de Elemento Mostrable: {0} +FileTypesByExtNode.createSheet.filterType.name=Tipo de Archivo +FileTypesByExtNode.createSheet.filterType.displayName=Tipo de Archivo +FileTypesByExtNode.createSheet.filterType.desc=sin descripcion +FileTypesByExtNode.createSheet.fileExt.name=Extensiones de Archivo +FileTypesByExtNode.createSheet.fileExt.displayName=Extensiones de Archivo +FileTypesByExtNode.createSheet.fileExt.desc=sin descripcion +FileTypesByExtNode.fname.text=Por Extension +FileTypesByExtNode.createSheet.name.name=Nombre +FileTypesByExtNode.createSheet.name.displayName=Nombre +FileTypesByExtNode.createSheet.name.desc=sin descripcion +HashsetHits.createSheet.name.name=Nombre +HashsetHits.createSheet.name.displayName=Nombre +HashsetHits.createSheet.name.desc=sin descripcion +ImageNode.getActions.viewInNewWin.text=Ver en Nueva Ventana +ImageNode.createSheet.name.name=Nombre +ImageNode.createSheet.name.displayName=Nombre +ImageNode.createSheet.name.desc=sin descripcion +Installer.exception.tskVerStringNull.msg=La llamada de prueba de Sleuth Kit JNI se completo sin errores, pero la cadena de version estaba vacia.\! +Installer.exception.taskVerStringBang.msg=La llamada de prueba de Sleuth Kit JNI se completo sin errores, pero la cadena de version estaba ""\! +Installer.tskLibErr.msg=Problema con Sleuth Kit JNI. La llamada de prueba fallo.\!\n\nDetalles: {0} +Installer.tskLibErr.err=Error Fatal\! +InterestingHits.interestingItems.text=ELEMENTOS INTERESANTES +InterestingHits.displayName.text=Elementos interesantes +InterestingHits.createSheet.name.name=Nombre +InterestingHits.createSheet.name.displayName=Nombre +InterestingHits.createSheet.name.desc=sin descripcion +KeyValueNode.createSheet.name.name=Nombre +KeyValueNode.createSheet.name.displayName=Nombre +KeyValueNode.createSheet.name.desc=n/a +KeyValueNode.createSheet.map.desc=n/a +LayoutFileNode.propertyType.parts=Partes +LayoutFileNode.createSheet.name.name=Nombre +LayoutFileNode.createSheet.name.displayName=Nombre +LayoutFileNode.createSheet.name.desc=sin descripcion +LayoutFileNode.createSheet.noDescr.text=sin descripcion +LayoutFileNode.getActions.viewInNewWin.text=Ver en Nueva Ventana +LayoutFileNode.getActions.openInExtViewer.text=Abrir en visor externo Ctrl+E +LocalFileNode.createSheet.name.name=Nombre +LocalFileNode.createSheet.name.displayName=Nombre +LocalFileNode.createSheet.name.desc=sin descripcion +LocalFileNode.createSheet.noDescr.text=sin descripcion +LocalFileNode.getActions.viewInNewWin.text=Ver en Nueva Ventana +LocalFileNode.getActions.openInExtViewer.text=Abrir en visor externo Ctrl+E +LocalFileNode.getActions.searchFilesSameMd5.text=Buscar archivos con el mismo hash MD5 +OpenReportAction.actionDisplayName=Abrir Informe +OpenReportAction.actionPerformed.MessageBoxTitle=Error al Abrir el Informe +OpenReportAction.actionPerformed.NoAssociatedEditorMessage=No hay un editor asociado para informes de este tipo o la aplicacion asociada no pudo iniciarse.. +OpenReportAction.actionPerformed.NoOpenInEditorSupportMessage=Esta plataforma (sistema operativo) no admite abrir un archivo en un editor de esta manera.. +OpenReportAction.actionPerformed.MissingReportFileMessage=El archivo de informe ya no existe.. +OpenReportAction.actionPerformed.ReportFileOpenPermissionDeniedMessage=Permiso denegado para abrir el archivo de informe.. +OsAccount_listNode_name=Cuentas del Sistema Operativo (OS Accounts) +OsAccounts.createSheet.comment.displayName=C +OsAccounts.createSheet.comment.name=C +# {0} - occurrenceCount +OsAccounts.createSheet.count.description=Se encontraron {0} fuente(s) de datos con ocurrencias del valor de correlacion de la cuenta del Sistema Operativo (OS Account). +OsAccounts.createSheet.count.displayName=O +OsAccounts.createSheet.count.hashLookupNotRun.description=La busqueda de hash no se realizo en este archivo cuando se poblo la columna. +OsAccounts.createSheet.count.name=O +OsAccounts.createSheet.score.displayName=S +OsAccounts.createSheet.score.name=S +OsAccounts_accountHostNameProperty_desc=Nombre de Host de la Cuenta del Sistema Operativo (OS Account) +OsAccounts_accountHostNameProperty_displayName=Host +OsAccounts_accountHostNameProperty_name=HostName +OsAccounts_accountNameProperty_desc=Nombre de la Cuenta del Sistema Operativo (OS Account) +OsAccounts_accountNameProperty_displayName=Nombre +OsAccounts_accountNameProperty_name=Nombre +OsAccounts_accountRealmNameProperty_desc=Nombre del Reino de la Cuenta del Sistema Operativo (OS Account) +OsAccounts_accountRealmNameProperty_displayName=Nombre del Reino +OsAccounts_accountRealmNameProperty_name=RealmName +OsAccounts_accountScopeNameProperty_desc=Nombre del Alcance de la Cuenta del Sistema Operativo (OS Account) +OsAccounts_accountScopeNameProperty_displayName=Alcance +OsAccounts_accountScopeNameProperty_name=ScopeName +OsAccounts_createdTimeProperty_desc=Hora de Creacion de la Cuenta del Sistema Operativo (OS Account) +OsAccounts_createdTimeProperty_displayName=Hora de Creacion +OsAccounts_createdTimeProperty_name=creationTime +OsAccounts_loginNameProperty_desc=Nombre de inicio de sesion de la Cuenta del Sistema Operativo (OS Account) +OsAccounts_loginNameProperty_displayName=Nombre de inicio de sesion +OsAccounts_loginNameProperty_name=loginName +PersonGroupingNode_actions_delete=Eliminar Persona +PersonGroupingNode_actions_rename=Renombrar Persona... +PersonGroupingNode_createSheet_nameProperty=Nombre +PersonNode_unknownPersonNode_title=Personas Desconocidas +PoolNode.createSheet.name.desc=sin descripcion +PoolNode.createSheet.name.displayName=Nombre +PoolNode.createSheet.name.name=Nombre +PoolNode.createSheet.type.desc=sin descripcion +PoolNode.createSheet.type.displayName=Tipo +PoolNode.createSheet.type.name=Tipo +RecentFiles.aut0DayFilter.displayName.text=Dia Final +RecentFiles.aut1dayFilter.displayName.text=Dia Final - 1 +RecentFiles.aut2dayFilter.displayName.text=Dia Final - 2 +RecentFiles.aut3dayFilter.displayName.text=Dia Final - 3 +RecentFiles.aut4dayFilter.displayName.text=Dia Final - 4 +RecentFiles.aut5dayFilter.displayName.text=Dia Final - 5 +RecentFiles.aut6dayFilter.displayName.text=Dia Final - 6 +RecentFilesFilterChildren.exception.defaultVisit.msg=No es compatible con este tipo de elemento desplegable (Displayable Item): {0} +RecentFilesFilterNode.createSheet.filterType.name=Tipo de Filtro +RecentFilesFilterNode.createSheet.filterType.displayName=Tipo de Filtro +RecentFilesFilterNode.createSheet.filterType.desc=sin descripcion +RecentFilesNode.createSheet.name.name=Nombre +RecentFilesNode.createSheet.name.displayName=Nombre +RecentFilesNode.createSheet.name.desc=sin descripcion +RecentFilesNode.name.text=Archivos Recientes +ReportNode.sourceModuleNameProperty.name=Nombre del Modulo de Origen +ReportNode.sourceModuleNameProperty.displayName=Nombre del Modulo de Origen +ReportNode.sourceModuleNameProperty.desc=Nombre del modulo que creo el informe +ReportNode.createdTimeProperty.name=Hora de Creacion +ReportNode.createdTimeProperty.displayName=Hora de Creacion +ReportNode.createdTimeProperty.desc=Hora en que se creo el informe +ReportNode.pathProperty.name=Ruta del Archivo del Informe +ReportNode.pathProperty.displayName=Ruta del Archivo del Informe +ReportNode.pathProperty.desc=Ruta local del archivo del informe +ReportNode.reportNameProperty.name=Nombre del Informe +ReportNode.reportNameProperty.displayName=Nombre del Informe +ReportNode.reportNameProperty.desc=Nombre del informe +ReportsListNode.displayName=Informes +SlackFileNode.getActions.viewInNewWin.text=Ver en Nueva Ventana +SlackFileNode.getActions.viewFileInDir.text=Ver Archivo en el Directorio +SpecialDirectoryNode.getActions.viewInNewWin.text=Ver en Nueva Ventana +TagNameNode.namePlusTags.text={0} Etiquetas +TagNameNode.contentTagTypeNodeKey.text=Etiquetas de Contenido +TagNameNode.bbArtTagTypeNodeKey.text=Etiquetas de Resultados +TagNameNode.bookmark.text=Marcador +TagNameNode.createSheet.name.name=Nombre +TagNameNode.createSheet.name.displayName=Nombre +TagNode.propertySheet.origName=Nombre Original +TagNode.propertySheet.origNameDisplayName=Nombre Original +TagsNode.displayName.text=Etiquetas +TagsNode.createSheet.name.name=Nombre +TagsNode.createSheet.name.displayName=Nombre +UnsupportedContentNode.createSheet.name.desc=sin descripcion +UnsupportedContentNode.createSheet.name.displayName=Nombre +UnsupportedContentNode.createSheet.name.name=Nombre +UnsupportedContentNode.displayName=Contenido no Compatible +ViewsNode.name.text=Vistas de Archivos +ViewsNode.createSheet.name.name=Nombre +ViewsNode.createSheet.name.displayName=Nombre +ViewsNode.createSheet.name.desc=sin descripcion +VirtualDirectoryNode.getActions.viewInNewWin.text=Ver en Nueva Ventana +VirtualDirectoryNode.createSheet.name.name=Nombre +VirtualDirectoryNode.createSheet.name.displayName=Nombre +VirtualDirectoryNode.createSheet.name.desc=sin descripcion +VirtualDirectoryNode.createSheet.noDesc=sin descripcion +VolumeNode.getActions.viewInNewWin.text=Ver en Nueva Ventana +VolumeNode.createSheet.name.name=Nombre +VolumeNode.createSheet.name.displayName=Nombre +VolumeNode.createSheet.name.desc=sin descripcion +VolumeNode.createSheet.id.name=ID +VolumeNode.createSheet.id.displayName=ID +VolumeNode.createSheet.id.desc=sin descripcion +VolumeNode.createSheet.startSector.name=Sector de Inicio +VolumeNode.createSheet.startSector.displayName=Sector de Inicio +VolumeNode.createSheet.startSector.desc=sin descripcion +VolumeNode.createSheet.lenSectors.name=Longitud en Sectores +VolumeNode.createSheet.lenSectors.displayName=Longitud en Sectores +VolumeNode.createSheet.lenSectors.desc=sin descripcion +VolumeNode.createSheet.description.name=Descripcion +VolumeNode.createSheet.description.displayName=Descripcion +VolumeNode.createSheet.description.desc=sin descripcion +VolumeNode.createSheet.flags.name=Indicadores +VolumeNode.createSheet.flags.displayName=Indicadores +VolumeNode.createSheet.flags.desc=sin descripcion +ArtifactStringContent.getStr.artifactId.text=ID de Artefacto +DeleteReportAction.actionDisplayName.singleReport=Eliminar Informe +DeleteReportAction.actionDisplayName.multipleReports=Eliminar Informes +DeleteReportAction.actionPerformed.showConfirmDialog.title=Confirmar Eliminacion +DeleteReportAction.actionPerformed.showConfirmDialog.single.msg=¿Deseas eliminar 1 informe del caso? +DeleteReportAction.actionPerformed.showConfirmDialog.multiple.msg=¿Deseas eliminar {0} informes del caso? +FileTypeExtensionFilters.tskImgFilter.text=Imagenes +FileTypeExtensionFilters.tskVideoFilter.text=Videos +FileTypeExtensionFilters.tskAudioFilter.text=Audio +FileTypeExtensionFilters.tskArchiveFilter.text=Archivos de Compresion +FileTypeExtensionFilters.tskDocumentFilter.text=Documentos +FileTypeExtensionFilters.tskExecFilter.text=Ejecutables +FileTypeExtensionFilters.autDocHtmlFilter.text=HTML +FileTypeExtensionFilters.autDocOfficeFilter.text=Office +FileTypeExtensionFilters.autoDocPdfFilter.text=PDF +FileTypeExtensionFilters.autDocTxtFilter.text=Texto Plano +FileTypeExtensionFilters.autDocRtfFilter.text=Texto Enriquecido diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java b/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java index 85e715382e..b80fa67d94 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java @@ -111,6 +111,8 @@ public interface DisplayableItemNodeVisitor { T visit(HashsetHits.RootNode hhrn); T visit(HashsetHits.HashsetNameNode hhsn); + + T visit(MalwareHits.RootNode mhrn); T visit(EmailExtracted.RootNode eern); @@ -431,6 +433,11 @@ public interface DisplayableItemNodeVisitor { return defaultVisit(hhsn); } + @Override + public T visit(MalwareHits.RootNode mhrn) { + return defaultVisit(mhrn); + } + @Override public T visit(InterestingHits.RootNode ihrn) { return defaultVisit(ihrn); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Installer.java b/Core/src/org/sleuthkit/autopsy/datamodel/Installer.java index 81b19800d9..323424efdf 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Installer.java @@ -70,8 +70,9 @@ public class Installer extends ModuleInstall { logger.log(Level.CONFIG, "Sleuth Kit Version: {0}", skVersion); //NON-NLS } - } catch (Exception e) { + } catch (Exception | UnsatisfiedLinkError e) { logger.log(Level.SEVERE, "Error calling Sleuth Kit library (test call failed)", e); //NON-NLS + logger.log(Level.SEVERE, "Is Autopsy or Cyber Triage already running?)", e); //NON-NLS // Normal error box log handler won't be loaded yet, so show error here. final Component parentComponent = null; // Use default window frame. diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/MalwareHits.java b/Core/src/org/sleuthkit/autopsy/datamodel/MalwareHits.java new file mode 100755 index 0000000000..c1761a7ad5 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/MalwareHits.java @@ -0,0 +1,357 @@ +/* + * 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 org.sleuthkit.autopsy.datamodel; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Observable; +import java.util.Observer; +import java.util.Set; +import java.util.logging.Level; +import org.openide.nodes.Children; +import org.openide.nodes.Node; +import org.openide.nodes.Sheet; +import org.openide.util.NbBundle; +import org.openide.util.WeakListeners; +import org.openide.util.lookup.Lookups; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.ingest.IngestManager; +import org.sleuthkit.autopsy.ingest.ModuleDataEvent; +import org.sleuthkit.datamodel.BlackboardArtifact; +import org.sleuthkit.datamodel.SleuthkitCase; +import org.sleuthkit.datamodel.SleuthkitCase.CaseDbQuery; +import org.sleuthkit.datamodel.TskCoreException; +import org.sleuthkit.autopsy.datamodel.Artifacts.UpdatableCountTypeNode; +import org.sleuthkit.datamodel.AnalysisResult; +import org.sleuthkit.datamodel.Score; + +/** + * Malware hits node support. Inner classes have all of the nodes in the tree. + */ +public class MalwareHits implements AutopsyVisitableItem { + + private static final String MALWARE_HITS = "TSK_MALWARE"; // this is currently a custom TSK artifact type, created in MalwareScanIngestModule + private static BlackboardArtifact.Type MALWARE_ARTIFACT_TYPE = null; + private static String DISPLAY_NAME; + private static final Logger logger = Logger.getLogger(MalwareHits.class.getName()); + private static final Set INGEST_JOB_EVENTS_OF_INTEREST = EnumSet.of(IngestManager.IngestJobEvent.COMPLETED, IngestManager.IngestJobEvent.CANCELLED); + private static final Set INGEST_MODULE_EVENTS_OF_INTEREST = EnumSet.of(IngestManager.IngestModuleEvent.DATA_ADDED); + private SleuthkitCase skCase; + private final MalwareResults malwareResults; + private final long filteringDSObjId; // 0 if not filtering/grouping by data source + + /** + * Constructor + * + * @param skCase Case DB + * + */ + public MalwareHits(SleuthkitCase skCase) { + this(skCase, 0); + } + + /** + * Constructor + * + * @param skCase Case DB + * @param objId Object id of the data source + * + */ + public MalwareHits(SleuthkitCase skCase, long objId) { + this.skCase = skCase; + this.filteringDSObjId = objId; + malwareResults = new MalwareResults(); + } + + @Override + public T accept(AutopsyItemVisitor visitor) { + return visitor.visit(this); + } + + /** + * Stores all of the malware results in a single class that is observable + * for the child nodes + */ + private class MalwareResults extends Observable implements Observer { + + // list of artifacts + // NOTE: the list can be accessed by multiple worker threads and needs to be synchronized + private final Set malwareHits = new HashSet<>(); + + MalwareResults() { + addNotify(); + update(); + } + + Set getArtifactIds() { + synchronized (malwareHits) { + return Collections.unmodifiableSet(malwareHits); + } + } + + @SuppressWarnings("deprecation") + final void update() { + synchronized (malwareHits) { + malwareHits.clear(); + } + + if (skCase == null) { + return; + } + + // Get the custom TSK_MALWARE artifact type from case database + if (MALWARE_ARTIFACT_TYPE == null) { + try { + MALWARE_ARTIFACT_TYPE = skCase.getArtifactType(MALWARE_HITS); + DISPLAY_NAME = MALWARE_ARTIFACT_TYPE.getDisplayName(); + } catch (TskCoreException ex) { + logger.log(Level.WARNING, "Unable to get TSK_MALWARE artifact type from database : ", ex); //NON-NLS + return; + } + } + + String query = "SELECT blackboard_artifacts.artifact_obj_id " //NON-NLS + + "FROM blackboard_artifacts,tsk_analysis_results WHERE " //NON-NLS + + "blackboard_artifacts.artifact_type_id=" + MALWARE_ARTIFACT_TYPE.getTypeID() //NON-NLS + + " AND tsk_analysis_results.artifact_obj_id=blackboard_artifacts.artifact_obj_id" //NON-NLS + + " AND (tsk_analysis_results.significance=" + Score.Significance.NOTABLE.getId() //NON-NLS + + " OR tsk_analysis_results.significance=" + Score.Significance.LIKELY_NOTABLE.getId() + " )"; //NON-NLS + if (filteringDSObjId > 0) { + query += " AND blackboard_artifacts.data_source_obj_id = " + filteringDSObjId; //NON-NLS + } + + try (CaseDbQuery dbQuery = skCase.executeQuery(query)) { + ResultSet resultSet = dbQuery.getResultSet(); + synchronized (malwareHits) { + while (resultSet.next()) { + long artifactObjId = resultSet.getLong("artifact_obj_id"); //NON-NLS + malwareHits.add(artifactObjId); + } + } + } catch (TskCoreException | SQLException ex) { + logger.log(Level.WARNING, "SQL Exception occurred: ", ex); //NON-NLS + } + + setChanged(); + notifyObservers(); + } + + private final PropertyChangeListener pcl = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + String eventType = evt.getPropertyName(); + if (eventType.equals(IngestManager.IngestModuleEvent.DATA_ADDED.toString())) { + /** + * Checking for a current case is a stop gap measure until a + * different way of handling the closing of cases is worked + * out. Currently, remote events may be received for a case + * that is already closed. + */ + try { + Case.getCurrentCaseThrows(); + /** + * Due to some unresolved issues with how cases are + * closed, it is possible for the event to have a null + * oldValue if the event is a remote event. + */ + ModuleDataEvent eventData = (ModuleDataEvent) evt.getOldValue(); + if (null != eventData && eventData.getBlackboardArtifactType().getTypeID() == MALWARE_ARTIFACT_TYPE.getTypeID()) { + malwareResults.update(); + } + } catch (NoCurrentCaseException notUsed) { + /** + * Case is closed, do nothing. + */ + } + } else if (eventType.equals(IngestManager.IngestJobEvent.COMPLETED.toString()) + || eventType.equals(IngestManager.IngestJobEvent.CANCELLED.toString())) { + /** + * Checking for a current case is a stop gap measure until a + * different way of handling the closing of cases is worked + * out. Currently, remote events may be received for a case + * that is already closed. + */ + try { + Case.getCurrentCaseThrows(); + malwareResults.update(); + } catch (NoCurrentCaseException notUsed) { + /** + * Case is closed, do nothing. + */ + } + } else if (eventType.equals(Case.Events.CURRENT_CASE.toString())) { + // case was closed. Remove listeners so that we don't get called with a stale case handle + if (evt.getNewValue() == null) { + removeNotify(); + skCase = null; + } + } + } + }; + + private final PropertyChangeListener weakPcl = WeakListeners.propertyChange(pcl, null); + + protected void addNotify() { + IngestManager.getInstance().addIngestJobEventListener(INGEST_JOB_EVENTS_OF_INTEREST, weakPcl); + IngestManager.getInstance().addIngestModuleEventListener(INGEST_MODULE_EVENTS_OF_INTEREST, weakPcl); + Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), weakPcl); + } + + protected void removeNotify() { + IngestManager.getInstance().removeIngestJobEventListener(weakPcl); + IngestManager.getInstance().removeIngestModuleEventListener(weakPcl); + Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), weakPcl); + } + + @Override + protected void finalize() throws Throwable { + super.finalize(); + removeNotify(); + } + + @Override + public void update(Observable o, Object arg) { + update(); + } + } + + /** + * Top-level node for all malware hits + */ + public class RootNode extends UpdatableCountTypeNode { + + public RootNode() { + super(Children.create(new HitFactory(DISPLAY_NAME), true), + Lookups.singleton(DISPLAY_NAME), + DISPLAY_NAME, + filteringDSObjId, + MALWARE_ARTIFACT_TYPE); + + super.setName(MALWARE_HITS); + // TODO make an icon + this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/artifact-icon.png"); + } + + @Override + public boolean isLeafTypeNode() { + return true; + } + + @Override + public T accept(DisplayableItemNodeVisitor visitor) { + return visitor.visit(this); + } + + @Override + protected Sheet createSheet() { + Sheet sheet = super.createSheet(); + Sheet.Set sheetSet = sheet.get(Sheet.PROPERTIES); + if (sheetSet == null) { + sheetSet = Sheet.createPropertiesSet(); + sheet.put(sheetSet); + } + + sheetSet.put(new NodeProperty<>(NbBundle.getMessage(this.getClass(), "MalwareHits.createSheet.name.name"), + NbBundle.getMessage(this.getClass(), "MalwareHits.createSheet.name.displayName"), + NbBundle.getMessage(this.getClass(), "MalwareHits.createSheet.name.desc"), + getName())); + + return sheet; + } + + @Override + public String getItemType() { + return getClass().getName(); + } + + /** + * When this method is called, the count to be displayed will be + * updated. + */ + @Override + void updateDisplayName() { + super.setDisplayName(DISPLAY_NAME + " (" + malwareResults.getArtifactIds().size() + ")"); + } + } + + /** + * Creates the nodes for the malware hits. + */ + private class HitFactory extends BaseChildFactory implements Observer { + + private final Map artifactHits = new HashMap<>(); + + private HitFactory(String nodeName) { + super(nodeName); + } + + @Override + protected void onAdd() { + malwareResults.addObserver(this); + } + + @Override + protected void onRemove() { + malwareResults.deleteObserver(this); + } + + @Override + protected Node createNodeForKey(AnalysisResult key) { + return new BlackboardArtifactNode(key); + } + + @Override + public void update(Observable o, Object arg) { + refresh(true); + } + + @Override + protected List makeKeys() { + if (skCase != null) { + + malwareResults.getArtifactIds().forEach((id) -> { + try { + if (!artifactHits.containsKey(id)) { + AnalysisResult art = skCase.getBlackboard().getAnalysisResultById(id); + //Cache attributes while we are off the EDT. + //See JIRA-5969 + art.getAttributes(); + artifactHits.put(id, art); + } + } catch (TskCoreException ex) { + logger.log(Level.SEVERE, "TSK Exception occurred", ex); //NON-NLS + } + }); + return new ArrayList<>(artifactHits.values()); + } + return Collections.emptyList(); + } + } +} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Bundle_ar.properties new file mode 100644 index 0000000000..be3f47c07e --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Bundle_ar.properties @@ -0,0 +1,28 @@ +Accounts.BINNode.accountsProperty.displayName=Cuentas +Accounts.BINNode.bankCityProperty.displayName=Ciudad del Banco +Accounts.BINNode.bankCountryProperty.displayName=Pais del Banco +Accounts.BINNode.bankPhoneProperty.displayName=Telefono del Banco # +Accounts.BINNode.bankProperty.displayName=Banco +Accounts.BINNode.bankURLProperty.displayName=URL del Banco +Accounts.BINNode.binProperty.displayName=Numero de Identificacion del Banco +Accounts.BINNode.brandProperty.displayName=Marca +Accounts.BINNode.cardTypeProperty.displayName=Tipo de Tarjeta de Pago +Accounts.BINNode.noDescription=sin descripcion +Accounts.BINNode.schemeProperty.displayName=Esquema de Tarjeta de Credito +# {0} - number of children +Accounts.ByBINNode.displayName=Por BIN ({0}) +Accounts.ByBINNode.name=Por BIN +# {0} - number of children +Accounts.ByFileNode.displayName=Por Archivo ({0}) +Accounts.FileWithCCNNode.accountsProperty.displayName=Cuentas +Accounts.FileWithCCNNode.nameProperty.displayName=Archivo +Accounts.FileWithCCNNode.noDescription=sin descripcion +Accounts.FileWithCCNNode.statusProperty.displayName=Estado +# {0} - raw file name +# {1} - solr chunk id +Accounts.FileWithCCNNode.unallocatedSpaceFile.displayName={0}_chunk_{1} +Accounts.RootNode.displayName=Cuentas de Comunicacion +AccountsRootNode.name=Cuentas +ApproveAccountsAction.name=Aprobar Cuentas +RejectAccountsAction.name=Rechazar Cuentas +ToggleShowRejected.name=Mostrar Resultados Rechazados diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle_ar.properties new file mode 100644 index 0000000000..4ba1a910eb --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle_ar.properties @@ -0,0 +1,64 @@ +AddEditHostDialog_addHost_title=Agregar Host +AddEditHostDialog_editHost_title=Editar Host +AssociateNewPersonAction_menuTitle=Nueva Persona... +# {0} - hostName +# {1} - personName +AssociateNewPersonAction_onError_description=Se produjo un error al asociar el host {0} con la nueva persona {1}. +AssociateNewPersonAction_onError_title=Error al Asociar Nueva Persona +# {0} - hostName +# {1} - personName +AssociatePersonAction_onError_description=Se produjo un error al asociar el host {0} con la persona {1}. +AssociatePersonAction_onError_title=Error al Asociar Host con Persona +AssociatePersonAction_unknownPerson=Persona Desconocida +AssociatePersonsMenuAction_menuTitle=Asociar con Persona +CTL_OpenHosts=Manage Hosts +HostNameValidator_getValidationMessage_onDuplicate=Otro host ya tiene el mismo nombre. Por favor, elige un nombre diferente. +HostNameValidator_getValidationMessage_onEmpty=Por favor, proporciona un texto para el nombre del host. +HostNameValidator_getValidationMessage_sameAsOriginal=Por favor, proporciona un nuevo nombre para este host. +# {0} - hostname +ManageHostsDialog.failureToAdd.txt=No se puede agregar un nuevo host {0} en este momento. +# {0} - hostname +ManageHostsDialog.failureToDelete.txt=No se puede eliminar el host {0} en este momento. +# {0} - hostname +# {1} - hostId +ManageHostsDialog.failureToEdit.txt=No se puede actualizar el host {0} con el ID: {1} en este momento.. +ManageHostsDialog.failureToGetHosts.txt=Se produjo un error al obtener los hosts para el caso actual.. +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. +ManageHostsDialog.hostDetailsLabel.text=Detalles del Host +ManageHostsDialog.hostNameLabel.text=Nombre del Host: +ManageHostsDialog.closeButton.text=Cerrar +ManageHostsDialog.hostDescriptionTextArea.text=Hosts representan dispositivos individuales que pueden tener multiples fuentes de datos.. +ManageHostsDialog.hostListLabel.text=Hosts +ManageHostsDialog.newButton.text=Nuevo +ManageHostsDialog.editButton.text=Editar +ManageHostsDialog.deleteButton.text=Eliminar +AddEditHostDialog.nameLabel.text=Nombre: +AddEditHostDialog.okButton.text=OK +AddEditHostDialog.cancelButton.text=Cancelar +AddEditHostDialog.inputTextField.text=jTextField1 +ManageHostsDialog.seeLog.txt=\ Ver registro para obtener mas informacion. +ManageHostsDialog_title_text=Administrar Hosts +# {0} - sourceHost +# {1} - destHost +MergeHostAction.confirmText=¿Estas seguro de que quieres fusionar {0} en {1}?\nEsto puede incluir la fusion de cuentas del sistema operativo y no se puede deshacer.. +MergeHostAction.confirmTitle=Confirmacion +MergeHostAction.errorText=Se produjo un error al fusionar los hosts.\nIntentalo de nuevo en unos minutos o revisa el registro para mas detalles.. +MergeHostAction.errorTitle=Error al Fusionar Hosts +MergeHostAction.progressIndicatorName=Fusionando Hosts +# {0} - sourceHost +# {1} - destHost +MergeHostAction.progressText=Fusionando {0} en {1}... +# {0} - sourceHostName +# {1} - destHostName +MergeHostAction_onError_description=Se produjo un error al fusionar el host {0} en el host {1}.. +MergeHostAction_onError_title=Error al Fusionar Hosts +MergeHostMenuAction_menuTitle=Fusionar en Otro Host +OpenHostsAction_displayName=Hosts +# {0} - personName +RemoveParentPersonAction_menuTitle=Eliminar de la Persona ({0}) +# {0} - hostName +RemoveParentPersonAction_onError_description=Se produjo un error al eliminar la persona del host: {0}. +RemoveParentPersonAction_onError_title=Error al Eliminar el Host de la Persona +RemoveParentPersonAction_unknownPerson=Persona Desconocida diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle_ar.properties new file mode 100644 index 0000000000..97a0e74cf0 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle_ar.properties @@ -0,0 +1,24 @@ +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. +AddEditPersonDialog.cancelButton.text=Cancelar +AddEditPersonDialog.okButton.text=Aceptar +AddEditPersonDialog.nameLabel.text=Nombre: +AddEditPersonDialog.inputTextField.text= +AddEditPersonDialog.inputTextField.text_1=jTextField1 +AddEditPersonDialog.cancelButton.text_1=Cancelar +AddEditPersonDialog.okButton.text_1=Aceptar +AddEditPersonDialog.nameLabel.text_1=Nombre: +AddEditPersonDialog_addPerson_title=Agregar Persona +AddEditPersonDialog_editPerson_title=Editar Persona +DeletePersonAction_menuTitle=Eliminar Persona +# {0} - personName +DeletePersonAction_onError_description=Se produjo un error al eliminar la persona: {0}. +DeletePersonAction_onError_title=Error al Eliminar el Host de la Persona +EditPersonAction_menuTitle=Editar Persona... +# {0} - personName +EditPersonAction_onError_description=Se produjo un error al editar la persona: {0}. +EditPersonAction_onError_title=Error al Editar Persona +PersonNameValidator_getValidationMessage_onDuplicate=Otra persona ya tiene el mismo nombre. Por favor, elige un nombre diferente. +PersonNameValidator_getValidationMessage_onEmpty=Por favor, proporciona un texto para el nombre de la persona. +PersonNameValidator_getValidationMessage_sameAsOriginal=Por favor, proporciona un nuevo nombre para esta persona. diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/Bundle_ar.properties new file mode 100644 index 0000000000..1433dc724f --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/Bundle_ar.properties @@ -0,0 +1,21 @@ +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. + +AddRawImageTask.for.device=para el dispositivo +AddRawImageTask.image.critical.error.adding=Error critico al agregar +AddRawImageTask.image.noncritical.error.adding=Error no critico al agregar +AddRawImageTask.image.notExisting=no existe. +AddRawImageTask.noOpenCase.errMsg=No hay un caso abierto disponible. +AddRawImageTask.progress.add.text=Agregando imagen en bruto: +RawDSInputPanel.error.text=La ruta de la fuente de datos de multiples usuarios esta en la unidad "C:" +RawDSInputPanel.noOpenCase.errMsg=Excepcion al obtener el caso abierto. +RawDSInputPanel.pathLabel.text=Buscar un archivo de imagen de espacio no asignado: +RawDSInputPanel.errorLabel.text=Etiqueta de Error +RawDSInputPanel.browseButton.text=Buscar +RawDSInputPanel.pathTextField.text= +RawDSInputPanel.jBreakFileUpLabel.text=Dividir la imagen en: +RawDSInputPanel.jNoBreakupRadioButton.text=No dividir +RawDSInputPanel.j2GBBreakupRadioButton.text=trozos de 2 GB +RawDSInputPanel.timeZoneLabel.text=Por favor, selecciona la zona horaria de entrada: +RawDSProcessor.dataSourceType=Archivo de Imagen de Espacio No Asignado diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle_ar.properties new file mode 100644 index 0000000000..fdb56b37c3 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle_ar.properties @@ -0,0 +1,16 @@ +XRYDataSourceProcessor.childNotReadable=La ruta de nivel superior [ %s ] no es legible +XRYDataSourceProcessor.dataSourceType=Exportacion de Texto XRY +XRYDataSourceProcessor.fileAdded=Agregado %s a la base de datos del caso +XRYDataSourceProcessor.ioError=Se produjo un error de E/S al intentar probar la carpeta seleccionada +XRYDataSourceProcessor.noCurrentCase=Ningun caso esta abierto. +XRYDataSourceProcessor.noPathSelected=Por favor, selecciona una carpeta que contenga archivos de texto XRY exportados +XRYDataSourceProcessor.notAFolder=La ruta seleccionada no es una carpeta +XRYDataSourceProcessor.notReadable=La carpeta seleccionada no es legible +XRYDataSourceProcessor.notXRYFolder=La carpeta seleccionada no contenia archivos de texto XRY +XRYDataSourceProcessor.preppingFiles=Preparando para agregar archivos a la base de datos del caso +XRYDataSourceProcessor.processingFiles=Procesando todos los archivos XRY... +XRYDataSourceProcessor.unexpectedError=Se produjo un error interno al procesar el informe XRY +XRYDataSourceProcessorConfigPanel.fileBrowserButton.text=Navegar +XRYDataSourceProcessorConfigPanel.filePathTextField.text= +XRYDataSourceProcessorConfigPanel.xrySelectFolderLabel.text=Selecciona una carpeta que contenga archivos de texto XRY exportados +XRYDataSourceProcessorConfigPanel.errorLabel.text= diff --git a/Core/src/org/sleuthkit/autopsy/datasourcesummary/datamodel/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/datasourcesummary/datamodel/Bundle_ar.properties new file mode 100644 index 0000000000..410f0a5573 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datasourcesummary/datamodel/Bundle_ar.properties @@ -0,0 +1,2 @@ +DataSourceUserActivitySummary_getRecentAccounts_calllogMessage=Registro de Llamadas +DataSourceUserActivitySummary_getRecentAccounts_emailMessage=Mensaje de Correo Electronico diff --git a/Core/src/org/sleuthkit/autopsy/datasourcesummary/ui/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/datasourcesummary/ui/Bundle_ar.properties new file mode 100644 index 0000000000..63842c3561 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datasourcesummary/ui/Bundle_ar.properties @@ -0,0 +1,167 @@ +AnalysisPanel_countColumn_title=Conteo +AnalysisPanel_hashsetHits_tabName=Coincidencias de Hashset +AnalysisPanel_interestingItemHits_tabName=Coincidencias de Elementos Interesantes +AnalysisPanel_keyColumn_title=Nombre +AnalysisPanel_keywordHits_tabName=Coincidencias de Palabras Clave +AnalysisPanel_keywordSearchModuleName=Busqueda de Palabras Clave +BaseDataSourceSummaryPanel_goToArtifact=Ver Resultado de Origen +BaseDataSourceSummaryPanel_goToFile=Ver Archivo de Origen en el Directorio +ContainerPanel_setFieldsForNonImageDataSource_na=N/A +ContainerPanel_tabName=Contenedor +CTL_DataSourceSummaryAction=Resumen de Fuentes de Datos +DataSourceSummaryDialog.closeButton.text=Cerrar +ContainerPanel.displayNameLabel.text=Nombre de Visualizacion: +ContainerPanel.originalNameLabel.text=Nombre: +ContainerPanel.deviceIdLabel.text=ID del Dispositivo: +ContainerPanel.timeZoneLabel.text=Zona Horaria: +ContainerPanel.imageTypeLabel.text=Tipo de Imagen: +ContainerPanel.sizeLabel.text=Tamanio: +ContainerPanel.sectorSizeLabel.text=Tamanio de Sector: +ContainerPanel.md5HashLabel.text=MD5: +ContainerPanel.sha1HashLabel.text=SHA1: +ContainerPanel.sha256HashLabel.text=SHA256: +ContainerPanel.filePathsLabel.text=Rutas de Archivos: +ContainerPanel.displayNameValue.text= +ContainerPanel.originalNameValue.text= +ContainerPanel.deviceIdValue.toolTipText= +ContainerPanel.deviceIdValue.text= +ContainerPanel.timeZoneValue.text= +ContainerPanel.imageTypeValue.toolTipText= +ContainerPanel.imageTypeValue.text= +ContainerPanel.sizeValue.text= +ContainerPanel.sectorSizeValue.text= +ContainerPanel.md5HashValue.toolTipText= +ContainerPanel.md5HashValue.text= +ContainerPanel.sha1HashValue.text= +ContainerPanel.sha256HashValue.text= +ContainerPanel.filePathsTable.columnModel.title0= +ContainerPanel.acquisitionDetailsTextArea.text= +ContainerPanel.acquisitionDetailsLabel.text=Detalles de Adquisicion: +ContainerPanel.unallocatedSizeLabel.text=Espacio No Asignado: +ContainerPanel.unallocatedSizeValue.text= +DataSourceSummaryDialog.window.title=Resumen de Fuentes de Datos +DataSourceSummaryNode.column.dataSourceName.header=Nombre de la Fuente de Datos +DataSourceSummaryNode.column.files.header=Archivos +DataSourceSummaryNode.column.results.header=Artefactos +DataSourceSummaryNode.column.status.header=Estado de Ingesta +DataSourceSummaryNode.column.tags.header=Etiquetas +DataSourceSummaryNode.column.type.header=Tipo +DataSourceSummaryNode.viewDataSourceAction.text=Ir a Fuente de Datos +DataSourceSummaryTabbedPane_analysisTab_title=Analisis +DataSourceSummaryTabbedPane_detailsTab_title=Contenedor +DataSourceSummaryTabbedPane_geolocationTab_title=Geolocalizacion +DataSourceSummaryTabbedPane_ingestHistoryTab_title=Historial de Ingesta +DataSourceSummaryTabbedPane_pastCasesTab_title=Casos Anteriores +DataSourceSummaryTabbedPane_recentFileTab_title=Archivos Recientes +DataSourceSummaryTabbedPane_timelineTab_title=Linea de Tiempo +DataSourceSummaryTabbedPane_typesTab_title=Tipos +DataSourceSummaryTabbedPane_userActivityTab_title=Actividad del Usuario +DataSourceUserActivitySummary_getRecentAccounts_calllogMessage=Registro de Llamadas +DataSourceUserActivitySummary_getRecentAccounts_emailMessage=Mensaje de Correo Electronico +GeolocationPanel_cityColumn_title=Ciudad mas Cercana +GeolocationPanel_countColumn_title=Conteo +GeolocationPanel_mostCommon_tabName=Ciudades mas Comunes +GeolocationPanel_mostRecent_tabName=Ciudades mas Recientes +GeolocationPanel_onNoCrIngest_message=No se mostraran resultados porque el Analizador GPX no se ejecuto. +GeolocationPanel_unknownRow_title=Desconocido +PastCasesPanel_caseColumn_title=Caso +PastCasesPanel_countColumn_title=Conteo +PastCasesPanel_onNoCrIngest_message=No se mostraran resultados porque el modulo del Repositorio Central no se ejecuto. +RecentFilesPanel_attachmentsTable_tabName=Adjuntos Recientes +RecentFilesPanel_col_head_date=Fecha +RecentFilesPanel_col_header_domain=Dominio +RecentFilesPanel_col_header_path=Ruta +RecentFilesPanel_col_header_sender=Remitente +RecentFilesPanel_docsTable_tabName=Documentos Abiertos Recientemente +RecentFilesPanel_downloadsTable_tabName=Descargas Recientes +RecentFilesPanel_no_open_documents=No se encontraron documentos abiertos recientemente. +SizeRepresentationUtil_units_bytes=bytes +SizeRepresentationUtil_units_gigabytes=GB +SizeRepresentationUtil_units_kilobytes=KB +SizeRepresentationUtil_units_megabytes=MB +SizeRepresentationUtil_units_petabytes=PB +SizeRepresentationUtil_units_terabytes=TB +TimelinePanel_earliestLabel_title=Mas Antiguo +TimelinePanel_latestLabel_title=Mas Reciente +TimlinePanel_last30DaysChart_artifactEvts_title=Eventos de Resultados +TimlinePanel_last30DaysChart_fileEvts_title=Eventos de Archivos +TimlinePanel_last30DaysChart_title=ultimos 30 dias +TypesPanel_artifactsTypesPieChart_title=Tipos de Artefactos +TypesPanel_excelTabName=Tipos +TypesPanel_fileMimeTypesChart_audio_title=Audio +TypesPanel_fileMimeTypesChart_documents_title=Documentos +TypesPanel_fileMimeTypesChart_executables_title=Ejecutables +TypesPanel_fileMimeTypesChart_images_title=Imagenes +TypesPanel_fileMimeTypesChart_notAnalyzed_title=No Analizado +TypesPanel_fileMimeTypesChart_other_title=Otros +TypesPanel_fileMimeTypesChart_title=Tipos de Archivos +TypesPanel_fileMimeTypesChart_unknown_title=Desconocido +TypesPanel_fileMimeTypesChart_valueLabel=Conteo +TypesPanel_fileMimeTypesChart_videos_title=Videos +TypesPanel_filesByCategoryTable_allocatedRow_title=Archivos Asignados +TypesPanel_filesByCategoryTable_directoryRow_title=Directorios +TypesPanel_filesByCategoryTable_slackRow_title=Archivos de Slack +TypesPanel_filesByCategoryTable_unallocatedRow_title=Archivos No Asignados +TypesPanel_osLabel_title=OS +TypesPanel_sizeLabel_title=Tamanio +TypesPanel_usageLabel_title=Uso +UserActivityPanel.programsRunLabel.text=Programas Recientes +UserActivityPanel.recentAccountsLabel.text=Tipos de Cuentas Utilizadas Recientemente +UserActivityPanel.topWebSearchLabel.text=Busquedas Web Recientes +UserActivityPanel.topDevicesAttachedLabel.text=Dispositivos Adjuntados Recientemente +UserActivityPanel.recentDomainsLabel.text=Dominios Recientes +AnalysisPanel.hashsetHitsLabel.text=Coincidencias de Hashset +AnalysisPanel.keywordHitsLabel.text=Coincidencias de Palabras Clave +AnalysisPanel.interestingItemLabel.text=Coincidencias de Elementos Interesantes +RecentFilesPanel.openDocsLabel.text=Documentos Abiertos Recientemente +RecentFilesPanel.downloadLabel.text=Descargas Recientes +RecentFilesPanel.attachmentLabel.text=Adjuntos Recientes +DataSourceSummaryTabbedPane.noDataSourceLabel.text=No se ha seleccionado ninguna fuente de datos. +TimelinePanel.activityRangeLabel.text=Rango de Actividad +GeolocationPanel.withinDistanceLabel.text=Las ubicaciones a mas de 150 km de una ciudad apareceran como 'Desconocidas' +GeolocationPanel.mostRecentLabel.text=Ciudades Recientes de los Resultados de Geolocalizacion +GeolocationPanel.withinDistanceLabel1.text=Las ubicaciones a mas de 150 km de una ciudad apareceran como 'Desconocidas' +GeolocationPanel.mostCommonLabel.text=Ciudades mas Comunes de los Resultados de Geolocalizacion +GeolocationPanel.recentViewInGeolocationBtn.text=Ver en el Mapa +GeolocationPanel.commonViewInGeolocationBtn.text=Ver en el Mapa +RecentFilesPanel.rightClickForMoreOptions1.text=Haz clic derecho en la fila para mas opciones +RecentFilesPanel.rightClickForMoreOptions2.text=Haz clic derecho en la fila para mas opciones +RecentFilesPanel.rightClickForMoreOptions3.text=Haz clic derecho en la fila para mas opciones +UserActivityPanel.rightClickForMoreOptions1.text=Haz clic derecho en la fila para mas opciones +UserActivityPanel.rightClickForMoreOptions2.text=Haz clic derecho en la fila para mas opciones +UserActivityPanel.rightClickForMoreOptions3.text=Haz clic derecho en la fila para mas opciones +UserActivityPanel.rightClickForMoreOptions4.text=Haz clic derecho en la fila para mas opciones +UserActivityPanel.rightClickForMoreOptions5.text=Haz clic derecho en la fila para mas opciones +TimelinePanel.viewInTimelineBtn.text=Ver en la Linea de Tiempo +ExportPanel.xlsxExportMessage.text=Exportar Datos del Resumen de Fuentes de Datos a un Documento de Excel. +ExportPanel.xlsxExportButton.text=Exportar Datos del Resumen +ExcelExportDialog.titleLabel.text=El Resumen de Fuentes de Datos se ha exportado a: +ExcelExportDialog.okButton.text=Aceptar +PastCasesPanel_notableFileTable_tabName=Casos con Elementos Comunes que fueron Marcados como Destacados +PastCasesPanel.notableFileLabel.text=Casos con elementos comunes marcados como destacados +PastCasesPanel.seenDeviceLabel.text=Casos con los mismos ID de dispositivos (USB, Wifi, SIM, etc.) +PastCasesPanel.seenResultLabel.text=Casos con las mismas direcciones (Correo electronico, Telefono, etc.) +PastCasesPanel.warningLabel.text=NOTA: Estos resultados son desde el momento de la ingestion. No son actualizaciones en tiempo real.. +UserActivityPanel_noDataExists=No existen datos de comunicacion +UserActivityPanel_tab_title=Actividad del Usuario +UserActivityPanel_TopAccountTableModel_accountType_header=Tipo de Cuenta +UserActivityPanel_TopAccountTableModel_lastAccess_header=ultimo Acceso +UserActivityPanel_TopAccountTableModel_tabName=Tipos de Cuentas Utilizadas Recientemente +UserActivityPanel_TopDeviceAttachedTableModel_dateAccessed_header=ultimo Acceso +UserActivityPanel_TopDeviceAttachedTableModel_deviceId_header=ID del Dispositivo +UserActivityPanel_TopDeviceAttachedTableModel_makeModel_header=Marca y Modelo +UserActivityPanel_TopDeviceAttachedTableModel_tabName=Dispositivos Adjuntados Recientemente +UserActivityPanel_TopDomainsTableModel_count_header=Visitas +UserActivityPanel_TopDomainsTableModel_domain_header=Dominio +UserActivityPanel_TopDomainsTableModel_lastAccess_header=ultimo Acceso +UserActivityPanel_TopDomainsTableModel_tabName=Dominios Recientes +UserActivityPanel_TopProgramsTableModel_count_header=Tiempos de Ejecucion +UserActivityPanel_TopProgramsTableModel_folder_header=Carpeta +UserActivityPanel_TopProgramsTableModel_lastrun_header=ultima Ejecucion +UserActivityPanel_TopProgramsTableModel_name_header=Programa +UserActivityPanel_TopProgramsTableModel_tabName=Programas Recientes +UserActivityPanel_TopWebSearchTableModel_dateAccessed_header=Fecha de Acceso +UserActivityPanel_TopWebSearchTableModel_searchString_header=Cadena de Busqueda +UserActivityPanel_TopWebSearchTableModel_tabName=Busquedas Web Recientes +UserActivityPanel_TopWebSearchTableModel_translatedResult_header=Traducido +ViewSummaryInformationAction.name.text=Ver Informacion del Resumen diff --git a/Core/src/org/sleuthkit/autopsy/datasourcesummary/uiutils/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/datasourcesummary/uiutils/Bundle_ar.properties new file mode 100644 index 0000000000..8638b7f945 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datasourcesummary/uiutils/Bundle_ar.properties @@ -0,0 +1,5 @@ +AbstractLoadableComponent_errorMessage_defaultText=Hubo un error al cargar los resultados. +AbstractLoadableComponent_loadingMessage_defaultText=Cargando resultados... +AbstractLoadableComponent_noDataExists_defaultText=No existen datos. +IngestRunningLabel_defaultMessage=La ingestion esta en curso. +PieChartPanel_noDataLabel=Sin Datos diff --git a/Core/src/org/sleuthkit/autopsy/diagnostics/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/diagnostics/Bundle_ar.properties new file mode 100644 index 0000000000..986d569d4b --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/diagnostics/Bundle_ar.properties @@ -0,0 +1,29 @@ +CTL_PerformancePanelAction=Diagnostics de Rendimiento +PerformancePanel.jLabel1.text=Lectura de Imagenes: +PerformancePanel.jLabel2.text=Lectura de la Base de Datos: +PerformancePanel.jLabel3.text=CPU: +PerformancePanel.imgReadLabel.text=\ +PerformancePanel.dbReadLabel.text=\ +PerformancePanel.cpuTimeLabel.text=\ +PerformancePanel.startButton.text=Comenzar +PerformancePanel.statusLabel.text=\ +PerformancePanel.jLabel4.text=Lectura de Archivos: +PerformancePanel.fileReadLabel.text=\ +PerformancePanel.jLabel5.text=Este panel realiza una serie de pruebas para ayudar a identificar cuellos de botella en el sistema.. +PerformancePanel.title=Diagnostics de Rendimiento +PerformancePanel.cpuTest.basemsg=Ejecutando Prueba de CPU +PerformancePanel.cpuTest.cpuLabel.md5AlgNotFound.text=Algoritmo MD5 no encontrado +PerformancePanel.cpuTest.cpuLabel.MBHashedPerSec.text={0} MB hasheados / seg +PerformancePanel.imgTest.statusMsg.runningImgReadTest.text=Ejecutando Prueba de Lectura de Imagenes +PerformancePanel.label.caseNotOpen.text=Carcasa No Abierta +PerformancePanel.label.noImgInCase.text=No hay Imagenes en la Carcasa +PerformancePanel.ImgTest.imgLabel.MBReadPerSec.text={0} MB leidos / seg ({1}) +PerformancePanel.FileReadTest.fileReadLabel.skipped.text=Omitido +PerformancePanel.FileReadTest.statusMsg.runningFileReadTest.text=Ejecutando Prueba de Lectura de Archivos +PerformancePanel.fileReadLabel.imgPathNotExist.text=La Ruta de la Imagen no Existe +PerformancePanel.fileReadLabel.errMakeFileReader.text=Error al crear el lector de archivos +PerformancePanel.ImgTest.fileReadLabel.MBReadPerSec.text={0} MB leidos / seg ({1}) +PerformancePanel.dbTest.status.running=Ejecutando Prueba de Base de Datos (DB) +PerformancePanel.dbTest.dbLabel.recordsPerSec.text={0} registros / seg +PerformancePanel.dbTest.dbLabel.errPerformQuery.text=Error al realizar la consulta +PerformancePanel.done.statusMsg.err.text=Error: {0} diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ar.properties new file mode 100644 index 0000000000..0309be668d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ar.properties @@ -0,0 +1,163 @@ +CSVWriter.done.notifyMsg.error=Error al exportar a archivo CSV +# {0} - Output file +CSVWriter.done.notifyMsg.success=Se escribio en {0} +CSVWriter.progress.cancelling=Cancelando +CSVWriter.progress.extracting=Exportando a archivo CSV +CTL_DirectoryTreeTopComponent=arbol de Directorios +DataResultFilterNode.viewSourceArtifact.text=Ver Resultado de la Fuente +# {0} - dataSourceCount +DirectoryTreeTopComponent.componentOpened.groupDataSources.text=Este caso contiene {0} fuentes de datos. ¿Desea agrupar por fuente de datos para cargar mas rapido? +DirectoryTreeTopComponent.componentOpened.groupDataSources.title=¿Agrupar por fuente de datos? +DirectoryTreeTopComponent.emptyMimeNode.text=Datos no disponibles. Ejecute el modulo de identificacion de tipos de archivo. +DirectoryTreeTopComponent.resultsView.title=Listado +ExportCSV.saveNodesToCSV.empty=No hay datos para exportar +# {0} - Output file +ExportCSV.saveNodesToCSV.fileExists=El archivo {0} ya existe +ExportCSV.saveNodesToCSV.noCurrentCase=No hay un caso abierto disponible +ExportCSV.title.text=Exportar Filas Seleccionadas a CSV +ExternalViewerAction.actionPerformed.failure.exe.message=El archivo es un ejecutable y no se abrira. +ExternalViewerAction.actionPerformed.failure.IO.message=No hay un editor asociado para archivos de este tipo o la aplicacion asociada no se pudo iniciar. +ExternalViewerAction.actionPerformed.failure.missingFile.message=El archivo ya no existe. +ExternalViewerAction.actionPerformed.failure.open.url=No se puede abrir la URL +ExternalViewerAction.actionPerformed.failure.permission.message=Se denego el permiso para abrir el archivo. +ExternalViewerAction.actionPerformed.failure.support.message=Esta plataforma (sistema operativo) no admite abrir un archivo en un editor de esta manera.. +# {0} - file name +ExternalViewerAction.actionPerformed.failure.title=Error al abrir el archivo {0} +ExternalViewerAction.actionPerformed.urlFailure.title=Error al abrir la URL +ExternalViewerShortcutAction.title.text=Abrir en Visor Externo Ctrl+E +ExtractUnallocAction.imageError=Error al extraer espacio no asignado de la imagen +ExtractUnallocAction.noFiles=No se encontraron archivos no asignados en el volumen +ExtractUnallocAction.noOpenCase.errMsg=No hay un caso abierto disponible. +ExtractUnallocAction.volumeError=Error al extraer espacio no asignado del volumen +# {0} - fileName +ExtractUnallocAction.volumeInProgress=Ya se esta extrayendo el espacio no asignado en {0} - se omitira este volumen +FileSystemDetailsAction.title.text=Detalles del Sistema de Archivos +# {0} - dataSourceCount +GroupDataSourcesDialog.groupDataSources.text=Este caso contiene {0} fuentes de datos. +HINT_DirectoryTreeTopComponent=Esta es una ventana de arbol de Directorios +OpenIDE-Module-Name=DirectoryTree +FileSystemDetailsPanel.imgOffsetLabel.text=Desplazamiento de la Imagen: +FileSystemDetailsPanel.fsTypeLabel.text=Tipo de Sistema de Archivos: +FileSystemDetailsPanel.fsTypeValue.text=... +FileSystemDetailsPanel.imgOffsetValue.text=... +FileSystemDetailsPanel.volumeIDValue.text=... +FileSystemDetailsPanel.blockSizeValue.text=... +FileSystemDetailsPanel.blockCountValue.text=... +FileSystemDetailsPanel.rootInumValue.text=... +FileSystemDetailsPanel.firstInumValue.text=... +FileSystemDetailsPanel.lastInumValue.text=... +FileSystemDetailsPanel.volumeIDLabel.text=ID del Volumen: +FileSystemDetailsPanel.blockSizeLabel.text=Tamanio del Bloque: +FileSystemDetailsPanel.blockCountLabel.text=Cantidad de Bloques: +FileSystemDetailsPanel.rootInumLabel.text=Entrada de Metadatos Raiz: +FileSystemDetailsPanel.firstInumLabel.text=Primera Entrada de Metadatos: +FileSystemDetailsPanel.lastInumLabel.text=ultima Entrada de Metadatos: +FileSystemDetailsPanel.OKButton.text=Aceptar +SelectionContext.dataSourceFiles=Archivos de Fuentes de Datos +SelectionContext.dataSources=Fuentes de Datos +SelectionContext.views=Vistas +ViewContextAction.errorMessage.cannotFindDirectory=Error al localizar el directorio. +ViewContextAction.errorMessage.cannotFindNode=Error al localizar el nodo de origen de datos en el arbol. +ViewContextAction.errorMessage.cannotSelectDirectory=Error al seleccionar el directorio en el arbol. +ViewContextAction.errorMessage.unsupportedParent=No se puede navegar a contenido no admitido en esta version. +VolumeDetailsPanel.volumeIDLabel.text=ID del Volumen: +VolumeDetailsPanel.volumeIDValue.text=... +VolumeDetailsPanel.startValue.text=... +VolumeDetailsPanel.lengthValue.text=... +VolumeDetailsPanel.descValue.text=... +VolumeDetailsPanel.flagsValue.text=... +VolumeDetailsPanel.startLabel.text=Sector de Inicio: +VolumeDetailsPanel.lengthLabel.text=Longitud en Sectores: +VolumeDetailsPanel.descLabel.text=Descripcion: +VolumeDetailsPanel.flagsLabel.text=Indicadores: +VolumeDetailsPanel.OKButton.text=Aceptar +ImageDetailsPanel.imageInfoLabel.text=Informacion de la Imagen +ImageDetailsPanel.imgNameLabel.text=Nombre: +ImageDetailsPanel.imgNameValue.text=... +ImageDetailsPanel.imgTypeLabel.text=Tipo: +ImageDetailsPanel.imgTypeValue.text=... +ImageDetailsPanel.OKButton.text=Aceptar +ImageDetailsPanel.imgSectorSizeLabel.text=Tamanio de Sector: +ImageDetailsPanel.imgSectorSizeValue.text=... +DirectoryTreeTopComponent.backButton.text= +DirectoryTreeTopComponent.forwardButton.text= +ImageDetailsPanel.imgTotalSizeValue.text=... +ImageDetailsPanel.imgTotalSizeLabel.text=Tamanio Total: +ImageDetailsPanel.imgHashValue.text=... +ImageDetailsPanel.imgHashLabel.text=Valor de Hash: +DataResultFilterNode.action.viewFileInDir.text=Ver Archivo en el Directorio +DataResultFilterNode.action.viewSrcFileInDir.text=Ver Archivo de Origen en el Directorio +DataResultFilterNode.action.viewInNewWin.text=Ver en Nueva Ventana +DataResultFilterNode.action.openInExtViewer.text=Abrir en Visor Externo Ctrl+E +DataResultFilterNode.action.searchFilesSameMd5.text=Buscar archivos con el mismo hash MD5 +DataResultFilterNode.action.viewInDir.text=Ver en el Directorio +DirectoryTreeFilterNode.action.collapseAll.text=Contraer Todo +DirectoryTreeFilterNode.action.openFileSrcByAttr.text=Busqueda de Archivos Abiertos por Atributos +DirectoryTreeFilterNode.action.runIngestMods.text=Ejecutar Modulos de Ingesta +DirectoryTreeTopComponent.action.viewArtContent.text=Ver Contenido del Artefacto +ExplorerNodeActionVisitor.action.imgDetails.title=Detalles de la Imagen +ExplorerNodeActionVisitor.action.extUnallocToSingleFiles=Extraer Espacio No Asignado a Archivos Individuales +ExplorerNodeActionVisitor.action.fileSystemDetails.title=Detalles del Sistema de Archivos +ExplorerNodeActionVisitor.action.volumeDetails.title=Detalles del Volumen +ExplorerNodeActionVisitor.action.extUnallocToSingleFile=Extraer Espacio No Asignado a Archivo Individual +ExplorerNodeActionVisitor.volDetail.noVolMatchErr=Error: No hay coincidencias de Volumen. +ExplorerNodeActionVisitor.imgDetail.noVolMatchesErr=Error: No hay coincidencias de Volumen. +ExplorerNodeActionVisitor.exception.probGetParent.text=Problema al obtener el directorio padre de {0}: {1} +ExtractAction.title.extractFiles.text=Extraer Archivo(s) +ExtractUnallocAction.notifyMsg.unallocAlreadyBeingExtr.msg=Ya se esta extrayendo el Espacio No Asignado en esta Imagen. Por favor, seleccione una Imagen diferente.. +ExtractUnallocAction.msgDlg.folderDoesntExist.msg=La carpeta no existe. Por favor, elija una carpeta valida antes de continuar. +ExtractUnallocAction.dlgTitle.selectDirToSaveTo.msg=Seleccionar directorio para guardar +ExtractUnallocAction.confDlg.unallocFileAlreadyExist.msg=El archivo Unalloc para este volumen, {0}, ya existe. ¿Desea reemplazarlo? +ExtractUnallocAction.progress.extractUnalloc.title=Extrayendo Espacio No Asignado +ExtractUnallocAction.progress.displayName.cancelling.text=Extrayendo Espacio No Asignado (Cancelando...) +ExtractUnallocAction.processing.counter.msg=Procesando {0} de {1} MBs +ExtractUnallocAction.done.notifyMsg.completedExtract.title=Extraccion completada del espacio no asignado. +ExtractUnallocAction.done.notifyMsg.completedExtract.msg=Los archivos fueron extraidos en {0}. +ExtractUnallocAction.done.errMsg.title=Error al extraer +ExtractUnallocAction.done.errMsg.msg=Error al extraer el espacio no asignado: {0} +ExtractAction.done.notifyMsg.extractErr=Error al extraer archivos: {0} +OptionsCategory_Name_ExternalViewer=Visor Externo +OptionsCategory_Keywords_ExternalViewer=ExternalViewer +ExternalViewerGlobalSettingsPanel.exePathLabel.MIME.text=Programa asociado con este tipo MIME +ExternalViewerGlobalSettingsPanel.exePathLabel.EXT.text=Programa asociado con esta extension +ExternalViewerGlobalSettingsPanel.exePathLabel.empty.text=Ningun tipo MIME o extension seleccionada +AddExternalViewerRuleDialog.saveButton.title=Guardar +AddExternalViewerRuleDialog.cancelButton.title=Cancelar +AddExternalViewerRuleDialog.title=Regla de Visor Externo +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidMime.message=El tipo MIME no es valido. Agregue sus tipos personalizados en el panel de opciones de Tipos de Archivo.. +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidMime.title=Tipo MIME no valido +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidExt.message=La extension no es valida. +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidExt.title=Extension no valida +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidExePath.message=La ruta del ejecutable del programa no es valida. +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidExePath.title=Ruta no valida +ExternalViewerGlobalSettingsPanel.JOptionPane.ruleAlreadyExists.message=Ya existe una regla con este tipo MIME o extension. Por favor, editela. +ExternalViewerGlobalSettingsPanel.JOptionPane.ruleAlreadyExists.title=Regla no aniadida +AddExternalViewerRulePanel.mimeRadioButton.text=Tipo MIME +AddExternalViewerRulePanel.nameTextField.text= +AddExternalViewerRulePanel.nameLabel.text=Tipo MIME o extension +AddExternalViewerRulePanel.browseButton.text=Explorar +AddExternalViewerRulePanel.exePathTextField.text= +AddExternalViewerRulePanel.exePathLabel.text=Ruta del programa para usar con archivos de este tipo o extension +AddExternalViewerRulePanel.extRadioButton.text=Extension +GroupDataSourcesDialog.dataSourceCountLabel.text=jLabel1 +GroupDataSourcesDialog.queryLabel.text=¿Desea agrupar por fuente de datos para una carga mas rapida? +GroupDataSourcesDialog.yesButton.text=Si +GroupDataSourcesDialog.noButton.text=No +GroupDataSourcesDialog.title=¿Agrupar por Fuente de Datos? +DirectoryTreeTopComponent.openViewPreferencesButton.text= +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title3=Titulo 4 +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title2=Titulo 3 +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title3_1=Titulo 4 +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title2_1=Titulo 3 +ExternalViewerGlobalSettingsPanel.newRuleButton1.text=Nueva Regla +ExternalViewerGlobalSettingsPanel.editRuleButton.text=Editar Regla +ExternalViewerGlobalSettingsPanel.deleteRuleButton.text=Eliminar Regla +ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text=Agregue sus reglas personalizadas para visores externos: +ExternalViewerGlobalSettingsPanel.newRuleButton.text=Nueva Regla +ExternalViewerGlobalSettingsPanel.jButton2.text=jButton2 +ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text=Explorar +ExternalViewerGlobalSettingsPanel.HxDLabel.text=Ruta de HxD Editor: +ExternalViewerGlobalSettingsPanel.ContentViewerExtensionLabel.text=Agregar extensiones de visor de contenido: +FileSystemDetailsPanel.bytesLabel1.text=bytes +FileSystemDetailsPanel.bytesLabel2.text=bytes +VolumeDetailsPanel.generalVolumeLabel.text=Informacion General del Volumen diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/actionhelpers/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/directorytree/actionhelpers/Bundle_ar.properties new file mode 100644 index 0000000000..2fc08e90fa --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/directorytree/actionhelpers/Bundle_ar.properties @@ -0,0 +1,15 @@ +ExtractActionHelper.extractFiles.cantCreateFolderErr.msg=No se pudo crear la carpeta seleccionada. +ExtractActionHelper.confDlg.destFileExist.msg=¿Ya existe el archivo de destino {0}, desea sobrescribirlo? +ExtractActionHelper.confDlg.destFileExist.title=El archivo ya existe +# {0} - fileName +ExtractActionHelper.extractOverwrite.msg=Ya existe un archivo en {0}. ¿Desea sobrescribir el archivo existente? +ExtractActionHelper.extractOverwrite.title=Exportar a archivo CSV +ExtractActionHelper.msgDlg.cantOverwriteFile.msg=No se pudo sobrescribir el archivo existente {0} +ExtractActionHelper.noOpenCase.errMsg=No hay un caso abierto disponible. +ExtractActionHelper.notifyDlg.noFileToExtr.msg=No hay archivo(s) para extraer. +ExtractActionHelper.progress.cancellingExtraction={0} (Cancelando...) +ExtractActionHelper.done.notifyMsg.fileExtr.text=Archivo(s) extraidos. +# {0} - outputFolderName +ExtractActionHelper.progress.extracting=Extrayendo en {0} +# {0} - fileName +ExtractActionHelper.progress.fileExtracting=Extrayendo archivo: {0} diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle_ar.properties new file mode 100644 index 0000000000..3ce107e473 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle_ar.properties @@ -0,0 +1,148 @@ +# {0} - month abbreviation +# {1} - day of month +# {2} - year +DiscoveryAttributes.ActivityDateGroupKey.getDisplayNameTemplate=Semana de {0} {1}, {2} +DiscoveryAttributes.GroupingAttributeType.datasource.displayName=Fuente de Datos +DiscoveryAttributes.GroupingAttributeType.fileType.displayName=Tipo de Archivo +DiscoveryAttributes.GroupingAttributeType.firstDate.displayName=Fecha de la Primera Actividad +DiscoveryAttributes.GroupingAttributeType.frequency.displayName=Ocurrencias Pasadas +DiscoveryAttributes.GroupingAttributeType.hash.displayName=Conjunto de Hash +DiscoveryAttributes.GroupingAttributeType.interestingItem.displayName=Elemento Interesante +DiscoveryAttributes.GroupingAttributeType.keywordList.displayName=Palabra Clave +DiscoveryAttributes.GroupingAttributeType.lastDate.displayName=Fecha de Actividad Final +DiscoveryAttributes.GroupingAttributeType.none.displayName=Ninguno +DiscoveryAttributes.GroupingAttributeType.object.displayName=Objeto Detectado +DiscoveryAttributes.GroupingAttributeType.pageViews.displayName=Vistas de Pagina +DiscoveryAttributes.GroupingAttributeType.parent.displayName=Carpeta Principal +DiscoveryAttributes.GroupingAttributeType.previouslyNotable.displayName=Notabilidad Previa +DiscoveryAttributes.GroupingAttributeType.size.displayName=Tamanio del Archivo +DiscoveryAttributes.GroupingAttributeType.tag.displayName=Etiqueta +DiscoveryAttributes.GroupingAttributeType.webCategory.displayName=Categoria de Dominio +# {0} - Data source name +# {1} - Data source ID +DiscoveryKeyUtils.DataSourceGroupKey.datasourceAndID={0}(ID: {1}) +# {0} - Data source ID +DiscoveryKeyUtils.DataSourceGroupKey.idOnly=Fuente de datos (ID: {0}) +DiscoveryKeyUtils.FileTagGroupKey.noSets=Ninguno +DiscoveryKeyUtils.HashHitsGroupKey.noHashHits=Ninguno +DiscoveryKeyUtils.InterestingItemGroupKey.noSets=Ninguno +DiscoveryKeyUtils.KeywordListGroupKey.noKeywords=Ninguno +DiscoveryKeyUtils.NoGroupingGroupKey.allFiles=Todos los Archivos +DiscoveryKeyUtils.ObjectDetectedGroupKey.noSets=Ninguno +# {0} - domain +# {1} - artifactType +DomainSearchArtifactsRequest.toString.text=Dominio: {0} Tipo de Artefacto: {1} +FileGroup.groupSortingAlgorithm.groupName.text=Nombre del Grupo +FileGroup.groupSortingAlgorithm.groupSize.text=Tamanio del Grupo +FileSearch.documentSummary.noBytes=No se leyeron bytes para el documento, no se puede mostrar una vista previa. +FileSearch.documentSummary.noPreview=Vista previa no disponible. +FileSearchFiltering.concatenateSetNamesForDisplay.comma=, +# {0} - filters +FileSearchFiltering.HashSetFilter.desc=Coincidencias en el conjunto de hash en conjunto(s): {0} +FileSearchFiltering.KnownFilter.desc=que no se conocen +FileSearchFiltering.PreviouslyNotableFilter.desc=que fueron marcadas previamente como destacadas +# {0} - tag names +FileSearchFiltering.TagsFilter.desc=Etiquetado {0} +FileSearchFiltering.TagsFilter.or=, +FileSearchFiltering.UserCreatedFilter.desc=que contienen datos EXIF +FileSorter.SortingMethod.activity.displayName=Fecha de la ultima Actividad +FileSorter.SortingMethod.datasource.displayName=Fuente de Datos +FileSorter.SortingMethod.domain.displayName=Nombre de Dominio +FileSorter.SortingMethod.downloads.displayName=Descargas de Archivos +FileSorter.SortingMethod.filename.displayName=Nombre de Archivo +FileSorter.SortingMethod.filesize.displayName=Tamanio de Archivo +FileSorter.SortingMethod.filetype.displayName=Tipo de Archivo +FileSorter.SortingMethod.frequency.displayName=Frecuencia del Repositorio Central +FileSorter.SortingMethod.fullPath.displayName=Ruta Completa +FileSorter.SortingMethod.keywordlist.displayName=Nombres de Lista de Palabras Clave +FileSorter.SortingMethod.pageViews.displayName=Vistas de Pagina +ResultDomain_getDefaultCategory=Sin Categorizar +ResultDomain_noAccountTypes=Desconocido +# {0} - significanceDisplayName +ResultFile_updateScoreAndDescription_description=Tiene un resultado de analisis de {0} +SearchData.AttributeType.Domain.displayName=Dominio +SearchData.FileSize.100kbto1mb=: 100KB-1MB +SearchData.FileSize.100mbto1gb=: 100MB-1GB +SearchData.FileSize.10PlusGb=: 10GB+ +SearchData.FileSize.16kbto100kb=: 16-100KB +SearchData.FileSize.1gbto5gb=: 1-5GB +SearchData.FileSize.1mbto50mb=: 1-50MB +SearchData.FileSize.200PlusMb=: 200MB+ +SearchData.FileSize.500kbto100mb=: 500KB-100MB +SearchData.FileSize.50mbto200mb=: 50-200MB +SearchData.FileSize.5gbto10gb=: 5-10GB +SearchData.FileSize.LARGE.displayName=Grande +SearchData.FileSize.MEDIUM.displayName=Mediano +SearchData.FileSize.SMALL.displayName=Pequenio +SearchData.FileSize.upTo16kb=: 0-16KB +SearchData.FileSize.upTo500kb=: 0-500KB +SearchData.FileSize.XLARGE.displayName=Muy Grande +SearchData.FileSize.XSMALL.displayName=Muy Pequenio +SearchData.FileSize.XXLARGE.displayName=Muy Muy Grande +SearchData.FileType.Audio.displayName=Audio +SearchData.FileType.Documents.displayName=Documento +SearchData.FileType.Executables.displayName=Ejecutable +SearchData.FileType.Image.displayName=Imagen +SearchData.FileType.Other.displayName=Otro/Desconocido +SearchData.FileType.Video.displayName=Video +SearchData.Frequency.common.displayName=Comun (11 - 100) +SearchData.Frequency.known.displayName=Conocido (NSRL) +SearchData.Frequency.rare.displayName=Raro (2-10) +SearchData.Frequency.unique.displayName=unico (1) +SearchData.Frequency.unknown.displayName=Desconocido +SearchData.Frequency.verycommon.displayName=Muy Comun (100+) +SearchData.notPrevNotable.displayName=Anteriormente No Notable +SearchData.PageViews.over1000=1000+ vistas de pagina +# {0} - minValue +# {1} - maxValue +SearchData.PageViews.rangeTemplate={0}-{1} vistas de pagina +SearchData.prevNotable.displayName=Anteriormente Notable +SearchData.Score.interesting.displayName=Interesante +SearchData.Score.notable.displayName=Notable +SearchData.Score.unknown.displayName=Desconocido +# {0} - artifactTypes +SearchFiltering.artifactTypeFilter.desc=Tipo(s) de Resultado: {0} +SearchFiltering.artifactTypeFilter.or=, +# {0} - Data source name +# {1} - Data source ID +SearchFiltering.DataSourceFilter.datasource={0}({1}) +# {0} - filters +SearchFiltering.DataSourceFilter.desc=Fuente(s) de Datos: {0} +SearchFiltering.DataSourceFilter.or=, +# {0} - startDate +SearchFiltering.dateRangeFilter.after=despues de: {0} +SearchFiltering.dateRangeFilter.and=\ y +# {0} - endDate +SearchFiltering.dateRangeFilter.before=antes de: {0} +SearchFiltering.dateRangeFilter.lable=Fecha de Actividad +# {0} - filters +SearchFiltering.FileTypeFilter.desc=Tipo: {0} +SearchFiltering.FileTypeFilter.or=, +# {0} - filters +SearchFiltering.FrequencyFilter.desc=Ocurrencias pasadas: {0} +SearchFiltering.FrequencyFilter.or=, +# {0} - filters +SearchFiltering.InterestingItemSetFilter.desc=Elementos interesantes encontrados en conjunto(s): {0} +# {0} - filters +SearchFiltering.KeywordListFilter.desc=Palabras clave en lista(s): {0} +SearchFiltering.KnownAccountTypeFilter.desc=Solo dominios con tipo de cuenta conocido +# {0} - filters +SearchFiltering.ObjectDetectionFilter.desc=Objetos detectados en conjunto(s): {0} +# {0} - filters +SearchFiltering.ParentFilter.desc=Rutas coincidentes: {0} +SearchFiltering.ParentFilter.exact=(coincidencia exacta) +SearchFiltering.ParentFilter.excluded=(excluido) +SearchFiltering.ParentFilter.included=(incluido) +SearchFiltering.ParentFilter.or=, +SearchFiltering.ParentFilter.substring=(subcadena) +SearchFiltering.ParentSearchTerm.excludeString=\ (excluir) +SearchFiltering.ParentSearchTerm.fullString=\ (exacto) +SearchFiltering.ParentSearchTerm.includeString=\ (incluir) +SearchFiltering.ParentSearchTerm.subString=\ (subcadena) +SearchFiltering.PreviouslyNotableFilter.desc=Previamente marcado como notable en el repositorio central +# {0} - filters +SearchFiltering.ScoreFilter.desc=Puntuacion(es) de : {0} +# {0} - filters +SearchFiltering.SizeFilter.desc=Tamanio(s): {0} +SearchFiltering.SizeFilter.or=, +SummaryHelper.documentSummary.unable.to.read=Error al intentar extraer el texto del archivo. diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle_ar.properties new file mode 100644 index 0000000000..e9463f8627 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle_ar.properties @@ -0,0 +1,191 @@ +ArtifactMenuMouseAdapter.noFile.text=El archivo no existe. +ArtifactMenuMouseAdapter_ExternalViewer_label=Abrir en visor externo +ArtifactMenuMouseAdapter_label=Extraer archivos +ArtifactsListPanel.dateColumn.name=Fecha/Hora +ArtifactsListPanel.fileNameColumn.name=Nombre +ArtifactsListPanel.mimeTypeColumn.name=Tipo MIME +ArtifactsListPanel.noResultsFound.text=No se encontraron resultados +ArtifactsListPanel.termColumn.name=Termino +ArtifactsListPanel.titleColumn.name=Titulo +ArtifactsListPanel.urlColumn.name=URL +ArtifactsListPanel.value.noValue=Ningun valor disponible. +ArtifactTypeFilterPanel.selectionNeeded.text=Al menos se debe seleccionar un tipo de resultado. +CTL_OpenDiscoveryAction=Busqueda +DataSourceFilterPanel.error.text=Al menos se debe seleccionar una fuente de datos. +# {0} - dataSourceName +DataSourceModuleWrapper.exifModule.text=El modulo Analizador de Imagenes no se ejecuto en la fuente de datos: {0}\n +# {0} - dataSourceName +DataSourceModuleWrapper.fileTypeModule.text=El modulo Identificacion de Tipo de Archivo no se ejecuto en la fuente de datos: {0}\n +# {0} - dataSourceName +DataSourceModuleWrapper.hashModule.text=El modulo de Busqueda de Hash no se ejecuto en la fuente de datos: {0}\n +# {0} - timeZone +DateFilterPanel.dateRange.text=Rango de Fechas ({0}): +DateFilterPanel.invalidRange.text=Debe seleccionarse Rango o Solo ultimas. +DateFilterPanel.startAfterEnd.text=La fecha de inicio debe ser anterior a la fecha de finalizacion cuando ambas estan habilitadas. +DateFilterPanel.startOrEndNeeded.text=Se debe especificar una fecha de inicio o de finalizacion para usar el filtro de rango. +DiscoveryDialog.name.text=Busqueda +DiscoveryExtractAction.title.extractFiles.text=Extraer Archivo +DiscoveryTopComponent.additionalFilters.text=; +DiscoveryTopComponent.cancelButton.text=Cancelar Busqueda +DiscoveryTopComponent.domainSearch.text=Tipo: Dominio +DiscoveryTopComponent.name=\ Busqueda +DiscoveryTopComponent.newSearch.text=Nueva Busqueda +DiscoveryTopComponent.searchCancelled.text=Se ha cancelado la busqueda. +# {0} - search +DiscoveryTopComponent.searchComplete.text=Resultados con {0} +DiscoveryTopComponent.searchError.text=Error, no se especifico un tipo para la busqueda. +# {0} - searchType +DiscoveryTopComponent.searchInProgress.text=Realizando busqueda de resultados de tipo {0}. Por favor, espere. +DiscoveryUiUtility.bytes.text=bytes +DiscoveryUiUtility.gigaBytes.text=GB +DiscoveryUiUtility.kiloBytes.text=KB +DiscoveryUiUtility.megaBytes.text=MB +# {0} - fileSize +# {1} - units +DiscoveryUiUtility.sizeLabel.text=Tamanio: {0} {1} +DiscoveryUiUtility.terraBytes.text=TB +# {0} - file name +DiscoveryUiUtils.genVideoThumb.progress.text=extrayendo archivo temporal {0} +DiscoveryUiUtils.isDeleted.text=Todas las instancias del archivo se han eliminado. +DiscoveryUiUtils.resultsIncomplete.text=Los resultados de busqueda pueden estar incompletos. +# {0} - otherInstanceCount +DocumentPanel.nameLabel.more.text=\ y {0} mas +DocumentPanel.noImageExtraction.text=0 de ? imagenes +DocumentPanel.numberOfImages.noImages=Sin imagenes +# {0} - numberOfImages +DocumentPanel.numberOfImages.text=1 de {0} imagenes +DocumentWrapper.previewInitialValue=Vista previa aun no generada. +DomainDetailsPanel.miniTimelineTitle.text=Linea de tiempo +DomainDetailsPanel.otherOccurrencesTab.title=Otras Ocurrencias +# {0} - startDate +# {1} - endDate +DomainSummaryPanel.activity.text=Actividad: {0} a {1} +DomainSummaryPanel.category.text=Categorias: +DomainSummaryPanel.downloads.text=Archivos descargados: +DomainSummaryPanel.loadingImages.text=Cargando miniatura... +DomainSummaryPanel.no.text=No +DomainSummaryPanel.notability.text=Previo etiquetado como notable: +DomainSummaryPanel.pages.text=Vistas de pagina en los ultimos 60 dias: +DomainSummaryPanel.totalPages.text=Total de vistas de pagina: +DomainSummaryPanel.userRole.text=Tipo de cuenta: +DomainSummaryPanel.yes.text=Si +GroupsListPanel.noDomainResults.message.text=No se encontraron dominios para los filtros seleccionados.\n\nRecordatorio:\n - El modulo de Actividad Reciente debe ejecutarse en cada fuente de datos en la que desees encontrar resultados.\n - El modulo de Repositorio Central debe ejecutarse en cada fuente de datos si deseas filtrar o ordenar por ocurrencias pasadas.\n - El modulo Analizador de iOS (iLEAPP) debe ejecutarse en cada fuente de datos que contenga datos de un dispositivo iOS.\n +GroupsListPanel.noFileResults.message.text=No se encontraron archivos para los filtros seleccionados. +\n\nRecordatorio:\n - El modulo de Identificacion de Tipo de Archivo debe ejecutarse en cada fuente de datos en la que desees encontrar resultados.\n - El modulo de Busqueda de Hash debe ejecutarse en cada fuente de datos si deseas filtrar por ocurrencias pasadas.\n - El modulo Analizador de Imagenes debe ejecutarse en cada fuente de datos si estas filtrando por contenido creado por el usuario. +GroupsListPanel.noResults.title.text=No se encontraron resultados +HashSetFilterPanel.error.text=Se debe seleccionar al menos un nombre de conjunto de hash. +ImageThumbnailPanel.isDeleted.text=Todas las instancias del archivo se han eliminado.. +# {0} - otherInstanceCount +ImageThumbnailPanel.nameLabel.more.text=\ y {0} mas +InterestingItemsFilterPanel.error.text=Al menos se debe seleccionar un nombre de conjunto de archivos interesantes. +LoadingPanel.loading.text=Cargando, por favor espera. +# {0} - resultInfo +LoadingPanel.retrieving.text=Recuperando resultados para {0}. +MiniTimelineArtifactListPanel.descriptionColumn.name=\ Descripcion +MiniTimelineArtifactListPanel.typeColumn.name=Tipo de Resultado +MiniTimelineArtifactListPanel.value.noValue=Ningun valor disponible. +MiniTimelineDateListPanel.countColumn.name=Recuento +MiniTimelineDateListPanel.dateColumn.name=Fecha +MiniTimelineDateListPanel.value.noValue=Ningun valor disponible. +MiniTimelinePanel.loadingPanel.details=la vista de Linea de Tiempo +MonthAbbreviation.aprilAbbrev=Abr +MonthAbbreviation.augustAbbrev=Ago +MonthAbbreviation.decemberAbbrev=Dic +MonthAbbreviation.feburaryAbbrev=Feb +MonthAbbreviation.januraryAbbrev=Ene +MonthAbbreviation.julyAbbrev=Jul +MonthAbbreviation.juneAbbrev=Jun +MonthAbbreviation.marchAbbrev=Mar +MonthAbbreviation.mayAbbrev=May +MonthAbbreviation.novemberAbbrev=Nov +MonthAbbreviation.octoberAbbrev=Oct +MonthAbbreviation.septemberAbbrev=Sep +ObjectDetectedFilterPanel.error.text=Al menos se debe seleccionar un nombre de tipo de objeto. +ParentFolderFilterPanel.error.text=Al menos se debe ingresar una ruta principal. +PastOccurrencesFilterPanel.error.text=Al menos se debe seleccionar un valor en el filtro de ocurrencias pasadas. +# {0} - currentPage +# {1} - totalPages +ResultsPanel.currentPage.displayValue=Pagina: {0} de {1} +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. +ResultsPanel.currentPageLabel.text=Pagina: - +DiscoveryDialog.sortingPanel.border.title=Paso 3: Elegir configuracion de visualizacion +DiscoveryDialog.searchButton.text=Buscar +DiscoveryDialog.domainsButton.text=Dominios +DiscoveryDialog.groupByLabel.text=Agrupar por: +DiscoveryDialog.step1Label.text=Paso 1: Elegir tipo de resultado +DiscoveryDialog.orderByLabel.text=Ordenar dentro de los grupos por: +DiscoveryDialog.documentsButton.text=Documentos +DiscoveryDialog.orderGroupsByLabel.text=Ordenar grupos por: +DiscoveryDialog.videosButton.text=Videos +DiscoveryDialog.imagesButton.text=Imagenes +ResultsPanel.documentPreview.text=Creacion de vista previa de documentos cancelada.. +# {0} - selectedPage +# {1} - maxPage +ResultsPanel.invalidPageNumber.message=La pagina numero seleccionada {0} no existe. Por favor, selecciona un valor entre 1 y {1}.. +ResultsPanel.invalidPageNumber.title=Numero de pagina invalido +ResultsPanel.openInExternalViewer.name=Abrir en visor externo +ResultsPanel.unableToCreate.text=No se puede crear el resumen. +ResultsPanel.viewFileInDir.name=Ver archivo en el directorio +SizeFilterPanel.error.text=Al menos se debe seleccionar un tamanio. +VideoFilterPanel.videoFiltersSplitPane.border.title=Paso 2: Filtrar que videos mostrar +DataSourceFilterPanel.dataSourceCheckbox.text=Fuente de datos: +ParentFolderFilterPanel.parentLabel.text_1=(Se usaran todos) +ParentFolderFilterPanel.parentCheckbox.text_1=Carpeta principal: +ParentFolderFilterPanel.addButton.text_1=Agregar +ParentFolderFilterPanel.deleteButton.text_1=Eliminar +ParentFolderFilterPanel.excludeRadioButton.text_1=Excluir +ParentFolderFilterPanel.substringRadioButton.text_1=Subcadena +ParentFolderFilterPanel.includeRadioButton.text_1=Incluir +ParentFolderFilterPanel.fullRadioButton.text_1=Completo +UserCreatedFilterPanel.userCreatedCheckbox.text_1=Posiblemente creado por el usuario +GroupListPanel.groupKeyList.border.title=Grupos +ResultsSplitPaneDivider.detailsLabel.text=area de detalles +ResultsSplitPaneDivider.showButton.text= +ResultsSplitPaneDivider.hideButton.text= +ImageFilterPanel.imageFiltersSplitPane.toolTipText= +ImageFilterPanel.imageFiltersSplitPane.border.title=Paso 2: Filtrar que imagenes mostrar +ArtifactTypeFilterPanel.artifactTypeCheckbox.text=Tipo de Resultado: +InterestingItemsFilterPanel.interestingItemsCheckbox.text=Elemento Interesante: +DocumentPanel.fileSizeLabel.toolTipText= +DocumentPanel.isDeletedLabel.toolTipText= +DomainFilterPanel.domainFiltersSplitPane.toolTipText= +DomainFilterPanel.domainFiltersSplitPane.border.title=Paso 2: Filtrar que dominios mostrar +SizeFilterPanel.sizeCheckbox.text=Tamanio de Archivo: +DateFilterPanel.endCheckBox.text=Final: +DateFilterPanel.startCheckBox.text=Inicio: +DateFilterPanel.daysLabel.text=dias de actividad +ImageThumbnailPanel.isDeletedLabel.toolTipText= +ResultsPanel.pageControlsLabel.text=Paginas: +ResultsPanel.currentPageLabel.text=Pagina: - +ResultsPanel.pageSizeLabel.text=Tamanio de Pagina: +ResultsPanel.gotoPageLabel.text=Ir a Pagina: +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. +HashSetFilterPanel.hashSetCheckbox.text=Conjunto de Hash: +PastOccurrencesFilterPanel.pastOccurrencesCheckbox.text=Ocurrencias Pasadas: +DocumentFilterPanel.documentsFiltersSplitPane.border.title=Paso 2: Filtrar que documentos mostrar +ObjectDetectedFilterPanel.text=Objeto Detectado: +DateFilterPanel.mostRecentRadioButton.text=Solo final: +DateFilterPanel.dateFilterCheckBox.text=Filtro de Fecha: +DomainSummaryPanel.pagesLabel.text= +DomainSummaryPanel.filesDownloadedLabel.text= +FileDetailsPanel.instancesList.border.title=Instancias +CookieDetailsPanel.jLabel1.text=Artefacto: +CookieDetailsPanel.jLabel2.text= +PreviouslyNotableFilterPanel.text_1=Incluir solo dominios previamente notables +KnownAccountTypeFilterPanel.text_1=Incluir solo dominios con un tipo de cuenta conocido +LoadingPanel.detailsLabel.AccessibleContext.accessibleName=detailsLabel +VideoThumbnailPanel.bytes.text=bytes +VideoThumbnailPanel.deleted.text=Todas las instancias del archivo se han eliminado. +VideoThumbnailPanel.gigaBytes.text=GB +VideoThumbnailPanel.kiloBytes.text=KB +VideoThumbnailPanel.megaBytes.text=MB +# {0} - otherInstanceCount +VideoThumbnailPanel.nameLabel.more.text=\ y {0} mas +# {0} - fileSize +# {1} - units +VideoThumbnailPanel.sizeLabel.text=Tamanio: {0} {1} +VideoThumbnailPanel.terraBytes.text=TB diff --git a/Core/src/org/sleuthkit/autopsy/events/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/events/Bundle_ar.properties new file mode 100644 index 0000000000..1678147f5d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/events/Bundle_ar.properties @@ -0,0 +1,10 @@ +MessageServiceConnectionInfo.ConnectionCheck.Everything=Nombre de host, numero de puerto, nombre de usuario y/o contrasenia no validos. +MessageServiceConnectionInfo.ConnectionCheck.Hostname=Nombre de host no valido. +MessageServiceConnectionInfo.ConnectionCheck.Port=Número de puerto no valido. +MessageServiceConnectionInfo.ConnectionCheck.Username=Nombre de usuario no valido. +MessageServiceConnectionInfo.ConnectionCheck.Password=Contrasenia no valida. +MessageServiceConnectionInfo.ConnectionCheck.UsernameAndPassword=Nombre de usuario y/o contrasenia no validos. +MessageServiceConnectionInfo.ConnectionCheck.HostnameOrPort=Nombre de host y/o numero de puerto no validos. +MessageServiceConnectionInfo.MissingHostname=Nombre de host faltante. +MessageServiceConnectionInfo.MissingUsername=Nombre de usuario faltante. +MessageServiceConnectionInfo.MissingPassword=Contrasenia faltante. \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/examples/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/examples/Bundle_ar.properties new file mode 100644 index 0000000000..fcdebc1e19 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/examples/Bundle_ar.properties @@ -0,0 +1,6 @@ +SampleContentViewer.jLabel1.text=jLabel1 +SampleIngestModuleFactory.moduleName=Modulo de Ingesta de Muestra +SampleIngestModuleFactory.moduleDescription=Este modulo sirve como un modulo de ingestion de muestra para desarrolladores de software. +SampleIngestModuleIngestJobSettingsPanel.skipKnownFilesCheckBox.text=Saltar Archivos Conocidos (NSRL) +SampleExecutableIngestModuleFactory.moduleName=Modulo de Ingesta de Ejecutable de Muestra +SampleExecutableIngestModuleFactory.moduleDescription=Este modulo sirve como un modulo de ingestion de muestra ejecutable para desarrolladores de software. diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ar.properties new file mode 100644 index 0000000000..f101a3643a --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ar.properties @@ -0,0 +1,83 @@ +DataSourceFilter.errorMessage.emptyDataSource=Al menos se debe seleccionar una fuente de datos. +DateSearchFilter.errorMessage.endDateBeforeStartDate=La fecha de finalizacion debe ser posterior a la fecha de inicio. +DateSearchFilter.errorMessage.noCheckboxSelected=Al menos se debe seleccionar una casilla de verificacion de tipo de fecha. +FileSearchPanel.cancelledSearch.text=La busqueda fue cancelada +FileSearchPanel.emptyNode.display.text=No se encontraron resultados. +FileSearchPanel.searchingNode.display.text=Realizando busqueda de archivos por atributos. Por favor, espera. +FileSearchPanel.searchingPath.text=Busqueda de archivos en progreso +HashSearchFilter.errorMessage.emptyHash=Los datos de hash estan vacios. +HashSearchFilter.errorMessage.wrongCharacter=MD5 contiene caracteres hexadecimales no validos. +# {0} - hash data length +HashSearchFilter.errorMessage.wrongLengthMd5=La longitud de entrada ({0}) no coincide con la longitud de MD5 (32). +# {0} - hash data length +HashSearchFilter.errorMessage.wrongLengthSha256=La longitud de entrada ({0}) no coincide con la longitud de SHA-256 (64). +KnownStatusSearchFilter.errorMessage.noKnownStatusCheckboxSelected=Al menos se debe seleccionar una casilla de verificacion de estado conocido. +MimeTypeFilter.errorMessage.emptyMimeType=Al menos se debe seleccionar un tipo MIME. +NameSearchFilter.errorMessage.emtpyName=Por favor, ingresa un nombre para la busqueda. +OpenIDE-Module-Name=FileSearch +KnownStatusSearchPanel.knownCheckBox.text=Estado Conocido: +KnownStatusSearchPanel.knownBadOptionCheckBox.text=Notable +KnownStatusSearchPanel.knownOptionCheckBox.text=Conocido (NSRL u otro) +KnownStatusSearchPanel.unknownOptionCheckBox.text=Desconocido +DateSearchFilter.noneSelectedMsg.text=Al menos se debe seleccionar un tipo de fecha\! +DateSearchPanel.dateCheckBox.text=Fecha: +DateSearchPanel.jLabel4.text=Zona horaria: +DateSearchPanel.createdCheckBox.text=Creado +DateSearchPanel.accessedCheckBox.text=Accedido +DateSearchPanel.changedCheckBox.text=Cambiado +DateSearchPanel.modifiedCheckBox.text=Modificado +DateSearchPanel.jLabel1.text=hasta +NameSearchPanel.nameCheckBox.text=Nombre: +NameSearchPanel.noteNameLabel.text=*Nota: La coincidencia de nombres distingue entre mayusculas y minusculas y coincide con cualquier parte del nombre del archivo (sin incluir la ruta principal). Las expresiones regulares no son compatibles en este momento.. +NameSearchPanel.searchTextField.text= +SearchNode.getName.text=Resultado de la Busqueda +SizeSearchFilter.errorMessage.nonNegativeNumber=Los datos de tamanio de entrada son un numero negativo. +SizeSearchFilter.errorMessage.notANumber=Los datos de tamanio de entrada no son un numero. +SizeSearchPanel.sizeCheckBox.text=Tamanio: +NameSearchPanel.cutMenuItem.text=Cortar +NameSearchPanel.copyMenuItem.text=Copiar +NameSearchPanel.pasteMenuItem.text=Pegar +NameSearchPanel.selectAllMenuItem.text=Seleccionar Todo +SizeSearchPanel.selectAllMenuItem.text=Seleccionar Todo +SizeSearchPanel.pasteMenuItem.text=Pegar +SizeSearchPanel.copyMenuItem.text=Copiar +SizeSearchPanel.cutMenuItem.text=Cortar +DateSearchPanel.cutMenuItem.text=Cortar +DateSearchPanel.selectAllMenuItem.text=Seleccionar Todo +DateSearchPanel.pasteMenuItem.text=Pegar +DateSearchPanel.copyMenuItem.text=Copiar +FileSearchAction.getName.text=Busqueda de Archivos por Atributos +FileSearchDialog.frame.title=Busqueda de Archivos por Atributos +FileSearchDialog.frame.msg=Busqueda de Archivos por Atributos +FileSearchPanel.custComp.label.text=Buscar archivos que cumplan con los siguientes criterios: +FileSearchPanel.filterTitle.name=Nombre +FileSearchPanel.filterTitle.metadata=Metadatos +FileSearchPanel.filterTitle.knownStatus=Estado Conocido +FileSearchPanel.search.results.title=Resultados de la Busqueda de Archivos {0} +FileSearchPanel.search.results.pathText=Resultados de Busqueda de Nombres de Archivos: +FileSearchPanel.search.results.msg=Busqueda de Archivos: {0} coincidencias encontradas +FileSearchPanel.search.results.details=Un gran numero de coincidencias puede afectar el rendimiento en algunas operaciones +FileSearchPanel.search.exception.noFilterSelected.msg=Al menos se debe seleccionar un filtro. +FileSearchPanel.search.validationErr.msg=Error de validacion: {0} +FileSearchPanel.emptyWhereClause.text=Opciones no validas, nada que mostrar. +KnownStatusSearchFilter.noneSelectedMsg.text=Al menos se debe seleccionar un estado conocido\! +NameSearchFilter.emptyNameMsg.text=Debes ingresar algo para la busqueda por nombre. +SizeSearchPanel.sizeCompareComboBox.equalTo=igual a +SizeSearchPanel.sizeCompareComboBox.greaterThan=mayor que +SizeSearchPanel.sizeCompareComboBox.lessThan=menor que +FileSearchPanel.searchButton.text=Buscar +MimeTypePanel.mimeTypeCheckBox.text=Tipo MIME: +HashSearchPanel.md5CheckBox.text=MD5: +Sha256HashSearchPanel.sha256CheckBox.text=SHA-256: +HashSearchPanel.emptyHashMsg.text=Debes ingresar algo para la busqueda por hash. +FileSearchPanel.errorLabel.text=\ +DataSourcePanel.dataSourceCheckBox.label=Fuente de Datos: +DataSourcePanel.dataSourceCheckBox.actionCommand=Fuente de Datos: +DataSourcePanel.dataSourceCheckBox.text=Fuente de Datos: +DataSourcePanel.dataSourceNoteLabel.text=*Nota: Puedes seleccionar multiples fuentes de datos +DateSearchPanel.noLimitLabel.text=*Los campos vacios significan "Sin Limite" +DateSearchPanel.dateFormatLabel.text=*El formato de fecha es mm/dd/yyyy +MimeTypePanel.noteLabel.text=*Nota: Puedes seleccionar multiples tipos MIME +HashSearchPanel.sha256CheckBox.text=SHA-256: +HashSearchPanel.sha256TextField.text= +FileSearchPanel.closeButton.text=Cerrar diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/geolocation/Bundle_ar.properties new file mode 100644 index 0000000000..e04f2cc84a --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/geolocation/Bundle_ar.properties @@ -0,0 +1,79 @@ +CTL_GeolocationTopComponentAction=GeolocationTopComponent +CTL_GeolocationTopComponent=Geolocalizacion +CTL_OpenGeolocation=Geolocalizacion +GeoFilterPanel_ArtifactType_List_Title=Tipos +GeoFilterPanel_DataSource_List_Title=Fuentes de Datos +GeoFilterPanel_empty_artifactType=No se puede aplicar el filtro, por favor selecciona uno o mas tipos de artefactos. +GeoFilterPanel_empty_dataSource=No se puede aplicar el filtro, por favor selecciona una o mas fuentes de datos. +GeolocationSettings_mbtile_does_not_exist_message=El archivo suministrado no existe.\nPor favor, verifica que el archivo exista e intenta nuevamente. +GeolocationSettings_mbtile_does_not_exist_title=Archivo no encontrado +GeolocationSettings_mbtile_not_valid_message=El archivo suministrado no es un archivo de tesela de raster. +GeolocationSettings_mbtile_not_valid_title=Archivo no valido +GeolocationSettings_mbtile_test_success_message=El archivo suministrado es un archivo raster valido de tesela MBTile. +GeolocationSettings_mbtile_test_success_title=exito +GeolocationSettings_path_not_valid_message=La ruta del archivo suministrado esta vacia.\nPor favor, proporciona una ruta de archivo valida. +GeolocationSettings_path_not_valid_title=Archivo no valido +GeolocationSettingsPanel_malformed_url_message=La direccion suministrada del servidor de teselas OSM no es valida.\nPor favor, proporciona una URL bien formada con el prefijo http:// +GeolocationSettingsPanel_malformed_url_message_tile=URL malformada +GeolocationSettingsPanel_osm_server_test_fail_message=La prueba del servidor de teselas OSM suministrado fallo.\nNo se pudo conectar al servidor. +GeolocationSettingsPanel_osm_server_test_fail_message_title=Error +GeolocationSettingsPanel_osm_server_test_success_message=La direccion del servidor de teselas OSM proporcionada es valida. +GeolocationSettingsPanel_osm_server_test_success_message_title=exito +GeolocationTC_connection_failure_message=Error al conectarse a la fuente de teselas de mapa.\nPor favor, revisa la fuente del mapa en el cuadro de dialogo de Opciones. +GeolocationTC_connection_failure_message_title=Fallo en la conexion +GeolocationTC_empty_waypoint_message=No se puede generar el informe KML debido a la falta de puntos de referencia.\nPor favor, asegurate de que haya puntos de referencia visibles antes de generar el informe KML. +GeolocationTC_KML_report_title=Informe KML +GeolocationTC_report_progress_title=Progreso del Informe KML +GeolocationTopComponent.WaypointFetcher.onErrorDescription=Hubo un error al recopilar algunos datos de seguimiento GPS. Algunos resultados han sido excluidos.. +GeolocationTopComponent.WaypointFetcher.onErrorTitle=Error al recopilar datos de seguimiento GPS +GeoTopComponent_filer_data_invalid_msg=No se puede ejecutar el filtro de puntos de referencia.\nPor favor, selecciona una o mas fuentes de datos. +GeoTopComponent_filer_data_invalid_Title=Error en el filtro +GeoTopComponent_filter_exception_msg=Se produjo una excepcion durante el filtrado de puntos de referencia. +GeoTopComponent_filter_exception_Title=Error en el filtro +GeoTopComponent_no_waypoints_returned_mgs=El filtro aplicado no pudo encontrar puntos de referencia que coincidieran con los criterios.\nRevisa las opciones de filtro e intentalo de nuevo. +GeoTopComponent_no_waypoints_returned_Title=No se encontraron puntos de referencia +GLTopComponent_initilzation_error=Se produjo un error durante la inicializacion de puntos de referencia. Es posible que los datos de geolocalizacion esten incompletos. +GLTopComponent_name=Geolocalizacion +GLTopComponent_No_dataSource_message=No se encontraron fuentes de datos con artefactos de geolocalizacion. +GLTopComponent_No_dataSource_Title=No se encontraron artefactos de geolocalizacion +HidingPane_default_title=Filtros +MapPanel_connection_failure_message=Error al conectarse a una nueva fuente de teselas de mapas de geolocalizacion. +MapPanel_connection_failure_message_title=Fallo en la conexion +MayWaypoint_ExternalViewer_label=Abrir en Visor Externo +RefreshPanel.refreshLabel.text=Los datos de geolocalizacion se han actualizado, la visualizacion puede estar desactualizada. +RefreshPanel.refreshButton.text=Actualizar Vista +RefreshPanel.closeButton.text= +WaypointDetailPanel.closeButton.text= +WaypointDetailPanel.imageLabel.text= +GeoFilterPanel.waypointSettings.border.title= +GeoFilterPanel.allButton.text=Todos +GeoFilterPanel.mostRecentButton.text=Solo ultimos +GeoFilterPanel.applyButton.text=Aplicar +GeoFilterPanel.showWaypointsWOTSCheckBox.text=Incluir puntos de referencia sin marcas de tiempo +GeoFilterPanel.daysLabel.text=dias de actividad +GeoFilterPanel.optionsLabel.text=Fechas +OptionsCategory_Name_Geolocation=Geolocalizacion +OptionsCategory_Keywords_Geolocation=Configuracion de Geolocalizacion +GeolocationSettingsPanel.tilePane.border.title=Fuente de Datos de Teselas de Mapa +OptionsCategory_Keywords_Geolocation=Geolocalizacion +GeolocationSettingsPanel.mbtileFileField.toolTipText= +GeolocationSettingsPanel.mbtileFileField.text= +GeolocationSettingsPanel.defaultDataSource.text=Servidor de teselas en linea predeterminado (bing.com/maps) +GeolocationSettingsPanel.osmServerRBnt.text=Servidor de OpenStreetMap +GeolocationSettingsPanel.zipFileRBnt.text=Archivo ZIP de OpenStreetMap +GeolocationSettingsPanel.zipFileRBnt.actionCommand=Archivo ZIP de teselas de OpenStreetMap +GeolocationSettingsPanel.mbtilesRBtn.text=Archivo MBTiles +GeolocationSettingsPanel.osmServerAddressField.text= +GeolocationSettingsPanel.zipFilePathField.text= +GeolocationSettingsPanel.serverTestBtn.text=Probar +GeolocationSettingsPanel.mbtilesBrowseBtn.text=Explorar +GeolocationSettingsPanel.zipFileBrowseBnt.text=Explorar +GeolocationSettingsPanel.mbtileTestBtn.text=Probar +GeolocationTopComponent.reportButton.text=Informe KML +GeolocationTopComponent.coordLabel.text= +MapPanel.zoomInBtn.text= +MapPanel.zoomOutBtn.text= +GeoFilterPanel.showLabel.text=Mostrar: +GeoFilterPanel.showLabel.toolTipText=Mostrar: +GeoFilterPanel.atCBPanel.AccessibleContext.accessibleName= +WaypointExtractAction_label=Extraer Archivos diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Bundle_ar.properties new file mode 100644 index 0000000000..4b609eb6a5 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Bundle_ar.properties @@ -0,0 +1,13 @@ +# {0} - area name +GEOArea_point_label_header=Punto de contorno del area para el area: {0} +# {0} - track name +GEOTrack_point_label_header=Punto de seguimiento para la ruta: {0} +LastKnownWaypoint_Label=Ultima ubicacion conocida +Route_End_Label=Fin +Route_Label=Ruta en linea recta +Route_point_label=Puntos de referencia para la ruta +Route_Start_Label=Inicio +SearchWaypoint_DisplayLabel=Busqueda GPS +Track_distanceFromHome_displayName=Distancia desde el punto de origen +Track_distanceTraveled_displayName=Distancia recorrida +TrackpointWaypoint_DisplayLabel=Punto de seguimiento GPS diff --git a/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ar.properties new file mode 100644 index 0000000000..a25c30690c --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ar.properties @@ -0,0 +1,6 @@ +CheckBoxListPanel.titleLabel.text= +CheckBoxListPanel.checkButton.text=Marcar todo +CheckBoxListPanel.uncheckButton.text=Desmarcar todo +StatusIconCellRenderer.tooltiptext.error=Se produjo un error +StatusIconCellRenderer.tooltiptext.ok=Aceptar +StatusIconCellRenderer.tooltiptext.warning=Se produjo una advertencia diff --git a/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ar.properties new file mode 100644 index 0000000000..a937e2debe --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ar.properties @@ -0,0 +1,32 @@ +HealthMonitorDashboard.createAdminPanel.disableButton=Desactivar monitor +HealthMonitorDashboard.createAdminPanel.enableButton=Activar monitor +HealthMonitorDashboard.createTimingControlPanel.filterByHost=Filtrar por host +HealthMonitorDashboard.createTimingControlPanel.maxDays=Dias maximos a mostrar +HealthMonitorDashboard.createTimingControlPanel.showTrendLine=Mostrar linea de tendencia +HealthMonitorDashboard.createTimingControlPanel.skipOutliers=No representar valores atipicos +HealthMonitorDashboard.createTimingPanel.noData=No hay datos para mostrar - el monitor no esta habilitado +HealthMonitorDashboard.createTimingPanel.timingMetricsTitle=Metricas de Tiempo +HealthMonitorDashboard.createUserControlPanel.maxDays=Dias maximos a mostrar +# {0} - Report file name +HealthMonitorDashboard.createUserControlPanel.reportDone=Informe guardado en: {0} +HealthMonitorDashboard.createUserControlPanel.reportError=Error al generar el informe +HealthMonitorDashboard.createUserControlPanel.userReportButton=Generar Informe +HealthMonitorDashboard.createUserPanel.noData=No hay datos para mostrar - el monitor no esta habilitado +HealthMonitorDashboard.createUserPanel.userMetricsTitle=Metricas de Usuario +HealthMonitorDashboard.DateRange.oneDay=Un dia +HealthMonitorDashboard.DateRange.oneMonth=Un mes +HealthMonitorDashboard.DateRange.oneWeek=Una semana +HealthMonitorDashboard.DateRange.twoWeeks=Dos semanas +HealthMonitorDashboard.display.dashboardTitle=Monitor de Salud +HealthMonitorDashboard.display.errorCreatingDashboard=Error al crear el tablero del monitor de salud +HealthMonitorDashboard.updateTimingMetricGraphs.noData=No hay datos para mostrar +HealthMonitorDashboard.updateUserMetricGraphs.noData=No hay datos para mostrar +TimingMetricGraphPanel.paintComponent.displayingTime=mostrando tiempo en +TimingMetricGraphPanel.paintComponent.hours=horas +TimingMetricGraphPanel.paintComponent.microseconds=microsegundos +TimingMetricGraphPanel.paintComponent.milliseconds=milisegundos +TimingMetricGraphPanel.paintComponent.minutes=minutos +TimingMetricGraphPanel.paintComponent.nanoseconds=nanosegundos +TimingMetricGraphPanel.paintComponent.seconds=segundos +UserMetricGraphPanel.constructor.casesOpen=Casos abiertos +UserMetricGraphPanel.constructor.loggedIn=Usuarios conectados - nodos de examinador en azul, nodos de ingestion automatica en verde diff --git a/Core/src/org/sleuthkit/autopsy/imagewriter/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/imagewriter/Bundle_ar.properties new file mode 100644 index 0000000000..d5efb746da --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/imagewriter/Bundle_ar.properties @@ -0,0 +1,10 @@ +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. + +# {0} - data source name +ImageWriter.progressBar.message=Finalizando adquisicion de {0} (desconectar el dispositivo para cancelar) +ImageWriterService.serviceName=Escritor de Imagen +ImageWriterService.waitingForVHDs=Esperando a que se complete(n) el/los VHD(s) +ImageWriterService.shouldWait=¿Esperar a que se completen el/los VHD(s) en progreso? +ImageWriterService.localDisk=Copia de imagen de disco local diff --git a/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ar.properties new file mode 100644 index 0000000000..ccdd9446b0 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ar.properties @@ -0,0 +1,169 @@ +CTL_RunIngestAction=Ejecutar Ingesta +FileIngestPipeline_SaveResults_Activity=Guardando Resultados +# {0} - data source name +IngestJob_progress_analysisResultIngest_displayName=Analizando resultados de analisis de {0} +# {0} - tier number +# {1} - job state modifer +IngestJobExecutor_progress_snapshot_currentTier=Nivel {0} {1} +IngestJobExecutor_progress_snapshot_currentTier_shutDown_modifier=Apagar +IngestJobSettingsPanel.IngestModulesTableRenderer.info.message=Una version anterior de este modulo de ingestion se ha ejecutado anteriormente en esta fuente de datos. +IngestJobSettingsPanel.IngestModulesTableRenderer.warning.message=Este modulo de ingestion se ha ejecutado anteriormente en esta fuente de datos. +IngestJobSettingsPanel.noPerRunSettings=El modulo seleccionado no tiene configuraciones por ejecucion. +IngestJobSettingsPanel.pastJobsButton.action.frame.title=Historial de Ingesta +IngestManager.startupErr.dlgErrorList=Errores: +IngestManager.startupErr.dlgMsg=No se puede iniciar uno o mas modulos de ingestion, la ingestion ha sido cancelada. +IngestManager.startupErr.dlgSolution=Por favor, desactiva los modulos fallidos o corrige los errores antes de reiniciar la ingestion. +IngestManager.startupErr.dlgTitle=Fallo en el Inicio del Modulo de Ingestion +IngestOptionsPanel.fileFiltersTab.text=Filtros de Archivos +IngestOptionsPanel.fileFiltersTab.toolTipText=Configuraciones para crear y editar filtros de archivo de ingestion. +IngestOptionsPanel.profilesTab.text=Perfiles +IngestOptionsPanel.profilesTab.toolTipText=Configuraciones para crear y editar perfiles. +IngestOptionsPanel.settingsTab.text=Configuraciones +IngestOptionsPanel.settingsTab.toolTipText=Configuraciones relacionadas con los recursos disponibles para la ingestion. +OpenIDE-Module-Name=Ingesta +Menu/Tools/RunIngestModules=Ejecutar Modulos de Ingestion +CTL_IngestMessageTopComponent=Mensajes +HINT_IngestMessageTopComponent=Ventanas de Mensajes +IngestMessageDetailsPanel.backButton.text= +IngestMessageDetailsPanel.viewArtifactButton.text=Ir a Resultado +IngestMessageDetailsPanel.viewContentButton.text=Ir al Directorio +IngestMessagePanel.sortByLabel.text=Ordenar por: +IngestMessagePanel.sortByComboBox.toolTipText=Ordenar mensajes por tiempo (orden cronologico) o prioridad del mensaje +IngestMessageDetailsPanel.messageDetailsPane.contentType=texto/html +IngestMessageDetailsPanel.messageDetailsPane.toolTipText= +IngestMessagesToolbar.toolTipText= +IngestMessageDetailsPanel.copyMenuItem.text=Copiar +IngestMessageDetailsPanel.selectAllMenuItem.text=Seleccionar Todo +IngestMessageTopComponent.displayName=Bandeja de Entrada de Ingesta +IngestMessagePanel.totalMessagesNameLabel.text=Total: +IngestMessagePanel.totalMessagesNameVal.text=- +IngestMessagePanel.totalUniqueMessagesNameLabel.text=unico: +IngestMessagePanel.totalUniqueMessagesNameVal.text=- +IngestJob.progress.dataSourceIngest.initialDisplayName=Analizando {0} +IngestJob.progress.dataSourceIngest.displayName={0} para {1} +IngestJob.progress.fileIngest.displayName=Analizando archivos desde {0} +IngestJob.progress.dataArtifactIngest.displayName=Analizando artefactos de datos desde {0} +IngestJob.progress.cancelling=Cancelando... +IngestJob.cancellationDialog.title=Cancelar Ingesta +IngestDialog.startButton.title=Inicio +IngestDialog.closeButton.title=Cerrar +IngestManager.moduleErr=Error del Modulo +IngestManager.moduleErr.errListenToUpdates.msg=Un modulo causo un error al escuchar actualizaciones del Gestor de Ingesta. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos.. +IngestMessage.toString.type.text=tipo: {0} +IngestMessage.toString.date.text=\ fecha: {0} +IngestMessage.toString.subject.text=\ asunto: {0} +IngestMessage.toString.details.text=\ detalles: {0} +IngestMessage.toString.data.text=\ datos: {0} +IngestMessage.exception.typeSrcSubjNotNull.msg=el tipo de mensaje, fuente y asunto no pueden ser nulos +IngestMessage.exception.srcSubjNotNull.msg=la fuente y el asunto no pueden ser nulos +IngestMessage.exception.srcSubjDetailsDataNotNull.msg=la fuente, asunto, detalles y datos no pueden ser nulos +IngestMessagePanel.moduleErr=Error del Modulo +IngestMessagePanel.moduleErr.errListenUpdates.text=Un modulo causo un error al escuchar actualizaciones del Panel de Mensajes de Ingesta. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos.. +IngestMessagePanel.MsgTableMod.colNames.module=Modulo +IngestMessagePanel.MsgTableMod.colNames.num=Num. +IngestMessagePanel.MsgTableMod.colNames.new=Nuevo? +IngestMessagePanel.MsgTableMod.colNames.subject=Asunto +IngestMessagePanel.MsgTableMod.colNames.timestamp=Marca de Tiempo +IngestMessagePanel.BooleanRenderer.exception.nonBoolVal.msg=Intento utilizar el Renderizador de Booleanos en un valor no booleano. +IngestMessagePanel.DateRenderer.exception.nonDateVal.text=Intento utilizar el Renderizador de Fechas en un valor no de Fecha. +IngestMessageTopComponent.displayReport.option.OK=Aceptar +IngestMessageTopComponent.displayReport.option.GenRpt=Generar Informe +IngestMessageTopComponent.msgDlg.ingestRpt.text=Informe de Ingesta +IngestMonitor.mgrErrMsg.lowDiskSpace.title=Ingesta detenida - poco espacio en disco en {0} +IngestMonitor.mgrErrMsg.lowDiskSpace.msg=Deteniendo la ingestion debido a poco espacio en disco en el disco {0}. \nAsegurate de que la unidad del caso tenga al menos 1 GB de espacio libre y reinicia la ingestion. +IngestManager.StartIngestJobsTask.run.displayName=Iniciando Ingesta +IngestManager.StartIngestJobsTask.run.cancelling={0} (Cancelando...) +IngestMessagePanel.sortByComboBox.model.time=Hora +IngestMessagePanel.sortByComboBox.model.priority=Prioridad +IngestMessagesToolbar.customizeButton.toolTipText=Mensajes de Ingesta +IngestMessageTopComponent.initComponents.name=Bandeja de Entrada de Ingesta +IngestManager.OpenEventChannel.Fail.ErrMsg=El proceso de analisis no pudo conectarse a ningun otro nodo que pudiera estar colaborando en el caso. +IngestManager.OpenEventChannel.Fail.Title=Fallo en la conexion +IngestJobSettings.createModuleSettingsFolder.warning=Error al crear la carpeta de configuracion del modulo de ingestion, no se pueden guardar las configuraciones.. +IngestJobSettings.missingModule.warning=El modulo {0} cargado previamente no pudo ser encontrado. +IngestJobSettings.save.warning=Error al guardar las configuraciones del trabajo de ingestion para el modulo {0}. +IngestJobSettings.moduleSettingsLoad.warning=Error al cargar las configuraciones del trabajo de ingestion para el modulo {0} para el contexto {1}, se usaran los valores predeterminados. +IngestJobSettings.moduleSettingsSave.warning=Error al guardar las configuraciones del trabajo de ingestion para el modulo {0} para el contexto {1}. +IngestProgressSnapshotDialog.title.text=Instantanea del Progreso de Ingesta +IngestProgressSnapshotPanel.refreshButton.text=Actualizar +IngestProgressSnapshotPanel.closeButton.text=Cerrar +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.threadID=ID de Hilo +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.dataSource=Fuente de Datos +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.activity=Actividad +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.file=Archivo +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.startTime=Hora de Inicio +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.elapsedTime=Tiempo Transcurrido (H:M:S) +IngestManager.IngestThreadActivitySnapshot.idleThread=INACTIVO +IngestManager.IngestMessage.ErrorMessageLimitReached.subject=Maximo de Errores Publicados +IngestManager.IngestMessage.ErrorMessageLimitReached.msg=Se ha alcanzado el numero maximo ({0}) de mensajes de error y/o advertencia publicados. Consulta el registro para ver errores/advertencias adicionales (Ayuda -> Abrir Carpeta de Registro). +IngestManager.IngestMessage.ErrorMessageLimitReached.title=Gestor de Ingestion +IngestModuleFactoryLoader.errorMessages.duplicateDisplayName=Se encontro un modulo con el nombre {0}, duplicando el nombre de otro modulo, el modulo no se utilizara. +DataSourceIngestCancellationPanel.cancelCurrentModuleRadioButton.text=Cancelar solo el modulo de ingestion actual +FileIngestCancellationPanel.cancelIngestJobRadioButton.text=Cancelar la ingestion de la fuente de datos y la ingestion de archivos +FileIngestCancellationPanel.cancelFileIngestRadioButton.text=Cancelar solo la ingestion de archivos. +DataSourceIngestCancellationPanel.cancelAllModulesRadioButton.text=Cancelar todos los modulos de ingestion +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.jobID=ID de Trabajo +IngestJobTableModel.colName.jobID=ID de Trabajo +IngestJobTableModel.colName.dataSource=Fuente de Datos +IngestJobTableModel.colName.start=Inicio +IngestJobTableModel.colName.tier=Nivel +IngestJobTableModel.colName.numProcessed=Archivos Procesados +IngestJobTableModel.colName.filesPerSec=Archivos/Seg +IngestJobTableModel.colName.inProgress=En Progreso +IngestJobTableModel.colName.filesQueued=Archivos en Cola +IngestJobTableModel.colName.dirQueued=Directorios en Cola +IngestJobTableModel.colName.rootQueued=Raices en Cola +IngestJobTableModel.colName.streamingQueued=Archivos Transmitidos en Cola +IngestJobTableModel.colName.dsQueued=DS en Cola +IngestJobTableModel.colName.artifactsQueued=Artefactos en Cola +IngestJobTableModel.colName.resultsQueued=Resultados en Cola +ModuleTableModel.colName.module=Modulo +ModuleTableModel.colName.duration=Duracion +IngestJobSettingsPanel.jButtonSelectAll.text=Seleccionar Todo +IngestJobSettingsPanel.jButtonDeselectAll.text=Deseleccionar Todo +IngestManager.cancellingIngest.msgDlg.text=Cancelando todos los trabajos de ingestion en ejecucion actualmente +IngestManager.serviceIsDown.msgDlg.text={0} esta inactivo +ProfilePanel.messages.profileNameContainsIllegalCharacter=El nombre del perfil contiene un caracter no permitido. Solo se permiten letras, digitos y guiones bajos (\n).. +ProfilePanel.messages.profilesMustBeNamed=El perfil de ingestion debe tener un nombre. +ProfilePanel.newProfileText=NewEmptyProfile +ProfilePanel.profileDescLabel.text=Descripcion: +ProfilePanel.profileNameLabel.text=Nombre del Perfil: +ProfilePanel.title.text=Perfil +ProfileSettingsPanel.deleteProfileButton.text=Eliminar Perfil +# {0} - profile name +ProfileSettingsPanel.doFileSetsDialog.duplicateProfile.text=El perfil con el nombre {0} ya existe. +ProfileSettingsPanel.editProfileButton.text=Editar Perfil +ProfileSettingsPanel.filterNameLabel.text=Filtro: +ProfileSettingsPanel.infoTextArea.text=Un Perfil de Ingestion ejecuta un conjunto preconfigurado de modulos de ingestion en algunos o todos los archivos de una fuente de datos. Crea un perfil si ejecutas frecuentemente el mismo conjunto de modulos en un subconjunto de los archivos.. +ProfileSettingsPanel.messages.filterLoadFailed=Error al cargar el filtro de ingestion de archivos +ProfileSettingsPanel.newProfileButton.text=Nuevo Perfil +ProfileSettingsPanel.profileDescLabel.text=Descripcion del Perfil: +ProfileSettingsPanel.profileListLabel.text=Perfiles: +ProfileSettingsPanel.selectedModulesLabel.text=Modulos de Ingestion Seleccionados: +ProfileSettingsPanel.title=Configuraciones del Perfil +RunIngestSubMenu.menuItem.empty=-Vacio- +RunIngestModulesMenu.getName.text=Ejecutar Modulos de Ingestion +DataSourceIngestPipeline.moduleError.title.text={0} Error +FileIngestPipeline.moduleError.title.text={0} Error +IngestJob.cancelReason.notCancelled.text=No cancelado +IngestJob.cancelReason.cancelledByUser.text=Cancelado por el usuario +IngestJob.cancelReason.ingestModStartFail.text=Error al iniciar los modulos de ingestion +IngestJob.cancelReason.outOfDiskSpace.text=Sin espacio en disco +IngestJob.cancelReason.servicesDown.text=Servicios Desactivados +IngestJob.cancelReason.caseClosed.text=Caso Cerrado +IngestJobSettingsPanel.globalSettingsButton.text=Configuraciones Globales +gest +IngestJobSettingsPanel.globalSettingsButton.actionCommand=Avanzado +IngestJobSettingsPanel.globalSettingsButton.text=Configuraciones Globales +IngestJobSettingsPanel.pastJobsButton.text=Historial +IngestJobSettingsPanel.fileIngestFilterLabel.text=Ejecutar modulos de ingestion en: +OptionsCategory_Name_IngestOptions=Ingesta +OptionsCategory_Keywords_IngestOptions=Ingesta +IngestSettingsPanel.jLabelProcessTimeOutUnits.text=hora(s) +IngestSettingsPanel.jFormattedTextFieldProcTimeOutHrs.text=60 +IngestSettingsPanel.jCheckBoxEnableProcTimeout.text= +IngestSettingsPanel.jLabelSetProcessTimeOut.text=Habilitar temporizador para permitir que los modulos se terminen automaticamente despues de un tiempo establecido: +IngestSettingsPanel.restartRequiredLabel.text=Para esta computadora, se debe utilizar un maximo de {0} hilos de ingestion de archivos. Es necesario reiniciar la aplicacion para que tenga efecto.. +IngestSettingsPanel.jLabelNumThreads.text=Numero de hilos a utilizar para la ingestion de archivos: +IngestSettingsPanel.ingestWarningLabel.text=La ingestion esta en curso, algunas configuraciones no estaran disponibles hasta que termine.. +ProfileSettingsPanel.ingestWarningLabel.text=La ingestion esta en curso, algunas configuraciones no estaran disponibles hasta que termine.. diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettings.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettings.java index a89d0ec680..9f2214c520 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettings.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobSettings.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.ingest; +import com.basistech.df.cybertriage.autopsy.malwarescan.MalwareScanIngestModuleFactory; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -33,7 +34,10 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.logging.Level; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.openide.util.NbBundle; import org.openide.util.io.NbObjectInputStream; import org.openide.util.io.NbObjectOutputStream; @@ -54,6 +58,11 @@ public final class IngestJobSettings { private static final String LAST_FILE_INGEST_FILTER_PROPERTY = "Last_File_Ingest_Filter"; //NON-NLS private static final String MODULE_SETTINGS_FOLDER_NAME = "IngestSettings"; //NON-NLS + private static final Set DEFAULT_DISABLED_MODULES = Stream.of( + "Plaso", + MalwareScanIngestModuleFactory.getDisplayName() + ).collect(Collectors.toSet()); + private static final String MODULE_SETTINGS_FOLDER = Paths.get( Paths.get(PlatformUtil.getUserConfigDirectory()).relativize(Paths.get(PlatformUtil.getModuleConfigDirectory())).toString(), MODULE_SETTINGS_FOLDER_NAME @@ -361,37 +370,36 @@ public final class IngestJobSettings { loadedModuleNames.add(moduleFactory.getModuleDisplayName()); } - /** - * Hard coding Plaso to be disabled by default. loadedModuleNames is - * passed below as the default list of enabled modules so briefly remove - * Plaso from loaded modules to get the list of enabled and disabled - * modules names. Then put Plaso back into loadedModulesNames to let the - * rest of the code continue as before. - */ - final String plasoModuleName = "Plaso"; - boolean plasoLoaded = loadedModuleNames.contains(plasoModuleName); - if (plasoLoaded) { - loadedModuleNames.remove(plasoModuleName); + + Set defaultEnabledAndLoaded = new HashSet<>(); + Set defaultDisabledAndLoaded = new HashSet<>(); + for (String loadedModule: loadedModuleNames) { + if (DEFAULT_DISABLED_MODULES.contains(loadedModule)) { + defaultDisabledAndLoaded.add(loadedModule); + } else { + defaultEnabledAndLoaded.add(loadedModule); + } } /** * Get the enabled/disabled ingest modules settings for this context. By * default, all loaded modules except Plaso are enabled. */ - HashSet enabledModuleNames = getModulesNames(this.executionContext, IngestJobSettings.ENABLED_MODULES_PROPERTY, makeCsvList(loadedModuleNames)); - HashSet disabledModuleNames = getModulesNames(this.executionContext, IngestJobSettings.DISABLED_MODULES_PROPERTY, plasoModuleName); //NON-NLS + HashSet enabledModuleNames = getModulesNames(this.executionContext, IngestJobSettings.ENABLED_MODULES_PROPERTY, makeCsvList(defaultEnabledAndLoaded)); + HashSet disabledModuleNames = getModulesNames(this.executionContext, IngestJobSettings.DISABLED_MODULES_PROPERTY, makeCsvList(defaultDisabledAndLoaded)); //NON-NLS - // If plaso was loaded, but appears in neither the enabled nor the - // disabled list, add it to the disabled list. - if (!enabledModuleNames.contains(plasoModuleName) && !disabledModuleNames.contains(plasoModuleName)) { - disabledModuleNames.add(plasoModuleName); + // double check to ensure all loaded modules are present in one of the lists in case more modules (in case settings didn't have a module) + for (String loadedModule : loadedModuleNames) { + // if neither enabled modules or disabled modules contains the loaded module, add it to the default location + if (!enabledModuleNames.contains(loadedModule) && !disabledModuleNames.contains(loadedModule)) { + if (DEFAULT_DISABLED_MODULES.contains(loadedModule)) { + disabledModuleNames.add(loadedModule); + } else { + enabledModuleNames.add(loadedModule); + } + } } - - //Put plaso back into loadedModuleNames - if (plasoLoaded) { - loadedModuleNames.add(plasoModuleName); - } - + /** * Check for missing modules and create warnings if any are found. */ diff --git a/Core/src/org/sleuthkit/autopsy/ingest/runIngestModuleWizard/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/ingest/runIngestModuleWizard/Bundle_ar.properties new file mode 100644 index 0000000000..0205d3f668 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/ingest/runIngestModuleWizard/Bundle_ar.properties @@ -0,0 +1,8 @@ +IngestModulesConfigWizardPanel.name.text=Configurar Modulos de Ingesta +IngestProfileSelectionPanel.customSettings.description=configurar la configuracion individual del modulo en el siguiente paso del asistente +IngestProfileSelectionPanel.customSettings.name=Configuracion Personalizada +IngestProfileSelectionPanel.ingestSettingsButton.text=Configuracion de Ingesta +IngestProfileSelectionPanel.profileListLabel.text=Seleccionar Perfil: +IngestProfileWizardPanel.panelName=Seleccion de Perfil de Ingesta +RunIngestModulesAction.actionPerformed.errorMessage=Error al consultar la base de datos del caso para el elemento seleccionado. +RunIngestModulesAction.name=Ejecutar Modulos de Ingesta diff --git a/Core/src/org/sleuthkit/autopsy/integrationtesting/ConfigurationModuleManager.java b/Core/src/org/sleuthkit/autopsy/integrationtesting/ConfigurationModuleManager.java index 9aabc396b1..dabb034d5f 100644 --- a/Core/src/org/sleuthkit/autopsy/integrationtesting/ConfigurationModuleManager.java +++ b/Core/src/org/sleuthkit/autopsy/integrationtesting/ConfigurationModuleManager.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.integrationtesting; +import com.basistech.df.cybertriage.autopsy.malwarescan.MalwareScanIngestModuleFactory; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -46,7 +47,10 @@ public class ConfigurationModuleManager { private static final Logger logger = Logger.getLogger(ConfigurationModuleManager.class.getName()); private static final IngestJobSettings.IngestType DEFAULT_INGEST_FILTER_TYPE = IngestJobSettings.IngestType.ALL_MODULES; - private static final Set DEFAULT_EXCLUDED_MODULES = Stream.of("Plaso").collect(Collectors.toSet()); + private static final Set DEFAULT_EXCLUDED_MODULES = Stream.of( + "Plaso", + MalwareScanIngestModuleFactory.getDisplayName() + ).collect(Collectors.toSet()); private static final ConfigDeserializer configDeserializer = new ConfigDeserializer(); /** diff --git a/Core/src/org/sleuthkit/autopsy/livetriage/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/livetriage/Bundle_ar.properties new file mode 100644 index 0000000000..71b3cec19e --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/livetriage/Bundle_ar.properties @@ -0,0 +1,27 @@ +CopyFilesWorker.done.text=Finalizacion de la creacion del disco de evaluacion en tiempo real +CopyFilesWorker.error.text=Error al copiar los archivos de evaluacion en tiempo real +CreateLiveTriageDriveAction.appPathError.message=No se pudo ubicar el directorio de la aplicacion +CreateLiveTriageDriveAction.batchFileError.message=Error al crear el archivo por lotes +CreateLiveTriageDriveAction.copyError.message=No se puede copiar la aplicacion. Solo funciona en la version instalada. +CreateLiveTriageDriveAction.error.title=Error al crear el disco de evaluacion en tiempo real +CreateLiveTriageDriveAction.exenotfound.message=No se pudo encontrar el ejecutable +# {0} - drivePath +CreateLiveTriageDriveAction.progressBar.text=Copiando los archivos de evaluacion en tiempo real a {0} +CreateLiveTriageDriveAction.progressBar.title=Por favor espera +CreateLiveTriageDriveAction.success.message=Disco de evaluacion en tiempo real creado. Usa RunFromUSB.bat para ejecutar la aplicacion +CreateLiveTriageDriveAction.success.title=Exito +CTL_CreateLiveTriageDriveAction=Crear Disco de Evaluacion en Tiempo Real +SelectDriveDialog.bnOk.text=Aceptar +SelectDriveDialog.bnRefresh.text=Actualizar +SelectDriveDialog.diskTable.column1.title=Nombre del Disco +SelectDriveDialog.diskTable.column2.title=Tamanio del Disco +SelectDriveDialog.errLabel.disksNotDetected.text=No se detectaron discos. En algunos sistemas se requieren privilegios de administrador +SelectDriveDialog.errLabel.disksNotDetected.toolTipText=No se detectaron discos. +SelectDriveDialog.lbSelectDrive.text=Selecciona la unidad para copiar la aplicacion y el script: +SelectDriveDialog.errorLabel.text=jLabel2 +SelectDriveDialog.bnCancel.text=Cancelar +SelectDriveDialog.descriptionTextArea.text=Esta funcion copia la aplicacion y un archivo por lotes en una unidad extraible,\npermitiendo analizar sistemas sin instalar el software o\nhacer una imagen de las unidades.\n\nPara analizar un sistema, inserta la unidad y ejecuta "RunFromUSB.bat" como\nadministrador, luego selecciona la opcion "Disco Local" en el panel Agregar Fuente de Datos. +SelectDriveDialog.localDiskModel.loading.msg= +SelectDriveDialog.localDiskModel.nodrives.msg=No se pudo encontrar el ejecutable +SelectDriveDialog.selectDriveLabel.text=Selecciona la unidad para usar en la evaluacion en tiempo real (puede tardar en cargar): +SelectDriveDialog.title=Crear Disco de Evaluacion en Tiempo Real diff --git a/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/Bundle_ar.properties new file mode 100644 index 0000000000..1cb5af949e --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/logicalimager/configuration/Bundle_ar.properties @@ -0,0 +1,204 @@ +ConfigureLogicalImagerDialog.loadButton.text=Cargar +ConfigureLogicalImagerDialog.newButton.text=Nuevo +ConfigureLogicalImagerDialog.title=Configurar Imagen Logica +ConfigureLogicalImagerDialog.saveButton.text=Guardar +ConfigureLogicalImagerDialog.configFile.text= +ConfigureLogicalImagerDialog.configFile.toolTipText= +ConfigureLogicalImagerDialog.jLabel1.text=Conjunto de Reglas: +ConfigureLogicalImagerDialog.finalizeImageWriter.text=Finalizar Escritor de Imagenes +ConfigureLogicalImagerDialog.newRuleButton.text=Nueva Regla +ConfigureLogicalImagerDialog.editRuleButton.text=Editar Regla +ConfigureLogicalImagerDialog.deleteRuleButton.text=Eliminar Regla +ConfigureLogicalImagerDialog.jLabel2.text=Detalles de la Regla +ConfigureLogicalImagerDialog.shouldSaveCheckBox.text=Guardar +ConfigureLogicalImagerDialog.shouldAlertCheckBox.text=Alertar +ConfigureLogicalImagerDialog.jLabel3.text=Extensiones: +ConfigureLogicalImagerDialog.extensionsTextField.text= +ConfigureLogicalImagerDialog.filenamesLabel.text=Nombres de Archivos: +ConfigureLogicalImagerDialog.folderNamesLabel.text=Nombres de Carpetas: +ConfigureLogicalImagerDialog.jLabel4.text=Tamanio del Archivo: +ConfigureLogicalImagerDialog.daysIncludedLabel.text=dia(s) +ConfigureLogicalImagerDialog.daysIncludedTextField.text= +ConfigureLogicalImagerDialog.modifiedDateLabel.text=Modificado Dentro de: +ConfigureLogicalImagerDialog.fullPathsLabel.text=Rutas Completas: +ConfigureLogicalImagerDialog.flagEncryptionProgramsCheckBox.text=Detectar programas de cifrado +ConfigVisualPanel1.chooseFileTitle=Seleccionar una configuracion de Imagen Logica +# {0} - filename +ConfigVisualPanel1.configFileIsEmpty=El archivo de configuracion {0} esta vacio +ConfigVisualPanel1.configurationError=Error de configuracion +# {0} - root +# {1} - description +# {2} - size with unit +# {3} - file system +ConfigVisualPanel1.driveListItem={0} ({1}) ({2}) - Sistema de archivos: {3} +ConfigVisualPanel1.fileNameExtensionFilter=Archivo JSON de Configuracion +ConfigVisualPanel1.invalidConfigJson=JSON de configuracion no valido: +ConfigVisualPanel1.messageLabel.noExternalDriveFound=No se encontro la unidad +ConfigVisualPanel1.selectConfigurationFile=Seleccionar ubicacion +ConfigVisualPanel1.unknown=Desconocido +ConfigVisualPanel2.cancel=Cancelar +ConfigVisualPanel2.deleteRuleSet=Eliminar regla +ConfigVisualPanel2.deleteRuleSetConfirmation=Confirmacion de eliminacion de regla +ConfigVisualPanel2.editConfiguration=Configurar Imagen Logica +ConfigVisualPanel2.editRuleError=Error al editar la regla +ConfigVisualPanel2.editRuleSet=Editar Regla +ConfigVisualPanel2.newRule.name=Nueva Regla +# {0} - ruleName +ConfigVisualPanel2.newRuleError.duplicateName=Ya existe una regla con el nombre "{0}". Por favor, ingresa un nombre de regla diferente. +ConfigVisualPanel2.newRuleError.title=Error de nueva regla +ConfigVisualPanel2.ok=Aceptar +ConfigVisualPanel2.rulesTable.columnModel.title0=Nombre de la Regla +ConfigVisualPanel2.rulesTable.columnModel.title1=Descripcion +ConfigVisualPanel3.copyStatus.error=No se pudo guardar el archivo +ConfigVisualPanel3.copyStatus.notSaved=El archivo no ha sido guardado +ConfigVisualPanel3.copyStatus.saved=Guardado +ConfigVisualPanel3.copyStatus.savingInProgress=Guardando el archivo, por favor espera +# {0} - configurationLocation +ConfigVisualPanel3.description.text=Presiona Guardar para escribir la herramienta de imagen y el archivo de configuracion en la ubicacion.\nDestino: {0} +ConfigVisualPanel3.errorMsg.cannotFindLogicalImager=No se pudo encontrar el Imagen Logica, no se puede copiar al destino +# {0} - configFilename +ConfigVisualPanel3.failedToSaveConfigMsg=Error al guardar el archivo de configuracion: {0} +ConfigVisualPanel3.failedToSaveExeMsg=Error al guardar el archivo tsk_logical_imager.exe +# {0} - reason +ConfigVisualPanel3.reason=\nRazon: {0} +ConfigVisualPanel3.saveConfigurationFile=Guardar Imagen Logica +CreateLogicalImagerAction.title=Crear Imagen Logica +CTL_CreateLogicalImagerAction=Crear Imagen Logica +EditFullPathsRulePanel.example=Ejemplo: +EditFullPathsRulePanel.fullPaths=Rutas Completas +EditNonFullPathsRulePanel.emptyExtensionException=Las extensiones no pueden estar vacias +EditNonFullPathsRulePanel.example=Ejemplo: +EditNonFullPathsRulePanel.fileNames=Nombres de Archivos +EditNonFullPathsRulePanel.folderNames=Nombres de Carpetas +# {0} - message +EditNonFullPathsRulePanel.maxFileSizeMustBeNumberException=El tamanio maximo del archivo debe ser un numero: {0} +EditNonFullPathsRulePanel.maxFileSizeNotPositiveException=El tamanio maximo del archivo debe ser positivo +# {0} - maxFileSize +# {1} - minFileSize +EditNonFullPathsRulePanel.maxFileSizeSmallerThanMinException=El tamanio maximo del archivo: {0} bytes debe ser mayor que el tamanio minimo del archivo: {1} bytes +# {0} - message +EditNonFullPathsRulePanel.minFileSizeMustBeNumberException=El tamanio minimo del archivo debe ser un numero: {0} +EditNonFullPathsRulePanel.minFileSizeNotPositiveException=El tamanio minimo del archivo debe ser positivo +# {0} - message +EditNonFullPathsRulePanel.modifiedDaysMustBeNumberException=Los dias modificados deben ser un numero: {0} +EditNonFullPathsRulePanel.modifiedDaysNotPositiveException=Los dias modificados deben ser positivos +EditNonFullPathsRulePanel.units.bytes=Bytes +EditNonFullPathsRulePanel.units.gigabytes=Gigabytes +EditNonFullPathsRulePanel.units.kilobytes=Kilobytes +EditNonFullPathsRulePanel.units.megabytes=Megabytes +# {0} - fieldName +EditRulePanel.blankLineException={0} no puede estar en blanco +EditRulePanel.emptyRuleName.message=El nombre de la regla no puede estar vacio. +# {0} - ruleName +EditRulePanel.reservedRuleName.message=El nombre de la regla "{0}" esta reservado para ser utilizado con una regla predefinida +EditRulePanel.shouldAlertCheckBox.text=Alertar en la consola de la imagen si la regla coincide +EditRulePanel.shouldSaveCheckBox.text=Extraer el archivo si coincide con una regla +EditRulePanel.fullPathsLabel.text=Rutas completas: +EditRulePanel.daysIncludedLabel.text=dia(s) +EditRulePanel.daysIncludedTextField.text= +EditRulePanel.modifiedDateLabel.text=Modificado dentro de: +EditRulePanel.folderNamesLabel.text=Nombres de carpetas: +EditRulePanel.filenamesLabel.text=Nombres de archivos: +EditRulePanel.extensionsTextField.text= +ConfigureLogicalImagerDialog.jLabel5.text=Nombre de la Regla: +ConfigureLogicalImagerDialog.jLabel6.text=Descripcion: +ConfigureLogicalImagerDialog.ruleNameEditTextField.text= +ConfigureLogicalImagerDialog.descriptionEditTextField.text= +ConfigureLogicalImagerDialog.fullPathsTable.columnModel.title0= +ConfigVisualPanel1.jTextField1.text= +ConfigVisualPanel1.jLabel1.text=Archivo de configuracion +ConfigVisualPanel2.jCheckBox1.text=jCheckBox1 +ConfigVisualPanel2.jCheckBox2.text=jCheckBox2 +ConfigVisualPanel2.jTextField1.text=jTextField1 +ConfigVisualPanel1.jRadioButton1.text=Crear nueva configuracion +ConfigVisualPanel1.jRadioButton2.text=Abrir configuracion existente +ConfigVisualPanel2.modifiedDateLabel.text=Modificado dentro de: +ConfigVisualPanel2.folderNamesLabel.text=Nombres de carpetas: +ConfigVisualPanel2.filenamesLabel.text=Nombres de archivos: +ConfigVisualPanel2.shouldAlertCheckBox.text=Alertar en la consola de la imagen +ConfigVisualPanel2.shouldSaveCheckBox.text=Extraer archivo +ConfigVisualPanel2.deleteRuleButton.text=Eliminar Regla +ConfigVisualPanel2.editRuleButton.text=Editar Regla +ConfigVisualPanel2.newRuleButton.text=Nueva Regla +ConfigVisualPanel2.fullPathsLabel.text=Rutas completas: +ConfigVisualPanel2.daysIncludedLabel.text=dia(s) +ConfigVisualPanel2.filenamesTable.columnModel.title0= +ConfigVisualPanel2.fileSizeLabel.text=Tamanio del archivo en bytes: +ConfigVisualPanel2.extensionsLabel.text=Extensiones: +ConfigVisualPanel2.descriptionLabel.text=Descripcion: +ConfigVisualPanel2.ruleNameLabel.text=Nombre de la regla: +ConfigVisualPanel2.ruleSetFileLabel.text=Archivo de regla de configuracion: +EditRulePanel.ruleNameLabel.text=Conjunto de Reglas: +EditRulePanel.descriptionTextField.text= +EditRulePanel.extensionsLabel.text=Extensiones: +EditRulePanel.ruleNameTextField.text= +EditRulePanel.extensionsCheckBox.text= +EditRulePanel.filenamesCheckBox.text= +EditRulePanel.folderNamesCheckBox.text= +EditRulePanel.fullPathsCheckBox.text= +EditRulePanel.fileSizeCheckBox.text= +EditRulePanel.minDaysCheckBox.text= +EditRulePanel.fileSizeLabel.text=Tamanio del archivo: +EditRulePanel.descriptionLabel.text=Descripcion: +EditRulePanel.jTable1.columnModel.title3=Titulo 4 +EditRulePanel.jTable1.columnModel.title2=Titulo 3 +EditRulePanel.jTable1.columnModel.title1=Titulo 2 +EditRulePanel.shouldAlertCheckBox.actionCommand= +EditFullPathsRulePanel.ruleNameLabel.text=Nombre de la regla: +EditFullPathsRulePanel.shouldAlertCheckBox.actionCommand= +EditFullPathsRulePanel.shouldAlertCheckBox.text=Alertar en la consola de la imagen +EditFullPathsRulePanel.shouldSaveCheckBox.text=Extraer archivo +EditFullPathsRulePanel.fullPathsLabel.text=Rutas completas: +EditFullPathsRulePanel.fullPathsLabel.toolTipText= +EditNonFullPathsRulePanel.ruleNameLabel.text=Nombre de la regla: +EditNonFullPathsRulePanel.shouldSaveCheckBox.text=Extraer archivo +EditNonFullPathsRulePanel.daysIncludedLabel.text=dia(s) +EditNonFullPathsRulePanel.shouldAlertCheckBox.actionCommand= +EditNonFullPathsRulePanel.shouldAlertCheckBox.text=Alertar en la consola de la imagen +ConfigVisualPanel1.browseButton.text=Navegar +ConfigVisualPanel2.fullPathsTable.columnModel.title0= +ConfigVisualPanel2.folderNamesTable.columnModel.title0= +ConfigVisualPanel2.shouldSaveCheckBox.toolTipText= +ConfigVisualPanel2.maxSizeLabel.text=Maximo: +ConfigVisualPanel2.minSizeLabel.text=Minimo: +EditNonFullPathsRulePanel.minDaysTextField.text=jFormattedTextField1 +ConfigVisualPanel1.browseButton.toolTipText= +EditNonFullPathsRulePanel.userFolderNote.text=Comenzar un nombre de carpeta con el token [USER_FOLDER] permitira coincidencias con todas las carpetas de usuario en el sistema de archivos. +EditNonFullPathsRulePanel.modifiedWithinCheckbox.text=Modificado dentro de: +EditNonFullPathsRulePanel.folderNamesCheckbox.text=Nombres de carpetas: +EditNonFullPathsRulePanel.fileNamesCheckbox.text=Nombres de archivos: +EditNonFullPathsRulePanel.extensionsCheckbox.text=Extensiones: +EditNonFullPathsRulePanel.filenamesScrollPane.toolTipText= +EditNonFullPathsRulePanel.maxSizeCheckbox.text=Tamanio maximo: +EditNonFullPathsRulePanel.minSizeCheckbox.text=Tamanio minimo: +EncryptionProgramsRule.encryptionProgramsRuleDescription=Encontrar programas de cifrado +EncryptionProgramsRule.encryptionProgramsRuleName=Programas de Cifrado +LogicalImagerConfigDeserializer.fullPathsException=Una regla con rutas completas no puede tener otras definiciones de reglas +LogicalImagerConfigDeserializer.missingRuleSetException=Falta el conjunto de reglas. +# {0} - key +LogicalImagerConfigDeserializer.unsupportedKeyException=Clave no compatible: {0} +NewRulePanel.chooseLabel.text=Elegir el tipo de regla +ConfigVisualPanel1.configureDriveRadioButton.text_1=Configurar la unidad externa seleccionada: +ConfigVisualPanel1.configureFolderRadioButton.text_1=Configurar en una carpeta: +ConfigVisualPanel1.descriptionTextArea.text=Seleccionar una ubicacion para el Imagen Logica. Esta ubicacion contendra el programa de imagen y un archivo de configuracion. Si esa ubicacion ya contiene un archivo de configuracion, se cargara para editarlo. Los resultados de la imagen se guardaran en esta ubicacion, asi que asegurese de que tenga suficiente espacio libre. Las unidades con formato FAT no son compatibles.. +ConfigVisualPanel1.refreshButton.text=Actualizar +ConfigVisualPanel3.saveButton.text=Guardar +ConfigVisualPanel3.configLabel.text=Estado de guardado del archivo de configuracion del Imagen Logica: +ConfigVisualPanel3.executableLabel.text=Estado de guardado del ejecutable del Imagen Logica: +ConfigVisualPanel3.executableStatusLabel.text= +EditFullPathsRulePanel.jLabel1.text=Descripcion (Opcional): +EditNonFullPathsRulePanel.jLabel2.text=Las coincidencias de nombres de carpetas no distinguen mayusculas y minusculas y ocurren en cualquier lugar de la ruta. +EditNonFullPathsRulePanel.descriptionLabel.text=Descripcion (Opcional): +EditNonFullPathsRulePanel.jLabel1.text=Si se encuentra el archivo: +EditFullPathsRulePanel.jLabel2.text=Si se encuentra el archivo: +ConfigVisualPanel2.flagEncryptionProgramsCheckBox.text=Alertar si se encuentran programas de cifrado +ConfigVisualPanel2.finalizeImageWriter.text=Continuar con la imagen despues de realizar las busquedas +EditNonFullPathsRulePanel.fileNamesInfoLabel.text=Los nombres de archivo no distinguen mayusculas y minusculas. +EditNonFullPathsRulePanel.extensionsInfoLabel.text=Las extensiones no distinguen mayusculas y minusculas.. +ConfigVisualPanel2.promptBeforeExit.text=Pedir confirmacion antes de salir del Imagenador +ConfigVisualPanel2.promptBeforeExit.actionCommand= +ConfigVisualPanel2.createVHDCheckBox.text=Crear VHD +NewRuleSetPanel.attributeRule.description=Buscar archivos basados en uno o mas atributos o campos de metadatos. +NewRuleSetPanel.attributeRule.name=Atributo +NewRuleSetPanel.fullPathRule.description=Buscar archivos basados en una ruta de coincidencia exacta completa. +NewRuleSetPanel.fullPathRule.name=Ruta Completa diff --git a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle_ar.properties new file mode 100644 index 0000000000..307bc728eb --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle_ar.properties @@ -0,0 +1,105 @@ +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. + +AddLogicalImageTask.addImageCancelled=Agregando imagen cancelado +# {0} - file number +# {1} - total files +AddLogicalImageTask.addingExtractedFile=Agregando archivos extraidos ({0}/{1}) +AddLogicalImageTask.addingExtractedFiles=Agregando archivos extraidos +# {0} - file number +# {1} - total files +AddLogicalImageTask.addingInterestingFile=Agregando archivos interesantes ({0}/{1}) +AddLogicalImageTask.addingInterestingFiles=Agregando resultados de busqueda como archivos interesantes +# {0} - file +AddLogicalImageTask.addingToReport=Agregando {0} al informe +# {0} - target image path +AddLogicalImageTask.cannotFindDataSourceObjId=No se puede encontrar el obj_id en tsk_image_names para {0} +# {0} - SearchResults.txt +# {1} - directory +AddLogicalImageTask.cannotFindFiles=No se puede encontrar {0} en {1} +# {0} - src +# {1} - dest +AddLogicalImageTask.copyingImageFromTo=Copiando imagen desde {0} a {1} +# {0} - sparseImageDirectory +AddLogicalImageTask.directoryDoesNotContainSparseImage=El directorio {0} no contiene ninguna imagen +AddLogicalImageTask.doneAddingExtractedFiles=Finalizando la adicion de archivos extraidos +AddLogicalImageTask.doneAddingInterestingFiles=Finalizando la adicion de resultados de busqueda como archivos interesantes +# {0} - file +AddLogicalImageTask.doneAddingToReport=Finalizando la adicion de {0} al informe +AddLogicalImageTask.doneCopying=Finalizando la copia +# {0} - reason +AddLogicalImageTask.failedToAddInterestingFiles=Error al agregar archivos interesantes: {0} +# {0} - file +# {1} - exception message +AddLogicalImageTask.failedToAddReport=Error al agregar el informe {0}. Razon= {1} +# {0} - src +# {1} - dest +AddLogicalImageTask.failedToCopyDirectory=Error al copiar el directorio {0} a {1} +# {0} - reason +AddLogicalImageTask.failedToGetTotalFilesCount=Error al obtener el recuento total de archivos: {0} +# {0} - file +AddLogicalImageTask.failToGetCanonicalPath=Error al obtener la ruta canonica para {0} +AddLogicalImageTask.ingestionCancelled=Ingestion cancelada +AddLogicalImageTask.logicalImagerResults=Resultados del Imagenador Logico +AddLogicalImageTask.noCurrentCase=Sin caso actual +# {0} - line number +# {1} - fields length +# {2} - expected length +AddLogicalImageTask.notEnoughFields=El archivo no contiene suficientes campos en la linea {0}, se obtuvieron {1}, se esperaba {2} +# {0} - file number +# {1} - total files +AddLogicalImageTask.searchingInterestingFile=Buscando archivos interesantes ({0}/{1}) +# {0} - imageFilePath +AddMultipleImagesTask.adding=Agregando: {0} +# {0} - file +AddMultipleImagesTask.addingFileAsLogicalFile=Agregando: {0} como un archivo de espacio no asignado. +AddMultipleImagesTask.cancelled=Cancelacion: Proceso de agregar imagen revertido +# {0} - imageFilePath +# {1} - deviceId +# {2} - exceptionMessage +AddMultipleImagesTask.criticalErrorAdding=Error critico al agregar {0} para el dispositivo {1}: {2} +# {0} - imageFilePath +# {1} - deviceId +# {2} - exceptionMessage +AddMultipleImagesTask.criticalErrorReverting=Error critico al revertir el proceso de agregar imagen para {0} para el dispositivo {1}: {2} +# {0} - deviceId +# {1} - exceptionMessage +AddMultipleImagesTask.errorAddingImgWithoutFileSystem=Error al agregar imagenes sin sistemas de archivos para el dispositivo {0}: {1} +AddMultipleImagesTask.fsTypeUnknownErr=No se puede determinar el tipo de sistema de archivos +# {0} - image path +AddMultipleImagesTask.imageError=Error al agregar la imagen {0} a la base de datos +# {0} - imageFilePath +# {1} - deviceId +# {2} - exceptionMessage +AddMultipleImagesTask.nonCriticalErrorAdding=Error no critico al agregar {0} para el dispositivo {1}: {2} +LogicalImagerDSProcessor.dataSourceType=Resultados del Imagenador Logico Autopsy +LogicalImagerDSProcessor.destinationDirectoryConfirmation=Confirmacion del directorio de destino +# {0} - directory +LogicalImagerDSProcessor.destinationDirectoryConfirmationMsg=El folder del Imagenador Logico {0} ya existe,\n¿desea agregarlo de nuevo usando un nuevo nombre de carpeta? +# {0} - directory +LogicalImagerDSProcessor.directoryAlreadyExists=El directorio {0} ya existe +# {0} - directory +LogicalImagerDSProcessor.failToCreateDirectory=Error al crear el directorio {0} +# {0} - imageDirPath +LogicalImagerDSProcessor.imageDirPathNotFound={0} no encontrado.\nLa unidad USB ha sido expulsada. +LogicalImagerDSProcessor.noCurrentCase=Sin caso actual +LogicalImagerPanel.imageTable.columnModel.title0=Nombre del equipo +LogicalImagerPanel.imageTable.columnModel.title1=Fecha Extraida (GMT) +LogicalImagerPanel.imageTable.columnModel.title2=Ruta +# {0} - sparseImageDirectory +LogicalImagerPanel.messageLabel.directoryDoesNotContainSparseImage=El directorio {0} no contiene ninguna imagen +# {0} - invalidFormatDirectory +LogicalImagerPanel.messageLabel.directoryFormatInvalid=El directorio {0} no coincide con el formato Logical_Imager_HOSTNAME_yyyymmdd_HH_MM_SS +LogicalImagerPanel.messageLabel.driveHasNoImages=La unidad no tiene imagenes +LogicalImagerPanel.messageLabel.noExternalDriveFound=No se encontro unidad +LogicalImagerPanel.messageLabel.noImageSelected=No se ha seleccionado ninguna imagen +LogicalImagerPanel.messageLabel.scanningExternalDrives=Buscando unidades externas para imagenes ... +LogicalImagerPanel.selectAcquisitionFromDriveLabel.text=Seleccionar adquisicion desde unidad +LogicalImagerPanel.selectFromDriveLabel.text=Seleccionar Adquisicion Desde Unidad +LogicalImagerPanel.selectDriveLabel.text=Seleccionar Unidad +LogicalImagerPanel.selectFolderLabel.text=Carpeta Seleccionada: +LogicalImagerPanel.manualRadioButton.text=Elegir Carpeta Manualmente +LogicalImagerPanel.importRadioButton.text=Importar Desde Unidad Externa +LogicalImagerPanel.browseButton.text=Examinar +LogicalImagerPanel.refreshButton.text=Actualizar diff --git a/Core/src/org/sleuthkit/autopsy/machinesettings/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/machinesettings/Bundle_ar.properties new file mode 100644 index 0000000000..28718f5e0a --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/machinesettings/Bundle_ar.properties @@ -0,0 +1,4 @@ +# {0} - path +UserMachinePreferences_validateTempDirectory_errorOnCreate_text=Hubo un error al crear el directorio temporal para la ruta: {0} +# {0} - path +UserMachinePreferences_validateTempDirectory_errorOnReadWrite_text=Hubo un error al leer o escribir en la ruta del directorio temporal: {0} diff --git a/Core/src/org/sleuthkit/autopsy/menuactions/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/menuactions/Bundle_ar.properties new file mode 100644 index 0000000000..7342218ad0 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/menuactions/Bundle_ar.properties @@ -0,0 +1,10 @@ +DataContentDynamicMenu.contentViewers.text=Visores de contenido +DataContentDynamicMenu.mainContentViewer.name=Principal +OpenIDE-Module-Name=MenuActions +DataContentDynamicMenu.menu.dataContentWin.text=Ventanas de contenido de datos +DataContentMenu.getName.text=Menu de contenido de datos +DataExplorerMenu.getName.text=Herramientas de explorador de datos +DataResultMenu.menu.dataResWin.text=Ventanas de resultados de datos +DataResultMenu.getName.text=Menu de resultados de datos +SearchResultMenu.menu.dataRes.text=Resultados de datos +SearchResultMenu.resultViewers.text=Visores de resultados diff --git a/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ar.properties new file mode 100644 index 0000000000..78a68d4d74 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ar.properties @@ -0,0 +1,50 @@ +# {0} - hashName +# {1} - calculatedHashValue +DataSourceIntegrityIngestModule.process.calcHashWithType=
  • Hash {0} calculado: {1}
  • +# {0} - imageName +DataSourceIntegrityIngestModule.process.calculateHashDone=

    Resultados del calculo de hash para {0}

    +# {0} - imageName +DataSourceIntegrityIngestModule.process.errorLoadingHashes=\ Error al cargar los hashes para la imagen {0} desde la base de datos +# {0} - imageName +DataSourceIntegrityIngestModule.process.errorSavingHashes=\ Error al guardar los hashes para la imagen {0} en la base de datos +# {0} - hashName +DataSourceIntegrityIngestModule.process.hashAlgorithmError=Error al crear el resumen del mensaje para el algoritmo {0} +DataSourceIntegrityIngestModule.process.hashesCalculated=\ hashes calculados +# {0} - hashAlgorithm +# {1} - calculatedHashValue +# {2} - storedHashValue +DataSourceIntegrityIngestModule.process.hashFailedForArtifact={0} verificacion del hash fallida:\n Hash calculado: {1}\n Hash almacenado: {2}\n +# {0} - calculatedHashValue +# {1} - storedHashValue +DataSourceIntegrityIngestModule.process.hashList=
    • Hash calculado: {0}
    • Hash almacenado: {1}
    +# {0} - hashName +DataSourceIntegrityIngestModule.process.hashMatch=
  • Verificacion del hash {0} exitosa
  • +# {0} - hashName +DataSourceIntegrityIngestModule.process.hashNonMatch=
  • Verificacion del hash {0} fallida
  • +# {0} - imageName +DataSourceIntegrityIngestModule.process.skipCompute=No se calcularan nuevos hashes para {0} ya que la opcion esta deshabilitada +# {0} - imageName +DataSourceIntegrityIngestModule.process.skipVerify=No se verificaran los hashes existentes para {0} ya que la opcion esta deshabilitada +# {0} - imageName +DataSourceIntegrityIngestModule.process.verificationFailure={0} fallo la verificacion de integridad +# {0} - imageName +DataSourceIntegrityIngestModule.process.verificationSuccess=Integridad de {0} verificada +DataSourceIntegrityIngestModule.startup.noCheckboxesSelected=Al menos una de las casillas debe estar seleccionada +OpenIDE-Module-Name=ewfVerify +DataSourceIntegrityModuleFactory.moduleName.text=Integridad de la Fuente de Datos +DataSourceIntegrityModuleFactory.moduleDesc.text=Calcula y valida los hashes de las fuentes de datos. +DataSourceIntegrityIngestModule.process.errProcImg=Error al procesar {0} +DataSourceIntegrityIngestModule.process.skipNonEwf=Se omiten las fuentes de datos de imagenes no pertenecientes a disco {0} +DataSourceIntegrityIngestModule.process.noStoredHash=La imagen {0} no tiene un hash almacenado. +DataSourceIntegrityIngestModule.process.startingImg=Comenzando {0} +DataSourceIntegrityIngestModule.process.errReadImgAtChunk=Error al leer {0} en el fragmento {1} +DataSourceIntegrityIngestModule.shutDown.verified=\ verificado +DataSourceIntegrityIngestModule.shutDown.notVerified=\ no verificado +DataSourceIntegrityIngestModule.shutDown.verifyResultsHeader=

    Resultados de verificacion de la Fuente de Datos para {0}

    +DataSourceIntegrityIngestModule.shutDown.resultLi=
  • Resultado: {0}
  • +DataSourceIntegrityIngestModule.shutDown.calcHashLi=
  • Hash calculado: {0}
  • +DataSourceIntegrityIngestModule.shutDown.storedHashLi=
  • Hash almacenado: {0}
  • +DataSourceIntegrityIngestSettingsPanel.computeHashesCheckbox.text=Calcular hashes de fuentes de datos si no estan presentes +DataSourceIntegrityIngestSettingsPanel.verifyHashesCheckbox.text=Verificar hashes de fuentes de datos existentes +DataSourceIntegrityIngestSettingsPanel.ingestSettingsLabel.text=Configuracion de Ingesta +DataSourceIntegrityIngestSettingsPanel.noteLabel.text=Tenga en cuenta que este modulo no se ejecutara en archivos logicos diff --git a/Core/src/org/sleuthkit/autopsy/modules/drones/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/drones/Bundle_ar.properties new file mode 100644 index 0000000000..72bd575cb2 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/drones/Bundle_ar.properties @@ -0,0 +1,6 @@ +DATExtractor_process_message=Procesando archivo DAT de DJI: %s +DATFileExtractor_Extractor_Name=Extractor de Archivos DAT +DroneIngestModule_Description=Analiza archivos generados por algunos drones de DJI. +DroneIngestModule_Name=Analizador de Drones DJI +# {0} - AbstractFileName +DroneIngestModule_process_start=Inicio del proceso para {0} diff --git a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ar.properties new file mode 100644 index 0000000000..d21cddf995 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ar.properties @@ -0,0 +1,52 @@ +CannotCreateOutputFolder=No se pudo crear la carpeta de salida. +CannotRunFileTypeDetection=No se pudo ejecutar la deteccion del tipo de archivo. +EmbeddedFileExtractor_make_output_dir_err=Error al crear el directorio de salida del modulo para el Extractor de Archivos Empotrados. +EmbeddedFileExtractorIngestModule.ArchiveExtractor.moduleDesc.text=Extrae archivos empotrados (doc, docx, ppt, pptx, xls, xlsx, zip, rar, arj, 7z, gzip, bzip2, tar), los programa para su ingestion y popula el arbol de directorios con ellos. +EmbeddedFileExtractorIngestModule.ArchiveExtractor.moduleName=Extractor de Archivos Empotrados +EmbeddedFileExtractorIngestModule.NoOpenCase.errMsg=No hay un caso abierto disponible. +EmbeddedFileExtractorIngestModule.UnableToGetMSOfficeExtractor.errMsg=No se pudo obtener el extractor de contenido MSOfficeEmbeddedContentExtractor. +ExtractArchiveWithPasswordAction.extractFailed.title=Error al Desempaquetar Archivos con Contraseña +ExtractArchiveWithPasswordAction.name.text=Descomprimir contenido con contraseña +# {0} - archiveFile +ExtractArchiveWithPasswordAction.progress.text=Desempaquetando contenido del archivo: {0} +ExtractArchiveWithPasswordAction.prompt.text=Ingrese la contraseña +ExtractArchiveWithPasswordAction.prompt.title=Ingrese la contraseña +OpenIDE-Module-Display-Category=Modulo de Ingesta +OpenIDE-Module-Long-Description=\ + Modulo de Ingesta para la Extraccion de Archivos Empotrados\n\nEl Modulo de Ingesta para la Extraccion de Archivos Empotrados procesa archivos de documentos (como doc, docx, ppt, pptx, xls, xlsx) y archivos de tipo comprimido (como zip y otros tipos de archivos soportados por el extractor 7zip).\n\ + Los contenidos de estos archivos son extraidos y los archivos derivados se agregan nuevamente a la ingestion actual para ser procesados por los modulos de ingestion configurados.\n\ + Si el archivo derivado resulta ser un archivo de tipo comprimido, sera procesado nuevamente por el extractor 7zip, el cual procesara archivos comprimidos a niveles N.\n\n\ + Los archivos extraidos son navegables en el arbol de directorios.\n\n\ + El modulo es compatible con los sistemas operativos Windows, Linux y Mac. +OpenIDE-Module-Name=Extraccion de Archivos Empotrados +OpenIDE-Module-Short-Description=Modulo de Ingesta para Extraccion de Archivos Empotrados +EmbeddedFileExtractorIngestModule.SevenZipContentReadStream.seek.exception.invalidOrigin=Origen de busqueda no valido: {0} +EmbeddedFileExtractorIngestModule.SevenZipContentReadStream.read.exception.errReadStream=Error al leer la secuencia de contenido. +EmbeddedFileExtractorIngestModule.ArchiveExtractor.encryptionFileLevel=Cifrado solo de contenido (Archivo comprimido) +EmbeddedFileExtractorIngestModule.ArchiveExtractor.init.errInitModule.details=Error al inicializar el directorio de salida: {0}: {1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.isZipBombCheck.warnMsg=Posible deteccion de "bomba ZIP" en el archivo: {0}, elemento: {1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.isZipBombCheck.warnDetails=La relacion de compresion es {0}, saltando elementos en {1}. +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.warnMsg.zipBomb=Posible deteccion de "bomba ZIP": {0} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.warnDetails.zipBomb=El archivo comprimido tiene {0} niveles de profundidad, omitiendo el procesamiento de {1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.notEnoughDiskSpace.msg=Espacio en disco insuficiente para desempaquetar el elemento del archivo: {0}, {1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.notEnoughDiskSpace.details=El elemento del archivo comprimido es demasiado grande para desempaquetar, omitiendo el desempaquetado de este elemento. +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.errUnpacking.msg=Error al desempaquetar {0} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.errUnpacking.details=Error al desempaquetar {0}. {1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.encrFileDetected.msg=Archivos cifrados detectados en el archivo comprimido. +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.encrFileDetected.details=Algunos archivos en el archivo comprimido: {0} estan cifrados. El extractor {1} no pudo extraer todos los archivos de este archivo. +EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackStream.write.exception.msg=Error al escribir el archivo desempaquetado en: {0} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackedTree.exception.msg=Error al agregar un archivo derivado a la base de datos: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.docContainer.init.err=No se pudo inicializar el contenedor de Doc al leer +EmbeddedFileExtractorIngestModule.ImageExtractor.docxContainer.init.err=No se pudo inicializar el contenedor de Docx al leer: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.pptContainer.init.err=No se pudo inicializar el contenedor de Ppt al leer: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.pptxContainer.init.err=No se pudo inicializar el contenedor de Pptx al leer: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.xlsContainer.init.err=No se pudo inicializar el contenedor de Xls al leer: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.xlsxContainer.init.err=No se pudo inicializar el contenedor de Xlsx al leer: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.extractImage.addToDB.exception.msg=No se pueden agregar los archivos derivados a la base de datos. +EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackStream.write.noSpace.msg=No se puede escribir el contenido en el disco. Espacio insuficiente. +SevenZipContentReadStream.seek.exception.invalidOrigin=Origen no valido {0} +SevenZipContentReadStream.read.exception.errReadStream=Error al leer la secuencia +SevenZipExtractor.indexError.message=Error al indexar el artefacto con deteccion de cifrado para la busqueda de palabras clave. +# {0} - rootArchive +SevenZipExtractor.zipBombArtifactCreation.text=Se detecto una "bomba ZIP" {0} +UnableToInitializeLibraries=No se pueden inicializar las bibliotecas de 7Zip. diff --git a/Core/src/org/sleuthkit/autopsy/modules/encryptiondetection/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/encryptiondetection/Bundle_ar.properties new file mode 100644 index 0000000000..2e531e646a --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/encryptiondetection/Bundle_ar.properties @@ -0,0 +1,17 @@ +EncryptionDetectionDataSourceIngestModule.artifactComment.bitlocker=Se detecto cifrado Bitlocker. +EncryptionDetectionDataSourceIngestModule.artifactComment.suspected=Cifrado sospechoso debido a alta entropia (%f). +EncryptionDetectionDataSourceIngestModule.processing.message=Verificando imagen en busca de cifrado. +EncryptionDetectionFileIngestModule.artifactComment.password=Se detecto proteccion por contraseña. +EncryptionDetectionFileIngestModule.artifactComment.suspected=Cifrado sospechoso debido a alta entropia (%f). +EncryptionDetectionFileIngestModule.getDesc.text=Busca archivos con una entropia minima especificada. +EncryptionDetectionFileIngestModule.moduleName.text=Deteccion de cifrado +EncryptionDetectionIngestJobSettingsPanel.minimumEntropyLabel.text=Entropia minima: +EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeLabel.text=Tamaño minimo de archivo: +EncryptionDetectionIngestJobSettingsPanel.fileSizeMultiplesEnforcedCheckbox.text=Considerar solo tamaños de archivo que sean multiplos de 512. +EncryptionDetectionIngestJobSettingsPanel.slackFilesAllowedCheckbox.text=Considerar archivos de espacio libre (slack space). +EncryptionDetectionIngestJobSettingsPanel.mbLabel.text=MB +EncryptionDetectionIngestJobSettingsPanel.detectionSettingsLabel.text=Configuracion de deteccion +EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeTextbox.text= +EncryptionDetectionIngestJobSettingsPanel.minimumEntropyTextbox.text= +EncryptionDetectionTools.errorMessage.minimumEntropyInput=El valor de la entropia minima debe ser un numero entre 6.0 y 8.0. +EncryptionDetectionTools.errorMessage.minimumFileSizeInput=El valor del tamaño minimo de archivo debe ser un numero entero (en megabytes) igual o mayor a 1. diff --git a/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/Bundle_ar.properties new file mode 100644 index 0000000000..5726242141 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/Bundle_ar.properties @@ -0,0 +1,64 @@ +AddFileExtensionAction.writeError.message=No se pudo escribir la configuracion de extensiones de archivo. +CannotRunFileTypeDetection=No se puede ejecutar la deteccion del tipo de archivo. +FileExtMismatchIngestModule.indexError.message=Error al indexar el artefacto de extension de archivo incorrecta para la busqueda por palabras clave. +FileExtMismatchIngestModule.readError.message=No se pudo leer la configuracion. +FileExtMismatchSettingsPanel.Title=Configuracion Global de Identificacion de Extensiones de Archivo Incorrectas +OpenIDE-Module-Name=FileExtMismatch +OptionsCategory_Name_FileExtMismatchOptions=Extensiones de Archivo Incorrectas +OptionsCategory_FileExtMismatch=Extensiones de Archivo Incorrectas +AddFileExtensionAction.msgDlg.msg2=No se pudo leer la configuracion de las extensiones de archivo incorrectas, no esta disponible la actualizacion de extensiones. +AddFileExtensionAction.msgDlg.title=Error al Agregar Extension Incorrecta +AddFileExtensionAction.extHeaderLbl.text=Extensiones Permitidas para +FileExtMismatchConfigPanel.store.msg=Guardado. +FileExtMismatchConfigPanel.store.msgDlg.msg=No se pudo guardar la configuracion de las extensiones de archivo incorrectas. +FileExtMismatchConfigPanel.save.msgDlg.title=Error al Guardar +FileExtMismatchConfigPanel.ok.confDlg.msg=¿Deseas guardar los cambios de configuracion? +FileExtMismatchConfigPanel.confDlg.title=Cambios sin Guardar +FileExtMismatchConfigPanel.mimeTableModel.colName=Tipo MIME +FileExtMismatchConfigPanel.extTableModel.colName=Extension +FileExtMismatchContextMenuActionsProvider.menuItemStr=Agregar extension {0} como tipo MIME coincidente {1} +FileExtMismatchIngestModule.moduleName=Detector de Extensiones de Archivo Incorrectas +FileExtMismatchIngestModule.moduleDesc.text=Marca los archivos que tienen una extension no estandar basada en su tipo de archivo. +FileExtMismatchIngestModule.complete.totalProcTime=Tiempo Total de Procesamiento +FileExtMismatchIngestModule.complete.totalFiles=Total de Archivos Procesados +FileExtMismatchIngestModule.complete.svcMsg.text=Resultados de Extensiones de Archivo Incorrectas +FileExtMismatchOptionsPanelController.moduleErr=Error del Modulo +FileExtMismatchOptionsPanelController.moduleErr.msg=Un modulo ha causado un error al escuchar las actualizaciones del Controlador de Opciones de Extensiones de Archivo Incorrectas. Consulta el registro para determinar que modulo. Algunos datos podrian estar incompletos. +FileExtMismatchModuleSettingsPanel.skipNoExtCheckBox.text=Omitir archivos sin extensiones +FileExtMismatchSettingsPanel.extHeaderLabel.text=Extensiones Permitidas: +FileExtMismatchSettingsPanel.removeExtButton.text=Eliminar Extension +FileExtMismatchDetectorModuleFactory.getIngestJobSettingsPanel.exception.msg=Se esperaba que el argumento de configuracion fuera una instancia de FileExtMismatchDetectorModuleSettings +FileExtMismatchDetectorModuleFactory.createFileIngestModule.exception.msg=Se esperaba que el argumento de configuracion fuera una instancia de FileExtMismatchDetectorModuleSettings +FileExtMismatchModuleSettingsPanel.skipKnownFiles.text=Omitir archivos conocidos +FileExtMismatchSettingsPanel.removeTypeButton.text=Eliminar Tipo +FileExtMismatchSettingsPanel.newTypeButton.text=Nuevo Tipo +FileExtMismatchSettingsPanel.jLabel1.text=Tipos de Archivo: +FileExtMismatchSettingsPanel.newExtButton.text=Nueva Extension +FileExtMismatchSettingsPanel.newMimePrompt.message=Agregar un nuevo tipo de archivo MIME: +FileExtMismatchSettingsPanel.newMimePrompt.title=Nuevo MIME +FileExtMismatchSettingsPanel.newMimePrompt.emptyMime.message=El texto del tipo MIME esta vacio\. +FileExtMismatchSettingsPanel.newMimePrompt.emptyMime.title=Tipo vacio +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeNotSupported.message=¡Tipo MIME no soportado\! +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeNotSupported.title=Tipo no soportado +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeExists.message=¡El tipo MIME ya existe\! +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeExists.title=Tipo ya existe +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeNotDetectable.message=El tipo MIME no es detectable por este modulo. +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeNotDetectable.title=Tipo no detectable +FileExtMismatchSettingsPanel.removeTypeButton.noneSelected.message=¡Ningun tipo MIME seleccionado\! +FileExtMismatchSettingsPanel.removeTypeButton.noneSelected.title=Ningun tipo seleccionado +FileExtMismatchSettingsPanel.newExtPrompt.message=Agregar una extension permitida: +FileExtMismatchSettingsPanel.newExtPrompt.title=Nueva extension permitida +FileExtMismatchSettingsPanel.newExtPrompt.empty.message=¡El texto de la extension esta vacio\! +FileExtMismatchSettingsPanel.newExtPrompt.empty.title=Texto de extension vacio +FileExtMismatchSettingsPanel.newExtPrompt.noMimeType.message=¡Ningun tipo MIME seleccionado\! +FileExtMismatchSettingsPanel.newExtPrompt.noMimeType.title=Ningun tipo MIME seleccionado +FileExtMismatchSettingsPanel.newExtPrompt.extExists.message=¡La extension ya existe\! +FileExtMismatchSettingsPanel.newExtPrompt.extExists.title=Extension ya existe +FileExtMismatchSettingsPanel.removeExtButton.noneSelected.message=¡Ninguna extension seleccionada\! +FileExtMismatchSettingsPanel.removeExtButton.noneSelected.title=Ninguna extension seleccionada +FileExtMismatchSettingsPanel.removeExtButton.noMimeTypeSelected.message=¡Ningun tipo MIME seleccionado\! +FileExtMismatchSettingsPanel.removeExtButton.noMimeTypeSelected.title=Ningun tipo MIME seleccionado +FileExtMismatchSettingsPanel.removeTypeButton.toolTipText= +FileExtMismatchModuleSettingsPanel.checkAllRadioButton.text=Verificar todos los tipos de archivo +FileExtMismatchModuleSettingsPanel.checkNoTextRadioButton.text=Verificar todos los tipos de archivo excepto los archivos de texto +FileExtMismatchModuleSettingsPanel.checkMediaExeRadioButton.text=Verificar solo archivos multimedia y ejecutables diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ar.properties new file mode 100644 index 0000000000..6f82c12bb9 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ar.properties @@ -0,0 +1,75 @@ +# {0} - nombre del tipo +AddFileTypePanel.containsIllegalCharacter.message=Caracter invalido en el tipo MIME, se sugiere {0} en su lugar. +AddFileTypePanel.containsIllegalCharacter.title=Caracter Invalido en el Tipo MIME +AddFileTypePanel.mimeFormatLabel.text=El formato del tipo MIME debe ser: tipo-medio/subtipo-medio +# {0} - subtipo-medio +AddFileTypePanel.nonStandardMIMEType.message=El tipo MIME debe tener el formato: tipo-medio/subtipo-medio. Se sugiere Custom/{0} en su lugar. +AddFileTypePanel.nonStandardMIMEType.title=Tipo MIME No Estandar +AddFileTypeSignatureDialog.addButton.title=OK +AddFileTypeSignatureDialog.cancelButton.title=Cancelar +AddFileTypeSignatureDialog.invalidSignature.message=Firma invalida +AddFileTypeSignaturePanel.signatureStringFail.text=No se pudo obtener la cadena de firmas +AddMimeTypeDialog.addButton.title=OK +AddMimeTypeDialog.cancelButton.title=Cancelar +AddMimeTypedialog.title=Tipo de Archivo +AddMimeTypePanel.emptySetName.message=Es necesario un nombre para el conjunto de archivos interesantes si se solicita una alerta. +AddMimeTypePanel.emptySetName.title=Nombre del Conjunto de Archivos Interesantes Faltante +AddMimeTypePanel.emptySigList.message=Debe tener al menos una firma. +AddMimeTypePanel.emptySigList.title=Lista de Firmas Invalida +CannotRunFileTypeDetection=No se puede ejecutar la deteccion del tipo de archivo. +FileTypeIdGlobalSettingsPanel.Title=Configuracion Global de Identificacion de Tipos de Archivo +OptionsCategory_Name_FileTypeId=Tipos de Archivos +OptionsCategory_Keywords_FileTypeId=FileTypeId +OpenIDE-Module-Name=FileTypeId +FileTypeIdIngestModule.moduleName.text=Identificacion de Tipo de Archivo +FileTypeIdIngestModule.moduleDesc.text=Corresponde a los tipos de archivo basados en firmas binarias. +FileTypeIdIngestModule.complete.totalProcTime=Tiempo Total de Procesamiento +FileTypeIdIngestModule.complete.totalFiles=Total de Archivos Procesados +FileTypeIdIngestModule.complete.srvMsg.text=Resultados de la Identificacion de Tipos de Archivo +FileTypeIdModuleFactory.getIngestJobSettingsPanel.exception.msg=Se esperaba que el argumento de configuracion fuera instancia de FileTypeIdModuleSettings +FileTypeIdModuleFactory.createFileIngestModule.exception.msg=Se esperaba que el argumento de configuracion fuera instancia de FileTypeIdModuleSettings +FileTypeIdIngestJobSettingsPanel.skipKnownCheckBox.toolTipText=Dependiendo de cuantos archivos tengan hash conocido, marcar esta casilla mejorara la velocidad de identificacion de tipos de archivo. +FileTypeIdIngestJobSettingsPanel.skipKnownCheckBox.text=Saltar archivos conocidos (NSRL) +FileTypeIdGlobalSettingsPanel.deleteTypeButton.text=Eliminar Tipo +FileTypeIdGlobalSettingsPanel.signatureComboBox.rawItem=Bytes (Hex) +FileTypeIdGlobalSettingsPanel.signatureComboBox.asciiItem=Cadena (ASCII) +FileTypeIdGlobalSettingsPanel.offsetComboBox.startItem=Inicio +FileTypeIdGlobalSettingsPanel.offsetComboBox.endItem=Fin +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidMIMEType.message=Se requiere el tipo MIME. +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidMIMEType.title=Tipo MIME Faltante +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidSignature.message=Se requiere la firma. +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidSignature.title=Firma Faltante +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidOffset.length=El desplazamiento no debe ser menor que el tamaño de la firma. +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidOffset.message=El desplazamiento debe ser un numero entero positivo. +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidOffset.title=Desplazamiento Invalido +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidRawSignatureBytes.message=La firma tiene uno o mas digitos hexadecimales invalidos. +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidSignatureBytes.title=Firma Invalida +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidInterestingFilesSetName.message= +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidInterestingFilesSetName.title=Nombre del Conjunto de Archivos Interesantes Faltante +FileTypeIdGlobalSettingsPanel.JOptionPane.storeFailed.title=Error al Guardar +FileTypeIdGlobalSettingsPanel.JOptionPane.loadFailed.title=Error al Cargar +FileTypeIdGlobalSettingsPanel.loadFileTypes.errorMessage=Error al cargar las definiciones de tipos de archivo existentes. +FileTypeIdGlobalSettingsPanel.saveFileTypes.errorMessage=Error al guardar las definiciones de tipos de archivo. +FileTypeIdGlobalSettingsPanel.newTypeButton.text=Nuevo Tipo +FileTypeIdGlobalSettingsPanel.startUp.fileTypeDetectorInitializationException.msg=Error al inicializar el detector de tipos de archivo. +AddFileTypeSignaturePanel.offsetLabel.text=Desplazamiento de Byte +AddFileTypeSignaturePanel.signatureTextField.text= +AddFileTypeSignaturePanel.signatureTypeLabel.text=Tipo de Firma +AddFileTypeSignaturePanel.signatureLabel.text=Firma +AddFileTypeSignaturePanel.hexPrefixLabel.text=0x +AddFileTypeSignaturePanel.offsetRelativeToLabel.text=El desplazamiento es relativo a +AddFileTypeSignaturePanel.offsetTextField.text= +FileTypeIdGlobalSettingsPanel.editTypeButton.text=Editar Tipo +AddFileTypePanel.mimeTypeTextField.text= +AddFileTypePanel.mimeTypeLabel.text=Tipo MIME +AddFileTypePanel.deleteSigButton.text=Eliminar Firma +AddFileTypePanel.jLabel1.text=Firmas +AddFileTypePanel.editSigButton.text=Editar Firma +AddFileTypePanel.addSigButton.text=Agregar Firma +AddFileTypePanel.postHitCheckBox.text=Alertar como un "Archivo Interesante" cuando se encuentre +AddFileTypePanel.setNameLabel.text=Nombre del Conjunto +AddFileTypePanel.setNameTextField.text= +FileTypeIdGlobalSettingsPanel.ingestRunningWarningLabel.text=¡No se pueden realizar cambios en las definiciones de tipos de archivo cuando se esta ejecutando la ingestion! +FileTypeIdGlobalSettingsPanel.descriptionLabel.text=Autopsy puede detectar automaticamente muchos tipos de archivo. Agrega tus tipos de archivo personalizados aqui. +FileTypeIdGlobalSettingsPanel.customTypesLabel.text=Tipos MIME Personalizados: +FileTypeIdGlobalSettingsPanel.signaturesLabel.text=Firmas diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ar.properties new file mode 100644 index 0000000000..256a881a06 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ar.properties @@ -0,0 +1,303 @@ +HashDbCreateDatabaseDialog.databaseCreationError=Error al crear nuevo conjunto de hash +HashDbCreateDatabaseDialog.databaseLookupError=Error al acceder al repositorio central +HashDbCreateDatabaseDialog.duplicateName=Ya existe un conjunto de hash con este nombre +HashDbCreateDatabaseDialog.missingOrg=Debe seleccionarse una organizacion +HashDbCreateDatabaseDialog.populateOrgsError.message=Error al cargar las organizaciones. +HashDbImportDatabaseDialog.databaseLookupError=Error al acceder al repositorio central +HashDbImportDatabaseDialog.duplicateName=Ya existe un conjunto de hash con este nombre y version +HashDbImportDatabaseDialog.missingOrg=Debe seleccionarse una organizacion +HashDbImportDatabaseDialog.missingVersion=Debe ingresarse una version +HashDbImportDatabaseDialog.mustEnterHashSetNameMsg=Debe ingresar un nombre de conjunto de hash. +HashDbImportDatabaseDialog.populateOrgsError.message=Error al cargar las organizaciones. +HashDbIngestModule.complete.noChangesFound=No se encontraron elementos de cambio: +# {0} - Nombre de archivo +HashDbIngestModule.dialogTitle.errorFindingArtifacts=Error al encontrar artefactos: {0} +# {0} - Nombre de archivo +HashDbIngestModule.errorMessage.lookingForFileArtifacts=Error encontrado al buscar artefactos existentes para {0}. +HashDbIngestModule.indexError.message=Error al indexar artefacto de impacto de conjunto de hash para la busqueda por palabra clave. +HashDbIngestModule.knownBadFileSearchWillNotExecuteWarn=La busqueda de archivos destacados no se ejecutara. +HashDbIngestModule.knownFileSearchWillNotExecuteWarn=La busqueda de archivos conocidos no se ejecutara. +# {0} - Nombre de archivo +HashDbIngestModule.lookingUpKnownBadHashValueErr=Error al buscar el valor destacado de conjunto de hash para {0}. +# {0} - Nombre de archivo +HashDbIngestModule.lookingUpKnownHashValueErr=Error al buscar el valor conocido de conjunto de hash para {0}. +# {0} - Nombre de archivo +HashDbIngestModule.lookingUpNoChangeHashValueErr=Error al buscar el valor de conjunto de hash sin cambios para {0}. +HashDbIngestModule.noKnownBadHashDbSetMsg=No hay conjunto de hash destacado. +HashDbIngestModule.noKnownHashDbSetMsg=No hay conjunto de hash conocido. +HashDbManager.CentralRepoHashDb.orgError=Error al cargar la organizacion +HashDbManager.centralRepoLoadError.message=Error al cargar conjuntos de hash del repositorio central +HashDbManager.known.text=Conocidos +HashDbManager.knownBad.text=Destacados +HashDbManager.noChange.text=Sin Cambios +# {0} - Nombre del conjunto de hash +HashDbManager.noDbPath.message=No se pudo obtener la ruta valida del conjunto de hash para: {0} +# {0} - Nombre del conjunto de hash +HashDbManager_handleNameConflict_conflictSuffix={0} (Personalizado) +HashDbSearchAction.noOpenCase.errMsg=No hay un caso abierto disponible. +HashDbSearchPanel.noOpenCase.errMsg=No hay un caso abierto disponible. +HashLookupSettingsPanel.centralRepo=Repositorio Central +HashLookupSettingsPanel.editable=Editable +HashLookupSettingsPanel.indexNsrl.text=Este conjunto de hash parece ser el NSRL, se eliminara de la lista.\n +HashLookupSettingsPanel.indexNsrl.title=El NSRL no sera indexado +HashLookupSettingsPanel.notApplicable=N/A +HashLookupSettingsPanel.promptMessage.deleteHashDb=Esto hara que la base de datos de hash no este disponible para buscar. ¿Deseas continuar?\n\nNota: La base de datos de hash aun se puede volver a importar mas tarde. +HashLookupSettingsPanel.promptTitle.deleteHashDb=Eliminar base de datos de hash de la configuracion +HashLookupSettingsPanel.readOnly=Solo lectura +# {0} - Nombre de busqueda de hash +HashLookupSettingsPanel.removeDatabaseFailure.message=Error al eliminar la busqueda de hash: {0} +# {0} - Direccion URL de nsrl +HashLookupSettingsPanel.removeUnindexedNsrl.text=En lugar de indexar el NSRL, descarga una version ya indexada disponible aqui:\n{0} +HashLookupSettingsPanel.removeUnindexedNsrl.title=Se eliminara el/los NSRL no indexado(s) +HashLookupSettingsPanel.saveFail.message=No se pudieron guardar los ajustes del conjunto de hash. +HashLookupSettingsPanel.saveFail.title=Error al guardar +HashLookupSettingsPanel.Title=Ajustes Globales de Busqueda de Hash +# {0} - Conjunto de hash nsrl +HashLookupSettingsPanel.unindexedNsrl.base=El siguiente conjunto de hash parece ser una version no indexada del NSRL, se eliminara de la lista.\nConjunto de hash:{0}\n +# {0} - Conjuntos de hash nsrl +HashLookupSettingsPanel.unindexedNsrls.base=Los siguientes conjuntos de hash parecen ser versiones no indexadas del NSRL, se eliminaran de la lista.\nConjuntos de hash:{0}\n +HashLookupSettingsPanel.updateStatusError=Error al leer el estado +ImportCentralRepoDbProgressDialog.errorParsingFile.message=Error al analizar el archivo del conjunto de hash +ImportCentralRepoDbProgressDialog.linesProcessed.message=\ conjuntos de hash procesados +ImportCentralRepoDbProgressDialog.title.text=Progreso de Importacion del Repositorio Central +OpenIDE-Module-Display-Category=Modulo de Ingesta +OpenIDE-Module-Long-Description=\ + Modulo de ingestion de conjuntos de hash. \n\n\ + El modulo de ingestion analiza los archivos en la imagen del disco y los marca como "conocidos" (basados en la busqueda de conjuntos de hash NSRL para archivos "conocidos") y "malos / interesantes" (basados en uno o mas conjuntos de hash proporcionados por el usuario).\n\n\ + El modulo tambien contiene herramientas adicionales que no son de ingestion y que estan integradas en la interfaz grafica, como la busqueda de archivos por hash y la configuracion de conjuntos de hash. +OpenIDE-Module-Name=HashDatabases +OptionsCategory_Name_HashDatabase=Conjuntos de Hash +OptionsCategory_Keywords_HashDatabase=Conjuntos de Hash +HashDbSearchPanel.hashTable.columnModel.title0=Hashes MD5 +HashDbSearchPanel.addButton.text=Añadir Hash +HashDbSearchPanel.hashField.text= +HashDbSearchPanel.hashLabel.text=Hash MD5: +HashDbSearchPanel.searchButton.text=Buscar +HashDbSearchPanel.removeButton.text=Eliminar Seleccionado +HashDbSearchPanel.titleLabel.text=Buscar archivos con el siguiente(s) hash(es) MD5: +HashDbSearchPanel.errorField.text=Error: No todos los archivos han sido hasheados. +HashDbSearchPanel.saveBox.text=Recordar Hashes +HashDbSearchPanel.cancelButton.text=Cancelar +OpenIDE-Module-Short-Description=Modulo de Ingestion de Conjuntos de Hash y herramientas de conjuntos de hash +HashDbImportDatabaseDialog.jLabel1.text=Nombre: +HashDbImportDatabaseDialog.databasePathTextField.text= +HashDbImportDatabaseDialog.knownBadRadioButton.text=Notable +HashDbImportDatabaseDialog.jLabel2.text=Tipo de conjunto de hash: +HashDbImportDatabaseDialog.okButton.text=OK +HashDbImportDatabaseDialog.cancelButton.text=Cancelar +HashDbCreateDatabaseDialog.jLabel2.text=Tipo: +HashDbCreateDatabaseDialog.knownBadRadioButton.text=Notable +HashDbCreateDatabaseDialog.cancelButton.text=Cancelar +ModalNoButtons.CURRENTDB_LABEL.text=(Base de Datos Actual) +ModalNoButtons.CURRENTLYON_LABEL.text=Indexando actualmente x de y +ModalNoButtons.GO_GET_COFFEE_LABEL.text=Los conjuntos de hash se estan indexando actualmente, esto puede llevar algo de tiempo. +ModalNoButtons.CANCEL_BUTTON.text=Cancelar +HashDbImportDatabaseDialog.knownRadioButton.text=Conocido (NSRL u otro) +HashDbCreateDatabaseDialog.knownRadioButton.text=Conocido +HashDbCreateDatabaseDialog.saveAsButton.text=Guardar Como... +HashDbCreateDatabaseDialog.hashSetNameTextField.text= +HashDbImportDatabaseDialog.jLabel3.text=Ruta del Conjunto de Hash: +HashDbCreateDatabaseDialog.sendIngestMessagesCheckbox.text=Enviar mensajes de ingestion para cada coincidencia +HashDbImportDatabaseDialog.sendIngestMessagesCheckbox.text=Enviar mensaje de ingestion para cada coincidencia +HashDbImportDatabaseDialog.hashSetNameTextField.text= +HashDbImportDatabaseDialog.openButton.text=Abrir... +HashDbCreateDatabaseDialog.jLabel3.text=Nombre: +HashDbCreateDatabaseDialog.okButton.text=OK +HashDbCreateDatabaseDialog.databasePathTextField.text= +AddContentToHashDbAction.ContentMenu.noHashDbsConfigd=No hay conjuntos de hash configurados +AddContentToHashDbAction.ContentMenu.createDbItem=Crear conjunto de hash... +AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr1.text=Error al añadir al conjunto de hash +AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr2.text=Error al añadir al conjunto de hash +AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr3.text=Error al añadir al conjunto de hash +AddContentToHashDbAction.addFilesToHashSet.unableToAddFileMsg=No se puede añadir {0} al conjunto de hash. +AddContentToHashDbAction.addFilesToHashSet.unableToAddFileEmptyMsg=No se puede añadir {0} al conjunto de hash. El archivo no tiene contenido. +AddContentToHashDbAction.addFilesToHashSet.unableToAddFileSzMsg=No se puede añadir {0} al conjunto de hash. Los hashes no han sido calculados. Por favor, configure y ejecute un modulo de ingestion apropiado. +HashDatabaseOptionsPanelController.moduleErr=Error de Modulo +HashDatabaseOptionsPanelController.moduleErrMsg=Un modulo causo un error al escuchar las actualizaciones de HashDatabaseOptionsPanelController. Verifique el registro para determinar cual modulo. Algunos datos podrian estar incompletos. +HashDbConfigPanel.noSelectionText= +HashDbConfigPanel.errorGettingPathText=Se produjo un error al obtener la ruta +HashDbConfigPanel.errorGettingIndexStatusText=Se produjo un error al obtener el estado +HashDbConfigPanel.indexButtonText.index=Indexar +HashDbConfigPanel.indexButtonText.indexing=Indexando +HashDbConfigPanel.indexStatusText.indexGen=El indice se esta generando actualmente +HashDbConfigPanel.indexStatusText.indexOnly=Solamente indice +HashDbConfigPanel.indexStatusText.indexed=Indexado +HashDbConfigPanel.indexButtonText.reIndex=Re-Indexar +HashDbConfigPanel.indexStatusText.noIndex=Sin indice +HashDbConfigPanel.dbsNotIndexedMsg=Los siguientes conjuntos de hash no estan indexados, ¿desea indexarlos ahora? \n {0} +HashDbConfigPanel.dbNotIndexedMsg=El siguiente conjunto de hash no esta indexado, ¿desea indexarlo ahora? \n{0} +HashDbConfigPanel.unindexedDbsMsg=Conjuntos de hash no indexados +HashDbConfigPanel.allUnindexedDbsRmFromListMsg=Todos los conjuntos de hash no indexados seran eliminados de la lista +HashDbConfigPanel.nameColLbl=Nombre +HashDbConfigPanel.editingCellsNotSupportedMsg=La edicion de celdas no esta soportada +HashDbCreateDatabaseDialog.defaultFileName=hashset +HashDbCreateDatabaseDialog.createHashDbMsg=Crear conjunto de hash +HashDbCreateDatabaseDialog.hashDbMustHaveFileExtensionMsg=El archivo del conjunto de hash debe tener una extension .{0}. +HashDbCreateDatabaseDialog.fileNameErr=Error en el nombre del archivo +HashDbCreateDatabaseDialog.fileNameAlreadyExistsMsg=Ya existe un archivo con este nombre. Por favor, elige un nuevo nombre de archivo. +HashDbCreateDatabaseDialog.fileExistsErr=Error de archivo ya existente +HashDbCreateDatabaseDialog.mustEnterHashSetNameMsg=Debes ingresar un nombre para el conjunto de hash. +HashDbCreateDatabaseDialog.createHashDbErr=Error al crear conjunto de hash +HashDbCreateDatabaseDialog.mustEnterHashDbPathMsg=Debes ingresar una ruta para el conjunto de hash. +HashDbCreateDatabaseDialog.errMsg.hashDbCreationErr=Error en la creacion del conjunto de hash +HashDbCreateDatabaseDialog.cannotCreateFileAtLocMsg=No se puede crear un archivo de conjunto de hash en la ubicacion seleccionada. +HashDbCreateDatabaseDialog.failedToCreateHashDbMsg=No se pudo crear el conjunto de hash. +HashDbImportDatabaseDialog.importHashDbMsg=Importar conjunto de hash +HashDbImportDatabaseDialog.fileNameExtFilter.text=Archivo de conjunto de hash +HashDbImportDatabaseDialog.failedToGetDbPathMsg=No se pudo obtener la ruta del conjunto de hash seleccionado. +HashDbImportDatabaseDialog.importHashDbErr=Error al importar el conjunto de hash +HashDbImportDatabaseDialog.mustSelectHashDbFilePathMsg=Debes seleccionar la ruta del archivo de conjunto de hash. +HashDbImportDatabaseDialog.hashDbDoesNotExistMsg=El conjunto de hash seleccionado no existe. +HashDbImportDatabaseDialog.unableToCopyToUserDirMsg=No se puede copiar el conjunto de hash al directorio de configuracion del usuario {0}. +HashDbImportDatabaseDialog.errorMessage.failedToOpenHashDbMsg=No se pudo abrir el conjunto de hash en {0}. +HashLookupModuleFactory.moduleName.text=Busqueda de hash +HashLookupModuleFactory.moduleDescription.text=Identifica archivos conocidos y destacados utilizando conjuntos de hash suministrados, como un conjunto de hash estandar de NSRL. +HashDbIngestModule.fileReadErrorMsg=Error de lectura: {0} +HashDbIngestModule.calcHashValueErr=Se produjo un error al calcular el valor hash para {0} ({1}). +HashDbIngestModule.hashLookupErrorMsg=Error de busqueda de hash: {0} +HashDbIngestModule.settingKnownBadStateErr=Se produjo un error al establecer el estado destacado para {0}. +HashDbIngestModule.postToBB.fileName=Nombre del archivo +HashDbIngestModule.postToBB.md5Hash=Hash MD5 +HashDbIngestModule.postToBB.hashsetName=Nombre del conjunto de hash +HashDbIngestModule.postToBB.knownBadMsg=Destacado: {0} +HashDbIngestModule.complete.knownBadsFound=Destacados encontrados: +HashDbIngestModule.complete.totalCalcTime=Tiempo total de calculo +HashDbIngestModule.complete.totalLookupTime=Tiempo total de busqueda +HashDbIngestModule.complete.databasesUsed=Conjuntos de hash utilizados: +HashDbIngestModule.complete.hashLookupResults=Resultados de busqueda de hash +HashDbManager.moduleErrorListeningToUpdatesMsg=Un modulo provoco un error al escuchar las actualizaciones de HashDbManager. Consulta el registro para determinar que modulo. Algunos datos pueden estar incompletos. +HashDbManager.replacingDuplicateHashsetNameMsg=Se encontro un nombre de conjunto de hash duplicado {0}.\nReemplazandolo con {1}. +HashDbManager.openHashDbErr=Error al abrir el conjunto de hash +HashDbManager.unableToOpenHashDbMsg=No se puede abrir el conjunto de hash {0}. +HashDbManager.savedBackupOfOldConfigMsg={0}\nSe ha guardado una copia de seguridad de la configuracion anterior en\n{1} +HashDbManager.baseMessage.updatedFormatHashDbConfig=Se ha actualizado el formato del archivo de configuracion del conjunto de hash. +HashDbManager.msgBoxTitle.confFileFmtChanged=Formato de archivo de configuracion modificado +HashDbManager.dlgMsg.dbNotFoundAtLoc=No se pudo encontrar el conjunto de hash {0} en la ubicacion\n{1}\n¿Deseas buscar el archivo? +HashDbManager.dlgTitle.MissingDb=Conjunto de hash faltante +HashDbManager.progress.indexingHashSet=Indexando {0} +HashDbManager.dlgMsg.errorIndexingHashSet=Error al indexar el conjunto de hash {0}. +HashDbManager.hashDbIndexingErr=Error al indexar el conjunto de hash +HashDbPanelSearchAction.actionName=Busqueda de archivos por hash MD5 +HashDbSearchAction.dlgMsg.noFilesHaveMD5Calculated=Ningun archivo tiene actualmente un hash MD5 calculado, ejecuta primero el ingreso de HashDB. +HashDbSearchManager.MD5HashSearch=Busqueda por hash MD5 +HashDbSearchManager.noResultsFoundMsg=No se encontraron resultados. +HashDbSearchPanel.titleText.ingestOngoing=El ingreso esta en curso; este servicio no estara disponible hasta que finalice. +HashDbSearchPanel.noFilesHaveMD5HashMsg=Ningun archivo tiene actualmente un hash MD5. +HashDbSearchPanel.errorText.noHashesAddedMsg=Error: No se han agregado hashes. +HashDbSearchPanel.errorText.hashAlreadyAddedMsg=Error: El hash ya ha sido agregado. +HashDbSearchPanel.errorText.invalidMD5HashMsg=Error: El hash MD5 no es valido. +HashDbSearchThread.progress.cancellingSearch={0} (Cancelando...) +HashDbSearchThread.name.searching=Buscando +HashDbSearchThread.noMoreFilesWithMD5Msg=No se encontraron otros archivos con el mismo hash MD5. +ModalNoButtons.indexingDbsTitle=Indexando conjuntos de hash +ModalNoButtons.indexingDbTitle=Indexando conjunto de hash +ModalNoButtons.exitHashDbIndexingMsg=Estas a punto de salir del proceso de indexado de conjuntos de hash. \n\ +El indice generado quedara inutilizable. Si decides continuar,\n\ +por favor elimina el archivo -md5.idx correspondiente en la carpeta de hash.\n\ +¿Deseas salir del indexado? +ModalNoButtons.dlgTitle.unfinishedIndexing=Indexado incompleto +ModalNoButtons.indexThis.currentlyIndexing1Db=Actualmente se esta indexando 1 conjunto de hash +ModalNoButtons.indexThese.currentlyIndexing1OfNDbs=Actualmente se esta indexando 1 de {0} +ModalNoButtons.propChg.currentlyIndexingXofN=Actualmente se esta indexando {0} de {1} +HashDbManager.duplicateHashSetNameExceptionMsg=El nombre del conjunto de hash ''{0}'' ya se ha utilizado para otro conjunto de hash. +HashDbManager.hashDbDoesNotExistExceptionMsg=No se encontro el conjunto de hash en\n{0} +HashDbManager.hashDbFileExistsExceptionMsg=Ya existe un archivo en\n{0} +HashDbManager.hashDbAlreadyAddedExceptionMsg=El conjunto de hash en\n{0}\nya ha sido creado o importado anteriormente. +HashDbManager.illegalHashDbFileNameExtensionMsg=El nombre del archivo del conjunto de hash debe tener una extension .{0}. +HashDbManager.moduleErr=Error de modulo +HashDbManager.fileNameExtensionFilter.title=Archivo de conjunto de hash +HashDbSearchAction.dlgMsg.title=Busqueda de archivos por hash MD5 +HashDbSearchAction.getName.text=Busqueda de hash +HashDbSearchPanel.dlgMsg.title=Busqueda de archivos por hash MD5 +AddContentToHashDbAction.singleSelectionName=Añadir archivo al conjunto de hash +AddContentToHashDbAction.multipleSelectionName=Añadir archivos al conjunto de hash +AddContentToHashDbAction.singleSelectionNameDuringIngest=Añadir archivo al conjunto de hash (El ingreso esta en ejecucion) +AddContentToHashDbAction.multipleSelectionNameDuringIngest=Añadir archivos al conjunto de hash (El ingreso esta en ejecucion) +AddContentToHashDbAction.singleSelectionNameNoMD5=Añadir archivo al conjunto de hash (Sin hash MD5) +AddContentToHashDbAction.multipleSelectionNameNoMD5=Añadir archivos al conjunto de hash (Sin hash MD5) +AddContentToHashDbAction.singleSelectionNameEmpty=Añadir archivo al conjunto de hash (Archivo vacio) +AddContentToHashDbAction.multipleSelectionNameEmpty=Añadir archivos al conjunto de hash (Archivo vacio) +HashDbManager.ingestRunningExceptionMsg=El ingreso esta en curso; este servicio no estara disponible hasta que finalice. +HashDbManager.saveErrorExceptionMsg=Error al guardar la configuracion del hash +HashLookupModuleSettingsPanel.alwaysCalcHashesCheckbox.text=Calcular MD5 incluso si no se selecciona un conjunto de hash +AddContentToHashDbAction.addFilesToHashSet.files=archivos +AddContentToHashDbAction.addFilesToHashSet.file=archivo +HashDbManager.errCreatingIndex.title=Error al crear el indice +HashDbManager.errCreatingIndex.msg=Error al crear el indice: {0} +HashLookupModuleFactory.getIngestJobSettingsPanel.exception.msg=Se esperaba que el argumento de configuracion fuera una instancia de HashLookupModuleSettings +HashLookupModuleFactory.createFileIngestModule.exception.msg=Se esperaba que el argumento de configuracion fuera una instancia de HashLookupModuleSettings +HashLookupModuleSettingsPanel.alwaysCalcHashesCheckbox.toolTipText=Calcular MD5 incluso si no se selecciona un conjunto de hash +HashDbSearchPanel.hashTable.defaultModel.title.text=Hashes MD5 +AddHashValuesToDatabaseDialog.JDialog.Title=Agregar hashes al conjunto de hash +AddHashValuesToDatabaseDialog.instructionLabel.text_1=Pega los valores de hash MD5 (uno por linea) a continuacion: +AddHashValuesToDatabaseDialog.cancelButton.text_2=Cancelar +AddHashValuesToDatabaseDialog.pasteFromClipboardButton.text_2=Pegar desde el portapapeles +AddHashValuesToDatabaseProgressDialog.okButton.text=Aceptar +AddHashValuesToDatabaseProgressDialog.statusLabel.text=estado +AddHashValuesToDatabaseProgressDialog.title=Progreso de agregar hashes al conjunto de hash +AddHashValuesToDatabaseDialog.title=Agregar hashes al conjunto de hash +AddHashValuesToDatabaseProgressDialog.showErrorsButton.text=Mostrar errores +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.parsing=Analizando texto para encontrar hashes MD5... +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.invalidHash=El texto contiene un hash no valido. +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.invaliHash.msg=Hashes no validos: +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.noHashesToAdd=No hay hashes para agregar. +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.success={0} Hashes agregados correctamente. +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.errorAddingValidHash=Hubo un error al agregar hashes validos. +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.errorAddingValidHash.msg=Error al agregar hashes validos al conjunto de hash: +HashLookupSettingsPanel.ingestWarningLabel.text=El ingreso esta en curso, algunas configuraciones no estaran disponibles hasta que finalice. +HashLookupSettingsPanel.addHashesToDatabaseButton.text=Añadir Hashes al conjunto de Hashes +HashLookupSettingsPanel.indexPathLabelLabel.text=Ruta de indice: +HashLookupSettingsPanel.createDatabaseButton.toolTipText= +HashLookupSettingsPanel.createDatabaseButton.text=Nuevo conjunto de Hashes +HashLookupSettingsPanel.informationLabel.text=Detalles del Conjunto de Hashes +HashLookupSettingsPanel.sendIngestMessagesCheckBox.text=Enviar mensaje de ingestion por cada coincidencia +HashLookupSettingsPanel.indexButton.text=indice +HashLookupSettingsPanel.indexLabel.text=Estado del indice: +HashLookupSettingsPanel.hashDbIndexStatusLabel.text= +HashLookupSettingsPanel.hashDbTypeLabel.text= +HashLookupSettingsPanel.typeLabel.text=Tipo: +HashLookupSettingsPanel.locationLabel.text=Ruta del Conjunto de Hashes: +HashLookupSettingsPanel.hashDbLocationLabel.text= +HashLookupSettingsPanel.hashDbNameLabel.text= +HashLookupSettingsPanel.nameLabel.text=Nombre: +HashLookupSettingsPanel.hashDatabasesLabel.text=Conjuntos de Hashes: +HashLookupSettingsPanel.importDatabaseButton.toolTipText= +HashLookupSettingsPanel.importDatabaseButton.text=Importar conjunto de Hashes +HashLookupSettingsPanel.deleteDatabaseButton.text=Eliminar conjunto de Hashes +ImportHashDatabaseDialog.lbFilePath.text=Ruta del Conjunto de Hashes: +ImportHashDatabaseDialog.tfDatabaseName.tooltip=Nombre para este conjunto de Hashes +ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=Numero de Version del Conjunto de Hashes +ImportHashDatabaseDialog.tfDatabaseName.tooltip=Nombre para este conjunto de Hashes +ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=Numero de Version del Conjunto de Hashes +ImportCentralRepoDbProgressDialog.lbProgress.text=Iniciando importacion... +ImportCentralRepoDbProgressDialog.bnOk.text=OK +ImportCentralRepoDbProgressDialog.bnCancel.text=Cancelar +HashLookupSettingsPanel.versionLabel.text_1=Version: +HashLookupSettingsPanel.hashDbVersionLabel.text_1= +HashLookupSettingsPanel.orgLabel.text_1=Organizacion: +HashLookupSettingsPanel.hashDbOrgLabel.text_1= +HashLookupSettingsPanel.readOnlyLabel.text_1=Solo lectura: +HashLookupSettingsPanel.hashDbReadOnlyLabel.text_1= +ImportCentralRepoDbProgressDialog.jLabel1.text=Importando conjunto de Hashes al repositorio central +HashDbImportDatabaseDialog.lbVersion.text=Version: +HashDbImportDatabaseDialog.lbOrg.text=Organizacion de Origen: +HashDbImportDatabaseDialog.readOnlyCheckbox.text=Hacer el conjunto de Hashes de solo lectura +HashDbImportDatabaseDialog.orgButton.text=Gestionar Organizaciones +HashDbImportDatabaseDialog.versionTextField.text=1.0 +HashDbImportDatabaseDialog.fileTypeRadioButton.text=Local +HashDbImportDatabaseDialog.centralRepoRadioButton.text=Remoto (Repositorio Central) +HashDbImportDatabaseDialog.jLabel4.text=Destino: +HashDbCreateDatabaseDialog.jLabel4.text=Destino: +HashDbCreateDatabaseDialog.fileTypeRadioButton.text=Local +HashDbCreateDatabaseDialog.centralRepoRadioButton.text=Remoto (Repositorio Central) +HashDbCreateDatabaseDialog.lbOrg.text=Organizacion de Origen: +HashDbCreateDatabaseDialog.orgButton.text=Gestionar Organizaciones +HashDbCreateDatabaseDialog.databasePathLabel.text=Ruta del Conjunto de Hashes: +AddHashValuesToDatabaseDialog.okButton.text_2=OK +HashDbImportDatabaseDialog.saveInUserConfigFolderCheckbox.text=Copiar conjunto de Hashes a la carpeta de configuracion del usuario +HashDbImportDatabaseDialog.saveInUserConfigFolderCheckbox.toolTipText=En situaciones de Triage en Vivo, esta opcion asegura que la ruta del conjunto de Hashes sea valida +HashLookupSettingsPanel.indexPathLabel.text= +HashLookupModuleSettingsPanel.hashDbsLabel.text=Seleccionar conjuntos de Hashes para usar: +HashDbCreateDatabaseDialog.noChangeRadioButton.text=Sin Cambios +HashDbImportDatabaseDialog.noChangeRadioButton.toolTipText= +HashDbImportDatabaseDialog.noChangeRadioButton.text=Sin Cambios diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ar.properties new file mode 100644 index 0000000000..2ccf3a1c0e --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ar.properties @@ -0,0 +1,190 @@ +FileSet_fileIsMemberOf_noInclusiveRules_ruleName=No Excluido +FilesIdentifierIngestJobSettingsPanel.getError=Error al obtener conjuntos de archivos interesantes desde el archivo de configuracion. +FilesIdentifierIngestJobSettingsPanel.updateError=Error al actualizar la configuracion de conjuntos de archivos interesantes. +FilesIdentifierIngestModule.getFilesError=Error al obtener conjuntos de archivos interesantes desde el archivo. +FilesIdentifierIngestModule.indexError.message=Error al indexar el artefacto del archivo interesante para la busqueda de palabras clave. +# {0} - diasIncluidos +FilesSet.rule.dateRule.toString=(modificado en los ultimos {0} dia(s)) +FilesSetDefsPanel.bytes=Bytes +FilesSetDefsPanel.cancelImportMsg=Cancelar importacion +FilesSetDefsPanel.cancelNewSetMsg=Cancelar +# {0} - nombreArchivo +FilesSetDefsPanel.exportButtonActionPerformed.fileExistPrompt=El archivo {0} ya existe, ¿deseas sobrescribirlo? +FilesSetDefsPanel.gigaBytes=Gigabytes +# {0} - nombreArchivo +# {1} - mensajeError +FilesSetDefsPanel.importSetButtonActionPerformed.importError=No se pudo leer el archivo de reglas "{0}": \n{1}. +FilesSetDefsPanel.importSetButtonActionPerformed.noFiles=No se encontraron conjuntos de archivos en los archivos seleccionados. +FilesSetDefsPanel.importSetButtonActionPerformed.noFilesSelected=No se han seleccionado conjuntos de archivos. +# {0} - nombreFiltro +# {1} - nombrePerfil +FilesSetDefsPanel.ingest.fileFilterInUseError=El filtro de archivo seleccionado, {0}, esta siendo utilizado por un perfil, {1}, y no puede ser eliminado mientras algun perfil lo este utilizando. +FilesSetDefsPanel.Ingest.Title=Configuracion de Filtros de Archivos +FilesSetDefsPanel.interesting.copySetButton.text=Copiar Conjunto +FilesSetDefsPanel.interesting.exportButtonAction.featureName=Exportar Conjunto de Archivos Interesantes +FilesSetDefsPanel.interesting.ExportedMsg=Conjunto de archivos interesantes exportado +FilesSetDefsPanel.interesting.exportSetButton.text=Exportar Conjunto +FilesSetDefsPanel.interesting.failExportMsg=Error al exportar el conjunto de archivos interesantes +FilesSetDefsPanel.interesting.failImportMsg=El conjunto de archivos interesantes no fue importado +FilesSetDefsPanel.interesting.fileExtensionFilterLbl=Archivo de Conjunto de Archivos Interesantes de Autopsy (xml) +FilesSetDefsPanel.interesting.importButtonAction.featureName=Importar Conjunto de Archivos Interesantes +FilesSetDefsPanel.interesting.importOwConflict=Conflicto de importacion de conjuntos de archivos interesantes +FilesSetDefsPanel.interesting.importSetButton.text=Importar Conjunto +FilesSetDefsPanel.interesting.newOwConflict=Conflicto de conjuntos de archivos interesantes +# {0} - nombreConjuntoArchivos +FilesSetDefsPanel.interesting.overwriteSetPrompt=El conjunto de archivos interesantes "{0}" ya existe localmente, ¿deseas sobrescribirlo? +# {0} - nombreConjuntoArchivos +# {1} - nuevoNombreConjuntoArchivos +FilesSetDefsPanel.interesting.standardFileConflict=Ya existe un conjunto de archivos interesantes estandar con el nombre "{0}". ¿Deseas cambiar el nombre de tu conjunto a "{1}"? +FilesSetDefsPanel.Interesting.Title=Configuracion Global de Elementos Interesantes +FilesSetDefsPanel.kiloBytes=Kilobytes +FilesSetDefsPanel.loadError=Error al cargar conjuntos de archivos interesantes desde el archivo. +FilesSetDefsPanel.megaBytes=Megabytes +FilesSetDefsPanel.noSkipMsg=No, saltar +FilesSetDefsPanel.saveError=Error al guardar conjuntos de archivos interesantes en el archivo. +FilesSetDefsPanel.yesOwMsg=Si, sobrescribir +FilesSetDefsPanel.yesStandardFileConflictCreate=Si, crear +FilesSetPanel.filter.title=Filtro de Archivos +FilesSetPanel.ingest.createNewFilter=Crear/editar filtros de ingestion de archivos... +FilesSetPanel.ingest.messages.filtersMustBeNamed=Los filtros de ingestion de archivos deben tener un nombre. +FilesSetPanel.rule.title=Regla de Filtro de Archivos +FilesSetRulePanel.bytes=Bytes +# {0} - regex +FilesSetRulePanel.CommaInRegexWarning=Advertencia: Las comas en el campo de extension de archivo seran interpretadas como parte de una expresion regular y no dividiran la entrada en multiples extensiones (Entrada: "{0}") +FilesSetRulePanel.DaysIncludedEmptyError=El numero de dias incluidos no puede estar vacio. +FilesSetRulePanel.DaysIncludedInvalidError=El numero de dias incluidos debe ser un entero positivo. +FilesSetRulePanel.gigaBytes=Gigabytes +FilesSetRulePanel.kiloBytes=Kilobytes +FilesSetRulePanel.megaBytes=Megabytes +FilesSetRulePanel.nameTextField.extensionExample=Ejemplos: "jpg" o "jpg,jpeg,gif" +FilesSetRulePanel.nameTextField.fullNameExample=Ejemplo: "archivo.exe" +FilesSetRulePanel.NoConditionError=Debe haber al menos una condicion para crear una regla. +FilesSetRulePanel.NoMimeTypeError=Selecciona un tipo MIME valido. +FilesSetRulePanel.NoNameError=El nombre no puede estar vacio +FilesSetRulePanel.NoPathError=La ruta no puede estar vacia +FilesSetRulePanel.ZeroFileSizeError=El valor de la condicion de tamaño de archivo no debe ser 0 (a menos que se seleccione =). +FilesSetsManager.allFilesAndDirectories=Todos los Archivos y Directorios (Excepto Espacio No Asignado) +FilesSetsManager.allFilesDirectoriesAndUnallocated=Todos los Archivos, Directorios y Espacio No Asignado +# {0} - regex +InterestingItemsFilesSetSettings.readDateCondition.failedCompiledRegex=Error al determinar el numero ''{0}'' +# {0} - condicion +# {1} - regla +InterestingItemsFilesSetSettings.readMetaTypeCondition.malformedXml=El conjunto de archivos esta mal formado para la condicion de tipo de metadatos, ''{0}'', en la regla ''{1}'' +# {0} - regex +# {1} - regla +InterestingItemsFilesSetSettings.readNameCondition.errorCompilingRegex=Error al compilar la expresion regular ''{0}'' en la regla ''{1}'' +# {0} - caracter +# {1} - regla +InterestingItemsFilesSetSettings.readNameCondition.illegalChar=El nombre de archivo tiene un caracter no permitido: ''{0}'' en la regla ''{1}'' +# {0} - etiquetaNombre +# {1} - nombreRegla +InterestingItemsFilesSetSettings.readNameCondition.invalidTag=La condicion de nombre tiene una etiqueta invalida: ''{0}'' para la regla ''{1}'' +# {0} - regex +InterestingItemsFilesSetSettings.readPathCondition.failedCompiledRegex=Error al compilar la expresion regular ''{0}'' +# {0} - nombreRegla +InterestingItemsFilesSetSettings.readPathCondition.pathConditionCreationError=Error al crear la condicion de ruta para la regla ''{0}'' +# {0} - nombreRegla +InterestingItemsFilesSetSettings.readRule.missingNecessary=Regla invalida en el conjunto de archivos, faltan las condiciones necesarias para ''{0}'' +# {0} - filePathStr +InterestingItemsFilesSetSettings.readSerializedDefinitions.failedReadSettings=Error al leer la configuracion desde ''{0}'' +# {0} - regla +InterestingItemsFilesSetSettings.readSizeCondition.invalidComparator=Comparador o unidad de tamaño invalidos en el conjunto de archivos para la regla ''{0}'' +# {0} - regla +InterestingItemsFilesSetSettings.readSizeCondition.malformedXml=El conjunto de archivos esta mal formado, falta al menos un atributo 'fileSize' para la regla ''{0}'' +# {0} - regla +InterestingItemsFilesSetSettings.readSizeCondition.notIntegerValue=Tamaño no entero en el conjunto de archivos para la regla ''{0}'' +InterestingItemsIngestModuleFactory.defaultSettingsError=Error al obtener la configuracion predeterminada de archivos interesantes desde el archivo. +OpenIDE-Module-Display-Category=Modulo de Ingestion +OpenIDE-Module-Long-Description=Modulo de ingestion de archivos interesantes. \n\n Identifica archivos interesantes segun las reglas definidas en conjuntos de reglas de archivos interesantes. +OpenIDE-Module-Short-Description=Modulo de ingestion de archivos interesantes. +OpenIDE-Module-Name=Identificador de Archivos Interesantes +OptionsCategory_Name_InterestingItemDefinitions=Archivos Interesantes +OptionsCategory_Keywords_InterestingItemDefinitions=DefinicionesItemsInteresantes +InterestingItemsIdentifierIngestModule.moduleName=Identificador de Archivos Interesantes +InterestingItemsIdentifierIngestModule.moduleDescription=Identifica elementos interesantes segun las reglas definidas en conjuntos de reglas de elementos interesantes. +FilesSetPanel.interesting.title=Regla de Conjunto de Archivos Interesantes +FilesSetPanel.interesting.messages.filesSetsMustBeNamed=Los conjuntos de archivos interesantes deben tener un nombre. +FilesSetPanel.messages.filesSetsReservedName=Has elegido un nombre reservado por el software, por favor, elige un nombre diferente. +FilesSetPanel.ignoreKnownFilesCheckbox.text=Ignorar Archivos Conocidos +FilesSetPanel.descriptionPanel.border.title=Descripcion +FilesSetPanel.interesting.nameLabel.text=Nombre del Conjunto: +FilesSetPanel.ingest.nameLabel.text=Nombre del Filtro: +FilesSetPanel.descPanel.border.title=Descripcion +FilesSetPanel.ignoreUnallocCheckbox.toolTipText=Ignora el espacio no asignado, como archivos eliminados. Puede ser mas rapido pero producir resultados menos completos. +FilesSetPanel.ignoreUnallocCheckbox.text=Ignorar Espacio No Asignado +FilesSetRulePanel.title=Regla de Conjunto de Archivos Interesantes +FilesSetRulePanel.extensionRadioButton.text=Solo Extension +FilesSetRulePanel.pathRegexCheckBox.text=Expresion Regular +FilesSetRulePanel.pathTextField.text= +FilesSetRulePanel.fullNameRadioButton.text=Nombre Completo +FilesSetRulePanel.nameRegexCheckbox.text=Subcadena / Expresion Regular +FilesSetRulePanel.ruleNameTextField.text= +FilesSetRulePanel.nameTextField.text= +FilesSetRulePanel.ruleNameLabel.text=Nombre de la Regla (Opcional): +FilesSetRulePanel.messages.emptyNameCondition=Debes especificar un patron de nombre para esta regla. +FilesSetRulePanel.messages.invalidNameRegex=La expresion regular de nombre no es valida:\n\n{0} +FilesSetRulePanel.messages.invalidCharInName=El nombre no puede contener \\, /, :, *, ?, \", < o > a menos que sea una expresion regular. +FilesSetRulePanel.messages.invalidCharInPath=La ruta no puede contener \\, :, *, ?, \", < o > a menos que sea una expresion regular. +FilesSetRulePanel.messages.invalidPathRegex=La expresion regular de ruta no es valida:\n\n{0} +FilesSetDefsPanel.doFileSetsDialog.duplicateRuleSet.text=Ya existe un conjunto de reglas con el nombre {0}. +FilesSetRulePanel.pathSeparatorInfoLabel.text=La carpeta debe estar en la ruta del directorio padre. Utiliza '/' para dar nombres consecutivos. +FilesIdentifierIngestJobSettingsPanel.border.title=Selecciona los conjuntos de archivos interesantes para habilitar durante la ingestion: +FilesSetRulePanel.jLabel1.text=Tipo: +FilesSetRulePanel.interesting.jLabel5.text=Ingresa informacion sobre archivos que deseas encontrar. +FilesSetRulePanel.ingest.jLabel5.text=Ingresa informacion sobre archivos en los que deseas realizar la ingestion. +FilesSetRulePanel.nameCheck.text=Nombre: +FilesSetRulePanel.pathCheck.text=Nombre de Carpeta: +FilesSetRulePanel.filesRadioButton.text=Archivos +FilesSetRulePanel.dirsRadioButton.text=Directorios +FilesSetDefsPanel.interesting.setsListLabel.text=Conjuntos de Reglas: +FilesSetDefsPanel.ingest.setsListLabel.text=Filtros de Archivo: +FilesSetDefsPanel.interesting.jTextArea1.text=Este modulo te permite encontrar archivos que coincidan con criterios especificos. Cada conjunto tiene una lista de reglas, que coincidiran con las caracteristicas elegidas para los archivos. Un archivo solo necesita coincidir con una regla para ser encontrado. +FilesSetDefsPanel.ingest.jTextArea1.text=Agrega reglas para que solo se analice un subconjunto de archivos en una fuente de datos. Las reglas estan organizadas en conjuntos y solo se puede utilizar un conjunto a la vez. Un archivo solo necesita coincidir con una regla para ser analizado. +FilesSetDefsPanel.interesting.editSetButton.text=Editar Conjunto +FilesSetDefsPanel.ingest.editSetButton.text=Editar Filtro +FilesSetDefsPanel.interesting.newSetButton.text=Nuevo Conjunto +FilesSetDefsPanel.ingest.newSetButton.text=Nuevo Filtro +FilesSetDefsPanel.interesting.deleteSetButton.text=Eliminar Conjunto +FilesSetDefsPanel.ingest.deleteSetButton.text=Eliminar Filtro +FilesSetDefsPanel.interesting.jLabel6.text=Detalles del Conjunto +FilesSetDefsPanel.ingest.jLabel6.text=Detalles del Filtro +FilesSetDefsPanel.newRuleButton.text=Nueva Regla +FilesSetDefsPanel.rulePathConditionRegexCheckBox.text=Expresion Regular +FilesSetDefsPanel.dirsRadioButton.text=Directorios +FilesSetDefsPanel.deleteRuleButton.text=Eliminar Regla +FilesSetDefsPanel.fileNameRegexCheckbox.text=Subcadena / Expresion Regular +FilesSetDefsPanel.ignoreKnownFilesCheckbox.text=Ignorar Archivos Conocidos +FilesSetDefsPanel.rulePathConditionTextField.text= +FilesSetDefsPanel.fileNameRadioButton.text=Nombre Completo +FilesSetDefsPanel.fileNameTextField.text= +FilesSetDefsPanel.fileNameExtensionRadioButton.text=Solo Extension +FilesSetDefsPanel.rulesListLabel.text=Reglas: +FilesSetDefsPanel.editRuleButton.text=Editar Regla +FilesSetDefsPanel.filesRadioButton.text=Archivos +FilesSetRulePanel.allRadioButton.text=Todo +FilesSetDefsPanel.ingoreUnallocCheckbox.text=Ignorar Espacio No Asignado +FilesSetDefsPanel.ingoreUnallocCheckbox.toolTipText=Ignora el espacio no asignado, como archivos eliminados. Puede ser mas rapido pero producir resultados menos completos. +FilesSetDefsPanel.ingestWarningLabel.text=La ingestion esta en curso, algunas configuraciones no estaran disponibles hasta que termine. +FilesSetDefsPanel.allRadioButton.text=Todo +FilesSetRulePanel.dateCheck.text=Modificado en: +FilesSetRulePanel.fileSizeCheck.text=Tamaño de Archivo: +FilesSetRulePanel.mimeCheck.text=Tipo MIME: +FilesSetDefsPanel.modifiedDateLabel.text=Modificado en: +FilesSetDefsPanel.daysIncludedTextField.text= +FilesSetDefsPanel.daysIncludedLabel.text=dia(s) +FilesSetRulePanel.daysIncludedLabel.text=dia(s) +FilesSetDefsPanel.nameLabel.text=Nombre: +FilesSetDefsPanel.descriptionLabel.text=Descripcion: +FilesSetDefsPanel.fileTypeLabel.text=Tipo de Archivo: +FilesSetDefsPanel.ruleLabel.text=Detalles de la Regla +FilesSetDefsPanel.pathLabel.text=Subcadena de Ruta: +FilesSetDefsPanel.mimeTypeLabel.text=Tipo MIME: +FilesSetDefsPanel.fileSizeLabel.text=Tamaño de Archivo: +FilesSetRulePanel.ruleTypeLabel.text=Tipo de Regla: +FilesSetRulePanel.inclusiveRuleTypeRadio.text=Incluir - los archivos que coincidan con esta regla seran incluidos en los resultados +FilesSetRulePanel.exclusiveRuleTypeRadio.text=Excluir - los archivos que coincidan con esta regla seran excluidos de los resultados +# {0} - nombreConjuntoArchivos +StandardInterestingFileSetsLoader.customSuffixed={0} (Personalizado) +StandardInterestingFilesSetsLoader_cannotLoadStandard=No se pudo leer correctamente los conjuntos de archivos interesantes estandar. +StandardInterestingFilesSetsLoader_cannotLoadUserConfigured=No se pudo leer correctamente los conjuntos de archivos interesantes configurados por el usuario. +StandardInterestingFilesSetsLoader_cannotUpdateInterestingFilesSets=No se pudo escribir la configuracion actualizada de conjuntos de archivos interesantes en el directorio de configuracion. diff --git a/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/Bundle_ar.properties new file mode 100644 index 0000000000..6c31051c0b --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/Bundle_ar.properties @@ -0,0 +1,57 @@ +ALeappAnalyzerIngestModule.aLeapp.cancelled=Ejecucion de aLeapp cancelada +ALeappAnalyzerIngestModule.completed=Procesamiento de aLeapp completado +ALeappAnalyzerIngestModule.error.creating.output.dir=Error al crear el directorio de salida del modulo aLeapp. +ALeappAnalyzerIngestModule.error.ileapp.file.processor.init=Error al inicializar aLeappProcessFile +ALeappAnalyzerIngestModule.error.running.aLeapp=Error al ejecutar aLeapp, consulte el archivo de registro. +ALeappAnalyzerIngestModule.executable.not.found=Ejecutable aLeapp no encontrado. +ALeappAnalyzerIngestModule.has.run=Ha ejecutado aLeapp +ALeappAnalyzerIngestModule.report.name=Informe HTML de aLeapp +ALeappAnalyzerIngestModule.requires.windows=El modulo aLeapp requiere Windows. +ALeappAnalyzerIngestModule.running.aLeapp=Ejecutando aLeapp +ALeappAnalyzerIngestModule_processing_aLeapp_results=Procesando los resultados de aLeapp +ALeappAnalyzerModuleFactory_moduleDesc=Utiliza aLEAPP para analizar adquisiciones logicas de dispositivos Android. +ALeappAnalyzerModuleFactory_moduleName=Analizador de Android (aLEAPP) +ILeappAnalyzerIngestModule.completed=Procesamiento de iLeapp completado +ILeappAnalyzerIngestModule.error.creating.output.dir=Error al crear el directorio de salida del modulo iLeapp. +ILeappAnalyzerIngestModule.error.ileapp.file.processor.init=Error al inicializar ILeappProcessFile +ILeappAnalyzerIngestModule.error.running.iLeapp=Error al ejecutar iLeapp, consulte el archivo de registro. +ILeappAnalyzerIngestModule.executable.not.found=Ejecutable iLeapp no encontrado. +ILeappAnalyzerIngestModule.has.run=Ha ejecutado iLeapp +ILeappAnalyzerIngestModule.iLeapp.cancelled=Ejecucion de iLeapp cancelada +ILeappAnalyzerIngestModule.init.exception.msg=No se puede encontrar {0}. +ILeappAnalyzerIngestModule.processing.file=Procesando archivo {0} +ILeappAnalyzerIngestModule.parsing.file=Analizando archivo {0} +ILeappAnalyzerIngestModule.processing.filesystem=Procesando sistema de archivos +IleappAnalyzerIngestModule.not.64.bit.os=iLeapp no se ejecutara en un sistema operativo de 32 bits +ALeappAnalyzerIngestModule.init.exception.msg=No se puede encontrar {0}. +ALeappAnalyzerIngestModule.processing.file=Procesando archivo {0} +ALeappAnalyzerIngestModule.parsing.file=Analizando archivo {0} +ALeappAnalyzerIngestModule.processing.filesystem=Procesando sistema de archivos +AleappAnalyzerIngestModule.not.64.bit.os=aLeapp no se ejecutara en un sistema operativo de 32 bits +ILeappAnalyzerIngestModule.report.name=Informe HTML de iLeapp +ILeappAnalyzerIngestModule.requires.windows=El modulo iLeapp requiere Windows. +ILeappAnalyzerIngestModule.running.iLeapp=Ejecutando iLeapp +ILeappAnalyzerIngestModule_processing_iLeapp_results=Procesando los resultados de iLeapp +ILeappAnalyzerModuleFactory_moduleDesc=Utiliza iLEAPP para analizar adquisiciones logicas de dispositivos iOS. +ILeappAnalyzerModuleFactory_moduleName=Analizador de iOS (iLEAPP) +LeappFileProcessor.cannot.create.calllog.relationship=No se puede crear la relacion TSK_CALLLOG. +LeappFileProcessor.cannot.create.contact.relationship=No se puede crear la relacion TSK_CONTACT. +LeappFileProcessor.cannot.create.message.relationship=No se puede crear la relacion TSK_MESSAGE. +LeappFileProcessor.cannot.create.trackpoint.relationship=No se puede crear el artefacto TSK_TRACK_POINT. +LeappFileProcessor.cannot.create.waypoint.relationship=No se puede crear el artefacto TSK_WAYPOINT. +LeappFileProcessor.cannot.load.artifact.xml=No se puede cargar el archivo de artefacto XML. +LeappFileProcessor.cannotBuildXmlParser=No se puede construir un analizador XML. +LeappFileProcessor.completed=Procesamiento de Leapp completado +LeappFileProcessor.error.creating.new.artifacts=Error al crear nuevos artefactos. +LeappFileProcessor.error.creating.output.dir=Error al crear el directorio de salida del modulo Leapp. +LeappFileProcessor.error.reading.Leapp.directory=Error al leer el directorio de salida de Leapp. +LeappFileProcessor.error.running.Leapp=Error al ejecutar Leapp, consulte el archivo de registro. +LeappFileProcessor.findTsv=Buscando toda la salida de Leapp +LeappFileProcessor.has.run=Ha ejecutado Leapp +LeappFileProcessor.Leapp.cancelled=Ejecucion de Leapp cancelada +LeappFileProcessor.postartifacts_error=Error al publicar el artefacto de Blackboard. +LeappFileProcessor.running.Leapp=Ejecutando Leapp +LeappFileProcessor.starting.Leapp=Iniciando Leapp +# {0} - nombreArchivo +LeappFileProcessor.tsvProcessed=Procesando archivo de salida de LEAPP: {0} +LeappFileProcessor_cannotParseXml=No se puede analizar el archivo XML. diff --git a/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ar.properties new file mode 100644 index 0000000000..d383a2dac4 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ar.properties @@ -0,0 +1,40 @@ +# {0} - nombre del directorio de salida +cannotCreateOutputDir.message=No se puede crear el directorio de salida: {0}. +cannotRunExecutable.message=No se puede ejecutar PhotoRec. +missingExecutable.message=No se puede encontrar el ejecutable de PhotoRec. +OpenIDE-Module-Name=Modulo de ingreso PhotoRec Carver +OpenIDE-Module-Display-Category=Modulo de ingreso +OpenIDE-Module-Long-Description=Modulo de ingreso PhotoRec Carver. \n\n Recupera informacion de espacio no asignado y alimenta los archivos recuperados resultantes nuevamente en el sistema para su procesamiento. +OpenIDE-Module-Short-Description=Recupera informacion de espacio no asignado y alimenta archivos recuperados nuevamente en el sistema para su procesamiento. +moduleDisplayName.text=Recuperador de PhotoRec +moduleDescription.text=Ejecuta el recuperador de PhotoRec en el espacio no asignado de la fuente de datos. +# {0} - extensiones +PhotoRecCarverFileIngestModule_startUp_invalidExtensions_description=Las siguientes extensiones no son validas: {0} +PhotoRecCarverFileIngestModule_startUp_noExtensionsProvided_description=No se proporcionaron extensiones para que PhotoRec las recupere. +PhotoRecIngestModule.nonHostnameUNCPathUsed=PhotoRec no puede operar con una ruta UNC que contenga direcciones IP. +PhotoRecIngestModule.PermissionsNotSufficient=Permisos insuficientes para acceder a +PhotoRecIngestModule.PermissionsNotSufficientSeeReference=Consulte 'Autenticacion de unidad compartida' en la ayuda de Autopsy. +PhotoRecIngestModule.processTerminated=El modulo de ingreso PhotoRec Carver se detuvo debido a que se excedio el tiempo maximo permitido al escanear +PhotoRecIngestModule.moduleError=Error del modulo de ingreso PhotoRec Carver +PhotoRecIngestModule.UnableToCarve=No se puede recuperar el archivo: {0} +PhotoRecIngestModule.NotEnoughDiskSpace=No hay suficiente espacio en disco para guardar el archivo no asignado. Se omitira la recuperacion. +PhotoRecIngestModule.complete.numberOfCarved=Numero de archivos recuperados: +PhotoRecIngestModule.complete.totalWritetime=Tiempo total de escritura en disco: +PhotoRecIngestModule.complete.totalParsetime=Tiempo total de analisis: +PhotoRecIngestModule.complete.photoRecResults=Resultados de PhotoRec +PhotoRecIngestModule.NotEnoughDiskSpace.detail.msg=Error de PhotoRec al procesar {0} con {1}. No hay suficiente espacio en el disco principal para guardar el espacio no asignado. +PhotoRecIngestModule.cancelledByUser=PhotoRec cancelado por el usuario. +PhotoRecIngestModule.error.exitValue=El recuperador de PhotoRec devolvio un valor de salida de error \= {0} al escanear {1} +PhotoRecIngestModule.error.msg=Error al procesar {0} con el recuperador de PhotoRec. +PhotoRecIngestModule.complete.numberOfErrors=Numero de errores al recuperar: +PhotoRecCarverIngestJobSettingsPanel.detectionSettingsLabel.text=Configuracion de PhotoRec +PhotoRecCarverIngestJobSettingsPanel.keepCorruptedFilesCheckbox.text=Mantener archivos corruptos +PhotoRecCarverIngestJobSettingsPanel.includeExcludeCheckbox.text=Enfocarse en ciertos tipos de archivo +PhotoRecCarverIngestJobSettingsPanel.fullListOfTypesLabel.text=Lista completa de tipos: +PhotoRecCarverIngestJobSettingsPanel.exampleLabel.text=Ejemplo: jpg,png,zip +PhotoRecCarverIngestJobSettingsPanel.extensionListTextfield.text= +PhotoRecCarverIngestJobSettingsPanel.extensionListLabel.text=Tipos (lista de extensiones separadas por comas) +PhotoRecCarverIngestJobSettingsPanel.excludeRadioButton.text=Excluir los tipos especificados +PhotoRecCarverIngestJobSettingsPanel.includeRadioButton.text=Incluir solo los tipos especificados +unallocatedSpaceProcessingSettingsError.message=El filtro de ingreso de archivos seleccionado ignora el espacio no asignado. Este modulo recupera espacio no asignado. Por favor, elija un filtro que no ignore el espacio no asignado o desactive este modulo. +unsupportedOS.message=El modulo de PhotoRec solo es compatible con plataformas Windows. diff --git a/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/PhotoRecCarverFileIngestModule.java b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/PhotoRecCarverFileIngestModule.java index d94c9eae90..6e27a94c6a 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/PhotoRecCarverFileIngestModule.java +++ b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/PhotoRecCarverFileIngestModule.java @@ -632,23 +632,18 @@ final class PhotoRecCarverFileIngestModule implements FileIngestModule { */ public static File locateExecutable() throws IngestModule.IngestModuleException { File exeFile; - Path execName; - String photorec_linux_directory = "/usr/bin"; if (PlatformUtil.isWindowsOS()) { - execName = Paths.get(PHOTOREC_DIRECTORY, PHOTOREC_SUBDIRECTORY, PHOTOREC_EXECUTABLE); + Path execName = Paths.get(PHOTOREC_DIRECTORY, PHOTOREC_SUBDIRECTORY, PHOTOREC_EXECUTABLE); exeFile = InstalledFileLocator.getDefault().locate(execName.toString(), PhotoRecCarverFileIngestModule.class.getPackage().getName(), false); } else { - File usrBin = new File("/usr/bin/photorec"); - File usrLocalBin = new File("/usr/local/bin/photorec"); - if (usrBin.canExecute() && usrBin.exists() && !usrBin.isDirectory()) { - photorec_linux_directory = "/usr/bin"; - } else if (usrLocalBin.canExecute() && usrLocalBin.exists() && !usrLocalBin.isDirectory()) { - photorec_linux_directory = "/usr/local/bin"; - } else { - throw new IngestModule.IngestModuleException("Photorec not found"); + exeFile = null; + for (String dirName: System.getenv("PATH").split(File.pathSeparator)) { + File testExe = new File(dirName, PHOTOREC_LINUX_EXECUTABLE); + if (testExe.exists()) { + exeFile = testExe; + break; + } } - execName = Paths.get(photorec_linux_directory, PHOTOREC_LINUX_EXECUTABLE); - exeFile = new File(execName.toString()); } if (null == exeFile) { diff --git a/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/Bundle_ar.properties new file mode 100644 index 0000000000..ccb82b25a9 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/Bundle_ar.properties @@ -0,0 +1,3 @@ +PictureAnalyzerIngestModule.cannot_run_file_type=No se puede ejecutar la deteccion del tipo de archivo. +PictureAnalyzerIngestModuleFactory.module_description=Realiza un analisis general en archivos de imagenes, incluyendo la extraccion de metadatos EXIF y la conversion entre formatos. +PictureAnalyzerIngestModuleFactory.module_name=Analizador de Imagenes diff --git a/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/Bundle_ar.properties new file mode 100644 index 0000000000..5259306569 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/Bundle_ar.properties @@ -0,0 +1 @@ +ExifProcessor.userContent.description=Existen metadatos EXIF para este archivo. diff --git a/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/HeifJNI.java b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/HeifJNI.java index 601792bdf9..5a0f8fa316 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/HeifJNI.java +++ b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/HeifJNI.java @@ -18,6 +18,8 @@ */ package org.sleuthkit.autopsy.modules.pictureanalyzer.impls; +import com.sun.javafx.PlatformUtil; + /** * * Interop with libheif native dependencies. @@ -32,11 +34,13 @@ public class HeifJNI { */ public static HeifJNI getInstance() throws UnsatisfiedLinkError { if (instance == null) { - System.loadLibrary("vcruntime140_1"); - System.loadLibrary("libx265"); - System.loadLibrary("libde265"); - System.loadLibrary("heif"); - System.loadLibrary("jpeg62"); + if (PlatformUtil.isWindows()) { + System.loadLibrary("vcruntime140_1"); + System.loadLibrary("libx265"); + System.loadLibrary("libde265"); + System.loadLibrary("heif"); + System.loadLibrary("jpeg62"); + } System.loadLibrary("heifconvert"); instance = new HeifJNI(); } diff --git a/Core/src/org/sleuthkit/autopsy/modules/plaso/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/plaso/Bundle_ar.properties new file mode 100644 index 0000000000..fd135f4031 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/plaso/Bundle_ar.properties @@ -0,0 +1,29 @@ +# {0} - file that events are from +PlasoIngestModule.artifact.progress=Agregando eventos al caso: {0} +PlasoIngestModule.bad.imageFile=No se puede encontrar el nombre y la ruta del archivo de imagen. +PlasoIngestModule.completed=Procesamiento de Plaso completado +PlasoIngestModule.create.artifacts.cancelled=Creacion de artefactos de Plaso cancelada +PlasoIngestModule.dataSource.not.an.image=Saltando fuente de datos de imagen que no es de disco +PlasoIngestModule.error.creating.output.dir=Error al crear el directorio de salida del modulo Plaso. +PlasoIngestModule.error.running.log2timeline=Error al ejecutar log2timeline, ver archivo de registro. +PlasoIngestModule.error.running.psort=Error al ejecutar Psort, ver archivo de registro. +PlasoIngestModule.event.datetime=Fecha y Hora del Evento +PlasoIngestModule.event.description=Descripcion del Evento +PlasoIngestModule.exception.posting.artifact=Excepcion al publicar el artefacto. +PlasoIngestModule.executable.not.found=Ejecutable de Plaso no encontrado. +PlasoIngestModule.has.run=Plaso ha sido ejecutado +PlasoIngestModule.info.empty.database=La base de datos de Plaso estaba vacia. +PlasoIngestModule.log2timeline.cancelled=Ejecucion de log2timeline cancelada +PlasoIngestModule.psort.cancelled=Ejecucion de psort cancelada +PlasoIngestModule.psort.fail=Plaso devolvio un error al ordenar los eventos. Los resultados no estan completos. +PlasoIngestModule.requires.windows=El modulo de Plaso requiere Windows. +PlasoIngestModule.running.psort=Ejecutando Psort +PlasoIngestModule.starting.log2timeline=Iniciando log2timeline +PlasoModuleFactory.ingestJobSettings.exception.msg=Se esperaba que el argumento de configuracion fuera una instancia de PlasoModuleSettings. +PlasoModuleFactory_moduleDesc=Ejecuta Plaso en una fuente de datos. +PlasoModuleFactory_moduleName=Plaso +PlasoModuleSettingsPanel.winRegCheckBox.text=winreg: Analizador de archivos del Registro de Windows NT (REGF). +PlasoModuleSettingsPanel.peCheckBox.text=pe: Analizador de archivos ejecutables portatiles (PE). +PlasoModuleSettingsPanel.plasoParserInfoTextArea.text=Todos los modulos excepto chrome_cache* y los siguientes estan habilitados. Habilitarlos hara que Plaso se ejecute mas lento. +PlasoModuleSettingsPanel.noteLabel.text=NOTA: Este modulo puede tardar mucho tiempo en ejecutarse. +PlasoModuleSettingsPanel.disabledNoteLabel.text=* Desactivado porque duplica modulos existentes en Autopsy. diff --git a/Core/src/org/sleuthkit/autopsy/modules/vmextractor/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/vmextractor/Bundle_ar.properties new file mode 100644 index 0000000000..092d534a71 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/vmextractor/Bundle_ar.properties @@ -0,0 +1,15 @@ +# {0} - nombre de la fuente de datos +deviceIdQueryErrMsg=Falta el ID del dispositivo en la fuente de datos {0}. +# {0} - nombre del directorio de salida +VMExtractorIngestModule.cannotCreateOutputDir.message=No se puede crear el directorio de salida: {0}. +VMExtractorIngestModule.noOpenCase.errMsg=No hay un caso abierto disponible. +VMExtractorIngestModuleFactory.moduleDisplayName=Extractor de Maquinas Virtuales +VMExtractorIngestModuleFactory.moduleDescription=Extrae archivos de maquinas virtuales y los agrega como fuentes de datos en un caso. +VMExtractorIngestModule.addedVirtualMachineImage.message=Imagen de maquina virtual {0} agregada. +VMExtractorIngestModule.searchingImage.message=Buscando archivos de maquinas virtuales en la imagen. +VMExtractorIngestModule.exportingToDisk.message=Exportando archivos de maquinas virtuales al disco. +VMExtractorIngestModule.queuingIngestJobs.message=Colocando en cola trabajos de ingestion para maquinas virtuales extraidas. +VMExtractorIngestModule.msgNotify.failedExtractVM.title.txt=Error al extraer archivo de maquina virtual. +VMExtractorIngestModule.msgNotify.failedExtractVM.msg.txt=Error al escribir el archivo de maquina virtual {0} en el disco. +VMExtractorIngestModule.msgNotify.failedIngestVM.title.txt=Error al realizar la ingestion de la maquina virtual. +VMExtractorIngestModule.msgNotify.failedIngestVM.msg.txt=Error al realizar la ingestion del archivo de maquina virtual {0}. diff --git a/Core/src/org/sleuthkit/autopsy/modules/yara/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/yara/Bundle_ar.properties new file mode 100644 index 0000000000..9ed8e2a28f --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/yara/Bundle_ar.properties @@ -0,0 +1,5 @@ +Yara_Module_Description=El Analizador YARA utiliza YARA para buscar patrones textuales o binarios en archivos. +Yara_Module_Name=Analizador YARA +YaraIngestModule_no_ruleSets=No se pudo ejecutar la ingestion de YARA, la lista de conjuntos de reglas YARA estaba vacia. +YaraIngestModule_windows_error_msg=El modulo de ingestion de YARA solo esta disponible en Windows de 64 bits. +YaraIngestModule_yarac_not_found=No se pudieron compilar los archivos de reglas YARA. No se encontro el ejecutable en. diff --git a/Core/src/org/sleuthkit/autopsy/modules/yara/ui/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/modules/yara/ui/Bundle_ar.properties new file mode 100644 index 0000000000..8c3e9c1984 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/yara/ui/Bundle_ar.properties @@ -0,0 +1,29 @@ +OptionCategory_Name_YaraRuleSetOption=Conjuntos de reglas Yara +OptionCategory_Keywords_YaraRuleSetOption=YaraRuleSets +RuleSetDetailsPanel_failed_to_open_folder_msg=Error al abrir una nueva ventana para el archivo del conjunto de reglas. +RuleSetDetailsPanel_failed_to_open_folder_title=Error de Apertura +RuleSetPanel.newButton.text=Nuevo Conjunto +RuleSetPanel.deleteButton.text=Eliminar Conjunto +RuleSetPanel.ruleSetListLabel.text=Conjuntos de Reglas: +RuleSetDetailsPanel.ruleSetListLabel.text=La carpeta contiene actualmente los siguientes archivos de reglas: +RuleSetDetailsPanel.setDetailsLabel.text=Detalles del Conjunto +RuleSetDetailsPanel.openFolderButton.text=Abrir Carpeta +RuleSetPanel.descriptionField.text=Este modulo te permite encontrar archivos que coincidan con las reglas Yara. Cada conjunto tiene una lista de archivos de reglas Yara. Un archivo solo necesita coincidir con una regla en el conjunto para ser encontrado. +RuleSetDetailsPanel.openLabel.text=Coloca archivos de reglas en la carpeta del conjunto. Seran compilados antes de su uso. +YARA_Global_Settings_Panel_Title=Opciones de YARA +YaraIngestSettingsPanel.border.title=Selecciona conjuntos de reglas YARA para habilitar durante la ingestion: +YaraIngestSettingsPanel.allFilesButton.text=Todos los Archivos +YaraIngestSettingsPanel.allFilesButton.toolTipText= +YaraIngestSettingsPanel.executableFilesButton.text=Solo Archivos Ejecutables +RuleSetDetailsPanel.refreshButton.text=Actualizar Lista de Archivos +YaraRuleSetOptionPanel_badName2_msg=El conjunto de reglas no es valido.\nLos nombres de los conjuntos de reglas deben ser cadenas no vacias y unicas. +# {0} - nombre del conjunto de reglas +YaraRuleSetOptionPanel_badName_msg=El nombre del conjunto de reglas {0} ya existe.\nLos nombres de los conjuntos de reglas deben ser unicos. +YaraRuleSetOptionPanel_badName_title=Crear Conjunto de Reglas +YaraRuleSetOptionPanel_new_rule_set_name_msg=Proporciona un nombre nuevo y unico para el conjunto de reglas: +YaraRuleSetOptionPanel_new_rule_set_name_title=Nombre del Conjunto de Reglas +# {0} - nombre del conjunto de reglas +YaraRuleSetOptionPanel_rule_set_delete=No se puede eliminar el conjunto de reglas YARA seleccionado {0}.\nEl conjunto de reglas podria haber sido eliminado previamente. +# {0} - nombre del conjunto de reglas +YaraRuleSetOptionPanel_RuleSet_Missing=La carpeta para el conjunto de reglas YARA seleccionado, {0}, ya no existe. +YaraRuleSetOptionPanel_RuleSet_Missing_title=Carpeta Eliminada \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/progress/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/progress/Bundle_ar.properties new file mode 100644 index 0000000000..afe4d46cf7 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/progress/Bundle_ar.properties @@ -0,0 +1,6 @@ +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. + +ProgressPanel.progressMessage.text=Mensaje +TaskCanceller.progress.cancellingMessage=Cencelando... diff --git a/Core/src/org/sleuthkit/autopsy/python/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/python/Bundle_ar.properties new file mode 100644 index 0000000000..f0c48f4fe6 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/python/Bundle_ar.properties @@ -0,0 +1,4 @@ +JythonModuleLoader.errorMessages.failedToOpenModule=Error al abrir {0}. Consulte el registro para obtener mas detalles. +JythonModuleLoader.errorMessages.failedToLoadModule=Error al cargar {0}. {1}. Consulte el registro para obtener mas detalles. +JythonModuleLoader.pythonInterpreterError.msg=Error al cargar modulos de Python. Consulte el registro para obtener mas detalles. +JythonModuleLoader.pythonInterpreterError.title=Modulos de Python. diff --git a/Core/src/org/sleuthkit/autopsy/python/JythonModuleLoader.java b/Core/src/org/sleuthkit/autopsy/python/JythonModuleLoader.java index 00de5a6657..e81bc83e3c 100644 --- a/Core/src/org/sleuthkit/autopsy/python/JythonModuleLoader.java +++ b/Core/src/org/sleuthkit/autopsy/python/JythonModuleLoader.java @@ -44,7 +44,10 @@ import org.sleuthkit.autopsy.report.GeneralReportModule; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; import java.io.BufferedReader; import java.io.FileReader; +import java.io.IOException; +import java.text.MessageFormat; import java.util.Comparator; +import org.apache.commons.io.FileUtils; /** * Finds and loads Autopsy modules written using the Jython variant of the @@ -53,7 +56,8 @@ import java.util.Comparator; public final class JythonModuleLoader { private static final Logger logger = Logger.getLogger(JythonModuleLoader.class.getName()); - + private static final String INTERNAL_PYTHON_MODULES_FOLDER = "InternalPythonModules"; + /** * Get ingest module factories implemented using Jython. * @@ -84,9 +88,42 @@ public final class JythonModuleLoader { return getInterfaceImplementations(new DataSourceProcessorDefFilter(), DataSourceProcessor.class); } + /** + * @return Folder in user config directory where internal python modules + * will be copied and compiled. + */ + private static File getUserDirInternalPython() { + return new File(PlatformUtil.getUserDirectory(), INTERNAL_PYTHON_MODULES_FOLDER); + } + + /** + * If user directory internal python modules does not exist, create it and + * copy contents internal python modules in installation directory to that + * location. This avoids creating files in the installation directory when + * compiling the python files. + */ + private static synchronized void copyInternalInstallToUserDir() { + File userDirInternalPython = getUserDirInternalPython(); + if (!userDirInternalPython.exists()) { + userDirInternalPython.mkdirs(); + + File installInternalPython = InstalledFileLocator.getDefault().locate(INTERNAL_PYTHON_MODULES_FOLDER, "org.sleuthkit.autopsy.core", false); + if (installInternalPython.exists()) { + try { + FileUtils.copyDirectory(installInternalPython, userDirInternalPython); + } catch (IOException ex) { + logger.log(Level.WARNING, MessageFormat.format("There was an error copying internal python modules from {0} to {1}.", + installInternalPython, userDirInternalPython), ex); + } + } + } + } + @Messages({"JythonModuleLoader.pythonInterpreterError.title=Python Modules", "JythonModuleLoader.pythonInterpreterError.msg=Failed to load python modules, See log for more details"}) private static List getInterfaceImplementations(LineFilter filter, Class interfaceClass) { + copyInternalInstallToUserDir(); + List objects = new ArrayList<>(); Set pythonModuleDirs = new HashSet<>(); PythonInterpreter interpreter = null; @@ -100,11 +137,12 @@ public final class JythonModuleLoader { } return objects; } + // add python modules from 'autospy/build/cluster/InternalPythonModules' folder - // which are copied from 'autopsy/*/release/InternalPythonModules' folders. - for (File f : InstalledFileLocator.getDefault().locateAll("InternalPythonModules", "org.sleuthkit.autopsy.core", false)) { //NON-NLS - Collections.addAll(pythonModuleDirs, f.listFiles()); - } + // which are copied from 'autopsy/*/release/InternalPythonModules' folders, + // and then copied to 'testuserdir/InternalPythonModules' + Collections.addAll(pythonModuleDirs, getUserDirInternalPython().listFiles()); + // add python modules from 'testuserdir/python_modules' folder Collections.addAll(pythonModuleDirs, new File(PlatformUtil.getUserPythonModulesPath()).listFiles()); diff --git a/Core/src/org/sleuthkit/autopsy/rejview/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/rejview/Bundle_ar.properties new file mode 100644 index 0000000000..f7514b2676 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/rejview/Bundle_ar.properties @@ -0,0 +1,32 @@ +# {0} - startByteD +# {1} - endByteD +# {2} - lengthD +# {3} - startByteH +# {4} - endByteH +# {5} - lengthH +HexView.statusTemplate.nonZeroLength=Seleccionado: {0} de {1} (len: {2}) [{3} de {4} (len: {5}) +# {0} - startByteDec +# {1} - startByteHex +HexView.statusTemplate.zeroLength=Posicion: {0} [{1}]) +RegeditExeValueFormatter.valueNotSet.text=(valor no establecido) +RejTreeKeyNode.parseFailed.string=ERROR AL ANALIZAR. +RejTreeKeyView.columns.name=Nombre +RejTreeKeyView.columns.type=Tipo +RejTreeKeyView.columns.value=Valor +RejTreeKeyView.failedToParse.keyName=ERROR AL ANALIZAR EL NOMBRE DE LA CLAVE +RejTreeKeyView.metadataBorder.title=Metadatos +RejTreeKeyView.template.dateTime=Hora de modificación: +RejTreeKeyView.template.name=Nombre: +RejTreeKeyView.template.numberOfSubkeys=Numero de subclaves: +RejTreeKeyView.template.numberOfValues=Numero de valores: +RejTreeKeyView.valuesBorder.title=Valores +RejTreeValueNode.defaultValueName.text=(Predeterminado) +RejTreeValueNode.failureValueName.text=ERROR AL ANALIZAR +RejTreeValueView.failedToDecode.valueName=ERROR AL DECODIFICAR EL NOMBRE DEL VALOR +RejTreeValueView.failedToDecode.valueType=ERROR AL ANALIZAR EL TIPO DE VALOR +RejTreeValueView.failedToParse.value=ERROR AL ANALIZAR EL VALOR DEL VALOR +RejTreeValueView.metadataBorder.title=Metadatos +RejTreeValueView.template.name=Nombre: +RejTreeValueView.template.type=Tipo: +RejTreeValueView.valueBorder.title=Valor +RejTreeView.failureValueName.text=ERROR AL ANALIZAR diff --git a/Core/src/org/sleuthkit/autopsy/report/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/Bundle_ar.properties new file mode 100644 index 0000000000..3f19ff221d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/Bundle_ar.properties @@ -0,0 +1,21 @@ +OpenIDE-Module-Name=Reporte +DefaultReportConfigurationPanel.infoLabel.text=Esta configuracion del informe se realizara en la siguiente pantalla. +ReportBranding.defaultReportTitle.text=Informe Forense de Autopsy +ReportBranding.defaultReportFooter.text=Desarrollado por la Plataforma de Ciencias Forenses de Codigo Abierto Autopsy - www.sleuthkit.org +ReportProgressPanel.pathLabel.text=Etiqueta de ruta +ReportProgressPanel.progress.canceled=Cancelado +ReportProgressPanel.progress.complete=Completo +ReportProgressPanel.progress.error=Error +ReportProgressPanel.progress.queuing=En cola... +ReportProgressPanel.progress.running=En progreso... +ReportProgressPanel.reportLabel.text=Etiqueta de informe +ReportProgressPanel.statusMessageLabel.text=Etiqueta de mensaje de estado +ReportProgressPanel.separationLabel.text=: +ReportProgressPanel.initPathLabel.noFile=Ningun archivo de informe +ReportProgressPanel.start.cancelButton.text=Cancelar +ReportProgressPanel.start.progress.text=Iniciando el informe... +ReportProgressPanel.complete.processLbl.text=Completado +ReportProgressPanel.complete.processLb2.text=Completado con error +ReportProgressPanel.complete.cancelButton.text=Completado +ReportProgressPanel.cancel.cancelButton.toolTipText=Cancelado +ReportProgressPanel.cancel.procLbl.text=Cancelado diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ar.properties new file mode 100644 index 0000000000..4a6c88c5f5 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ar.properties @@ -0,0 +1,239 @@ +OpenIDE-Module-Name=Reporte +CTL_ReportWizardAction=Ejecutar informe +PortableCaseInterestingItemsListPanel.error.errorLoadingTags=Error al cargar nombres de conjuntos de elementos interesantes +PortableCaseInterestingItemsListPanel.error.errorTitle=Error al obtener nombres de conjuntos de elementos interesantes para el caso +PortableCaseInterestingItemsListPanel.error.noOpenCase=No hay un caso abierto +PortableCaseTagsListPanel.error.errorLoadingTags=Error al cargar etiquetas +PortableCaseTagsListPanel.error.errorTitle=Error al obtener nombres de etiquetas para el caso +PortableCaseTagsListPanel.error.noOpenCase=No hay un caso abierto +ReportGenerator.artTableColHdr.comment=Comentario +ReportGenerator.errList.failedGetBBArtifactTags=Error al obtener etiquetas de resultados. +ReportGenerator.errList.noOpenCase=No hay un caso abierto disponible. +# {0} - report module name +ReportGenerator.error.exception=Excepcion al ejecutar el modulo de informe {0} +# {0} - report module name +ReportGenerator.error.invalidSettings=Ajustes no validos para el modulo de informe {0} +# {0} - report module name +ReportGenerator.error.moduleNotFound=No se encontro el modulo de informe {0} +# {0} - report module name +ReportGenerator.error.noFileReportSettings=No hay ajustes de informe de archivos para el modulo de informe {0} +ReportGenerator.error.noReportModules=No se encontraron modulos de informe +# {0} - report module name +ReportGenerator.error.noTableReportSettings=No hay ajustes de informe de tabla para el modulo de informe {0} +# {0} - report configuration name +ReportGenerator.error.unableToLoadConfig=No se pudo cargar la configuracion de informes {0} +# {0} - report module name +ReportGenerator.error.unsupportedType=El modulo de informe {0} tiene un tipo de modulo de informe no compatible. +ReportGenerator.tagTable.header.userName=Nombre de usuario +ReportProgressIndicator.cancelledMessage=Generacion del informe cancelada +ReportProgressIndicator.completedMessage=Generacion del informe completada +ReportProgressIndicator.completedWithErrorsMessage=Generacion del informe completada con errores +ReportProgressIndicator.startMessage=Inicio de la generacion del informe +ReportProgressIndicator.switchToDeterminateMessage=El progreso de la generacion del informe cambio a determinado +ReportProgressIndicator.switchToIndeterminateMessage=El progreso de la generacion del informe cambio a indeterminado +ReportWizardDataSourceSelectionPanel.confirmEmptySelection=¿Estas seguro de que deseas continuar sin hacer selecciones? +ReportWizardDataSourceSelectionPanel.finishButton.text=Finalizar +ReportWizardDataSourceSelectionPanel.nextButton.text=Siguiente +ReportWizardDataSourceSelectionPanel.title=Selecciona que fuente(s) de datos incluir +ReportWizardFileOptionsVisualPanel.jLabel1.text=Selecciona los elementos para incluir en el informe de archivos: +ReportWizardFileOptionsVisualPanel.deselectAllButton.text=Desmarcar todos +ReportWizardFileOptionsVisualPanel.selectAllButton.text=Seleccionar todos +ReportWizardPortableCaseOptionsVisualPanel.errorLabel.text=Solo en Windows +ReportWizardPortableCaseOptionsVisualPanel.compressCheckbox.toolTipText= +ReportWizardPortableCaseOptionsVisualPanel.compressCheckbox.text=Empaquetar el caso en un archivo comprimido: +PortableCaseTagsListPanel.jAllTagsCheckBox.text=Todas las etiquetas de resultados +PortableCaseTagsListPanel.deselectButton.text=Desmarcar todos +PortableCaseTagsListPanel.selectButton.text=Seleccionar todos +PortableCaseTagsListPanel.descLabel.text=Incluir las siguientes etiquetas: +ReportGenerationPanel.cancelButton.actionCommand=Cancelar +ReportGenerationPanel.cancelButton.text=Cancelar +ReportGenerationPanel.closeButton.text=Cerrar +PortableCaseInterestingItemsListPanel.deselectButton.text=Desmarcar todos +PortableCaseInterestingItemsListPanel.selectButton.text=Seleccionar todos +PortableCaseInterestingItemsListPanel.descLabel.text=Incluir elementos interesantes de estos conjuntos: +PortableCaseInterestingItemsListPanel.jAllSetsCheckBox.text=Todos los elementos interesantes +ReportVisualPanel2.allTaggedResultsRadioButton.text=Todos los resultados etiquetados +ReportVisualPanel2.advancedButton.text=Elegir tipos de resultados... +ReportVisualPanel2.deselectAllButton.text=Desmarcar todos +ReportVisualPanel2.selectAllButton.text=Seleccionar todos +ReportVisualPanel2.dataLabel.text=Selecciona que datos incluir en el informe: +ReportVisualPanel2.allResultsRadioButton.text=Todos los resultados +ReportVisualPanel2.specificTaggedResultsRadioButton.text=Resultados etiquetados especificos +ReportVisualPanel1.reportModulesLabel.text=Modulos de informe: +ArtifactSelectionDialog.okButton.text=Aceptar +ArtifactSelectionDialog.deselectAllButton.text=Desmarcar todos +ArtifactSelectionDialog.selectAllButton.text=Seleccionar todos +ArtifactSelectionDialog.titleLabel.toolTipText= +ArtifactSelectionDialog.titleLabel.text=Selecciona los tipos de resultados que deseas incluir en el informe: +ArtifactSelectionDialog.dlgTitle.text=Seleccion de tipos de resultados +ReportVisualPanel1.invalidModuleWarning=Se encontro un modulo de informe no valido ({0}) +ReportGenerationPanel.titleLabel.text=Progreso de generacion del informe +ReportGenerationPanel.confDlg.sureToClose.msg=¿Estas seguro de que deseas cerrar el dialogo?\nTodos los informes seran cancelados. +ReportGenerationPanel.confDlg.title.closing=Cerrando +ReportGenerationPanel.confDlg.cancelReport.msg=¿Estas seguro de que deseas cancelar el informe? +ReportGenerator.displayProgress.title.text=Progreso de la generacion del informe... +ReportGenerator.progress.queryingDb.text=Consultando la base de datos... +ReportGenerator.progress.readingTagsArtifacts.text=Leyendo etiquetas y artefactos de la base de datos del caso +ReportGenerator.progress.processingFile.text=Procesando ahora {0} +ReportGenerator.artifactTable.taggedResults.text=Contiene resultados que fueron etiquetados con uno de los siguientes: +ReportGenerator.progress.processing=Procesando ahora {0}... +ReportGenerator.msgShow.skippingArtType.title=Saltando el tipo de artefacto {0} en los informes +ReportGenerator.msgShow.skippingArtType.msg=Columnas desconocidas para incluir en el informe +ReportGenerator.makeContTagTab.taggedFiles.msg=Contiene archivos que fueron etiquetados con uno de los siguientes: +ReportGenerator.makeBbArtTagTab.taggedRes.msg=Este informe solo incluye resultados etiquetados con: +ReportGenerator.tagTable.header.resultType=Tipo de resultado +ReportGenerator.tagTable.header.tag=Etiqueta +ReportGenerator.tagTable.header.comment=Comentario +ReportGenerator.tagTable.header.srcFile=Archivo fuente +ReportGenerator.progress.createdThumb.text=Creando miniaturas... +ReportGenerator.htmlOutput.header.file=Archivo +ReportGenerator.htmlOutput.header.tag=Etiqueta +ReportGenerator.htmlOutput.header.comment=Comentario +ReportGenerator.htmlOutput.header.timeModified=Hora de modificacion +ReportGenerator.htmlOutput.header.timeChanged=Hora de cambio +ReportGenerator.htmlOutput.header.timeAccessed=Hora de acceso +ReportGenerator.htmlOutput.header.timeCreated=Hora de creacion +ReportGenerator.htmlOutput.header.size=Tamanio (bytes) +ReportGenerator.htmlOutput.header.hash=Valor hash +ReportGenerator.thumbnailTable.name=Imagenes etiquetadas +ReportGenerator.thumbnailTable.desc=Contiene miniaturas de imagenes que estan asociadas con archivos y resultados etiquetados. +ReportGenerator.writeKwHits.userSrchs=Busquedas de usuario +ReportGenerator.progress.processingList=Procesando ahora {0} ({1})... +ReportGenerator.artTableColHdr.url=URL +ReportGenerator.artTableColHdr.title=Titulo +ReportGenerator.artTableColHdr.dateCreated=Fecha de creacion +ReportGenerator.artTableColHdr.program=Programa +ReportGenerator.artTableColHdr.urlDomainDecoded=Dominio de URL +ReportGenerator.artTableColHdr.srcFile=Archivo fuente +ReportGenerator.artTableColHdr.dateTime=Fecha/Hora +ReportGenerator.artTableColHdr.name=Nombre +ReportGenerator.artTableColHdr.value=Valor +ReportGenerator.artTableColHdr.dateAccessed=Fecha de acceso +ReportGenerator.artTableColHdr.referrer=Referencia +ReportGenerator.artTableColHdr.dest=Destino +ReportGenerator.artTableColHdr.sourceUrl=URL de origen +ReportGenerator.artTableColHdr.path=Ruta +ReportGenerator.artTableColHdr.progName=Nombre del programa +ReportGenerator.artTableColHdr.instDateTime=Fecha/Hora de instalacion +ReportGenerator.artTableColHdr.preview=Vista previa +ReportGenerator.artTableColHdr.file=Archivo +ReportGenerator.artTableColHdr.size=Tamanio +ReportGenerator.artTableColHdr.deviceId=ID del dispositivo +ReportGenerator.artTableColHdr.text=Texto +ReportGenerator.artTableColHdr.domain=Dominio +ReportGenerator.artTableColHdr.dateTaken=Fecha de captura +ReportGenerator.artTableColHdr.devManufacturer=Fabricante del dispositivo +ReportGenerator.artTableColHdr.devMake=Marca del dispositivo +ReportGenerator.artTableColHdr.devModel=Modelo del dispositivo +ReportGenerator.artTableColHdr.latitude=Latitud +ReportGenerator.artTableColHdr.longitude=Longitud +ReportGenerator.artTableColHdr.latitudeStart=Latitud inicial +ReportGenerator.artTableColHdr.longitudeStart=Longitud inicial +ReportGenerator.artTableColHdr.latitudeEnd=Latitud final +ReportGenerator.artTableColHdr.longitudeEnd=Longitud final +ReportGenerator.artTableColHdr.associatedArtifact=Artefacto asociado +ReportGenerator.artTableColHdr.count=Contador +ReportGenerator.artTableColHdr.personName=Nombre de la persona +ReportGenerator.artTableColHdr.phoneNumber=Numero de telefono +ReportGenerator.artTableColHdr.phoneNumHome=Numero de telefono (Casa) +ReportGenerator.artTableColHdr.phoneNumOffice=Numero de telefono (Oficina) +ReportGenerator.artTableColHdr.phoneNumMobile=Numero de telefono (Movil) +ReportGenerator.artTableColHdr.email=Correo electronico +ReportGenerator.artTableColHdr.msgType=Tipo de mensaje +ReportGenerator.artTableColHdr.direction=Direccion +ReportGenerator.artTableColHdr.readStatus=Estado de lectura +ReportGenerator.artTableColHdr.fromPhoneNum=Desde numero de telefono +ReportGenerator.artTableColHdr.fromEmail=Desde correo electronico +ReportGenerator.artTableColHdr.toPhoneNum=Para numero de telefono +ReportGenerator.artTableColHdr.toEmail=Para correo electronico +ReportGenerator.artTableColHdr.subject=Asunto +ReportGenerator.artTableColHdr.tskEmailTo=Correo electronico a +ReportGenerator.artTableColHdr.tskEmailCc=Correo electronico CC +ReportGenerator.artTableColHdr.tskEmailBcc=Correo electronico BCC +ReportGenerator.artTableColHdr.tskEmailFrom=Correo electronico de +ReportGenerator.artTableColHdr.tskMsgId=ID de mensaje +ReportGenerator.artTableColHdr.tskDateTimeRcvd=Fecha de recepcion +ReportGenerator.artTableColHdr.tskDateTimeSent=Fecha de envio +ReportGenerator.artTableColHdr.tskSubject=Asunto +ReportGenerator.artTableColHdr.tskSetName=Nombre del conjunto +ReportGenerator.artTableColHdr.tskInterestingFilesCategory=Regla +ReportGenerator.artTableColHdr.tskGpsRouteCategory=Categoria +ReportGenerator.artTableColHdr.tskPath=Ruta +ReportGenerator.artTableColHdr.calendarEntryType=Tipo de entrada de calendario +ReportGenerator.artTableColHdr.description=Descripcion +ReportGenerator.artTableColHdr.startDateTime=Fecha/Hora de inicio +ReportGenerator.artTableColHdr.endDateTime=Fecha/Hora de finalizacion +ReportGenerator.artTableColHdr.location=Ubicacion +ReportGenerator.artTableColHdr.shortCut=Acceso directo +ReportGenerator.artTableColHdr.deviceName=Nombre del dispositivo +ReportGenerator.artTableColHdr.deviceAddress=Direccion del dispositivo +ReportGenerator.artTableColHdr.altitude=Altitud +ReportGenerator.artTableColHdr.locationAddress=Direccion de ubicacion +ReportGenerator.artTableColHdr.category=Categoria +ReportGenerator.artTableColHdr.userId=ID de usuario +ReportGenerator.artTableColHdr.userName=Nombre de usuario +ReportGenerator.artTableColHdr.password=Contrasenia +ReportGenerator.artTableColHdr.appName=Nombre de la aplicacion +ReportGenerator.artTableColHdr.appPath=Ruta de la aplicacion +ReportGenerator.artTableColHdr.replytoAddress=Direccion de respuesta a +ReportGenerator.artTableColHdr.mailServer=Servidor de correo +ReportGenerator.artTableColHdr.tags=Etiquetas +ReportGenerator.artTableColHdr.localPath=Ruta local +ReportGenerator.artTableColHdr.remotePath=Ruta remota +ReportGenerator.errors.reportErrorTitle=Error al generar el informe +ReportGenerator.errors.reportErrorText=Error al generar el informe: +ReportVisualPanel1.getName.text=Selecciona y configura los modulos de informe +ReportVisualPanel2.getName.text=Configura el informe +ReportWizardAction.actionName.text=Generar informe +ReportWizardAction.reportWiz.title=Generar informe +ReportWizardAction.toolBarButton.text=Generar informe +ReportWizardAction.unableToSaveConfig.errorLabel.text=No se pudo guardar la configuracion del informe +ReportWizardFileOptionsPanel.finishButton.text=Finalizar +ReportWizardFileOptionsVisualPanel.getName.text=Configurar informe de archivos +ReportWizardPanel1.nextButton.text=Siguiente > +ReportWizardPanel1.finishButton.text=Finalizar +ReportWizardPanel2.finishButton.text=Finalizar +ReportWizardPanel2.nextButton.text=Siguiente > +ReportGenerator.artTableColHdr.extension.text=Extension +ReportGenerator.artTableColHdr.mimeType.text=Tipo MIME +ReportGenerator.artTableColHdr.processorArchitecture.text=Arquitectura del procesador +ReportGenerator.artTableColHdr.osName.text=Nombre del sistema operativo +ReportGenerator.artTableColHdr.osInstallDate.text=Fecha de instalacion +ReportGenerator.errList.failedMakeRptFolder=Error al crear la carpeta del informe, es posible que no se puedan generar informes. +ReportGenerator.notifyErr.errsDuringRptGen=Errores durante la generacion del informe: +ReportGenerator.errList.failedGetAllTagsArtifacts=Error al obtener todos los nombres de etiquetas y tipos de artefactos posibles. +ReportGenerator.errList.noReportSettings=No se han configurado los ajustes del informe. +ReportGenerator.errList.failedGetContentTags=Error al obtener etiquetas de contenido. +ReportGenerator.errList.errGetContentFromBBArtifact=Error al obtener contenido de un artefacto de Blackboard para incluir en el informe. +ReportGenerator.errList.failedGetBBAttribs=Error al obtener atributos de Blackboard al generar el informe. +ReportGenerator.errList.failedGetBBArtifacts=Error al obtener artefactos de Blackboard al generar el informe. +ReportGenerator.errList.failedQueryKWLists=Error al consultar listas de palabras clave. +ReportGenerator.errList.failedGetAbstractFileByID=Error al obtener el archivo abstracto por ID. +ReportGenerator.errList.failedQueryKWs=Error al consultar palabras clave. +ReportGenerator.errList.failedQueryHashsetLists=Error al consultar listas de conjuntos hash. +ReportGenerator.errList.failedGetAbstractFileFromID=Error al obtener el archivo abstracto por ID. +ReportGenerator.errList.failedQueryHashsetHits=Error al consultar coincidencias de conjuntos hash. +ReportGenerator.errList.coreExceptionWhileGenRptRow=Excepcion principal al generar datos de fila para el informe de artefactos. +CreatePortableCasePanel.selectAllButton.text=Seleccionar todos +CreatePortableCasePanel.deselectAllButton.text=Desmarcar todos +CreatePortableCasePanel.outputFolderTextField.text=jTextField1 +CreatePortableCasePanel.chooseOutputFolderButton.text=Elegir carpeta +CreatePortableCasePanel.jLabel1.text=Exportar archivos etiquetados como: +CreatePortableCasePanel.jLabel2.text=Seleccionar carpeta de salida: +CreatePortableCasePanel.errorLabel.text_1=Solo en Windows +FileReportDataTypes.filename.text=Nombre +FileReportDataTypes.fileExt.text=Extension del archivo +FileReportDataTypes.fileType.text=Tipo de archivo +FileReportDataTypes.isDel.text=Esta eliminado +FileReportDataTypes.aTime.text=ultimo acceso +FileReportDataTypes.crTime.text=Creado el archivo +FileReportDataTypes.mTime.text=ultima modificacion +FileReportDataTypes.size.text=Tamanio +FileReportDataTypes.address.text=Direccion +FileReportDataTypes.hash.text=Valor de hash +FileReportDataTypes.knownStatus.text=Estado conocido +FileReportDataTypes.perms.text=Permisos +FileReportDataTypes.path.text=Ruta completa +ReportWizardPortableCaseOptionsVisualPanel.getName.title=Elegir ajustes del caso portatil +ReportWizardPortableCaseOptionsVisualPanel.includeAppCheckbox.text=Incluir aplicacion en la carpeta (puede agregar hasta 1 GB de archivos) +TableReportGenerator.StatusColumn.Header=Estado de revision diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/bodyfile/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/modules/bodyfile/Bundle_ar.properties new file mode 100644 index 0000000000..c6bd820323 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/modules/bodyfile/Bundle_ar.properties @@ -0,0 +1,8 @@ +ReportBodyFile.progress.querying=Consultando archivos... +ReportBodyFile.ingestWarning.text=Advertencia, este informe se ejecuto antes de que se completaran los servicios de ingestion\. +ReportBodyFile.progress.loading=Cargando archivos... +ReportBodyFile.progress.processing=Procesando {0}... +ReportBodyFile.getName.text=Archivo del Cuerpo TSK +ReportBodyFile.getDesc.text=Informe de formato de archivo de cuerpo con marcas de tiempo MAC para cada archivo. Este formato puede ser utilizado para una vista de linea de tiempo. +ReportBodyFile.getFilePath.text=BodyFile.txt +ReportBodyFile.generateReport.srcModuleName.text=Archivo del Cuerpo TSK diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/caseuco/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/modules/caseuco/Bundle_ar.properties new file mode 100644 index 0000000000..65988fe161 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/modules/caseuco/Bundle_ar.properties @@ -0,0 +1,13 @@ +CaseUcoReportModule.ingestWarning=Advertencia, este informe sera creado antes de que se completen los servicios de ingestion. +CaseUcoReportModule.ioError=Se ha producido un error de E/S al generar el informe. +CaseUcoReportModule.noCaseOpen=No hay un caso abierto actualmente. +CaseUcoReportModule.noDataSourceSelected=Ningun origen de datos seleccionado para el informe CASE-UCO. +CaseUcoReportModule.notInitialized=El panel de configuracion de CASE-UCO no ha sido inicializado. +CaseUcoReportModule.processingDataSource=Procesando origen de datos: %s +CaseUcoReportModule.srcModuleName=Informe CASE-UCO +CaseUcoReportModule.tskCoreException=Se encontro una TskCoreException [%s] al generar el informe. Por favor, consulte el registro para obtener mas detalles. +CaseUcoReportModule.unableToCreateDirectories=No se puede crear el directorio para el informe CASE-UCO. +OpenIDE-Module-Name=CaseUcoModule +CaseUcoReportModule.getName.text=CASE-UCO +CaseUcoReportModule.getDesc.text=Informe de formato CASE-UCO con campos basicos de propiedades para cada archivo. +ReportCaseUcoConfigPanel.jLabelSelectDataSource.text=Seleccione un origen de datos para el informe CASE-UCO. diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/datasourcesummaryexport/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/modules/datasourcesummaryexport/Bundle_ar.properties new file mode 100644 index 0000000000..595b971572 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/modules/datasourcesummaryexport/Bundle_ar.properties @@ -0,0 +1,124 @@ +DataSourceSummaryReport.error.noDataSources=No se han seleccionado fuentes de datos para el informe. +DataSourceSummaryReport.error.noOpenCase=No hay un caso abierto actualmente. +DataSourceSummaryReport.excelFileWriteError=No se pudo escribir el archivo XLSX. +DataSourceSummaryReport.failedToCompleteReport=No se pudo completar el informe. +DataSourceSummaryReport.getName.text=Informe Resumen del Origen de Datos +DataSourceSummaryReport.getDesc.text=Informe resumen del origen de datos en formato Excel (XLS). +DataSourceSummaryReport.endReport.srcModuleName.text=Informe de Excel +# {0} - sheetNumber +ExcelExport_writeExcel_noSheetName=Hoja {0} +ExcelExportAction_exportToXLSX_beginExport=Comenzando la exportacion... +ExcelExportAction_exportToXLSX_gatheringAnalysisData=Recopilando datos de analisis +ExcelExportAction_exportToXLSX_gatheringContainerData=Recopilando datos del contenedor e imagen +ExcelExportAction_exportToXLSX_gatheringFileData=Recopilando datos de archivos y tipo MIME +ExcelExportAction_exportToXLSX_gatheringGeoData=Recopilando datos de geolocalizacion +ExcelExportAction_exportToXLSX_gatheringIngestData=Recopilando datos del historial de ingestion +ExcelExportAction_exportToXLSX_gatheringPastData=Recopilando datos historicos +ExcelExportAction_exportToXLSX_gatheringRecentActivityData=Recopilando datos de actividad reciente +ExcelExportAction_exportToXLSX_gatheringTimelineData=Recopilando datos de la linea de tiempo +ExcelExportAction_exportToXLSX_gatheringUserData=Recopilando datos de actividad del usuario +ExcelExportAction_exportToXLSX_writingToFile=Escribiendo en el archivo... +ExcelExportAction_getXLSXPath_directory=ResumenDelOrigenDeDatos +ExcelExportAction_moduleName=Resumen del Origen de Datos +ExportAnalysisResults_countColumn_title=Cantidad +ExportAnalysisResults_hashsetHits_tabName=Resultados de Conjuntos de Hash +ExportAnalysisResults_interestingItemHits_tabName=Resultados de Elementos Interesantes +ExportAnalysisResults_keyColumn_title=Nombre +ExportAnalysisResults_keywordHits_tabName=Resultados de Busqueda de Palabras Clave +ExportAnalysisResults_keywordSearchModuleName=Busqueda de Palabras Clave +ExportContainerInfo_export_acquisitionDetails=Detalles de Adquisicion: +ExportContainerInfo_export_deviceId=ID del Dispositivo: +ExportContainerInfo_export_displayName=Nombre a Mostrar: +ExportContainerInfo_export_filePaths=Rutas de Archivos: +ExportContainerInfo_export_imageType=Tipo de Imagen: +ExportContainerInfo_export_md5=MD5: +ExportContainerInfo_export_originalName=Nombre Original: +ExportContainerInfo_export_sectorSize=Tamanio de Sector: +ExportContainerInfo_export_sha1=SHA1: +ExportContainerInfo_export_sha256=SHA256: +ExportContainerInfo_export_size=Tamanio: +ExportContainerInfo_export_timeZone=Zona Horaria: +ExportContainerInfo_export_unallocatedSize=Espacio No Asignado: +ExportContainerInfo_setFieldsForNonImageDataSource_na=N/A +ExportContainerInfo_tabName=Contenedor +ExportGeolocation_cityColumn_title=Ciudad mas Cercana +ExportGeolocation_countColumn_title=Cantidad +ExportGeolocation_mostCommon_tabName=Ciudades mas Comunes +ExportGeolocation_mostRecent_tabName=Ciudades mas Recientes +ExportGeolocation_unknownRow_title=Desconocido +ExportIngestHistory_endTimeColumn=Hora de Finalizacion +ExportIngestHistory_ingestStatusTimeColumn=Estado de Ingestion +ExportIngestHistory_moduleNameTimeColumn=Nombre del Modulo +ExportIngestHistory_sheetName=Historial de Ingestion +ExportIngestHistory_startTimeColumn=Hora de Inicio +ExportIngestHistory_versionColumn=Version del Modulo +ExportPastCases_caseColumn_title=Caso +ExportPastCases_countColumn_title=Cantidad +ExportPastCases_notableFileTable_tabName=Casos con elementos notables comunes +ExportPastCases_seenDevicesTable_tabName=Casos con los mismos ID de dispositivos +ExportPastCases_seenResultsTable_tabName=Casos con las mismas direcciones +ExportRecentFiles_attachmentsTable_tabName=Adjuntos Recientes +ExportRecentFiles_col_head_date=Fecha +ExportRecentFiles_col_header_domain=Dominio +ExportRecentFiles_col_header_path=Ruta +ExportRecentFiles_col_header_sender=Remitente +ExportRecentFiles_docsTable_tabName=Documentos Abiertos Recientemente +ExportRecentFiles_downloadsTable_tabName=Descargas Recientes +ExportTypes_artifactsTypesPieChart_title=Tipos de Artefactos +ExportTypes_excelTabName=Tipos +ExportTypes_fileMimeTypesChart_audio_title=Audio +ExportTypes_fileMimeTypesChart_documents_title=Documentos +ExportTypes_fileMimeTypesChart_executables_title=Ejecutables +ExportTypes_fileMimeTypesChart_images_title=Imagenes +ExportTypes_fileMimeTypesChart_notAnalyzed_title=No Analizados +ExportTypes_fileMimeTypesChart_other_title=Otros +ExportTypes_fileMimeTypesChart_title=Tipos de Archivos +ExportTypes_fileMimeTypesChart_unknown_title=Desconocidos +ExportTypes_fileMimeTypesChart_valueLabel=Cantidad +ExportTypes_fileMimeTypesChart_videos_title=Videos +ExportTypes_filesByCategoryTable_allocatedRow_title=Archivos Asignados +ExportTypes_filesByCategoryTable_directoryRow_title=Directorios +ExportTypes_filesByCategoryTable_slackRow_title=Archivos de Espacio Muerto +ExportTypes_filesByCategoryTable_unallocatedRow_title=Archivos No Asignados +ExportTypes_osLabel_title=Sistema Operativo +ExportTypes_sizeLabel_title=Tamanio +ExportTypes_usageLabel_title=Uso +ExportUserActivity_noDataExists=No existen datos de comunicacion +ExportUserActivity_tab_title=Actividad del Usuario +ExportUserActivity_TopAccountTableModel_accountType_header=Tipo de Cuenta +ExportUserActivity_TopAccountTableModel_lastAccess_header=ultimo Acceso +ExportUserActivity_TopAccountTableModel_tabName=Tipos de Cuentas Recientes Utilizados +ExportUserActivity_TopDeviceAttachedTableModel_dateAccessed_header=ultimo Acceso +ExportUserActivity_TopDeviceAttachedTableModel_deviceId_header=ID del Dispositivo +ExportUserActivity_TopDeviceAttachedTableModel_makeModel_header=Marca y Modelo +ExportUserActivity_TopDeviceAttachedTableModel_tabName=Dispositivos Recientes Conectados +ExportUserActivity_TopDomainsTableModel_count_header=Visitas +ExportUserActivity_TopDomainsTableModel_domain_header=Dominio +ExportUserActivity_TopDomainsTableModel_lastAccess_header=ultimo Acceso +ExportUserActivity_TopDomainsTableModel_tabName=Dominios Recientes +ExportUserActivity_TopProgramsTableModel_count_header=Veces Ejecutado +ExportUserActivity_TopProgramsTableModel_folder_header=Carpeta +ExportUserActivity_TopProgramsTableModel_lastrun_header=ultima Ejecucion +ExportUserActivity_TopProgramsTableModel_name_header=Programa +ExportUserActivity_TopProgramsTableModel_tabName=Programas Recientes +ExportUserActivity_TopWebSearchTableModel_dateAccessed_header=Fecha de Acceso +ExportUserActivity_TopWebSearchTableModel_searchString_header=Palabra Clave de Busqueda +ExportUserActivity_TopWebSearchTableModel_tabName=Busquedas en la Web Recientes +ExportUserActivity_TopWebSearchTableModel_translatedResult_header=Traducido +SizeRepresentationUtil_units_bytes=bytes +SizeRepresentationUtil_units_gigabytes=GB +SizeRepresentationUtil_units_kilobytes=KB +SizeRepresentationUtil_units_megabytes=MB +SizeRepresentationUtil_units_petabytes=PB +SizeRepresentationUtil_units_terabytes=TB +TimelinePanel_earliestLabel_title=Primera Fecha +TimelinePanel_getExports_activityRange=Rango de Actividad +TimelinePanel_getExports_chartName=ultimos 30 Dias +TimelinePanel_getExports_dateColumnHeader=Fecha +TimelinePanel_getExports_earliest=Primera Fecha: +TimelinePanel_getExports_latest=ultima Fecha: +TimelinePanel_getExports_sheetName=Linea de Tiempo +TimelinePanel_latestLabel_title=ultima Fecha +TimlinePanel_last30DaysChart_artifactEvts_title=Eventos de Resultados +TimlinePanel_last30DaysChart_fileEvts_title=Eventos de Archivos +TimlinePanel_last30DaysChart_title=ultimos 30 Dias diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ar.properties new file mode 100644 index 0000000000..9e35f6569d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ar.properties @@ -0,0 +1,19 @@ +ReportExcel.exceptionMessage.dataTooLarge=El valor es demasiado largo para caber en una celda de Excel. +ReportExcel.exceptionMessage.errorText=Error al mostrar los datos en una celda de Excel. +ReportExcel.numAartifacts.text=Numero de artefactos: +ReportExcel.getName.text=Informe de Excel +ReportExcel.getDesc.text=Un informe sobre los resultados e items etiquetados en formato Excel (XLS). +ReportExcel.sheetName.text=Resumen +ReportExcel.cellVal.summary=Resumen +ReportExcel.cellVal.caseName=Nombre del Caso: +ReportExcel.cellVal.caseNum=Numero del Caso: +ReportExcel.cellVal.examiner=Examinador: +ReportExcel.cellVal.numImages=Numero de Imagenes: +ReportExcel.endReport.srcModuleName.text=Informe de Excel +ReportExcel.writeSummary.caseName=Nombre del Caso: +ReportExcel.writeSummary.caseNotes=Notas del Caso: +ReportExcel.writeSummary.caseNum=Numero del Caso: +ReportExcel.writeSummary.examiner=Examinador: +ReportExcel.writeSummary.numImages=Numero de fuentes de datos en el caso: +ReportExcel.writeSummary.sheetName=Resumen +ReportExcel.writeSummary.summary=Resumen \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/file/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/modules/file/Bundle_ar.properties new file mode 100644 index 0000000000..e3d2bd5f4f --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/modules/file/Bundle_ar.properties @@ -0,0 +1,8 @@ +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. + +ReportFileTextConfigurationPanel.tabDelimitedButton.text=Delimitado por tabulaciones +ReportFileTextConfigurationPanel.commaDelimitedButton.text=Delimitado por comas +FileReportText.getName.text=Archivos - Texto +FileReportText.getDesc.text=Un archivo de texto delimitado que contiene informacion sobre archivos individuales en el caso. diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ar.properties new file mode 100644 index 0000000000..fba084c4c3 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ar.properties @@ -0,0 +1,39 @@ +ReportHTML.addThumbRows.dataType.title=Imagenes Etiquetadas - {0} +ReportHTML.addThumbRows.dataType.msg=Resultados Etiquetados y Contenidos que contienen imagenes. +ReportHTML.thumbLink.tags=Etiquetas: +ReportHTML.getName.text=Reporte HTML +ReportHTML.getDesc.text=Un reporte sobre resultados e items etiquetados en formato HTML. +ReportHTML.writeIndex.title=para el caso {0} +ReportHTML.writeIndex.noFrames.msg=Tu navegador no es compatible con nuestra configuracion de marcos (frames). +ReportHTML.writeIndex.noFrames.seeNav=Por favor, visita la pagina de navegacion para enlaces a artefactos, +ReportHTML.writeIndex.seeSum=y la pagina de resumen para un resumen del caso. +ReportHTML.writeNav.title=Navegacion del Reporte +ReportHTML.writeNav.h1=Navegacion del Reporte +ReportHTML.writeNav.summary=Resumen del Caso +ReportHTML.writeSum.case=Caso: +ReportHTML.writeSum.caseNotes=Notas: +ReportHTML.writeSum.caseNumber=Numero de Caso: +ReportHTML.writeSum.caseNumImages=Numero de fuentes de datos en el caso: +ReportHTML.writeSum.examiner=Examinador: +ReportHTML.writeSum.title=Resumen del Caso +ReportHTML.writeSum.warningMsg=Advertencia, este reporte se genero antes de que se completaran los servicios de ingestion! +# +# autopsy/test/scripts/regression.py._html_report_diff() uses reportGenOn.text, caseName, caseNum, +# examiner as a regex signature to skip report.html and summary.html +# +ReportHTML.writeSum.reportGenOn.text=Reporte HTML generado el {0} +ReportHTML.writeSum.imageInfoHeading=

    Informacion de la Imagen:

    +ReportHTML.writeSum.softwareInfoHeading=

    Informacion del Software:

    +ReportHTML.writeSum.ingestHistoryHeading=

    Historial de Ingestion:

    +ReportHTML.writeSum.modulesEnabledHeading=Modulos Habilitados: +ReportHTML.writeSum.autopsyVersion=Version de Autopsy: +ReportHTML.writeSum.timezone=Zona Horaria: +ReportHTML.writeSum.path=Ruta: +ReportHTML.writeIndex.srcModuleName.text=Reporte HTML +HTMLReportConfigurationPanel.headerTextField.text= +HTMLReportConfigurationPanel.footerLabel.text=Pie de Pagina: +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. +HTMLReportConfigurationPanel.headerLabel.text=Encabezado: +HTMLReportConfigurationPanel.footerTextField.text= diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ar.properties new file mode 100644 index 0000000000..ce22abc033 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ar.properties @@ -0,0 +1,38 @@ +KMLReport.bookmarkError=No se ha podido extraer la informacion del marcador. +# {0} - filePath +KMLReport.errorGeneratingReport=Error al agregar {0} al caso como un informe. +KMLReport.exifPhotoError=No se pudieron extraer fotos con metadatos EXIF. +KMLReport.failedToCompleteReport=Error al completar el informe. +KMLReport.gpsBookmarkError=No se pudieron obtener los marcadores GPS de la base de datos. +KMLReport.gpsRouteDatabaseError=No se pudieron obtener las rutas GPS de la base de datos. +KMLReport.gpsRouteError=No se pudo extraer informacion de ruta GPS. +KMLReport.gpsSearchDatabaseError=No se pudieron obtener las busquedas GPS de la base de datos. +KMLReport.kmlFileWriteError=No se pudo escribir el archivo KML. +KMLReport.locationDatabaseError=No se pudo obtener la ultima ubicacion GPS conocida de la base de datos. +KMLReport.locationError=No se pudo extraer informacion de la ultima ubicacion conocida. +KMLReport.partialFailure=Hubo un error al crear el informe. Algunos elementos no se exportaron. +KMLReport.stylesheetError=Error al colocar la hoja de estilo KML. El archivo .KML no funcionara correctamente. +KMLReport.trackpointDatabaseError=No se pudieron obtener los puntos de ruta GPS de la base de datos. +KMLReport.trackpointError=No se pudo extraer informacion de los puntos de ruta GPS. +KMLReport.unableToExtractPhotos=No se pudo extraer informacion de fotos. +KMLReport.unableToOpenCase=Excepcion al obtener el caso abierto. +ReportBodyFile.ingestWarning.text=Advertencia de Ingestion +ReportKML.progress.querying=Consultando archivos... +ReportKML.progress.loading=Cargando archivos... +ReportKML.getName.text=KML de Google Earth +ReportKML.getDesc.text=Informe en formato KML con coordenadas para archivos relevantes. Este formato se puede utilizar para visualizar en Google Earth. +ReportKML.getFilePath.text=ReporteKML.kml: +ReportKML.genReport.srcModuleName.text=Datos Geoespaciales +ReportKML.genReport.reportName=Informe KML +ReportKML.latLongStartPoint={0};{1};;{2} (Inicio)\n +ReportKML.latLongEndPoint={0};{1};;{2} (Fin)\n +Route_Details_Header=Ruta GPS +Waypoint_Area_Point_Display_String=Punto de Contorno de area GPS +Waypoint_Bookmark_Display_String=Marcador GPS +Waypoint_EXIF_Display_String=Metadatos EXIF con Ubicacion +Waypoint_Last_Known_Display_String=ultima Ubicacion GPS Conocida +Waypoint_Route_Point_Display_String=Punto Individual de Ruta GPS +Waypoint_Search_Display_String=Busqueda GPS +Waypoint_Track_Display_String=Trayectoria GPS +Waypoint_Track_Point_Display_String=Punto Individual de Trayectoria GPS +Waypoint_Trackpoint_Display_String=Punto de Trayectoria GPS diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/portable/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/modules/portable/Bundle_ar.properties new file mode 100644 index 0000000000..f6561c7269 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/modules/portable/Bundle_ar.properties @@ -0,0 +1,46 @@ +PortableCaseReportModule.compressCase.canceled=Compresion cancelada por el usuario +PortableCaseReportModule.compressCase.errorCompressingCase=Error al comprimir el caso +# {0} - Ruta de la carpeta temporal +PortableCaseReportModule.compressCase.errorCreatingTempFolder=No se pudo crear la carpeta temporal {0} +PortableCaseReportModule.compressCase.errorFinding7zip=No se pudo encontrar el ejecutable de 7-Zip +# {0} - Nombre del archivo +PortableCaseReportModule.copyContentToPortableCase.copyingFile=Copiando archivo {0} +# {0} - Carpeta del caso +PortableCaseReportModule.createCase.caseDirExists=La carpeta del caso {0} ya existe +PortableCaseReportModule.createCase.errorCreatingCase=Error al crear el caso +# {0} - Carpeta +PortableCaseReportModule.createCase.errorCreatingFolder=Error al crear la carpeta {0} +PortableCaseReportModule.createCase.errorStoringMaxIds=Error al almacenar los ID de la base de datos maximos +PortableCaseReportModule.generateCaseUcoReport.errorCreatingReportFolder=No se pudo crear la carpeta del informe +PortableCaseReportModule.generateCaseUcoReport.errorGeneratingCaseUcoReport=Problema al generar el informe CASE-UCO +PortableCaseReportModule.generateCaseUcoReport.startCaseUcoReportGeneration=Creando un informe CASE-UCO del caso portatil +PortableCaseReportModule.generateCaseUcoReport.successCaseUcoReportGeneration=Informe CASE-UCO del caso portatil creado con exito +PortableCaseReportModule.generateReport.caseClosed=El caso actual ha sido cerrado +PortableCaseReportModule.generateReport.compressingCase=Comprimiendo el caso... +# {0} - Nombre de la etiqueta +PortableCaseReportModule.generateReport.copyingArtifacts=Copiando artefactos etiquetados como {0}... +# {0} - Nombre de la etiqueta +PortableCaseReportModule.generateReport.copyingFiles=Copiando archivos etiquetados como {0}... +PortableCaseReportModule.generateReport.copyingTags=Copiando etiquetas... +PortableCaseReportModule.generateReport.creatingCase=Creando la base de datos del caso portatil... +PortableCaseReportModule.generateReport.errorCopyingArtifacts=Error al copiar los artefactos etiquetados +PortableCaseReportModule.generateReport.errorCopyingAutopsy=Error al copiar la aplicacion +PortableCaseReportModule.generateReport.errorCopyingFiles=Error al copiar los archivos etiquetados +PortableCaseReportModule.generateReport.errorCopyingInterestingFiles=Error al copiar archivos interesantes +PortableCaseReportModule.generateReport.errorCopyingInterestingResults=Error al copiar los resultados interesantes +PortableCaseReportModule.generateReport.errorCopyingTags=Error al copiar las etiquetas +PortableCaseReportModule.generateReport.errorCreatingImageTagTable=Error al crear la tabla de etiquetas de imagenes +# {0} - Nombre del tipo de atributo +PortableCaseReportModule.generateReport.errorLookingUpAttrType=Error al buscar el tipo de atributo {0} +PortableCaseReportModule.generateReport.errorReadingSets=Error al leer los conjuntos de elementos interesantes de la base de datos del caso +PortableCaseReportModule.generateReport.errorReadingTags=Error al leer las etiquetas de la base de datos del caso +PortableCaseReportModule.generateReport.interestingItemError=Error al cargar elementos interesantes +PortableCaseReportModule.generateReport.noContentToCopy=No hay archivos interesantes, resultados o elementos etiquetados para copiar +# {0} - Carpeta de salida +PortableCaseReportModule.generateReport.outputDirDoesNotExist=La carpeta de salida {0} no existe +# {0} - Carpeta de salida +PortableCaseReportModule.generateReport.outputDirIsNotDir=La carpeta de salida {0} no es una carpeta valida +PortableCaseReportModule.generateReport.verifying=Verificando los parametros seleccionados... +PortableCaseReportModule.getDescription.description=Copia los elementos seleccionados a un nuevo caso de un solo usuario que se puede compartir facilmente +PortableCaseReportModule.getName.name=Caso portatil +PortableCaseReportModule_generateReport_copyingAutopsy=Copiando aplicacion... \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/taggedhashes/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/report/modules/taggedhashes/Bundle_ar.properties new file mode 100644 index 0000000000..b4b1f4564e --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/modules/taggedhashes/Bundle_ar.properties @@ -0,0 +1,11 @@ +AddTaggedHashesToHashDb.error.noHashSetsSelected=No se ha seleccionado ningun conjunto de hash para la exportacion. +AddTaggedHashesToHashDb.error.noTagsSelected=No se han seleccionado etiquetas para la exportacion. +AddTaggedHashesToHashDb.error.unableToOpenCase=Excepcion al obtener el caso abierto. +HashDbConfigDialog.okButton.text=OK +HashDbConfigDialog.cancelButton.text=Cancelar +SaveTaggedHashesToHashDbConfigPanel.deselectAllButton.text=Deseleccionar Todo +SaveTaggedHashesToHashDbConfigPanel.selectAllButton.text=Seleccionar Todo +SaveTaggedHashesToHashDbConfigPanel.jAllTagsCheckBox.text=Todos los resultados etiquetados +SaveTaggedHashesToHashDbConfigPanel.jLabel2.text=Exportar al conjunto de hash: +SaveTaggedHashesToHashDbConfigPanel.configureHashDatabasesButton.text=Configurar Conjuntos de Hash... +SaveTaggedHashesToHashDbConfigPanel.jLabel1.text=Exportar hash de archivos etiquetados como: \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/test/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/test/Bundle_ar.properties new file mode 100644 index 0000000000..09a8ccdf27 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/test/Bundle_ar.properties @@ -0,0 +1,3 @@ +CustomArtifactsCreatorDataSourceIngestModule.exceptionMessage.errorCreatingCustomType=Error al crear un tipo de artefacto personalizado. +CustomArtifactsCreatorFileIngestModule.exceptionMessage.errorCreatingCustomType=Error al crear un tipo de artefacto personalizado. +InterestingArtifactCreatorIngestModule.exceptionMessage.errorCreatingCustomType=Error al crear un tipo de artefacto personalizado. diff --git a/Core/src/org/sleuthkit/autopsy/textextractors/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/textextractors/Bundle_ar.properties new file mode 100644 index 0000000000..4a194aa3f3 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/textextractors/Bundle_ar.properties @@ -0,0 +1,2 @@ +AbstractFileTikaTextExtract.index.tikaParseTimeout.text=Excepcion: Tiempo de espera de analisis de Tika para el contenido: {0}, {1} +AbstractFileTikaTextExtract.index.exception.tikaParse.msg=Excepcion: Excepcion inesperada en la ejecucion de la tarea de analisis de Tika para el archivo: {0}, {1} \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ar.properties new file mode 100644 index 0000000000..a054532cdf --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ar.properties @@ -0,0 +1,13 @@ +OptionsCategory_Name_Machine_Translation=Traduccion Automatica +OptionsCategory_Keywords_Machine_Translation_Settings=Configuracion de Traduccion Automatica +TranslationContentPanel.ocrLabel.text=OCR (Reconocimiento optico de Caracteres): +TranslationOptionsPanel.noTextTranslators.text=No existen traductores de texto, la traduccion esta deshabilitada. +TranslationOptionsPanel.noTextTranslatorSelected.text=No se ha seleccionado un traductor de texto, la traduccion esta deshabilitada. +TranslationOptionsPanel.textTranslatorsUnavailable.text=No se pudo obtener el traductor de texto seleccionado, la traduccion esta deshabilitada. +TranslationOptionsPanel.translationDisabled.text=Traduccion deshabilitada +TranslationOptionsPanelController.moduleErr=Error del modulo +TranslationOptionsPanelController.moduleErr.msg=Un modulo genero un error al escuchar actualizaciones de TranslationSettingsPanelController. Consulte el registro para determinar que modulo. Algunos datos podrian estar incompletos. +TranslationContentPanel.showLabel.text=Mostrar: +TranslationOptionsPanel.translationServiceLabel.text=Traductor de texto: +TranslationOptionsPanel.translationOptionsDescription.text=Configura un servicio de traduccion de texto de terceros para habilitar la traduccion de texto y nombres de archivos. +TranslationOptionsPanel.enableOcrCheckBox.text=Habilitar el Reconocimiento optico de Caracteres (OCR) en el visor de contenido de traduccion. diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ar.properties new file mode 100644 index 0000000000..3f47d95017 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ar.properties @@ -0,0 +1,30 @@ +BingTranslator.name.text=Traductor Bing +BingTranslatorSettingsPanel.warning.invalidKey=Clave de autenticacion de traduccion no valida +BingTranslatorSettingsPanel.warning.targetLanguageFailure=No se pueden obtener la lista de idiomas de destino o analizar el resultado recibido +GoogleTranslator.name.text=Traductor de Google +GoogleTranslatorSettingsPanel.browseButton.text=Navegar +GoogleTranslatorSettingsPanel.credentialsLabel.text=Ruta de credenciales: +GoogleTranslatorSettingsPanel.errorMessage.fileNotFound=Archivo de credenciales no encontrado, por favor establece la ubicacion de un archivo de credenciales JSON valido. +GoogleTranslatorSettingsPanel.errorMessage.noFileSelected=Se debe seleccionar un archivo JSON para proporcionar las credenciales de Google Translate. +GoogleTranslatorSettingsPanel.errorMessage.translationFailure=Error de traduccion con las credenciales especificadas +GoogleTranslatorSettingsPanel.errorMessage.unableToMakeCredentials=No se puede construir el objeto de credenciales a partir del archivo de credenciales, por favor establece la ubicacion de un archivo de credenciales JSON valido. +GoogleTranslatorSettingsPanel.errorMessage.unableToReadCredentials=No se pueden leer las credenciales del archivo de credenciales, por favor establece la ubicacion de un archivo de credenciales JSON valido. +GoogleTranslatorSettingsPanel.errorMessage.unknownFailureGetting=Fallo al obtener la lista de idiomas admitidos con el archivo de credenciales actual. +GoogleTranslatorSettingsPanel.errorMessage.unknownFailurePopulating=Fallo al completar la lista de idiomas admitidos con el archivo de credenciales actual. +GoogleTranslatorSettingsPanel.fileChooser.confirmButton=Seleccionar +GoogleTranslatorSettingsPanel.json.description=Archivos JSON +GoogleTranslatorSettingsPanel.warningLabel.text= +GoogleTranslatorSettingsPanel.targetLanguageLabel.text=Idioma de destino: +BingTranslatorSettingsPanel.testButton.text=Prueba +BingTranslatorSettingsPanel.testResultValueLabel.text= +BingTranslatorSettingsPanel.resultLabel.text=Resultado: +BingTranslatorSettingsPanel.untranslatedLabel.text=No traducido: +BingTranslatorSettingsPanel.targetLanguageLabel.text=Idioma de destino: +BingTranslatorSettingsPanel.authenticationKeyField.toolTipText=Ingrese el hash para el +GoogleTranslatorSettingsPanel.testButton.text=Prueba +GoogleTranslatorSettingsPanel.untranslatedLabel.text=No traducido: +GoogleTranslatorSettingsPanel.resultLabel.text=Resultado: +GoogleTranslatorSettingsPanel.testResultValueLabel.text= +BingTranslatorSettingsPanel.authenticationKeyLabel.text=Clave de autenticacion: +GoogleTranslatorSettingsPanel.instructionsTextArea.text=
    You will need a JSON credentials file which contains your service account key for your Google Translate account. Information on how to create a service account key is available here: https://cloud.google.com/iam/docs/creating-managing-service-account-keys.
    +BingTranslatorSettingsPanel.instructionsTextArea.text_1=
    You will need to provide a Microsoft Translator authentication key for your Microsoft Translator account. Instructions on how to get one are available here: https://docs.microsoft.com/en-us/azure/cognitive-services/translator/translator-text-how-to-signup.
    diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ar.properties new file mode 100644 index 0000000000..9fa46a92ec --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ar.properties @@ -0,0 +1,23 @@ +OptionsCategory_Name_Machine_Translation=Traduccion Automatica +OptionsCategory_Keywords_Machine_Translation_Settings=Configuracion de Traduccion Automatica +TranslatedContentPanel.comboBoxOption.originalText=Texto Original (Hasta 25KB) +TranslatedContentPanel.comboBoxOption.translatedText=Texto Traducido +TranslatedContentViewer.emptyTranslation=El software de traduccion automatica no devolvio ningun texto. +# {0} - mensaje de excepcion +TranslatedContentViewer.errorExtractingText=Se produjo un error al extraer el texto ({0}). +TranslatedContentViewer.extractingText=Extrayendo texto, por favor espere... +TranslatedContentViewer.fileHasNoText=El archivo no contiene texto. +TranslatedContentViewer.noServiceProvider=No se encontro el software de traduccion automatica. +TranslatedContentViewer.ocrNotEnabled=El OCR no esta habilitado. Para cambiarlo, vaya a Herramientas->Opciones->Traduccion Automatica +TranslatedContentViewer.translatingText=Traduciendo texto, por favor espere... +# {0} - mensaje de excepcion +TranslatedContentViewer.translationException=Se produjo un error al traducir el texto ({0}). +TranslatedTextViewer.maxPayloadSize=Se traducira hasta los primeros %dKB de texto +TranslatedTextViewer.title=Traduccion +TranslatedTextViewer.toolTip=Muestra el texto del archivo traducido. +TranslationContentPanel.autoDetectOCR=Deteccion automatica de idioma +TranslationContentPanel.ocrLabel.text=OCR (Reconocimiento optico de Caracteres): +TranslationOptionsPanelController.moduleErr=Error del modulo +TranslationOptionsPanelController.moduleErr.msg=Un modulo genero un error al escuchar actualizaciones de TranslationSettingsPanelController. Consulte el registro para determinar que modulo. Algunos datos podrian estar incompletos. +TranslationContentPanel.showLabel.text=Mostrar: +TranslationContentPanel.jSepLarge1.AccessibleContext.accessibleName= diff --git a/Core/src/org/sleuthkit/autopsy/timeline/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/Bundle_ar.properties new file mode 100644 index 0000000000..bff3f43ece --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/Bundle_ar.properties @@ -0,0 +1,59 @@ +CTL_MakeTimeline=Linea de Tiempo +CTL_TimeLineTopComponentAction=Componente Superior de Linea de Tiempo +CTL_TimeLineTopComponent=Linea de Tiempo + +FilteredEventsModel.timeRangeProperty.errorMessage=Error al obtener el intervalo de tiempo. +FilteredEventsModel.timeRangeProperty.errorTitle=Linea de Tiempo +OpenTimelineAction.displayName=Linea de Tiempo +OpenTimeLineAction.msgdlg.text=No se pudo crear la linea de tiempo, no hay fuentes de datos. +OpenTimelineAction.settingsErrorMessage=Error al inicializar la configuracion de la linea de tiempo. +PrompDialogManager.buttonType.continueNoUpdate=Continuar sin actualizar +PrompDialogManager.buttonType.showTimeline=Continuar +PrompDialogManager.buttonType.update=Actualizar BD +PromptDialogManager.confirmDuringIngest.contentText=¿Deseas continuar? +PromptDialogManager.confirmDuringIngest.headerText=La ingestion aun esta en proceso y la linea de tiempo puede estar incompleta. +PromptDialogManager.progressDialog.title=Generando Datos de la Linea de Tiempo +PromptDialogManager.rebuildPrompt.details=Detalles +PromptDialogManager.rebuildPrompt.headerText=La base de datos de la linea de tiempo esta incompleta o desactualizada. Algunos eventos pueden faltar o ser inexactos y algunas funciones pueden no estar disponibles. +PromptDialogManager.showTimeLineDisabledMessage.contentText=La funcionalidad de la linea de tiempo aun no esta disponible. La linea de tiempo estara desactivada. +PromptDialogManager.showTimeLineDisabledMessage.headerText= +PromptDialogManager.showTooManyFiles.contentText=Hay demasiados archivos en la base de datos para garantizar un rendimiento razonable. La linea de tiempo estara desactivada. +PromptDialogManager.showTooManyFiles.headerText= +ShowInTimelineDialog.amountValidator.message=La cantidad ingresada solo debe contener digitos. +ShowInTimelineDialog.artifactTitle=Ver Resultado en la Linea de Tiempo. +ShowInTimelineDialog.eventSelectionValidator.message=Debes seleccionar un evento. +# {0} - ruta del archivo +ShowInTimelineDialog.fileTitle=Ver {0} en la linea de tiempo. +ShowInTimelineDialog.showTimelineButtonType.text=Mostrar Linea de Tiempo +Timeline.dialogs.title=\ Linea de Tiempo +Timeline.frameName.text={0} - Linea de Tiempo de Autopsy +Timeline.old.version=\ Este caso se creo con una version anterior de Autopsy.\nLa linea de tiempo no mostrara eventos de fuentes de datos agregadas con la version anterior de Autopsy. +Timeline.resultsPanel.title=Resultados de la Linea de Tiempo +Timeline.runJavaFxThread.progress.creating=Creando linea de tiempo... +Timeline.zoomOutButton.text=Reducir Zoom +Timeline.goToButton.text=Ir a: +Timeline.yearBarChart.x.years=Anios +Timeline.resultPanel.loading=Cargando... + +TimeLinecontroller.updateNowQuestion=¿Deseas actualizar la base de datos de eventos ahora? +TimelineFrame.title=Linea de Tiempo +TimelinePanel.jButton1.text=6m +TimelinePanel.jButton13.text=todos +TimelinePanel.jButton10.text=1h +TimelinePanel.jButton9.text=12h +TimelinePanel.jButton11.text=5a +TimelinePanel.jButton12.text=10a +TimelinePanel.jButton6.text=1s +TimelinePanel.jButton5.text=1a +TimelinePanel.jButton8.text=1d +TimelinePanel.jButton7.text=3d +TimelinePanel.jButton2.text=1m +TimelinePanel.jButton3.text=3m +TimelinePanel.jButton4.text=2s +ProgressWindow.progressHeader.text=\ +# {0} - inicio del rango de fechas +# {1} - fin del rango de fechas +TimeLineResultView.startDateToEndDate.text=De {0} a {1} +TimeLineTopComponent.eventsTab.name=Eventos +TimeLineTopComponent.filterTab.name=Filtros +TimelineTopComponent.selectedEventListener.errorMsg=Hubo un problema al obtener el contenido del evento seleccionado. diff --git a/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle_ar.properties new file mode 100644 index 0000000000..9067fd37a1 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle_ar.properties @@ -0,0 +1,59 @@ +AddManualEvent.createArtifactFailed=Error al crear el artefacto para el evento. +# {0} - nombre del origen de datos +# {1} - ID del origen de datos +AddManualEvent.EventCreationDialogPane.dataSourceStringConverter.template={0} (ID: {1}) +AddManualEvent.EventCreationDialogPane.initialize.dataSourcesError=Error al obtener fuentes de datos en el caso. +AddManualEvent.longText=Agregar manualmente un evento a la linea de tiempo. +AddManualEvent.postArtifactFailed=Error al publicar el artefacto en el tablero. +AddManualEvent.text=Agregar evento +AddManualEvent.validation.datetime=Fecha y hora no validas +AddManualEvent.validation.description=Se requiere una descripcion. +AddManualEvent.validation.timezone=Zona horaria no valida +# {0} - teclas de aceleracion de la accion +Back.longText=Atras: {0}\nVolver a la ultima configuracion de vista. +Back.text=Atras +# {0} - teclas de aceleracion de la accion +Forward.longText=Adelante: {0}\nAvanzar a la siguiente configuracion de vista. +Forward.text=Adelante +OpenReportAction.DisplayName=Abrir Informe +OpenReportAction.MessageBoxTitle=Error al Abrir Informe +OpenReportAction.MissingReportFileMessage=El archivo del informe ya no existe. +OpenReportAction.NoAssociatedEditorMessage=No hay un editor asociado para informes de este tipo o la aplicacion asociada no se pudo abrir. +OpenReportAction.NoOpenInEditorSupportMessage=Esta plataforma (sistema operativo) no admite abrir un archivo en un editor de esta manera. +OpenReportAction.ReportFileOpenPermissionDeniedMessage=Se denego el permiso para abrir el archivo del informe. +ResetFilters.text=Restablecer todos los filtros +RestFilters.longText=Restablecer todos los filtros a su estado predeterminado. +SaveSnapShotAsReport.action.dialogs.title=Linea de tiempo +SaveSnapShotAsReport.action.longText=Guardar una captura de pantalla de la vista actual de la linea de tiempo como informe. +SaveSnapShotAsReport.action.name.text=Informe de Captura de Pantalla +SaveSnapShotAsReport.duplicateReportNameError.text=Ya existe un informe con ese nombre. +# {0} - ruta del informe +SaveSnapShotAsReport.ErrorWritingReport=Error al escribir el informe en el disco en {0}. +SaveSnapShotAsReport.FailedToAddReport=Error al agregar la captura de pantalla al caso como informe. +SaveSnapShotAsReport.reportName.header=Ingrese un nombre de informe para el Informe de Captura de Pantalla de la Linea de tiempo. +# {0} - nombre de informe predeterminado generado +SaveSnapShotAsReport.reportName.prompt=Deje vacio para el nombre de informe predeterminado:\n{0}. +# {0} - ruta del archivo del informe +SaveSnapShotAsReport.ReportSavedAt=Informe guardado en [{0}] +SaveSnapShotAsReport.Success=Exito +SaveSnapShotAsReport_OK_Button=Aceptar +SaveSnapShotAsReport_Open_Button=Abrir Informe +# {0} - nombre del informe suministrado +SaveSnapShotAsReport_Path_Failure_Report=Error al crear el informe. El nombre del informe suministrado tiene caracteres no validos: {0} +SaveSnapShotAsReport_Report_Failed=Error en el informe +# {0} - ubicacion del informe +SaveSnapShotAsReport_success_message=Informe de captura de pantalla creado correctamente en la ubicacion:\n\n{0} +Timeline.ModuleName=Linea de tiempo +ViewArtifactInTimelineAction.displayName=Ver Resultado en la Linea de tiempo... +ViewFileInTimelineAction.viewFile.displayName=Ver Archivo en la Linea de tiempo... +ViewFileInTimelineAction.viewSourceFile.displayName=Ver Archivo de Origen en la Linea de tiempo... +ZoomIn.action.text=Acercar +ZoomIn.errorMessage=Error al hacer zoom. +ZoomIn.longText=Acercar para ver aproximadamente la mitad del tiempo. +ZoomOut.action.text=Alejar +ZoomOut.disabledProperty.errorMessage=Error al obtener el intervalo abarcador. +ZoomOut.errorMessage=Error al alejar. +ZoomOut.longText=Alejar para ver aproximadamente un 50% mas de tiempo. +ZoomToEvents.action.text=Zoom a los eventos +ZoomToEvents.disabledProperty.errorMessage=Error al obtener el intervalo abarcador. +ZoomToEvents.longText=Alejar para mostrar los eventos mas cercanos. diff --git a/Core/src/org/sleuthkit/autopsy/timeline/datamodel/eventtype/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/datamodel/eventtype/Bundle_ar.properties new file mode 100644 index 0000000000..90f1f52687 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/datamodel/eventtype/Bundle_ar.properties @@ -0,0 +1,22 @@ +BaseTypes.fileSystem.name=Sistema de Archivos +BaseTypes.webActivity.name=Actividad Web +BaseTypes.miscTypes.name=Tipos Miscelaneos +FileSystemTypes.fileModified.name=Archivo Modificado +FileSystemTypes.fileAccessed.name=Archivo Accedido +FileSystemTypes.fileCreated.name=Archivo Creado +FileSystemTypes.fileChanged.name=Archivo Cambiado +MiscTypes.message.name=Mensajes +MiscTypes.GPSRoutes.name=Rutas de GPS +MiscTypes.GPSTrackpoint.name=Historial de Ubicacion +MiscTypes.Calls.name=Llamadas +MiscTypes.Email.name=Correo Electronico +MiscTypes.recentDocuments.name=Documentos Recientes +MiscTypes.installedPrograms.name=Programas Instalados +MiscTypes.exif.name=Exif +MiscTypes.devicesAttached.name=Dispositivos Conectados +RootEventType.eventTypes.name=Tipos de Evento +WebTypes.webDownloads.name=Descargas Web +WebTypes.webCookies.name=Cookies Web +WebTypes.webBookmarks.name=Marcadores Web +WebTypes.webHistory.name=Historial Web +WebTypes.webSearch.name=Busquedas Web \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/Bundle_ar.properties new file mode 100644 index 0000000000..df6f768a97 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/Bundle_ar.properties @@ -0,0 +1,10 @@ +EventNode.getAction.errorTitle=Error al obtener acciones +EventNode.getAction.linkedFileMessage=Hubo un problema al obtener las acciones para el resultado seleccionado. La accion 'Ver Archivo en la Linea de tiempo' no estara disponible. +# {0} - numero maximo de eventos para mostrar +# {1} - numero de eventos que es demasiado +EventRoodNode.tooManyNode.displayName=Demasiados eventos para mostrar. Maximo = {0}. Pero hay {1} para mostrar. +NodeProperty.displayName.dateTime=Fecha/Hora +NodeProperty.displayName.description=Descripcion +NodeProperty.displayName.eventType=Tipo de Evento +NodeProperty.displayName.icon=icono +NodeProperty.displayName.known=Conocido diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle_ar.properties new file mode 100644 index 0000000000..ec63cf605d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle_ar.properties @@ -0,0 +1,57 @@ +AbstractTimelineChart.defaultTooltip.text=Arrastra el raton para seleccionar un intervalo de tiempo y hacer zoom.\nHaz clic derecho para mas acciones. +HistoryToolBar.historyLabel.text=Historial +IntervalSelector.ClearSelectedIntervalAction.tooltTipText=Borrar Intervalo Seleccionado +IntervalSelector.ZoomAction.name=Zoom +IntervalSelector.zoomToSelectedInterval.errorMessage=Error al hacer zoom en el intervalo seleccionado. +NoEventsDialog.titledPane.text=Eventos No Visibles +Timeline.node.root=Raiz +# {0} - marca de tiempo de inicio +# {1} - marca de tiempo de fin +Timeline.ui.TimeLineChart.tooltip.text=Doble clic para hacer zoom en el rango:\n{0} a {1}.\n\nHaz clic derecho para cerrar. +Timeline.ui.ZoomRanges.onemin.text=Un Minuto +Timeline.ui.ZoomRanges.fifteenmin.text=Quince Minutos +Timeline.ui.ZoomRanges.onehour.text=Una Hora +Timeline.ui.ZoomRanges.sixhours.text=Seis Horas +Timeline.ui.ZoomRanges.twelvehours.text=Doce Horas +Timeline.ui.ZoomRanges.oneday.text=Un Dia +Timeline.ui.ZoomRanges.threedays.text=Tres Dias +Timeline.ui.ZoomRanges.oneweek.text=Una Semana +Timeline.ui.ZoomRanges.twoweeks.text=Dos Semanas +Timeline.ui.ZoomRanges.onemonth.text=Un Mes +Timeline.ui.ZoomRanges.threemonths.text=Tres Meses +Timeline.ui.ZoomRanges.sixmonths.text=Seis Meses +Timeline.ui.ZoomRanges.oneyear.text=Un Año +Timeline.ui.ZoomRanges.threeyears.text=Tres Años +Timeline.ui.ZoomRanges.fiveyears.text=Cinco Años +Timeline.ui.ZoomRanges.tenyears.text=Diez Años +Timeline.ui.ZoomRanges.all.text=Todo +TimeLineChart.zoomHistoryActionGroup.name=Historial de Zoom +TimeZonePanel.title=Mostrar Horarios En: +ViewFrame.countsToggle.text=Recuentos +ViewFrame.dateTimeValidator.errorMessage=Error al obtener el intervalo de tiempo. +ViewFrame.detailsToggle.text=Detalles +ViewFrame.endLabel.text=Fin: +ViewFrame.histogramTask.preparing=Preparando +ViewFrame.histogramTask.queryDb=Consultando la Base de Datos +ViewFrame.histogramTask.resetUI=Reiniciando la Interfaz de Usuario +ViewFrame.histogramTask.title=Reconstruyendo Histograma +ViewFrame.histogramTask.updateUI2=Actualizando la Interfaz de Usuario +ViewFrame.listToggle.text=Lista +ViewFrame.localDateDisabler.errorMessage=Error al obtener el intervalo de tiempo. +ViewFrame.noEventsDialogLabel.text=No hay eventos visibles con la configuracion actual de zoom / filtro. +ViewFrame.notification.cacheInvalidated=Los datos de los eventos han sido actualizados, la visualizacion puede estar desactualizada. +ViewFrame.pickerListener.errorMessage=Error al responder al cambio de seleccion en el selector de fecha/hora. +ViewFrame.rangeSliderListener.errorMessage=Error al responder al selector de rango. +ViewFrame.refresh.longText=Actualizar la vista para incluir informacion que esta en la base de datos pero no se muestra, como etiquetas recien actualizadas. +ViewFrame.refresh.text=Actualizar Vista +ViewFrame.refreshTimeUI.errorMessage=Error al obtener el intervalo de tiempo. +ViewFrame.startLabel.text=Inicio: +ViewFrame.tagsAddedOrDeleted=Se han creado y/o eliminado etiquetas. La vista puede no estar actualizada. +ViewFrame.viewModeLabel.text=Modo de Vista: +ViewFrame.zoomButton.text=Hacer Zoom a los Eventos +TimeZonePanel.localRadio.text=Zona Horaria Local +TimeZonePanel.otherRadio.text=GMT / UTC +ViewFrame.resetFiltersButton.text=Restablecer todos los filtros +ViewFrame.zoomMenuButton.errorMessage=Error al ajustar el rango de tiempo. +ViewFrame.zoomMenuButton.text=Hacer Zoom Dentro/Fuera de +ViewRefreshTask.preparing=Analizando la configuracion de zoom y filtros \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/Bundle_ar.properties new file mode 100644 index 0000000000..e6f2e74759 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/Bundle_ar.properties @@ -0,0 +1,31 @@ +BarClickHandler.selectTimeAndType.errorMessage=Error al seleccionar la hora y el tipo. +BarClickHandler_zoomIn_errorMessage=Error al acercar. +CountsViewPane.detailSwitchMessage=No hay una resolucion temporal menor que segundos.\n¿Deseas cambiar a la vista de Detalles en su lugar? +CountsViewPane.detailSwitchTitle="¿Cambiar a la Vista de Detalles?" +CountsViewPane.linearRadio.text=Lineal +CountsViewPane.loggedTask.name=Actualizando Vista de Recuentos +CountsViewPane.loggedTask.updatingCounts=Rellenando la vista +CountsViewPane.logRadio.text=Logaritmico +# {0} - nombre de la escala +CountsViewPane.numberOfEvents=Numero de Eventos ({0}) +CountsViewPane.scaleHelp.label.text=Escalas: +CountsViewPane.scaleHelpLinear=La escala lineal es buena para muchos casos de uso. Cuando se selecciona esta escala, la altura de las barras representa los recuentos de manera lineal, uno a uno, y el eje y esta etiquetado con valores. Cuando el rango de valores es muy grande, los periodos de tiempo con recuentos bajos pueden tener una barra demasiado pequenia para ver. Para ayudar al usuario a detectar esto, las etiquetas de los rangos de fechas con eventos estan en negrita. Para ver barras demasiado pequenias, hay tres opciones: ajustar el tamanio de la ventana para que la linea de tiempo tenga mas espacio vertical, ajustar el rango de tiempo mostrado para excluir periodos de tiempo con barras mas grandes o ajustar la configuracion de escala a logaritmica. +CountsViewPane.scaleHelpLog=La escala logaritmica representa el numero de eventos de manera no lineal, comprimiendo la diferencia entre numeros grandes y pequenios. Ten en cuenta que incluso con la escala logaritmica, una diferencia extremadamente grande en los recuentos puede producir barras demasiado pequenias para ver. En este caso, la unica opcion puede ser filtrar eventos para reducir la diferencia en los recuentos. NOTA: Debido a que la escala logaritmica se aplica a cada tipo de evento por separado, el significado de la altura de la barra combinada no es intuitivo, y para enfatizar esto, no se muestran etiquetas en el eje y con la escala logaritmica. La escala logaritmica debe usarse para comparar rapidamente los recuentos +CountsViewPane.scaleHelpLog2=con el tiempo dentro de un tipo o entre tipos para un periodo de tiempo, pero no ambos. +CountsViewPane.scaleHelpLog3=\ Los recuentos reales (disponibles en informacion sobre herramientas o en el visor de resultados) deben usarse para comparaciones absolutas. Usa la escala logaritmica con precaucion. +CountsViewPane.scaleLabel.text=Escala: +# {0} - recuento +# {1} - nombre para mostrar del tipo de evento +# {2} - fecha y hora de inicio +# {3} - fecha y hora de fin +CountsViewPane.tooltip.text={0} eventos {1}\nentre {2}\ny {3} +ScaleType.Linear=Lineal +ScaleType.Logarithmic=Logaritmico +SelectIntervalAction.errorMessage=Error al seleccionar el intervalo. +SelectIntervalAndTypeAction.errorMessage=Error al seleccionar el intervalo y el tipo. +SelectTypeAction.errorMessage=Error al seleccionar el tipo. +Timeline.ui.countsview.menuItem.selectEventType=Seleccionar Tipo de Evento +Timeline.ui.countsview.menuItem.selectTimeandType=Seleccionar Hora y Tipo +Timeline.ui.countsview.menuItem.selectTimeRange=Seleccionar Rango de Tiempo +Timeline.ui.countsview.menuItem.zoomIntoTimeRange=Acercar al Rango de Tiempo +ZoomToIntervalAction.errorMessage=Error al acercar al intervalo. diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/Bundle_ar.properties new file mode 100644 index 0000000000..01a9a71e9a --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/Bundle_ar.properties @@ -0,0 +1,42 @@ +CollapseClusterAction.text=Contraer +DetailViewPane.advancedLayoutOptionsButtonLabel.text=Opciones de Diseño Avanzadas +DetailViewPane.bandByTypeBox.text=Agrupar por Tipo +DetailViewPane.countsRadio.text=Mostrar Solo Recuentos +DetailViewPane.hiddenRadio.text=Ocultar Descripcion +DetailViewPane.loggedTask.backButton=Volver (Cancelar) +DetailViewPane.loggedTask.continueButton=Continuar +DetailViewPane.loggedTask.name=Actualizando Vista de Detalles +# {0} - numero de eventos +DetailViewPane.loggedTask.prompt=Estas a punto de mostrar detalles para {0} eventos. Esto podria ser muy lento y agotar la memoria disponible.\n\n¿Deseas continuar? +DetailViewPane.loggedTask.queryDb=Recuperando datos del evento +DetailViewPane.loggedTask.updateUI=Rellenando la vista +DetailViewPane.oneEventPerRowBox.text=Uno por Fila +DetailViewPane.pinnedLaneLabel.text=Eventos Fijados +DetailViewPane.primaryLaneLabel.text=Todos los Eventos (Filtrados) +DetailViewPane.showRadio.text=Mostrar Descripcion Completa +DetailViewPane.truncateAllBox.text=Recortar Descripciones +DetailViewPane.truncateSliderLabel.text=ancho maximo de descripcion (px): +EventBundleNodeBase.toolTip.loading=cargando... +EventClusterNode.loggedTask.name=Cargar subeventos +# {0} - cadena de recuentos de hash set +EventNodeBase.toolTip.hashSetHits=\n\nCoincidencias en conjuntos hash\n{0} +EventNodeBase.toolTip.loading2=cargando informacion sobre herramientas +# {0} - cadena de recuentos de etiquetas +EventNodeBase.toolTip.tags=\n\nEtiquetas\n{0} +# {0} - recuentos +# {1} - tipo de evento +# {2} - descripcion +# {3} - fecha/hora de inicio +# {4} - fecha/hora de fin +EventNodeBase.tooltip.text={0} eventos {1}\n{2}\nentre\t{3}\ny \t{4} +ExpandClusterAction.text=Expandir +# {0} - fecha/hora en la posicion de la linea guia +GuideLine.tooltip.text={0}\nHaz clic derecho para eliminar.\nArrastra para reposicionar. +HideDescriptionAction.displayMsg=Ocultar este grupo de la vista de detalles. +HideDescriptionAction.displayName=Ocultar +PinEventAction.text=Fijar +PinnedChartLane.pinnedEventsListener.errorMessage=Error al agregar evento fijado a la linea. +PlaceMarkerAction.name=Colocar Marcador +PrimaryDetailsChartLane.stripeChangeListener.errorMessage=Error al agregar franja a la linea del grafico. +UnhideDescriptionAction.displayName=Mostrar +UnPinEventAction.text=Desfijar diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/tree/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/tree/Bundle_ar.properties new file mode 100644 index 0000000000..722db1d197 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/tree/Bundle_ar.properties @@ -0,0 +1,4 @@ +EventsTree.Label.text=Ordenar Por: +TreeComparator.Count.displayName=Recuento +TreeComparator.Description.displayName=Descripcion +TreeComparator.Type.displayName=Tipo \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle_ar.properties new file mode 100644 index 0000000000..9dc3f845f8 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle_ar.properties @@ -0,0 +1,12 @@ +FilsetSetPanel.hiddenDescriptionsPane.displayName=Descripciones Ocultas +FilterSetPanel.applyButton.longText=(Re)Aplicar filtros +FilterSetPanel.applyButton.text=Aplicar +FilterSetPanel.defaultButton.text=Restablecer +FilterSetPanel.hiddenDescriptionsListView.remove=Eliminar de la lista +FilterSetPanel.hiddenDescriptionsListView.unhideAndRemove=Mostrar y eliminar de la lista +Timeline.ui.filtering.menuItem.all=todos +Timeline.ui.filtering.menuItem.none=ninguno +Timeline.ui.filtering.menuItem.only=solo +Timeline.ui.filtering.menuItem.others=otros +Timeline.ui.filtering.menuItem.select=seleccionar +Timeline.ui.filtering.promptText=introducir cadena de filtro diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/Bundle_ar.properties new file mode 100644 index 0000000000..c75767e1f3 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/Bundle_ar.properties @@ -0,0 +1,18 @@ +EventRow.updateItem.errorMessage=Error al obtener el evento por su ID. +EventTableCell.updateItem.errorMessage=Error al obtener el evento por su ID. +ListChart.errorMsg=Hubo un problema al obtener el contenido del evento seleccionado. +# {0} - número de eventos +ListTimeline.eventCountLabel.text={0} eventos +ListTimeline.hashHitTooltip.error=Hubo un problema al obtener los nombres de los conjuntos hash para el evento seleccionado. +# {0} - nombres de conjuntos hash +ListTimeline.hashHitTooltip.text=Conjuntos Hash:\n{0} +ListTimeline.taggedTooltip.error=Hubo un problema al obtener los nombres de las etiquetas para el evento seleccionado. +# {0} - nombres de etiquetas +ListTimeline.taggedTooltip.text=Etiquetas:\n{0} +ListView.EventTypeCell.accessedTooltip=Archivo Accedido ( A ) +ListView.EventTypeCell.changedTooltip=Archivo Cambiado ( C ) +ListView.EventTypeCell.createdTooltip=Archivo Creado ( B, de Born ) +ListView.EventTypeCell.modifiedTooltip=Archivo Modificado ( M ) +ListViewPane.loggedTask.name=Actualizando Vista de Lista +ListViewPane.loggedTask.queryDb=Recuperando datos del evento +ListViewPane.loggedTask.updateUI=Rellenando la vista diff --git a/Core/src/org/sleuthkit/autopsy/timeline/utils/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/utils/Bundle_ar.properties new file mode 100644 index 0000000000..38cccd73e1 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/utils/Bundle_ar.properties @@ -0,0 +1 @@ +FilterUtils.otherFilter.displayName=Otros diff --git a/Core/src/org/sleuthkit/autopsy/timeline/zooming/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/timeline/zooming/Bundle_ar.properties new file mode 100644 index 0000000000..ca8eff391d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/zooming/Bundle_ar.properties @@ -0,0 +1,11 @@ +DescriptionLOD.short=Corto +DescriptionLOD.medium=Medio +DescriptionLOD.full=Completo +EventTypeZoomLevel.rootType=Tipo Raioz +EventTypeZoomLevel.baseType=Tipo Base +EventTypeZoomLevel.subType=Subtipo +ZoomSettingsPane.descrLODLabel.text=Detalle de Descripcion: +ZoomSettingsPane.sliderChange.errorText=Error al responder al cambio del valor del deslizador. +ZoomSettingsPane.timeUnitLabel.text=Unidades de Tiempo: +ZoomSettingsPane.typeZoomLabel.text=Tipo de Evento: +ZoomSettingsPane.zoomLabel.text=Zoom diff --git a/Core/src/org/sleuthkit/autopsy/url/analytics/domaincategorization/Bundle_ar.properties b/Core/src/org/sleuthkit/autopsy/url/analytics/domaincategorization/Bundle_ar.properties new file mode 100644 index 0000000000..1b46c3c4b5 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/url/analytics/domaincategorization/Bundle_ar.properties @@ -0,0 +1,37 @@ +AddEditCategoryDialog_Add=Aniadir Entrada +AddEditCategoryDialog_Edit=Editar Entrada +# {0} - maxCategoryLen +AddEditCategoryDialog_onValueUpdate_badCategory=Por favor, ingresa una categoria de no mas de {0} caracteres. +# {0} - maxSuffixLen +AddEditCategoryDialog_onValueUpdate_badSuffix=Por favor, ingresa un sufijo de dominio de no mas de {0} caracteres que incluya al menos un punto. +AddEditCategoryDialog_onValueUpdate_sameCategory=Por favor, proporciona una nueva categoria para este sufijo de dominio. +AddEditCategoryDialog_onValueUpdate_suffixRepeat=Por favor, proporciona un sufijo de dominio unico. +WebCategoriesOptionsPanel_categoryTable_categoryColumnName=Categoria +WebCategoriesOptionsPanel_categoryTable_suffixColumnName=Sufijo del Dominio +WebCategoriesOptionsPanel_exportSetButtonActionPerformed_defaultFileName=Exportacion de Categorias Personalizadas +WebCategoriesOptionsPanel_exportSetButtonActionPerformed_duplicateMessage=Ya existe un archivo en la ruta seleccionada. Las categorias no seran exportadas. +WebCategoriesOptionsPanel_exportSetButtonActionPerformed_duplicateTitle=Archivo Ya Existe +WebCategoriesOptionsPanel_exportSetButtonActionPerformed_errorMessage=Hubo un error al exportar. +WebCategoriesOptionsPanel_exportSetButtonActionPerformed_errorTitle=Error de Exportacion +WebCategoriesOptionsPanel_importSetButtonActionPerformed_errorMessage=Hubo un error al importar este archivo JSON. +WebCategoriesOptionsPanel_importSetButtonActionPerformed_errorTitle=Error de Importacion +WebCategoriesOptionsPanel_importSetButtonActionPerformed_onConflictCancel=Cancelar +# {0} - domainSuffix +WebCategoriesOptionsPanel_importSetButtonActionPerformed_onConflictMessage=El sufijo del dominio {0} ya existe. ¿Que te gustaria hacer? +WebCategoriesOptionsPanel_importSetButtonActionPerformed_onConflictOverwrite=Sobrescribir +WebCategoriesOptionsPanel_importSetButtonActionPerformed_onConflictSkip=Omitir +WebCategoriesOptionsPanel_importSetButtonActionPerformed_onConflictTitle=Sufijo del Dominio Ya Existe +WebCategoryOptionsController_title=Categorias Web Personalizadas +WebCategoryOptionsController_keywords=Categorias Web Personalizadas +AddEditCategoryDialog.categoryLabel.text=Categoria: +AddEditCategoryDialog.domainSuffixLabel.text=Sufijo del Dominio: +AddEditCategoryDialog.saveButton.text=Guardar +AddEditCategoryDialog.cancelButton.text=Cancelar +WebCategoriesOptionsPanel.panelDescription.text=Esta funcion permite al modulo de ingestion de Actividad Reciente realizar una categorizacion personalizada de sitios web basada en sufijos de dominio. +WebCategoriesOptionsPanel.categoriesTitle.text=Categorias: +WebCategoriesOptionsPanel.newEntryButton.text=Nueva Entrada +WebCategoriesOptionsPanel.editEntryButton.text=Editar Entrada +WebCategoriesOptionsPanel.deleteEntryButton.text=Eliminar Entrada +WebCategoriesOptionsPanel.importSetButton.text=Importar Conjunto +WebCategoriesOptionsPanel.exportSetButton.text=Exportar Conjunto +WebCategoriesOptionsPanel.ingestRunningWarning.text=La ingestion esta en proceso. No se puede realizar ninguna edicion en este momento. diff --git a/CoreLibs/ivy.xml b/CoreLibs/ivy.xml index 51bbeb8220..d60ce17600 100644 --- a/CoreLibs/ivy.xml +++ b/CoreLibs/ivy.xml @@ -1,5 +1,6 @@ + ]> @@ -87,7 +88,8 @@ - + + @@ -142,8 +144,8 @@ - - + + diff --git a/CoreLibs/manifest.mf b/CoreLibs/manifest.mf index b8faef2527..1d3168bf2c 100644 --- a/CoreLibs/manifest.mf +++ b/CoreLibs/manifest.mf @@ -11,4 +11,4 @@ Specification-Version: 1.0 Specification-Vendor: CoreLibs ImageIO Fields Implementation-Title: org.sleuthkit.autopsy.corelibs.ImageIO Implementation-Version: 1.0 -Implementation-Vendor: CoreLibs ImageIO Fields \ No newline at end of file +Implementation-Vendor: CoreLibs ImageIO Fields diff --git a/CoreLibs/nbproject/project.properties b/CoreLibs/nbproject/project.properties index fe5e78acff..320a1e36e5 100644 --- a/CoreLibs/nbproject/project.properties +++ b/CoreLibs/nbproject/project.properties @@ -84,6 +84,7 @@ file.reference.jackson-annotations-2.15.2.jar=release/modules/ext/jackson-annota 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 diff --git a/CoreLibs/nbproject/project.xml b/CoreLibs/nbproject/project.xml index f7b139f502..ff5e70f4e8 100644 --- a/CoreLibs/nbproject/project.xml +++ b/CoreLibs/nbproject/project.xml @@ -63,6 +63,12 @@ com.fasterxml.jackson.databind.type com.fasterxml.jackson.databind.util com.fasterxml.jackson.dataformat.csv + com.fasterxml.jackson.datatype.jsr310 + com.fasterxml.jackson.datatype.jsr310.deser + com.fasterxml.jackson.datatype.jsr310.deser.key + com.fasterxml.jackson.datatype.jsr310.ser + com.fasterxml.jackson.datatype.jsr310.ser.key + com.fasterxml.jackson.datatype.jsr310.util com.github.lgooddatepicker.components com.github.lgooddatepicker.optionalusertools com.github.lgooddatepicker.zinternaltools @@ -197,8 +203,6 @@ com.google.rpc.context com.google.thirdparty.publicsuffix com.google.type - com.microsoft.schemas.vml - com.microsoft.schemas.vml.impl com.sun.javafx com.sun.javafx.animation com.sun.javafx.application @@ -321,9 +325,6 @@ com.twelvemonkeys.util.regex com.twelvemonkeys.util.service com.twelvemonkeys.xml - javax.annotation - javax.annotation.concurrent - javax.annotation.meta javafx.animation javafx.application javafx.beans @@ -340,7 +341,6 @@ javafx.event javafx.fxml javafx.geometry - javafx.graphics javafx.print javafx.scene javafx.scene.canvas @@ -362,19 +362,9 @@ javafx.stage javafx.util javafx.util.converter - javax.jms - javax.mail - javax.mail.event - javax.mail.internet - javax.mail.search - javax.mail.util - javax.servlet - javax.servlet.http - javax.xml.parsers - javax.xml.transform - javax.xml.transform.dom - javax.xml.transform.sax - javax.xml.transform.stream + javax.annotation + javax.annotation.concurrent + javax.annotation.meta jfxtras.animation jfxtras.css jfxtras.css.converters @@ -442,16 +432,6 @@ org.apache.commons.lang3.tuple org.apache.commons.logging org.apache.commons.logging.impl - org.apache.log - org.apache.log.filter - org.apache.log.format - org.apache.log.output - org.apache.log.output.db - org.apache.log.output.io - org.apache.log.output.io.rotate - org.apache.log.output.jms - org.apache.log.output.net - org.apache.log.util org.apache.commons.text org.apache.commons.validator.routines org.apache.commons.validator.routines.checkdigit @@ -460,14 +440,7 @@ org.apache.log4j.config org.apache.log4j.helpers org.apache.log4j.jdbc - org.apache.log4j.jmx - org.apache.log4j.lf5 - org.apache.log4j.lf5.util - org.apache.log4j.lf5.viewer - org.apache.log4j.lf5.viewer.categoryexplorer - org.apache.log4j.lf5.viewer.configure org.apache.log4j.net - org.apache.log4j.nt org.apache.log4j.or org.apache.log4j.or.jms org.apache.log4j.or.sax @@ -931,6 +904,10 @@ ext/jackson-dataformat-csv-2.15.2.jar release/modules/ext/jackson-dataformat-csv-2.15.2.jar
    + + ext/jackson-datatype-jsr310-2.15.2.jar + release/modules/ext/jackson-datatype-jsr310-2.15.2.jar + ext/javafx-base-17.0.7-linux.jar release/modules/ext/javafx-base-17.0.7-linux.jar diff --git a/CoreLibs/src/org/sleuthkit/autopsy/corelibs/Bundle_ar.properties b/CoreLibs/src/org/sleuthkit/autopsy/corelibs/Bundle_ar.properties new file mode 100644 index 0000000000..634a6e5fbb --- /dev/null +++ b/CoreLibs/src/org/sleuthkit/autopsy/corelibs/Bundle_ar.properties @@ -0,0 +1,7 @@ +OpenIDE-Module-Display-Category=Bibliotecas +OpenIDE-Module-Long-Description=\ + Dependencias de bibliotecas externas para el modulo Core. \n\ + Las bibliotecas tambien pueden ser importadas por otros modulos. +OpenIDE-Module-Name=Autopsy-CoreLibs +OpenIDE-Module-Short-Description=Bibliotecas externas del modulo central de Autopsy +SigarLoader.linkErr.msg=No se pudo cargar la biblioteca sigar para su entorno (no critico), las metricas a nivel del sistema operativo no estaran disponibles. diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/Bundle_ar.properties b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/Bundle_ar.properties new file mode 100644 index 0000000000..0d29474338 --- /dev/null +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/Bundle_ar.properties @@ -0,0 +1,478 @@ +AinStatusDashboardTopComponent.exceptionMessage.failedToCreateDashboard=No se pudo crear el panel de estado del nodo de Auto Ingest. +AinStatusNode.hostName.title=Nombre del Host +AinStatusNode.status.pausedByUser=Pausado por el Usuario +AinStatusNode.status.pausedForError=Pausado debido a un Error del Sistema +AinStatusNode.status.pauseRequested=Solicitud de Pausa +AinStatusNode.status.running=En Ejecucion +AinStatusNode.status.shuttingdown=Apagando +AinStatusNode.status.startingup=Iniciando +AinStatusNode.status.title=Estado +AinStatusNode.status.unknown=Desconocido +AutoIngestAdminActions.cancelJobAction.title=Cancelar Trabajo +AutoIngestAdminActions.cancelModuleAction.title=Cancelar Modulo +AutoIngestAdminActions.disableOCR.error=Error al deshabilitar OCR para el caso "%s". +AutoIngestAdminActions.disableOCR.title=Deshabilitar OCR para este caso +AutoIngestAdminActions.enableOCR.error=Error al habilitar OCR para el caso "%s". +AutoIngestAdminActions.enableOCR.title=Habilitar OCR para este caso +AutoIngestAdminActions.getThreadDump.title=Generar Captura de Hilos +AutoIngestAdminActions.pause.title=Pausar Nodo +AutoIngestAdminActions.progressDialogAction.title=Progreso de Ingesta +AutoIngestAdminActions.reprocessJobAction.error=Error al reprocesar el trabajo +AutoIngestAdminActions.reprocessJobAction.title=Reprocesar Trabajo +AutoIngestAdminActions.resume.title=Reanudar Nodo +AutoIngestAdminActions.showCaseLogAction.title=Mostrar Registro del Caso +AutoIngestAdminActions.showCaseLogActionDialog.cannotFindLog=No se puede encontrar el archivo de registro del caso seleccionado. +AutoIngestAdminActions.showCaseLogActionDialog.ok=Aceptar +AutoIngestAdminActions.showCaseLogActionDialog.unableToShowLogFile=No se puede mostrar el archivo de registro. +AutoIngestAdminActions.showCaseLogActionFailed.message=El archivo de registro del caso no existe. +AutoIngestAdminActions.showCaseLogActionFailed.title=No se puede mostrar el registro del caso +AutoIngestAdminActions.shutdown.Cancel=Cancelar +AutoIngestAdminActions.shutdown.consequences=Esto cancelara cualquier trabajo que este en ejecucion en este host. Salir mientras un trabajo esta en ejecucion puede dejar el caso en un estado inconsistente o daniado. +AutoIngestAdminActions.shutdown.OK=Aceptar +AutoIngestAdminActions.shutdown.title=Apagar Nodo +AutoIngestControlPanel.AutoIngestStartupError=Error al iniciar la ingestion automatica. Verificar la configuracion de Multi-usuario. +AutoIngestControlPanel.AutoIngestStartupFailed.Message=Error al iniciar la ingestion automatica.\nPor favor, consulte el registro del sistema de ingestion automatica para obtener mas detalles. +AutoIngestControlPanel.AutoIngestStartupFailed.Title=Error de Ingestion Automatica +AutoIngestControlPanel.AutoIngestStartupWarning.Message=Error al establecer comunicaciones remotas con otros nodos de ingestion automatica.\nEl panel de ingestion automatica solo podra mostrar eventos de trabajo de ingestion local.\nVerifique la configuracion de Multi-usuario (Opciones->Multi-usuario). Consulte el registro de la aplicacion para obtener mas detalles. +AutoIngestControlPanel.AutoIngestStartupWarning.Title=Advertencia de Ingestion Automatica +AutoIngestControlPanel.bnCancelJob.toolTipText=Cancelar procesamiento del trabajo actual y pasar al siguiente trabajo. Esta funcionalidad solo esta disponible para trabajos que se estan ejecutando en el nodo AIM actual. +AutoIngestControlPanel.bnCancelModule.toolTipText=Cancelar procesamiento del modulo actual dentro del trabajo y pasar al siguiente modulo dentro del trabajo. Esta funcionalidad solo esta disponible para trabajos que se estan ejecutando en el nodo AIM actual. +AutoIngestControlPanel.bnDeleteCase.toolTipText=Eliminar el caso seleccionado en su totalidad. +AutoIngestControlPanel.bnExit.toolTipText=Salir de la aplicacion. +AutoIngestControlPanel.bnOptions.toolTipText=Mostrar el panel de opciones. Todo el procesamiento debe estar pausado para abrir el panel de opciones. +AutoIngestControlPanel.bnPause.confirmHeader=¿Esta seguro de que desea pausar? +AutoIngestControlPanel.bnPause.paused=Pausado +AutoIngestControlPanel.bnPause.pausing=Pausando despues de que se complete el trabajo actual... +AutoIngestControlPanel.bnPause.running=Ejecutandose +AutoIngestControlPanel.bnPause.toolTipText=Suspender el procesamiento de trabajos pendientes. +AutoIngestControlPanel.bnPause.toolTipTextResume=Reanudar el procesamiento de trabajos pendientes. +AutoIngestControlPanel.bnPause.warningText=La pausa ocurrira despues de que se complete el trabajo actual. Esto podria llevar mucho tiempo. ¿Desea continuar? +AutoIngestControlPanel.bnRefresh.toolTipText=Actualizar las tablas mostradas. +AutoIngestControlPanel.bnResume.text=Reanudar +AutoIngestControlPanel.bnShowCaseLog.toolTipText=Mostrar el archivo de registro del caso seleccionado. +AutoIngestControlPanel.bnShowProgress.toolTipText=Mostrar el progreso del trabajo actualmente en ejecucion. Esta funcionalidad solo esta disponible para trabajos que se estan ejecutando en el nodo AIM actual. +AutoIngestControlPanel.bnStart.startMessage=Esperando para comenzar +AutoIngestControlPanel.bnStart.text=Iniciar +AutoIngestControlPanel.bnStart.toolTipText=Iniciar el procesamiento de trabajos de ingestion automatica. +AutoIngestControlPanel.Cancel=Cancelar +AutoIngestControlPanel.Cancelling=Cancelando... +AutoIngestControlPanel.completedTable.toolTipText=La tabla Completados muestra todos los trabajos que ya han sido procesados. +AutoIngestControlPanel.ConfigLocked=El directorio de configuracion compartido esta bloqueado porque hay una carga desde otro nodo en curso. \nSi esto es un error, puede desbloquear el directorio y luego volver a intentar la carga. +AutoIngestControlPanel.ConfigLockedTitle=Directorio de Configuracion Bloqueado +AutoIngestControlPanel.EnableConfigurationSettings=Habilitar la configuracion compartida desde el panel de opciones antes de cargar. +AutoIngestControlPanel.errorMessage.caseDeprioritization=Se produjo un error al depriorizar el caso. Algunos o todos los trabajos pueden no haber sido depriorizados. +AutoIngestControlPanel.errorMessage.casePrioritization=Se produjo un error al priorizar el caso. Algunos o todos los trabajos pueden no haber sido priorizados. +AutoIngestControlPanel.errorMessage.jobDeprioritization=Se produjo un error al depriorizar el trabajo. +AutoIngestControlPanel.errorMessage.jobPrioritization=Se produjo un error al priorizar el trabajo. +AutoIngestControlPanel.ErrorUploadingConfiguration=Error al cargar la configuracion. +AutoIngestControlPanel.ExitConsequences=Esto cancelara cualquier trabajo que este en ejecucion en este host. Salir mientras un trabajo esta en ejecucion puede dejar el caso en un estado inconsistente o daniado. +AutoIngestControlPanel.ExitingStatus=Saliendo... +AutoIngestControlPanel.JobsTableModel.ColumnHeader.Case=Caso +AutoIngestControlPanel.JobsTableModel.ColumnHeader.CaseFolder=Carpeta del Caso +AutoIngestControlPanel.JobsTableModel.ColumnHeader.CompletedTime=Trabajo Completado +AutoIngestControlPanel.JobsTableModel.ColumnHeader.CreatedTime=Trabajo Creado +AutoIngestControlPanel.JobsTableModel.ColumnHeader.HostName=Nombre del Host +AutoIngestControlPanel.JobsTableModel.ColumnHeader.ImageFolder=Origen de Datos +AutoIngestControlPanel.JobsTableModel.ColumnHeader.LocalJob=\ ¿Trabajo Local? +AutoIngestControlPanel.JobsTableModel.ColumnHeader.ManifestFilePath=\ Ruta del Archivo de Manifiesto +AutoIngestControlPanel.JobsTableModel.ColumnHeader.OCR=OCR +AutoIngestControlPanel.JobsTableModel.ColumnHeader.Priority=Priorizado +AutoIngestControlPanel.JobsTableModel.ColumnHeader.Stage=Etapa +# {0} - unitSeparator +AutoIngestControlPanel.JobsTableModel.ColumnHeader.StageTime=Tiempo en Etapa (dd{0}hh{0}mm{0}ss) +AutoIngestControlPanel.JobsTableModel.ColumnHeader.StartedTime=Inicio de Etapa +AutoIngestControlPanel.JobsTableModel.ColumnHeader.Status=Estado +AutoIngestControlPanel.OK=Aceptar +AutoIngestControlPanel.PauseDueToCoordinationServiceDown=Pausado, no se puede comunicar con el servicio de coordinacion. +AutoIngestControlPanel.PauseDueToDatabaseServiceDown=Pausado, no se puede comunicar con el servicio de base de datos del caso. +AutoIngestControlPanel.PauseDueToFileExporterError=Pausado, no se pueden cargar las configuraciones del exportador de archivos. +AutoIngestControlPanel.PauseDueToIngestJobStartFailure=Pausado, no se puede iniciar el procesamiento del trabajo de ingestion. +AutoIngestControlPanel.PauseDueToKeywordSearchServiceDown=Pausado, no se puede comunicar con el servicio de busqueda de palabras clave. +AutoIngestControlPanel.PauseDueToSharedConfigError=Pausado, no se puede actualizar la configuracion compartida. +AutoIngestControlPanel.PauseDueToSystemError=Pausado debido a un error del sistema, consulte el registro del sistema de ingestion automatica. +AutoIngestControlPanel.PauseDueToWriteStateFilesFailure=Pausado, no se puede escribir en la ubicacion compartida de imagenes o casos. +AutoIngestControlPanel.pendingTable.toolTipText=La tabla Pendientes muestra el orden en que se procesaran los trabajos proximos, con los primeros en la parte superior de la lista. +AutoIngestControlPanel.runningTable.toolTipText=La tabla en Ejecucion muestra el trabajo que se esta ejecutando actualmente y la informacion sobre el. +AutoIngestControlPanel.SharedConfigurationDisabled=Configuracion compartida deshabilitada +AutoIngestControlPanel.ShowLogFailed.Message=El archivo de registro del caso no existe. +AutoIngestControlPanel.ShowLogFailed.Title=No se puede mostrar el registro del caso +# {0} - case db status +# {1} - search svc Status +# {2} - coord svc Status +# {3} - msg broker status +AutoIngestControlPanel.tbServicesStatusMessage.Message=Base de datos del caso {0}, busqueda de palabras clave {1}, coordinacion {2}, mensajeria {3} +AutoIngestControlPanel.tbServicesStatusMessage.Message.Down=desactivado +AutoIngestControlPanel.tbServicesStatusMessage.Message.Unknown=desconocido +AutoIngestControlPanel.tbServicesStatusMessage.Message.Up=activado +AutoIngestControlPanel.UpdatingSharedConfig=Actualizando configuracion compartida +AutoIngestControlPanel.UploadFailedTitle=Error +AutoIngestControlPanel.UploadSuccess=Configuracion compartida cargada con exito +AutoIngestControlPanel.UploadSuccessTitle=exito +AutoIngestDashboard.completedTable.toolTipText=La tabla Completados muestra todos los trabajos que ya han sido procesados. +AutoIngestDashboard.lbCompleted.text=Trabajos Completados +AutoIngestDashboard.lbRunning.text=Trabajos en Ejecucion +AutoIngestDashboard.lbPending.text=Trabajos Pendientes +AutoIngestDashboard.JobsTableModel.ColumnHeader.Case=Nombre del Caso +AutoIngestDashboard.JobsTableModel.ColumnHeader.ImageFolder=Origen de Datos +AutoIngestDashboard.JobsTableModel.ColumnHeader.HostName=Nombre del Host +AutoIngestDashboard.JobsTableModel.ColumnHeader.CreatedTime=Creacion del Trabajo +AutoIngestDashboard.JobsTableModel.ColumnHeader.StartedTime=Inicio de Etapa +AutoIngestDashboard.JobsTableModel.ColumnHeader.CompletedTime=Trabajo Completado +AutoIngestDashboard.JobsTableModel.ColumnHeader.Stage=Etapa +AutoIngestDashboard.JobsTableModel.ColumnHeader.Status=Estado +AutoIngestDashboard.JobsTableModel.ColumnHeader.ManifestFilePath=Ruta del Archivo de Manifiesto +AutoIngestDashboard.JobsTableModel.ColumnHeader.StageTime=Tiempo en Etapa +AutoIngestDashboard.JobsTableModel.ColumnHeader.CaseFolder=Caso +AutoIngestDashboard.JobsTableModel.ColumnHeader.Job=Trabajo +AutoIngestDashboard.pendingTable.toolTipText=La tabla Pendientes muestra el orden en que se procesaran los proximos trabajos, con los primeros en la parte superior de la lista. +AutoIngestDashboard.runningTable.toolTipText=La tabla en Ejecucion muestra el trabajo que se esta ejecutando actualmente y la informacion sobre el. +AutoIngestDashboard.tbServicesStatusMessage.Message=Base de datos del caso {0}, busqueda de palabras clave {1}, coordinacion {2}, mensajeria {3} +AutoIngestDashboard.tbServicesStatusMessage.Message.Up=activado +AutoIngestDashboard.tbServicesStatusMessage.Message.Down=desactivado +AutoIngestDashboard.tbServicesStatusMessage.Message.Unknown=desconocido +AutoIngestDashboardTopComponent.exceptionMessage.failedToCreateDashboard=No se pudo crear el Panel de Control de Auto Ingestion. +AutoIngestJobsNode.caseName.text=Nombre del Caso +AutoIngestJobsNode.dataSource.text=Origen de Datos +AutoIngestJobsNode.hostName.text=Nombre del Host +AutoIngestJobsNode.jobCompleted.text=Trabajo Completado +AutoIngestJobsNode.jobCreated.text=Creacion del Trabajo +AutoIngestJobsNode.ocr.text=OCR +AutoIngestJobsNode.prioritized.false=No +AutoIngestJobsNode.prioritized.true=Si +AutoIngestJobsNode.priority.text=Priorizado +AutoIngestJobsNode.stage.text=Etapa +# {0} - unitSeparator +AutoIngestJobsNode.stageTime.text=Tiempo en Etapa (dd{0}hh{0}mm{0}ss) +AutoIngestJobsNode.status.text=Estado +AutoIngestJobsPanel.waitNode.text=Por favor, espere... +AutoIngestMetricsDialog.initReportText=Seleccione una fecha arriba y haga clic en el boton 'Generar Informe de Metricas' para generar un informe de metricas. +AutoIngestMetricsDialog.title.text=Metricas de Auto Ingestion +ConfirmationDialog.DoNotDelete=No eliminar +ConfirmationDialog.Delete=Eliminar permanentemente +ConfirmationDialog.DeleteAreYouSure=Todo el caso sera eliminado. ¿Estas seguro de que quieres eliminar el caso +ConfirmationDialog.ConfirmDeletion=¿Realmente deseas cancelar el trabajo de copia +ConfirmationDialog.ConfirmDeletionHeader=Confirmar Eliminacion +ConfirmationDialog.QuestionMark=? +ConfirmationDialog.DoNotCancelModule=No Cancelar Modulo +ConfirmationDialog.DoNotCancelJob=No Cancelar Trabajo +ConfirmationDialog.DoNotCancel=No cancelar +ConfirmationDialog.Cancel=Continuar con la cancelacion +ConfirmationDialog.CancelJob=Cancelar Trabajo +ConfirmationDialog.CancelModule=Cancelar Modulo +ConfirmationDialog.CancelModuleAreYouSure=La ejecucion del modulo de ingestion que esta procesando el trabajo actual sera cancelada. ¿Estas seguro? +ConfirmationDialog.CancelJobAreYouSure=El trabajo en ejecucion actual sera cancelado. ¿Estas seguro? +ConfirmationDialog.ConfirmCancellationHeader=Confirmar Cancelacion +ConfirmationDialog.Exit=Salir +ConfirmationDialog.DoNotExit=No Salir +ConfirmationDialog.ConfirmExit=Todos los trabajos de copia incompletos seran cancelados. ¿Estas seguro? +ConfirmationDialog.ConfirmExitHeader=Confirmar Salida +CTL_AinStatusDashboardAction=Nodos de Auto Ingestion +CTL_AinStatusDashboardTopComponent=Nodos de Auto Ingestion +CTL_AutoIngestDashboardAction=Trabajos de Auto Ingestion +CTL_AutoIngestDashboardOpenAction=Panel de Control de Auto Ingestion +CTL_AutoIngestDashboardTopComponent=Trabajos de Auto Ingestion +CTL_CasesDashboardAction=Panel de Casos Multi-Usuario +CTL_CasesDashboardTopComponent=Casos +DeleteCaseAction.confirmationText=¿Estas seguro de que deseas eliminar lo siguiente para el(los) caso(s):\n\tNodos znodes del archivo de manifiesto\n\tBase de datos del caso\n\tArchivo core.properties\n\tDirectorio del caso\n\tCasos znodes +DeleteCaseAction.menuItemText=Eliminar Caso(s) +DeleteCaseAction.progressDisplayName=Eliminar Caso(s) +DeleteCaseAction.taskName=app-input-and-output +DeleteCaseInputAction.confirmationText=¿Estas seguro de que deseas eliminar lo siguiente para el(los) caso(s):\n\tArchivos del archivo de manifiesto\n\tOrigenes de datos\n +DeleteCaseInputAction.menuItemText=Eliminar Entrada +DeleteCaseInputAction.progressDisplayName=Eliminar Entrada +DeleteCaseInputAction.taskName=input +DeleteCaseInputAndOutputAction.confirmationText=¿Estas seguro de que deseas eliminar lo siguiente para el(los) caso(s):\n\tArchivos del archivo de manifiesto\n\tOrigenes de datos\n\tNodos znodes del archivo de manifiesto\n\tBase de datos del caso\n\tArchivo core.properties\n\tDirectorio del caso\n\tCasos znodes +DeleteCaseInputAndOutputAction.menuItemText=Eliminar Entrada y Salida +DeleteCaseInputAndOutputAction.progressDisplayName=Eliminar Entrada y Salida +DeleteCaseInputAndOutputAction.taskName=input-and-output +DeleteCaseOutputAction.confirmationText=¿Estas seguro de que deseas eliminar lo siguiente para el(los) caso(s):\n\tNodos znodes del archivo de manifiesto\n\tBase de datos del caso\n\tArchivo core.properties\n\tDirectorio del caso\n\tCasos znodes +DeleteCaseOutputAction.menuItemText=Eliminar Salida +DeleteCaseOutputAction.progressDisplayName=Eliminar Salida +DeleteCaseOutputAction.taskName=output +DeleteCaseTask.progress.acquiringCaseDirLock=Obteniendo el bloqueo exclusivo del directorio del caso... +DeleteCaseTask.progress.acquiringCaseNameLock=Obteniendo el bloqueo exclusivo del nombre del caso... +DeleteCaseTask.progress.acquiringManifestLocks=Obteniendo los bloqueos exclusivos de los archivos del manifiesto... +DeleteCaseTask.progress.connectingToCoordSvc=Conectando al servicio de coordinacion... +DeleteCaseTask.progress.deletingCaseDirCoordSvcNode=Eliminando nodo znode del directorio del caso... +DeleteCaseTask.progress.deletingCaseNameCoordSvcNode=Eliminando nodo znode del nombre del caso... +# {0} - data source path +DeleteCaseTask.progress.deletingDataSource=Eliminando origen de datos {0}... +DeleteCaseTask.progress.deletingJobLogLockNode=Eliminando nodo znode del registro de auto ingestion del caso... +# {0} - ruta del archivo de manifiesto +DeleteCaseTask.progress.deletingManifest=Eliminando archivo de manifiesto {0}... +# {0} - ruta del archivo de manifiesto +DeleteCaseTask.progress.deletingManifestFileNode=Eliminando el nodo znode del archivo de manifiesto para {0}... +DeleteCaseTask.progress.deletingResourcesLockNode=Eliminando nodo znode de recursos del caso... +DeleteCaseTask.progress.gettingManifestPaths=Obteniendo rutas de archivos de manifiesto... +# {0} - ruta del archivo de manifiesto +DeleteCaseTask.progress.lockingManifest=Bloqueando archivo de manifiesto {0}... +DeleteCaseTask.progress.openingCaseDatabase=Abriendo la base de datos del caso... +DeleteCaseTask.progress.openingCaseMetadataFile=Abriendo archivo de metadatos del caso... +# {0} - ruta del archivo de manifiesto +DeleteCaseTask.progress.parsingManifest=Analizando archivo de manifiesto {0}... +# {0} - ruta del archivo de manifiesto +DeleteCaseTask.progress.releasingManifestLock=Libreando el bloqueo en el archivo de manifiesto {0}... +DeleteCaseTask.progress.startMessage=Iniciando eliminacion... +DeleteOrphanCaseNodesAction.progressDisplayName=Limpiar Nodos Z del Caso +# {0} - cantidad de elementos +DeleteOrphanCaseNodesDialog.additionalInit.lblNodeCount.text=Znodes encontrados: {0} +# {0} - cantidad de elementos +DeleteOrphanCaseNodesDialog.additionalInit.znodesTextArea.countMessage=ZNODES ENCONTRADOS: {0} +DeleteOrphanCaseNodesTask.progress.connectingToCoordSvc=Conectando con el servicio de coordinacion +# {0} - ruta del nodo +DeleteOrphanCaseNodesTask.progress.deletingOrphanedCaseNode=Eliminando znode del caso huerfano {0} +DeleteOrphanCaseNodesTask.progress.gettingCaseZnodes=Consultando el servicio de coordinacion para obtener los znodes del caso +DeleteOrphanCaseNodesTask.progress.lookingForOrphanedCaseZnodes=Buscando znodes del caso huerfanos +DeleteOrphanCaseNodesTask.progress.startMessage=Iniciando limpieza de znodes del caso huerfanos +DeleteOrphanManifestNodesAction.progressDisplayName=Limpiar Znodes de Archivos de Manifiesto +DeleteOrphanManifestNodesTask.progress.connectingToCoordSvc=Conectando con el servicio de coordinacion +# {0} - ruta del nodo +DeleteOrphanManifestNodesTask.progress.deletingOrphanedManifestNode=Eliminando znode del archivo de manifiesto huerfano {0} +DeleteOrphanManifestNodesTask.progress.gettingManifestNodes=Consultando el servicio de coordinacion para obtener los znodes de archivos de manifiesto +DeleteOrphanManifestNodesTask.progress.lookingForOrphanedManifestFileZnodes=Buscando znodes de archivo de manifiesto huerfanos +DeleteOrphanManifestNodesTask.progress.startMessage=Iniciando limpieza de znodes de archivos de manifiesto huerfanos +HINT_CasesDashboardTopComponent=Este es un panel de control administrativo para casos multiusuario +OcrIconCellRenderer.disabled.tooltiptext=Este trabajo no tiene OCR habilitado. +OcrIconCellRenderer.enabled.tooltiptext=Este trabajo tiene OCR habilitado. +OpenAutoIngestLogAction.deletedLogErrorMsg=El registro de auto ingestion del caso ha sido eliminado. +OpenAutoIngestLogAction.logOpenFailedErrorMsg=Error al abrir el registro de auto ingestion del caso. Consulte el registro de la aplicacion para obtener mas detalles. +OpenAutoIngestLogAction.menuItemText=Abrir archivo de registro de Auto Ingestion. +# {0} - caseErrorMessage +OpenCaseAction.errorMsg=Error al abrir el caso: {0} +OpenCaseAction.menuItemText=Abrir +OpenIDE-Module-Long-Description=Este modulo contiene caracteristicas que estan siendo desarrolladas por Basis Technology y no forman parte de la distribucion predeterminada de Autopsy. Puedes habilitar este modulo para utilizar las nuevas caracteristicas. Las caracteristicas deberian ser estables, pero su comportamiento exacto y API estan sujetos a cambios.\n\nNo ofrecemos garantia de que la API de este modulo no cambie, por lo que los desarrolladores deben tener cuidado al depender de ella. +OpenIDE-Module-Name=Experimental +OpenIDE-Module-Short-Description=Este modulo contiene caracteristicas que estan siendo desarrolladas por Basis Technology y no forman parte de la distribucion predeterminada de Autopsy. +DisplayLogDialog.cannotOpenLog=No se puede abrir el archivo de registro de auto ingestion del caso seleccionado. +DisplayLogDialog.cannotFindLog=No se puede encontrar el archivo de registro de auto ingestion del caso seleccionado. +DisplayLogDialog.unableToShowLogFile=No se puede mostrar el archivo de registro. +DisplayLogDialog.okay=Aceptar +CopyFilesPanel.lbFrom.text=Desde Origen +CopyFilesPanel.lbTo.text=Caso de Destino +CopyFilesPanel.bnCopy.text=C&opiar +CopyFilesPanel.bnCancel.text=C&ancelar +CopyFilesPanel.lbStatus.text=Estado +CopyFilesPanel.tbCaseName.text= +CopyFilesPanel.tbSourceName.text= +CopyFilesPanel.bnCaseName.text=Examinar +CopyFilesPanel.bnSourceName.text=E&xaminar +CopyFilesPanel.spRetryCount.toolTipText=Saltar este trabajo de copia y pasar al siguiente despues de fallar este numero de veces. +CopyFilesPanel.rbExistingCase.text= +CopyFilesPanel.rbNewCase.text= +CopyFilesPanel.lbFailureText.text=fallos +CopyFilesPanel.lpSkipAfterText.text=Saltar despues de +CopyFilesPanel.lbExistingCase.text=Usar Caso Existente +CopyFilesPanel.lbNewCase.text=Crear Nuevo Caso +CopyFilesPanel.lbTitle.text=Programar Nuevo Trabajo de Copia +CopyFilesPanel.confirmCancellation=¿Realmente deseas cancelar la operacion de copia? +CopyFilesPanel.confirmCopyHeader=Confirmar Copia al Caso Existente +CopyFilesPanel.confirmCopyAdd=ya existe. ¿Realmente deseas copiar mas archivos a este caso? +CopyFilesPanel.confirmCopyYes=Copiar +CopyFilesPanel.confirmCopyNo=No copiar +CopyFilesPanel.lbScheduledJobs.text=Trabajos de Copia Programados +CopyFilesPanel.lbRunningJob.text=Trabajo de Copia en Ejecucion +CopyFilesPanel.lbCompletedJobs.text=Trabajos de Copia Completados +CopyFilesPanel.Source=Origen +CopyFilesPanel.Destination=Destino +CopyFilesPanel.Initiated=Iniciado +CopyFilesPanel.Started=Comenzado +CopyFilesPanel.RunTime=Tiempo de Ejecucion +CopyFilesPanel.Status=Estado +CopyFilesPanel.tableCompletedJobs.toolTipText=Muestra los trabajos de copia completados y su estado +CopyFilesPanel.toolTipText=Muestra el trabajo de copia en ejecucion actualmente. +CopyFilesPanel.lbWait.text=Esperar +CopyFilesPanel.lbWaitMinutesText.text=minutos antes de reintentar +CopyFilesPanel.bnUp.text= +CopyFilesPanel.bnDown.text= +CopyFilesPanel.bnShowLog.text=&Mostrar Registro +CopyFilesPanel.tablePendingJobs.toolTipText=Trabajos de copia programados en el orden en que se completaran, comenzando desde la parte superior. +CopyFilesPanel.lbPendingJobs.text=Trabajos de Copia Programados +CopyFilesPanel.chooseOrCreate=Por favor, elige o crea un caso +CopyFilesPanel.invalidCasePath=Ruta de caso no valida +CopyFilesPanel.empty= +CopyFilesPanel.failedToDeleteSome=Error al eliminar algunos archivos en el trabajo cancelado +CopyFilesPanel.noRunningJob=No hay trabajo de copia en ejecucion para cancelar +CopyFilesPanel.destinationEmpty=El destino no puede estar dentro del origen +CopyFilesPanel.copyAborted=Copia cancelada. No se realizo ninguna copia. +CopyFilesPanel.copying=Copiando... +CopyFilesPanel.copySuccess=Archivos copiados correctamente. +CopyFilesPanel.errorCopying=Error al copiar. +CopyFilesPanel.permissionDenied=Permiso denegado. Verifica los permisos en los directorios de origen y destino. +CopyFilesPanel.retriesLeft=reintentos restantes. Esperando para volver a intentar. +CopyFilesPanel.noRetriesLeft=Error al copiar. Todos los reintentos han sido utilizados. Se omitira. +CopyFilesPanel.cancelled=Trabajo de copia en ejecucion cancelado +CopyFilesPanel.deleteConfirmed=Trabajo de copia cancelado +CopyFilesPanel.deleteNotConfirmed=Trabajo de copia no cancelado +CopyFilesPanel.deleteUnable=No se puede cancelar el trabajo de copia +CopyFilesPanel.unableToOpenLogfile=No se puede abrir el archivo de registro +CopyFilesPanel.invalidSourcePath=Ruta de origen no valida +CopyFilesPanel.lbScheduledJobs.text=Trabajos de Copia Programados (Espacio reservado) +CopyFilesPanel.ConfirmCancellation=¿Realmente deseas cancelar la operacion de copia? +CopyFilesPanel.ConfirmCopyHeader=Confirmar Copia al Caso Existente +CopyFilesPanel.ConfirmCopyAdd=ya existe. ¿Realmente deseas copiar mas archivos a este caso? +CopyFilesPanel.ConfirmCopyYes=Copiar +CopyFilesPanel.ConfirmCopyNo=No copiar +ConfirmationDialog.ConfirmUnlockHeader=Confirmar Desbloqueo de Caso +CopyFilesPanel.bnCancelPendingJob.text=Ca&ncelar +CopyFilesPanel.tbDestinationCase.text= +CopyFilesPanel.cbThrottleNetwork.text=&Regular Red +CopyFilesPanel.cbThrottleNetwork.toolTipText=Selecciona esta casilla si hay una conexion de red de baja velocidad involucrada en este trabajo de copia.
    \nSeleccionar esta casilla limitara artificialmente la velocidad de transferencia mediante la insercion de retrasos estrategicos.
    \nEsto ayuda a copiar archivos a traves de redes de baja velocidad donde la transferencia
    \nfallaria de lo contrario. Solo seleccionalo si tienes problemas para copiar a traves de la red. +CopyFilesPanel.bnShowCurrentLog.text=&Mostrar Registro +CopyFilesPanel.bnShowCurrentLog.text=&Mostrar Registro +CopyFilesPanel.lbCaseName.text=Nombre del Caso +OptionsCategory_Name_Case_Import=Importacion de Caso +OptionsCategory_Keywords_Case_Import=Configuracion de Importacion de Caso +CaseImportPanel.validationErrMsg.MUdisabled=Las configuraciones de usuario multiple deben estar habilitadas y guardadas. +CaseImportPanel.validationErrMsg.AIMdisabled=El cluster de autoingestion automatizada debe unirse en el modo de autoingestion automatizada. +CaseImportPanel.ChooseCase=Elige un caso para importar +CaseImportPanel.ChooseSource=Elige imagenes de origen +CaseImportPanel.DatabaseConnected=Base de datos conectada +CaseImportPanel.DatabaseNotConnected=Verifica la configuracion de la base de datos de usuario multiple. +CaseImportPanel.ImportingCases=Importando caso(s)... +CaseImportPanel.Cancelling=Cancelando +CaseImportPanel.CannotOpenLog=No se puede abrir el archivo de registro +CaseImportPanel.BadCaseSourceFolder=Nombre de carpeta de origen de caso incorrecto +CaseImportPanel.BadCaseDestinationFolder=Nombre de carpeta de destino de caso incorrecto +CaseImportPanel.BadImageSourceFolder=Nombre de carpeta de origen de imagen incorrecto +CaseImportPanel.BadImageDestinationFolder=Nombre de carpeta de destino de imagen incorrecto +CaseImportPanel.Error=Error +CaseImportPanel.Complete=Completo +CaseImportPanel.Blank= +CaseImportPanel.DeleteWarning=Verifica que no haya archivos importantes en el directorio de origen del caso. +PrioritizationAction.deprioritizeCaseAction.error=Error al depriorizar el caso "%s". +PrioritizationAction.deprioritizeCaseAction.title=Depriorizar Caso +PrioritizationAction.deprioritizeJobAction.error=Error al depriorizar el trabajo "%s". +PrioritizationAction.deprioritizeJobAction.title=Depriorizar Trabajo +PrioritizationAction.prioritizeCaseAction.error=Error al priorizar el caso "%s". +PrioritizationAction.prioritizeCaseAction.title=Priorizar Caso +PrioritizationAction.prioritizeJobAction.error=Error al priorizar el trabajo "%s". +PrioritizationAction.prioritizeJobAction.title=Priorizar Trabajo +PrioritizedIconCellRenderer.notPrioritized.tooltiptext=Este trabajo no ha sido priorizado. +PrioritizedIconCellRenderer.prioritized.tooltiptext=Este trabajo ha sido priorizado. El trabajo prioritizado mas reciente deberia procesarse a continuacion. +SingleUserCaseImporter.NonUniqueOutputFolder=La carpeta de destino no es unica. Saltando +SingleUserCaseImporter.WillImport=Importara: +SingleUserCaseImporter.None=Ninguno +SingleUserCaseImporter.WillNotImport=No importara: +SingleUserCaseImporter.ContinueWithImport=¿Continuar con la importacion? +SingleUserCaseImporter.Cancelled=Cancelado +SingleUserCaseImporter.ImportedAsMultiUser=\nEste caso se importo como un caso colaborativo de usuario multiple en +SingleUserCaseImporter.StartingBatch=Iniciando procesamiento por lotes de +SingleUserCaseImporter.to=a +SingleUserCaseImporter.ErrorFindingAutFiles=Error al intentar encontrar archivos .aut para importar +SingleUserCaseImporter.StartedProcessing=Comenzando procesamiento de +SingleUserCaseImporter.FinishedProcessing=Finalizando procesamiento de +SingleUserCaseImporter.FailedToComplete=Error al completar el procesamiento de +SingleUserCaseImporter.CompletedBatch=Procesamiento por lotes de completado +SingleUserCaseImporter.AbortingBatch=Abortando procesamiento por lotes de +SingleUserCaseImporter.SourceImageMissing=. Falta la imagen de origen para +CopyFilesPanel.bnOptions.text=&Opciones +AutoIngestDashboard.lbServicesStatus.text=Estado de los Servicios: +AutoIngestDashboard.tbServicesStatusMessage.text=Conectando... +FileExporterSettingsPanel.ChooseRootDirectory=Elije un directorio raiz para la salida de archivos +FileExporterSettingsPanel.ChooseReportDirectory=Elije un directorio para el informe +FileExporterSettingsPanel.RuleName=Nombre de la Regla +FileExporterSettingsPanel.RootDirectory=Directorio Raiz +FileExporterSettingsPanel.ReportDirectory=Directorio de Informes +FileExporterSettingsPanel.AttributeValue=Valor a comparar +FileExporterSettingsPanel.RuleListTooltip=Muestra una lista de reglas. +FileExporterSettingsPanel.RuleOutputTooltip=Esta es la carpeta de salida raiz para la salida guardada. Debes tener permisos de lectura y escritura para esta carpeta. +FileExporterSettingsPanel.MimetypeTooltip=Selecciona el tipo MIME para comparar. +FileExporterSettingsPanel.MimetypeText=Tipo MIME +FileExporterSettingsPanel.MimetypeCheckboxTooltip=Selecciona esto para filtrar segun el tipo MIME. +FileExporterSettingsPanel.FileSizeValueToolTip=Selecciona el valor para comparar. +FileExporterSettingsPanel.FileSizeUnitToolTip=Selecciona las unidades del valor de tamanio de archivo. +FileExporterSettingsPanel.FileSize=Tamanio de Archivo +FileExporterSettingsPanel.FileSizeComparisonTooltip=Selecciona el operador de comparacion de tamanio de archivo. +FileExporterSettingsPanel.MimeTypeComparisonTooltip=Selecciona el operador de comparacion de tipo MIME. +FileExporterSettingsPanel.CurrentlySelectedRuleNameTooltip=Muestra el nombre de la regla seleccionada actualmente. +FileExporterSettingsPanel.SaveText=Guardar Regla +FileExporterSettingsPanel.SaveTooltip=Haz clic para guardar la regla. Debe haber un nombre de regla y al menos una condicion (casilla) habilitada. +FileExporterSettingsPanel.BrowseText=Examinar +FileExporterSettingsPanel.BrowseRootOutputFolder=Examinar para establecer la carpeta de salida de archivos. +FileExporterSettingsPanel.NewText=Nueva Regla +FileExporterSettingsPanel.NewRuleTooltip=Borra el editor de reglas, permitiendo al usuario ingresar una nueva regla. +FileExporterSettingsPanel.BrowseReportTooltip=Examinar para establecer la carpeta de informes. +FileExporterSettingsPanel.ReportOutputFolderTooltip=Esta es la carpeta de salida de informes. Debes tener permisos de lectura y escritura para esta carpeta. +FileExporterSettingsPanel.DeleteText=Eliminar Regla +FileExporterSettingsPanel.DeleteTooltip=Elimina la regla seleccionada. +FileExporterSettingsPanel.UnsavedChangesLost=Los cambios no guardados de la regla se perderan. ¿Continuar? +FileExporterSettingsPanel.ChangesWillBeLost=Se perderan los cambios no guardados. +FileExporterSettingsPanel.DoYouWantToSave=¿Deseas guardar? +FileExporterSettingsPanel.BadRootFolder=Se eligio una carpeta raiz incorrecta. +FileExporterSettingsPanel.BadFolderForInterestingFileExport=Carpeta incorrecta para la exportacion de archivos. +FileExporterSettingsPanel.BadReportFolder=Se eligio una carpeta de informes incorrecta. +FileExporterSettingsPanel.ReallyDeleteRule=¿Realmente deseas eliminar la regla? +FileExporterSettingsPanel.ReallyDeleteCondition=¿Realmente deseas eliminar la condicion? +FileExporterSettingsPanel.QuestionMark=? +FileExporterSettingsPanel.ConfirmRuleDeletion=Confirmar eliminacion de la regla +FileExporterSettingsPanel.ConfirmClauseDeletion=Confirmar eliminacion de la clausula +FileExporterSettingsPanel.Title=Generador de Reglas de Exportacion de Archivos +FileExporterSettingsPanel.UnableToFindDirectory=No se puede encontrar el directorio. +FileExporterSettingsPanel.PermissionsInvalid=Permisos de carpeta no validos. No se puede leer ni escribir. +FileExporterSettingsPanel.RuleNotSaved=Regla con formato incorrecto. Regla no guardada. +FileExporterSettingsPanel.MalformedRule=Regla con formato incorrecto. +FileExporterSettingsPanel.FileSize_1=Selecciona para incluir el tamanio de archivo en la regla +FileExporterSettingsPanel.MimetypeCheckboxTooltip_1=Selecciona para incluir el tipo MIME en la regla +FileExporterSettingsPanel.MimeTypeComparisonTooltip_1=Selecciona el operador condicional +FileExporterSettingsPanel.FileSizeComparisonTooltip_1=Selecciona el operador condicional +FileExporterSettingsPanel.FileSizeValueToolTip_1=Selecciona el tamanio de archivo deseado +FileExporterSettingsPanel.FileSizeUnitToolTip_1=Selecciona las unidades de tamanio de archivo deseadas +FileExporterSettingsPanel.MimetypeTooltip_1=Selecciona el tipo MIME deseado +FileExporterSettingsPanel.CurrentlySelectedRuleNameTooltip_1=El nombre de la regla +FileExporterSettingsPanel.ReportOutputFolderTooltip_1=La carpeta Informes donde se escribe un informe JSON para cada archivo exportado. +FileExporterSettingsPanel.RuleOutputTooltip_1=La carpeta Archivos donde se escribe cada archivo coincidente +FileExporterSettingsPanel.BrowseRootOutputFolder_1=Examinar la carpeta Archivos +FileExporterSettingsPanel.BrowseReportTooltip_1=Examinar la carpeta Informes +FileExporterSettingsPanel.NewRuleTooltip_1=Borrar el editor de reglas para comenzar una nueva regla +FileExporterSettingsPanel.DeleteTooltip_1=Eliminar la regla seleccionada +FileExporterSettingsPanel.SaveTooltip_1=Guardar la regla actual +AutoIngestDashboard.refreshButton.toolTipText=Actualizar tablas mostradas +AutoIngestDashboard.refreshButton.text=&Actualizar +AutoIngestDashboard.jButton1.text=jButton1 +AutoIngestMetricsDialog.reportTextArea.text= +AutoIngestMetricsDialog.metricsButton.text=Generar Informe de Metricas +AutoIngestMetricsDialog.closeButton.text=Cerrar +AutoIngestMetricsDialog.datePicker.toolTipText=Elegir una fecha +AutoIngestMetricsDialog.startingDataLabel.text=Fecha de Inicio: +AutoIngestControlPanel.bnDeprioritizeCase.text=Despriorizar Caso +AutoIngestControlPanel.bnDeprioritizeJob.text=Despriorizar Trabajo +AutoIngestControlPanel.bnPrioritizeCase.text=Priorizar Caso +AutoIngestControlPanel.bnPrioritizeJob.text=Priorizar Trabajo +AutoIngestControlPanel.bnShowProgress.text=Progreso de Ingesta +AutoIngestControlPanel.bnCancelJob.text=&Cancelar Trabajo +AutoIngestControlPanel.bnCancelModule.text=Cancelar &Modulo +AutoIngestControlPanel.bnReprocessJob.text=Reprocesar Trabajo +AutoIngestControlPanel.bnShowCaseLog.text=Mostrar &Registro del Caso +AutoIngestControlPanel.bnPause.text=Pausar +AutoIngestControlPanel.bnRefresh.text=&Actualizar +AutoIngestControlPanel.bnOptions.text=&Opciones +AutoIngestControlPanel.bnOpenLogDir.text=Abrir Carpeta de Registros del Sistema +AutoIngestControlPanel.bnClusterMetrics.text=Metricas de Auto Ingesta +AutoIngestControlPanel.bnExit.text=&Salir +AutoIngestControlPanel.lbStatus.text=Estado: +AutoIngestControlPanel.lbServicesStatus.text=Estado de los Servicios: +AutoIngestControlPanel.lbPending.text=Trabajos Pendientes +AutoIngestControlPanel.lbRunning.text=Trabajos en Ejecucion +AutoIngestControlPanel.lbCompleted.text=Trabajos Completados +AutoIngestControlPanel.tbStatusMessage.text= +AutoIngestControlPanel.tbServicesStatusMessage.text= +AutoIngestControlPanel.bnDeprioritizeJob.toolTipText= +AutoIngestControlPanel.bnDeprioritizeCase.toolTipText= +AutoIngestControlPanel.bnPrioritizeJob.toolTipText=Mover esta carpeta al principio de la cola Pendiente. +AutoIngestControlPanel.bnPrioritizeCase.toolTipText=Mover todas las imagenes asociadas con un caso al principio de la cola Pendiente. +AutoIngestControlPanel.bnPrioritizeJob.actionCommand=Priorizar Trabajo +AutoIngestControlPanel.bnDeprioritizeJob.actionCommand=Despriorizar Trabajo +AinStatusDashboard.refreshButton.toolTipText=Actualizar tablas mostradas +AinStatusDashboard.refreshButton.text=&Actualizar +AinStatusDashboard.clusterMetricsButton.text=Metricas de Auto Ingesta +AinStatusDashboard.nodeStatusTableTitle.text=Nodos de Auto Ingesta +AinStatusDashboard.healthMonitorButton.text=Monitor de Salud +CasesDashboardTopComponent.refreshButton.text=Actualizar +AutoIngestCasesDeletionDialog.jLabel1.text=Progreso +CasesDashboardTopComponent.deleteOrphanCaseNodesButton.text=Eliminar Nodos Huerfanos del Caso +CasesDashboardTopComponent.deleteOrphanManifestNodesButton.text=Eliminar Nodos Huerfanos del Manifiesto +DeleteOrphanCaseNodesDialog.descriptionText.text=Los siguientes casos tienen nodos huerfanos. ¿Desea eliminarlos? +DeleteOrphanCaseNodesDialog.okButton.text=Aceptar +DeleteOrphanCaseNodesDialog.cancelButton.text=Cancelar +DeleteOrphanCaseNodesDialog.titleText.text=¿Eliminar los siguientes nodos? +DeleteOrphanCaseNodesDialog.lblNodeCount.text= diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/Bundle_ar.properties b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/Bundle_ar.properties new file mode 100644 index 0000000000..cb5193f0b0 --- /dev/null +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/Bundle_ar.properties @@ -0,0 +1,178 @@ +AdvancedAutoIngestSettingsPanel.AccessibleContext.accessibleName= +AdvancedAutoIngestSettingsPanel.ItemDisabled.text=Elemento desactivado segun el modo actual de Autopsy. +AdvancedAutoIngestSettingsPanel.jPanelFolderMaintenanceSettings.border.title=Configuracion de mantenimiento de carpetas +AdvancedAutoIngestSettingsPanel.lbConcurrentJobsPerCase.toolTipText=Limite suave en el numero de trabajos concurrentes por caso cuando se procesan varios casos simultaneamente. +AdvancedAutoIngestSettingsPanel.lbInputScanInterval.AccessibleContext.accessibleDescription=El intervalo +AdvancedAutoIngestSettingsPanel.lbInputScanInterval.toolTipText=El intervalo entre exploraciones para nuevos archivos de manifiesto. +AdvancedAutoIngestSettingsPanel.lbInputScanIntervalMinutes1.AccessibleContext.accessibleName=minutos +AdvancedAutoIngestSettingsPanel.lbInputScanIntervalMinutes1.text=minutos +AdvancedAutoIngestSettingsPanel.lbNumberOfThreads.toolTipText=El numero de hilos que ejecutan modulos de ingestion a nivel de archivo. +AdvancedAutoIngestSettingsPanel.lbRetriesAllowed.toolTipText=El numero maximo de reintentos para trabajos fallidos. +AdvancedAutoIngestSettingsPanel.lbSecondsBetweenJobs.toolTipText=Un tiempo de espera utilizado por los nodos de ingestion automatica para asegurar la sincronizacion adecuada de las operaciones del nodo. +AdvancedAutoIngestSettingsPanel.tbWarning.text=ADVERTENCIA: Asegurese de saber lo que esta haciendo antes de modificar estos valores. El uso informado puede mejorar el rendimiento del sistema. El uso incorrecto puede causar una degradacion del rendimiento del sistema y perdida de datos. Consulte la guia del usuario para obtener mas detalles. +AdvancedAutoIngestSettingsPanel.threadCountLabel.text=Para esta computadora, se deben utilizar como maximo {0} hilos de ingestion de archivos. +AIMIngestSettingsPanel.browseGlobalSettingsButton.text=Buscar +AIMIngestSettingsPanel.globalSettingsErrorTextField.text= +AIMIngestSettingsPanel.globalSettingsTextField.text= +AIMIngestSettingsPanel.jButton1.text=Descargar configuraciones compartidas +AIMIngestSettingsPanel.jButtonEditIngestSettings.text=Configuracion del modulo de ingestion +AIMIngestSettingsPanel.jButtonEditIngestSettings.toolTipText=Configuracion de trabajos de ingestion para el modo de procesamiento automatizado. +AIMIngestSettingsPanel.jLabel1.text=Descargar la configuracion compartida actual (altamente recomendado hacerlo antes de editar) +AIMIngestSettingsPanel.lbSecondsBetweenJobs.text=Numero de segundos de espera entre trabajos: +AIMIngestSettingsPanel.lbSecondsBetweenJobs.toolTipText=Aumente este valor si los bloqueos de la base de datos causan problemas. Esto proporciona un poco mas de tiempo para finalizar. +AIMIngestSettingsPanel.spSecondsBetweenJobs.toolTipText=Aumente este valor si los bloqueos de la base de datos causan problemas. Esto proporciona un poco mas de tiempo para finalizar. +AutoIngestSettingsPanel.examinerModeRadioButton.text=Modo examinador +AutoIngestSettingsPanel.autoIngestModeRadioButton.text=Modo de ingestion automatica +AutoIngestSettingsPanel.AdvancedAutoIngestSettingsPanel.Title=Configuraciones avanzadas +AutoIngestSettingsPanel.browseGlobalSettingsButton.text=Buscar +AutoIngestSettingsPanel.CannotAccess=No se puede acceder +AutoIngestSettingsPanel.EmptySettingsDirectory=Ingrese la ruta al directorio de configuracion +AutoIngestSettingsPanel.ErrorSettingDefaultFolder=Error al crear la carpeta predeterminada +AutoIngestSettingsPanel.FileExportRules.text=Reglas de exportacion de archivos +AutoIngestSettingsPanel.globalSettingsErrorTextField.text= +AutoIngestSettingsPanel.globalSettingsTextField.text= +AutoIngestSettingsPanel.ImageDirectoryUnspecified=Debe configurarse la carpeta de imagenes compartidas +AutoIngestSettingsPanel.InvalidPortNumber=Numero de puerto no valido. +AutoIngestSettingsPanel.jRadioButtonCopyFiles.text=Modo de copia de archivos +AutoIngestSettingsPanel.KeywordSearchNull=No se puede encontrar el servicio de busqueda de palabras clave +AutoIngestSettingsPanel.MustRestart=Es necesario reiniciar la aplicacion para que la nueva configuracion surta efecto +AutoIngestSettingsPanel.nodePanel.TabConstraints.tabTitle=Configuracion del nodo +AutoIngestSettingsPanel.NodeStatusLogging.text=Configuracion de registro del estado del nodo +AutoIngestSettingsPanel.restartRequiredLabel.text=Se requiere reiniciar la aplicacion para que surta efecto. +AutoIngestSettingsPanel.ResultsDirectoryUnspecified=Debe configurarse la carpeta de casos compartidos +AutoIngestSettingsPanel.tbOops.text= +AutoIngestSettingsPanel.validationErrMsg.incomplete=Rellene todos los valores +AutoIngestSettingsPanel.validationErrMsg.invalidDatabasePort=Numero de puerto de base de datos no valido +AutoIngestSettingsPanel.validationErrMsg.invalidIndexingServerPort=Numero de puerto de servidor Solr no valido +AutoIngestSettingsPanel.validationErrMsg.invalidMessageServicePort=Numero de puerto de servicio de mensajes no valido +AutoIngestSettingsPanel.validationErrMsg.MUdisabled=Las configuraciones de multiples usuarios deben estar habilitadas y guardadas +AutoIngestSettingsPanel.bnTestMultiUser.text=Probar +AutoIngestSettingsPanel.lbTestMultiUserText.text=Probar configuraciones de creacion de casos e ingestion multiusuario +AutoIngestSettingsPanel.lbMultiUserResult.text= +AutoIngestSettingsPanel.lbTestResultText.text= +AutoIngestSettingsPanel.validationErrMsg.outputPathNotSpecified=Debe configurarse la carpeta de salida +AutoIngestSettingsPanel.PathInvalid=La ruta del directorio de salida del caso no es valida +AutoIngestSettingsPanel.CheckPermissions=Asegurese de que la cuenta de usuario {0} tenga permisos de escritura en esta carpeta +AutoIngestSettingsPanel.Success=exito +AutoIngestSettingsPanel.TestRunning=Prueba en progreso... +AutoIngestSettingsPanel.servicesDown=Algunos de los servicios multiusuario estan inactivos +DayOfTheWeekRenderer_Friday_Label=Viernes +DayOfTheWeekRenderer_Monday_Label=Lunes +DayOfTheWeekRenderer_Saturday_Label=Sabado +DayOfTheWeekRenderer_Sunday_Label=Domingo +DayOfTheWeekRenderer_Thursday_Label=Jueves +DayOfTheWeekRenderer_Tuesday_Label=Martes +DayOfTheWeekRenderer_Wednesday_Label=Miercoles +GeneralOptionsPanelController.moduleErr.msg=Un modulo ha generado un error al escuchar actualizaciones de GeneralOptionsPanelController. Consulte el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +GeneralOptionsPanelController.moduleErr=Error de modulo +# {0} - errorMessage +MultiUserTestTool.criticalError=Error critico al ejecutar el procesador de fuente de datos en la fuente de datos de prueba: {0} +MultiUserTestTool.errorStartingIngestJob=Error del gestor de ingestion al iniciar el trabajo de ingestion +# {0} - cancellationReason +MultiUserTestTool.ingestCancelled=Ingestion cancelada debido a {0} +MultiUserTestTool.ingestSettingsError=Error al analizar la fuente de datos debido a errores de configuracion de ingestion +MultiUserTestTool.noContent=La fuente de datos de prueba no produjo contenido +# {0} - serviceName +MultiUserTestTool.serviceDown=El servicio multiusuario esta inactivo: {0} +MultiUserTestTool.startupError=Error al analizar la fuente de datos debido a un error de inicio del trabajo de ingestion +MultiUserTestTool.unableAddFileAsDataSource=No se puede agregar el archivo de prueba como fuente de datos para el caso +MultiUserTestTool.unableCreatFile=No se puede crear un archivo en el directorio de salida del caso +# {0} - serviceName +MultiUserTestTool.unableToCheckService=No se puede verificar el estado del servicio multiusuario: {0} +MultiUserTestTool.unableToCreateCase=No se puede crear el caso +MultiUserTestTool.unableToInitializeDatabase=No se inicializo correctamente la base de datos del caso +MultiUserTestTool.unableToInitializeFilTypeDetector=No se puede inicializar el detector de tipo de archivo +MultiUserTestTool.unableToReadDatabase=No se puede leer de la base de datos del caso +MultiUserTestTool.unableToReadTestFileFromDatabase=No se puede leer la informacion del archivo de prueba de la base de datos del caso +MultiUserTestTool.unableToRunIngest=No se puede ejecutar la ingestion en la fuente de datos de prueba +MultiUserTestTool.unableToUpdateKWSIndex=No se puede escribir en el indice de busqueda de palabras clave +MultiUserTestTool.unexpectedError=Error inesperado al realizar la prueba multiusuario +NodeStatusLogPanel.bnCancel.text=Cancelar +NodeStatusLogPanel.bnOk.text=Aceptar +NodeStatusLogPanel.bnTestDatabase.text=Probar +NodeStatusLogPanel.cbEnableLogging.text=Habilitar registro en la base de datos +NodeStatusLogPanel.lbDatabaseSettings.text=Configuracion de la base de datos +NodeStatusLogPanel.lbTestDatabase.text= +NodeStatusLogPanel.lbTestDbWarning.text= +NodeStatusLogPanel.lbTestDbWarning.text= +NodeStatusLogPanel.tbDbHostname.text= +NodeStatusLogPanel.tbDbHostname.toolTipText=Nombre de host o direccion IP +NodeStatusLogPanel.tbDbName.text= +NodeStatusLogPanel.tbDbName.toolTipText=Nombre de la base de datos +NodeStatusLogPanel.tbDbPassword.text= +NodeStatusLogPanel.tbDbPassword.toolTipText=Contrasenia +NodeStatusLogPanel.tbDbPort.text= +NodeStatusLogPanel.tbDbPort.toolTipText=Numero de puerto +NodeStatusLogPanel.tbDbUsername.text= +NodeStatusLogPanel.tbDbUsername.toolTipText=Nombre de usuario +OpenOptionsPanelAction.name=Opciones de ingestion automatica +OptionsCategory_Keywords_Auto_Ingest_Settings=Configuracion de ingestion automatica +OptionsCategory_Keywords_General=Opciones +OptionsCategory_Name_Auto_Ingest=Ingestion automatica +OptionsDialog.jButton1.text=jButton1 +OptionsDialog.jCheckBox1.text=jCheckBox1 +OptionsDialog.jLabel1.text=jLabel1 +StartupWindow.AutoIngestMode=Nodo de ingestion automatica +StartupWindow.CaseImportMode=Importacion de caso de un solo usuario +StartupWindow.CopyAndImportMode=Utilidades +StartupWindow.title.text=Bienvenido +AdvancedAutoIngestSettingsPanel.lbInputScanIntervalMinutes.text=minutos +AdvancedAutoIngestSettingsPanel.lbTimeoutHours.text=hora(s) +AdvancedAutoIngestSettingsPanel.lbSecondsBetweenJobsSeconds.text=segundos +AdvancedAutoIngestSettingsPanel.spSecondsBetweenJobs.toolTipText=Aumente este valor si los bloqueos de la base de datos causan problemas. Esto proporciona un poco mas de tiempo para finalizar. +AdvancedAutoIngestSettingsPanel.spTimeoutHours.toolTipText=Los componentes que generan procesos potencialmente largos terminan opcionalmente esos procesos si ha transcurrido el periodo de tiempo especificado. +AdvancedAutoIngestSettingsPanel.spInputScanInterval.toolTipText=Aumente este valor para reducir la frecuencia del escaneo de entrada. +AdvancedAutoIngestSettingsPanel.spMaximumRetryAttempts.AccessibleContext.accessibleDescription=Numero maximo de reintentos permitidos en el modo de ingestion automatizada +AdvancedAutoIngestSettingsPanel.spMaximumRetryAttempts.toolTipText=El numero maximo de veces que la ingestion automatica intentara reprocesar un trabajo si la ejecucion falla. +AdvancedAutoIngestSettingsPanel.lbRestartRequired.text=Se requiere reiniciar la aplicacion para que surta efecto. +AdvancedAutoIngestSettingsPanel.cbTimeoutEnabled.toolTipText=Los componentes que generan procesos potencialmente largos terminan opcionalmente esos procesos si ha transcurrido el periodo de tiempo especificado. +AdvancedAutoIngestSettingsPanel.cbTimeoutEnabled.text= +AdvancedAutoIngestSettingsPanel.lbConcurrentJobsPerCase.text=Objetivo de trabajos concurrentes por caso: +AdvancedAutoIngestSettingsPanel.lbNumberOfThreads.text=Numero de hilos a utilizar para la ingestion de archivos: +AdvancedAutoIngestSettingsPanel.lbRetriesAllowed.text=Intentos maximos permitidos para trabajos: +AdvancedAutoIngestSettingsPanel.lbInputScanInterval.text=Intervalo entre exploraciones de entrada: +AdvancedAutoIngestSettingsPanel.lbTimeoutText.text=Tiempo de espera de procesos externos: +AdvancedAutoIngestSettingsPanel.lbSecondsBetweenJobs.text=Tiempo de espera de sincronizacion del sistema: +AdvancedAutoIngestSettingsPanel.jPanelAutoIngestJobSettings.border.title=Configuracion de trabajos de ingestion automatizada +AdvancedAutoIngestSettingsPanel.lbSecondsBetweenJobs.toolTipText_1=Aumente este valor si los bloqueos de la base de datos causan problemas. Esto proporciona un poco mas de tiempo para finalizar. +AdvancedAutoIngestSettingsPanel.lbTimeoutText.toolTipText=Los componentes que generan procesos potencialmente largos terminan opcionalmente esos procesos si ha transcurrido el periodo de tiempo especificado. +AdvancedAutoIngestSettingsPanel.lbInputScanInterval.toolTipText_1=Aumente este valor para reducir la frecuencia del escaneo de entrada. +AdvancedAutoIngestSettingsPanel.lbInputScanIntervalMinutes.toolTipText= +AdvancedAutoIngestSettingsPanel.lbTimeoutHours.toolTipText= +AdvancedAutoIngestSettingsPanel.lbRetriesAllowed.toolTipText_1=El numero maximo de reintentos para trabajos que fallaron. +AdvancedAutoIngestSettingsPanel.lbRetriesAllowed.toolTipText_2=El numero maximo de reintentos para trabajos que fallaron. +AdvancedAutoIngestSettingsPanel.lbConcurrentJobsPerCase.toolTipText_1=Limite suave en el numero de trabajos concurrentes por caso cuando se procesan varios casos simultaneamente. +AdvancedAutoIngestSettingsPanel.lbNumberOfThreads.toolTipText_1=El numero de hilos que ejecutan modulos de ingestion a nivel de archivo. +AdvancedAutoIngestSettingsPanel.numberOfFileIngestThreadsComboBox.toolTipText=El numero de hilos que ejecutan modulos de ingestion a nivel de archivo. +NodeStatusLogPanel.tbDbName.toolTipText_1=Nombre de la base de datos +AutoIngestSettingsPanel.sharedSettingsTextField.text= +AutoIngestSettingsPanel.sharedConfigCheckbox.text=Usar configuracion compartida en la carpeta: +AutoIngestSettingsPanel.configButtonErrorTextField.text=configButtonErrorTextField +AutoIngestSettingsPanel.jLabelTaskDescription.text=jLabel1 +AutoIngestSettingsPanel.jLabelCurrentTask.text=Tarea actual: +AutoIngestSettingsPanel.downloadButton.text=Descargar configuracion +AutoIngestSettingsPanel.uploadButton.text=Guardar y subir configuracion +AutoIngestSettingsPanel.masterNodeCheckBox.text=Usar este nodo como nodo maestro que puede subir configuraciones +AutoIngestSettingsPanel.sharedSettingsErrorTextField.text=globalSettingsErrorTextField +AutoIngestSettingsPanel.browseSharedSettingsButton.text=Buscar +AutoIngestSettingsPanel.jLabelInvalidResultsFolder.text=jLabelInvalidResultsFolder +AutoIngestSettingsPanel.jLabelInvalidImageFolder.text=jLabelInvalidImageFolder +AutoIngestSettingsPanel.browseOutputFolderButton.text=Buscar +AutoIngestSettingsPanel.outputPathTextField.toolTipText=Carpeta de casos compartidos para el procesamiento automatizado, es decir, la ubicacion donde el modo de procesamiento automatizado creara la carpeta del caso para presentarla al usuario en modo examinador. +AutoIngestSettingsPanel.outputPathTextField.text= +AutoIngestSettingsPanel.jLabelSelectOutputFolder.text=Seleccionar carpeta de casos compartidos: +AutoIngestSettingsPanel.browseInputFolderButton.text=Buscar +AutoIngestSettingsPanel.inputPathTextField.toolTipText=Carpeta de entrada para el procesamiento automatizado, es decir, la ubicacion donde se crearan las carpetas de caso de entrada para la ingestion mediante el modo de procesamiento automatizado. +AutoIngestSettingsPanel.inputPathTextField.text= +AutoIngestSettingsPanel.jLabelSelectInputFolder.text=Seleccionar carpeta de imagenes compartidas: +AutoIngestSettingsPanel.bnFileExport.text=Configuracion de exportacion de archivos +AutoIngestSettingsPanel.bnAdvancedSettings.text=Configuraciones avanzadas +AutoIngestSettingsPanel.bnEditIngestSettings.toolTipText=Configuracion de trabajos de ingestion para el contexto del modo de procesamiento automatizado. +AutoIngestSettingsPanel.bnEditIngestSettings.text=Configuracion del modulo de ingestion +AdvancedAutoIngestSettingsPanel.pausePanel.border.title=Configuracion de pausa de ingestion automatizada +AdvancedAutoIngestSettingsPanel.lbpauseDay.text=Dia de la semana: +AdvancedAutoIngestSettingsPanel.lbPauseTime.text=Hora de inicio: +AdvancedAutoIngestSettingsPanel.lbPauseDuration.text=Duracion: +AdvancedAutoIngestSettingsPanel.lbColon.text=: +AdvancedAutoIngestSettingsPanel.cbEnablePause.text=Habilitar pausa +AdvancedAutoIngestSettingsPanel.lbDurationHours.text=horas diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/objectdetection/Bundle_ar.properties b/Experimental/src/org/sleuthkit/autopsy/experimental/objectdetection/Bundle_ar.properties new file mode 100644 index 0000000000..0b78351b6e --- /dev/null +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/objectdetection/Bundle_ar.properties @@ -0,0 +1,9 @@ +# {0} - detectionCount +ObjectDetectionFileIngestModule.classifierDetection.text=El clasificador detecto {0} objeto(s). +# {0} - classifierDir +ObjectDetectionFileIngestModule.noClassifiersFound.message=No se encontraron clasificadores en {0}, la deteccion de objetos no se llevara a cabo. +ObjectDetectionFileIngestModule.noClassifiersFound.subject=No se encontraron clasificadores. +ObjectDetectionFileIngestModule.notWindowsError=Este modulo solo esta disponible en Windows. +ObjectDetectionFileIngestModule.openCVNotLoaded=OpenCV no se cargo, pero es necesario para ejecutar el modulo. +ObjectDetectionModuleFactory.moduleDescription.text=Utilizar clasificadores de objetos para identificar objetos en imagenes. +ObjectDetectionModuleFactory.moduleName.text=Deteccion de objetos diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/volatilityDSP/Bundle_ar.properties b/Experimental/src/org/sleuthkit/autopsy/experimental/volatilityDSP/Bundle_ar.properties new file mode 100644 index 0000000000..1315d3a66f --- /dev/null +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/volatilityDSP/Bundle_ar.properties @@ -0,0 +1,53 @@ +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. + +# {0} - exception message +AddMemoryImageTask_errorMessage_criticalException=\ Error critico: {0} +# {0} - ruta del archivo de imagen +# {1} - ID del dispositivo +AddMemoryImageTask_exceptionMessage_noImageFile=\ El archivo de imagen de memoria {0} para el dispositivo {1} no existe +# {0} - ruta del archivo de imagen +AddMemoryImageTask_progressMessage_addingImageFile=\ Agregando imagen de memoria {0} +MemoryDSInputPanel.pathLabel.AccessibleContext.accessibleName=Buscar un archivo de imagen de memoria: +MemoryDSInputPanel.PluginsToRunLabel.text=Plugins a ejecutar: +MemoryDSInputPanel.pathLabel.text=Buscar un archivo de imagen de memoria: +MemoryDSInputPanel.pathTextField.text= +MemoryDSInputPanel.errorLabel.text=Etiqueta de error +MemoryDSInputPanel.browseButton.text=Buscar +MemoryDSInputPanel.timeZoneLabel.text=Zona horaria: +MemoryDSInputPanel.profileLabel.text=Perfil: +MemoryDSInputPanel.selectAllButton.text=Seleccionar todo +MemoryDSInputPanel.deselectAllButton.text=Deseleccionar todo +MemoryDSInputPanel_errorMsg_dataSourcePathOnCdrive=La ruta de la fuente de datos multiusuario esta en la unidad "C:" +MemoryDSInputPanel_errorMsg_noOpenCase=No hay un caso abierto +MemoryDSProcessor.dataSourceType=Archivo de imagen de memoria (Volatility) +# {0} - nombre del plugin +VolatilityProcessor_artifactAttribute_interestingFileSet=Plugin de Volatility {0} +# {0} - nombre del plugin +VolatilityProcessor_errorMessage_errorFindingFiles=Error al encontrar archivos analizados desde la salida del plugin {0} de Volatility +# {0} - nombre del plugin +VolatilityProcessor_errorMessage_failedToIndexArtifact=Error al indexar el artefacto a partir de la salida del plugin {0} de Volatility +# {0} - nombre del plugin +VolatilityProcessor_errorMessage_outputParsingError=Error al analizar la salida del plugin {0} de Volatility +# {0} - nombre del plugin +VolatilityProcessor_exceptionMessage_errorAddingOutput=Error al agregar la salida del plugin {0} al caso +# {0} - nombre del plugin +VolatilityProcessor_exceptionMessage_errorCreatingArtifact=Error al crear el artefacto para la salida del plugin {0} de Volatility +# {0} - nombre del plugin +VolatilityProcessor_exceptionMessage_errorIndexingOutput=Error al indexar la salida del plugin {0} de Volatility +# {0} - nombre del plugin +VolatilityProcessor_exceptionMessage_errorRunningPlugin=Error de Volatility al ejecutar el plugin {0} +VolatilityProcessor_exceptionMessage_failedToParseImageInfo=No se pudo analizar la informacion de la imagen +VolatilityProcessor_exceptionMessage_failedToRunVolatilityExe=No se pudo ejecutar Volatility +# {0} - ruta del archivo +# {1} - nombre del archivo +# {2} - nombre del plugin +VolatilityProcessor_exceptionMessage_fileNotFound=Archivo {0}/{1} no encontrado para la salida del plugin {2} de Volatility +# {0} - nombre del plugin +VolatilityProcessor_exceptionMessage_searchServiceNotFound=No se encontro el servicio de busqueda de palabras clave, la salida del plugin {0} de Volatility no se indexo +VolatilityProcessor_exceptionMessage_volatilityExeNotFound=No se encontro el ejecutable de Volatility +VolatilityProcessor_progressMessage_noCurrentCase=No se pudo obtener el caso actual +# {0} - nombre del plugin +VolatilityProcessor_progressMessage_runningImageInfo=Ejecutando el plugin {0} de Volatility para obtener informacion de la imagen + diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/Bundle_ar.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/Bundle_ar.properties new file mode 100644 index 0000000000..b1bc463887 --- /dev/null +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/Bundle_ar.properties @@ -0,0 +1,43 @@ +CTL_ImageGalleryAction=Galeria de Imagenes/Videos +CTL_ImageGalleryTopComponent=Galeria de Imagenes/Videos +DrawableDbTask.InnerTask.message.name=estado +DrawableDbTask.InnerTask.progress.name=progreso +DrawableFileUpdateTask_committingDb.status=guardando la base de datos de imagenes/videos +DrawableFileUpdateTask_errPopulating_errMsg=Hubo un error al poblar la base de datos de la Galeria de Imagenes. +DrawableFileUpdateTask_populatingDb_status=poblando la base de datos de imagenes/videos analizadas +DrawableFileUpdateTask_stopCopy_status=Deteniendo la tarea de copia a la base de datos de imagenes/videos. +ImageGallery.dialogTitle=Galeria de Imagenes +ImageGallery.showTooManyFiles.contentText=Hay demasiados archivos en las fuentes de datos seleccionadas, lo que podria afectar el rendimiento. +ImageGallery.showTooManyFiles.headerText= +ImageGalleryController.dataSourceAnalyzed.confDlg.msg=Se agrego una nueva fuente de datos y se completo la ingestion.\nEs posible que la base de datos de imagenes/videos este desactualizada. ¿Deseas actualizar la base de datos con los resultados de la ingestion?\n +ImageGalleryController.dataSourceAnalyzed.confDlg.title=Galeria de Imagenes +ImageGalleryController.noGroupsDlg.msg1=No hay grupos completamente analizados; pero la escucha de la ingestion esta desactivada. No habra grupos disponibles hasta que se termine la ingestion y se reactive la escucha. +ImageGalleryController.noGroupsDlg.msg2=Aun no se han analizado completamente los grupos, pero la ingestion sigue en curso. Por favor, espera. +ImageGalleryController.noGroupsDlg.msg3=Aun no se han analizado completamente los grupos, pero los datos de imagenes/videos aun se estan poblacion. Por favor, espera. +ImageGalleryController.noGroupsDlg.msg4=No hay imagenes/videos disponibles en las fuentes de datos agregadas; pero la escucha de la ingestion esta desactivada. No habra grupos disponibles hasta que se termine la ingestion y se reactive la escucha. +ImageGalleryController.noGroupsDlg.msg5=No hay imagenes/videos en las fuentes de datos agregadas. +ImageGalleryController.noGroupsDlg.msg6=No hay grupos completamente analizados para mostrar: la configuracion actual de agrupacion no genero grupos o aun no se han analizado completamente los grupos pero la ingestion no esta en marcha. +ImageGalleryModule.moduleName=Galeria de Imagenes +ImageGalleryService.openCaseResources.progressMessage.finish=Bases de datos de la Galeria de Imagenes abiertas. +ImageGalleryService.openCaseResources.progressMessage.start=Abriendo bases de datos de la Galeria de Imagenes... +ImageGalleryService.serviceName=Servicio de Actualizacion de la Galeria de Imagenes +ImageGalleryTopComponent.chooseDataSourceDialog.all=Todas +ImageGalleryTopComponent.chooseDataSourceDialog.contentText=Fuente de datos: +ImageGalleryTopComponent.chooseDataSourceDialog.headerText=Elige una fuente de datos para ver. +ImageGalleryTopComponent.chooseDataSourceDialog.titleText=Galeria de Imagenes +OpenIDE-Module-Long-Description=\ + Nueva galeria de imagenes y videos diseniada para realizar investigaciones con imagenes de manera mas eficiente. \ + Este trabajo ha sido financiado por DHS S&T y es una version beta. \ + No esta disponible en el sitio sleuthkit.org y se ha distribuido a usuarios seleccionados. +OpenIDE-Module-Name=GaleriaDeImagenes +OpenIDE-Module-Short-Description=Galeria avanzada de imagenes y videos +ImageGalleryOptionsPanel.enabledForCaseBox.text=Habilitar actualizaciones de la Galeria de Imagenes para el caso actual. +ImageGalleryOptionsPanel.enabledByDefaultBox.text=Habilitar la Galeria de Imagenes para nuevos casos de forma predeterminada. +ImageGalleryOptionsPanel.enabledForCaseBox.toolTipText=Si la Galeria de Imagenes esta desactivada, solo se registrara la necesidad de una actualizacion. Si se habilita despues de la ingestion, se realizara una actualizacion masiva basada en los resultados de la ingestion. Si la Galeria de Imagenes esta desactivada, se te pedira habilitarla al intentar abrir su ventana. +ImageGalleryOptionsPanel.descriptionLabel.text=Para minimizar los tiempos de inicio, la Galeria de Imagenes actualizara constantemente su base de datos interna.
    Esto puede hacer que la ingestion sea mas lenta si no necesitas las caracteristicas de la Galeria de Imagenes.
    Utiliza esta configuracion para deshabilitar la Galeria de Imagenes si no la necesitas. +ImageGalleryOptionsPanel.furtherDescriptionArea.text=Si la Galeria de Imagenes esta desactivada, solo se registrara la necesidad de una actualizacion. Si se habilita despues de la ingestion, se realizara una actualizacion masiva basada en los resultados de la ingestion. Si la Galeria de Imagenes esta desactivada, se te pedira habilitarla al intentar abrir su ventana. +ImageGalleryOptionsPanel.unavailableDuringInjestLabel.text=Esta configuracion no esta disponible durante la ingestion. +ImageGalleryOptionsPanel.groupCategorizationWarningBox.text=No mostrar una advertencia al sobrescribir categorias mediante una accion en un grupo completo. +CTL_OpenAction=Abrir Imagen/Video +OptionsCategory_Keywords_Options=categoria de galeria de imagenes y videos +OptionsCategory_Name_Options=Galeria de Imagenes/Videos diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/actions/Bundle_ar.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/actions/Bundle_ar.properties new file mode 100644 index 0000000000..88a9af0413 --- /dev/null +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/actions/Bundle_ar.properties @@ -0,0 +1,44 @@ +# {0} - fileID +AddDrawableTagAction.addTagsToFiles.alert=No se puede etiquetar el archivo {0}. +AddDrawableTagAction.displayName.plural=Etiquetar Archivos +AddDrawableTagAction.displayName.singular=Etiquetar Archivo +AddTagAction.menuItem.newTag=Nueva Etiqueta... +AddTagAction.menuItem.noTags=Sin etiquetas +AddTagAction.menuItem.quickTag=Etiqueta Rapida +AddTagAction.menuItem.tagAndComment=Etiqueta y Comentario... +Back_diplayName=Volver +CategorizeAction.displayName=Categorizar +# {0} - numero del ID del archivo +CategorizeDrawableFileTask.errorUnable.msg=No se puede categorizar {0}. +CategorizeDrawableFileTask.errorUnable.title=Error al Categorizar +CategorizeGroupAction.dontShowAgain=No mostrar este mensaje nuevamente +CategorizeGroupAction.fileCountHeader=Los siguientes archivos tendran sus categorias sobrescritas: +# {0} - numero de archivos con la categoria +# {1} - nombre de la categoria +CategorizeGroupAction.fileCountMessage={0} con {1} +CategorizeGroupAction.OverwriteButton.text=Sobrescribir +CTL_AddImage=Ver Imagenes/Videos +CTL_OpenAction=Imagenes/Videos +# {0} - ID del archivo +DeleteDrawableTagAction.deleteTag.alert=No se puede quitar la etiqueta del archivo {0}. +DeleteDrawableTagAction.displayName=Eliminar Etiqueta del Archivo +DeleteFollwUpTagAction.displayName=Eliminar Etiqueta de Seguimiento +Forward.displayName=Reenviar +MediaViewImagePanel.externalViewerButton.text=Abrir en Visor Externo +NextUnseenGroup.allGroupsSeen=Todos los Grupos Han Sido Vistos +NextUnseenGroup.markGroupSeen=Marcar Grupo como Visto +NextUnseenGroup.nextUnseenGroup=Siguiente Grupo no Visto +OpenAction.dialogTitle=Galeria de Imagenes +OpenAction.multiUserDialog.checkBox.text=No mostrar este mensaje nuevamente. +OpenAction.multiUserDialog.ContentText=La Galeria de Imagenes se actualiza de manera diferente para casos de multiples usuarios que para casos de un solo usuario. Especificamente:\n\nSi tu computadora esta analizando una fuente de datos, recibiras actualizaciones en tiempo real de la Galeria de Imagenes a medida que los archivos se analizan (hash, EXIF, etc.). Esto es igual al comportamiento en casos de un solo usuario.\n\nSi otra computadora en tu grupo de usuarios esta analizando una fuente de datos, recibiras actualizaciones sobre los archivos de esa fuente solo cuando inicies la Galeria de Imagenes, lo que reconstruira la base de datos local en funcion de los resultados de otros nodos. +OpenAction.multiUserDialog.Header=Galeria de Imagenes para Multiples Usuarios +OpenAction.noControllerDialog.header=No se puede abrir la Galeria de Imagenes +OpenAction.noControllerDialog.text=Se produjo un error de inicializacion.\nPor favor, consulta los registros para obtener mas detalles. +OpenAction.notAnalyzedDlg.msg=No hay archivos de imagen/video disponibles para mostrar aun.\nPor favor, ejecuta los modulos de ingestion de FileType y EXIF. +OpenAction.openTopComponent.error.message=Se produjo un error al intentar abrir la Galeria de Imagenes. +OpenAction.openTopComponent.error.title=Error al abrir la Galeria de Imagenes +OpenAction.stale.confDlg.msg=La base de datos de imagenes/videos puede estar desactualizada. ¿Deseas actualizarla y escuchar futuros resultados de ingestion?\nElegir 'si' actualizara la base de datos y permitira la escucha de futuras ingestiones.\n\nEl estado de la actualizacion de la base de datos aparecera en la esquina inferior derecha de la ventana de la aplicacion. +OpenAction.stale.confDlg.title=Galeria de Imagenes +OpenExternalViewerAction.displayName=Visor Externo +RedoAction.name=Rehacer +UndoAction.displayName=Deshacer diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/Bundle_ar.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/Bundle_ar.properties new file mode 100644 index 0000000000..6b842daa10 --- /dev/null +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/Bundle_ar.properties @@ -0,0 +1,16 @@ +DrawableAttribute.analyzed=Analizado +DrawableAttribute.cameraMake=Marca de la camara +DrawableAttribute.cameraModel=Modelo de la camara +DrawableAttribute.category=Categoria +DrawableAttribute.createdTime=Fecha de creacion +DrawableAttribute.hashSet=Conjunto de hash +DrawableAttribute.height=Altura +DrawableAttribute.intObjID=ID Interno del objeto +DrawableAttribute.md5hash=Hash MD5 +DrawableAttribute.mimeType=Tipo MIME +DrawableAttribute.modifiedTime=Fecha de modificacion +DrawableAttribute.name=Nombre +DrawableAttribute.path=Ruta +DrawableAttribute.tags=Etiquetas +DrawableAttribute.width=Ancho +VideoFile.getMedia.progress=escribiendo archivo temporal en el disco \ No newline at end of file diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/grouping/Bundle_ar.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/grouping/Bundle_ar.properties new file mode 100644 index 0000000000..702c7919bf --- /dev/null +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/grouping/Bundle_ar.properties @@ -0,0 +1,6 @@ +GroupSortBy.groupName=Nombre del Grupo +GroupSortBy.groupSize=Tamanio del Grupo +GroupSortBy.none=Ninguno +GroupSortBy.priority=Prioridad +# {0} - Nombre del atributo de agrupación +ReGroupTask.displayTitle=Reagrupando por {0}: diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/Bundle_ar.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/Bundle_ar.properties new file mode 100644 index 0000000000..87dd1ce7b4 --- /dev/null +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/Bundle_ar.properties @@ -0,0 +1,21 @@ +StatuBar.toolTip=Algunos datos pueden estar desactualizados. Habilita la Galeria de Imagenes en Herramientas | Opciones | Galeria de Imagenes/Videos despues de que se complete la ingestion para actualizar los datos de la Galeria de Imagenes. +StatusBar.bgTaskLabel.text=Reagrupando +StatusBar.fileUpdateTaskLabel.text=\ Tareas de Actualizacion de Archivos +SummaryTablePane.catColumn=Categoria +SummaryTablePane.countColumn=\# Archivos +Toolbar.ascRadio=Ascendente +Toolbar.categoryImageViewLabel=Categorizar Archivos del Grupo: +Toolbar.descRadio=Descendente +Toolbar.getDataSources.errMessage=No se pueden obtener las fuentes de datos para el caso actual. +Toolbar.groupByLabel=Agrupar Por: +Toolbar.nonPathGroupingWarning.content=¿Continuar con la reagrupacion? +Toolbar.nonPathGroupingWarning.header=Agrupar por atributos distintos de la ruta no admite el filtro de fuente de datos.\nSe mostraran archivos y grupos de todas las fuentes de datos. +Toolbar.nonPathGroupingWarning.title=Galeria de Imagenes +Toolbar.sortByLabel=Ordenar Por: +Toolbar.sortHelp=La direccion de ordenacion (ascendente/descendente) afecta a la cola de grupos no vistos que mantiene la Galeria de Imagenes, pero los cambios en esta cola no seran aparentes hasta que se presione el boton "Siguiente Grupo No Visto". +Toolbar.sortHelpTitle=Ordenacion de Grupos +Toolbar.tagImageViewLabel=Etiquetar Archivos del Grupo: +Toolbar.thumbnailSizeLabel=Tamanio de Miniatura (px): +# {0} - tipo de excepcion +VideoPlayer.errNotice={0}\nConsulta los registros para obtener mas detalles. + diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/Bundle_ar.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/Bundle_ar.properties new file mode 100644 index 0000000000..d3b60f2734 --- /dev/null +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/Bundle_ar.properties @@ -0,0 +1,24 @@ +DrawableTileBase.externalViewerAction.text=Abrir en Visor Externo +DrawableTileBase.menuItem.extractFiles=Extraer archivo(s) +DrawableTileBase.menuItem.showContentViewer=Mostrar Visor de Contenido +DrawableUIBase.errorLabel.OOMText=Memoria insuficiente +DrawableUIBase.errorLabel.text=No se pudo leer el archivo +GroupPane.bottomLabel.displayText=Historial de Visualizacion del Grupo: +GroupPane.catContainerLabel.displayText=Categorizar Archivo Seleccionado: +GroupPane.catHeadingLabel.displayText=Categoria: +GroupPane.gridViewContextMenuItem.extractFiles=Extraer archivo(s) +# {0} - Nombre predeterminado del grupo +# {1} - Cantidad de coincidencias en el conjunto de hash +# {2} - Tamaño del grupo +GroupPane.headerString={0} -- {1} coincidencias de conjunto de hash / {2} archivos +GroupPane.hederLabel.displayText=Etiquetar Archivos Seleccionados: +# {0} - Nombre del archivo +MediaLoadTask.messageText=Leyendo video: {0} +MetaDataPane.attributeColumn.headingName=Atributo +MetaDataPane.copyMenuItem.text=Copiar +MetaDataPane.tableView.placeholder=Selecciona un archivo para ver sus detalles aqui. +MetaDataPane.titledPane.displayName=Detalles +MetaDataPane.valueColumn.headingName=Valor +# {0} - Número de identificacion del archivo +# {1} - Cantidad de números de identificacion de archivo +SlideShowView.supplementalText={0} de {1} en el grupo \ No newline at end of file diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/Bundle_ar.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/Bundle_ar.properties new file mode 100644 index 0000000000..68e5419504 --- /dev/null +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/Bundle_ar.properties @@ -0,0 +1,11 @@ +GroupComparators.groupName=Nombre del Grupo +GroupComparators.groupSize=Tamanio del Grupo +GroupComparators.hitCount=Recuento de Aciertos +GroupComparators.hitDensity=Densidad de Aciertos +GroupComparators.uncategorizedCount=Recuento de No Categorizados +GroupTree.displayName.allGroups=Todos los Grupos +HashHitGroupList.displayName.onlyHashHits=Solo Aciertos de Hash +NavPanel.ascRadio.text=Ascendente +NavPanel.descRadio.text=Descendente +NavPanel.placeHolder.text=No hay grupos. +NavPanel.sortByBoxLabel.text=Ordenar por: diff --git a/KeywordSearch/solr/bin/autopsy-solr b/KeywordSearch/solr/bin/autopsy-solr index 3b99bbb6b8..dab19776fc 100755 --- a/KeywordSearch/solr/bin/autopsy-solr +++ b/KeywordSearch/solr/bin/autopsy-solr @@ -2240,6 +2240,7 @@ function start_solr() { exec "$JAVA" "${SOLR_START_OPTS[@]}" $SOLR_ADDL_ARGS -jar start.jar "${SOLR_JETTY_CONFIG[@]}" $SOLR_JETTY_ADDL_CONFIG else # run Solr in the background + echo "Starting server with \"$JAVA\" \"${SOLR_START_OPTS[@]}\" $SOLR_ADDL_ARGS -jar start.jar \"${SOLR_JETTY_CONFIG[@]}\" $SOLR_JETTY_ADDL_CONFIG in pwd: $(pwd)" nohup "$JAVA" "${SOLR_START_OPTS[@]}" $SOLR_ADDL_ARGS -Dsolr.log.muteconsole \ "-XX:OnOutOfMemoryError=$SOLR_TIP/bin/oom_solr.sh $SOLR_PORT $SOLR_LOGS_DIR" \ -jar start.jar "${SOLR_JETTY_CONFIG[@]}" $SOLR_JETTY_ADDL_CONFIG \ diff --git a/KeywordSearch/solr/bin/autopsy-solr.in.sh b/KeywordSearch/solr/bin/autopsy-solr.in.sh index a50411ab07..87ee5902ae 100755 --- a/KeywordSearch/solr/bin/autopsy-solr.in.sh +++ b/KeywordSearch/solr/bin/autopsy-solr.in.sh @@ -93,7 +93,7 @@ #SOLR_OPTS="$SOLR_OPTS -Dsolr.autoSoftCommit.maxTime=3000" #SOLR_OPTS="$SOLR_OPTS -Dsolr.autoCommit.maxTime=60000" #SOLR_OPTS="$SOLR_OPTS -Dsolr.clustering.enabled=true" -SOLR_OPTS=$SOLR_OPTS -Dbootstrap_confdir=../solr/configsets/AutopsyConfig/conf -Dcollection.configName=AutopsyConfig -Dsolr.default.confdir=../solr/configsets/AutopsyConfig/conf +SOLR_OPTS="$SOLR_OPTS -Dbootstrap_confdir=../solr/configsets/AutopsyConfig/conf -Dcollection.configName=AutopsyConfig -Dsolr.default.confdir=../solr/configsets/AutopsyConfig/conf " # Location where the bin/solr script will save PID files for running instances diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ar.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ar.properties new file mode 100644 index 0000000000..a942585680 --- /dev/null +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ar.properties @@ -0,0 +1,409 @@ +AccountsText.creditCardNumber=Numero de tarjeta de credito +AccountsText.creditCardNumbers=Numeros de tarjeta de credito +AccountsText.nextItem.exception.msg=No hay siguiente elemento. +AccountsText.nextPage.exception.msg=No hay siguiente pagina. +AccountsText.previousItem.exception.msg=No hay elemento anterior. +AccountsText.previousPage.exception.msg=No hay pagina anterior. +CannotRunFileTypeDetection=No se puede ejecutar la deteccion del tipo de archivo. +Collection.unableToIndexData.error=No se puede agregar datos al indice de texto. Se omitira el indexado de texto futuro para el caso actual. +DropdownListSearchPanel.selected=Se selecciona el filtro de fuente de datos de busqueda ad hoc. +DropdownSingleTermSearchPanel.selected=Se selecciona el filtro de fuente de datos de busqueda ad hoc. +DropdownSingleTermSearchPanel.warning.text=Los caracteres de limite ^ y $ no coinciden con los limites de palabras. Considere reemplazarlos por una lista explicita de caracteres de limite, como [ \\.,] +DropdownSingleTermSearchPanel.warning.title=Advertencia +ExtractAllTermsReport.description.text=Extrae todas las palabras unicas del caso actual. NOTA: Las palabras extraidas se convierten a minusculas. +ExtractAllTermsReport.error.noOpenCase=No hay un caso abierto actualmente. +ExtractAllTermsReport.export.error=Error durante la extraccion de palabras unicas +ExtractAllTermsReport.exportComplete=Extraccion de palabras unicas completada +ExtractAllTermsReport.getName.text=Extraer palabras unicas +# {0} - Numero de terminos extraidos +ExtractAllTermsReport.numberExtractedTerms=Se extrajeron {0} terminos... +ExtractAllTermsReport.search.ingestInProgressBody=La ingestion de busqueda de palabras clave esta en curso.
    No se han indexado todos los archivos y la extraccion de palabras unicas podria producir resultados incompletos.
    ¿Desea continuar con la extraccion de palabras unicas de todos modos? +# {0} - Frecuencia de confirmacion de busqueda de palabras clave +ExtractAllTermsReport.search.noFilesInIdxMsg=Aun no hay archivos en el indice. Intente nuevamente mas tarde. El indice se actualiza cada {0} minutos. +ExtractAllTermsReport.search.noFilesInIdxMsg2=Aun no hay archivos en el indice. Intente nuevamente mas tarde. +ExtractAllTermsReport.search.searchIngestInProgressTitle=Ingesta de busqueda de palabras clave en curso +ExtractAllTermsReport.startExport=Iniciando la extraccion de palabras unicas +ExtractedContentPanel.setMarkup.panelTxt=Cargando texto... Por favor espere +# {0} - Nombre del contenido +ExtractedContentPanel.SetMarkup.progress.loading=Cargando texto para {0} +GlobalEditListPanel.editKeyword.title=Editar palabra clave +GlobalEditListPanel.warning.text=Los caracteres de limite ^ y $ no coinciden con los limites de palabras. Considere reemplazarlos por una lista explicita de caracteres de limite, como [ \\.,] +GlobalEditListPanel.warning.title=Advertencia +IndexedText.errorMessage.errorGettingText=Error al recuperar el texto indexado. +IndexedText.warningMessage.knownFile=Este archivo es un archivo conocido (basado en el hash MD5) y no tiene texto indexado. +IndexedText.warningMessage.noTextAvailable=No hay texto indexado para este archivo. +KeywordSearchGlobalSearchSettingsPanel.customizeComponents.windowsLimitedOCR=Procesar solo imagenes de mas de 100 KB de tamanio o extraidas de un documento. (Beta) (Requiere Windows de 64 bits) +KeywordSearchGlobalSearchSettingsPanel.customizeComponents.windowsOCR=Habilitar el Reconocimiento optico de Caracteres (OCR) (Requiere Windows de 64 bits) +KeywordSearchGlobalSettingsPanel.Title=Configuracion global de busqueda de palabras clave +KeywordSearchIngestModule.init.badInitMsg=El servidor de busqueda de palabras clave no se inicializo correctamente, no se puede ejecutar la ingestion de busqueda de palabras clave. +# {0} - Motivo de la no conexion a Solr +KeywordSearchIngestModule.init.exception.errConnToSolr.msg=Error al conectar con el servidor SOLR: {0}. +# {0} - Motivo de la no iniciacion de Solr +KeywordSearchIngestModule.init.tryStopSolrMsg={0}
    Por favor, intente detener los procesos de Java Solr si existen y reinicie la aplicacion. +KeywordSearchIngestModule.metadataTitle=METADATOS +KeywordSearchIngestModule.noOpenCase.errMsg=No hay un caso abierto disponible. +KeywordSearchIngestModule.startUp.noOpenCore.msg=No se pudo abrir el indice o no existe. +# {0} - Numero de version del esquema +KeywordSearchIngestModule.startupException.indexSchemaNotSupported=Ya no se admite la adicion de texto para la version del esquema {0} del indice de texto. +# {0} - Numero de version de Solr +KeywordSearchIngestModule.startupException.indexSolrVersionNotSupported=Ya no se admite la adicion de texto para la version de Solr {0} del indice de texto. +KeywordSearchIngestModule.startupMessage.failedToGetIndexSchema=Error al obtener la version del esquema para el indice de texto. +KeywordSearchResultFactory.createNodeForKey.noResultsFound.text=No se encontraron resultados. +KeywordSearchResultFactory.query.exception.msg=No se pudo realizar la consulta +OpenIDE-Module-Display-Category=Modulo de Ingestion +OpenIDE-Module-Long-Description=Modulo de ingestion de busqueda de palabras clave.\n\nEl modulo indexa archivos encontrados en la imagen del disco en el momento de la ingestion.\nLuego, ejecuta periodicamente la busqueda en los archivos indexados utilizando una o mas listas de palabras clave (que contienen palabras puras y/o expresiones regulares) y muestra los resultados.\n\nEl modulo tambien contiene herramientas adicionales integradas en la GUI principal, como configuracion de lista de palabras clave, barra de busqueda de palabras clave en la esquina superior derecha, visor de texto extraido y visor de resultados de busqueda que resalta las palabras clave encontradas. +OpenIDE-Module-Name=Busqueda de Palabras Clave +OptionsCategory_Name_KeywordSearchOptions=Opciones de Busqueda de Palabras Clave +OptionsCategory_Keywords_KeywordSearchOptions=Busqueda de Palabras Clave +ListBundleName=Listas de Palabras Clave +ListBundleConfig=Configuracion de la Lista de Palabras Clave +ExtractedContentPanel.copyMenuItem.text=Copiar +ExtractedContentPanel.selectAllMenuItem.text=Seleccionar Todo +KeywordSearchEditListPanel.saveListButton.text=Copiar Lista +KeywordSearchEditListPanel.addWordField.text= +KeywordSearchEditListPanel.addWordButton.text=Nueva Palabra Clave +KeywordSearchEditListPanel.chRegex.text=Expresion Regular +KeywordSearchEditListPanel.deleteWordButton.text=Eliminar Palabras Clave +KeywordSearchEditListPanel.cutMenuItem.text=Cortar +KeywordSearchEditListPanel.selectAllMenuItem.text=Seleccionar Todo +KeywordSearchEditListPanel.pasteMenuItem.text=Pegar +KeywordSearchEditListPanel.copyMenuItem.text=Copiar +KeywordSearchEditListPanel.exportButton.text=Exportar Lista +KeywordSearchEditListPanel.deleteListButton.text=Eliminar Lista +KeywordSearchEditListPanel.emptyKeyword.text=Palabra clave vacia +KeywordSearchEditListPanel.errorAddingKeywords.text=Error al agregar palabra(s) clave +KeywordSearchListsManagementPanel.newListButton.text=Nueva Lista +KeywordSearchListsManagementPanel.importButton.text=Importar Lista +KeywordSearchListsViewerPanel.searchAddButton.text=Buscar +KeywordSearchListsViewerPanel.manageListsButton.text=Gestionar Listas +KeywordSearchListsViewerPanel.ingestIndexLabel.text=Archivos Indexados: +KeywordSearchEditListPanel.ingestMessagesCheckbox.text=Enviar mensajes de ingestion para cada coincidencia +KeywordSearchEditListPanel.ingestMessagesCheckbox.toolTipText=Enviar mensajes durante la ingestion cuando ocurran coincidencias en palabras clave de esta lista +KeywordSearchEditListPanel.keywordOptionsLabel.text=Opciones de Palabras Clave +KeywordSearchEditListPanel.listOptionsLabel.text=Opciones de Lista +KeywordSearchListsManagementPanel.keywordListsLabel.text=Listas de Palabras Clave: +KeywordSearchEditListPanel.keywordsLabel.text=Palabras Clave: +OpenIDE-Module-Short-Description=Modulo de ingestion de busqueda de palabras clave, visor de texto extraido y herramientas de busqueda de palabras clave +KeywordSearchListsViewerPanel.manageListsButton.toolTipText=Gestionar listas de palabras clave, su configuracion y las palabras clave asociadas. La configuracion es compartida entre todos los casos. +AbstractKeywordSearchPerformer.search.dialogErrorHeader=Error de Busqueda de Palabras Clave +AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=Declaracion de consulta no valida. Si esto es una expresion regular, solo se admiten patrones de expresion regular de Lucene. No se admiten clases de caracteres POSIX (como \\n o \\w). +AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=Ingesta de Busqueda de Palabras Clave en Curso +AbstractKeywordSearchPerformer.search.ingestInProgressBody=La Ingesta de Busqueda de Palabras Clave esta en curso.
    No todos los archivos se han indexado y esta busqueda podria arrojar resultados incompletos.
    ¿Desea continuar con esta busqueda de todos modos? +AbstractKeywordSearchPerformer.search.emptyKeywordErrorBody=La lista de palabras clave esta vacia, agregue al menos una palabra clave a la lista +AbstractKeywordSearchPerformer.search.noFilesInIdxMsg=Aun no hay archivos en el indice.
    Intente nuevamente mas tarde. El indice se actualiza cada {0} minutos. +AbstractKeywordSearchPerformer.search.noFilesIdxdMsg=No se indexaron archivos.
    Vuelva a realizar la ingestion de la imagen con el Modulo de Busqueda de Palabras Clave habilitado. +ExtractedContentViewer.toolTip=Muestra el texto extraido de los archivos y los resultados de busqueda de palabras clave. Requiere que la ingestion de busqueda de palabras clave se ejecute en un archivo para activar este visor. +ExtractedContentViewer.getTitle=Texto Indexado +HighlightedMatchesSource.toString=Resultados de Busqueda +Installer.reportPortError=El puerto del servidor de indexacion {0} no esta disponible. Verifique si su software de seguridad no bloquea {1} y considere cambiar {2} en el archivo de propiedades {3} en la carpeta de usuario de la aplicacion. Luego intente reiniciar su sistema si otro proceso estaba causando el conflicto. +Installer.reportStopPortError=El puerto de detencion del servidor de indexacion {0} no esta disponible. Considere cambiar {1} en el archivo de propiedades {2} en la carpeta de usuario de la aplicacion. +Installer.errorInitKsmMsg=Error al inicializar el modulo de Busqueda de Palabras Clave +Installer.reportInitError=El puerto del servidor de indexacion {0} no esta disponible. Verifique si su software de seguridad no bloquea {1} y considere cambiar {2} en el archivo de propiedades {3} en la carpeta de usuario de la aplicacion. Luego intente reiniciar su sistema si otro proceso estaba causando el conflicto. +KeywordSearchConfigurationPanel.customizeComponents.listTabTitle=Listas +KeywordSearchConfigurationPanel.customizeComponents.stringExtTitle=Extraccion de Cadena +KeywordSearchConfigurationPanel.customizeComponents.genTabTitle=General +KeywordSearchConfigurationPanel.customizeComponents.listLabToolTip=Configuracion de lista +KeywordSearchConfigurationPanel.customizeComponents.stringExtToolTip=Configuracion de extraccion de cadena para la Ingestion de Busqueda de Palabras Clave +KeywordSearchConfigurationPanel.customizeComponents.genTabToolTip=Configuracion general +KeywordSearchConfigurationPanel1.customizeComponents.title=Eliminar una Lista de Palabras Clave +KeywordSearchConfigurationPanel1.customizeComponents.body=Esto eliminara la lista de palabras clave a nivel global (para todos los casos). ¿Desea continuar con la eliminacion? +KeywordSearchConfigurationPanel1.customizeComponents.keywordListEmptyErr=La Lista de Palabras Clave esta vacia y no se puede guardar +KeywordSearch.newKwListTitle=Nombre de la nueva lista de palabras clave: +KeywordSearch.openCore.notification.msg=No se pudo abrir el indice de busqueda de palabras clave +KeywordSearch.closeCore.notification.msg=Error al cerrar el indice de busqueda de palabras clave +KeywordSearchConfigurationPanel1.customizeComponents.noOwDefaultMsg=No se puede sobrescribir la lista predeterminada +KeywordSearchConfigurationPanel1.customizeComponents.kwListExistMsg=La Lista de Palabras Clave <{0}> ya existe, ¿desea reemplazarla? +KeywordSearchConfigurationPanel1.customizeComponents.kwListSavedMsg=Lista de Palabras Clave <{0}> guardada +KeywordSearchEditListPanel.customizeComponents.kwReToolTip=La palabra clave es una expresion regular +KeywordSearchEditListPanel.customizeComponents.addWordToolTip=Agregar nuevas palabras a la lista de busqueda de palabras clave +KeywordSearchEditListPanel.customizeComponents.enterNewWordToolTip=Ingrese una nueva palabra o expresion regular para buscar +KeywordSearchEditListPanel.customizeComponents.exportToFile=Exportar la lista de palabras clave actual a un archivo +KeywordSearchEditListPanel.customizeComponents.saveCurrentWIthNewNameToolTip=Guardar la lista de palabras clave actual con un nuevo nombre +KeywordSearchEditListPanel.customizeComponents.removeSelectedMsg=Eliminar palabra(s) clave seleccionada(s) de la lista +KeywordSearchEditListPanel.newKwTitle=Entrada de Nueva Palabra Clave +KeywordSearchEditListPanel.addWordButtonAction.kwAlreadyExistsMsg=La palabra clave ya existe en la lista. +KeywordSearchEditListPanel.invalidKwMsg=Patron de palabra clave no valido. Use palabras o un patron de expresion regular correcto. +KeywordSearchEditListPanel.removeKwMsg=Eliminando una palabra clave +KeywordSearchEditListPanel.deleteWordButtonActionPerformed.delConfirmMsg=Esto eliminara una palabra clave de la lista a nivel global (para todos los casos). ¿Desea continuar? +KeywordSearchEditListPanel.exportButtonActionPerformed.fileFilterLabel=Archivos XML de Listas de Palabras Clave +KeywordSearchEditListPanel.exportButtonActionPerformed.fileExistPrompt=El archivo {0} ya existe, ¿desea sobrescribirlo? +KeywordSearchEditListPanel.exportButtonActionPerformed.kwListExportedMsg=Listas de palabras clave exportadas +KeywordSearchEditListPanel.kwColName=Palabra Clave +KeywordSearchEditListPanel.addKeyword.message=Agregar una nueva palabra a la lista de busqueda de palabras clave: +KeywordSearchEditListPanel.addKeyword.title=Nueva Palabra Clave +KeywordSearchFilterNode.getFileActions.openExternViewActLbl=Abrir en Visor Externo Ctrl+E +KeywordSearchFilterNode.getFileActions.searchSameMd5=Buscar archivos con el mismo hash MD5 +KeywordSearchFilterNode.getFileActions.viewInNewWinActionLbl=Ver en Nueva Ventana +KeywordSearchIngestModule.init.noKwInLstMsg=No hay palabras clave en la lista de palabras clave. +KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=Se realizara solo el indexado y se omitira la busqueda de palabras clave (aun puede agregar listas de palabras clave utilizando "Listas de Palabras Clave - Agregar a la Ingestion"). +KeywordSearchIngestModule.doInBackGround.displayName=Busqueda Periodica de Palabras Clave +KeywordSearchIngestModule.doInBackGround.finalizeMsg=Finalizando +KeywordSearchIngestModule.doInBackGround.pendingMsg=(Pendiente) +RawText.FileText=Texto de archivo +RawText.ResultText=Texto de resultado +SearchRunner.doInBackGround.cancelMsg=(Cancelando...) +KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=Archivos con tipos conocidos +KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=Archivos con cadenas generales extraidas +KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=Solo se indexo metadatos +KeywordSearchIngestModule.postIndexSummary.idxErrLbl=Error (indexador) +KeywordSearchIngestModule.postIndexSummary.errTxtLbl=Error (extraccion de texto) +KeywordSearchIngestModule.postIndexSummary.errIoLbl=Error (E/S) +KeywordSearchIngestModule.postIndexSummary.kwIdxResultsLbl=Resultados de indexacion de palabras clave +KeywordSearchIngestModule.postIndexSummary.kwIdxErrsTitle=Errores de indexacion de palabras clave +KeywordSearchIngestModule.postIndexSummary.kwIdxErrMsgFiles=El servicio de indexacion de palabras clave tuvo errores al procesar {0} archivos. +KeywordSearchIngestModule.postIndexSummary.kwIdxWarnMsgTitle=Advertencia de indexacion de palabras clave +KeywordSearchIngestModule.postIndexSummary.idxErrReadFilesMsg=El servicio de indexacion de palabras clave tuvo errores al leer archivos y extraer texto. Podrian deberse a medios o archivos corruptos. +KeywordSearchListsViewerPanel.initIngest.addIngestTitle=Aniadir a ingestion +KeywordSearchListsViewerPanel.initIngest.addIngestMsg=Puedes seleccionar listas de palabras clave adicionales
    y encolarlas en la ingestion en curso.
    Las listas seleccionadas se buscaran la proxima vez que se reconstruya el indice de archivos. +KeywordSearchListsViewerPanel.initIngest.searchIngestTitle=Buscar +KeywordSearchListsViewerPanel.initIngest.addIdxSearchMsg=Buscar archivos indexados por palabras clave en las listas seleccionadas +KeywordSearchListsViewerPanel.initIngest.ongoingIngestMsg=Archivos indexados: {0} (la ingestion esta en curso) +KeywordSearchListsViewerPanel.initIngest.fileIndexCtMsg=Archivos indexados: {0} +KeywordSearch.selectedColLbl=Seleccionado +KeywordSearch.nameColLbl=Nombre +KeywordSearch.typeColLbl=Tipo de palabra clave +KeywordSearchQueryManager.execute.exeWinTitle=Busqueda por palabra clave {0} - {1} +KeywordSearch.newKeywordListMsg=Nueva lista de palabras clave +KeywordSearch.importListFileDialogMsg=Error al importar la lista de palabras clave desde el archivo {0} +KeywordSearch.yesOwMsg=Si, sobrescribir +KeywordSearch.noSkipMsg=No, omitir +KeywordSearch.cancelImportMsg=Cancelar importacion +KeywordSearch.overwriteListPrompt=La lista de palabras clave <{0}> ya existe localmente, ¿deseas sobrescribirla? +KeywordSearch.importOwConflict=Conflicto de importacion de lista +KeywordSearch.kwListFailImportMsg=Lista de palabras clave no importada +KeywordSearchListsManagementPanel.fileExtensionFilterLbl=Archivo de lista de palabras clave de Autopsy (xml) +KeywordSearchListsManagementPanel.fileExtensionFilterLb2=Archivo de lista de palabras clave de Encase (txt) +KeywordSearch.listImportFeatureTitle=Importar lista de palabras clave +KeywordSearchIngestModule.moduleName=Busqueda por palabra clave +KeywordSearchIngestModule.moduleDescription=Realiza la indexacion de archivos y busqueda periodica utilizando palabras clave y expresiones regulares en listas. +DropdownSearchPanel.keywordTextField.text= +KeywordSearchPanel.searchDropButton.text=Busqueda por palabra clave +DropdownSearchPanel.exactRadioButton.text=Coincidencia exacta +DropdownSearchPanel.substringRadioButton.text=Coincidencia de subcadena +DropdownSearchPanel.regexRadioButton.text=Expresion regular +DropdownSearchPanel.searchButton.text=Buscar +DropdownSearchPanel.cutMenuItem.text=Cortar +DropdownSearchPanel.selectAllMenuItem.text=Seleccionar todo +DropdownSearchPanel.pasteMenuItem.text=Pegar +DropdownSearchPanel.copyMenuItem.text=Copiar +AbstractFileStringContentStream.getSize.exception.msg=No se puede determinar la cantidad de caracteres en la cadena convertida hasta que se haya convertido la cadena completa. +AbstractFileStringContentStream.getSrcInfo.text=Archivo:{0} +ByteContentStream.getSrcInfo.text=Archivo:{0} +ExtractedContentViewer.nextPage.exception.msg=No hay siguiente pagina. +ExtractedContentViewer.previousPage.exception.msg=No hay pagina anterior. +ExtractedContentViewer.hasNextItem.exception.msg=No compatible, no es una fuente indexable. +ExtractedContentViewer.hasPreviousItem.exception.msg=No compatible, no es una fuente indexable. +ExtractedContentViewer.nextItem.exception.msg=No compatible, no es una fuente indexable. +ExtractedContentViewer.previousItem.exception.msg=No compatible, no es una fuente indexable. +ExtractedContentViewer.currentItem.exception.msg=No compatible, no es una fuente indexable. +Ingester.ingest.exception.unknownImgId.msg=Omitiendo la indexacion del archivo, ID de imagen desconocido, para el archivo: {0} +Ingester.ingest.exception.cantReadStream.msg=No se pudo leer el flujo de contenido: {0} +Ingester.ingest.exception.err.msg=Error al ingerir el documento: {0} +Ingester.ingestExtract.exception.solrTimeout.msg=Tiempo de espera de la solicitud de indice de Solr para el ID: {0}, nombre: {1} +Ingester.ingestExtract.exception.probPostToSolr.msg=Problema al enviar el contenido a Solr, ID: {0}, nombre: {1} +Ingester.UpReqestTask.run.exception.sorlNotAvail.msg=No hay nucleo de Solr disponible, no se puede indexar el contenido +Ingester.UpRequestTask.run.exception.probReadFile.msg=Problema al leer el archivo. +Ingester.UpRequestTask.run.exception.solrProb.msg=Problema con Solr +Ingester.UpRequestTask.run.exception.probPostToSolr.msg=Problema al enviar el contenido del archivo a Solr. Codigo de error de SolrException: {0} +Ingester.FscContentStream.getSrcInfo=Archivo:{0} +Ingester.FscContentStream.getReader=Todavia no es compatible. +Ingester.NullContentStream.getSrcInfo.text=Archivo:{0} +Ingester.NullContentStream.getReader=Todavia no es compatible. +KeywordSearch.moduleErr=Error de modulo +KeywordSearch.fireNumIdxFileChg.moduleErr.msg=Un modulo causo un error al escuchar actualizaciones de busqueda por palabra clave. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +KeywordSearchListsEncase.save.exception.msg=Todavia no es compatible. +KeywordSearchListsEncase.save2.exception.msg=Todavia no es compatible. +KeywordSearchListsEncase.encaseMetaType.exception.msg=Tipo EncaseMetaType no compatible: {0} +KeywordSearchListsManagementPanel.getColName.text=Nombre +KeywordSearchListsManagementPanel.setValueAt.exception.msg=No se admite la edicion de celdas +KeywordSearchOptionsPanelController.moduleErr=Error de modulo +KeywordSearchOptionsPanelController.moduleErr.msg1=Un modulo causo un error al escuchar actualizaciones de KeywordSearchOptionsPanelController. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +KeywordSearchOptionsPanelController.moduleErr.msg2=Un modulo causo un error al escuchar actualizaciones de KeywordSearchOptionsPanelController. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +KeywordSearchQueryManager.pathText.text=Busqueda por palabra clave +KeywordSearchResultFactory.progress.saving=Guardando resultados: {0} +KeywordSearchSettings.moduleName.text=Busqueda por palabra clave +KeywordSearchSettings.properties_options.text={0}_Opciones +KeywordSearchSettings.propertiesNSRL.text={0}_NSRL +KeywordSearchSettings.propertiesScripts.text={0}_Scripts +NoOpenCoreException.err.noOpenSorlCore.msg=No hay un nucleo de Solr abierto actualmente. +SearchRunner.query.exception.msg=Error al realizar la consulta: +# {0} - nombre de la coleccion +Server.deleteCore.exception.msg=Error al eliminar la coleccion de Solr {0} +Server.exceptionMessage.unableToBackupCollection=No se pudo hacer una copia de seguridad de la coleccion de Solr +Server.exceptionMessage.unableToCreateCollection=No se pudo crear la coleccion de Solr +Server.exceptionMessage.unableToRestoreCollection=No se pudo restaurar la coleccion de Solr +Server.getAllTerms.error=Error en la extraccion de todos los terminos unicos de Solr: +Server.start.exception.cantStartSolr.msg=No se pudo iniciar el proceso del servidor Solr +Server.start.exception.cantStartSolr.msg2=No se pudo iniciar el proceso del servidor Solr +Server.isRunning.exception.errCheckSolrRunning.msg=Error al verificar si el servidor Solr esta en ejecucion +Server.isRunning.exception.errCheckSolrRunning.msg2=Error al verificar si el servidor Solr esta en ejecucion +Server.openCore.exception.alreadyOpen.msg=Ya hay un nucleo de Solr abierto. Cierra explicitamente el nucleo primero. +Server.queryNumIdxFiles.exception.msg=Error al consultar el numero de archivos indexados, +Server.queryNumIdxChunks.exception.msg=Error al consultar el numero de fragmentos indexados, +Server.queryNumIdxDocs.exception.msg=Error al consultar el numero de documentos indexados, +Server.queryIsIdxd.exception.msg=Error al verificar si el contenido esta indexado, +Server.queryNumFileChunks.exception.msg=Error al obtener el numero de fragmentos de archivo, +Server.query.exception.msg=Error al ejecutar la consulta: {0} +Server.query2.exception.msg=Error al ejecutar la consulta: {0} +Server.queryTerms.exception.msg=Error al ejecutar la consulta de terminos: {0} +Server.connect.exception.msg=Error al conectar con el servidor Solr: {0} +Server.openCore.exception.msg=El servicio local de busqueda por palabra clave aun no esta en ejecucion +Server.openCore.exception.cantOpen.msg=No se pudo crear o abrir el indice +Server.openCore.exception.noIndexDir.msg=No se pudo crear el directorio de indice o falta +Server.request.exception.exception.msg=No se pudo realizar la solicitud de Solr +Server.commit.exception.msg=No se pudo confirmar el indice +Server.addDoc.exception.msg=No se pudo agregar el documento al indice a traves del controlador de actualizacion: {0} +Server.addDoc.exception.msg2=No se pudo agregar el documento al indice a traves del controlador de actualizacion: {0} +Server.addDocBatch.exception.msg=No se pudieron agregar documentos en lotes al indice +Server.close.exception.msg=No se puede cerrar el nucleo +Server.connect.exception.msg=No se puede conectar al servidor Solr {0} +Server.serverList.exception.msg=No se puede obtener la lista de servidores Solr del servidor {0} +Server.connectionInfoMissing.exception.msg=No esta configurada la informacion de conexion para la version {0} de Solr multiusuario +Server.solrServerNoPortException.msg=El servidor de indexacion no pudo enlazar al puerto {0}, el puerto no esta disponible, considera cambiar el puerto {1} predeterminado. +KeywordSearchJobSettingsPanel.keywordSearchEncodings.text=- +KeywordSearchJobSettingsPanel.languagesValLabel.toolTipText= +KeywordSearchJobSettingsPanel.languagesValLabel.text=- +KeywordSearchJobSettingsPanel.encodingsLabel.text=Codificaciones: +KeywordSearchJobSettingsPanel.titleLabel.text=Selecciona listas de palabras clave para habilitar durante la ingestion: +KeywordSearchJobSettingsPanel.languagesLabel.toolTipText=Scripts habilitados para la extraccion de cadenas de tipos de archivo desconocidos. Los cambios se pueden realizar en Configuracion avanzada. +KeywordSearchJobSettingsPanel.languagesLabel.text=Scripts habilitados para la extraccion de cadenas de tipos de archivo desconocidos: +KeywordSearchGlobalLanguageSettingsPanel.enableUTF8Checkbox.text=Habilitar extraccion de texto UTF-8 +KeywordSearchGlobalLanguageSettingsPanel.ingestSettingsLabel.text=Configuracion de ingestion para extraccion de cadenas de tipos de archivo desconocidos (los cambios seran efectivos en la proxima ingestion): +KeywordSearchGlobalLanguageSettingsPanel.enableUTF16Checkbox.text=Habilitar extraccion de texto UTF-16LE y UTF-16BE +KeywordSearchGlobalLanguageSettingsPanel.languagesLabel.text=Scripts habilitados (idiomas): +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton1.toolTipText=20 minutos (tiempo de ingestion mas rapido) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton1.text=20 minutos (retroalimentacion mas lenta, ingestion mas rapida) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton2.toolTipText=10 minutos (tiempo de ingestion general mas rapido que el predeterminado) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton2.text=10 minutos (retroalimentacion mas lenta, ingestion mas rapida) +KeywordSearchGlobalSearchSettingsPanel.frequencyLabel.text=Frecuencia de actualizacion de resultados durante la ingestion: +KeywordSearchGlobalSearchSettingsPanel.skipNSRLCheckBox.toolTipText=Se requiere que el servicio Hash Set se haya ejecutado previamente o se haya seleccionado para la proxima ingestion. +KeywordSearchGlobalSearchSettingsPanel.skipNSRLCheckBox.text=No aniadir archivos en NSRL (archivos conocidos) al indice de palabras clave durante la ingestion +KeywordSearchGlobalSearchSettingsPanel.informationLabel.text=Informacion +KeywordSearchGlobalSearchSettingsPanel.settingsLabel.text=Configuracion +KeywordSearchGlobalSearchSettingsPanel.filesIndexedValue.text=0 +KeywordSearchGlobalSearchSettingsPanel.filesIndexedLabel.text=Archivos en el indice de palabras clave: +KeywordSearchGlobalSearchSettingsPanel.showSnippetsCB.text=Mostrar vista previa de palabras clave en los resultados de busqueda por palabra clave (resultara en tiempos de busqueda mas largos) +KeywordSearchGlobalSearchSettingsPanel.chunksValLabel.text=0 +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton4.toolTipText=1 minuto (el tiempo de ingestion general sera el mas largo) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton4.text_1=1 minuto (retroalimentacion mas rapida, ingestion mas larga) +KeywordSearchGlobalSearchSettingsPanel.chunksLabel.text=Fragmentos en el indice de palabras clave: +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton3.toolTipText=5 minutos (el tiempo de ingestion general sera mas largo) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton3.text=5 minutos (predeterminado) +KeywordSearchIngestModule.regExpHitLbl=Resultado de expresion regular: +KeywordSearchIngestModule.kwHitLbl=Resultado de palabra clave: +KeywordSearchIngestModule.kwHitThLbl=Palabra clave +KeywordSearchIngestModule.previewThLbl=Vista previa +KeywordSearchIngestModule.fileThLbl=Archivo +KeywordSearchIngestModule.listThLbl=Lista +KeywordSearchIngestModule.regExThLbl=Expresion regular +AbstractFileTikaTextExtract.index.tikaParseTimeout.text=Excepcion: tiempo de espera de analisis de Tika para el contenido: {0}, {1} +AbstractFileTikaTextExtract.index.exception.tikaParse.msg=Excepcion: excepcion inesperada del proceso de analisis de Tika para el archivo: {0}, {1} +KeywordSearchEditListPanel.exportButtonAction.featureName.text=Exportar lista de palabras clave +KeywordSearchGlobalListSettingsPanel.component.featureName.text=Guardar lista de palabras clave +KeywordSearchListsAbstract.moduleErr=Error del modulo +KeywordSearchListsAbstract.addList.errMsg1.msg=Un modulo ha provocado un error al escuchar las actualizaciones de KeywordSearchListsAbstract. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +KeywordSearchListsAbstract.addList.errMsg2.msg=Un modulo ha provocado un error al escuchar las actualizaciones de KeywordSearchListsAbstract. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +SearchRunner.updateTimer.title.text=Temporizador de actualizacion de SearchRunner +KeywordSearchListsAbstract.saveList.errMsg1.msg=Un modulo ha provocado un error al escuchar las actualizaciones de KeywordSearchListsAbstract. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +KeywordSearchListsAbstract.saveList.errMsg2.msg=Un modulo ha provocado un error al escuchar las actualizaciones de KeywordSearchListsAbstract. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +KeywordSearchListsAbstract.writeLists.errMsg1.msg=Un modulo ha provocado un error al escuchar las actualizaciones de KeywordSearchListsAbstract. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +KeywordSearchListsAbstract.writeLists.errMsg2.msg=Un modulo ha provocado un error al escuchar las actualizaciones de KeywordSearchListsAbstract. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +KeywordSearchListsAbstract.deleteList.errMsg1.msg=Un modulo ha provocado un error al escuchar las actualizaciones de KeywordSearchListsAbstract. Consulta el registro para determinar que modulo es. Algunos datos podrian estar incompletos. +KeywordSearchListsManagementPanel.newKeywordListDescription=La lista de palabras clave <{0}> ya existe como una lista de solo lectura. ¿Deseas reemplazarla durante la duracion del programa (el cambio no sera persistente)? +KeywordSearchListsManagementPanel.newKeywordListDescription2=La lista de palabras clave <{0}> ya existe, ¿deseas reemplazarla? +KeywordSearchModuleFactory.getIngestJobSettingsPanel.exception.msg=Se esperaba que el argumento de configuracion fuera una instancia de KeywordSearchJobSettings +KeywordSearchModuleFactory.createFileIngestModule.exception.msg=Se esperaba que el argumento de configuracion fuera una instancia de KeywordSearchJobSettings +SearchRunner.Searcher.done.err.msg=Error al realizar la busqueda de palabras clave +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton5.toolTipText=El mas rapido en general, pero sin resultados hasta el final +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton5.text=Sin busquedas periodicas +Server.status.failed.msg=El servidor local de Solr no respondio a la solicitud de estado. Esto puede deberse a que el servidor no se pudo iniciar o esta tardando demasiado en inicializarse. +SolrConnectionCheck.HostnameOrPort=Nombre de host y/o numero de puerto no validos. +SolrConnectionCheck.Hostname=Nombre de host no valido. +SolrConnectionCheck.MissingHostname=Nombre de host faltante. +GlobalListsManagementPanel.newListButton.text=Nueva Lista +GlobalListsManagementPanel.importButton.text=Importar Lista +GlobalListsManagementPanel.keywordListsLabel.text=Listas de Palabras Clave: +NewKeywordPanel.regexButton.text=Expresion Regular +NewKeywordPanel.exactButton.text=Coincidencia Exacta +NewKeywordPanel.substringButton.text=Coincidencia Parcial +NewKeywordPanel.keywordTextField.text= +NewKeywordPanel.newKeywordLabel.text=Ingrese una nueva palabra clave: +AddKeywordsDialog.exactRadioButton.text=Coincidencia Exacta +AddKeywordsDialog.substringRadioButton.text=Coincidencia Parcial +AddKeywordsDialog.regexRadioButton.text=Expresion Regular +AddKeywordsDialog.keywordTypeLabel.text=Selecciona el tipo para las palabras clave: +AddKeywordsDialog.enterKeywordsLabel.text=Ingresa las palabras clave (una por linea) a continuacion: +AddKeywordsDialog.pasteButton.text=Pegar Desde Portapapeles +AddKeywordsDialog.addButton.text=Aceptar +AddKeywordsDialog.cancelButton.text=Cancelar +AddKeywordsDialog.addKeywordsTitle.text=Nuevas Palabras Clave +GlobalEditListPanel.newKeywordsButton.text=Nuevas Palabras Clave +GlobalEditListPanel.addKeywordResults.text=Aniadir Resultados de Palabras Clave +GlobalEditListPanel.keywordsAdded.text=Se agrego exitosamente {0} palabra clave. +GlobalEditListPanel.keywordsAddedPlural.text=Se agregaron exitosamente {0} palabras clave. +GlobalEditListPanel.keywordDupesSkipped.text=La palabra clave {0} ya estaba en la lista. +GlobalEditListPanel.keywordDupesSkippedPlural.text=Las palabras clave {0} ya estaban en la lista. +GlobalEditListPanel.keywordErrors.text=No se pudo analizar la palabra clave {0}. Por favor, revisa y vuelve a intentarlo. +GlobalEditListPanel.keywordErrorsPlural.text=No se pudieron analizar las palabras clave {0}. Por favor, revisa y vuelve a intentarlo. +GlobalListsManagementPanel.exportButton.text=Exportar Lista +GlobalListsManagementPanel.deleteListButton.text=Eliminar Lista +GlobalListsManagementPanel.copyListButton.text=Copiar Lista +GlobalListsManagementPanel.renameListButton.text=Editar Nombre de la Lista +GlobalEditListPanel.editWordButton.text=Editar Palabra Clave +SolrConnectionCheck.Port=Numero de puerto no valido. +SolrSearch.checkingForLatestIndex.msg=Buscando un indice de texto con la ultima version de Solr y del esquema +SolrSearch.complete.msg=indice de texto abierto con exito +SolrSearch.creatingNewIndex.msg=Creando un nuevo indice de texto +SolrSearch.findingIndexes.msg=Buscando directorios de indices de texto existentes +# {0} - futureVersion +# {1} - currentVersion +SolrSearch.futureIndexVersion.msg=El indice de texto del caso es para Solr {0}. Esta version de Autopsy es compatible con Solr {1}. +SolrSearch.indentifyingIndex.msg=Identificando el indice de texto a utilizar +SolrSearch.lookingForMetadata.msg=Buscando el archivo de metadatos del indice de texto +SolrSearch.openCore.msg=Abriendo el indice de texto. Para casos grandes, esto puede llevar varios minutos. +SolrSearch.readingIndexes.msg=Leyendo el archivo de metadatos del indice de texto +SolrSearch.unableToFindIndex.msg=No se pudo encontrar un indice que se pueda utilizar para este caso +# {0} - index folder path +SolrSearchService.exceptionMessage.failedToDeleteIndexFiles=Error al eliminar los archivos de indice de texto en {0} +SolrSearchService.exceptionMessage.noCurrentSolrCore=IndexMetadata no contenia un core de Solr actual, por lo que no se pudo eliminar el caso +# {0} - case directory +SolrSearchService.exceptionMessage.noIndexMetadata=No se pudo crear IndexMetaData a partir del directorio del caso: {0} +# {0} - collection name +SolrSearchService.exceptionMessage.unableToDeleteCollection=No se pudo eliminar la coleccion {0} +SolrSearchService.ServiceName=Servicio de Busqueda de Palabras Clave de Solr +SolrSearchService.DeleteDataSource.msg=Error al eliminar los datos de Solr para el ID de fuente de datos {0} +DropdownSingleTermSearchPanel.dataSourceCheckBox.text=Restringir la busqueda a las fuentes de datos seleccionadas: +DropdownListSearchPanel.dataSourceCheckBox.text=Restringir la busqueda a las fuentes de datos seleccionadas: +DropdownSingleTermSearchPanel.ingestIndexLabel.text=Archivos Indexados: +DropdownSingleTermSearchPanel.jSaveSearchResults.toolTipText=Guardar agregara los Resultados de Coincidencias de Palabras Clave al caso actual +DropdownSingleTermSearchPanel.jSaveSearchResults.text=Guardar resultados de busqueda +DropdownListSearchPanel.jSaveSearchResults.toolTipText=Guardar agregara los Resultados de Coincidencias de Palabras Clave al caso actual +DropdownListSearchPanel.jSaveSearchResults.text=Guardar resultados de busqueda +GlobalEditListPanel.ingestWarningLabel.text=La ingesta esta en curso, algunos ajustes no estaran disponibles hasta que termine. +KeywordSearchGlobalLanguageSettingsPanel.ingestWarningLabel.text=La ingesta esta en curso, algunos ajustes no estaran disponibles hasta que termine. +KeywordSearchGlobalSearchSettingsPanel.ingestWarningLabel.text=La ingesta esta en curso, algunos ajustes no estaran disponibles hasta que termine. +ExtractedContentPanel.AccessibleContext.accessibleName= +ExtractedContentPanel.jLabel1.text=Fuente de Texto: +ExtractedContentPanel.hitNextButton.text= +ExtractedContentPanel.hitPreviousButton.text= +ExtractedContentPanel.hitButtonsLabel.text=Coincidencias +ExtractedContentPanel.hitTotalLabel.text=- +ExtractedContentPanel.hitOfLabel.text=de +ExtractedContentPanel.hitCountLabel.text=- +ExtractedContentPanel.hitLabel.toolTipText= +ExtractedContentPanel.hitLabel.text=Coincidencias en la pagina: +ExtractedContentPanel.pageNextButton.text= +ExtractedContentPanel.pagePreviousButton.actionCommand=pagePreviousButton +ExtractedContentPanel.pagePreviousButton.text= +ExtractedContentPanel.pageButtonsLabel.text=Pagina +ExtractedContentPanel.pageTotalLabel.text=- +ExtractedContentPanel.pageOfLabel.text=de +ExtractedContentPanel.pageCurLabel.text=- +ExtractedContentPanel.pagesLabel.text=Pagina: +KeywordSearchJobSettingsPanel.ocrCheckBox.text=Habilitar Reconocimiento optico de Caracteres (OCR) +KeywordSearchJobSettingsPanel.limitedOcrCheckbox.text=Procesar solo archivos PDF, documentos de MS Office e imagenes que tengan mas de 100 KB de tamanio o que se hayan extraido de otro archivo (Beta) +KeywordSearchJobSettingsPanel.ocrOnlyCheckbox.text=Indexar solo el texto extraido mediante OCR +TextZoomPanel.zoomInButton.text= +TextZoomPanel.zoomOutButton.text= +TextZoomPanel.zoomResetButton.text=Restablecer +TextZoomPanel.zoomTextField.text= diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/infastructure/Bundle_ar.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/infastructure/Bundle_ar.properties new file mode 100644 index 0000000000..e6948a6c5b --- /dev/null +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/infastructure/Bundle_ar.properties @@ -0,0 +1 @@ +NoReportConfigurationPanel.infoLabel.text=Este informe no requiere configuracion. diff --git a/NEWS.txt b/NEWS.txt index 11c56f01c8..b8db91ca62 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,3 +1,32 @@ +---------------- VERSION 4.21.0 --------------- +Library Updates +- Update Java to version 17 +- Update aLeapp/iLeapp executables. +- Update JNA Version +- Update SQLite library version +- Updated 3rd party libraries that have known CVE's + +Ingest Module Updates: +- Recent Activity checks for malicious Chrome extensions from list provided by https://github.com/randomaccess3/detections +- Keyword Search module now can search without needing to index text into Solr. +- New Cyber Triage Malware Scanner module that uses Reversing Labs (requires license) + +Add Data Source Updates: +- Timestamps for logical files can be added. Issue https://github.com/sleuthkit/autopsy/issues/5852, https://github.com/sleuthkit/autopsy/issues/1788 +- List of logical files/folders can be edited before they are added. Issue https://github.com/sleuthkit/autopsy/issues/7347 + +GUI Updates: +- Add "has attachments" flag for emails. Issue https://github.com/sleuthkit/autopsy/issues/7358 +- Add Score to tree view + +Bugs: +- Fix path for lnk files +- Fix exporting of CSV files. Issue https://github.com/sleuthkit/autopsy/issues/6717 + +Misc: +- Added File Repository concept for data source files that are in a central location +- Added Spanish language support, contributor https://github.com/AburtoArielPM + ---------------- VERSION 4.20.0 -------------- Recent Activity Updates: - Added Favicons, Profiles and Extensions to Chromium Browsers diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ar.properties b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ar.properties new file mode 100644 index 0000000000..8488b9f6d3 --- /dev/null +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ar.properties @@ -0,0 +1,263 @@ +cannotBuildXmlParser=No se puede construir el analizador XML: +cannotLoadSEUQA=No se puede cargar el archivo de configuracion del Analizador de Consultas de URL del Motor de Busqueda, SEUQAMappings.xml: +cannotParseXml=No se puede analizar el archivo XML: +ChromeCacheExtract_adding_artifacts_msg=Cache de Chrome: Agregando %d artefactos para analisis. +ChromeCacheExtract_adding_extracted_files_msg=Cache de Chrome: Agregando %d archivos extraidos para analisis. +ChromeCacheExtract_loading_files_msg=Cache de Chrome: Cargando archivos desde %s. +# {0} - nombre del modulo +# {1} - numero de fila +# {2} - longitud de la tabla +# {3} - ruta de la cache +ChromeCacheExtractor.progressMsg={0}: Extrayendo entrada de cache {1} de {2} entradas desde {3}. +DataSourceUsage_AndroidMedia=Tarjeta de medios de Android +DataSourceUsage_DJU_Drone_DAT=Tarjeta SD interna de DJI +DataSourceUsage_FlashDrive=Memoria USB (Flash Drive) +# {0} - nombre del sistema operativo +DataSourceUsageAnalyzer.customVolume.label=Unidad del Sistema Operativo ({0}) +DataSourceUsageAnalyzer.displayName=Analizador de Uso de Fuentes de Datos +DefaultPriorityDomainCategorizer_searchEngineCategory=Motor de busqueda +DomainCategoryRunner_moduleName_text=Analizador de Categoria de Dominio +DomainCategoryRunner_parentModuleName=Actividad Reciente +DomainCategoryRunner_Progress_Message_Domain_Types=Buscando Tipos de Dominio +ExtractEdge_getHistory_containerFileNotFound=Error al intentar analizar el historial de Edge +ExtractEdge_Module_Name=Analizador de Microsoft Edge +ExtractEdge_process_errMsg_errGettingWebCacheFiles=Error al intentar obtener el archivo WebCacheV01 de Edge +ExtractEdge_process_errMsg_spartanFail=Error al procesar el archivo spartan.edb de Microsoft Edge +ExtractEdge_process_errMsg_unableFindESEViewer=No se pudo encontrar ESEDatabaseViewer +ExtractEdge_process_errMsg_webcacheFail=Error al procesar el archivo WebCacheV01.dat de Microsoft Edge +ExtractFavicon_Display_Name=Favicon +# {0} - nombre del submodulo +ExtractIE_executePasco_errMsg_errorRunningPasco={0}: Error al analizar el historial web de Internet Explorer +ExtractOs.androidOs.label=Android +ExtractOs.androidVolume.label=Unidad del Sistema Operativo (Android) +ExtractOs.debianLinuxOs.label=Linux (Debian) +ExtractOs.debianLinuxVolume.label=Unidad del Sistema Operativo (Linux Debian) +ExtractOs.displayName=Analizador de Informacion del Sistema Operativo +ExtractOs.fedoraLinuxOs.label=Linux (Fedora) +ExtractOs.fedoraLinuxVolume.label=Unidad del Sistema Operativo (Linux Fedora) +ExtractOs.gentooLinuxOs.label=Linux (Gentoo) +ExtractOs.gentooLinuxVolume.label=Unidad del Sistema Operativo (Linux Gentoo) +ExtractOs.mandrakeLinuxOs.label=Linux (Mandrake) +ExtractOs.mandrakeLinuxVolume.label=Unidad del Sistema Operativo (Linux Mandrake) +ExtractOs.novellSUSEOs.label=Linux (Novell SUSE) +ExtractOs.novellSUSEVolume.label=Unidad del Sistema Operativo (Linux Novell SUSE) +ExtractOs.osx.label=Mac OS X +ExtractOs.osxVolume.label=Unidad del Sistema Operativo (OS X) +ExtractOs.redhatLinuxOs.label=Linux (Redhat) +ExtractOs.redhatLinuxVolume.label=Unidad del Sistema Operativo (Linux Redhat) +ExtractOs.slackwareLinuxOs.label=Linux (Slackware) +ExtractOs.slackwareLinuxVolume.label=Unidad del Sistema Operativo (Linux Slackware) +ExtractOs.solarisSparcOs.label=Linux (Solaris/Sparc) +ExtractOs.solarisSparcVolume.label=Unidad del Sistema Operativo (Linux Solaris/Sparc) +ExtractOs.sunJDSLinuxOs.label=Linux (Sun JDS) +ExtractOs.sunJDSLinuxVolume.label=Unidad del Sistema Operativo (Linux Sun JDS) +ExtractOs.ubuntuLinuxOs.label=Linux (Ubuntu) +ExtractOs.ubuntuLinuxVolume.label=Unidad del Sistema Operativo (Linux Ubuntu) +ExtractOs.unitedLinuxOs.label=Linux (United Linux) +ExtractOs.unitedLinuxVolume.label=Unidad del Sistema Operativo (Linux United Linux) +ExtractOs.windowsVolume.label=Unidad del Sistema Operativo (Windows) +ExtractOs.yellowDogLinuxOs.label=Linux (Yellow Dog) +ExtractOs.yellowDogLinuxVolume.label=Unidad del Sistema Operativo (Linux Yellow Dog) +ExtractOS_progressMessage=Comprobando el Sistema Operativo +# {0} - sub module name +ExtractPrefetch_errMsg_prefetchParsingFailed={0}: Error al analizar los archivos de prefetch +ExtractPrefetch_module_name=Analizador de archivos de prefetch de Windows +ExtractRecycleBin_module_name=Analizador de la Papelera de Reciclaje +ExtractRecycleBin_Recyle_Bin_Display_Name=Papelera de Reciclaje +ExtractSafari_Error_Getting_History=Se produjo un error al procesar los archivos de historial de Safari. +ExtractSafari_Error_Parsing_Bookmark=Se produjo un error al procesar los archivos de marcadores de Safari. +ExtractSafari_Error_Parsing_Cookies=Se produjo un error al procesar los archivos de cookies de Safari. +ExtractSafari_Module_Name=Analizador de Safari +ExtractSru_error_finding_export_srudb_program=Error al encontrar el programa export_srudb +ExtractSru_module_name=Analizador de uso de recursos del sistema +ExtractSru_process_error_executing_export_srudb_program=Error al ejecutar el programa export_srudb +ExtractSru_process_errormsg_find_software_hive=No se pudo encontrar el archivo SOFTWARE HIVE +ExtractSru_process_errormsg_find_srudb_dat=No se pudo encontrar el archivo srudb.dat +ExtractSru_process_errormsg_write_software_hive=No se pudo escribir el archivo SOFTWARE HIVE +ExtractSru_process_errormsg_write_srudb_dat=No se pudo escribir el archivo srudb.dat +ExtractWebAccountType.role.admin=Rol de Administrador +ExtractWebAccountType.role.moderator=Rol de Moderador +ExtractWebAccountType.role.user=Rol de Usuario +ExtractZone_displayName=\ Analizador de Identificadores de Zona +ExtractZone_Internet=Zona de Internet +ExtractZone_Local_Intranet=Zona de Intranet Local +ExtractZone_Local_Machine=Zona de Equipo Local +ExtractZone_process_errMsg=Se produjo un error al procesar los archivos ':Zone.Indentifier'. +ExtractZone_process_errMsg_find=Se produjo un fallo al buscar archivos :Zone.Indentifier. +ExtractZone_progress_Msg=Extrayendo archivos :Zone.Identifer +ExtractZone_Restricted=Zona de Sitios Restringidos +ExtractZone_Trusted=Zona de Sitios Confiados +Jumplist_adding_extracted_files_msg=Cache de Chrome: Agregando %d archivos extraidos para su analisis. +Jumplist_module_name=Analizador de Jumplists de Windows +OpenIDE-Module-Display-Category=Modulo de Ingesta +OpenIDE-Module-Long-Description=Modulo de ingestion de Actividad Reciente.\n\nEl modulo extrae informacion util sobre la actividad reciente del usuario en la imagen de disco que se esta ingiriendo, como:\n\n- Documentos abiertos recientemente,\n- Actividad web (sitios visitados, cookies almacenadas, sitios marcados, consultas en motores de busqueda, descargas de archivos),\n- Dispositivos recientemente conectados,\n- Programas instalados.\n\nActualmente, el modulo solo admite imagenes de disco de Windows.\nEl complemento tambien es completamente funcional cuando se implementa en la version de Autopsy para Windows. +OpenIDE-Module-Name=ActividadReciente +OpenIDE-Module-Short-Description=Modulo de ingestion del buscador de Actividad Reciente +Chrome.moduleName=Analizador de Chromium +Chrome.getLocalState.errMsg.errGettingFiles=Error al intentar obtener el archivo Local State. +Chrome.getLocalState.errMsg.couldntFindAnyFiles=No se encontraron archivos de Estado Local de Chrome asignados. +Chrome.getLocalState.errMsg.errAnalyzingFile={0}: Error al intentar analizar el archivo:{1} +Chrome.getLocalState.displayName=Perfiles de Chromium +Chrome.getExtensions.errMsg.errGettingFiles=Error al intentar obtener el archivo Secure Preferences. +Chrome.getExtensions.errMsg.couldntFindAnyFiles=No se encontraron archivos de Preferencias Seguras de Chrome asignados. +Chrome.getExtensions.errMsg.errAnalyzingFile={0}: Error al intentar analizar el archivo:{1} +Chrome.getExtensions.displayName=Extensiones de Chromium +Chrome.getHistory.errMsg.errGettingFiles=Error al intentar obtener archivos de historial de Chrome. +Chrome.getHistory.errMsg.couldntFindAnyFiles=No se encontraron archivos de historial de Chrome asignados. +Chrome.getHistory.errMsg.errAnalyzingFile={0}: Error al intentar analizar el archivo:{1} +Chrome.parentModuleName=Actividad Reciente +Chrome.getBookmark.errMsg.errGettingFiles=Error al intentar obtener archivos de marcadores de Chrome. +Chrome.getBookmark.errMsg.errAnalyzingFile={0}: Error al intentar analizar el archivo:{1} +Chrome.getBookmark.errMsg.errAnalyzingFile3={0}: Error al intentar analizar el archivo:{1} +Chrome.getBookmark.errMsg.errAnalyzingFile4={0}: Error al intentar analizar el archivo:{1} +Chrome.getCookie.errMsg.errGettingFiles=Error al intentar obtener archivos de cookies de Chrome. +Chrome.getCookie.errMsg.errAnalyzeFile={0}: Error al intentar analizar el archivo:{1} +Chrome.getDownload.errMsg.errGettingFiles=Error al intentar obtener archivos de descargas de Chrome. +Chrome.getDownload.errMsg.errAnalyzeFiles1={0}: Error al intentar analizar el archivo:{1} +Chrome.getFavicon.errMsg.errGettingFiles=Error al intentar obtener archivos de favicons de Chrome. +Chrome.getFavicon.errMsg.errAnalyzeFiles1={0}: Error al intentar analizar el archivo:{1} +Chrome.getFavicon.errMsg.errCreateArtifact=Error al crear el artefacto de favicon. +Chrome.getFavicon.displayName=Favicon +Chrome.getLogin.errMsg.errGettingFiles=Error al intentar obtener archivos de inicio de sesion de Chrome. +Chrome.getLogin.errMsg.errAnalyzingFiles={0}: Error al intentar analizar el archivo:{1} +Chrome.getAutofill.errMsg.errGettingFiles=Error al intentar obtener archivos de datos web de Chrome. +Chrome.getAutofill.errMsg.errAnalyzingFiles={0}: Error al intentar analizar el archivo:{1} +ExtractIE.moduleName.text=Analizador de Internet Explorer +ExtractIE.getBookmark.errMsg.errGettingBookmarks={0}: Error al obtener los marcadores de Internet Explorer. +ExtractIE.parentModuleName.noSpace=ActividadReciente +ExtractIE.parentModuleName=Actividad Reciente +ExtractIE.getURLFromIEBmkFile.errMsg={0}: Error al analizar el archivo de marcadores de Internet Explorer {1} +ExtractIE.getURLFromIEBmkFile.errMsg2={0}: Error al analizar el archivo de marcadores de Internet Explorer {1} +ExtractIE.getCookie.errMsg.errGettingFile={0}: Error al obtener los archivos de cookies de Internet Explorer. +ExtractIE.getCookie.errMsg.errReadingIECookie={0}: Error al leer la cookie de Internet Explorer {1} +ExtractIE.getHistory.errMsg.unableToGetHist={0}: No se pudo obtener el historial de IE: no se encontro el archivo "pasco" +ExtractIE.getHistory.errMsg.errGettingHistFiles={0}: Error al obtener los archivos de historial de Internet Explorer +ExtractIE.getHistory.errMsg.noHistFiles=No se encontraron archivos de historial de Internet Explorer. +ExtractIE.getHistory.errMsg.errWriteFile={0}: Error al intentar escribir el archivo: {1} +ExtractIE.getHistory.errMsg.errProcHist={0}: Error al procesar el historial de Internet Explorer. +ExtractIE.parsePascoOutput.errMsg.notFound={0}: No se encontro la salida de Pasco: {1} +ExtractIE.parsePascoOutput.errMsg.errParsing={0}: Error al analizar la entrada del historial de IE {1} +ExtractIE.parsePascoOutput.errMsg.errParsingEntry={0}: Error al analizar la entrada del historial de Internet Explorer. +ExtractRegistry.moduleName.text=Analizador del Registro de Windows +ExtractRegistry.findRegFiles.errMsg.errReadingFile=Error al obtener el archivo del registro: {0} +ExtractRegistry.analyzeRegFiles.errMsg.errWritingTemp={0}: Error al analizar el archivo del registro {1} +ExtractRegistry.analyzeRegFiles.failedParsingResults={0}: Error al analizar los resultados del archivo del registro {1} +ExtractRegistry.parentModuleName.noSpace=ActividadReciente +ExtractRegistry.programName=RegRipper +ExtractRegistry.analyzeRegFiles.errMsg.errReadingRegFile={0}: Error al leer el archivo del registro - {1} +ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile={0}: Error al analizar el archivo del registro {1} +Firefox.moduleName=Analizador de Firefox +Firefox.getHistory.errMsg.errFetchingFiles=Error al obtener los archivos de historial de Internet de Firefox. +Firefox.getHistory.errMsg.noFilesFound=No se encontraron archivos de historial de Firefox. +Firefox.getHistory.errMsg.errAnalyzeFile={0}: Error al intentar analizar el archivo: {1} +Firefox.getFormsAutofill.errMsg.errFetchingFiles=Error al obtener el archivo de historial de formularios de Firefox. +Firefox.getFormsAutofill.errMsg.noFilesFound=No se encontraron archivos de historial de formularios de Firefox. +Firefox.getFormsAutofill.errMsg.errAnalyzeFile={0}: Error al intentar analizar el archivo: {1} +Firefox.getAutofillProfiles.errMsg.errFetchingFiles=Error al obtener el archivo de perfiles de autofill de Firefox. +Firefox.getAutofillProfiles.errMsg.noFilesFound=No se encontraron archivos de perfiles de autofill de Firefox. +Firefox.getAutofillProfiles.errMsg.errAnalyzeFile={0}: Error al intentar analizar el archivo: {1} +Firefox.parentModuleName.noSpace=ActividadReciente +Firefox.parentModuleName=Actividad Reciente +Firefox.getBookmark.errMsg.errFetchFiles=Error al obtener los archivos de marcadores de Firefox. +Firefox.getBookmark.errMsg.errAnalyzeFile={0}: Error al intentar analizar el archivo: {1} +Firefox.getCookie.errMsg.errFetchFile=Error al obtener los archivos de cookies de Firefox. +Firefox.getCookie.errMsg.errAnalyzeFile={0}: Error al intentar analizar el archivo: {1} +Firefox.getDlPre24.errMsg.errFetchFiles=Error al obtener los archivos de 'descargas' de Firefox. +Firefox.getDlPre24.errMsg.errAnalyzeFiles={0}: Error al intentar analizar el archivo: {1} +Firefox.getDlPre24.errMsg.errParsingArtifacts={0}: Error al analizar los artefactos del historial web de Firefox {1} +Firefox.getDlV24.errMsg.errFetchFiles=Error al obtener los archivos de 'descargas' de Firefox. +Firefox.getDlV24.errMsg.errAnalyzeFile={0}: Error al intentar analizar el archivo: {1} +Firefox.getDlV24.errMsg.errParsingArtifacts={0}: Error al analizar los artefactos de descargas web de Firefox {1} +Progress_Message_Analyze_Registry=Analizando archivos del Registro +Progress_Message_Analyze_Usage=Analisis de fuentes de datos y uso +# {0} - browserName +Progress_Message_Chrome_AutoFill=Relleno automatico de Chrome {0} +# {0} - browserName +Progress_Message_Chrome_Bookmarks=Marcadores de Chrome {0} +Progress_Message_Chrome_Cache=Cache de Chrome +# {0} - browserName +Progress_Message_Chrome_Cookies=Cookies de Chrome {0} +# {0} - browserName +Progress_Message_Chrome_Downloads=Descargas de Chrome {0} +Progress_Message_Chrome_Extensions=Extensiones de Chrome {0} +Progress_Message_Chrome_Favicons=Favicons de descargas de Chrome {0} +Progress_Message_Chrome_FormHistory=Historial de formularios de Chrome +# {0} - browserName +Progress_Message_Chrome_History=Historial de Chrome {0} +# {0} - browserName +Progress_Message_Chrome_Logins=Inicios de sesion de Chrome {0} +Progress_Message_Chrome_Profiles=Perfiles de Chrome {0} +Progress_Message_Edge_Bookmarks=Marcadores de Microsoft Edge +Progress_Message_Edge_Cookies=Cookies de Microsoft Edge +Progress_Message_Edge_History=Historial de Microsoft Edge +Progress_Message_Extract_Resent_Docs=Documentos recientes +Progress_Message_Find_Search_Query=Buscar consultas +Progress_Message_Firefox_AutoFill=Relleno automatico de Firefox +Progress_Message_Firefox_Bookmarks=Marcadores de Firefox +Progress_Message_Firefox_Cookies=Cookies de Firefox +Progress_Message_Firefox_Downloads=Descargas de Firefox +Progress_Message_Firefox_FormHistory=Historial de formularios de Firefox +Progress_Message_Firefox_History=Historial de Firefox +Progress_Message_IE_AutoFill=Relleno automatico de IE +Progress_Message_IE_Bookmarks=Marcadores de IE +Progress_Message_IE_Cookies=Cookies de IE +Progress_Message_IE_Downloads=Descargas de IE +Progress_Message_IE_FormHistory=Historial de formularios de IE +Progress_Message_IE_History=Historial de IE +Progress_Message_IE_Logins=Inicios de sesion de IE +Progress_Message_Safari_Bookmarks=Marcadores de Safari +Progress_Message_Safari_Cookies=Cookies de Safari +Progress_Message_Safari_Downloads=Descargas de Safari +Progress_Message_Safari_History=Historial de Safari +RAImageIngestModule.process.started=Iniciado {0} +RAImageIngestModule.process.errModFailed={0} fallo - ver registro para mas detalles
    +RAImageIngestModule.process.errModErrs={0} tuvo errores - ver registro +RAImageIngestModule.process.errMsg.errsEncountered=

    Errores encontrados durante el analisis:

      +RAImageIngestModule.process.errMsgSub.oneErr=Se encontro 1 error +RAImageIngestModule.process.errMsgSub.nErrs=Se encontraron {0} errores +RAImageIngestModule.process.ingestMsg.finished=Finalizado {0} - {1} +RAImageIngestModule.process.errMsg.noErrs=

      No se encontraron errores.

      +RAImageIngestModule.process.errMsgSub.noErrs=No se reportaron errores +RAImageIngestModule.process.histMsg.title=

      Datos del navegador en {0}:

        +RAImageIngestModule.process.histMsg.found=\ Encontrado. +RAImageIngestModule.process.histMsg.notFnd=\ No encontrado. +RAImageIngestModule.process.ingestMsg.results={0} - Resultados del navegador +RAImageIngestModule.complete.errMsg.failed={0} no se completo - ver registro para mas detalles
        +RAImageIngestModule.getName=Actividad reciente +RAImageIngestModule.getDesc=Extrae la actividad reciente del usuario, como navegacion web, documentos utilizados recientemente y programas instalados. +RecentDocumentsByLnk.getRecDoc.errMsg.errGetLnkFiles={0}: Error al obtener archivos lnk. +RecentDocumentsByLnk.getRecDoc.errParsingFile={0}: Error al analizar el archivo reciente {1} +RecentDocumentsByLnk.parentModuleName.noSpace=ActividadReciente +RecentDocumentsByLnk.parentModuleName=Actividad Reciente +RecentDocumentsByLnk_displayName=Analizador de Documentos Recientes por Enlace +Recently_Used_Artifacts_Adobe=Abierto recientemente segun Adobe MRU +Recently_Used_Artifacts_Applets=Abierto recientemente segun la clave del registro de Applets +Recently_Used_Artifacts_ArcHistory=Abierto recientemente por 7Zip +Recently_Used_Artifacts_Mediaplayer=Abierto recientemente segun Media Player MRU +Recently_Used_Artifacts_Mmc=Abierto recientemente segun Windows Management Console MRU +Recently_Used_Artifacts_Office_Trustrecords=Almacenado en TrustRecords debido a que se concedio una excepcion de seguridad de Office +Recently_Used_Artifacts_Officedocs=Abierto recientemente segun Office MRU +Recently_Used_Artifacts_Winrar=Abierto recientemente segun WinRAR MRU +Registry_System_Bam=Ejecutado recientemente segun Background Activity Moderator (BAM) +RegRipperFullNotFound=No se encontro la version completa del ejecutable de RegRipper. +RegRipperNotFound=No se encontro el ejecutable de RegRipper de Autopsy. +Sam_Security_Answer_1_Attribute_Display_Name=Respuesta de seguridad 1 +Sam_Security_Answer_2_Attribute_Display_Name=Respuesta de seguridad 2 +Sam_Security_Answer_3_Attribute_Display_Name=Respuesta de seguridad 3 +Sam_Security_Question_1_Attribute_Display_Name=Pregunta de seguridad 1 +Sam_Security_Question_2_Attribute_Display_Name=Pregunta de seguridad 2 +Sam_Security_Question_3_Attribute_Display_Name=Pregunta de seguridad 3 +# {0} - nombre del archivo +SearchEngineURLQueryAnalyzer.init.exception.msg=No se puede encontrar {0}. +SearchEngineURLQueryAnalyzer.moduleName.text=Analizador de Consultas de Motores de Busqueda +SearchEngineURLQueryAnalyzer.engineName.none=NINGUNO +SearchEngineURLQueryAnalyzer.domainSubStr.none=NINGUNO +SearchEngineURLQueryAnalyzer.toString=Nombre: {0}\nSubcadena de dominio: {1}\nConteo: {2}\nTokens divididos: \n{3} +SearchEngineURLQueryAnalyzer.parentModuleName.noSpace=ActividadReciente +SearchEngineURLQueryAnalyzer.parentModuleName=Actividad Reciente +ExtractWebAccountType.moduleName.text=Analizador de Tipo de Cuenta Web +ExtractWebAccountType.parentModuleName=Actividad Reciente +Shellbag_Artifact_Display_Name=Bolsas de Shell +Shellbag_Key_Attribute_Display_Name=Clave +Shellbag_Last_Write_Attribute_Display_Name=ultima Escritura +UsbDeviceIdMapper.parseAndLookup.text=Producto: {0} diff --git a/appveyor.yml b/appveyor.yml index 58c97ed5c2..c43b0f7669 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -8,23 +8,24 @@ cache: image: Visual Studio 2015 platform: x64 + environment: global: TSK_HOME: "C:\\sleuthkit" - JDK_HOME: C:\Program Files\Java\jdk17 - JAVA_HOME: C:\Program Files\Java\jdk17 + JDK_HOME: "C:\\Program Files\\Java\\jdk13" + JAVA_HOME: "C:\\Program Files\\Java\\jdk13" PYTHON: "C:\\Python36-x64" install: - ps: choco install nuget.commandline - ps: choco install ant --ignore-dependencies - - git clone https://github.com/sleuthkit/sleuthkit - ps: $env:Path="$($env:JAVA_HOME)\bin;$($env:Path);C:\ProgramData\chocolatey\lib\ant" - set PATH=C:\Python36-x64\';%PATH% - cd C:\ - git clone https://github.com/sleuthkit/sleuthkit - cd %APPVEYOR_BUILD_FOLDER% - python setupSleuthkitBranch.py + services: - postgresql95 diff --git a/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties b/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties index 6d7443a4a6..4973262834 100644 --- a/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties +++ b/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties @@ -1,5 +1,5 @@ #Updated by build script -#Wed, 28 Sep 2022 13:57:05 -0400 +#Thu, 20 Jul 2023 19:55:04 -0400 LBL_splash_window_title=Starting Autopsy SPLASH_HEIGHT=314 SPLASH_WIDTH=538 @@ -8,4 +8,4 @@ SplashRunningTextBounds=0,289,538,18 SplashRunningTextColor=0x0 SplashRunningTextFontSize=19 -currentVersion=Autopsy 4.19.3 +currentVersion=Autopsy 4.20.0 diff --git a/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties b/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties index f28a6b96b3..a6687c35a0 100644 --- a/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties +++ b/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties @@ -1,4 +1,4 @@ #Updated by build script -#Wed, 28 Sep 2022 13:57:05 -0400 -CTL_MainWindow_Title=Autopsy 4.19.3 -CTL_MainWindow_Title_No_Project=Autopsy 4.19.3 +#Thu, 20 Jul 2023 19:55:04 -0400 +CTL_MainWindow_Title=Autopsy 4.20.0 +CTL_MainWindow_Title_No_Project=Autopsy 4.20.0 diff --git a/docs/doxygen-dev/Doxyfile b/docs/doxygen-dev/Doxyfile index 66497c563c..a7617b7af7 100755 --- a/docs/doxygen-dev/Doxyfile +++ b/docs/doxygen-dev/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "Autopsy Developer Documentation" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 4.20.0 +PROJECT_NUMBER = 4.21.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -1025,7 +1025,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = 4.20.0 +HTML_OUTPUT = 4.21.0 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/docs/doxygen-user/Doxyfile b/docs/doxygen-user/Doxyfile index e836298f10..3a09612a74 100644 --- a/docs/doxygen-user/Doxyfile +++ b/docs/doxygen-user/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "Autopsy User Documentation" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 4.20.0 +PROJECT_NUMBER = 4.21.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -1025,7 +1025,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = 4.20.0 +HTML_OUTPUT = 4.21.0 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/docs/doxygen-user/ct_malware_scanner.dox b/docs/doxygen-user/ct_malware_scanner.dox new file mode 100644 index 0000000000..fa1dd6fb6b --- /dev/null +++ b/docs/doxygen-user/ct_malware_scanner.dox @@ -0,0 +1,58 @@ +/*! \page ct_malware_scanner_page Cyber Triage Malware Scanner Module + +[TOC] + +What Does It Do +======== + +The Cyber Triage Malware Scanner module will use the malware scanning infrastructure from Cyber Triage to identify if any Windows executables are malware. It will query an online service using the file's hash value to see if the file was already analyzed and allows you to upload files for analysis if they are new. + +This module requires a commercial license from Cyber Triage. + +For more information on obtaining a license, refer to [CyberTriage.com](https://cybertriage.com/autopsy-malware-module). The remainder of this page is about the use of the module once it is licensed. + + +Configuration +======= + +Once you have a license, you must add it on the Options panel. Choose the 'Cyber Triage' tab and choose 'Add License'. + + +\image html Malware-scanner-global-options-panel-no-license.png + +After you enter the license number that you should have received from your email, you will then need to review and agree to the license terms. + + +The options panel should now display information about the lookup limits. You can always refer back to here about what your limits are and when they reset. + +\image html malware-scanner-global-options-panel.png + + + +Using the Module +====== + +Ingest Settings +------ + +For each data source, you select if you want files to be uploaded if they have not already been analyzed. By default, they are uploaded. You can choose to not upload them though. + +\image html malware-scanner-ingest-panel.png + + + +Out of Scans +------- + +If you go beyond your limits, you will get a dialog that not all files were analyzed. You can wait until your limits reset and then start ingest again with only the malware scanning module enabled. It will ignore the files that are already analyzed. + + +Seeing Results +------ + +Once ingest has completed, the files with malware will be listed in the Malware node in the tree. + + +\image html malware-artifact-tree.png + +*/ diff --git a/docs/doxygen-user/images/Malware-scanner-global-options-panel-no-license.png b/docs/doxygen-user/images/Malware-scanner-global-options-panel-no-license.png new file mode 100644 index 0000000000..09bb7d8344 Binary files /dev/null and b/docs/doxygen-user/images/Malware-scanner-global-options-panel-no-license.png differ diff --git a/docs/doxygen-user/images/malware-artifact-tree.png b/docs/doxygen-user/images/malware-artifact-tree.png new file mode 100644 index 0000000000..53b229751c Binary files /dev/null and b/docs/doxygen-user/images/malware-artifact-tree.png differ diff --git a/docs/doxygen-user/images/malware-scanner-global-options-panel.png b/docs/doxygen-user/images/malware-scanner-global-options-panel.png new file mode 100644 index 0000000000..fd0b131832 Binary files /dev/null and b/docs/doxygen-user/images/malware-scanner-global-options-panel.png differ diff --git a/docs/doxygen-user/images/malware-scanner-ingest-panel.png b/docs/doxygen-user/images/malware-scanner-ingest-panel.png new file mode 100644 index 0000000000..719768baaf Binary files /dev/null and b/docs/doxygen-user/images/malware-scanner-ingest-panel.png differ diff --git a/docs/doxygen-user/main.dox b/docs/doxygen-user/main.dox index a31367ff6c..193a5abcba 100644 --- a/docs/doxygen-user/main.dox +++ b/docs/doxygen-user/main.dox @@ -58,6 +58,7 @@ The following topics are available here: - \subpage ileapp_page - \subpage aleapp_page - \subpage yara_page + - \subpage ct_malware_scanner_page - Reviewing the Results - \subpage uilayout_page diff --git a/docs/doxygen-user_fr/Doxyfile b/docs/doxygen-user_fr/Doxyfile index 4538fd297c..06589836df 100644 --- a/docs/doxygen-user_fr/Doxyfile +++ b/docs/doxygen-user_fr/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "Documentation utilisateur Autopsy" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 4.20.0 +PROJECT_NUMBER = 4.21.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -1025,7 +1025,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = 4.20.0 +HTML_OUTPUT = 4.21.0 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 4859eab17f..b0fdaea78c 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "Autopsy" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 4.20.0 +PROJECT_NUMBER = 4.21.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears a the top of each page and should give viewer a @@ -1066,7 +1066,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = api-docs/4.20.0/ +HTML_OUTPUT = api-docs/4.21.0/ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/snap/README.md b/snap/README.md new file mode 100644 index 0000000000..d6182d296b --- /dev/null +++ b/snap/README.md @@ -0,0 +1,27 @@ +## Installing Snap + +An Autopsy [snap package](https://snapcraft.io/) file can be installed by running `sudo snap install --dangerous autopsy.snap`. The `--dangerous` needs to be specified because the snap package isn't signed (see [install modes](https://snapcraft.io/docs/install-modes#heading--dangerous) for more information). By default, snap doesn't allow certain interactions with the operating system. These [Super-privileged connections](https://snapcraft.io/docs/super-privileged-interfaces) may need to be connected. This can be done manually by running `snap connections autopsy` to determine any missing connections, and then running `snap connect autopsy:home` replacing `home` with the name of the plug. Another option is to run this script, which will connect all missing plugs: `snap connections autopsy | sed -nE 's/^[^ ]* *([^ ]*) *- *- *$/\1/p' | xargs -I{} sudo snap connect {}`. One other possible option may be to install the application with `--devmode` instead of `--dangerous`. The `--devmode` flag is more permissive and will allow all connections to the operating system. More information on interface management can be found at the [snapcraft website](https://snapcraft.io/docs/interface-management). + +## Running Autopsy + +After installing Autopsy, you should be able to run with `autopsy`. Snap also typically installs a `.desktop` file for your launcher. If you want to perform an ingest on a local disk, you will need to run with permissions for disks in the `/dev` folder. On Ubuntu, that command will be `sudo -g disk autopsy` as `disk` group permissions will give access to that folder. + +## Generating The Snap Package + +A [snap package](https://snapcraft.io/) of Autopsy can be generated using the [`snapcraft.yml`](./snapcraft.yaml) file. You will need [snapcraft](https://snapcraft.io/) on your system and [lxd](https://snapcraft.io/lxd) works well for virtualization while building the snap package. Since snapcraft needs virtualization to create the snap package, your computer's hardware will need to support virtualization and any relevant settings will need to be enabled. From testing as of November 2022, VirtualBox and WSL are not good build environments. Once the development environment has been set up, a snap package can be built with this command: `snapcraft --use-lxd --debug` run from this directory. If you want to build async, but still get logs, you can run something like this: `nohup snapcraft --use-lxd --debug > ./output.log 2>&1 < /dev/null &`. + +## Updating Versions for Snap + +The version of Autopsy in the [`snapcraft.yml`](./snapcraft.yaml) can be updated by calling [`version_update.py`](./version_update/version_update.py) with a command like `python version_update.py -s sleuthkit_release_tag -a autopsy_release_tag -v snapcraft_version_name`. You will likely need to install the python dependencies in the [requirements.txt](./version_update/requirements.txt) with a command like: `pip install -r requirements.txt`. + +The version of Autopsy can be updated manually by modifying fields relating to git repositories and commits in [`snapcraft.yml`](./snapcraft.yaml) under `parts.autopsy` and `parts.sleuthkit`. Specifically `source`, `source-branch`, and `source-tag`. More information can be found [here](https://snapcraft.io/docs/snapcraft-yaml-reference). + +## Troubleshooting + +### Solr won't run + +An error like "Local Solr Server did not respond to status request" or something similar, may indicate that not all snap connections may have been connected. By default, snap doesn't allow certain interactions with the operating system. These [Super-privileged connections](https://snapcraft.io/docs/super-privileged-interfaces) may need to be connected. This can be done manually by running `snap connections autopsy` to determine any missing connections, and then running `snap connect autopsy:home` replacing `home` with the name of the plug. Another option is to run this script, which will connect all missing plugs: `snap connections autopsy | sed -nE 's/^[^ ]* *([^ ]*) *- *- *$/\1/p' | xargs -I{} sudo snap connect {}`. One other possible option may be to install the application with `--devmode` instead of `--dangerous`. The `--devmode` flag is more permissive and will allow all connections to the operating system. More information on interface management can be found at the [snapcraft website](https://snapcraft.io/docs/interface-management). + +### There are no local disks for processing + +Autopsy looks at the block devices in the `/dev` directory for local disks to process. If autopsy can't read block devices in that directory, it won't show the local disk. In most instances, starting autopsy with a command like `sudo -g disk autopsy` should give autopsy the right permissions to view local disks. This assumes that the `disk` group has read rights to local disks (i.e. `/dev/sda1`). Appropriate permissions can be determined by running something like `ls -l /dev` looking for the permissions required for the local disks. Then autopsy should be started in such a way that the `$USER` and `$HOME` are preserved (i.e. running as root may be problematic), but the user account and, consequently, autopsy, has sufficient permissions to access local disk block devices. \ No newline at end of file diff --git a/snap/gui/autopsy.desktop b/snap/gui/autopsy.desktop new file mode 100644 index 0000000000..0af2c78126 --- /dev/null +++ b/snap/gui/autopsy.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Autopsy +Comment=A graphical interface to The Sleuth Kit and other digital forensics tools. +GenericName=DFIR Tool. +Exec=autopsy +Icon=${SNAP}/meta/gui/autopsy.png +Type=Application +Categories=Forensics;DFIR +Keywords=autopsy;sleuth;kit;dfir;forensics diff --git a/snap/gui/autopsy.png b/snap/gui/autopsy.png new file mode 100644 index 0000000000..3173fb97b5 Binary files /dev/null and b/snap/gui/autopsy.png differ diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000000..d32596b9ee --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,241 @@ +# OVERVIEW: +# Snap packages are an application and everything needed for that application bundled into a package: https://snapcraft.io/docs/snapcraft +# Snapd can be installed on the following systems: https://snapcraft.io/docs/installing-snapd +# Snap packages can be released to the store: https://snapcraft.io/docs/releasing-to-the-snap-store +# Classic confinement apps and Strict confinement apps using super-priveleged interfaces (https://snapcraft.io/docs/super-privileged-interfaces) will require special approval. +# +# DEVELOPMENT / DEBUG: +# snappy debug can be used to identify apparmor/confinement violations: https://snapcraft.io/docs/debug-snaps#heading--snappy-debug +# building snaps with lxd/multipass requires hardware assisted virtualization: https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-2A98801C-68E8-47AF-99ED-00C63E4857F6.html, https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-F920A3C7-3B42-4E78-8EA7-961E49AF479D.html +# build provider information can be found here: https://snapcraft.io/docs/build-providers, https://snapcraft.io/docs/build-options +# A command like the following will run snapcraft in the background to build a snap package and write output to log `nohup snapcraft --use-lxd --debug > ./output.log 2>&1 < /dev/null &``. This must be run from the directory above `snap` +# Information on debugging snaps can be found here (in particular `snap try` can mount a filesystem as a snap, `snap run --shell autopsy.autopsy` can show shell with env vars like snap ): https://snapcraft.io/docs/debug-snaps, https://snapcraft.io/docs/snap-try +# +# INSTALLATION: +# Some options for installation can be found here: https://snapcraft.io/docs/install-modes +# Snap uses assertions to digitally sign snaps (https://snapcraft.io/docs/assertions). Otherwise, snaps need to be installed with the `--dangerous` flag +# it would be best to install autopsy with `sudo snap install --dangerous autopsy` and then connect all super-priveleged interfaces or `sudo snap install --dangerous --devmode autopsy`` + +# yaml reference here: https://snapcraft.io/docs/snapcraft-yaml-reference +# sample yaml files here: https://github.com/videolan/vlc/blob/master/extras/package/snap/snapcraft.yaml, https://github.com/canonical/firefox-snap/blob/stable/snapcraft.yaml +name: autopsy +# more on base snaps here: https://snapcraft.io/docs/base-snaps +# core is based on corresponding ubuntu version. ubuntu version information can be found here: https://wiki.ubuntu.com/Releases +base: core22 +version: 4.20.0 +summary: A graphical interface to The Sleuth Kit and other digital forensics tools. # 79 char long summary +description: Autopsy is a graphical interface to The Sleuth Kit and other open source digital forensics tools. +source-code: https://github.com/sleuthkit/autopsy/ +website: https://www.autopsy.com/ +license: Apache-2.0 +grade: stable # must be 'stable' to release into candidate/stable channels +# Options include 'strict' and 'classic'. 'Strict' is greatly preferred to 'classic'. More information here: https://snapcraft.io/docs/snap-confinement +# classic confinement does not chroot so elf records need to be patched to point to relative paths: https://snapcraft.io/blog/the-new-classic-confinement-in-snaps-even-the-classics-need-a-change, https://snapcraft.io/docs/linters-classic#heading--issues-auto, https://docs.oracle.com/cd/E19683-01/816-1386/chapter3-33/index.html, https://nehckl0.medium.com/creating-relocatable-linux-executables-by-setting-rpath-with-origin-45de573a2e98 +confinement: strict +architectures: [amd64] +# information on lzo here: https://snapcraft.io/blog/why-lzo-was-chosen-as-the-new-compression-method +compression: lzo +icon: snap/gui/autopsy.png + +plugs: + system-files-autopsy: + interface: system-files + read: [/dev] + system-files-hugepages: + interface: system-files + read: [/sys/kernel/mm/hugepages] + # may provide ability for online/offline help + browser-sandbox: + interface: browser-support + allow-sandbox: true + +slots: + # taken from thunderbird snap: https://github.com/ubuntu/thunderbird/blob/stable/snapcraft.yaml + dbus-daemon: + interface: dbus + bus: session + name: org.sleuthkit.autopsy + +apps: + autopsy: + # more on env vars here: https://snapcraft.io/docs/environment-variables + environment: + jdkhome: $SNAP/usr/lib/jvm/java-17-openjdk-amd64 + HOME: "$SNAP_USER_COMMON" + SOLR_JAVA_HOME: $SNAP/usr/lib/jvm/java-17-openjdk-amd64 + # provide means for java gstreamer to find gstreamer libs with jna.library.path + # set user home to new home value to avoid issues writing cache files to home + # can also specify '-Djdk.gtk.verbose=true' for gtk verbose logging: https://stackoverflow.com/a/22457177 + jreflags: $jreflags '-Djdk.gtk.version=3' '-Duser.home=$SNAP_USER_COMMON' '-Djava.io.tmpdir=$SNAP_USER_COMMON/tmp' '-Djna.library.path=$SNAP_DESKTOP_RUNTIME/usr/lib/x86_64-linux-gnu:$SNAP/usr/local/lib' + # to load libtsk.so + LD_LIBRARY_PATH: $SNAP/usr/local/lib:$LD_LIBRARY_PATH + # make sure path is set up to ensure things like photorec are found + PATH: $SNAP/usr/bin:$SNAP/usr/local/bin:$PATH + # gstreamer scans for plugins (i.e. app integration plugins). this tells gstreamer where to look for the scanner and libraries + # more information here: https://forum.snapcraft.io/t/trouble-with-ros-and-gstreamer/5518/6 + GST_PLUGIN_SYSTEM_PATH: $SNAP_DESKTOP_RUNTIME/usr/lib/x86_64-linux-gnu/gstreamer-1.0:$SNAP/usr/lib/x86_64-linux-gnu/gstreamer-1.0:$GST_PLUGIN_SYSTEM_PATH + GST_PLUGIN_SCANNER: $SNAP_DESKTOP_RUNTIME/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner + SOLR_LOGS_DIR: $SNAP_USER_COMMON/.autopsy/dev/solr/logs + SOLR_PID_DIR: $SNAP_USER_COMMON/.autopsy/dev/solr/logs + # taken from thunderbird snap: https://github.com/ubuntu/thunderbird/blob/stable/snapcraft.yaml + DISABLE_WAYLAND: 1 + GTK_USE_PORTAL: 1 + command: autopsy/bin/autopsywrapper.sh + # More gnome info here: https://snapcraft.io/docs/gnome-extension + extensions: [gnome] + common-id: org.sleuthkit.autopsy + plugs: + # taken from https://snapcraft.io/docs/supported-interfaces + - audio-playback + - block-devices + - browser-sandbox + - desktop + - desktop-launch + - desktop-legacy + - dm-crypt + - fuse-support + - gsettings + - hardware-observe + - home + - hugepages-control + - kernel-crypto-api + - mount-observe + - network + - network-bind + - network-observe + - network-setup-observe + - network-status + - opengl + - optical-drive + - removable-media + - system-files-autopsy + - system-files-hugepages + - system-observe + slots: + - dbus-daemon + +parts: + sleuthkit: + # more information on plugins here: https://snapcraft.io/docs/supported-plugins + plugin: autotools + source: https://github.com/sleuthkit/sleuthkit.git + source-branch: develop + #source-tag: sleuthkit-4.12.0 + build-environment: [JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64] + # information on packages here: https://snapcraft.io/docs/package-repositories + build-packages: + - build-essential + - autoconf + - libtool + - automake + - zip + - openjdk-17-jdk + - openjdk-17-jre + - ant + - ant-contrib + - ant-optional + - libpq-dev + - testdisk + - libafflib-dev + - libewf-dev + - libvhdi-dev + - libvmdk-dev + stage-packages: + - libpq-dev + - testdisk + - libafflib-dev + - libewf-dev + - libvhdi-dev + - libvmdk-dev + autopsy: + after: [sleuthkit] + # information on packages here: https://snapcraft.io/docs/package-repositories + build-packages: + - zip + - unzip + - openjdk-17-jdk + - openjdk-17-jre + - ant + - doxygen + stage-packages: + # lib heif reqs + - libheif-dev + - libde265-dev + # pg reqs + - libpq-dev + - testdisk + # libgstreamer additional plugin reqs that aren't in gnome package extension: https://snapcraft.io/docs/gnome-extension, https://github.com/ubuntu/gnome-sdk/blob/gnome-42-2204/snapcraft.yaml + - gstreamer1.0-plugins-bad + - gstreamer1.0-plugins-ugly + - gstreamer1.0-libav + # java req + - openjdk-17-jre + # needed by solr to determine locally running ports + - lsof + plugin: nil + source: https://github.com/sleuthkit/autopsy.git + source-branch: develop + build-environment: + - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 + - TSK_JAVA_LIB_PATH: $SNAPCRAFT_STAGE/usr/local/share/java + # information on parts environment variables here: https://snapcraft.io/docs/parts-environment-variables + override-build: | + # ----- BUILD ZIP ----- + AUTOPSY_SRC_PATH=$(pwd) + NETBEANS_PLAT_VER=$(grep "netbeans-plat-version=" "$AUTOPSY_SRC_PATH/nbproject/platform.properties" | cut -d'=' -f2) + AUTOPSY_PLATFORM_PATH="$AUTOPSY_SRC_PATH/netbeans-plat/$NETBEANS_PLAT_VER" + AUTOPSY_HARNESS_PATH="$AUTOPSY_PLATFORM_PATH/harness" + export TSK_HOME="$HOME/parts/sleuthkit/build" + ant -Dnbplatform.active.dir="$AUTOPSY_PLATFORM_PATH" -Dnbplatform.default.harness.dir="$AUTOPSY_HARNESS_PATH" build build-zip + + # ----- SETUP EXTRACT DIRECTORY ----- + AUTOPSY_LOCATION="$SNAPCRAFT_PART_INSTALL/autopsy" + mkdir -p $AUTOPSY_LOCATION + AUTOPSY_ZIP=$(find ./dist -maxdepth 1 -name "autopsy-*.*.*.zip") + AUTOPSY_ZIP_TMP_LOC=./dist/autopsy_tmp_zip_loc + mkdir -p $AUTOPSY_ZIP_TMP_LOC + unzip $AUTOPSY_ZIP -d $AUTOPSY_ZIP_TMP_LOC + AUTOPSY_EXTRACTED_TMP_LOC=$(find $AUTOPSY_ZIP_TMP_LOC -maxdepth 1 -name "autopsy-*.*.*") + cp -r $AUTOPSY_EXTRACTED_TMP_LOC/* $AUTOPSY_LOCATION + + # ----- RUN UNIX SETUP SCRIPT ----- + UNIX_SETUP_SCRIPT="$AUTOPSY_LOCATION/unix_setup.sh" + chmod +x $UNIX_SETUP_SCRIPT + $UNIX_SETUP_SCRIPT + + # snaps run applications with different permissions. This ensures applications can run. + chmod 755 "$AUTOPSY_LOCATION/bin/autopsy" + + # wrapper to setup temp dir if not exists; also could be easily modified for debugging purposes with snap try: https://snapcraft.io/docs/snap-try + cat < $AUTOPSY_LOCATION/bin/autopsywrapper.sh + #!/bin/bash + mkdir -p \$SNAP_USER_COMMON/tmp + echo Starting Autopsy... + \$SNAP/autopsy/bin/autopsy "\$@" + EOF + + chmod 755 $AUTOPSY_LOCATION/bin/autopsywrapper.sh + + + # taken from https://github.com/ubuntu/gnome-recipes/blob/stable/snapcraft.yaml to clean out files present in core/extensions as well. + cleanup: + after: [autopsy] + plugin: nil + build-snaps: [core22, gtk-common-themes, gnome-42-2204] + override-prime: | + set -eux + for snap in "core22" "gtk-common-themes" "gnome-42-2204"; do + cd "/snap/$snap/current" && find . -type f,l -name *.so.* -exec rm -f "$CRAFT_PRIME/{}" \; + done + # remove cross-installed repeated libraries (in /usr/lib in the SDK, but in /usr/lib/TRIPLET + # here, and the opposite) + for snap in "core22" "gnome-42-2204"; do + cd "/snap/$snap/current/usr/lib" + for filename in [ *.so* ]; do + rm -f "$CRAFT_PRIME/usr/lib/$CRAFT_ARCH_TRIPLET/$filename" + done + cd "/snap/$snap/current/usr/lib/$CRAFT_ARCH_TRIPLET" + for filename in [ *.so* ]; do + rm -f "$CRAFT_PRIME/usr/lib/$filename" + done + done diff --git a/snap/version_update/.gitignore b/snap/version_update/.gitignore new file mode 100644 index 0000000000..f2d51c2b11 --- /dev/null +++ b/snap/version_update/.gitignore @@ -0,0 +1,2 @@ +/.idea +/venv \ No newline at end of file diff --git a/snap/version_update/requirements.txt b/snap/version_update/requirements.txt new file mode 100644 index 0000000000..72ed5c9e9b --- /dev/null +++ b/snap/version_update/requirements.txt @@ -0,0 +1,2 @@ +argparse==1.4.0 +ruamel.yaml==0.17.21 \ No newline at end of file diff --git a/snap/version_update/version_update.py b/snap/version_update/version_update.py new file mode 100644 index 0000000000..74a32f0b30 --- /dev/null +++ b/snap/version_update/version_update.py @@ -0,0 +1,75 @@ +import sys +import argparse +import ruamel.yaml +from typing import Union +from os.path import join, dirname, abspath, realpath + +SNAPCRAFT_YAML_PATH = join(dirname(dirname(abspath(realpath(__file__)))), 'snapcraft.yaml') +SLEUTHKIT_REPO = 'https://github.com/sleuthkit/sleuthkit.git' +AUTOPSY_REPO = 'https://github.com/sleuthkit/autopsy.git' + + +def update_versions(sleuthkit_version_tag: str, + autopsy_version_tag: str, + snapcraft_version: str, + snapcraft_yaml_path: Union[str, None], + sleuthkit_repo: Union[str, None], + autopsy_repo: Union[str, None]): + + snapcraft_yaml_path = snapcraft_yaml_path if snapcraft_yaml_path is not None and len( + snapcraft_yaml_path.strip()) > 0 else SNAPCRAFT_YAML_PATH + sleuthkit_repo = sleuthkit_repo if sleuthkit_repo is not None and len( + sleuthkit_repo.strip()) > 0 else SLEUTHKIT_REPO + autopsy_repo = autopsy_repo if autopsy_repo is not None and len( + autopsy_repo.strip()) > 0 else AUTOPSY_REPO + + yaml = ruamel.yaml.YAML() + with open(snapcraft_yaml_path) as snapcraft_file: + yaml_dict = yaml.load(snapcraft_file) + + yaml_dict['version'] = snapcraft_version + + yaml_dict['parts']['sleuthkit']['source'] = sleuthkit_repo + yaml_dict['parts']['sleuthkit']['source-tag'] = sleuthkit_version_tag + yaml_dict['parts']['sleuthkit'].pop('source-branch', None) + + yaml_dict['parts']['autopsy']['source'] = autopsy_repo + yaml_dict['parts']['autopsy']['source-tag'] = autopsy_version_tag + yaml_dict['parts']['autopsy'].pop('source-branch', None) + + with open(snapcraft_yaml_path, "w") as snapcraft_file: + yaml.dump(yaml_dict, snapcraft_file) + + +def main(): + parser = argparse.ArgumentParser( + description="Updates snapcraft.yml file with current versions of autopsy and sleuthkit", + formatter_class=argparse.ArgumentDefaultsHelpFormatter) + + parser.add_argument('-s', '--sleuthkit_tag', required=True, dest='sleuthkit_version_tag', type=str, + help='The git tag to use for sleuthkit.') + parser.add_argument('-a', '--autopsy_tag', required=True, dest='autopsy_version_tag', type=str, + help='The git tag to use for autopsy.') + parser.add_argument('-v', '--version', required=True, dest='snapcraft_version', type=str, + help='Version for snapcraft metadata.') + + parser.add_argument('-p', '--snapcraft_path', dest='snapcraft_yaml_path', type=str, default=SNAPCRAFT_YAML_PATH, + help='Path to snapcraft.yaml.') + parser.add_argument('--sleuthkit_repo', dest='sleuthkit_repo', type=str, default=SLEUTHKIT_REPO, + help='Location of sleuthkit repo.') + parser.add_argument('--autopsy_repo', dest='autopsy_repo', type=str, default=AUTOPSY_REPO, + help='Location of sleuthkit repo.') + + args = parser.parse_args() + update_versions( + sleuthkit_version_tag=args.sleuthkit_version_tag, + autopsy_version_tag=args.autopsy_version_tag, + snapcraft_version=args.snapcraft_version, + snapcraft_yaml_path=args.snapcraft_yaml_path, + sleuthkit_repo=args.sleuthkit_repo, + autopsy_repo=args.autopsy_repo + ) + + +if __name__ == '__main__': + main() diff --git a/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt b/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt index 5c329a2771..fea5f0430a 100644 --- a/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt +++ b/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt @@ -25,7 +25,7 @@ if (JNI_FOUND) message (STATUS "JNI_LIBRARIES=${JNI_LIBRARIES}") endif() -add_compile_options(/std:c++latest) +# add_compile_options(/std:c++latest) set (heif_convert_sources encoder.cc diff --git a/thirdparty/libheif/HeifConvertJNI/dist/ALL_BUILD.vcxproj b/thirdparty/libheif/HeifConvertJNI/dist/ALL_BUILD.vcxproj deleted file mode 100644 index 215bd646fb..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/ALL_BUILD.vcxproj +++ /dev/null @@ -1,184 +0,0 @@ - - - - x64 - - - false - - - - Debug - x64 - - - Release - x64 - - - MinSizeRel - x64 - - - RelWithDebInfo - x64 - - - - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD} - Win32Proj - 10.0.22000.0 - x64 - ALL_BUILD - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - Always - Building Custom Rule C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - Building Custom Rule C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - Building Custom Rule C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - Building Custom Rule C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - - - - - - - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} - ZERO_CHECK - false - Never - - - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0} - heifconvert - - - - - - \ No newline at end of file diff --git a/thirdparty/libheif/HeifConvertJNI/dist/ALL_BUILD.vcxproj.filters b/thirdparty/libheif/HeifConvertJNI/dist/ALL_BUILD.vcxproj.filters deleted file mode 100644 index 8c0df0ea4c..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/ALL_BUILD.vcxproj.filters +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeCache.txt b/thirdparty/libheif/HeifConvertJNI/dist/CMakeCache.txt deleted file mode 100644 index 4cd58c22a7..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeCache.txt +++ /dev/null @@ -1,477 +0,0 @@ -# This is the CMakeCache file. -# For build in directory: c:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist -# It was generated by CMake: C:/Program Files/CMake/bin/cmake.exe -# You can edit this file to change values found and used by cmake. -# If you do not want to change any of the values, simply exit the editor. -# If you do want to change a value, simply edit, save, and exit the editor. -# The syntax for the file is as follows: -# KEY:TYPE=VALUE -# KEY is the name of a variable in the cache. -# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. -# VALUE is the current value for the KEY. - -######################## -# EXTERNAL cache entries -######################## - -//Path to a program. -CMAKE_AR:FILEPATH=C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.31.31103/bin/Hostx64/x64/lib.exe - -//Semicolon separated list of supported configuration types, only -// supports Debug, Release, MinSizeRel, and RelWithDebInfo, anything -// else will be ignored. -CMAKE_CONFIGURATION_TYPES:STRING=Debug;Release;MinSizeRel;RelWithDebInfo - -//Flags used by the CXX compiler during all build types. -CMAKE_CXX_FLAGS:STRING=/DWIN32 /D_WINDOWS /GR /EHsc - -//Flags used by the CXX compiler during DEBUG builds. -CMAKE_CXX_FLAGS_DEBUG:STRING=/Zi /Ob0 /Od /RTC1 - -//Flags used by the CXX compiler during MINSIZEREL builds. -CMAKE_CXX_FLAGS_MINSIZEREL:STRING=/O1 /Ob1 /DNDEBUG - -//Flags used by the CXX compiler during RELEASE builds. -CMAKE_CXX_FLAGS_RELEASE:STRING=/O2 /Ob2 /DNDEBUG - -//Flags used by the CXX compiler during RELWITHDEBINFO builds. -CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=/Zi /O2 /Ob1 /DNDEBUG - -//Libraries linked by default with all C++ applications. -CMAKE_CXX_STANDARD_LIBRARIES:STRING=kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib - -//Flags used by the C compiler during all build types. -CMAKE_C_FLAGS:STRING=/DWIN32 /D_WINDOWS - -//Flags used by the C compiler during DEBUG builds. -CMAKE_C_FLAGS_DEBUG:STRING=/Zi /Ob0 /Od /RTC1 - -//Flags used by the C compiler during MINSIZEREL builds. -CMAKE_C_FLAGS_MINSIZEREL:STRING=/O1 /Ob1 /DNDEBUG - -//Flags used by the C compiler during RELEASE builds. -CMAKE_C_FLAGS_RELEASE:STRING=/O2 /Ob2 /DNDEBUG - -//Flags used by the C compiler during RELWITHDEBINFO builds. -CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=/Zi /O2 /Ob1 /DNDEBUG - -//Libraries linked by default with all C applications. -CMAKE_C_STANDARD_LIBRARIES:STRING=kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib - -//Flags used by the linker during all build types. -CMAKE_EXE_LINKER_FLAGS:STRING=/machine:x64 - -//Flags used by the linker during DEBUG builds. -CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=/debug /INCREMENTAL - -//Flags used by the linker during MINSIZEREL builds. -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=/INCREMENTAL:NO - -//Flags used by the linker during RELEASE builds. -CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=/INCREMENTAL:NO - -//Flags used by the linker during RELWITHDEBINFO builds. -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL - -//Install path prefix, prepended onto install directories. -CMAKE_INSTALL_PREFIX:PATH=C:/Program Files/heifconvert - -//Path to a program. -CMAKE_LINKER:FILEPATH=C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.31.31103/bin/Hostx64/x64/link.exe - -//Flags used by the linker during the creation of modules during -// all build types. -CMAKE_MODULE_LINKER_FLAGS:STRING=/machine:x64 - -//Flags used by the linker during the creation of modules during -// DEBUG builds. -CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=/debug /INCREMENTAL - -//Flags used by the linker during the creation of modules during -// MINSIZEREL builds. -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=/INCREMENTAL:NO - -//Flags used by the linker during the creation of modules during -// RELEASE builds. -CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=/INCREMENTAL:NO - -//Flags used by the linker during the creation of modules during -// RELWITHDEBINFO builds. -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL - -//Path to a program. -CMAKE_MT:FILEPATH=CMAKE_MT-NOTFOUND - -//Value Computed by CMake -CMAKE_PROJECT_DESCRIPTION:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_HOMEPAGE_URL:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_NAME:STATIC=heifconvert - -//RC compiler -CMAKE_RC_COMPILER:FILEPATH=rc - -//Flags for Windows Resource Compiler during all build types. -CMAKE_RC_FLAGS:STRING=-DWIN32 - -//Flags for Windows Resource Compiler during DEBUG builds. -CMAKE_RC_FLAGS_DEBUG:STRING=-D_DEBUG - -//Flags for Windows Resource Compiler during MINSIZEREL builds. -CMAKE_RC_FLAGS_MINSIZEREL:STRING= - -//Flags for Windows Resource Compiler during RELEASE builds. -CMAKE_RC_FLAGS_RELEASE:STRING= - -//Flags for Windows Resource Compiler during RELWITHDEBINFO builds. -CMAKE_RC_FLAGS_RELWITHDEBINFO:STRING= - -//Flags used by the linker during the creation of shared libraries -// during all build types. -CMAKE_SHARED_LINKER_FLAGS:STRING=/machine:x64 - -//Flags used by the linker during the creation of shared libraries -// during DEBUG builds. -CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=/debug /INCREMENTAL - -//Flags used by the linker during the creation of shared libraries -// during MINSIZEREL builds. -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=/INCREMENTAL:NO - -//Flags used by the linker during the creation of shared libraries -// during RELEASE builds. -CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=/INCREMENTAL:NO - -//Flags used by the linker during the creation of shared libraries -// during RELWITHDEBINFO builds. -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL - -//If set, runtime paths are not added when installing shared libraries, -// but are added when building. -CMAKE_SKIP_INSTALL_RPATH:BOOL=NO - -//If set, runtime paths are not added when using shared libraries. -CMAKE_SKIP_RPATH:BOOL=NO - -//Flags used by the linker during the creation of static libraries -// during all build types. -CMAKE_STATIC_LINKER_FLAGS:STRING=/machine:x64 - -//Flags used by the linker during the creation of static libraries -// during DEBUG builds. -CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of static libraries -// during MINSIZEREL builds. -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELEASE builds. -CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELWITHDEBINFO builds. -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//The CMake toolchain file -CMAKE_TOOLCHAIN_FILE:FILEPATH=C:/Users/gregd/vcpkg/scripts/buildsystems/vcpkg.cmake - -//If this value is on, makefiles will be generated without the -// .SILENT directive, and all commands will be echoed to the console -// during the make. This is useful for debugging only. With Visual -// Studio IDE projects all commands are done without /nologo. -CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE - -//Path to a file. -JAVA_AWT_INCLUDE_PATH:PATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/include - -//Path to a library. -JAVA_AWT_LIBRARY:FILEPATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/lib/jawt.lib - -//Path to a file. -JAVA_INCLUDE_PATH:PATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/include - -//Path to a file. -JAVA_INCLUDE_PATH2:PATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/include/win32 - -//Path to a library. -JAVA_JVM_LIBRARY:FILEPATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/lib/jvm.lib - -//Path to a file. -JPEG_INCLUDE_DIR:PATH=C:/Users/gregd/vcpkg/installed/x64-windows/include - -//Path to a library. -JPEG_LIBRARY_DEBUG:FILEPATH=C:/Users/gregd/vcpkg/installed/x64-windows/debug/lib/jpeg.lib - -//Path to a library. -JPEG_LIBRARY_RELEASE:FILEPATH=C:/Users/gregd/vcpkg/installed/x64-windows/lib/jpeg.lib - -//Path to a program. -Java_IDLJ_EXECUTABLE:FILEPATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/idlj.exe - -//Path to a program. -Java_JARSIGNER_EXECUTABLE:FILEPATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/jarsigner.exe - -//Path to a program. -Java_JAR_EXECUTABLE:FILEPATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/jar.exe - -//Path to a program. -Java_JAVAC_EXECUTABLE:FILEPATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/javac.exe - -//Path to a program. -Java_JAVADOC_EXECUTABLE:FILEPATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/javadoc.exe - -//Path to a program. -Java_JAVAH_EXECUTABLE:FILEPATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/javah.exe - -//Path to a program. -Java_JAVA_EXECUTABLE:FILEPATH=C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/java.exe - -//Automatically copy dependencies into the output directory for -// executables. -VCPKG_APPLOCAL_DEPS:BOOL=ON - -//The directory which contains the installed libraries for each -// triplet -VCPKG_INSTALLED_DIR:PATH=C:/Users/gregd/vcpkg/installed - -//The path to the vcpkg manifest directory. -VCPKG_MANIFEST_DIR:PATH= - -//Use manifest mode, as opposed to classic mode. -VCPKG_MANIFEST_MODE:BOOL=OFF - -//Appends the vcpkg paths to CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH -// and CMAKE_FIND_ROOT_PATH so that vcpkg libraries/packages are -// found after toolchain/system libraries/packages. -VCPKG_PREFER_SYSTEM_LIBS:BOOL=OFF - -//Enable the setup of CMAKE_PROGRAM_PATH to vcpkg paths -VCPKG_SETUP_CMAKE_PROGRAM_PATH:BOOL=ON - -//Vcpkg target triplet (ex. x86-windows) -VCPKG_TARGET_TRIPLET:STRING=x64-windows - -//Setup CMAKE_PROGRAM_PATH to use host tools -VCPKG_USE_HOST_TOOLS:BOOL=ON - -//Enables messages from the VCPKG toolchain for debugging purposes. -VCPKG_VERBOSE:BOOL=OFF - -//(experimental) Automatically copy dependencies into the install -// target directory for executables. Requires CMake 3.14. -X_VCPKG_APPLOCAL_DEPS_INSTALL:BOOL=OFF - -//(experimental) Add USES_TERMINAL to VCPKG_APPLOCAL_DEPS to force -// serialization. -X_VCPKG_APPLOCAL_DEPS_SERIALIZED:BOOL=OFF - -//Path to a program. -Z_VCPKG_BUILTIN_POWERSHELL_PATH:FILEPATH=C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe - -//Path to a program. -Z_VCPKG_PWSH_PATH:FILEPATH=Z_VCPKG_PWSH_PATH-NOTFOUND - -//The directory which contains the installed libraries for each -// triplet -_VCPKG_INSTALLED_DIR:PATH=C:/Users/gregd/vcpkg/installed - -//Value Computed by CMake -heifconvert_BINARY_DIR:STATIC=C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist - -//Value Computed by CMake -heifconvert_IS_TOP_LEVEL:STATIC=ON - -//Value Computed by CMake -heifconvert_SOURCE_DIR:STATIC=C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI - -//The directory containing a CMake configuration file for libheif. -libheif_DIR:PATH=C:/Users/gregd/vcpkg/installed/x64-windows/share/libheif - - -######################## -# INTERNAL cache entries -######################## - -//ADVANCED property for variable: CMAKE_AR -CMAKE_AR-ADVANCED:INTERNAL=1 -//This is the directory where this CMakeCache.txt was created -CMAKE_CACHEFILE_DIR:INTERNAL=c:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist -//Major version of cmake used to create the current loaded cache -CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 -//Minor version of cmake used to create the current loaded cache -CMAKE_CACHE_MINOR_VERSION:INTERNAL=23 -//Patch version of cmake used to create the current loaded cache -CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 -//Path to CMake executable. -CMAKE_COMMAND:INTERNAL=C:/Program Files/CMake/bin/cmake.exe -//Path to cpack program executable. -CMAKE_CPACK_COMMAND:INTERNAL=C:/Program Files/CMake/bin/cpack.exe -//Path to ctest program executable. -CMAKE_CTEST_COMMAND:INTERNAL=C:/Program Files/CMake/bin/ctest.exe -//ADVANCED property for variable: CMAKE_CXX_FLAGS -CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG -CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL -CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE -CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO -CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES -CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS -CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG -CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL -CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE -CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO -CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES -CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 -//Executable file format -CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS -CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG -CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE -CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//Name of external makefile project generator. -CMAKE_EXTRA_GENERATOR:INTERNAL= -//Name of generator. -CMAKE_GENERATOR:INTERNAL=Visual Studio 17 2022 -//Generator instance identifier. -CMAKE_GENERATOR_INSTANCE:INTERNAL=C:/Program Files/Microsoft Visual Studio/2022/Community -//Name of generator platform. -CMAKE_GENERATOR_PLATFORM:INTERNAL=x64 -//Name of generator toolset. -CMAKE_GENERATOR_TOOLSET:INTERNAL= -//Source directory with the top level CMakeLists.txt file for this -// project -CMAKE_HOME_DIRECTORY:INTERNAL=C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -//ADVANCED property for variable: CMAKE_LINKER -CMAKE_LINKER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS -CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG -CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE -CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MT -CMAKE_MT-ADVANCED:INTERNAL=1 -//number of local generators -CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 -//Platform information initialized -CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 -//noop for ranlib -CMAKE_RANLIB:INTERNAL=: -//ADVANCED property for variable: CMAKE_RC_COMPILER -CMAKE_RC_COMPILER-ADVANCED:INTERNAL=1 -CMAKE_RC_COMPILER_WORKS:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RC_FLAGS -CMAKE_RC_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RC_FLAGS_DEBUG -CMAKE_RC_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RC_FLAGS_MINSIZEREL -CMAKE_RC_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RC_FLAGS_RELEASE -CMAKE_RC_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RC_FLAGS_RELWITHDEBINFO -CMAKE_RC_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//Path to CMake installation. -CMAKE_ROOT:INTERNAL=C:/Program Files/CMake/share/cmake-3.23 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS -CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG -CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE -CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH -CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_RPATH -CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS -CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG -CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE -CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_TOOLCHAIN_FILE -CMAKE_TOOLCHAIN_FILE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE -CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 -//Details about finding JNI -FIND_PACKAGE_MESSAGE_DETAILS_JNI:INTERNAL=[C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/lib/jawt.lib][C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/lib/jvm.lib][C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/include][C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/include/win32][C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/include][v()] -//Details about finding JPEG -FIND_PACKAGE_MESSAGE_DETAILS_JPEG:INTERNAL=[optimized;C:/Users/gregd/vcpkg/installed/x64-windows/lib/jpeg.lib;debug;C:/Users/gregd/vcpkg/installed/x64-windows/debug/lib/jpeg.lib][C:/Users/gregd/vcpkg/installed/x64-windows/include][v62()] -//Details about finding Java -FIND_PACKAGE_MESSAGE_DETAILS_Java:INTERNAL=[C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/java.exe][C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/jar.exe][C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/javac.exe][C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/javah.exe][C:/Program Files/ojdkbuild/java-1.8.0-openjdk-1.8.0.222-1/bin/javadoc.exe][v1.8.0_222-1-ojdkbuild()] -//ADVANCED property for variable: JAVA_AWT_INCLUDE_PATH -JAVA_AWT_INCLUDE_PATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JAVA_AWT_LIBRARY -JAVA_AWT_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JAVA_INCLUDE_PATH -JAVA_INCLUDE_PATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JAVA_INCLUDE_PATH2 -JAVA_INCLUDE_PATH2-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JAVA_JVM_LIBRARY -JAVA_JVM_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JPEG_INCLUDE_DIR -JPEG_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JPEG_LIBRARY_DEBUG -JPEG_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JPEG_LIBRARY_RELEASE -JPEG_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_IDLJ_EXECUTABLE -Java_IDLJ_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JARSIGNER_EXECUTABLE -Java_JARSIGNER_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAR_EXECUTABLE -Java_JAR_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAVAC_EXECUTABLE -Java_JAVAC_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAVADOC_EXECUTABLE -Java_JAVADOC_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAVAH_EXECUTABLE -Java_JAVAH_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAVA_EXECUTABLE -Java_JAVA_EXECUTABLE-ADVANCED:INTERNAL=1 -//Install the dependencies listed in your manifest: -//\n If this is off, you will have to manually install your dependencies. -//\n See https://github.com/microsoft/vcpkg/tree/master/docs/specifications/manifests.md -// for more info. -//\n -VCPKG_MANIFEST_INSTALL:INTERNAL=OFF -//ADVANCED property for variable: VCPKG_VERBOSE -VCPKG_VERBOSE-ADVANCED:INTERNAL=1 -//Making sure VCPKG_MANIFEST_MODE doesn't change -Z_VCPKG_CHECK_MANIFEST_MODE:INTERNAL=OFF -//The path to the PowerShell implementation to use. -Z_VCPKG_POWERSHELL_PATH:INTERNAL=C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -//Vcpkg root directory -Z_VCPKG_ROOT_DIR:INTERNAL=C:/Users/gregd/vcpkg - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/06cc96876bbc4e5f0587617118ae5f60/INSTALL_force.rule b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/06cc96876bbc4e5f0587617118ae5f60/INSTALL_force.rule deleted file mode 100644 index 1caaab0513..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/06cc96876bbc4e5f0587617118ae5f60/INSTALL_force.rule +++ /dev/null @@ -1 +0,0 @@ -# generated from CMake diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/06cc96876bbc4e5f0587617118ae5f60/generate.stamp.rule b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/06cc96876bbc4e5f0587617118ae5f60/generate.stamp.rule deleted file mode 100644 index 1caaab0513..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/06cc96876bbc4e5f0587617118ae5f60/generate.stamp.rule +++ /dev/null @@ -1 +0,0 @@ -# generated from CMake diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeCCompiler.cmake b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeCCompiler.cmake deleted file mode 100644 index d9006a29ee..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeCCompiler.cmake +++ /dev/null @@ -1,72 +0,0 @@ -set(CMAKE_C_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.31.31103/bin/Hostx64/x64/cl.exe") -set(CMAKE_C_COMPILER_ARG1 "") -set(CMAKE_C_COMPILER_ID "MSVC") -set(CMAKE_C_COMPILER_VERSION "19.31.31104.0") -set(CMAKE_C_COMPILER_VERSION_INTERNAL "") -set(CMAKE_C_COMPILER_WRAPPER "") -set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "90") -set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "OFF") -set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17") -set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") -set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") -set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") -set(CMAKE_C17_COMPILE_FEATURES "c_std_17") -set(CMAKE_C23_COMPILE_FEATURES "") - -set(CMAKE_C_PLATFORM_ID "Windows") -set(CMAKE_C_SIMULATE_ID "") -set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") -set(CMAKE_C_SIMULATE_VERSION "") -set(CMAKE_C_COMPILER_ARCHITECTURE_ID x64) - -set(MSVC_C_ARCHITECTURE_ID x64) - -set(CMAKE_AR "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.31.31103/bin/Hostx64/x64/lib.exe") -set(CMAKE_C_COMPILER_AR "") -set(CMAKE_RANLIB ":") -set(CMAKE_C_COMPILER_RANLIB "") -set(CMAKE_LINKER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.31.31103/bin/Hostx64/x64/link.exe") -set(CMAKE_MT "CMAKE_MT-NOTFOUND") -set(CMAKE_COMPILER_IS_GNUCC ) -set(CMAKE_C_COMPILER_LOADED 1) -set(CMAKE_C_COMPILER_WORKS TRUE) -set(CMAKE_C_ABI_COMPILED TRUE) - -set(CMAKE_C_COMPILER_ENV_VAR "CC") - -set(CMAKE_C_COMPILER_ID_RUN 1) -set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) -set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) -set(CMAKE_C_LINKER_PREFERENCE 10) - -# Save compiler ABI information. -set(CMAKE_C_SIZEOF_DATA_PTR "8") -set(CMAKE_C_COMPILER_ABI "") -set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") -set(CMAKE_C_LIBRARY_ARCHITECTURE "") - -if(CMAKE_C_SIZEOF_DATA_PTR) - set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") -endif() - -if(CMAKE_C_COMPILER_ABI) - set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") -endif() - -if(CMAKE_C_LIBRARY_ARCHITECTURE) - set(CMAKE_LIBRARY_ARCHITECTURE "") -endif() - -set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") -if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) - set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") -endif() - - - - - -set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "") -set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") -set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "") -set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeCXXCompiler.cmake b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeCXXCompiler.cmake deleted file mode 100644 index 194ebab8c0..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeCXXCompiler.cmake +++ /dev/null @@ -1,83 +0,0 @@ -set(CMAKE_CXX_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.31.31103/bin/Hostx64/x64/cl.exe") -set(CMAKE_CXX_COMPILER_ARG1 "") -set(CMAKE_CXX_COMPILER_ID "MSVC") -set(CMAKE_CXX_COMPILER_VERSION "19.31.31104.0") -set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") -set(CMAKE_CXX_COMPILER_WRAPPER "") -set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") -set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "OFF") -set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") -set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") -set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") -set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") -set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") -set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") -set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") - -set(CMAKE_CXX_PLATFORM_ID "Windows") -set(CMAKE_CXX_SIMULATE_ID "") -set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") -set(CMAKE_CXX_SIMULATE_VERSION "") -set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID x64) - -set(MSVC_CXX_ARCHITECTURE_ID x64) - -set(CMAKE_AR "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.31.31103/bin/Hostx64/x64/lib.exe") -set(CMAKE_CXX_COMPILER_AR "") -set(CMAKE_RANLIB ":") -set(CMAKE_CXX_COMPILER_RANLIB "") -set(CMAKE_LINKER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.31.31103/bin/Hostx64/x64/link.exe") -set(CMAKE_MT "CMAKE_MT-NOTFOUND") -set(CMAKE_COMPILER_IS_GNUCXX ) -set(CMAKE_CXX_COMPILER_LOADED 1) -set(CMAKE_CXX_COMPILER_WORKS TRUE) -set(CMAKE_CXX_ABI_COMPILED TRUE) - -set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") - -set(CMAKE_CXX_COMPILER_ID_RUN 1) -set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm) -set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) - -foreach (lang C OBJC OBJCXX) - if (CMAKE_${lang}_COMPILER_ID_RUN) - foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) - list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) - endforeach() - endif() -endforeach() - -set(CMAKE_CXX_LINKER_PREFERENCE 30) -set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) - -# Save compiler ABI information. -set(CMAKE_CXX_SIZEOF_DATA_PTR "8") -set(CMAKE_CXX_COMPILER_ABI "") -set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") -set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") - -if(CMAKE_CXX_SIZEOF_DATA_PTR) - set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") -endif() - -if(CMAKE_CXX_COMPILER_ABI) - set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") -endif() - -if(CMAKE_CXX_LIBRARY_ARCHITECTURE) - set(CMAKE_LIBRARY_ARCHITECTURE "") -endif() - -set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") -if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) - set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") -endif() - - - - - -set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "") -set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "") -set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "") -set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeDetermineCompilerABI_C.bin b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeDetermineCompilerABI_C.bin deleted file mode 100644 index 5515859bcc..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeDetermineCompilerABI_C.bin and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeDetermineCompilerABI_CXX.bin b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeDetermineCompilerABI_CXX.bin deleted file mode 100644 index 7345c88fba..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeDetermineCompilerABI_CXX.bin and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeRCCompiler.cmake b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeRCCompiler.cmake deleted file mode 100644 index 8e22c94b60..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeRCCompiler.cmake +++ /dev/null @@ -1,6 +0,0 @@ -set(CMAKE_RC_COMPILER "rc") -set(CMAKE_RC_COMPILER_ARG1 "") -set(CMAKE_RC_COMPILER_LOADED 1) -set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC) -set(CMAKE_RC_OUTPUT_EXTENSION .res) -set(CMAKE_RC_COMPILER_ENV_VAR "RC") diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeSystem.cmake b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeSystem.cmake deleted file mode 100644 index f64846137a..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeSystem.cmake +++ /dev/null @@ -1,15 +0,0 @@ -set(CMAKE_HOST_SYSTEM "Windows-10.0.19044") -set(CMAKE_HOST_SYSTEM_NAME "Windows") -set(CMAKE_HOST_SYSTEM_VERSION "10.0.19044") -set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") - -include("C:/Users/gregd/vcpkg/scripts/buildsystems/vcpkg.cmake") - -set(CMAKE_SYSTEM "Windows-10.0.19044") -set(CMAKE_SYSTEM_NAME "Windows") -set(CMAKE_SYSTEM_VERSION "10.0.19044") -set(CMAKE_SYSTEM_PROCESSOR "AMD64") - -set(CMAKE_CROSSCOMPILING "FALSE") - -set(CMAKE_SYSTEM_LOADED 1) diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CMakeCCompilerId.c b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CMakeCCompilerId.c deleted file mode 100644 index 07cf6947cf..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CMakeCCompilerId.c +++ /dev/null @@ -1,828 +0,0 @@ -#ifdef __cplusplus -# error "A C++ compiler has been selected for C." -#endif - -#if defined(__18CXX) -# define ID_VOID_MAIN -#endif -#if defined(__CLASSIC_C__) -/* cv-qualifiers did not exist in K&R C */ -# define const -# define volatile -#endif - -#if !defined(__has_include) -/* If the compiler does not have __has_include, pretend the answer is - always no. */ -# define __has_include(x) 0 -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# if defined(__GNUC__) -# define SIMULATE_ID "GNU" -# endif - /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, - except that a few beta releases use the old format with V=2021. */ -# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) - /* The third version component from --version is an update index, - but no macro is provided for it. */ -# define COMPILER_VERSION_PATCH DEC(0) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) -# define COMPILER_ID "IntelLLVM" -#if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -#endif -#if defined(__GNUC__) -# define SIMULATE_ID "GNU" -#endif -/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and - * later. Look for 6 digit vs. 8 digit version number to decide encoding. - * VVVV is no smaller than the current year when a version is released. - */ -#if __INTEL_LLVM_COMPILER < 1000000L -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) -#else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) -#endif -#if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -#endif -#if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -#elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -#endif -#if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -#endif -#if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -#endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_C) -# define COMPILER_ID "SunPro" -# if __SUNPRO_C >= 0x5100 - /* __SUNPRO_C = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) -# endif - -#elif defined(__HP_cc) -# define COMPILER_ID "HP" - /* __HP_cc = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) - -#elif defined(__DECC) -# define COMPILER_ID "Compaq" - /* __DECC_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) - -#elif defined(__IBMC__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__open_xl__) && defined(__clang__) -# define COMPILER_ID "IBMClang" -# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) -# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) -# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) - - -#elif defined(__ibmxl__) && defined(__clang__) -# define COMPILER_ID "XLClang" -# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) -# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) -# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) - - -#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 -# define COMPILER_ID "XL" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__NVCOMPILER) -# define COMPILER_ID "NVHPC" -# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) -# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) -# if defined(__NVCOMPILER_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) -# endif - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__CLANG_FUJITSU) -# define COMPILER_ID "FujitsuClang" -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# define COMPILER_VERSION_INTERNAL_STR __clang_version__ - - -#elif defined(__FUJITSU) -# define COMPILER_ID "Fujitsu" -# if defined(__FCC_version__) -# define COMPILER_VERSION __FCC_version__ -# elif defined(__FCC_major__) -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# endif -# if defined(__fcc_version) -# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) -# elif defined(__FCC_VERSION) -# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) -# endif - - -#elif defined(__ghs__) -# define COMPILER_ID "GHS" -/* __GHS_VERSION_NUMBER = VVVVRP */ -# ifdef __GHS_VERSION_NUMBER -# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) -# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) -# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) -# endif - -#elif defined(__TINYC__) -# define COMPILER_ID "TinyCC" - -#elif defined(__BCC__) -# define COMPILER_ID "Bruce" - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__ARMCC_VERSION) && !defined(__clang__) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) -# define COMPILER_ID "ARMClang" - # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) -# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) -# define COMPILER_ID "LCC" -# define COMPILER_VERSION_MAJOR DEC(1) -# if defined(__LCC__) -# define COMPILER_VERSION_MINOR DEC(__LCC__- 100) -# endif -# if defined(__LCC_MINOR__) -# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) -# endif -# if defined(__GNUC__) && defined(__GNUC_MINOR__) -# define SIMULATE_ID "GNU" -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif -# endif - -#elif defined(__GNUC__) -# define COMPILER_ID "GNU" -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) -# define COMPILER_ID "ADSP" -#if defined(__VISUALDSPVERSION__) - /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ -# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) -# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" -# if defined(__VER__) && defined(__ICCARM__) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) -# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) -# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) -# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) -# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# endif - -#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) -# define COMPILER_ID "SDCC" -# if defined(__SDCC_VERSION_MAJOR) -# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) -# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) -# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) -# else - /* SDCC = VRP */ -# define COMPILER_VERSION_MAJOR DEC(SDCC/100) -# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) -# define COMPILER_VERSION_PATCH DEC(SDCC % 10) -# endif - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__MSYS__) -# define PLATFORM_ID "MSYS" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# elif defined(__VXWORKS__) -# define PLATFORM_ID "VxWorks" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#elif defined(__INTEGRITY) -# if defined(INT_178B) -# define PLATFORM_ID "Integrity178" - -# else /* regular Integrity */ -# define PLATFORM_ID "Integrity" -# endif - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_ARM64EC) -# define ARCHITECTURE_ID "ARM64EC" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM64) -# define ARCHITECTURE_ID "ARM64" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# if defined(__ICCARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__ICCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__ICCRH850__) -# define ARCHITECTURE_ID "RH850" - -# elif defined(__ICCRL78__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__ICCRISCV__) -# define ARCHITECTURE_ID "RISCV" - -# elif defined(__ICCAVR__) -# define ARCHITECTURE_ID "AVR" - -# elif defined(__ICC430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__ICCV850__) -# define ARCHITECTURE_ID "V850" - -# elif defined(__ICC8051__) -# define ARCHITECTURE_ID "8051" - -# elif defined(__ICCSTM8__) -# define ARCHITECTURE_ID "STM8" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__ghs__) -# if defined(__PPC64__) -# define ARCHITECTURE_ID "PPC64" - -# elif defined(__ppc__) -# define ARCHITECTURE_ID "PPC" - -# elif defined(__ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__x86_64__) -# define ARCHITECTURE_ID "x64" - -# elif defined(__i386__) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__TI_COMPILER_VERSION__) -# if defined(__TI_ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__MSP430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__TMS320C28XX__) -# define ARCHITECTURE_ID "TMS320C28x" - -# elif defined(__TMS320C6X__) || defined(_TMS320C6X) -# define ARCHITECTURE_ID "TMS320C6x" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number. */ -#ifdef COMPILER_VERSION -char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; - -/* Construct a string literal encoding the version number components. */ -#elif defined(COMPILER_VERSION_MAJOR) -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the internal version number. */ -#ifdef COMPILER_VERSION_INTERNAL -char const info_version_internal[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', - 'i','n','t','e','r','n','a','l','[', - COMPILER_VERSION_INTERNAL,']','\0'}; -#elif defined(COMPILER_VERSION_INTERNAL_STR) -char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - -#if !defined(__STDC__) && !defined(__clang__) -# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) -# define C_VERSION "90" -# else -# define C_VERSION -# endif -#elif __STDC_VERSION__ > 201710L -# define C_VERSION "23" -#elif __STDC_VERSION__ >= 201710L -# define C_VERSION "17" -#elif __STDC_VERSION__ >= 201000L -# define C_VERSION "11" -#elif __STDC_VERSION__ >= 199901L -# define C_VERSION "99" -#else -# define C_VERSION "90" -#endif -const char* info_language_standard_default = - "INFO" ":" "standard_default[" C_VERSION "]"; - -const char* info_language_extensions_default = "INFO" ":" "extensions_default[" -#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ - defined(__TI_COMPILER_VERSION__)) && \ - !defined(__STRICT_ANSI__) - "ON" -#else - "OFF" -#endif -"]"; - -/*--------------------------------------------------------------------------*/ - -#ifdef ID_VOID_MAIN -void main() {} -#else -# if defined(__CLASSIC_C__) -int main(argc, argv) int argc; char *argv[]; -# else -int main(int argc, char* argv[]) -# endif -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; - require += info_arch[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#ifdef COMPILER_VERSION_INTERNAL - require += info_version_internal[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) - require += info_cray[argc]; -#endif - require += info_language_standard_default[argc]; - require += info_language_extensions_default[argc]; - (void)argv; - return require; -} -#endif diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CompilerIdC.exe b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CompilerIdC.exe deleted file mode 100644 index 691bebd5a8..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CompilerIdC.exe and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CompilerIdC.vcxproj b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CompilerIdC.vcxproj deleted file mode 100644 index 51c2f2d4c2..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CompilerIdC.vcxproj +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Debug - x64 - - - - {CAE07175-D007-4FC3-BFE8-47B392814159} - CompilerIdC - Win32Proj - - - 10.0.22000.0 - - - - - - - - - x64 - - - Application - v143 - MultiByte - - - - - - - <_ProjectFileVersion>10.0.30319.1 - .\ - $(Configuration)\ - false - - - - Disabled - %(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - - - TurnOffAllWarnings - - - - - - false - Console - - - - for %%i in (cl.exe) do %40echo CMAKE_C_COMPILER=%%~$PATH:i - - - - - - - - - - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CMakeCCompilerId.obj b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CMakeCCompilerId.obj deleted file mode 100644 index 82a46192bc..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CMakeCCompilerId.obj and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.exe.recipe b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.exe.recipe deleted file mode 100644 index 7346fb7138..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.exe.recipe +++ /dev/null @@ -1,11 +0,0 @@ - - - - - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdC\CompilerIdC.exe - - - - - - \ No newline at end of file diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.command.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.command.1.tlog deleted file mode 100644 index 8006559c70..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.command.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.read.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.read.1.tlog deleted file mode 100644 index c421087695..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.read.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.write.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.write.1.tlog deleted file mode 100644 index 76d2ebbdcc..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CL.write.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CompilerIdC.lastbuildstate b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CompilerIdC.lastbuildstate deleted file mode 100644 index ecde8eda00..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/CompilerIdC.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.31.31103:TargetPlatformVersion=10.0.22000.0:VcpkgTriplet=x64-windows: -Debug|x64|C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdC\| diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.command.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.command.1.tlog deleted file mode 100644 index e57753f2f2..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.command.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.read.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.read.1.tlog deleted file mode 100644 index 539cd354bc..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.read.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.write.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.write.1.tlog deleted file mode 100644 index 0db8a80b88..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/CompilerIdC.tlog/link.write.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/vcpkg.applocal.log b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/vcpkg.applocal.log deleted file mode 100644 index af0744ae0a..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/Debug/vcpkg.applocal.log +++ /dev/null @@ -1 +0,0 @@ - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CMakeCXXCompilerId.cpp b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CMakeCXXCompilerId.cpp deleted file mode 100644 index 293e5ca112..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CMakeCXXCompilerId.cpp +++ /dev/null @@ -1,816 +0,0 @@ -/* This source file must have a .cpp extension so that all C++ compilers - recognize the extension without flags. Borland does not know .cxx for - example. */ -#ifndef __cplusplus -# error "A C compiler has been selected for C++." -#endif - -#if !defined(__has_include) -/* If the compiler does not have __has_include, pretend the answer is - always no. */ -# define __has_include(x) 0 -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__COMO__) -# define COMPILER_ID "Comeau" - /* __COMO_VERSION__ = VRR */ -# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) -# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) - -#elif defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# if defined(__GNUC__) -# define SIMULATE_ID "GNU" -# endif - /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, - except that a few beta releases use the old format with V=2021. */ -# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) - /* The third version component from --version is an update index, - but no macro is provided for it. */ -# define COMPILER_VERSION_PATCH DEC(0) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) -# define COMPILER_ID "IntelLLVM" -#if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -#endif -#if defined(__GNUC__) -# define SIMULATE_ID "GNU" -#endif -/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and - * later. Look for 6 digit vs. 8 digit version number to decide encoding. - * VVVV is no smaller than the current year when a version is released. - */ -#if __INTEL_LLVM_COMPILER < 1000000L -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) -#else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) -#endif -#if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -#endif -#if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -#elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -#endif -#if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -#endif -#if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -#endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_CC) -# define COMPILER_ID "SunPro" -# if __SUNPRO_CC >= 0x5100 - /* __SUNPRO_CC = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# endif - -#elif defined(__HP_aCC) -# define COMPILER_ID "HP" - /* __HP_aCC = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) - -#elif defined(__DECCXX) -# define COMPILER_ID "Compaq" - /* __DECCXX_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) - -#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__open_xl__) && defined(__clang__) -# define COMPILER_ID "IBMClang" -# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) -# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) -# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) - - -#elif defined(__ibmxl__) && defined(__clang__) -# define COMPILER_ID "XLClang" -# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) -# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) -# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) - - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 -# define COMPILER_ID "XL" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__NVCOMPILER) -# define COMPILER_ID "NVHPC" -# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) -# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) -# if defined(__NVCOMPILER_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) -# endif - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__CLANG_FUJITSU) -# define COMPILER_ID "FujitsuClang" -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# define COMPILER_VERSION_INTERNAL_STR __clang_version__ - - -#elif defined(__FUJITSU) -# define COMPILER_ID "Fujitsu" -# if defined(__FCC_version__) -# define COMPILER_VERSION __FCC_version__ -# elif defined(__FCC_major__) -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# endif -# if defined(__fcc_version) -# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) -# elif defined(__FCC_VERSION) -# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) -# endif - - -#elif defined(__ghs__) -# define COMPILER_ID "GHS" -/* __GHS_VERSION_NUMBER = VVVVRP */ -# ifdef __GHS_VERSION_NUMBER -# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) -# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) -# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) -# endif - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__ARMCC_VERSION) && !defined(__clang__) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) -# define COMPILER_ID "ARMClang" - # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) -# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) -# define COMPILER_ID "LCC" -# define COMPILER_VERSION_MAJOR DEC(1) -# if defined(__LCC__) -# define COMPILER_VERSION_MINOR DEC(__LCC__- 100) -# endif -# if defined(__LCC_MINOR__) -# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) -# endif -# if defined(__GNUC__) && defined(__GNUC_MINOR__) -# define SIMULATE_ID "GNU" -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif -# endif - -#elif defined(__GNUC__) || defined(__GNUG__) -# define COMPILER_ID "GNU" -# if defined(__GNUC__) -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# else -# define COMPILER_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) -# define COMPILER_ID "ADSP" -#if defined(__VISUALDSPVERSION__) - /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ -# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) -# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" -# if defined(__VER__) && defined(__ICCARM__) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) -# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) -# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) -# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) -# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# endif - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__MSYS__) -# define PLATFORM_ID "MSYS" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# elif defined(__VXWORKS__) -# define PLATFORM_ID "VxWorks" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#elif defined(__INTEGRITY) -# if defined(INT_178B) -# define PLATFORM_ID "Integrity178" - -# else /* regular Integrity */ -# define PLATFORM_ID "Integrity" -# endif - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_ARM64EC) -# define ARCHITECTURE_ID "ARM64EC" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM64) -# define ARCHITECTURE_ID "ARM64" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# if defined(__ICCARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__ICCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__ICCRH850__) -# define ARCHITECTURE_ID "RH850" - -# elif defined(__ICCRL78__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__ICCRISCV__) -# define ARCHITECTURE_ID "RISCV" - -# elif defined(__ICCAVR__) -# define ARCHITECTURE_ID "AVR" - -# elif defined(__ICC430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__ICCV850__) -# define ARCHITECTURE_ID "V850" - -# elif defined(__ICC8051__) -# define ARCHITECTURE_ID "8051" - -# elif defined(__ICCSTM8__) -# define ARCHITECTURE_ID "STM8" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__ghs__) -# if defined(__PPC64__) -# define ARCHITECTURE_ID "PPC64" - -# elif defined(__ppc__) -# define ARCHITECTURE_ID "PPC" - -# elif defined(__ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__x86_64__) -# define ARCHITECTURE_ID "x64" - -# elif defined(__i386__) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__TI_COMPILER_VERSION__) -# if defined(__TI_ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__MSP430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__TMS320C28XX__) -# define ARCHITECTURE_ID "TMS320C28x" - -# elif defined(__TMS320C6X__) || defined(_TMS320C6X) -# define ARCHITECTURE_ID "TMS320C6x" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number. */ -#ifdef COMPILER_VERSION -char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; - -/* Construct a string literal encoding the version number components. */ -#elif defined(COMPILER_VERSION_MAJOR) -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the internal version number. */ -#ifdef COMPILER_VERSION_INTERNAL -char const info_version_internal[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', - 'i','n','t','e','r','n','a','l','[', - COMPILER_VERSION_INTERNAL,']','\0'}; -#elif defined(COMPILER_VERSION_INTERNAL_STR) -char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - -#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L -# if defined(__INTEL_CXX11_MODE__) -# if defined(__cpp_aggregate_nsdmi) -# define CXX_STD 201402L -# else -# define CXX_STD 201103L -# endif -# else -# define CXX_STD 199711L -# endif -#elif defined(_MSC_VER) && defined(_MSVC_LANG) -# define CXX_STD _MSVC_LANG -#else -# define CXX_STD __cplusplus -#endif - -const char* info_language_standard_default = "INFO" ":" "standard_default[" -#if CXX_STD > 202002L - "23" -#elif CXX_STD > 201703L - "20" -#elif CXX_STD >= 201703L - "17" -#elif CXX_STD >= 201402L - "14" -#elif CXX_STD >= 201103L - "11" -#else - "98" -#endif -"]"; - -const char* info_language_extensions_default = "INFO" ":" "extensions_default[" -#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ - defined(__TI_COMPILER_VERSION__)) && \ - !defined(__STRICT_ANSI__) - "ON" -#else - "OFF" -#endif -"]"; - -/*--------------------------------------------------------------------------*/ - -int main(int argc, char* argv[]) -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#ifdef COMPILER_VERSION_INTERNAL - require += info_version_internal[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) - require += info_cray[argc]; -#endif - require += info_language_standard_default[argc]; - require += info_language_extensions_default[argc]; - (void)argv; - return require; -} diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CompilerIdCXX.exe b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CompilerIdCXX.exe deleted file mode 100644 index 36fc22c983..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CompilerIdCXX.exe and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CompilerIdCXX.vcxproj b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CompilerIdCXX.vcxproj deleted file mode 100644 index 3438647e08..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CompilerIdCXX.vcxproj +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Debug - x64 - - - - {CAE07175-D007-4FC3-BFE8-47B392814159} - CompilerIdCXX - Win32Proj - - - 10.0.22000.0 - - - - - - - - - x64 - - - Application - v143 - MultiByte - - - - - - - <_ProjectFileVersion>10.0.30319.1 - .\ - $(Configuration)\ - false - - - - Disabled - %(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - - - TurnOffAllWarnings - - - - - - false - Console - - - - for %%i in (cl.exe) do %40echo CMAKE_CXX_COMPILER=%%~$PATH:i - - - - - - - - - - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CMakeCXXCompilerId.obj b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CMakeCXXCompilerId.obj deleted file mode 100644 index 7f986e5457..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CMakeCXXCompilerId.obj and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.exe.recipe b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.exe.recipe deleted file mode 100644 index a5f8f9ef97..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.exe.recipe +++ /dev/null @@ -1,11 +0,0 @@ - - - - - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdCXX\CompilerIdCXX.exe - - - - - - \ No newline at end of file diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.command.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.command.1.tlog deleted file mode 100644 index 08d6051e60..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.command.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog deleted file mode 100644 index 2843aef2ec..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog deleted file mode 100644 index 231b3dc600..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CompilerIdCXX.lastbuildstate b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CompilerIdCXX.lastbuildstate deleted file mode 100644 index 1938a01111..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CompilerIdCXX.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.31.31103:TargetPlatformVersion=10.0.22000.0:VcpkgTriplet=x64-windows: -Debug|x64|C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdCXX\| diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog deleted file mode 100644 index c2e6723752..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog deleted file mode 100644 index 35c4993a12..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog deleted file mode 100644 index ecfcc51a24..0000000000 Binary files a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog and /dev/null differ diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/vcpkg.applocal.log b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/vcpkg.applocal.log deleted file mode 100644 index af0744ae0a..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/Debug/vcpkg.applocal.log +++ /dev/null @@ -1 +0,0 @@ - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/VCTargetsPath.txt b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/VCTargetsPath.txt deleted file mode 100644 index 513c27793a..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/VCTargetsPath.txt +++ /dev/null @@ -1 +0,0 @@ -C:/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Microsoft/VC/v170 diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/VCTargetsPath.vcxproj b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/VCTargetsPath.vcxproj deleted file mode 100644 index ccef86f10e..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/VCTargetsPath.vcxproj +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Debug - x64 - - - - {F3FC6D86-508D-3FB1-96D2-995F08B142EC} - Win32Proj - x64 - 10.0.22000.0 - - - - x64 - - - Utility - MultiByte - v143 - - - - - echo VCTargetsPath=$(VCTargetsPath) - - - - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/x64/Debug/VCTargetsPath.recipe b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/x64/Debug/VCTargetsPath.recipe deleted file mode 100644 index 88ca50d974..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/x64/Debug/VCTargetsPath.recipe +++ /dev/null @@ -1,11 +0,0 @@ - - - - - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\x64\Debug\VCTargetsPath - - - - - - \ No newline at end of file diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/x64/Debug/VCTargetsPath.tlog/VCTargetsPath.lastbuildstate b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/x64/Debug/VCTargetsPath.tlog/VCTargetsPath.lastbuildstate deleted file mode 100644 index 83a7fbd050..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/x64/Debug/VCTargetsPath.tlog/VCTargetsPath.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.31.31103:TargetPlatformVersion=10.0.22000.0:VcpkgTriplet=x64-windows: -Debug|x64|C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\| diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/CMakeOutput.log b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/CMakeOutput.log deleted file mode 100644 index cb760d5db1..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/CMakeOutput.log +++ /dev/null @@ -1,135 +0,0 @@ -The system is: Windows - 10.0.19044 - AMD64 -Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. -Compiler: -Build flags: -Id flags: - -The output was: -0 -Microsoft (R) Build Engine version 17.1.0+ae57d105c for .NET Framework -Copyright (C) Microsoft Corporation. All rights reserved. - -Build started 3/8/2022 9:06:21 AM. -Project "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdC\CompilerIdC.vcxproj" on node 1 (default targets). -PrepareForBuild: - Creating directory "Debug\". - Creating directory "Debug\CompilerIdC.tlog\". -InitializeBuildStatus: - Creating "Debug\CompilerIdC.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified. -VcpkgTripletSelection: - Using triplet "x64-windows" from "C:\Users\gregd\vcpkg\installed\x64-windows\" -ClCompile: - C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\HostX64\x64\CL.exe /c /I"C:\Users\gregd\vcpkg\installed\x64-windows\include" /nologo /W0 /WX- /diagnostics:column /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc143.pdb" /external:W0 /Gd /TC /FC /errorReport:queue CMakeCCompilerId.c - CMakeCCompilerId.c -Link: - C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\HostX64\x64\link.exe /ERRORREPORT:QUEUE /OUT:".\CompilerIdC.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\Users\gregd\vcpkg\installed\x64-windows\debug\lib" /LIBPATH:"C:\Users\gregd\vcpkg\installed\x64-windows\debug\lib\manual-link" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "C:\Users\gregd\vcpkg\installed\x64-windows\debug\lib\*.lib" /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\CompilerIdC.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\CompilerIdC.lib" /MACHINE:X64 Debug\CMakeCCompilerId.obj - CompilerIdC.vcxproj -> C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdC\CompilerIdC.exe -AppLocalFromInstalled: - pwsh.exe -ExecutionPolicy Bypass -noprofile -File "C:\Users\gregd\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdC\CompilerIdC.exe" "C:\Users\gregd\vcpkg\installed\x64-windows\debug\bin" "Debug\CompilerIdC.tlog\CompilerIdC.write.1u.tlog" "Debug\vcpkg.applocal.log" - 'pwsh.exe' is not recognized as an internal or external command, - operable program or batch file. - The command "pwsh.exe -ExecutionPolicy Bypass -noprofile -File "C:\Users\gregd\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdC\CompilerIdC.exe" "C:\Users\gregd\vcpkg\installed\x64-windows\debug\bin" "Debug\CompilerIdC.tlog\CompilerIdC.write.1u.tlog" "Debug\vcpkg.applocal.log"" exited with code 9009. - "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -noprofile -File "C:\Users\gregd\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdC\CompilerIdC.exe" "C:\Users\gregd\vcpkg\installed\x64-windows\debug\bin" "Debug\CompilerIdC.tlog\CompilerIdC.write.1u.tlog" "Debug\vcpkg.applocal.log" -PostBuildEvent: - for %%i in (cl.exe) do @echo CMAKE_C_COMPILER=%%~$PATH:i - :VCEnd - CMAKE_C_COMPILER=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\Hostx64\x64\cl.exe -FinalizeBuildStatus: - Deleting file "Debug\CompilerIdC.tlog\unsuccessfulbuild". - Touching "Debug\CompilerIdC.tlog\CompilerIdC.lastbuildstate". -Done Building Project "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdC\CompilerIdC.vcxproj" (default targets). - -Build succeeded. - 0 Warning(s) - 0 Error(s) - -Time Elapsed 00:00:01.01 - - -Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CompilerIdC.exe" - -Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CompilerIdC.vcxproj" - -The C compiler identification is MSVC, found in "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdC/CompilerIdC.exe" - -Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. -Compiler: -Build flags: -Id flags: - -The output was: -0 -Microsoft (R) Build Engine version 17.1.0+ae57d105c for .NET Framework -Copyright (C) Microsoft Corporation. All rights reserved. - -Build started 3/8/2022 9:06:23 AM. -Project "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdCXX\CompilerIdCXX.vcxproj" on node 1 (default targets). -PrepareForBuild: - Creating directory "Debug\". - Creating directory "Debug\CompilerIdCXX.tlog\". -InitializeBuildStatus: - Creating "Debug\CompilerIdCXX.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified. -VcpkgTripletSelection: - Using triplet "x64-windows" from "C:\Users\gregd\vcpkg\installed\x64-windows\" -ClCompile: - C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\HostX64\x64\CL.exe /c /I"C:\Users\gregd\vcpkg\installed\x64-windows\include" /nologo /W0 /WX- /diagnostics:column /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc143.pdb" /external:W0 /Gd /TP /FC /errorReport:queue CMakeCXXCompilerId.cpp - CMakeCXXCompilerId.cpp -Link: - C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\HostX64\x64\link.exe /ERRORREPORT:QUEUE /OUT:".\CompilerIdCXX.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\Users\gregd\vcpkg\installed\x64-windows\debug\lib" /LIBPATH:"C:\Users\gregd\vcpkg\installed\x64-windows\debug\lib\manual-link" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "C:\Users\gregd\vcpkg\installed\x64-windows\debug\lib\*.lib" /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\CompilerIdCXX.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\CompilerIdCXX.lib" /MACHINE:X64 Debug\CMakeCXXCompilerId.obj - CompilerIdCXX.vcxproj -> C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdCXX\CompilerIdCXX.exe -AppLocalFromInstalled: - pwsh.exe -ExecutionPolicy Bypass -noprofile -File "C:\Users\gregd\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdCXX\CompilerIdCXX.exe" "C:\Users\gregd\vcpkg\installed\x64-windows\debug\bin" "Debug\CompilerIdCXX.tlog\CompilerIdCXX.write.1u.tlog" "Debug\vcpkg.applocal.log" - 'pwsh.exe' is not recognized as an internal or external command, - operable program or batch file. - The command "pwsh.exe -ExecutionPolicy Bypass -noprofile -File "C:\Users\gregd\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdCXX\CompilerIdCXX.exe" "C:\Users\gregd\vcpkg\installed\x64-windows\debug\bin" "Debug\CompilerIdCXX.tlog\CompilerIdCXX.write.1u.tlog" "Debug\vcpkg.applocal.log"" exited with code 9009. - "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -noprofile -File "C:\Users\gregd\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdCXX\CompilerIdCXX.exe" "C:\Users\gregd\vcpkg\installed\x64-windows\debug\bin" "Debug\CompilerIdCXX.tlog\CompilerIdCXX.write.1u.tlog" "Debug\vcpkg.applocal.log" -PostBuildEvent: - for %%i in (cl.exe) do @echo CMAKE_CXX_COMPILER=%%~$PATH:i - :VCEnd - CMAKE_CXX_COMPILER=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\Hostx64\x64\cl.exe -FinalizeBuildStatus: - Deleting file "Debug\CompilerIdCXX.tlog\unsuccessfulbuild". - Touching "Debug\CompilerIdCXX.tlog\CompilerIdCXX.lastbuildstate". -Done Building Project "C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CompilerIdCXX\CompilerIdCXX.vcxproj" (default targets). - -Build succeeded. - 0 Warning(s) - 0 Error(s) - -Time Elapsed 00:00:00.84 - - -Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CompilerIdCXX.exe" - -Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CompilerIdCXX.vcxproj" - -The CXX compiler identification is MSVC, found in "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CompilerIdCXX/CompilerIdCXX.exe" - -Detecting C compiler ABI info compiled with the following output: -Change Dir: C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/CMakeTmp - -Run Build Command(s):C:/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/Bin/amd64/MSBuild.exe cmTC_34712.vcxproj /p:Configuration=Debug /p:Platform=x64 /p:VisualStudioVersion=17.0 /v:m && Microsoft (R) Build Engine version 17.1.0+ae57d105c for .NET Framework -Copyright (C) Microsoft Corporation. All rights reserved. - - Microsoft (R) C/C++ Optimizing Compiler Version 19.31.31104 for x64 - Copyright (C) Microsoft Corporation. All rights reserved. - CMakeCCompilerABI.c - cl /c /Zi /W1 /WX- /diagnostics:column /Od /Ob0 /D _MBCS /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_34712.dir\Debug\\" /Fd"cmTC_34712.dir\Debug\vc143.pdb" /external:W1 /Gd /TC /errorReport:queue "C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c" - cmTC_34712.vcxproj -> C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\CMakeTmp\Debug\cmTC_34712.exe - - - -Detecting CXX compiler ABI info compiled with the following output: -Change Dir: C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/CMakeTmp - -Run Build Command(s):C:/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/Bin/amd64/MSBuild.exe cmTC_edca7.vcxproj /p:Configuration=Debug /p:Platform=x64 /p:VisualStudioVersion=17.0 /v:m && Microsoft (R) Build Engine version 17.1.0+ae57d105c for .NET Framework -Copyright (C) Microsoft Corporation. All rights reserved. - - Microsoft (R) C/C++ Optimizing Compiler Version 19.31.31104 for x64 - CMakeCXXCompilerABI.cpp - Copyright (C) Microsoft Corporation. All rights reserved. - cl /c /Zi /W1 /WX- /diagnostics:column /Od /Ob0 /D _MBCS /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmTC_edca7.dir\Debug\\" /Fd"cmTC_edca7.dir\Debug\vc143.pdb" /external:W1 /Gd /TP /errorReport:queue "C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp" - cmTC_edca7.vcxproj -> C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\CMakeTmp\Debug\cmTC_edca7.exe - - - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/TargetDirectories.txt b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/TargetDirectories.txt deleted file mode 100644 index 4eeaf33edd..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/TargetDirectories.txt +++ /dev/null @@ -1,4 +0,0 @@ -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/heifconvert.dir -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/INSTALL.dir -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/ALL_BUILD.dir -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/ZERO_CHECK.dir diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/cmake.check_cache b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/cmake.check_cache deleted file mode 100644 index 56c437b9b7..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/cmake.check_cache +++ /dev/null @@ -1 +0,0 @@ -# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp deleted file mode 100644 index 204caab22d..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp +++ /dev/null @@ -1 +0,0 @@ -# CMake generation timestamp file for this directory. diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp.depend b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp.depend deleted file mode 100644 index 6ff211e1bb..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp.depend +++ /dev/null @@ -1,115 +0,0 @@ -# CMake generation dependency list for this directory. -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeCCompiler.cmake.in -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeCCompilerABI.c -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeCInformation.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeCXXCompiler.cmake.in -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeCXXCompilerABI.cpp -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeCXXInformation.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeCommonLanguageInclude.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeCompilerIdDetection.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeDependentOption.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeDetermineCCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeDetermineCXXCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeDetermineCompileFeatures.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeDetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeDetermineCompilerABI.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeDetermineCompilerId.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeDetermineRCCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeDetermineSystem.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeFindBinUtils.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeFindJavaCommon.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeGenericSystem.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeInitializeConfigs.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeLanguageInformation.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeParseImplicitIncludeInfo.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeParseImplicitLinkInfo.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeParseLibraryArchitecture.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeRCCompiler.cmake.in -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeRCInformation.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeSystem.cmake.in -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeSystemSpecificInformation.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeSystemSpecificInitialize.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeTestCCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeTestCXXCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeTestCompilerCommon.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CMakeTestRCCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CheckCXXSourceCompiles.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/ADSP-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/ARMCC-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/ARMClang-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/AppleClang-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Borland-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Bruce-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/CMakeCommonCompilerMacros.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Clang-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Clang-DetermineCompilerInternal.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Compaq-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Cray-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Embarcadero-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Fujitsu-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/GHS-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/GNU-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/HP-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/HP-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/IAR-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Intel-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/LCC-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/MSVC-C.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/MSVC-CXX.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/MSVC-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/NVHPC-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/NVIDIA-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/PGI-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/PathScale-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/SCO-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/SDCC-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/SunPro-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/TI-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/Watcom-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/XL-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/XL-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/XLClang-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/zOS-C-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/CompilerId/VS-10.vcxproj.in -C:/Program Files/CMake/share/cmake-3.23/Modules/FindJNI.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/FindJPEG.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/FindJava.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/FindPackageMessage.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Internal/CheckSourceCompiles.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Internal/FeatureTesting.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/Windows-Determine-CXX.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/Windows-MSVC-C.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/Windows-MSVC-CXX.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/Windows-MSVC.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/Windows.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/WindowsPaths.cmake -C:/Program Files/CMake/share/cmake-3.23/Modules/SelectLibraryConfigurations.cmake -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeCCompiler.cmake -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeCXXCompiler.cmake -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeRCCompiler.cmake -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/3.23.0-rc2/CMakeSystem.cmake -C:/Users/gregd/vcpkg/installed/x64-windows/share/jpeg/vcpkg-cmake-wrapper.cmake -C:/Users/gregd/vcpkg/installed/x64-windows/share/libheif/libheif-config-debug.cmake -C:/Users/gregd/vcpkg/installed/x64-windows/share/libheif/libheif-config-release.cmake -C:/Users/gregd/vcpkg/installed/x64-windows/share/libheif/libheif-config-version.cmake -C:/Users/gregd/vcpkg/installed/x64-windows/share/libheif/libheif-config.cmake -C:/Users/gregd/vcpkg/scripts/buildsystems/vcpkg.cmake diff --git a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp.list b/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp.list deleted file mode 100644 index a40fb08718..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp.list +++ /dev/null @@ -1 +0,0 @@ -C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp diff --git a/thirdparty/libheif/HeifConvertJNI/dist/INSTALL.vcxproj b/thirdparty/libheif/HeifConvertJNI/dist/INSTALL.vcxproj deleted file mode 100644 index cbfb74be9e..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/INSTALL.vcxproj +++ /dev/null @@ -1,204 +0,0 @@ - - - - x64 - - - - Debug - x64 - - - Release - x64 - - - MinSizeRel - x64 - - - RelWithDebInfo - x64 - - - - {84F917E4-0F70-399C-83E3-821C7301DBB4} - Win32Proj - 10.0.22000.0 - x64 - INSTALL - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - Always - - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - Always - - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - Always - - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - Always - - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\INSTALL_force - false - false - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\INSTALL_force - false - false - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\INSTALL_force - false - false - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\INSTALL_force - false - false - - - - - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} - ZERO_CHECK - false - Never - - - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD} - ALL_BUILD - false - Never - - - - - - \ No newline at end of file diff --git a/thirdparty/libheif/HeifConvertJNI/dist/INSTALL.vcxproj.filters b/thirdparty/libheif/HeifConvertJNI/dist/INSTALL.vcxproj.filters deleted file mode 100644 index 4d19c5cf8e..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/INSTALL.vcxproj.filters +++ /dev/null @@ -1,13 +0,0 @@ - - - - - CMake Rules - - - - - {F4F33F67-4689-3CA8-9E08-A8C78BF35C17} - - - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/ZERO_CHECK.vcxproj b/thirdparty/libheif/HeifConvertJNI/dist/ZERO_CHECK.vcxproj deleted file mode 100644 index 5a5355283f..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/ZERO_CHECK.vcxproj +++ /dev/null @@ -1,174 +0,0 @@ - - - - x64 - - - false - - - - Debug - x64 - - - Release - x64 - - - MinSizeRel - x64 - - - RelWithDebInfo - x64 - - - - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} - Win32Proj - 10.0.22000.0 - x64 - ZERO_CHECK - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - Always - Checking Build System - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-list CMakeFiles/generate.stamp.list --vs-solution-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.sln -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\CMakeLists.txt;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - Checking Build System - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-list CMakeFiles/generate.stamp.list --vs-solution-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.sln -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\CMakeLists.txt;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - Checking Build System - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-list CMakeFiles/generate.stamp.list --vs-solution-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.sln -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\CMakeLists.txt;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - Checking Build System - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-list CMakeFiles/generate.stamp.list --vs-solution-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.sln -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\CMakeLists.txt;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - - - - - - - - - - \ No newline at end of file diff --git a/thirdparty/libheif/HeifConvertJNI/dist/ZERO_CHECK.vcxproj.filters b/thirdparty/libheif/HeifConvertJNI/dist/ZERO_CHECK.vcxproj.filters deleted file mode 100644 index b266b9dcc2..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/ZERO_CHECK.vcxproj.filters +++ /dev/null @@ -1,13 +0,0 @@ - - - - - CMake Rules - - - - - {F4F33F67-4689-3CA8-9E08-A8C78BF35C17} - - - diff --git a/thirdparty/libheif/HeifConvertJNI/dist/cmake_install.cmake b/thirdparty/libheif/HeifConvertJNI/dist/cmake_install.cmake deleted file mode 100644 index 92ac0665c4..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/cmake_install.cmake +++ /dev/null @@ -1,68 +0,0 @@ -# Install script for directory: C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI - -# Set the install prefix -if(NOT DEFINED CMAKE_INSTALL_PREFIX) - set(CMAKE_INSTALL_PREFIX "C:/Program Files/heifconvert") -endif() -string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - -# Set the install configuration name. -if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) - if(BUILD_TYPE) - string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" - CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") - else() - set(CMAKE_INSTALL_CONFIG_NAME "Release") - endif() - message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") -endif() - -# Set the component getting installed. -if(NOT CMAKE_INSTALL_COMPONENT) - if(COMPONENT) - message(STATUS "Install component: \"${COMPONENT}\"") - set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") - else() - set(CMAKE_INSTALL_COMPONENT) - endif() -endif() - -# Is this installation the result of a crosscompile? -if(NOT DEFINED CMAKE_CROSSCOMPILING) - set(CMAKE_CROSSCOMPILING "FALSE") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Dd][Ee][Bb][Uu][Gg])$") - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY OPTIONAL FILES "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Debug/heifconvert.lib") - elseif("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$") - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY OPTIONAL FILES "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Release/heifconvert.lib") - elseif("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Mm][Ii][Nn][Ss][Ii][Zz][Ee][Rr][Ee][Ll])$") - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY OPTIONAL FILES "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/MinSizeRel/heifconvert.lib") - elseif("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$") - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY OPTIONAL FILES "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/RelWithDebInfo/heifconvert.lib") - endif() -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Dd][Ee][Bb][Uu][Gg])$") - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE SHARED_LIBRARY FILES "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Debug/heifconvert.dll") - elseif("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$") - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE SHARED_LIBRARY FILES "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Release/heifconvert.dll") - elseif("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Mm][Ii][Nn][Ss][Ii][Zz][Ee][Rr][Ee][Ll])$") - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE SHARED_LIBRARY FILES "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/MinSizeRel/heifconvert.dll") - elseif("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$") - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE SHARED_LIBRARY FILES "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/RelWithDebInfo/heifconvert.dll") - endif() -endif() - -if(CMAKE_INSTALL_COMPONENT) - set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") -else() - set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") -endif() - -string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT - "${CMAKE_INSTALL_MANIFEST_FILES}") -file(WRITE "C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/${CMAKE_INSTALL_MANIFEST}" - "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.sln b/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.sln deleted file mode 100644 index 88f4ddd285..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.sln +++ /dev/null @@ -1,67 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "ALL_BUILD.vcxproj", "{9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD}" - ProjectSection(ProjectDependencies) = postProject - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} = {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0} = {055A5FCF-20E2-31E3-99F9-088EF91A8BE0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "INSTALL", "INSTALL.vcxproj", "{84F917E4-0F70-399C-83E3-821C7301DBB4}" - ProjectSection(ProjectDependencies) = postProject - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD} = {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD} - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} = {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "ZERO_CHECK.vcxproj", "{C00C365E-AFFA-31A4-9ED2-9394EC192DC5}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "heifconvert", "heifconvert.vcxproj", "{055A5FCF-20E2-31E3-99F9-088EF91A8BE0}" - ProjectSection(ProjectDependencies) = postProject - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} = {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Release|x64 = Release|x64 - MinSizeRel|x64 = MinSizeRel|x64 - RelWithDebInfo|x64 = RelWithDebInfo|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD}.Debug|x64.ActiveCfg = Debug|x64 - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD}.Debug|x64.Build.0 = Debug|x64 - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD}.Release|x64.ActiveCfg = Release|x64 - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD}.Release|x64.Build.0 = Release|x64 - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD}.MinSizeRel|x64.Build.0 = MinSizeRel|x64 - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {9F428133-6AEA-36CA-8E9C-5D7BC2DC18DD}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {84F917E4-0F70-399C-83E3-821C7301DBB4}.Debug|x64.ActiveCfg = Debug|x64 - {84F917E4-0F70-399C-83E3-821C7301DBB4}.Release|x64.ActiveCfg = Release|x64 - {84F917E4-0F70-399C-83E3-821C7301DBB4}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 - {84F917E4-0F70-399C-83E3-821C7301DBB4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5}.Debug|x64.ActiveCfg = Debug|x64 - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5}.Debug|x64.Build.0 = Debug|x64 - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5}.Release|x64.ActiveCfg = Release|x64 - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5}.Release|x64.Build.0 = Release|x64 - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5}.MinSizeRel|x64.Build.0 = MinSizeRel|x64 - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0}.Debug|x64.ActiveCfg = Debug|x64 - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0}.Debug|x64.Build.0 = Debug|x64 - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0}.Release|x64.ActiveCfg = Release|x64 - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0}.Release|x64.Build.0 = Release|x64 - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64 - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0}.MinSizeRel|x64.Build.0 = MinSizeRel|x64 - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {96720EA7-B8E1-3FF7-90F2-1D8CF4A3439D} - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.vcxproj b/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.vcxproj deleted file mode 100644 index 2e24bbab99..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.vcxproj +++ /dev/null @@ -1,383 +0,0 @@ - - - - x64 - - - - Debug - x64 - - - Release - x64 - - - MinSizeRel - x64 - - - RelWithDebInfo - x64 - - - - {055A5FCF-20E2-31E3-99F9-088EF91A8BE0} - Win32Proj - false - 10.0.22000.0 - x64 - heifconvert - NoUpgrade - - - - DynamicLibrary - MultiByte - v143 - - - DynamicLibrary - MultiByte - v143 - - - DynamicLibrary - MultiByte - v143 - - - DynamicLibrary - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\Debug\ - heifconvert.dir\Debug\ - heifconvert - .dll - true - true - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\Release\ - heifconvert.dir\Release\ - heifconvert - .dll - false - true - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\MinSizeRel\ - heifconvert.dir\MinSizeRel\ - heifconvert - .dll - false - true - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\RelWithDebInfo\ - heifconvert.dir\RelWithDebInfo\ - heifconvert - .dll - true - true - - - - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(IntDir) - EnableFastChecks - ProgramDatabase - Sync - Disabled - stdcpplatest - Disabled - NotUsing - MultiThreadedDebugDLL - true - false - %(PreprocessorDefinitions);WIN32;_WINDOWS;HAVE_JPEG_WRITE_ICC_PROFILE=1;LIBHEIF_EXPORTS;HAVE_VISIBILITY;CMAKE_INTDIR="Debug";heifconvert_EXPORTS - $(IntDir) - - - %(PreprocessorDefinitions);WIN32;_DEBUG;_WINDOWS;HAVE_JPEG_WRITE_ICC_PROFILE=1;LIBHEIF_EXPORTS;HAVE_VISIBILITY;CMAKE_INTDIR=\"Debug\";heifconvert_EXPORTS - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - - - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - setlocal -C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file C:/Users/gregd/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Debug/heifconvert.dll -installedDir C:/Users/gregd/vcpkg/installed/x64-windows/debug/bin -OutVariable out -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - C:\Users\gregd\vcpkg\installed\x64-windows\debug\lib\heif.lib;C:\Users\gregd\vcpkg\installed\x64-windows\debug\lib\jpeg.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib - %(AdditionalLibraryDirectories) - %(AdditionalOptions) /machine:x64 - true - %(IgnoreSpecificDefaultLibraries) - C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Debug/heifconvert.lib - C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Debug/heifconvert.pdb - Console - - - false - - - - - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(IntDir) - Sync - AnySuitable - stdcpplatest - MaxSpeed - NotUsing - MultiThreadedDLL - true - false - %(PreprocessorDefinitions);WIN32;_WINDOWS;NDEBUG;HAVE_JPEG_WRITE_ICC_PROFILE=1;LIBHEIF_EXPORTS;HAVE_VISIBILITY;CMAKE_INTDIR="Release";heifconvert_EXPORTS - $(IntDir) - - - - - %(PreprocessorDefinitions);WIN32;_WINDOWS;NDEBUG;HAVE_JPEG_WRITE_ICC_PROFILE=1;LIBHEIF_EXPORTS;HAVE_VISIBILITY;CMAKE_INTDIR=\"Release\";heifconvert_EXPORTS - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - - - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - setlocal -C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file C:/Users/gregd/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Release/heifconvert.dll -installedDir C:/Users/gregd/vcpkg/installed/x64-windows/bin -OutVariable out -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - C:\Users\gregd\vcpkg\installed\x64-windows\lib\heif.lib;C:\Users\gregd\vcpkg\installed\x64-windows\lib\jpeg.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib - %(AdditionalLibraryDirectories) - %(AdditionalOptions) /machine:x64 - false - %(IgnoreSpecificDefaultLibraries) - C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Release/heifconvert.lib - C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/Release/heifconvert.pdb - Console - - - false - - - - - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(IntDir) - Sync - OnlyExplicitInline - stdcpplatest - MinSpace - NotUsing - MultiThreadedDLL - true - false - %(PreprocessorDefinitions);WIN32;_WINDOWS;NDEBUG;HAVE_JPEG_WRITE_ICC_PROFILE=1;LIBHEIF_EXPORTS;HAVE_VISIBILITY;CMAKE_INTDIR="MinSizeRel";heifconvert_EXPORTS - $(IntDir) - - - - - %(PreprocessorDefinitions);WIN32;_WINDOWS;NDEBUG;HAVE_JPEG_WRITE_ICC_PROFILE=1;LIBHEIF_EXPORTS;HAVE_VISIBILITY;CMAKE_INTDIR=\"MinSizeRel\";heifconvert_EXPORTS - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - - - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - setlocal -C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file C:/Users/gregd/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/MinSizeRel/heifconvert.dll -installedDir C:/Users/gregd/vcpkg/installed/x64-windows/bin -OutVariable out -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - C:\Users\gregd\vcpkg\installed\x64-windows\lib\heif.lib;C:\Users\gregd\vcpkg\installed\x64-windows\lib\jpeg.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib - %(AdditionalLibraryDirectories) - %(AdditionalOptions) /machine:x64 - false - %(IgnoreSpecificDefaultLibraries) - C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/MinSizeRel/heifconvert.lib - C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/MinSizeRel/heifconvert.pdb - Console - - - false - - - - - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(IntDir) - ProgramDatabase - Sync - OnlyExplicitInline - stdcpplatest - MaxSpeed - NotUsing - MultiThreadedDLL - true - false - %(PreprocessorDefinitions);WIN32;_WINDOWS;NDEBUG;HAVE_JPEG_WRITE_ICC_PROFILE=1;LIBHEIF_EXPORTS;HAVE_VISIBILITY;CMAKE_INTDIR="RelWithDebInfo";heifconvert_EXPORTS - $(IntDir) - - - %(PreprocessorDefinitions);WIN32;_WINDOWS;NDEBUG;HAVE_JPEG_WRITE_ICC_PROFILE=1;LIBHEIF_EXPORTS;HAVE_VISIBILITY;CMAKE_INTDIR=\"RelWithDebInfo\";heifconvert_EXPORTS - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - - - C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include;C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1\include\win32;C:\Users\gregd\vcpkg\installed\x64-windows\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - setlocal -C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file C:/Users/gregd/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/RelWithDebInfo/heifconvert.dll -installedDir C:/Users/gregd/vcpkg/installed/x64-windows/bin -OutVariable out -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - C:\Users\gregd\vcpkg\installed\x64-windows\lib\heif.lib;C:\Users\gregd\vcpkg\installed\x64-windows\lib\jpeg.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib - %(AdditionalLibraryDirectories) - %(AdditionalOptions) /machine:x64 - true - %(IgnoreSpecificDefaultLibraries) - C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/RelWithDebInfo/heifconvert.lib - C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/RelWithDebInfo/heifconvert.pdb - Console - - - false - - - - - Always - Building Custom Rule C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - Building Custom Rule C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - Building Custom Rule C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - Building Custom Rule C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI -BC:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist --check-stamp-file C:/Users/gregd/Documents/Source/autopsy/thirdparty/libheif/HeifConvertJNI/dist/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCCompilerABI.c;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXCompilerABI.cpp;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeCompilerIdDetection.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDependentOption.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompileFeatures.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerABI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineCompilerId.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeDetermineSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindBinUtils.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeFindJavaCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitIncludeInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseImplicitLinkInfo.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeParseLibraryArchitecture.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCCompiler.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystem.cmake.in;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCXXCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestCompilerCommon.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CMakeTestRCCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ADSP-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMCC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\ARMClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\AppleClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Borland-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Bruce-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Clang-DetermineCompilerInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Comeau-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Cray-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Embarcadero-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Fujitsu-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GHS-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\HP-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IAR-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Intel-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\MSVC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVHPC-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\NVIDIA-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PGI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\PathScale-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SCO-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SDCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TI-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\Watcom-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XL-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-C-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\CompilerId\VS-10.vcxproj.in;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJNI.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJPEG.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindJava.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Internal\FeatureTesting.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-Determine-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.23\Modules\SelectLibraryConfigurations.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeCXXCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeRCCompiler.cmake;C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\3.23.0-rc2\CMakeSystem.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\jpeg\vcpkg-cmake-wrapper.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-debug.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-release.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config-version.cmake;C:\Users\gregd\vcpkg\installed\x64-windows\share\libheif\libheif-config.cmake;C:\Users\gregd\vcpkg\scripts\buildsystems\vcpkg.cmake;%(AdditionalInputs) - C:\Users\gregd\Documents\Source\autopsy\thirdparty\libheif\HeifConvertJNI\dist\CMakeFiles\generate.stamp - false - - - - - - - - - - - - - {C00C365E-AFFA-31A4-9ED2-9394EC192DC5} - ZERO_CHECK - false - Never - - - - - - \ No newline at end of file diff --git a/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.vcxproj.filters b/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.vcxproj.filters deleted file mode 100644 index 54f82b396b..0000000000 --- a/thirdparty/libheif/HeifConvertJNI/dist/heifconvert.vcxproj.filters +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - - - - - - {C25D2A56-7649-3614-9C04-3B8557383A7E} - - - {BBA1F7BB-4858-351A-9398-F975E73E5F83} - - - diff --git a/thirdparty/libheif/README.txt b/thirdparty/libheif/README.txt index 605afd0f46..9bc4a85aff 100644 --- a/thirdparty/libheif/README.txt +++ b/thirdparty/libheif/README.txt @@ -11,7 +11,7 @@ or something other than the suffix :x64-windows for different architectures. In order to build, 1) from command line, set directory to HeifConvertJNI\dist -2) You can rebuild the vcxproj in this directory by running: cmake -G "Visual Studio 17 2022" -A x64 -S .. "-DCMAKE_TOOLCHAIN_FILE=PATH_TO_VCPKG_INSTALL/scripts/buildsystems/vcpkg.cmake" +2) You can rebuild the vcxproj in this directory by running: cmake -G "Visual Studio 17 2022" -A x64 -S .. "-DCMAKE_TOOLCHAIN_FILE=PATH_TO_VCPKG_INSTALL/scripts/buildsystems/vcpkg.cmake" (on macOS and linux, the "-G" and "-A" parameters can be ignored because it populates or could run without "-A" flag and "-G 'Unix MakeFiles'") 3) The binaries can be created by running: cmake --build . --config Release * The "-A x64" flag can be substituted with relevant architecture. \ No newline at end of file diff --git a/thirdparty/libheif/Release/lib/amd64/heifconvert.dll b/thirdparty/libheif/Release/lib/amd64/heifconvert.dll index b60ce29356..4c8d2397f0 100644 Binary files a/thirdparty/libheif/Release/lib/amd64/heifconvert.dll and b/thirdparty/libheif/Release/lib/amd64/heifconvert.dll differ diff --git a/thirdparty/libheif/Release/lib/amd64/libheifconvert.dylib b/thirdparty/libheif/Release/lib/amd64/libheifconvert.dylib new file mode 100644 index 0000000000..99bbe0c864 Binary files /dev/null and b/thirdparty/libheif/Release/lib/amd64/libheifconvert.dylib differ diff --git a/thirdparty/libheif/Release/lib/amd64/libheifconvert.so b/thirdparty/libheif/Release/lib/amd64/libheifconvert.so new file mode 100644 index 0000000000..b2ce896d66 Binary files /dev/null and b/thirdparty/libheif/Release/lib/amd64/libheifconvert.so differ diff --git a/thirdparty/libheif/Release/lib/x86_64/heifconvert.dll b/thirdparty/libheif/Release/lib/x86_64/heifconvert.dll index b60ce29356..4c8d2397f0 100644 Binary files a/thirdparty/libheif/Release/lib/x86_64/heifconvert.dll and b/thirdparty/libheif/Release/lib/x86_64/heifconvert.dll differ diff --git a/thirdparty/libheif/Release/lib/x86_64/libheifconvert.dylib b/thirdparty/libheif/Release/lib/x86_64/libheifconvert.dylib new file mode 100644 index 0000000000..99bbe0c864 Binary files /dev/null and b/thirdparty/libheif/Release/lib/x86_64/libheifconvert.dylib differ diff --git a/thirdparty/libheif/Release/lib/x86_64/libheifconvert.so b/thirdparty/libheif/Release/lib/x86_64/libheifconvert.so new file mode 100644 index 0000000000..b2ce896d66 Binary files /dev/null and b/thirdparty/libheif/Release/lib/x86_64/libheifconvert.so differ diff --git a/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/Bundle_ar.properties b/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/Bundle_ar.properties new file mode 100644 index 0000000000..eab931379b --- /dev/null +++ b/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/Bundle_ar.properties @@ -0,0 +1,34 @@ +MimeJ4MessageParser.handleAttch.noOpenCase.errMsg=Excepcion al obtener el caso abierto. +OpenIDE-Module-Display-Category=Modulo de Ingesta +OpenIDE-Module-Long-Description=Modulo de ingestion de correos electronicos.\n\nEl modulo extrae archivos de correo electronico MBOX y PST y publica los resultados en el tablero.\nConoce la estructura de carpetas de Thunderbird para archivos MBOX. +OpenIDE-Module-Name=Analizador de Correos Electronicos +OpenIDE-Module-Short-Description=Analiza archivos MBOX y PST +MboxParser.parse.errMsg.failedToReadFile=Error al leer el archivo mbox del disco. +MboxParser.parse.errMsg.couldntFindCharset=No se pudo encontrar un codificador de caracteres adecuado. +MboxParser.parse.errMsg.failedToParseNMsgs=Error al extraer {0} mensajes de correo electronico. +MboxParser.handleAttch.errMsg.failedToCreateOnDisk=Error al extraer el adjunto MBOX al disco: {0} +MboxParser.handleAttch.failedWriteToDisk=Error al extraer el adjunto al disco: {0} +PstParser.noOpenCase.errMsg=Excepcion al obtener el caso abierto. +PstParser.parse.errMsg.failedToParseNMsgs=Error al extraer {0} mensajes de correo electronico. +PstParser.extractAttch.errMsg.failedToExtractToDisk=Error al extraer el adjunto PST al disco: {0} +ThunderbirdMboxFileIngestModule.addArtifact.indexError.message=Error al indexar el artefacto detectado del mensaje de correo electronico para la busqueda por palabras clave. +# {0} - nombre del archivo +# {1} - ID del archivo +ThunderbirdMboxFileIngestModule.errorMessage.outOfDiskSpace=Sin espacio en disco. No se puede copiar '{0}' (id={1}) para analizarlo. +ThunderbirdMboxFileIngestModule.handleAttch.addAttachmentsErrorMsg=Error al agregar adjuntos al mensaje de correo electronico. +ThunderbirdMboxFileIngestModule.moduleName=Analizador de Correos Electronicos +ThunderbirdMboxFileIngestModule.noOpenCase.errMsg=Excepcion al obtener el caso abierto. +ThunderbirdMboxFileIngestModule.processPst.errMsg.outOfDiskSpace=Sin espacio en disco. No se puede copiar {0} para analizarlo. +ThunderbirdMboxFileIngestModule.encryptionFileLevel=Cifrado a nivel de archivo +ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg=Error al procesar {0} +ThunderbirdMboxFileIngestModule.processPst.errProcFile.details=Solo se admiten archivos de Outlook 2003 y versiones posteriores. +ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg2=Error al procesar {0} +ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg=Error al procesar {0} +ThunderbirdMboxFileIngestModule.processMBox.errProfFile.details=Sin espacio en disco. No se puede copiar el archivo para analizarlo. +ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg2=Error al procesar {0} +ThunderbirdMboxFileIngestModule.getDesc.text=Este modulo detecta y analiza archivos mbox y pst/ost y agrega artefactos de correo electronico en el tablero. +ThunderbirdMboxFileIngestModule.handleAttch.errMsg=Error al procesar {0} +ThunderbirdMboxFileIngestModule.handleAttch.errMsg.details=Error al agregar el adjunto llamado {0} al caso. +ThunderbirdMboxFileIngestModule.notAvail=No disponible +ThunderbirdMboxFileIngestModule.processPst.indexError.message=Error al indexar el artefacto detectado de cifrado para la busqueda por palabras clave. +VcardParser.addContactArtifact.indexError=Error al indexar el artefacto de contacto para la busqueda por palabras clave. diff --git a/unix_setup.sh b/unix_setup.sh index 08448cadf8..d2572c9de2 100644 --- a/unix_setup.sh +++ b/unix_setup.sh @@ -41,13 +41,8 @@ pushd $SCRIPTPATH # Verify PhotoRec was installed echo -n "Checking for PhotoRec..." -photorec_filepath=/usr/bin/photorec -photorec_osx_filepath=/usr/local/bin/photorec -if [ -f "$photorec_filepath" ]; then - echo "found in $(dirname $photorec_filepath)" -elif [ -f "$photorec_osx_filepath" ]; then - echo "found in $(dirname $photorec_osx_filepath)" -else +if ! command -v photorec &> /dev/null +then echo "ERROR: PhotoRec not found, please install the testdisk package." exit 1 fi @@ -78,14 +73,17 @@ fi # Verify Sleuth Kit Java was installed echo -n "Checking for Sleuth Kit Java bindings..." -if [ -f "/usr/share/java/sleuthkit-$TSK_VERSION.jar" ]; then +if [ -n $TSK_JAVA_LIB_PATH ] && [ -f "$TSK_JAVA_LIB_PATH/sleuthkit-$TSK_VERSION.jar" ]; then + sleuthkit_jar_filepath=$TSK_JAVA_LIB_PATH/sleuthkit-$TSK_VERSION.jar + echo "found in $(dirname $sleuthkit_jar_filepath)" +elif [ -f "/usr/share/java/sleuthkit-$TSK_VERSION.jar" ]; then sleuthkit_jar_filepath=/usr/share/java/sleuthkit-$TSK_VERSION.jar echo "found in $(dirname $sleuthkit_jar_filepath)" elif [ -f "/usr/local/share/java/sleuthkit-$TSK_VERSION.jar" ]; then sleuthkit_jar_filepath=/usr/local/share/java/sleuthkit-$TSK_VERSION.jar echo "found in $(dirname $sleuthkit_jar_filepath)" else - echo "ERROR: sleuthkit-$TSK_VERSION.jar not found in /usr/share/java/ or /usr/local/share/java/." + echo "ERROR: sleuthkit-$TSK_VERSION.jar not found in /usr/share/java/, /usr/local/share/java/, or the environment variable: 'TSK_JAVA_LIB_PATH': \"$TSK_JAVA_LIB_PATH\"." echo "Please install the Sleuth Kit Java bindings file." echo "See https://github.com/sleuthkit/sleuthkit/releases." exit 1 @@ -109,14 +107,14 @@ else fi # make sure thirdparty files are executable -chmod u+x autopsy/markmckinnon/Export* -chmod u+x autopsy/markmckinnon/parse* +chmod a+x autopsy/markmckinnon/Export* +chmod a+x autopsy/markmckinnon/parse* # allow solr dependencies to execute -chmod -R u+x autopsy/solr/bin +chmod -R a+x autopsy/solr/bin # make sure it is executable -chmod u+x bin/$APPLICATION_NAME +chmod a+x bin/$APPLICATION_NAME popd