diff --git a/.gitignore b/.gitignore index 9949c8b6fc..43671307d1 100755 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /*/build/ */nbproject/private/* /nbproject/private/* +/apidiff_output/ /Core/release/ /Core/src/org/sleuthkit/autopsy/coreutils/Version.properties diff --git a/Core/build.xml b/Core/build.xml index 40b8e966a3..44b627fb9d 100644 --- a/Core/build.xml +++ b/Core/build.xml @@ -31,6 +31,17 @@ + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties b/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties index a2feedc54f..4ca72069dc 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties @@ -45,3 +45,4 @@ OpenPythonModulesFolderAction.actionName.text=Python Plugins OpenPythonModulesFolderAction.errorMsg.folderNotFound=Python plugins folder not found: {0} CTL_OpenPythonModulesFolderAction=Python Plugins GetTagNameAndCommentDialog.tagCombo.toolTipText=Select tag to use +CTL_ExitAction=Exit \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties-MERGED index 507e079cad..5c9a0ea3ac 100755 --- a/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties-MERGED @@ -96,3 +96,4 @@ OpenPythonModulesFolderAction.actionName.text=Python Plugins OpenPythonModulesFolderAction.errorMsg.folderNotFound=Python plugins folder not found: {0} CTL_OpenPythonModulesFolderAction=Python Plugins GetTagNameAndCommentDialog.tagCombo.toolTipText=Select tag to use +CTL_ExitAction=Exit diff --git a/Core/src/org/sleuthkit/autopsy/actions/ExitAction.java b/Core/src/org/sleuthkit/autopsy/actions/ExitAction.java index 7240afca92..31162cc67b 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/ExitAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/ExitAction.java @@ -40,7 +40,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; * The action associated with the Case/Exit menu item. It closes the current * case, if any, and shuts down the application. */ -@ActionRegistration(displayName = "Exit", iconInMenu = true) +@ActionRegistration(displayName = "#CTL_ExitAction", iconInMenu = true) @ActionReference(path = "Menu/Case", position = 1000, separatorBefore = 999) @ActionID(id = "org.sleuthkit.autopsy.casemodule.ExitAction", category = "Case") final public class ExitAction implements ActionListener { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index f3dfe72020..1a6186b2c2 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -4,7 +4,6 @@ CTL_CaseCloseAct=Close Case CTL_CaseNewAction=New Case CTL_CaseDetailsAction=Case Details CTL_CaseDeleteAction=Delete Case -Menu/Case/OpenRecentCase=Open Recent Case CTL_CaseDeleteAction=Delete Case OpenIDE-Module-Name=Case NewCaseVisualPanel1.caseNameLabel.text_1=Case Name: diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED index 1a5bb3d251..528d3a5088 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED @@ -128,6 +128,7 @@ CTL_CaseCloseAct=Close Case CTL_CaseNewAction=New Case CTL_CaseDetailsAction=Case Details CTL_CaseDeleteAction=Delete Case +CTL_CaseDeleteAction=Delete Case CTL_CaseOpenAction=Open Case CTL_UnpackagePortableCaseAction=Unpack and Open Portable Case DeleteDataSourceAction.confirmationDialog.message=Are you sure you want to remove the selected data source from the case?\nNote that the case will be closed and re-opened during the removal. @@ -186,8 +187,6 @@ LogicalEvidenceFilePanel.pathValidation.getOpenCase.Error=Warning: Exception whi LogicalEvidenceFilePanel.validatePanel.nonL01Error.text=Only files with the .l01 file extension are supported here. LogicalFilesDspPanel.subTypeComboBox.l01FileOption.text=Logical evidence file (L01) LogicalFilesDspPanel.subTypeComboBox.localFilesOption.text=Local files and folders -Menu/Case/OpenRecentCase=Open Recent Case -CTL_CaseDeleteAction=Delete Case OpenIDE-Module-Name=Case NewCaseVisualPanel1.caseNameLabel.text_1=Case Name: NewCaseVisualPanel1.caseDirLabel.text=Base Directory: diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 422f76509c..ddf8cc22b9 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -62,6 +62,7 @@ import javax.annotation.concurrent.GuardedBy; import javax.annotation.concurrent.ThreadSafe; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; +import org.apache.commons.lang3.StringUtils; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; @@ -157,9 +158,10 @@ import org.sleuthkit.datamodel.TskUnsupportedSchemaVersionException; */ public class Case { - private static final String CASE_TEMP_DIR = Case.class.getSimpleName(); private static final int CASE_LOCK_TIMEOUT_MINS = 1; private static final int CASE_RESOURCES_LOCK_TIMEOUT_HOURS = 1; + private static final String APP_NAME = UserPreferences.getAppName(); + private static final String TEMP_FOLDER = "Temp"; private static final String SINGLE_USER_CASE_DB_NAME = "autopsy.db"; private static final String EVENT_CHANNEL_NAME = "%s-Case-Events"; //NON-NLS private static final String CACHE_FOLDER = "Cache"; //NON-NLS @@ -496,35 +498,35 @@ public class Case { event.getArtifacts(artifactType))); } } - - @Subscribe + + @Subscribe public void publishOsAccountAddedEvent(TskEvent.OsAccountsAddedTskEvent event) { - for(OsAccount account: event.getOsAcounts()) { + for (OsAccount account : event.getOsAcounts()) { eventPublisher.publish(new OsAccountAddedEvent(account)); } } - - @Subscribe + + @Subscribe public void publishOsAccountChangedEvent(TskEvent.OsAccountsChangedTskEvent event) { - for(OsAccount account: event.getOsAcounts()) { + for (OsAccount account : event.getOsAcounts()) { eventPublisher.publish(new OsAccountChangedEvent(account)); } } - - @Subscribe + + @Subscribe public void publishOsAccountDeletedEvent(TskEvent.OsAccountsDeletedTskEvent event) { - for(Long accountId: event.getOsAcountObjectIds()) { + for (Long accountId : event.getOsAcountObjectIds()) { eventPublisher.publish(new OsAccountDeletedEvent(accountId)); } } /** - * Publishes an autopsy event from the sleuthkit HostAddedEvent + * Publishes an autopsy event from the sleuthkit HostAddedEvent * indicating that hosts have been created. * * @param event The sleuthkit event for the creation of hosts. */ - @Subscribe + @Subscribe public void publishHostsAddedEvent(TskEvent.HostsAddedTskEvent event) { eventPublisher.publish(new HostsAddedEvent( event == null ? Collections.emptyList() : event.getHosts())); @@ -535,8 +537,8 @@ public class Case { * indicating that hosts have been updated. * * @param event The sleuthkit event for the updating of hosts. - */ - @Subscribe + */ + @Subscribe public void publishHostsChangedEvent(TskEvent.HostsChangedTskEvent event) { eventPublisher.publish(new HostsChangedEvent( event == null ? Collections.emptyList() : event.getHosts())); @@ -547,32 +549,32 @@ public class Case { * indicating that hosts have been deleted. * * @param event The sleuthkit event for the deleting of hosts. - */ - @Subscribe + */ + @Subscribe public void publishHostsDeletedEvent(TskEvent.HostsDeletedTskEvent event) { eventPublisher.publish(new HostsRemovedEvent( event == null ? Collections.emptyList() : event.getHosts())); } /** - * Publishes an autopsy event from the sleuthkit PersonAddedEvent + * Publishes an autopsy event from the sleuthkit PersonAddedEvent * indicating that persons have been created. * * @param event The sleuthkit event for the creation of persons. */ - @Subscribe + @Subscribe public void publishPersonsAddedEvent(TskEvent.PersonsAddedTskEvent event) { eventPublisher.publish(new PersonsAddedEvent( event == null ? Collections.emptyList() : event.getPersons())); } /** - * Publishes an autopsy event from the sleuthkit PersonChangedEvent + * Publishes an autopsy event from the sleuthkit PersonChangedEvent * indicating that persons have been updated. * * @param event The sleuthkit event for the updating of persons. - */ - @Subscribe + */ + @Subscribe public void publishPersonsChangedEvent(TskEvent.PersonsChangedTskEvent event) { eventPublisher.publish(new PersonsChangedEvent( event == null ? Collections.emptyList() : event.getPersons())); @@ -583,8 +585,8 @@ public class Case { * indicating that persons have been deleted. * * @param event The sleuthkit event for the deleting of persons. - */ - @Subscribe + */ + @Subscribe public void publishPersonsDeletedEvent(TskEvent.PersonsDeletedTskEvent event) { eventPublisher.publish(new PersonsDeletedEvent( event == null ? Collections.emptyList() : event.getPersons())); @@ -1469,6 +1471,13 @@ public class Case { return hostPath.toString(); } + /** + * @return A subdirectory of java.io.tmpdir. + */ + private Path getBaseSystemTempPath() { + return Paths.get(System.getProperty("java.io.tmpdir"), APP_NAME, getName()); + } + /** * Gets the full path to the temp directory for this case, creating it if it * does not exist. @@ -1476,7 +1485,45 @@ public class Case { * @return The temp subdirectory path. */ public String getTempDirectory() { - return UserMachinePreferences.getTempDirectory(); + // NOTE: UserPreferences may also be affected by changes in this method. + // See JIRA-7505 for more information. + Path basePath = null; + // get base temp path for the case based on user preference + switch (UserMachinePreferences.getTempDirChoice()) { + case CUSTOM: + String customDirectory = UserMachinePreferences.getCustomTempDirectory(); + basePath = (StringUtils.isBlank(customDirectory)) + ? null + : Paths.get(customDirectory, APP_NAME, getName()); + break; + case CASE: + basePath = Paths.get(getCaseDirectory()); + break; + case SYSTEM: + default: + // at this level, if the case directory is specified for a temp + // directory, return the system temp directory instead. + basePath = getBaseSystemTempPath(); + break; + } + + basePath = basePath == null ? getBaseSystemTempPath() : basePath; + + // get sub directories based on multi user vs. single user + Path caseRelPath = (CaseType.MULTI_USER_CASE.equals(getCaseType())) + ? Paths.get(NetworkUtils.getLocalHostName(), TEMP_FOLDER) + : Paths.get(TEMP_FOLDER); + + File caseTempDir = basePath + .resolve(caseRelPath) + .toFile(); + + // ensure directory exists + if (!caseTempDir.exists()) { + caseTempDir.mkdirs(); + } + + return caseTempDir.getAbsolutePath(); } /** diff --git a/Core/src/org/sleuthkit/autopsy/core/Bundle.properties b/Core/src/org/sleuthkit/autopsy/core/Bundle.properties index b106a1a123..0f6042fc60 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/core/Bundle.properties @@ -27,3 +27,7 @@ ServicesMonitor.remoteKeywordSearch.displayName.text=Multi-user keyword search s ServicesMonitor.messaging.displayName.text=Messaging service ServicesMonitor.databaseConnectionInfo.error.msg=Error accessing case database connection info ServicesMonitor.messagingService.connErr.text=Error accessing messaging service connection info +Actions/Case=Case +Menu/Case=Case +Toolbars/Case=Case +Menu/Case/OpenRecentCase=Open Recent Case \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/core/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/core/Bundle.properties-MERGED index cd9d1002cd..1d50092e80 100755 --- a/Core/src/org/sleuthkit/autopsy/core/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/core/Bundle.properties-MERGED @@ -31,3 +31,7 @@ ServicesMonitor.remoteKeywordSearch.displayName.text=Multi-user keyword search s ServicesMonitor.messaging.displayName.text=Messaging service ServicesMonitor.databaseConnectionInfo.error.msg=Error accessing case database connection info ServicesMonitor.messagingService.connErr.text=Error accessing messaging service connection info +Actions/Case=Case +Menu/Case=Case +Toolbars/Case=Case +Menu/Case/OpenRecentCase=Open Recent Case diff --git a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java index 395b8cd830..85b7b35cbc 100644 --- a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java +++ b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java @@ -18,12 +18,14 @@ */ package org.sleuthkit.autopsy.core; +import java.io.File; import java.nio.file.Paths; import org.sleuthkit.autopsy.coreutils.TextConverter; import java.util.prefs.BackingStoreException; import org.sleuthkit.autopsy.events.MessageServiceConnectionInfo; import java.util.prefs.PreferenceChangeListener; import java.util.prefs.Preferences; +import org.apache.commons.lang3.StringUtils; import org.openide.util.NbPreferences; import org.python.icu.util.TimeZone; import org.sleuthkit.autopsy.machinesettings.UserMachinePreferences; @@ -93,7 +95,8 @@ public final class UserPreferences { private static final String GEO_OSM_SERVER_ADDRESS = "GeolocationOsmServerAddress"; private static final String GEO_MBTILES_FILE_PATH = "GeolcoationMBTilesFilePath"; private static final String HEALTH_MONITOR_REPORT_PATH = "HealthMonitorReportPath"; - + private static final String TEMP_FOLDER = "Temp"; + // Prevent instantiation. private UserPreferences() { } @@ -348,27 +351,27 @@ public final class UserPreferences { public static void setIndexingServerPort(int port) { preferences.putInt(SOLR8_SERVER_PORT, port); } - + public static String getSolr4ServerHost() { return preferences.get(SOLR4_SERVER_HOST, ""); } public static void setSolr4ServerHost(String hostName) { preferences.put(SOLR4_SERVER_HOST, hostName); - } - + } + public static String getSolr4ServerPort() { return preferences.get(SOLR4_SERVER_PORT, ""); } public static void setSolr4ServerPort(String port) { preferences.put(SOLR4_SERVER_PORT, port); - } - + } + public static String getZkServerHost() { return preferences.get(ZK_SERVER_HOST, ""); } - + public static void setZkServerHost(String hostName) { preferences.put(ZK_SERVER_HOST, hostName); } @@ -380,7 +383,7 @@ public final class UserPreferences { public static void setZkServerPort(String port) { preferences.put(ZK_SERVER_PORT, port); } - + public static void setTextTranslatorName(String textTranslatorName) { preferences.put(TEXT_TRANSLATOR_NAME, textTranslatorName); } @@ -388,14 +391,14 @@ public final class UserPreferences { public static String getTextTranslatorName() { return preferences.get(TEXT_TRANSLATOR_NAME, null); } - + public static void setUseOcrInTranslation(boolean enableOcr) { preferences.putBoolean(OCR_TRANSLATION_ENABLED, enableOcr); } public static boolean getUseOcrInTranslation() { return preferences.getBoolean(OCR_TRANSLATION_ENABLED, true); - } + } /** * Persists message service connection info. @@ -536,10 +539,11 @@ public final class UserPreferences { } /** - * Get the maximum JVM heap size (in MB) for the embedded Solr server. The returned value - * depends on the platform (64bit vs 32bit). + * Get the maximum JVM heap size (in MB) for the embedded Solr server. The + * returned value depends on the platform (64bit vs 32bit). * - * @return Saved value or default (2 GB for 64bit platforms, 512MB for 32bit) + * @return Saved value or default (2 GB for 64bit platforms, 512MB for + * 32bit) */ public static int getMaxSolrVMSize() { if (PlatformUtil.is64BitJVM()) { @@ -594,20 +598,21 @@ public final class UserPreferences { public static String getExternalHexEditorPath() { return preferences.get(EXTERNAL_HEX_EDITOR_PATH, Paths.get("C:", "Program Files", "HxD", "HxD.exe").toString()); } - + /** * Set the geolocation tile server option. - * - * @param option + * + * @param option */ public static void setGeolocationTileOption(int option) { preferences.putInt(GEO_TILE_OPTION, option); } /** - * Retrieves the Geolocation tile option. If not found, the value will + * Retrieves the Geolocation tile option. If not found, the value will * default to 0. - * @return + * + * @return */ public static int getGeolocationtTileOption() { return preferences.getInt(GEO_TILE_OPTION, 0); @@ -615,8 +620,8 @@ public final class UserPreferences { /** * Sets the path to the OSM tile zip file. - * - * @param absolutePath + * + * @param absolutePath */ public static void setGeolocationOsmZipPath(String absolutePath) { preferences.put(GEO_OSM_TILE_ZIP_PATH, absolutePath); @@ -625,7 +630,7 @@ public final class UserPreferences { /** * Retrieves the path for the OSM tile zip file or returns empty string if * none was found. - * + * * @return Path to zip file */ public static String getGeolocationOsmZipPath() { @@ -633,9 +638,10 @@ public final class UserPreferences { } /** - * Sets the address of geolocation window user defined OSM server data source. - * - * @param address + * Sets the address of geolocation window user defined OSM server data + * source. + * + * @param address */ public static void setGeolocationOsmServerAddress(String address) { preferences.put(GEO_OSM_SERVER_ADDRESS, address); @@ -643,40 +649,72 @@ public final class UserPreferences { /** * Retrieves the address to the OSM server or null if one was not found. - * + * * @return Address of OSM server */ public static String getGeolocationOsmServerAddress() { return preferences.get(GEO_OSM_SERVER_ADDRESS, ""); } - + /** * Sets the path for Geolocation MBTiles data source file. - * - * @param absolutePath + * + * @param absolutePath */ public static void setGeolocationMBTilesFilePath(String absolutePath) { preferences.put(GEO_MBTILES_FILE_PATH, absolutePath); } - + /** * Retrieves the path for the Geolocation MBTiles data source file. - * - * @return Absolute path to MBTiles file or empty string if none was found. + * + * @return Absolute path to MBTiles file or empty string if none was found. */ public static String getGeolocationMBTilesFilePath() { return preferences.get(GEO_MBTILES_FILE_PATH, ""); } - + /** - * Retrieves the root application temp directory. - * + * @return A subdirectory of java.io.tmpdir. + */ + private static File getSystemTempDirFile() { + return Paths.get(System.getProperty("java.io.tmpdir"), getAppName(), TEMP_FOLDER).toFile(); + } + + /** + * Retrieves the application temp directory and ensures the directory + * exists. + * * @return The absolute path to the application temp directory. */ public static String getAppTempDirectory() { - return UserMachinePreferences.getTempDirectory(); + // NOTE: If this code changes, Case.getTempDirectory() should likely be checked + // as well. See JIRA 7505 for more information. + File appTempDir = null; + switch (UserMachinePreferences.getTempDirChoice()) { + case CUSTOM: + String customDirectory = UserMachinePreferences.getCustomTempDirectory(); + appTempDir = (StringUtils.isBlank(customDirectory)) + ? null + : Paths.get(customDirectory, getAppName(), TEMP_FOLDER).toFile(); + break; + case SYSTEM: + default: + // at this level, if the case directory is specified for a temp + // directory, return the system temp directory instead. + appTempDir = getSystemTempDirFile(); + break; + } + + appTempDir = appTempDir == null ? getSystemTempDirFile() : appTempDir; + + if (!appTempDir.exists()) { + appTempDir.mkdirs(); + } + + return appTempDir.getAbsolutePath(); } - + /** * Set the last used health monitor report path. * @@ -689,9 +727,10 @@ public final class UserPreferences { /** * Gets the last used health monitor report path. * - * @return Last used health monitor report path. Empty string if no value has been recorded. + * @return Last used health monitor report path. Empty string if no value + * has been recorded. */ public static String getHealthMonitorReportPath() { return preferences.get(HEALTH_MONITOR_REPORT_PATH, ""); } -} \ No newline at end of file +} diff --git a/Core/src/org/sleuthkit/autopsy/core/layer.xml b/Core/src/org/sleuthkit/autopsy/core/layer.xml index 923e8f5c5e..f9f537541d 100644 --- a/Core/src/org/sleuthkit/autopsy/core/layer.xml +++ b/Core/src/org/sleuthkit/autopsy/core/layer.xml @@ -40,6 +40,7 @@ ====================================================== --> + @@ -140,13 +141,14 @@ + - + + - @@ -281,7 +283,6 @@ - @@ -378,6 +379,7 @@ +
diff --git a/docs/doxygen-user/multi-user/installSolr.dox b/docs/doxygen-user/multi-user/installSolr.dox index 8e52b5ba11..d8a4690d58 100644 --- a/docs/doxygen-user/multi-user/installSolr.dox +++ b/docs/doxygen-user/multi-user/installSolr.dox @@ -259,5 +259,32 @@ However, the dashboard does not show enough detail to know when Solr is out of h Solr heap and other performance tuning is described in the following article:
  • https://cwiki.apache.org/confluence/display/SOLR/SolrPerformanceProblems
+\subsubsection install_solr_performance_tuning Notes on Solr Performance Tuning + +If you are going to work with large images (TBs) and KWS performance is important, the best approach is to use a network (Multi-User) Solr server. + +Some notes: +
    +
  • A single Solr server works well for data sources up to 1TB; after that the performance starts to slow down. The performance doesn't "drop off the cliff," but it keeps slowing down as you add more data to the index. After 3TBs of input data the Solr performance takes a significant decline. + +
  • A single Multi-User Solr server may not perform much better than a Single-User Autopsy case. However, in Multi-User mode you can add additional Solr servers and create a Solr cluster. See the \ref install_sorl_adding_nodes section in the above documentation. These additional nodes are where the performance gains come from, especially for large input data sources. Apache Solr documentation calls this "SolrCloud" mode and each Solr server is called a "shard". The more Solr servers/shards you have, the better performance you will have for large data sets. On our test and production clusters, we are using 4-6 Solr servers to handle data sets of up to 10TB, which seems to be the upper limit. After that, you are better off breaking your Autopsy case into multiple cases, thus creating a separate Solr index for each case. + +
  • In our testing, a 3-node SolrCloud indexes data roughly twice as fast as single Solr node. A 6-node SolrCloud indexes data almost twice as fast as 3-node SolrCloud. After that we did not see much performance gain. These performance figures are heavily dependent on network throughput, machine resources, disk access speeds, and the type of data that is being indexed. + +
  • Exact match searches are much faster than substring or regex searches. + +
  • Regex searches tend to use a lot of RAM on the Solr server. + +
  • Indexing/searching of unallocated space really slows everything down because it is mostly binary or garbled data. + +
  • If you are not going to look at the search results until ingest is over then you should disable the periodic keyword searches. They will start taking longer as your input data grows. This can be done in Tools->Options->Keyword Search tab: + +\image html solr_disable_periodic_search.png + +
  • In Single-User mode, if you are ingesting and indexing data sources that are multiple TBs in size, then both Autopsy memory and especially the Solr JVM memory needs to be increased from their default settings. This can be done in Tools->Options->Application tab. We would recommend at least 10GB heap size for Autopsy and at least 6-8GB heap size for Solr. Note that these are "maximum" values that the process will be allowed to use/request. The operating system will not allocate more heap than the process actually needs. + +\image html solr_jvm.png + +
*/ diff --git a/docs/doxygen-user/recent_activity.dox b/docs/doxygen-user/recent_activity.dox index ba2f94deef..094d43b077 100644 --- a/docs/doxygen-user/recent_activity.dox +++ b/docs/doxygen-user/recent_activity.dox @@ -13,7 +13,17 @@ This allows you to see what activity has occured in the last seven days of usage Configuration ======= -There is nothing to configure for this module. +Configuring Custom Web Categories +------ + +The Recent Activity module will create "Web Categories" results for domains that match a list of categories. There are some built-in categories, but custom categories can also be entered through the "Custom Web Categories" tab on the main options panel. These custom categories will override any matching built-in category. + +\image html custom_web_categories.png + +The buttons below the list of categories allow you to enter new categories, edit existing categories, and delete categories. You can also export your list of categories and import a set of categories that was previously exported from this panel. Importing a set will add its categories to the current list (existing categories will not be deleted). + +The category match for each domain will be listed in the "Name" column in the result viewer. +\image html custom_web_categories_results.png Using the Module @@ -23,6 +33,7 @@ Ingest Settings ------ There are no run-time settings for this module. + Seeing Results ------ Results show up in the tree under "Extracted Content". diff --git a/docs/doxygen-user/reporting.dox b/docs/doxygen-user/reporting.dox index 86a5e9df61..dbdf63a4c8 100644 --- a/docs/doxygen-user/reporting.dox +++ b/docs/doxygen-user/reporting.dox @@ -58,7 +58,7 @@ Generating an Excel report is very similar to an \ref report_html. You select wh \image html reports_excel.png -\subsection report_tagged_hashes Add Tagged Hashes +\subsection report_tagged_hashes Save Tagged Hashes This is one of the report modules that doesn't generate an actual report. The purpose of this module is to easily add the hashes of some/all tagged files to an Autopsy hash set that can be used by the \ref hash_db_page. You can use the "Configure Hash Sets" button to create a new @@ -69,6 +69,10 @@ hash set to write to, or use an existing hash set. After running this module, if you use the same hash set on future cases then everything that was tagged with one of the selected tags in this case will show up as Hashset Hits. +\subsection reports_unique_words Extract Unique Words + +This report module allows you to export all unique "words" found in a case. These words come from the Solr index that was created by the \ref keyword_search_page. + \subsection report_case_uco CASE-UCO This module creates a JSON output file in CASE-UCO format for a single data source. diff --git a/docs/doxygen-user/tree_viewer.dox b/docs/doxygen-user/tree_viewer.dox index 9ca6ce49ce..d3d6651fce 100644 --- a/docs/doxygen-user/tree_viewer.dox +++ b/docs/doxygen-user/tree_viewer.dox @@ -4,20 +4,37 @@ The tree on the left-hand side of the main window is where you can browse the files in the data sources in the case and find saved results from automated analyis (ingest). The tree has five main areas: -- Data Sources: This shows the directory tree hierarchy of the data sources. You can navigate to a specific file or directory here. Each data source added to the case is represented as a distinct sub tree. If you add a data source multiple times, it shows up multiple times. +- Persons / Hosts / Data Sources: This shows the directory tree hierarchy of the data sources. You can navigate to a specific file or directory here. Each data source added to the case is represented as a distinct sub tree. If you add a data source multiple times, it shows up multiple times. - Views: Specific types of files from the data sources are shown here, aggregated by type or other properties. Files here can come from more than one data source. - Results: This is where you can see the results from both the automated analysis (ingest) running in the background and your search results. - Tags: This is where files and results that have been \ref tagging_page "tagged" are shown. - Reports: Reports that you have generated, or that ingest modules have created, show up here. -You can also use the "Group by data source" option available through the \ref view_options_page to move the Views, Results, and Tags tree nodes under their corresponding data sources. This can be helpful on very large cases to reduce the size of each sub tree. For example: +You can also use the "Group by Person/Host" option available through the \ref view_options_page to move the Views, Results, and Tags tree nodes under their corresponding person and host. This can be helpful on very large cases to reduce the size of each sub tree. -\image html ui_layout_group_tree.PNG +\section ui_tree_ds Persons / Hosts / Data Sources +By default, the top node of the tree viewer will contain all data sources in the case. The Data Sources node is organized by host and then the data source itself. Right clicking on the various nodes in the Data Sources area of the tree will allow you to get more options for each data source and its contents. -\section ui_tree_ds Data Sources +\image html ui_tree_top_ds.png -The Data Sources area shows each data source that has been added to the case, in order added (top one is first). -Right clicking on the various nodes in the Data Sources area of the tree will allow you to get more options for each data source and its contents. +If the "Group by Person/Host" option has been selected in the \ref view_options_group "View Options", the hosts and data sources will be organized under any persons that have been associated with the hosts. Additionally, the rest of the nodes (Views, Results, etc) will be found under each data source. + +\image html ui_tree_top_persons.png + +\subsection ui_tree_persons Persons + +If the "Group by Person/Host" option in the \ref view_options_group "View Options" has been set, the top level nodes will display persons. Persons are manually created and can be associated with one or more hosts. To add or remove a person from a host, right-click on the host and select the appropriate option. + +\image html ui_person_select.png + +You can edit and delete persons by right-clicking on the node. + +\subsection ui_tree_hosts Hosts + +All data sources are organized under host nodes. See the \ref host_page "hosts page" for more information on using hosts. + +\subsection ui_tree_ds_node Data Sources +Under the hosts are the nodes for each data source. Unallocated space is the chunks of a file system that are currently not being used for anything. Unallocated space can hold deleted files and other interesting artifacts. In an image data source, unallocated space is stored in blocks with distinct locations in the file system. However, because of the way carving tools work, it is better to feed these tools a single, large unallocated space file. Autopsy provides access to both methods of looking at unallocated space. \li Individual blocks in a volume For each volume, there is a "virtual" folder named "$Unalloc". This folder contains all the individual unallocated blocks in contiguous runs (unallocated space files) as the image is storing them. You can right click and extract any unallocated space file the same way you can extract any other type of file in the Data Sources area. diff --git a/docs/doxygen-user/troubleshooting.dox b/docs/doxygen-user/troubleshooting.dox index 666b86f10b..c08ebf50c4 100644 --- a/docs/doxygen-user/troubleshooting.dox +++ b/docs/doxygen-user/troubleshooting.dox @@ -9,18 +9,19 @@ If you are experiencing an error, we encourage you to post on the forum (https:/
  • What led to the error. For example:
    • What type of data source was being processed? -
    • Which ingest modules were running? +
    • Which ingest modules were running? You can generate an \ref ingest_monitoring "ingest snapshot" to view the current ingest state.
    • Which specialized viewer were you using?
  • The error being displayed on screen (if applicable) +
  • A \ref troubleshooting_stack "thread dump" or screenshot of the \ref ingest_monitoring "ingest snapshot" if Autopsy seems stuck
  • If there were any errors in the \ref troubleshooting_logs "logs" \section troubleshooting_specific_issues Specific Issues -\subsection troubleshooting_fond_size Font Size Too Small in Windows +\subsection troubleshooting_fond_size Font Size Too Small -Make the following changes if the application is hard to navigate in High DPI systems: +In Windows, you can make the following changes if the application is hard to navigate in High DPI systems:
    1. Right-click on the application icon on your Desktop, Start Menu, etc. @@ -32,8 +33,18 @@ Make the following changes if the application is hard to navigate in High DPI sy
    2. Restart Autopsy.
    +In Linux, you can supply the font size with "--fontsize XX" command line argument, but not all of the dialogs are correctly responsive and some of the text will get cut off. + \section troubleshooting_general General Troubleshooting +\subsection troubleshooting_reset_ui Resetting the UI + +If the Autopsy window no longer looks like the default \ref uilayout_page (for example, if a viewer has disappeared or there is a strange empty space), you can reset it. To do this, go to Window->Reset Windows. This will cause Autopsy to restart. If you have a case open, it will reopen after the reset. + +\image html reset_windows.png + +If resetting the windows does not fix the problem, you may need to delete your user folder as described in the next section. + \subsection troubleshooting_user_folder Deleting the Autopsy User Folder If Autopsy starts behaving strangely, stops loading entirely, or menu items go missing, you probably need to delete your user folder. Doing so essenitally gives you a fresh installation. On Windows the user folder is located in "C:\Users\(user name)\AppData\Roaming\autopsy". diff --git a/docs/doxygen-user/view_options.dox b/docs/doxygen-user/view_options.dox index 1ff398da81..270d919507 100644 --- a/docs/doxygen-user/view_options.dox +++ b/docs/doxygen-user/view_options.dox @@ -66,11 +66,15 @@ If you have a \ref machine_translation_page module installed, this option will a The settings in this section only apply to the current case. -\subsection view_options_group Group by data source +\subsection view_options_group Data Source Grouping -The "Group by data source" option allows you to separate all elements in the \ref ui_tree by data source. This can help nodes load faster on large cases. +The options here allow you to choose how to display data in the \ref ui_tree. The top option ("Group by Data Type") displays combined results for all data sources. All nodes on the tree will contain combined results for all data sources in the case. -\image html ui_layout_group_tree.PNG +\image html views_standard_tree.png + +The second option ("Group by Person/Host") separates the results for each data source, and organizes the data sources by \ref ui_tree_persons "person" and \ref ui_tree_hosts "host". + +\image html views_grouped_tree.png \section view_options_session Current Session Settings diff --git a/thirdparty/NetbeansLocalization/README.txt b/thirdparty/NetbeansLocalization/README.txt new file mode 100644 index 0000000000..c5751c99f0 --- /dev/null +++ b/thirdparty/NetbeansLocalization/README.txt @@ -0,0 +1 @@ +This contains jars provided in Netbeans 8 RCP that provide localization bundles. They do not appear to be included in Netbeans >= 9. See Jira 7434 for more information. diff --git a/thirdparty/NetbeansLocalization/org-jdesktop-layout_ja.jar b/thirdparty/NetbeansLocalization/org-jdesktop-layout_ja.jar new file mode 100644 index 0000000000..070f7febd5 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-jdesktop-layout_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-annotations-common_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-annotations-common_ja.jar new file mode 100644 index 0000000000..edb9a78b04 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-annotations-common_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-htmlui_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-htmlui_ja.jar new file mode 100644 index 0000000000..935bd84100 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-htmlui_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-intent_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-intent_ja.jar new file mode 100644 index 0000000000..4f476868ae Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-intent_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-io_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-io_ja.jar new file mode 100644 index 0000000000..d115ccc52d Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-io_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-progress-compat8_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-progress-compat8_ja.jar new file mode 100644 index 0000000000..902ee4b55e Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-progress-compat8_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-progress-nb_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-progress-nb_ja.jar new file mode 100644 index 0000000000..3cd2c2c517 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-progress-nb_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-progress_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-progress_ja.jar new file mode 100644 index 0000000000..7ae7ceb95d Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-progress_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-search_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-search_ja.jar new file mode 100644 index 0000000000..a77ec100a2 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-search_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-templates_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-templates_ja.jar new file mode 100644 index 0000000000..a0db573a65 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-templates_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-api-visual_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-api-visual_ja.jar new file mode 100644 index 0000000000..305048fb13 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-api-visual_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-execution_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-execution_ja.jar new file mode 100644 index 0000000000..22e24e7de8 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-execution_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-io-ui_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-io-ui_ja.jar new file mode 100644 index 0000000000..2096ba4174 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-io-ui_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-multitabs_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-multitabs_ja.jar new file mode 100644 index 0000000000..a86f711f83 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-multitabs_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-multiview_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-multiview_ja.jar new file mode 100644 index 0000000000..bd6f67dff9 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-multiview_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-nativeaccess_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-nativeaccess_ja.jar new file mode 100644 index 0000000000..dc386bac99 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-nativeaccess_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-netigso_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-netigso_ja.jar new file mode 100644 index 0000000000..57429511f7 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-netigso_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-network_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-network_ja.jar new file mode 100644 index 0000000000..b7d257b02c Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-network_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-osgi_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-osgi_ja.jar new file mode 100644 index 0000000000..1fc1980df7 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-osgi_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-output2_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-output2_ja.jar new file mode 100644 index 0000000000..a024cec8d8 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-output2_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-ui_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-ui_ja.jar new file mode 100644 index 0000000000..583bed5055 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-ui_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core-windows_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core-windows_ja.jar new file mode 100644 index 0000000000..22ebd5d849 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core-windows_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-core_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-core_ja.jar new file mode 100644 index 0000000000..ee88e3d0b2 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-core_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-lib-uihandler_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-lib-uihandler_ja.jar new file mode 100644 index 0000000000..12964589fe Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-lib-uihandler_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-libs-felix_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-libs-felix_ja.jar new file mode 100644 index 0000000000..2237f74e64 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-libs-felix_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-libs-javafx_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-libs-javafx_ja.jar new file mode 100644 index 0000000000..e27934543a Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-libs-javafx_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-libs-jna-platform_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-libs-jna-platform_ja.jar new file mode 100644 index 0000000000..bfb0273184 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-libs-jna-platform_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-libs-jna_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-libs-jna_ja.jar new file mode 100644 index 0000000000..f6a70fdef9 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-libs-jna_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-libs-jsr223_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-libs-jsr223_ja.jar new file mode 100644 index 0000000000..aaaeae7439 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-libs-jsr223_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-libs-junit4_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-libs-junit4_ja.jar new file mode 100644 index 0000000000..d2504a6e01 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-libs-junit4_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-libs-osgi_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-libs-osgi_ja.jar new file mode 100644 index 0000000000..46c049df50 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-libs-osgi_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-libs-testng_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-libs-testng_ja.jar new file mode 100644 index 0000000000..5e6a42ced2 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-libs-testng_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-applemenu_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-applemenu_ja.jar new file mode 100644 index 0000000000..a87cab81b9 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-applemenu_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-autoupdate-cli_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-autoupdate-cli_ja.jar new file mode 100644 index 0000000000..a485b6f5ef Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-autoupdate-cli_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-autoupdate-services_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-autoupdate-services_ja.jar new file mode 100644 index 0000000000..696c3cf0bc Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-autoupdate-services_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-autoupdate-ui_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-autoupdate-ui_ja.jar new file mode 100644 index 0000000000..2944325af7 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-autoupdate-ui_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-core-kit_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-core-kit_ja.jar new file mode 100644 index 0000000000..7fb1cf061c Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-core-kit_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-editor-mimelookup-impl_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-editor-mimelookup-impl_ja.jar new file mode 100644 index 0000000000..1bed7e0b38 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-editor-mimelookup-impl_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-editor-mimelookup_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-editor-mimelookup_ja.jar new file mode 100644 index 0000000000..ab36fa091a Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-editor-mimelookup_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-favorites_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-favorites_ja.jar new file mode 100644 index 0000000000..b9829e54c0 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-favorites_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-javahelp_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-javahelp_ja.jar new file mode 100644 index 0000000000..e80bbd607a Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-javahelp_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-junitlib_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-junitlib_ja.jar new file mode 100644 index 0000000000..a9d8bce0ee Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-junitlib_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-keyring-fallback_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-keyring-fallback_ja.jar new file mode 100644 index 0000000000..6fa12e67da Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-keyring-fallback_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-keyring-impl_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-keyring-impl_ja.jar new file mode 100644 index 0000000000..cdd341da23 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-keyring-impl_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-keyring_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-keyring_ja.jar new file mode 100644 index 0000000000..733a9b20e5 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-keyring_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-linux_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-linux_ja.jar new file mode 100644 index 0000000000..4b493caa98 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-linux_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-macosx_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-macosx_ja.jar new file mode 100644 index 0000000000..2ffd662388 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-macosx_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-nio2_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-nio2_ja.jar new file mode 100644 index 0000000000..d1eb2762b9 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-nio2_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-ui_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-ui_ja.jar new file mode 100644 index 0000000000..9eae950a75 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-ui_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-windows_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-windows_ja.jar new file mode 100644 index 0000000000..b31b2bd76b Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs-windows_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs_ja.jar new file mode 100644 index 0000000000..fdbe8874ac Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-masterfs_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-netbinox_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-netbinox_ja.jar new file mode 100644 index 0000000000..81d02839f5 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-netbinox_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-options-api_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-options-api_ja.jar new file mode 100644 index 0000000000..d7fc6636a4 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-options-api_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-options-keymap_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-options-keymap_ja.jar new file mode 100644 index 0000000000..aa05ab9434 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-options-keymap_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-print_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-print_ja.jar new file mode 100644 index 0000000000..17333fcb69 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-print_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-progress-ui_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-progress-ui_ja.jar new file mode 100644 index 0000000000..71b4f6c62c Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-progress-ui_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-queries_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-queries_ja.jar new file mode 100644 index 0000000000..fb46c44bbf Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-queries_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-sampler_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-sampler_ja.jar new file mode 100644 index 0000000000..7b8d70e76a Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-sampler_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-sendopts_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-sendopts_ja.jar new file mode 100644 index 0000000000..8bb8725873 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-sendopts_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-settings_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-settings_ja.jar new file mode 100644 index 0000000000..4edce51acd Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-settings_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-spi-actions_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-spi-actions_ja.jar new file mode 100644 index 0000000000..34340d9419 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-spi-actions_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-templates_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-templates_ja.jar new file mode 100644 index 0000000000..67dec8d299 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-templates_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-templatesui_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-templatesui_ja.jar new file mode 100644 index 0000000000..c58fabf436 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-templatesui_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-modules-uihandler_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-modules-uihandler_ja.jar new file mode 100644 index 0000000000..94401aa524 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-modules-uihandler_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-spi-quicksearch_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-spi-quicksearch_ja.jar new file mode 100644 index 0000000000..0356025fdf Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-spi-quicksearch_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-swing-outline_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-swing-outline_ja.jar new file mode 100644 index 0000000000..6fa52f1e3e Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-swing-outline_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-swing-plaf_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-swing-plaf_ja.jar new file mode 100644 index 0000000000..6007a388a6 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-swing-plaf_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-netbeans-swing-tabcontrol_ja.jar b/thirdparty/NetbeansLocalization/org-netbeans-swing-tabcontrol_ja.jar new file mode 100644 index 0000000000..75357b99f1 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-netbeans-swing-tabcontrol_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-actions_ja.jar b/thirdparty/NetbeansLocalization/org-openide-actions_ja.jar new file mode 100644 index 0000000000..f393db1170 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-actions_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-awt_ja.jar b/thirdparty/NetbeansLocalization/org-openide-awt_ja.jar new file mode 100644 index 0000000000..f35574dd86 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-awt_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-compat_ja.jar b/thirdparty/NetbeansLocalization/org-openide-compat_ja.jar new file mode 100644 index 0000000000..bba222edfa Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-compat_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-dialogs_ja.jar b/thirdparty/NetbeansLocalization/org-openide-dialogs_ja.jar new file mode 100644 index 0000000000..fdd75a84d5 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-dialogs_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-execution-compat8_ja.jar b/thirdparty/NetbeansLocalization/org-openide-execution-compat8_ja.jar new file mode 100644 index 0000000000..11c1df1ea1 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-execution-compat8_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-execution_ja.jar b/thirdparty/NetbeansLocalization/org-openide-execution_ja.jar new file mode 100644 index 0000000000..e1b84b35bc Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-execution_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-explorer_ja.jar b/thirdparty/NetbeansLocalization/org-openide-explorer_ja.jar new file mode 100644 index 0000000000..c8a06bbd70 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-explorer_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-filesystems-nb_ja.jar b/thirdparty/NetbeansLocalization/org-openide-filesystems-nb_ja.jar new file mode 100644 index 0000000000..55b02fc68a Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-filesystems-nb_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-io_ja.jar b/thirdparty/NetbeansLocalization/org-openide-io_ja.jar new file mode 100644 index 0000000000..50e19b9778 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-io_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-loaders_ja.jar b/thirdparty/NetbeansLocalization/org-openide-loaders_ja.jar new file mode 100644 index 0000000000..c06d6e1712 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-loaders_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-nodes_ja.jar b/thirdparty/NetbeansLocalization/org-openide-nodes_ja.jar new file mode 100644 index 0000000000..ed84a00886 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-nodes_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-options_ja.jar b/thirdparty/NetbeansLocalization/org-openide-options_ja.jar new file mode 100644 index 0000000000..b306b0a028 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-options_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-text_ja.jar b/thirdparty/NetbeansLocalization/org-openide-text_ja.jar new file mode 100644 index 0000000000..3e7e07b059 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-text_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-util-enumerations_ja.jar b/thirdparty/NetbeansLocalization/org-openide-util-enumerations_ja.jar new file mode 100644 index 0000000000..841b9d7551 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-util-enumerations_ja.jar differ diff --git a/thirdparty/NetbeansLocalization/org-openide-windows_ja.jar b/thirdparty/NetbeansLocalization/org-openide-windows_ja.jar new file mode 100644 index 0000000000..92fc28e2d8 Binary files /dev/null and b/thirdparty/NetbeansLocalization/org-openide-windows_ja.jar differ