mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-09 14:49:32 +00:00
Getting artifacts via new Blackboard API
This commit is contained in:
parent
fcf7d0bbe0
commit
b0be8046a5
@ -129,69 +129,6 @@ public class CommAccountsDAO {
|
|||||||
return pagedAcctsStream.collect(Collectors.toList());
|
return pagedAcctsStream.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the clause that should be used in order to (not) filter out rejected
|
|
||||||
* results from db queries.
|
|
||||||
*
|
|
||||||
* @return A clause that will or will not filter out rejected artifacts
|
|
||||||
* based on the state of showRejected.
|
|
||||||
*/
|
|
||||||
private String getRejectedArtifactFilterClause(boolean showRejected) {
|
|
||||||
return showRejected ? " " : " AND artifacts.review_status_id != " + BlackboardArtifact.ReviewStatus.REJECTED.getID() + " "; //
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the clause to filter artifacts by data source.
|
|
||||||
*
|
|
||||||
* @return A clause that will or will not filter artifacts by datasource
|
|
||||||
* based on the CasePreferences groupItemsInTreeByDataSource setting
|
|
||||||
*/
|
|
||||||
private String getFilterByDataSourceClause(Long dataSourceId) {
|
|
||||||
if (dataSourceId != null && dataSourceId > 0) {
|
|
||||||
return " AND artifacts.data_source_obj_id = " + dataSourceId + " ";
|
|
||||||
}
|
|
||||||
return " ";
|
|
||||||
}
|
|
||||||
|
|
||||||
private final static String COMMUNICATION_ACCOUNTS_QUERY_STRING = "SELECT DISTINCT artifacts.artifact_id AS artifact_id, " //NON-NLS
|
|
||||||
+ "artifacts.obj_id AS obj_id, artifacts.artifact_obj_id AS artifact_obj_id, artifacts.data_source_obj_id AS data_source_obj_id, artifacts.artifact_type_id AS artifact_type_id, " //NON-NLS
|
|
||||||
+ " types.type_name AS type_name, types.display_name AS display_name, types.category_type as category_type,"//NON-NLS
|
|
||||||
+ " artifacts.review_status_id AS review_status_id, " //NON-NLS
|
|
||||||
+ " data_artifacts.os_account_obj_id as os_account_obj_id, " //NON-NLS
|
|
||||||
+ " attrs.source AS source "
|
|
||||||
+ " FROM blackboard_artifacts AS artifacts "
|
|
||||||
+ " JOIN blackboard_artifact_types AS types " //NON-NLS
|
|
||||||
+ " ON artifacts.artifact_type_id = types.artifact_type_id" //NON-NLS
|
|
||||||
+ " LEFT JOIN tsk_data_artifacts AS data_artifacts "
|
|
||||||
+ " ON artifacts.artifact_obj_id = data_artifacts.artifact_obj_id " //NON-NLS
|
|
||||||
+ " JOIN blackboard_attributes AS attrs "
|
|
||||||
+ " ON artifacts.artifact_id = attrs.artifact_id " //NON-NLS
|
|
||||||
+ " WHERE artifacts.artifact_type_id = " + BlackboardArtifact.Type.TSK_ACCOUNT.getTypeID() //NON-NLS
|
|
||||||
+ " AND attrs.attribute_type_id = " + BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ACCOUNT_TYPE.getTypeID(); //NON-NLS
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all artifacts and their attributes for all communication accounts of the type of interest.
|
|
||||||
*
|
|
||||||
* @param cacheKey
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
String getWhereClause(SearchParams<CommAccountsSearchParams> cacheKey) {
|
|
||||||
Long dataSourceId = cacheKey.getParamData().getDataSourceId();
|
|
||||||
Account.Type type = cacheKey.getParamData().getType();
|
|
||||||
|
|
||||||
String originalWhereClause
|
|
||||||
= COMMUNICATION_ACCOUNTS_QUERY_STRING
|
|
||||||
+ " AND attrs.value_text = '" + type.getTypeName() + "'" //NON-NLS
|
|
||||||
+ getFilterByDataSourceClause(dataSourceId)
|
|
||||||
+ getRejectedArtifactFilterClause(false); // ELTODO
|
|
||||||
|
|
||||||
String pagedWhereClause = originalWhereClause
|
|
||||||
+ " ORDER BY artifacts.obj_id ASC"
|
|
||||||
+ (cacheKey.getMaxResultsCount() != null && cacheKey.getMaxResultsCount() > 0 ? " LIMIT " + cacheKey.getMaxResultsCount() : "")
|
|
||||||
+ (cacheKey.getStartItem() > 0 ? " OFFSET " + cacheKey.getStartItem() : "");
|
|
||||||
return pagedWhereClause;
|
|
||||||
}
|
|
||||||
|
|
||||||
long getTotalResultsCount(SearchParams<CommAccountsSearchParams> cacheKey, long currentPageSize) throws TskCoreException, NoCurrentCaseException {
|
long getTotalResultsCount(SearchParams<CommAccountsSearchParams> cacheKey, long currentPageSize) throws TskCoreException, NoCurrentCaseException {
|
||||||
Blackboard blackboard = Case.getCurrentCaseThrows().getSleuthkitCase().getBlackboard();
|
Blackboard blackboard = Case.getCurrentCaseThrows().getSleuthkitCase().getBlackboard();
|
||||||
Long dataSourceId = cacheKey.getParamData().getDataSourceId();
|
Long dataSourceId = cacheKey.getParamData().getDataSourceId();
|
||||||
@ -216,10 +153,11 @@ public class CommAccountsDAO {
|
|||||||
// get current page of communication accounts results
|
// get current page of communication accounts results
|
||||||
SleuthkitCase skCase = Case.getCurrentCaseThrows().getSleuthkitCase();
|
SleuthkitCase skCase = Case.getCurrentCaseThrows().getSleuthkitCase();
|
||||||
Blackboard blackboard = skCase.getBlackboard();
|
Blackboard blackboard = skCase.getBlackboard();
|
||||||
String pagedWhereClause = getWhereClause(cacheKey);
|
Account.Type type = cacheKey.getParamData().getType();
|
||||||
|
Long dataSourceId = cacheKey.getParamData().getDataSourceId();
|
||||||
SleuthkitCase.CaseDbQuery results = Case.getCurrentCaseThrows().getSleuthkitCase().executeQuery(pagedWhereClause);
|
List<BlackboardArtifact> allArtifacts = blackboard.getArtifacts(BlackboardArtifact.Type.TSK_ACCOUNT,
|
||||||
ResultSet rs = results.getResultSet();
|
BlackboardAttribute.Type.TSK_ACCOUNT_TYPE, type.getTypeName(), dataSourceId,
|
||||||
|
false); // ELTODO
|
||||||
List<RowDTO> fileRows = new ArrayList<>();
|
List<RowDTO> fileRows = new ArrayList<>();
|
||||||
/*
|
/*
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
|
@ -27,19 +27,13 @@ import org.sleuthkit.datamodel.Account;
|
|||||||
public class CommAccountsSearchParams {
|
public class CommAccountsSearchParams {
|
||||||
|
|
||||||
private final Account.Type type;
|
private final Account.Type type;
|
||||||
private final long account_id; // ELTODO do we need this?
|
|
||||||
private final Long dataSourceId;
|
private final Long dataSourceId;
|
||||||
|
|
||||||
public CommAccountsSearchParams(long account_id, Account.Type type, Long dataSourceId) {
|
public CommAccountsSearchParams(Account.Type type, Long dataSourceId) {
|
||||||
this.account_id = account_id;
|
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.dataSourceId = dataSourceId;
|
this.dataSourceId = dataSourceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getAccountId() {
|
|
||||||
return account_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Account.Type getType() {
|
public Account.Type getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
@ -51,7 +45,6 @@ public class CommAccountsSearchParams {
|
|||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
int hash = 7;
|
int hash = 7;
|
||||||
hash = 23 * hash + Objects.hashCode(this.account_id);
|
|
||||||
hash = 23 * hash + Objects.hashCode(this.type);
|
hash = 23 * hash + Objects.hashCode(this.type);
|
||||||
hash = 23 * hash + Objects.hashCode(this.dataSourceId);
|
hash = 23 * hash + Objects.hashCode(this.dataSourceId);
|
||||||
return hash;
|
return hash;
|
||||||
@ -69,9 +62,6 @@ public class CommAccountsSearchParams {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final CommAccountsSearchParams other = (CommAccountsSearchParams) obj;
|
final CommAccountsSearchParams other = (CommAccountsSearchParams) obj;
|
||||||
if (this.account_id != other.account_id) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!Objects.equals(this.dataSourceId, other.dataSourceId)) {
|
if (!Objects.equals(this.dataSourceId, other.dataSourceId)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -636,21 +636,21 @@ public class TableSearchTest extends NbTestCase {
|
|||||||
// Get all contacts
|
// Get all contacts
|
||||||
CommAccountsDAO commAccountsDAO = MainDAO.getInstance().getCommAccountsDAO();
|
CommAccountsDAO commAccountsDAO = MainDAO.getInstance().getCommAccountsDAO();
|
||||||
|
|
||||||
CommAccountsSearchParams param = new CommAccountsSearchParams(0, Account.Type.EMAIL, null);
|
CommAccountsSearchParams param = new CommAccountsSearchParams(Account.Type.EMAIL, null);
|
||||||
SearchResultsDTO results = commAccountsDAO.getCommAcounts(param, 0, null, false);
|
SearchResultsDTO results = commAccountsDAO.getCommAcounts(param, 0, null, false);
|
||||||
//assertEquals(BlackboardArtifact.Type.TSK_CONTACT, results.getArtifactType());
|
//assertEquals(BlackboardArtifact.Type.TSK_CONTACT, results.getArtifactType());
|
||||||
assertEquals(3, results.getTotalResultsCount());
|
assertEquals(3, results.getTotalResultsCount());
|
||||||
assertEquals(3, results.getItems().size());
|
assertEquals(3, results.getItems().size());
|
||||||
|
|
||||||
// Get contacts from data source 2
|
// Get contacts from data source 2
|
||||||
param = new CommAccountsSearchParams(0, Account.Type.DEVICE, dataSource1.getId());
|
param = new CommAccountsSearchParams(Account.Type.DEVICE, dataSource1.getId());
|
||||||
results = commAccountsDAO.getCommAcounts(param, 0, null, false);
|
results = commAccountsDAO.getCommAcounts(param, 0, null, false);
|
||||||
//assertEquals(BlackboardArtifact.Type.TSK_CONTACT, results.getArtifactType());
|
//assertEquals(BlackboardArtifact.Type.TSK_CONTACT, results.getArtifactType());
|
||||||
assertEquals(1, results.getTotalResultsCount());
|
assertEquals(1, results.getTotalResultsCount());
|
||||||
assertEquals(1, results.getItems().size());
|
assertEquals(1, results.getItems().size());
|
||||||
|
|
||||||
// Get bookmarks from data source 2
|
// Get bookmarks from data source 2
|
||||||
param = new CommAccountsSearchParams(0, Account.Type.EMAIL, dataSource2.getId());
|
param = new CommAccountsSearchParams(Account.Type.EMAIL, dataSource2.getId());
|
||||||
results = commAccountsDAO.getCommAcounts(param, 0, null, false);
|
results = commAccountsDAO.getCommAcounts(param, 0, null, false);
|
||||||
assertEquals(1, results.getTotalResultsCount());
|
assertEquals(1, results.getTotalResultsCount());
|
||||||
assertEquals(1, results.getItems().size());
|
assertEquals(1, results.getItems().size());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user