Merge branch 'release-4.20.0' into develop

This commit is contained in:
Brian Carrier 2023-01-25 10:01:53 -05:00
commit c148f615c5
22 changed files with 780 additions and 897 deletions

View File

@ -247,15 +247,10 @@ AddImageWizardIngestConfigPanel.dsProcDone.errs.text=*Errors encountered in addi
AddImageWizardIngestConfigVisual.getName.text=Configure Ingest
AddImageWizardIterator.stepXofN=Step {0} of {1}
AddLocalFilesTask.localFileAdd.progress.text=Adding: {0}/{1}
Case.getCurCase.exception.noneOpen=Cannot get the current case; there is no case open\!
Case.getCurCase.exception.noneOpen=Cannot get the current case; there is no case open!
Case.open.msgDlg.updated.msg=Updated case database schema.\nA backup copy of the database with the following path has been made:\n {0}
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\
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.msg=One of the images associated with \nthis case are missing. Would you like to search for them now?\nPreviously, the image was located at:\n{0}\nPlease note that you will still be able to browse directories and generate reports\nif 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
Case.addImg.exception.msg=Error adding image to the case
Case.updateCaseName.exception.msg=Error while trying to update the case name.
@ -274,12 +269,9 @@ Case.GetCaseTypeGivenPath.Failure=Unable to get case type
Case.metaDataFileCorrupt.exception.msg=The case metadata file (.aut) is corrupted.
Case.deleteReports.deleteFromDiskException.log.msg=Unable to delete the report from the disk.
Case.deleteReports.deleteFromDiskException.msg=Unable to delete the report {0} from the disk.\nYou may manually delete it from {1}
CaseDeleteAction.closeConfMsg.text=Are you sure want to close and delete this case? \n\
Case Name: {0}\n\
Case Directory: {1}
CaseDeleteAction.closeConfMsg.text=Are you sure want to close and delete this case? \nCase Name: {0}\nCase Directory: {1}
CaseDeleteAction.closeConfMsg.title=Warning: Closing the Current Case
CaseDeleteAction.msgDlg.fileInUse.msg=The delete action cannot be fully completed because the folder or file in it is open by another program.\n\n\
Close the folder and file and try again or you can delete the case manually.
CaseDeleteAction.msgDlg.fileInUse.msg=The delete action cannot be fully completed because the folder or file in it is open by another program.\n\nClose the folder and file and try again or you can delete the case manually.
CaseDeleteAction.msgDlg.fileInUse.title=Error: Folder In Use
CaseDeleteAction.msgDlg.caseDelete.msg=Case {0} has been deleted.
CaseOpenAction.autFilter.title={0} Case File ( {1})
@ -311,8 +303,7 @@ NewCaseWizardAction.databaseProblem1.text=Cannot open database. Cancelling case
NewCaseWizardAction.databaseProblem2.text=Error
NewCaseWizardPanel1.validate.errMsg.invalidSymbols=The Case Name cannot contain any of the following symbols: \\ / : * ? " < > |
NewCaseWizardPanel1.validate.errMsg.dirExists=Case directory ''{0}'' already exists.
NewCaseWizardPanel1.validate.confMsg.createDir.msg=The base directory "{0}" does not exist. \n\n\
Do you want to create that directory?
NewCaseWizardPanel1.validate.confMsg.createDir.msg=The base directory "{0}" does not exist. \n\nDo you want to create that directory?
NewCaseWizardPanel1.validate.confMsg.createDir.title=Create directory
NewCaseWizardPanel1.validate.errMsg.cantCreateParDir.msg=Error: Could not create case parent directory {0}
NewCaseWizardPanel1.validate.errMsg.prevCreateBaseDir.msg=Prevented from creating base directory {0}
@ -369,8 +360,8 @@ UnpackageWorker.doInBackground.previouslySeenCase=Case has been previously opene
UpdateRecentCases.menuItem.clearRecentCases.text=Clear Recent Cases
UpdateRecentCases.menuItem.empty=-Empty-
AddImageWizardIngestConfigPanel.CANCEL_BUTTON.text=Cancel
NewCaseVisualPanel1.CaseFolderOnCDriveError.text=Warning: Path to multi-user case folder is on \"C:\" drive
NewCaseVisualPanel1.CaseFolderOnInternalDriveWindowsError.text=Warning: Path to case folder is on \"C:\" drive. Case folder is created on the target system
NewCaseVisualPanel1.CaseFolderOnCDriveError.text=Warning: Path to multi-user case folder is on "C:" drive
NewCaseVisualPanel1.CaseFolderOnInternalDriveWindowsError.text=Warning: Path to case folder is on "C:" drive. Case folder is created on the target system
NewCaseVisualPanel1.CaseFolderOnInternalDriveLinuxError.text=Warning: Path to case folder is on the target system. Create case folder in mounted drive.
NewCaseVisualPanel1.uncPath.error=Error: UNC paths are not allowed for Single-User cases
CollaborationMonitor.addingDataSourceStatus.msg={0} adding data source
@ -378,7 +369,7 @@ CollaborationMonitor.analyzingDataSourceStatus.msg={0} analyzing {1}
MissingImageDialog.lbWarning.text=
MissingImageDialog.lbWarning.toolTipText=
NewCaseVisualPanel1.caseParentDirWarningLabel.text=
NewCaseVisualPanel1.multiUserCaseRadioButton.text=Multi-User
NewCaseVisualPanel1.multiUserCaseRadioButton.text=Multi-User\t\t
NewCaseVisualPanel1.singleUserCaseRadioButton.text=Single-User
NewCaseVisualPanel1.caseTypeLabel.text=Case Type:
SingleUserCaseConverter.BadDatabaseFileName=Database file does not exist!

View File

@ -5,10 +5,7 @@ CentralRepoCommentDialog.title.addEditCentralRepoComment=Add/Edit Central Reposi
OpenIDE-Module-Name=Central Repository
OpenIDE-Module-Display-Category=Ingest Module
OpenIDE-Module-Short-Description=Central Repository Ingest Module
OpenIDE-Module-Long-Description=\
Central Repository ingest module and central database. \n\n\
The Central Repository ingest module stores attributes of artifacts matching selected correlation types into a central database.\n\
Stored attributes are used in future cases to correlate and analyzes files and artifacts during ingest.
OpenIDE-Module-Long-Description=Central Repository ingest module and central database. \n\nThe Central Repository ingest module stores attributes of artifacts matching selected correlation types into a central database.\nStored attributes are used in future cases to correlate and analyzes files and artifacts during ingest.
CentralRepoCommentDialog.commentLabel.text=Comment:
CentralRepoCommentDialog.okButton.text=&OK
CentralRepoCommentDialog.cancelButton.text=C&ancel

View File

@ -402,44 +402,29 @@ viewer.menu.help.about.label = About ICEpdf viewer...
## General error dialog
viewer.dialog.error.exception.title=ICEsoft ICEpdf - Exception
viewer.dialog.error.exception.msg = \
There was an error executing your command do to the following exception\n\
{0}.
viewer.dialog.error.exception.msg=There was an error executing your command do to the following exception\n{0}.
## Open File Dialog
viewer.dialog.openFile.title=Open File
viewer.dialog.openFile.error.title=ICEsoft ICEpdf - Open File Error
viewer.dialog.openFile.error.msg = \
ICEpdf could not open the specified file at {0}\n\
The file may be corrupt or not a supported file type.
viewer.dialog.openFile.error.msg=ICEpdf could not open the specified file at {0}\nThe file may be corrupt or not a supported file type.
viewer.dialog.openDocument.pdfException.title=ICEsoft ICEpdf - PDF Exception
viewer.dialog.openDocument.pdfException.msg = \
ICEpdf could not open the specified file {0} \n\
The file may be corrupt or not a supported file type.
viewer.dialog.openDocument.pdfException.msg=ICEpdf could not open the specified file {0} \nThe file may be corrupt or not a supported file type.
viewer.dialog.openDocument.pdfSecurityException.title=ICEsoft ICEpdf - PDF Security Exception
viewer.dialog.openDocument.pdfSecurityException.msg = \
ICEpdf could not open the encrypted file at {0}\n\
This may be the result of an invalid password or a missing JCE Security Provider.\n\n\
Please refer to ICEpdf Developer's Guide for more information.
viewer.dialog.openDocument.pdfSecurityException.msg=ICEpdf could not open the encrypted file at {0}\nThis may be the result of an invalid password or a missing JCE Security Provider.\n\nPlease refer to ICEpdf Developer's Guide for more information.
viewer.dialog.openDocument.exception.title=ICEsoft ICEpdf - Exception
viewer.dialog.openDocument.exception.msg = \
ICEpdf could not open the specified file at {0}\n\
The file may be corrupt or not a supported file type.
viewer.dialog.openDocument.exception.msg=ICEpdf could not open the specified file at {0}\nThe file may be corrupt or not a supported file type.
viewer.dialog.openURL.exception.title=ICEsoft ICEpdf - URL Exception
viewer.dialog.openURL.exception.msg = \
ICEpdf could not open the specified file. {0} \n\
at URL: {1}
viewer.dialog.openURL.exception.msg=ICEpdf could not open the specified file. {0} \nat URL: {1}
viewer.dialog.openURL.downloading.msg=Downloading {0}
## General error dialog
viewer.dialog.information.copyAll.title=ICEsoft ICEpdf - Information
viewer.dialog.information.copyAll.msg = \
The document has more than {0} pages, please use\n\
"Export text..." to extract document text.
viewer.dialog.information.copyAll.msg=The document has more than {0} pages, please use\n"Export text..." to extract document text.
## Open URL Dialog
viewer.dialog.security.title=Document Security
@ -457,13 +442,11 @@ viewer.dialog.openURL.title = Open URL
### Save a Copy Dialog
viewer.dialog.saveAs.title=Save As
viewer.dialog.saveAs.extensionError.title=ICEsoft ICEpdf - Save Error
viewer.dialog.saveAs.extensionError.msg = \
ICEpdf could not save to {0} because it is not a supported file type.
viewer.dialog.saveAs.extensionError.msg=ICEpdf could not save to {0} because it is not a supported file type.
viewer.dialog.saveAs.noExtensionError.title=ICEsoft ICEpdf - Save Error
viewer.dialog.saveAs.noExtensionError.msg=Please specify a file extension.
viewer.dialog.saveAs.noneUniqueName.title=ICEsoft ICEpdf - Save Error
viewer.dialog.saveAs.noneUniqueName.msg = \
The file named {0} already exists. Please specify a unique name.
viewer.dialog.saveAs.noneUniqueName.msg=The file named {0} already exists. Please specify a unique name.
viewer.dialog.saveAs.noPermission.title=ICEpdf Viewer RI - Save Error
viewer.dialog.saveAs.noPermission.msg=You do not have permission or the credentials to save this document.
viewer.dialog.saveAs.noUpdates.title=ICEpdf Viewer RI
@ -480,25 +463,19 @@ viewer.dialog.exportText.noExtensionError.msg = Please specify a file extension.
viewer.exportText.fileStamp.msg=ICEsoft ICEpdf Viewer, (c) ICEsoft Technologies, Inc.
viewer.exportText.pageStamp.msg=<!----- Page {0} Text ---->
# Completed x out of y page(s).
viewer.exportText.fileStamp.progress.msg = \
Completed {0} out of {1}.
viewer.exportText.fileStamp.progress.msg=Completed {0} out of {1}.
viewer.exportText.fileStamp.progress.oneFile.msg={2} page
viewer.exportText.fileStamp.progress.moreFile.msg={2} pages
## Export SVG Dialog
viewer.dialog.exportSVG.title=Export to SVG
viewer.dialog.exportSVG.status.exporting.msg=Exporting page {0} to SVG file {1} ...
viewer.dialog.exportSVG.status.error.msg = \
Problem exporting page {0} to SVG file {1} : {2}
viewer.dialog.exportSVG.status.finished.msg = \
Finished exporting page {0} to SVG file {1}
viewer.dialog.exportSVG.status.error.msg=Problem exporting page {0} to SVG file {1} : {2}
viewer.dialog.exportSVG.status.finished.msg=Finished exporting page {0} to SVG file {1}
viewer.dialog.exportSVG.noExtensionError.title=ICEsoft ICEpdf - SVG Error
viewer.dialog.exportSVG.noExtensionError.msg=Please specify a file extension.
viewer.dialog.exportSVG.exportError.title=ICEsoft ICEpdf - SVG Error
viewer.dialog.exportSVG.exportError.msg = \
ICEpdf could not export to {0} \n\
becuase it is either not a supported file type or \n\
because the file has been corrupted.
viewer.dialog.exportSVG.exportError.msg=ICEpdf could not export to {0} \nbecuase it is either not a supported file type or \nbecause the file has been corrupted.
# Printing Progress bar
viewer.dialog.printing.status.progress.msg=Page {0} of {1}
@ -547,10 +524,7 @@ viewer.dialog.goToPage.description.label = Page Number
## About Dialog
viewer.dialog.about.title=About ICEpdf Viewer
viewer.dialog.about.pageNumber.label = \n\
\n\
Check the ICEpdf web site for the latest news:\n\
http://www.icepdf.org/ \n\n
viewer.dialog.about.pageNumber.label=\n\nCheck the ICEpdf web site for the latest news:\nhttp://www.icepdf.org/ \n\n
## Font Properties Dialog
viewer.dialog.fonts.title=Document Font Properties
@ -575,8 +549,7 @@ viewer.utilityPane.attachments.column.size.title = Size
viewer.utilityPane.attachments.column.compressedSize.title=Compressed size
viewer.utilityPane.attachments.menu.saveAs.label=Save As...
viewer.utilityPane.attachments.saveAs.replace.title=ICEsoft ICEpdf - Save Error
viewer.utilityPane.attachments.saveAs.replace.msg = \
The file named {0} already exists. Do you want to replace It?
viewer.utilityPane.attachments.saveAs.replace.msg=The file named {0} already exists. Do you want to replace It?
## Utility Pane Thumbnails
viewer.utilityPane.thumbs.tab.title=Thumbnails
@ -586,25 +559,20 @@ viewer.utilityPane.layers.tab.title = Layers
## Signature Pane
viewer.utilityPane.signatures.tab.title=Signatures
viewer.utilityPane.signatures.tab.certTree.error.label = \
Unsigned Signature Fields Signer certificate could not be validated {0} {1}
viewer.utilityPane.signatures.tab.certTree.error.label=Unsigned Signature Fields Signer certificate could not be validated {0} {1}
viewer.utilityPane.signatures.tab.certTree.rootSigned.label=Signed by {0} {1}
viewer.utilityPane.signatures.tab.certTree.rootValidating.label=Validating signature {0} {1}
viewer.utilityPane.signatures.tab.certTree.cert.invalid.label=Signature is invalid:
viewer.utilityPane.signatures.tab.certTree.cert.unknown.label=Signature is valid:
viewer.utilityPane.signatures.tab.certTree.cert.valid.label=Signature validity is unknown:
viewer.utilityPane.signatures.tab.certTree.doc.modified.label = \
This version of the document is unaltered but subsequent changes have been made
viewer.utilityPane.signatures.tab.certTree.doc.modified.label=This version of the document is unaltered but subsequent changes have been made
viewer.utilityPane.signatures.tab.certTree.doc.unmodified.label=Document has not been modified since it was signed
viewer.utilityPane.signatures.tab.certTree.doc.major.label=Document has been altered or corrupted since it was signed
viewer.utilityPane.signatures.tab.certTree.signature.identity.unknown.label = \
Signer's identity is unknown because it could not be found in your keystore
viewer.utilityPane.signatures.tab.certTree.signature.identity.unchecked.label = \
Signature is valid, but revocation of the signer's identity could not be checked
viewer.utilityPane.signatures.tab.certTree.signature.identity.unknown.label=Signer's identity is unknown because it could not be found in your keystore
viewer.utilityPane.signatures.tab.certTree.signature.identity.unchecked.label=Signature is valid, but revocation of the signer's identity could not be checked
viewer.utilityPane.signatures.tab.certTree.signature.identity.valid.label=Signer's identity is valid
viewer.utilityPane.signatures.tab.certTree.signature.time.local.label=Signing time is from the clock on this signer's computer
viewer.utilityPane.signatures.tab.certTree.signature.time.embedded.label = \
Signature included an embedded timestamp but it could not be validated
viewer.utilityPane.signatures.tab.certTree.signature.time.embedded.label=Signature included an embedded timestamp but it could not be validated
viewer.utilityPane.signatures.tab.certTree.signature.details.label=Signature Details
viewer.utilityPane.signatures.tab.certTree.signature.details.reason.label=Reason: {0}
viewer.utilityPane.signatures.tab.certTree.signature.details.location.label=Location: {0}
@ -629,13 +597,11 @@ viewer.utilityPane.signatures.cert.dialog.info.serialNumber.value = {0}
viewer.utilityPane.signatures.cert.dialog.info.signatureAlgorithm.label=Signature Algorithm
viewer.utilityPane.signatures.cert.dialog.info.signatureAlgorithm.value={0}
viewer.utilityPane.signatures.cert.dialog.info.issuer.label=Issuer
viewer.utilityPane.signatures.cert.dialog.info.issuer.value = \
Organization: {0} \nOrganization Unit: {1} \nCommon Name: {2} \nLocal: {3} \nState: {4} \nCountry: {5} \nEmail: {6}
viewer.utilityPane.signatures.cert.dialog.info.issuer.value=Organization: {0} \nOrganization Unit: {1} \nCommon Name: {2} \nLocal: {3} \nState: {4} \nCountry: {5} \nEmail: {6}
viewer.utilityPane.signatures.cert.dialog.info.validity.label=Validity
viewer.utilityPane.signatures.cert.dialog.info.validity.value=From: {0}\n To: {1}
viewer.utilityPane.signatures.cert.dialog.info.subject.label=Subject
viewer.utilityPane.signatures.cert.dialog.info.subject.value = \
Organization: {0} \nOrganization Unit: {1} \nCommon Name: {2} \nLocal: {3} \nState: {4} \nCountry: {5} \nEmail: {6}
viewer.utilityPane.signatures.cert.dialog.info.subject.value=Organization: {0} \nOrganization Unit: {1} \nCommon Name: {2} \nLocal: {3} \nState: {4} \nCountry: {5} \nEmail: {6}
viewer.utilityPane.signatures.cert.dialog.info.signature.label=Signature
viewer.utilityPane.signatures.cert.dialog.info.md5.label=MD5 Fingerprint
viewer.utilityPane.signatures.cert.dialog.info.md5.value={0}
@ -847,8 +813,7 @@ viewer.utilityPane.search.showPagesCheckbox.label = Show Pages
viewer.utilityPane.search.stopButton.label=Stop
viewer.utilityPane.search.searching.msg=Search...
# Searching x out of y page(s)
viewer.utilityPane.search.searching1.msg = \
Searching {0} out of {1}
viewer.utilityPane.search.searching1.msg=Searching {0} out of {1}
viewer.utilityPane.search.searching1.oneFile.msg={2} page
viewer.utilityPane.search.searching1.moreFile.msg={2} pages
# Page x (y result(s))
@ -856,8 +821,7 @@ viewer.utilityPane.search.result.msg = Page {0} ({1})
viewer.utilityPane.search.result.oneFile.msg={2} result
viewer.utilityPane.search.result.moreFile.msg={2} results
# Searched x page(s) (y matches)
viewer.utilityPane.search.progress.msg = \
Searched {0} {1} ({2})
viewer.utilityPane.search.progress.msg=Searched {0} {1} ({2})
viewer.utilityPane.search.progress.onePage.msg=page
viewer.utilityPane.search.progress.morePage.msg=pages
viewer.utilityPane.search.progress.oneMatch.msg={2} match
@ -901,18 +865,14 @@ viewer.annotation.signature.validation.common.invalid.label = Signature is inval
viewer.annotation.signature.validation.common.unknown.label=Signature is valid:
viewer.annotation.signature.validation.common.valid.label=Signature validity is unknown:
viewer.annotation.signature.validation.common.signedBy.label=- Signed by {0} {1}
viewer.annotation.signature.validation.common.doc.modified.label = \
- This version of the document is unaltered but subsequent changes have been made
viewer.annotation.signature.validation.common.doc.modified.label=- This version of the document is unaltered but subsequent changes have been made
viewer.annotation.signature.validation.common.doc.unmodified.label=- Document has not been modified since it was signed
viewer.annotation.signature.validation.common.doc.major.label=- Document has been altered or corrupted since it was signed
viewer.annotation.signature.validation.common.identity.unknown.label = \
- Signer's identity is unknown because it could not be found in your keystore
viewer.annotation.signature.validation.common.identity.unchecked.label = \
- Signature is valid, but revocation of the signer's identity could not be checked
viewer.annotation.signature.validation.common.identity.unknown.label=- Signer's identity is unknown because it could not be found in your keystore
viewer.annotation.signature.validation.common.identity.unchecked.label=- Signature is valid, but revocation of the signer's identity could not be checked
viewer.annotation.signature.validation.common.identity.valid.label=- Signer's identity is valid
viewer.annotation.signature.validation.common.time.local.label=- Signing time is from the clock on this signer's computer
viewer.annotation.signature.validation.common.time.embedded.label = \
- Signature included an embedded timestamp but it could not be validated
viewer.annotation.signature.validation.common.time.embedded.label=- Signature included an embedded timestamp but it could not be validated
viewer.annotation.signature.validation.common.notAvailable.label=N/A
## Signatures properties Dialog.
@ -945,16 +905,14 @@ pilot.title = ICEbrowser - ICEpdf Pilot Errror
pilot.loading.msg=Opening document {0} ...
pilot.display.msg=Displaying {0}
pilot.loading.error.msg=PDF Pilot: Failed to load {0}.
pilot.error.classLoading = Required class {0} not found. Required library \
'icepdf.jar' may not be on the classpath - PDF Pilot disabled.";
pilot.error.classLoading=Required class {0} not found. Required library 'icepdf.jar' may not be on the classpath - PDF Pilot disabled.";
###
# General Error Messages
# Command Line Errors
viewer.commandLin.error = \
Usage: java org.icepdf.ri.viewer.Main [-loadfile <value>] [-loadurl <value>]
viewer.commandLin.error=Usage: java org.icepdf.ri.viewer.Main [-loadfile <value>] [-loadurl <value>]
# Launcher errors
viewer.launcher.URLError.dialog.title=ICEsoft ICEpdf
viewer.launcher.URLError.dialog.message=ICEpdf could not open the specified file. {0} at URL: {1}.
@ -975,40 +933,21 @@ parse.laf = Warning : look-and-feel {0} is not supported.
manager.properties.title=ICEpdf Properties Manager
fontManager.properties.title=ICEpdf Font Manager
manager.properties.createNewDirectory = \
To create the directory {0},\n\
where the ICEpdf Viewer will store changes to its setup, click Yes.\n\n\
If you click "No", all changes you make to the ICEpdf Viewer setup\n\
will be lost when you quit the application. \n\n
manager.properties.createNewDirectory=To create the directory {0},\nwhere the ICEpdf Viewer will store changes to its setup, click Yes.\n\nIf you click "No", all changes you make to the ICEpdf Viewer setup\nwill be lost when you quit the application. \n\n
manager.properties.failedCreation = \
ICEpdf Viewer directory to store user data can not be created:\n\
{0}\n\
ICEpdf Viewer will not save changes to its default setup.
manager.properties.failedCreation=ICEpdf Viewer directory to store user data can not be created:\n{0}\nICEpdf Viewer will not save changes to its default setup.
manager.properties.session.nolock = \
Error creating the lock file :\n\
{0}\n
manager.properties.session.nolock=Error creating the lock file :\n{0}\n
manager.properties.session.readError = \
Error loading properties file: \n\
{0}
manager.properties.session.readError=Error loading properties file: \n{0}
manager.properties.deleted = Property file has been deleted\n\
({0})\n\
Recreate it ?
manager.properties.deleted=Property file has been deleted\n({0})\nRecreate it ?
manager.properties.modified = Property file has been modified since last update\n\
({0,date,long})\n\
Would you like to merge changes in the file with the current properties?
manager.properties.modified=Property file has been modified since last update\n({0,date,long})\nWould you like to merge changes in the file with the current properties?
manager.properties.saveError = Impossible to save property file.\n\
Encountered the folowing error :\n\
{0}
manager.properties.saveError=Impossible to save property file.\nEncountered the folowing error :\n{0}
manager.properties.lafError =\
Look&Feel {0} given in the default properties is unsupported.\n\
Using system default.
manager.properties.lafError=Look&Feel {0} given in the default properties is unsupported.\nUsing system default.
manager.properties.brokenProperty=Broken default property {0} value: {1}

View File

@ -24,6 +24,7 @@ import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionRegistration;
import org.openide.util.NbBundle;
import org.openide.util.NbBundle.Messages;
@ -32,6 +33,7 @@ import org.openide.util.NbBundle.Messages;
* menu.
*/
@ActionID(id = "org.sleuthkit.autopsy.corecomponents.AboutWindowAction", category = "Help")
@ActionRegistration(displayName = "#CTL_CustomAboutAction", iconInMenu = true, lazy = false)
@ActionReference(path = "Menu/Help", position = 3000, separatorBefore = 2999)
public class AboutWindowAction extends AboutAction {

View File

@ -1,3 +1,4 @@
CTL_CustomAboutAction=About
CTL_DataContentAction=DataContent
CTL_DataContentTopComponent=Data Content
OptionsCategory_Name_General=Application

View File

@ -61,10 +61,7 @@ ImportCentralRepoDbProgressDialog.errorParsingFile.message=Error parsing hash se
ImportCentralRepoDbProgressDialog.linesProcessed.message=\ hashes processed
ImportCentralRepoDbProgressDialog.title.text=Central Repository Import Progress
OpenIDE-Module-Display-Category=Ingest Module
OpenIDE-Module-Long-Description=\
Hash Set ingest module. \n\n\
The ingest module analyzes files in the disk image and marks them as "known" (based on NSRL hashset lookup for "known" files) and "bad / interesting" (based on one or more hash sets supplied by the user).\n\n\
The module also contains additional non-ingest tools that are integrated in the GUI, such as file lookup by hash and hash set configuration.
OpenIDE-Module-Long-Description=Hash Set ingest module. \n\nThe ingest module analyzes files in the disk image and marks them as "known" (based on NSRL hashset lookup for "known" files) and "bad / interesting" (based on one or more hash sets supplied by the user).\n\nThe module also contains additional non-ingest tools that are integrated in the GUI, such as file lookup by hash and hash set configuration.
OpenIDE-Module-Name=HashDatabases
OptionsCategory_Name_HashDatabase=Hash Sets
OptionsCategory_Keywords_HashDatabase=Hash Sets
@ -191,10 +188,7 @@ HashDbSearchThread.name.searching=Searching
HashDbSearchThread.noMoreFilesWithMD5Msg=No other files with the same MD5 hash were found.
ModalNoButtons.indexingDbsTitle=Indexing hash sets
ModalNoButtons.indexingDbTitle=Indexing hash set
ModalNoButtons.exitHashDbIndexingMsg=You are about to exit out of indexing your hash sets. \n\
The generated index will be left unusable. If you choose to continue,\n\
please delete the corresponding -md5.idx file in the hash folder.\n\
Exit indexing?
ModalNoButtons.exitHashDbIndexingMsg=You are about to exit out of indexing your hash sets. \nThe generated index will be left unusable. If you choose to continue,\nplease delete the corresponding -md5.idx file in the hash folder.\nExit indexing?
ModalNoButtons.dlgTitle.unfinishedIndexing=Unfinished Indexing
ModalNoButtons.indexThis.currentlyIndexing1Db=Currently indexing 1 hash set
ModalNoButtons.indexThese.currentlyIndexing1OfNDbs=Currently indexing 1 of {0}

View File

@ -123,8 +123,8 @@ FilesSetRulePanel.nameTextField.text=
FilesSetRulePanel.ruleNameLabel.text=Rule Name (Optional):
FilesSetRulePanel.messages.emptyNameCondition=You must specify a name pattern for this rule.
FilesSetRulePanel.messages.invalidNameRegex=The name regular expression is not valid:\n\n{0}
FilesSetRulePanel.messages.invalidCharInName=The name cannot contain \\, /, :, *, ?, \", <, or > unless it is a regular expression.
FilesSetRulePanel.messages.invalidCharInPath=The path cannot contain \\, :, *, ?, \", <, or > unless it is a regular expression.
FilesSetRulePanel.messages.invalidCharInName=The name cannot contain \\, /, :, *, ?, ", <, or > unless it is a regular expression.
FilesSetRulePanel.messages.invalidCharInPath=The path cannot contain \\, :, *, ?, ", <, or > unless it is a regular expression.
FilesSetRulePanel.messages.invalidPathRegex=The path regular expression is not valid:\n\n{0}
FilesSetDefsPanel.doFileSetsDialog.duplicateRuleSet.text=Rule set with name {0} already exists.
FilesSetRulePanel.pathSeparatorInfoLabel.text=Folder must be in parent path. Use '/' to give consecutive names

View File

@ -24,7 +24,7 @@ PhotoRecIngestModule.complete.totalParsetime=Total Parsing Time:
PhotoRecIngestModule.complete.photoRecResults=PhotoRec Results
PhotoRecIngestModule.NotEnoughDiskSpace.detail.msg=PhotoRec error processing {0} with {1} Not enough space on primary disk to save unallocated space.
PhotoRecIngestModule.cancelledByUser=PhotoRec cancelled by user.
PhotoRecIngestModule.error.exitValue=PhotoRec carver returned error exit value \= {0} when scanning {1}
PhotoRecIngestModule.error.exitValue=PhotoRec carver returned error exit value = {0} when scanning {1}
PhotoRecIngestModule.error.msg=Error processing {0} with PhotoRec carver.
PhotoRecIngestModule.complete.numberOfErrors=Number of Errors while Carving:
PhotoRecCarverIngestJobSettingsPanel.detectionSettingsLabel.text=PhotoRec Settings

View File

@ -9,6 +9,21 @@ PortableCaseTagsListPanel.error.noOpenCase=There is no case open
ReportGenerator.artTableColHdr.comment=Comment
ReportGenerator.errList.failedGetBBArtifactTags=Failed to get result tags.
ReportGenerator.errList.noOpenCase=No open case available.
# {0} - report module name
ReportGenerator.error.exception=Exception while running report module {0}
# {0} - report module name
ReportGenerator.error.invalidSettings=Invalid settings for report module {0}
# {0} - report module name
ReportGenerator.error.moduleNotFound=Report module {0} not found
# {0} - report module name
ReportGenerator.error.noFileReportSettings=No file report settings for report module {0}
ReportGenerator.error.noReportModules=No report modules found
# {0} - report module name
ReportGenerator.error.noTableReportSettings=No table report settings for report module {0}
# {0} - report configuration name
ReportGenerator.error.unableToLoadConfig=Unable to load reporting configuration {0}.
# {0} - report module name
ReportGenerator.error.unsupportedType=Report module {0} has unsupported report module type
ReportGenerator.tagTable.header.userName=User Name
ReportProgressIndicator.cancelledMessage=Report generation cancelled
ReportProgressIndicator.completedMessage=Report generation completed

View File

@ -5,8 +5,8 @@ ReportHTML.getName.text=HTML Report
ReportHTML.getDesc.text=A report about results and tagged items in HTML format.
ReportHTML.writeIndex.title=for case {0}
ReportHTML.writeIndex.noFrames.msg=Your browser is not compatible with our frame setup.
ReportHTML.writeIndex.noFrames.seeNav=Please see <a href\="content\nav.html">the navigation page</a> for artifact links,
ReportHTML.writeIndex.seeSum=and <a href\="content\summary.html">the summary page</a> for a case summary.
ReportHTML.writeIndex.noFrames.seeNav=Please see <a href="content\nav.html">the navigation page</a> for artifact links,
ReportHTML.writeIndex.seeSum=and <a href="contentsummary.html">the summary page</a> for a case summary.
ReportHTML.writeNav.title=Report Navigation
ReportHTML.writeNav.h1=Report Navigation
ReportHTML.writeNav.summary=Case Summary
@ -16,7 +16,7 @@ ReportHTML.writeSum.caseNumber=Case Number:
ReportHTML.writeSum.caseNumImages=Number of data sources in case:
ReportHTML.writeSum.examiner=Examiner:
ReportHTML.writeSum.title=Case Summary
ReportHTML.writeSum.warningMsg=<span>Warning, this report was run before ingest services completed\!</span>
ReportHTML.writeSum.warningMsg=<span>Warning, this report was run before ingest services completed!</span>
#
# 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

View File

@ -371,7 +371,6 @@ SolrSearchService.exceptionMessage.noCurrentSolrCore=IndexMetadata did not conta
SolrSearchService.exceptionMessage.noIndexMetadata=Unable to create IndexMetaData from case directory: {0}
# {0} - collection name
SolrSearchService.exceptionMessage.unableToDeleteCollection=Unable to delete collection {0}
SolrSearchService.indexingError=Unable to index blackboard artifact.
SolrSearchService.ServiceName=Solr Keyword Search Service
SolrSearchService.DeleteDataSource.msg=Error Deleting Solr data for data source id {0}
DropdownSingleTermSearchPanel.dataSourceCheckBox.text=Restrict search to the selected data sources:

View File

@ -1,3 +1,52 @@
---------------- VERSION 4.20.0 --------------
Recent Activity Updates:
- Added Favicons, Profiles and Extensions to Chromium Browsers
- Added Security Questions/Answers from SAM registry Hive
Data Source Processing
- Added Jython Support for Data Source Processor modules.
- Added example Python DSP plugin
Ingest Pipelines
- Added new DataArtifact ingest pipeline that artifacts will go down.
- Moved Keyword search functionality for artifacts to the new pipeline.
Linux / Mac Improvements
- Script to install prerequisites using Homebrew and Debian package.
- Script that allows you to install TSK from source
- Script that sets JAVA home per install
- Updating Linux and Mac Installation Documentation
Command Line Interface
- Simplified command line input parameters
- The -listAllIngestProfiles switch was added
- The -nogui switch now works.
- Return codes now reflect if the application failed
Bug Fixes:
- Solr 8.11.2 Upgrade which includes update to Log4j to version 2.17.1
- Change Timezone format for Plaso output.
- Regex fix for Mbox parsing.
- Portable Case report string index out of range -1 fixed
- Extracting files, numbering of files and overwriting of files.
- Image tagging
- Joda-Time updated from 2.4 to 2.10 - fixes certain timezone errors
Misc:
- Update to USB id's.
- Update Tesseract to 4.10.
- Moved configuration settings to separate ones that are machine-dependent.
- Interesting files and file filters can now exclude certain features, such as folders.
- Adds host to artifact content viewer.
- When an OS Account is selected the Other Occurrences tab will no longer show the open case in the case list.
- The Communication window Message Viewer Threads panel layout was cleaned up so that the buttons are visible despite the subject length.
- Limit ingest inbox messages to first 20 keyword hits
- GStreamer update to version 1.20.0
- libheif v1.12.0 replaces ImageMagick
- Removal of 32bit version of Autopsy
---------------- VERSION 4.19.3 --------------
Bug Fixes:
- Updates for log4j vulnerabilities.

View File

@ -4,10 +4,15 @@ cannotParseXml=Unable to parse XML file:
ChromeCacheExtract_adding_artifacts_msg=Chrome Cache: Adding %d artifacts for analysis.
ChromeCacheExtract_adding_extracted_files_msg=Chrome Cache: Adding %d extracted files for analysis.
ChromeCacheExtract_loading_files_msg=Chrome Cache: Loading files from %s.
# {0} - module name
# {1} - row number
# {2} - table length
# {3} - cache path
ChromeCacheExtractor.progressMsg={0}: Extracting cache entry {1} of {2} entries from {3}
DataSourceUsage_AndroidMedia=Android Media Card
DataSourceUsage_DJU_Drone_DAT=DJI Internal SD Card
DataSourceUsage_FlashDrive=Flash Drive
# {0} - OS name
DataSourceUsageAnalyzer.customVolume.label=OS Drive ({0})
DataSourceUsageAnalyzer.displayName=Data Source Usage Analyzer
DefaultPriorityDomainCategorizer_searchEngineCategory=Search Engine
@ -21,6 +26,7 @@ ExtractEdge_process_errMsg_spartanFail=Failure processing Microsoft Edge spartan
ExtractEdge_process_errMsg_unableFindESEViewer=Unable to find ESEDatabaseViewer
ExtractEdge_process_errMsg_webcacheFail=Failure processing Microsoft Edge WebCacheV01.dat file
ExtractFavicon_Display_Name=Favicon
# {0} - sub module name
ExtractIE_executePasco_errMsg_errorRunningPasco={0}: Error analyzing Internet Explorer web history
ExtractOs.androidOs.label=Android
ExtractOs.androidVolume.label=OS Drive (Android)
@ -53,6 +59,7 @@ ExtractOs.windowsVolume.label=OS Drive (Windows)
ExtractOs.yellowDogLinuxOs.label=Linux (Yellow Dog)
ExtractOs.yellowDogLinuxVolume.label=OS Drive (Linux Yellow Dog)
ExtractOS_progressMessage=Checking for OS
# {0} - sub module name
ExtractPrefetch_errMsg_prefetchParsingFailed={0}: Error analyzing prefetch files
ExtractPrefetch_module_name=Windows Prefetch Analyzer
ExtractRecycleBin_module_name=Recycle Bin Analyzer
@ -163,15 +170,21 @@ Firefox.getDlV24.errMsg.errAnalyzeFile={0}: Error while trying to analyze file:{
Firefox.getDlV24.errMsg.errParsingArtifacts={0}: Error parsing {1} Firefox web download artifacts.
Progress_Message_Analyze_Registry=Analyzing Registry Files
Progress_Message_Analyze_Usage=Data Sources Usage Analysis
# {0} - browserName
Progress_Message_Chrome_AutoFill=Chrome Auto Fill Browser {0}
# {0} - browserName
Progress_Message_Chrome_Bookmarks=Chrome Bookmarks Browser {0}
Progress_Message_Chrome_Cache=Chrome Cache
# {0} - browserName
Progress_Message_Chrome_Cookies=Chrome Cookies Browser {0}
# {0} - browserName
Progress_Message_Chrome_Downloads=Chrome Downloads Browser {0}
Progress_Message_Chrome_Extensions=Chrome Extensions {0}
Progress_Message_Chrome_Favicons=Chrome Downloads Favicons {0}
Progress_Message_Chrome_FormHistory=Chrome Form History
# {0} - browserName
Progress_Message_Chrome_History=Chrome History Browser {0}
# {0} - browserName
Progress_Message_Chrome_Logins=Chrome Logins Browser {0}
Progress_Message_Chrome_Profiles=Chrome Profiles {0}
Progress_Message_Edge_Bookmarks=Microsoft Edge Bookmarks
@ -234,6 +247,7 @@ Sam_Security_Answer_3_Attribute_Display_Name=Security Answer 3
Sam_Security_Question_1_Attribute_Display_Name=Security Question 1
Sam_Security_Question_2_Attribute_Display_Name=Security Question 2
Sam_Security_Question_3_Attribute_Display_Name=Security Question 3
# {0} - file name
SearchEngineURLQueryAnalyzer.init.exception.msg=Unable to find {0}.
SearchEngineURLQueryAnalyzer.moduleName.text=Search Engine Query Analyzer
SearchEngineURLQueryAnalyzer.engineName.none=NONE

View File

@ -570,6 +570,7 @@ class Chromium extends Extract {
JsonObject permissions = ext.get("active_permissions").getAsJsonObject();
JsonArray apiPermissions = permissions.get("api").getAsJsonArray();
for (JsonElement apiPermission : apiPermissions) {
if (apiPermission.isJsonPrimitive()) {
String apigrantEl = apiPermission.getAsString();
if (apigrantEl != null) {
apiGrantedPermissions = apiGrantedPermissions + ", " + apigrantEl;
@ -578,6 +579,7 @@ class Chromium extends Extract {
}
}
}
}
String version;
String description;
String extName;

View File

@ -1,138 +1,22 @@
# Overview
*The installation process requires some [prerequisites](#installing-prerequisites), [The Sleuth Kit](#install-sleuthkit), and installing [Autopsy itself](#install-autopsy). If using Windows, there is a pre-built installer bundling all dependencies that can be found in the [Autopsy downloads section](https://www.autopsy.com/download/) or in the [Releases section on GitHub](https://github.com/sleuthkit/autopsy/releases/).*
When installing on Debian-based Linux or macOS systems, there are three general steps: [installing prerequisites](#installing-prerequisites), [installing The Sleuth Kit](#installing-the-sleuth-kit), and [installing Autopsy](#installing-autopsy) itself. On macOS, you will want to [setup the JNA paths](#setup-macos-jna-paths).
# Installing Prerequisites
- **Linux**: Run [`linux_macos_install_scripts/install_prereqs_ubuntu.sh`](./linux_macos_install_scripts/install_prereqs_ubuntu.sh).
- **macOS**: Run [`linux_macos_install_scripts/install_prereqs_macos.sh`](./linux_macos_install_scripts/install_prereqs_macos.sh). This script requires the package manager: [Homebrew](https://brew.sh/), which has installation steps on their site.
## On macOS
*NOTE: The last output of the script is the path to the Java 8 installation. You will want to note that path when installing Autopsy.*
*A script to install these dependencies that can be found [here](./linux_macos_install_scripts/install_prereqs_macos.sh). Make sure the script is executable before running.*
- Using [Homebrew](https://brew.sh/), install dependencies that have formulas:
```
brew install ant automake libtool afflib libewf postgresql testdisk
```
- You will also need to install Java 8 and JavaFX to run autopsy. We recommend Liberica OpenJDK which can be installed by tapping this third-party dependency:
```
brew tap bell-sw/liberica
```
- Then, you can install this dependency using `brew`:
```
brew install --cask liberica-jdk8-full
```
- - Confirm that java has been successfully installed by running `java -version`. You should get a result like the following:
```
% java -version
openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)
```
- You will need the java path for properly setting up autopsy. You can get the path to java by calling:
```
/usr/libexec/java_home -v 1.8
```
- If you want gstreamer to open media, you can download and install gstreamer here: `https://gstreamer.freedesktop.org/data/pkg/osx/1.20.3/gstreamer-1.0-1.20.3-universal.pkg`
# Installing The Sleuth Kit
- **Linux**: Download the .deb file for the release you want to install from the [release section](https://github.com/sleuthkit/sleuthkit/releases). Install The Sleuth Kit package from the repositories with the following command: `sudo apt update && sudo apt install /path/to/sleuthkit-version.deb`.
- **macOS**: Ensure that for this session, your `JAVA_HOME` variable is set to the java 8 installation by running `export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/bin/java`. Then, install The Sleuth Kit from source by running [`linux_macos_install_scripts/install_tsk_from_src.sh`](./linux_macos_install_scripts/install_tsk_from_src.sh), which will download, build, and install The Sleuth Kit. It can be run as follows: `install_tsk_from_src.sh -p ~/src/sleuthkit -b sleuthkit-4.11.1`. Make sure that your path to download source ends with "sleuthkit" as the last directory, and the release is the corresponding tag in the [repository](https://github.com/sleuthkit/sleuthkit).
## On Linux (Ubuntu / Debian-based)
*A script to install these dependencies that can be found [here](./linux_macos_install_scripts/install_prereqs_ubuntu.sh). Make sure the script is executable before running.*
- You will need to include some repositories in order to install this software. One way to do that is to uncomment lines in your `sources.list`:
```
sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
```
- Use `apt` to install dependencies:
```
sudo apt update && \
sudo apt -y install build-essential autoconf libtool git-core automake git zip wget ant \
libde265-dev libheif-dev \
libpq-dev \
testdisk libafflib-dev libewf-dev libvhdi-dev libvmdk-dev \
libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x \
gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
```
- You will also need to install Java 8 and JavaFX to run autopsy. We recommend Liberica OpenJDK which can be installed as follows:
```
pushd /usr/src/ && \
wget -q -O - https://download.bell-sw.com/pki/GPG-KEY-bellsoft | sudo apt-key add - && \
echo "deb [arch=amd64] https://apt.bell-sw.com/ stable main" | sudo tee /etc/apt/sources.list.d/bellsoft.list && \
sudo apt update && \
sudo apt -y install bellsoft-java8-full && \
popd
```
- Confirm that java has been successfully installed by running `java -version`. You should get a result like the following:
```
% java -version
openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)
```
- Take note of the location of the java 1.8 install. This will be necessary to properly setup Autopsy. If using the recommended method, the path should be `/usr/lib/jvm/bellsoft-java8-full-amd64`
# Install The Sleuth Kit
The Sleuth Kit must be installed before trying to install Autopsy. If you are on a Debian-like system (i.e. Ubuntu) you can download the most recent deb file from the [github release section](https://github.com/sleuthkit/sleuthkit/releases), and install by running something like `sudo apt install ./sleuthkit-java_4.11.1-1_amd64.deb`. Otherwise, you can follow the directions below to install The Sleuth Kit from source code.
## Install The Sleuth Kit from Source
*A script to install these dependencies on Unix-like systems (i.e. macOS, Linux) that can be found [here](./linux_macos_install_scripts/install_tsk_from_src.sh). Make sure the script is executable before running.*
- Please ensure you have all the prerequisites installed on your system (see the directions [here](#installing-prerequisites)).
- If you don't have a copy of the repository on your local machine, clone it (this requires git):
```
git clone --depth 1 https://github.com/sleuthkit/sleuthkit.git
```
- If you want to build source from a particular branch or tag (i.e. `develop` or `release-4.11.0`), check out that branch:
```
git checkout <YOUR BRANCH HERE> && git pull
```
- Then, with The Sleuth Kit repo as your working directory, you can build with:
```
./bootstrap && ./configure && make
```
- If the output from `make` looks good, then install:
```
sudo make install
```
# Install Autopsy
## Create Autopsy Zip File from Source
*In most instances, you should download the Autopsy Zip file from the [Autopsy downloads section](https://www.autopsy.com/download/) or in the [Releases section on GitHub](https://github.com/sleuthkit/autopsy/releases/), but if you have a special use case you can do the following. Please make sure you have the [prerequisites installed](#installing-prerequisites) and have [installed The Sleuth Kit](#install-sleuthkit).*
- If you haven't already, clone the repo:
```
git clone --depth 1 https://github.com/sleuthkit/autopsy.git
```
- With the autopsy repo as your working directory, you can run:
```
ant clean && ant build && ant build-zip
```
- The zip file should be created within the `dist` folder of the Autopsy repository and will have the version in the name (i.e. `autopsy-4.18.0.zip`).
## Install Autopsy from Zip File
*These instructions are for Unix-like systems like macOS and Linux. If you are on Windows, there is an installer that can be downloaded from the [Autopsy downloads section](https://www.autopsy.com/download/) or in the [Releases section on GitHub](https://github.com/sleuthkit/autopsy/releases/). Please make sure you have the [prerequisites installed](#installing-prerequisites) and have [installed The Sleuth Kit](#install-sleuthkit). A script to perform these steps can be found [here](./linux_macos_install_scripts/install_application.sh). Make sure the script is executable before running.*
- Download the zip file from the [Autopsy downloads section](https://www.autopsy.com/download/) or in the [Releases section on GitHub](https://github.com/sleuthkit/autopsy/releases/). You can also create a zip file from source using [these directions](#create-autopsy-zip-file-from-source).
- If you downloaded the zip file, you can verify the zip file with the [The Sleuth Kit key](https://sleuthkit.org/carrier.asc) and the related `.asc` file found in the [Releases section on GitHub](https://github.com/sleuthkit/autopsy/releases/). For instance, you would use `autopsy-4.18.0.zip.asc` with `autopsy-4.18.0.zip`. Here is an example where `$ASC_FILE` is the path to the `.asc` file and `$AUTOPSY_ZIP_PATH` is the path to the autopsy zip file:
```
mkdir -p ${VERIFY_DIR} && \
pushd ${VERIFY_DIR} && \
wget https://sleuthkit.org/carrier.asc && \
gpg --homedir "${VERIFY_DIR}" --import https://sleuthkit.org/carrier.asc && \
gpg --homedir "${VERIFY_DIR}" --keyring "${VERIFY_DIR}/pubring.kbx" ${ASC_FILE} ${AUTOPSY_ZIP_PATH} && \
rm -r ${VERIFY_DIR}
popd
```
- Extract the zip file to a location where you would like to have Autopsy installed.
- Set up java path. There are two ways to provide the path to java: `JAVA_HOME` can be set as an environmental variable or the `autopsy.conf` file can define the home for java.
- To update the `autopsy.conf` file, navigate to where autopsy has been extracted and then open `etc/autopsy.conf`. Within that file, replace the commented line or add a new line specifying the java home like: `jdkhome=<JAVA_PATH>`. Another option is to provide an argument to `unix_setup.sh` like the following `unix_setup.sh -j <JAVA_PATH>` when performing the next step.
- With the extracted folder as the working directory, you can run the following commands to perform setup:
```
chown -R $(whoami) . && \
chmod u+x ./unix_setup.sh && \
./unix_setup.sh
```
- At this point, you should be able to run Autopsy with the command `./autopsy` from within the `bin` directory of the extracted folder.
## Setup macOS JNA paths
A few features in Autopsy will only work (i.e. gstreamer) if the JNA paths are specified. If you installed the necessary dependencies through Homebrew, you will want to either run this [script](./linux_macos_install_scripts/add_macos_jna.sh) or manually add all the gstreamer lib and dependency lib paths to the env variable `jre_flags` with jre flag: `-Djna.library.path`.
# Installing Autopsy
- Download the Autopsy zip file from [repository releases](https://github.com/sleuthkit/autopsy/releases). The file will be marked as "autopsy-&lt;release&gt;.zip" (i.e. "autopsy-4.19.2.zip").
- Run [`install_application.sh`](./linux_macos_install_scripts/install_application.sh) with the following parameters: `install_application.sh [-z zip_path] [-i install_directory] [-j java_home]`. An example would be `install_application.sh -z ~/Downloads/autopsy-4.19.2.zip -i ~/autopsy -j /usr/lib/jvm/bellsoft-java8-full-amd64`. The path to the Java 8 home is the last output from the [prequisites installation scripts](#installing-prerequisites), but typically, the path will be `/usr/lib/jvm/bellsoft-java8-full-amd64` on Debian-based Linux or the output of running `/usr/libexec/java_home -v 1.8` on macOS.
# Setup macOS JNA paths
If you are on macOS, run [linux_macos_install_scripts/add_macos_jna.sh](./linux_macos_install_scripts/add_macos_jna.sh) to properly setup the jna path to get things like gstreamer working. An example would be `add_macos_jna.sh -i ~/autopsy`.
# Troubleshooting
- If you see something like "Cannot create case: javafx/scene/paint/Color" it is an indication that Java FX
@ -166,6 +50,5 @@ A few features in Autopsy will only work (i.e. gstreamer) if the JNA paths are s
- Recent Activity
- The LEAPP processors
- HEIF processing
- Timeline does not work on OS X
- Video thumbnails
- VHD and VMDK files not supported on OS X

View File

@ -1,5 +1,5 @@
#Updated by build script
#Wed, 01 Dec 2021 12:53:03 -0500
#Wed, 28 Sep 2022 13:57:05 -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.2
currentVersion=Autopsy 4.19.3

View File

@ -1,4 +1,4 @@
#Updated by build script
#Wed, 01 Dec 2021 12:53:03 -0500
CTL_MainWindow_Title=Autopsy 4.19.2
CTL_MainWindow_Title_No_Project=Autopsy 4.19.2
#Wed, 28 Sep 2022 13:57:05 -0400
CTL_MainWindow_Title=Autopsy 4.19.3
CTL_MainWindow_Title_No_Project=Autopsy 4.19.3

View File

@ -28,7 +28,17 @@ then
exit 1
fi
awk '!/^\s*#?\s*export jreflags=.*$/' $INSTALL_LOC/etc/$APPLICATION_NAME.conf > $INSTALL_LOC/etc/$APPLICATION_NAME.conf.tmp && \
mv $INSTALL_LOC/etc/$APPLICATION_NAME.conf.tmp $INSTALL_LOC/etc/$APPLICATION_NAME.conf && \
echo -e "\nexport jreflags=-Djna.library.path=\"/Library/Frameworks/GStreamer.framework/Versions/1.0/lib\"" >> $INSTALL_LOC/etc/$APPLICATION_NAME.conf
GSTREAMER_LOC=$(brew --prefix gstreamer)
if [[ $? -ne 0 ]]
then
echo "Unable to find homebrew installation of gstreamer" >> /dev/stderr
exit 1
fi
awk '!/^ *#? *export +?(jreflags|GST_PLUGIN_SYSTEM_PATH|GST_PLUGIN_SCANNER)=.*$/' $INSTALL_LOC/etc/$APPLICATION_NAME.conf > $INSTALL_LOC/etc/$APPLICATION_NAME.conf.tmp && \
mv $INSTALL_LOC/etc/$APPLICATION_NAME.conf.tmp $INSTALL_LOC/etc/$APPLICATION_NAME.conf && \
echo "
export jreflags=\"-Djna.library.path=\\\"/usr/local/lib\\\" \$jreflags\"
export GST_PLUGIN_SYSTEM_PATH=\"/usr/local/lib/gstreamer-1.0\"
export GST_PLUGIN_SCANNER=\"${GSTREAMER_LOC}/libexec/gstreamer-1.0/gst-plugin-scanner\"" >> $INSTALL_LOC/etc/$APPLICATION_NAME.conf

View File

@ -2,7 +2,7 @@
# Unzips an application platform zip to specified directory and does setup
usage() {
echo "Usage: install_application_from_zip.sh [-z zip_path] [-i install_directory] [-j java_home] [-n application_name] [-v asc_file]" 1>&2
echo "Usage: install_application.sh [-z zip_path] [-i install_directory] [-j java_home] [-n application_name] [-v asc_file]" 1>&2
echo "If specifying a .asc verification file (with -v flag), the program will attempt to create a temp folder in the working directory and verify the signature with gpg. If you already have an extracted zip, the '-z' flag can be ignored as long as the directory specifying the extracted contents is provided for the installation directory." 1>&2
}

View File

@ -1,27 +1,14 @@
#!/bin/bash
echo "Installing dependencies..."
# dependencies taken from: https://github.com/sleuthkit/autopsy/pull/5111/files
# brew install gettext cppunit && \
brew install ant automake libtool afflib libewf postgresql testdisk
brew install ant automake libtool afflib libewf postgresql testdisk libheif \
gst-libav gst-plugins-bad gst-plugins-base gst-plugins-good gst-plugins-ugly gstreamer
if [[ $? -ne 0 ]]
then
echo "Unable to install necessary dependencies" >> /dev/stderr
exit 1
fi
# brew gstreamer packages don't seem to play nice with autopsy. Installing directly from gstreamer
echo "Installing gstreamer..."
gstreamer_tmp_path=$TMPDIR/gstreamer-1.0-1.20.3-universal.pkg
curl -k -o $gstreamer_tmp_path 'https://gstreamer.freedesktop.org/data/pkg/osx/1.20.3/gstreamer-1.0-1.20.3-universal.pkg' && \
sudo installer -pkg //Users/4911_admin/Downloads/gstreamer-1.0-1.20.3-universal.pkg -target /
gstreamer_install_result=$?
rm $gstreamer_tmp_path
if [[ $? -ne 0 ]]
then
echo "Unable to install gstreamer" >> /dev/stderr
exit 1
fi
echo "Installing liberica java 8..."
brew tap bell-sw/liberica && \
brew install --cask liberica-jdk8-full

View File

@ -1,10 +1,10 @@
#!/bin/bash
# Clones sleuthkit repo from github (if necessary) and installs
# this script does require sudo privileges
# called like: build_tsk.sh -p <repo path to be created or existing> -b <tsk branch to checkout> -r <non-standard remote repo (optional)>
# called like: install_tsk_from_src.sh -p <repo path to be created or existing> -b <tsk branch to checkout> -r <non-standard remote repo (optional)>
usage() {
echo "Usage: install_tsk_from_src [-p repo_path (should end with '/sleuthkit')] [-b tsk_branch] [-r sleuthkit_repo]" 1>&2
echo "Usage: install_tsk_from_src.sh [-p repo_path (should end with '/sleuthkit')] [-b tsk_branch] [-r sleuthkit_repo]" 1>&2
}
# default repo path

View File

@ -4,7 +4,7 @@ app.title=Autopsy
### lowercase version of above
app.name=${branding.token}
### if left unset, version will default to today's date
app.version=4.19.3
app.version=4.20.0
### build.type must be one of: DEVELOPMENT, RELEASE
#build.type=RELEASE
build.type=DEVELOPMENT