19 package org.sleuthkit.autopsy.core;
21 import java.util.Base64;
22 import java.util.prefs.BackingStoreException;
24 import java.util.prefs.PreferenceChangeListener;
25 import java.util.prefs.Preferences;
26 import javax.crypto.Cipher;
27 import javax.crypto.SecretKey;
28 import javax.crypto.SecretKeyFactory;
29 import javax.crypto.spec.PBEKeySpec;
30 import javax.crypto.spec.PBEParameterSpec;
31 import org.openide.util.NbBundle;
32 import org.openide.util.NbPreferences;
70 private static final String
APP_NAME =
"AppName";
98 preferences.addPreferenceChangeListener(listener);
102 preferences.removePreferenceChangeListener(listener);
106 return preferences.getBoolean(KEEP_PREFERRED_VIEWER,
false);
110 preferences.putBoolean(KEEP_PREFERRED_VIEWER, value);
114 return preferences.getBoolean(HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE,
false);
118 preferences.putBoolean(HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE, value);
122 return preferences.getBoolean(HIDE_KNOWN_FILES_IN_VIEWS_TREE,
true);
126 preferences.putBoolean(HIDE_KNOWN_FILES_IN_VIEWS_TREE, value);
130 return preferences.getBoolean(HIDE_SLACK_FILES_IN_DATA_SOURCES_TREE,
true);
134 preferences.putBoolean(HIDE_SLACK_FILES_IN_DATA_SOURCES_TREE, value);
138 return preferences.getBoolean(HIDE_SLACK_FILES_IN_VIEWS_TREE,
true);
142 preferences.putBoolean(HIDE_SLACK_FILES_IN_VIEWS_TREE, value);
146 return preferences.getBoolean(DISPLAY_TIMES_IN_LOCAL_TIME,
true);
150 preferences.putBoolean(DISPLAY_TIMES_IN_LOCAL_TIME, value);
154 return preferences.getInt(NUMBER_OF_FILE_INGEST_THREADS, 2);
158 preferences.putInt(NUMBER_OF_FILE_INGEST_THREADS, value);
169 dbType = DbType.valueOf(preferences.get(EXTERNAL_DATABASE_TYPE,
"POSTGRESQL"));
170 }
catch (Exception ex) {
171 dbType = DbType.SQLITE;
173 return new CaseDbConnectionInfo(
174 preferences.get(EXTERNAL_DATABASE_HOSTNAME_OR_IP,
""),
175 preferences.get(EXTERNAL_DATABASE_PORTNUMBER,
"5432"),
176 preferences.get(EXTERNAL_DATABASE_USER,
""),
177 TextConverter.convertHexTextToText(preferences.get(EXTERNAL_DATABASE_PASSWORD,
"")),
189 preferences.put(EXTERNAL_DATABASE_HOSTNAME_OR_IP, connectionInfo.getHost());
190 preferences.put(EXTERNAL_DATABASE_PORTNUMBER, connectionInfo.getPort());
191 preferences.put(EXTERNAL_DATABASE_USER, connectionInfo.getUserName());
192 preferences.put(EXTERNAL_DATABASE_PASSWORD, TextConverter.convertTextToHexText(connectionInfo.getPassword()));
193 preferences.put(EXTERNAL_DATABASE_TYPE, connectionInfo.getDbType().toString());
197 preferences.putBoolean(IS_MULTI_USER_MODE_ENABLED, enabled);
204 return preferences.getBoolean(IS_MULTI_USER_MODE_ENABLED,
false);
208 return preferences.get(INDEXING_SERVER_HOST,
"");
212 preferences.put(INDEXING_SERVER_HOST, hostName);
216 return preferences.get(INDEXING_SERVER_PORT,
"8983");
220 preferences.putInt(INDEXING_SERVER_PORT, port);
230 preferences.put(MESSAGE_SERVICE_HOST, info.getHost());
231 preferences.put(MESSAGE_SERVICE_PORT, Integer.toString(info.getPort()));
232 preferences.put(MESSAGE_SERVICE_USER, info.getUserName());
233 preferences.put(MESSAGE_SERVICE_PASSWORD, TextConverter.convertTextToHexText(info.getPassword()));
245 port = Integer.parseInt(preferences.get(MESSAGE_SERVICE_PORT, DEFAULT_PORT_STRING));
246 }
catch (NumberFormatException ex) {
252 preferences.get(MESSAGE_SERVICE_HOST,
""),
254 preferences.get(MESSAGE_SERVICE_USER,
""),
255 TextConverter.convertHexTextToText(preferences.get(MESSAGE_SERVICE_PASSWORD,
"")));
264 int timeOut = preferences.getInt(PROCESS_TIME_OUT_HOURS, DEFAULT_PROCESS_TIMEOUT_HR);
280 preferences.putInt(PROCESS_TIME_OUT_HOURS, value);
291 boolean enabled = preferences.getBoolean(PROCESS_TIME_OUT_ENABLED,
false);
303 preferences.putBoolean(PROCESS_TIME_OUT_ENABLED, enabled);
311 return preferences.get(APP_NAME,
"Autopsy");
320 preferences.put(APP_NAME, name);
327 static final class TextConverter {
329 private static final char[] TMP =
"hgleri21auty84fwe".toCharArray();
330 private static final byte[] SALT = {
331 (byte) 0xde, (byte) 0x33, (byte) 0x10, (byte) 0x12,
332 (byte) 0xde, (byte) 0x33, (byte) 0x10, (byte) 0x12,};
343 static String convertTextToHexText(String property)
throws UserPreferencesException {
345 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(
"PBEWithMD5AndDES");
346 SecretKey key = keyFactory.generateSecret(
new PBEKeySpec(TMP));
347 Cipher pbeCipher = Cipher.getInstance(
"PBEWithMD5AndDES");
348 pbeCipher.init(Cipher.ENCRYPT_MODE, key,
new PBEParameterSpec(SALT, 20));
349 return base64Encode(pbeCipher.doFinal(property.getBytes(
"UTF-8")));
350 }
catch (Exception ex) {
351 throw new UserPreferencesException(
352 NbBundle.getMessage(TextConverter.class,
"TextConverter.convert.exception.txt"));
356 private static String base64Encode(byte[] bytes) {
357 return Base64.getEncoder().encodeToString(bytes);
369 static String convertHexTextToText(String property)
throws UserPreferencesException {
371 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(
"PBEWithMD5AndDES");
372 SecretKey key = keyFactory.generateSecret(
new PBEKeySpec(TMP));
373 Cipher pbeCipher = Cipher.getInstance(
"PBEWithMD5AndDES");
374 pbeCipher.init(Cipher.DECRYPT_MODE, key,
new PBEParameterSpec(SALT, 20));
375 return new String(pbeCipher.doFinal(base64Decode(property)),
"UTF-8");
376 }
catch (Exception ex) {
377 throw new UserPreferencesException(
378 NbBundle.getMessage(TextConverter.class,
"TextConverter.convertFromHex.exception.txt"));
382 private static byte[] base64Decode(String property) {
383 return Base64.getDecoder().decode(property);
static final String HIDE_SLACK_FILES_IN_VIEWS_TREE
static final String HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE
static final String HIDE_KNOWN_FILES_IN_VIEWS_TREE
static void setProcessTimeOutHrs(int value)
static void setKeepPreferredContentViewer(boolean value)
static int getProcessTimeOutHrs()
static boolean hideSlackFilesInDataSourcesTree()
static final int DEFAULT_PROCESS_TIMEOUT_HR
static String getIndexingServerPort()
static void setNumberOfFileIngestThreads(int value)
static String getAppName()
static void reloadFromStorage()
static void setDisplayTimesInLocalTime(boolean value)
static final String EXTERNAL_DATABASE_NAME
static final String EXTERNAL_DATABASE_USER
static final String DEFAULT_PORT_STRING
static final boolean isWindowsOS
static boolean getIsMultiUserModeEnabled()
static void setHideSlackFilesInViewsTree(boolean value)
static CaseDbConnectionInfo getDatabaseConnectionInfo()
static boolean keepPreferredContentViewer()
static boolean hideKnownFilesInViewsTree()
static void setIsTimeOutEnabled(boolean enabled)
static void setIsMultiUserModeEnabled(boolean enabled)
static final String HIDE_SLACK_FILES_IN_DATA_SOURCES_TREE
static void removeChangeListener(PreferenceChangeListener listener)
static void setMessageServiceConnectionInfo(MessageServiceConnectionInfo info)
static final String IS_MULTI_USER_MODE_ENABLED
static final String NUMBER_OF_FILE_INGEST_THREADS
static void setHideKnownFilesInViewsTree(boolean value)
static boolean getIsTimeOutEnabled()
static int numberOfFileIngestThreads()
static final Preferences preferences
static final String DISPLAY_TIMES_IN_LOCAL_TIME
static void setAppName(String name)
static final int DEFAULT_PORT_INT
static void setDatabaseConnectionInfo(CaseDbConnectionInfo connectionInfo)
static final String EXTERNAL_DATABASE_PORTNUMBER
static final String PROCESS_TIME_OUT_ENABLED
static final String KEEP_PREFERRED_VIEWER
static final String MESSAGE_SERVICE_PORT
static void saveToStorage()
static void setIndexingServerHost(String hostName)
static final String MESSAGE_SERVICE_PASSWORD
static final String INDEXING_SERVER_HOST
static boolean hideSlackFilesInViewsTree()
static void setHideSlackFilesInDataSourcesTree(boolean value)
static void setHideKnownFilesInDataSourcesTree(boolean value)
static void setIndexingServerPort(int port)
static final String PROCESS_TIME_OUT_HOURS
static final String MESSAGE_SERVICE_HOST
static final String APP_NAME
static boolean hideKnownFilesInDataSourcesTree()
static final String MESSAGE_SERVICE_USER
static void addChangeListener(PreferenceChangeListener listener)
static final String EXTERNAL_DATABASE_TYPE
static final String INDEXING_SERVER_PORT
static String getIndexingServerHost()
static boolean displayTimesInLocalTime()
static final String EXTERNAL_DATABASE_PASSWORD
static final String EXTERNAL_DATABASE_HOSTNAME_OR_IP
static MessageServiceConnectionInfo getMessageServiceConnectionInfo()