This commit is contained in:
Sean Moss 2013-03-12 13:53:52 -04:00
commit 8c9c9cb9bb
6 changed files with 55 additions and 50 deletions

View File

@ -1,7 +1,7 @@
/*
* Autopsy Forensic Browser
*
* Copyright 2011 Basis Technology Corp.
* Copyright 2011-2013 Basis Technology Corp.
* Contact: carrier <at> sleuthkit <dot> org
*
* Licensed under the Apache License, Version 2.0 (the "License");
@ -46,6 +46,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.CoreComponentControl;
import org.sleuthkit.autopsy.coreutils.FileUtil;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
import org.sleuthkit.autopsy.coreutils.Version;
import org.sleuthkit.datamodel.*;
import org.sleuthkit.datamodel.SleuthkitJNI.CaseDbHandle.AddImageProcess;
@ -877,6 +878,7 @@ public class Case {
//case change helper
private static void doCaseChange(Case toChangeTo) {
logger.log(Level.INFO, "Changing Case to: " + toChangeTo);
if (toChangeTo != null) { // new case is open
// clear the temp folder when the case is created / opened
@ -916,6 +918,9 @@ public class Case {
f.setTitle(Case.getAppName()); // set the window name to just application name
}
//log memory usage after case changed
logger.log(Level.INFO, PlatformUtil.getAllMemUsageInfo());
}

View File

@ -360,9 +360,10 @@ public class DataContentViewerMedia extends javax.swing.JPanel implements DataCo
return false;
}
if (file.isDirNameFlagSet(TSK_FS_NAME_FLAG_ENUM.UNALLOC)) {
return false;
}
//try displaying deleted files if we can read them
//if (file.isDirNameFlagSet(TSK_FS_NAME_FLAG_ENUM.UNALLOC)) {
// return false;
//}
if (file.getSize() == 0) {
return false;

View File

@ -150,7 +150,7 @@ public abstract class KeywordSearchListsAbstract {
}
List<KeywordSearchList> getListsL() {
public List<KeywordSearchList> getListsL() {
List<KeywordSearchList> ret = new ArrayList<KeywordSearchList>();
for (KeywordSearchList list : theLists.values()) {
ret.add(list);
@ -158,7 +158,7 @@ public abstract class KeywordSearchListsAbstract {
return ret;
}
List<KeywordSearchList> getListsL(boolean locked) {
public List<KeywordSearchList> getListsL(boolean locked) {
List<KeywordSearchList> ret = new ArrayList<KeywordSearchList>();
for (KeywordSearchList list : theLists.values()) {
if (list.isLocked().equals(locked)) {
@ -173,7 +173,7 @@ public abstract class KeywordSearchListsAbstract {
*
* @return List of keyword list names
*/
List<String> getListNames() {
public List<String> getListNames() {
return new ArrayList<String>(theLists.keySet());
}
@ -183,7 +183,7 @@ public abstract class KeywordSearchListsAbstract {
* @param locked true if look for locked lists, false otherwise
* @return List of keyword list names
*/
List<String> getListNames(boolean locked) {
public List<String> getListNames(boolean locked) {
ArrayList<String> lists = new ArrayList<String>();
for (String listName : theLists.keySet()) {
KeywordSearchList list = theLists.get(listName);
@ -201,7 +201,7 @@ public abstract class KeywordSearchListsAbstract {
* @param keyword
* @return found list or null
*/
KeywordSearchList getListWithKeyword(Keyword keyword) {
public KeywordSearchList getListWithKeyword(Keyword keyword) {
KeywordSearchList found = null;
for (KeywordSearchList list : theLists.values()) {
if (list.hasKeyword(keyword)) {
@ -218,7 +218,7 @@ public abstract class KeywordSearchListsAbstract {
* @param keyword
* @return found list or null
*/
KeywordSearchList getListWithKeyword(String keyword) {
public KeywordSearchList getListWithKeyword(String keyword) {
KeywordSearchList found = null;
for (KeywordSearchList list : theLists.values()) {
if (list.hasKeyword(keyword)) {
@ -244,7 +244,7 @@ public abstract class KeywordSearchListsAbstract {
* @param locked true if look for locked lists, false otherwise
* @return number of unlocked lists currently stored
*/
int getNumberLists(boolean locked) {
public int getNumberLists(boolean locked) {
int numLists = 0;
for (String listName : theLists.keySet()) {
KeywordSearchList list = theLists.get(listName);
@ -261,7 +261,7 @@ public abstract class KeywordSearchListsAbstract {
* @param name id of the list
* @return keyword list representation
*/
KeywordSearchList getList(String name) {
public KeywordSearchList getList(String name) {
return theLists.get(name);
}
@ -477,19 +477,19 @@ public abstract class KeywordSearchListsAbstract {
return hash;
}
String getName() {
public String getName() {
return name;
}
Date getDateCreated() {
public Date getDateCreated() {
return created;
}
Date getDateModified() {
public Date getDateModified() {
return modified;
}
Boolean getUseForIngest() {
public Boolean getUseForIngest() {
return useForIngest;
}
@ -497,7 +497,7 @@ public abstract class KeywordSearchListsAbstract {
this.useForIngest = use;
}
Boolean getIngestMessages() {
public Boolean getIngestMessages() {
return ingestMessages;
}
@ -505,7 +505,7 @@ public abstract class KeywordSearchListsAbstract {
this.ingestMessages = ingestMessages;
}
List<Keyword> getKeywords() {
public List<Keyword> getKeywords() {
return keywords;
}
@ -513,7 +513,7 @@ public abstract class KeywordSearchListsAbstract {
return keywords.contains(keyword);
}
boolean hasKeyword(String keyword) {
public boolean hasKeyword(String keyword) {
//note, this ignores isLiteral
for (Keyword k : keywords) {
if (k.getQuery().equals(keyword)) {
@ -523,7 +523,7 @@ public abstract class KeywordSearchListsAbstract {
return false;
}
Boolean isLocked() {
public Boolean isLocked() {
return locked;
}
}

View File

@ -9,10 +9,12 @@ Improvements:
- show children counts in directory tree
Bugfixes:
- fixed memory leaks in "Add Image"
- show error message in hex and string viewer if specific offset of a file could not be read.
- file search actions not always enabled when new case is open.
- fixed directory tree history being reset when tree is refreshed.
- exif module better jpeg detection using signature and not only file extension.
- The "media view" tab is inactive for deleted files (#165)
---------------- VERSION 3.0.4 --------------

View File

@ -2,10 +2,10 @@
*
* Autopsy Forensic Browser
*
* Copyright 2012 Basis Technology Corp.
* Copyright 2012-2013 Basis Technology Corp.
*
* Copyright 2012 42six Solutions.
* Contact: aebadirad <at> 42six <dot> com
*
* Project Contact/Architect: carrier <at> sleuthkit <dot> org
*
* Licensed under the Apache License, Version 2.0 (the "License");
@ -117,12 +117,9 @@ public class Chrome extends Extract implements IngestModuleImage {
}
}
// we should have only one allocated history file. Log a warning if we
// have more, but process them all
if (allocatedHistoryFiles.size() > 1) {
logger.log(Level.INFO, "Found more than one allocated Chrome history file. Processing them all.");
} else if (allocatedHistoryFiles.size() == 0) {
logger.log(Level.INFO, "Could not find an allocated Chrome history file.");
// log a message if we don't have any allocated history files
if (allocatedHistoryFiles.size() == 0) {
logger.log(Level.INFO, "Could not find any allocated Chrome history files.");
return;
}

View File

@ -1,5 +1,5 @@
#!/usr/bin/python
#en_US.latin-1
#!/usr/bin/python
# -*- coding: utf_8 -*-
import codecs
import datetime
import logging
@ -372,15 +372,15 @@ def run_config_test(config_file):
parsed = parse(config_file)
counts = {}
if parsed.getElementsByTagName("indir"):
case.input_dir = parsed.getElementsByTagName("indir")[0].getAttribute("value").encode().decode("utf-8")
case.input_dir = parsed.getElementsByTagName("indir")[0].getAttribute("value").encode().decode("utf_8")
if parsed.getElementsByTagName("global_csv"):
case.global_csv = parsed.getElementsByTagName("global_csv")[0].getAttribute("value").encode().decode("utf-8")
case.global_csv = parsed.getElementsByTagName("global_csv")[0].getAttribute("value").encode().decode("utf_8")
# Generate the top navbar of the HTML for easy access to all images
case.global_csv = make_local_path(case.global_csv)
values = []
for element in parsed.getElementsByTagName("image"):
value = element.getAttribute("value").encode().decode("utf-8")
value = element.getAttribute("value").encode().decode("utf_8")
if file_exists(value):
values.append(value)
html_add_images(values)
@ -390,7 +390,7 @@ def run_config_test(config_file):
if(args.contin):
#set all times an image has been processed to 0
for element in parsed.getElementsByTagName("image"):
value = element.getAttribute("value").encode().decode("utf-8")
value = element.getAttribute("value").encode().decode("utf_8")
images.append(value)
#Begin infiniloop
if(newDay()):
@ -812,14 +812,14 @@ def compare_tsk_objects():
def generate_common_log():
try:
logs_path = make_local_path(case.output_dir, case.image_name, "logs")
common_log = codecs.open(case.common_log_path, "w", "latin-1")
common_log = codecs.open(case.common_log_path, "w", "utf_8")
print(case.common_log_path)
warning_log = codecs.open(case.warning_log, "w", "latin_1")
warning_log = codecs.open(case.warning_log, "w", "utf_8")
common_log.write("--------------------------------------------------\n")
common_log.write(case.image_name + "\n")
common_log.write("--------------------------------------------------\n")
for file in os.listdir(logs_path):
log = codecs.open(make_path(logs_path, file), "r", "latin-1")
log = codecs.open(make_path(logs_path, file), "r", "utf_8")
for line in log:
if line.startswith("Exception"):
common_log.write("From " + file +":\n" + line + "\n")
@ -845,14 +845,14 @@ def generate_common_log():
def compare_errors():
gold_dir = make_local_path(case.gold, case.image_name, case.image_name + "SortedErrors.txt")
common_log = codecs.open(case.sorted_log, "r", "latin-1")
gold_log = codecs.open(gold_dir, "r", "latin-1")
common_log = codecs.open(case.sorted_log, "r", "utf_8")
gold_log = codecs.open(gold_dir, "r", "utf_8")
gold_dat = gold_log.read()
common_dat = common_log.read()
patrn = re.compile("\d")
if (re.sub(patrn, 'd', gold_dat) != re.sub(patrn, 'd', common_dat)):
if (not((re.sub(patrn, 'd', gold_dat)) == (re.sub(patrn, 'd', common_dat)))):
diff_dir = make_local_path(case.output_dir, case.image_name, "ErrorDiff.txt")
diff_file = open(diff_dir, "w")
diff_file = open(diff_dir, "w")
dffcmdlst = ["diff", case.sorted_log, gold_dir]
subprocess.call(dffcmdlst, stdout = diff_file)
global attachl
@ -1034,7 +1034,7 @@ def get_exceptions():
results = []
for file in os.listdir(logs_path):
if "autopsy.log" in file:
log = codecs.open(make_path(logs_path, file), "r", "latin-1")
log = codecs.open(make_path(logs_path, file), "r", "utf_8")
ex = re.compile("\SException")
er = re.compile("\SError")
for line in log:
@ -1046,7 +1046,7 @@ def get_exceptions():
# Returns a list of all the warnings listed in the common log
def get_warnings():
warnings = []
common_log = codecs.open(case.warning_log, "r", "latin-1")
common_log = codecs.open(case.warning_log, "r", "utf_8")
for line in common_log:
if "warning" in line.lower():
warnings.append(line)
@ -1068,7 +1068,7 @@ def regex_search_logs(regex):
logs_path = make_local_path(case.output_dir, case.image_name, "logs")
results = []
for file in os.listdir(logs_path):
log = codecs.open(make_path(logs_path, file), "r", "latin-1")
log = codecs.open(make_path(logs_path, file), "r", "utf_8")
for line in log:
if regex.search(line):
results.append(line)
@ -1082,7 +1082,7 @@ def search_logs(string):
logs_path = make_local_path(case.output_dir, case.image_name, "logs")
results = []
for file in os.listdir(logs_path):
log = codecs.open(make_path(logs_path, file), "r", "latin-1")
log = codecs.open(make_path(logs_path, file), "r", "utf_8")
for line in log:
if string in line:
results.append(line)
@ -1092,7 +1092,7 @@ def search_logs(string):
# Searches the common log for any instances of a specific string.
def search_common_log(string):
results = []
log = codecs.open(case.common_log_path, "r", "latin-1")
log = codecs.open(case.common_log_path, "r", "utf_8")
for line in log:
if string in line:
results.append(line)
@ -1105,7 +1105,7 @@ def search_log(log, string):
logs_path = make_local_path(case.output_dir, case.image_name, "logs", log)
try:
results = []
log = codecs.open(logs_path, "r", "latin-1")
log = codecs.open(logs_path, "r", "utf_8")
for line in log:
if string in line:
results.append(line)
@ -1122,7 +1122,7 @@ def search_log_set(type, string):
results = []
for file in os.listdir(logs_path):
if type in file:
log = codecs.open(make_path(logs_path, file), "r", "latin-1")
log = codecs.open(make_path(logs_path, file), "r", "utf_8")
for line in log:
if string in line:
results.append(line)
@ -1731,11 +1731,11 @@ def send_email():
if(len(element)<=0):
return
element = element[0]
toval = element.getAttribute("value").encode().decode("utf-8")
toval = element.getAttribute("value").encode().decode("utf_8")
if(toval==None):
return
element = parsed.getElementsByTagName("mail_server")[0]
serverval = element.getAttribute("value").encode().decode("utf-8")
serverval = element.getAttribute("value").encode().decode("utf_8")
# Create the container (outer) email message.
msg = MIMEMultipart()
msg['Subject'] = 'Email Test'