4251: Reconcile different OsAccount update philosophies.

This commit is contained in:
Raman Arora 2021-03-31 09:31:51 -04:00
parent 219e7afedd
commit d8d261fc4b

View File

@ -96,6 +96,7 @@ import org.sleuthkit.datamodel.OsAccount;
import org.sleuthkit.datamodel.OsAccountAttribute; import org.sleuthkit.datamodel.OsAccountAttribute;
import org.sleuthkit.datamodel.OsAccountInstance; import org.sleuthkit.datamodel.OsAccountInstance;
import org.sleuthkit.datamodel.OsAccountManager; import org.sleuthkit.datamodel.OsAccountManager;
import org.sleuthkit.datamodel.OsAccountManager.AccountUpdateStatus;
import org.sleuthkit.datamodel.OsAccountManager.NotUserSIDException; import org.sleuthkit.datamodel.OsAccountManager.NotUserSIDException;
import org.sleuthkit.datamodel.OsAccountRealm; import org.sleuthkit.datamodel.OsAccountRealm;
import org.sleuthkit.datamodel.ReadContentInputStream.ReadContentInputStreamException; import org.sleuthkit.datamodel.ReadContentInputStream.ReadContentInputStreamException;
@ -1977,7 +1978,8 @@ class ExtractRegistry extends Extract {
} else { } else {
osAccount = optional.get(); osAccount = optional.get();
if (userName != null && !userName.isEmpty()) { if (userName != null && !userName.isEmpty()) {
osAccount.setLoginName(userName); AccountUpdateStatus updateStatus = accountMgr.updateOsAccount(osAccount, null, userName, null, null, null, null);
osAccount = updateStatus.getUpdatedAccount().orElse(osAccount);
} }
} }
@ -1986,10 +1988,10 @@ class ExtractRegistry extends Extract {
String dir = homeDir.replaceFirst("^(%\\w*%)", ""); String dir = homeDir.replaceFirst("^(%\\w*%)", "");
dir = dir.replace("\\", "/"); dir = dir.replace("\\", "/");
attributes.add(createOsAccountAttribute(TSK_HOME_DIR, dir, osAccount, host, file)); attributes.add(createOsAccountAttribute(TSK_HOME_DIR, dir, osAccount, host, file));
osAccount.addAttributes(attributes);
accountMgr.addOsAccountAttributes(osAccount, attributes);
} }
accountMgr.updateOsAccount(osAccount);
} }
/** /**
@ -2048,12 +2050,11 @@ class ExtractRegistry extends Extract {
List<OsAccountAttribute> attributes = new ArrayList<>(); List<OsAccountAttribute> attributes = new ArrayList<>();
Long creationTime = null;
String value = userInfo.get(ACCOUNT_CREATED_KEY); String value = userInfo.get(ACCOUNT_CREATED_KEY);
if (value != null && !value.isEmpty() && !value.equals(NEVER_DATE)) { if (value != null && !value.isEmpty() && !value.equals(NEVER_DATE)) {
Long time = parseRegRipTime(value); creationTime = parseRegRipTime(value);
if (time != null) {
osAccount.setCreationTime(time);
}
} }
value = userInfo.get(LAST_LOGIN_KEY); value = userInfo.get(LAST_LOGIN_KEY);
@ -2066,9 +2067,10 @@ class ExtractRegistry extends Extract {
} }
} }
String loginName = null;
value = userInfo.get(USERNAME_KEY); value = userInfo.get(USERNAME_KEY);
if (value != null && !value.isEmpty()) { if (value != null && !value.isEmpty()) {
osAccount.setLoginName(value); loginName = value;
} }
value = userInfo.get(LOGIN_COUNT_KEY); value = userInfo.get(LOGIN_COUNT_KEY);
@ -2102,13 +2104,14 @@ class ExtractRegistry extends Extract {
} }
// FULL_NAME_KEY and NAME_KEY appear to be the same value. // FULL_NAME_KEY and NAME_KEY appear to be the same value.
String fullName = null;
value = userInfo.get(FULL_NAME_KEY); value = userInfo.get(FULL_NAME_KEY);
if (value != null && !value.isEmpty()) { if (value != null && !value.isEmpty()) {
osAccount.setFullName(value); fullName = value;
} else { } else {
value = userInfo.get(NAME_KEY); value = userInfo.get(NAME_KEY);
if (value != null && !value.isEmpty()) { if (value != null && !value.isEmpty()) {
osAccount.setFullName(value); fullName = value;
} }
} }
@ -2163,8 +2166,11 @@ class ExtractRegistry extends Extract {
groups, osAccount, host, regFile)); groups, osAccount, host, regFile));
} }
osAccount.addAttributes(attributes); // add the attributes to account.
tskCase.getOsAccountManager().updateOsAccount(osAccount); tskCase.getOsAccountManager().addOsAccountAttributes(osAccount, attributes);
// update the loginname, fullname, creationdate
tskCase.getOsAccountManager().updateOsAccount(osAccount, null, loginName, fullName, null, null, creationTime);
} }
/** /**