1
0
mirror of https://github.com/elisspace/autopsy.git synced 2026-09-01 08:53:51 +00:00

include queries

This commit is contained in:
Greg DiCristofaro
2021-12-14 09:35:00 -05:00
parent 655312718d
commit 8a7c6ef06c

View File

@@ -20,17 +20,30 @@ package org.sleuthkit.autopsy.mainui.datamodel;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.collect.Range;
import java.beans.PropertyChangeEvent;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.datamodel.CreditCards;
import org.sleuthkit.autopsy.datamodel.accounts.Accounts;
import org.sleuthkit.autopsy.datamodel.accounts.BINRange;
import org.sleuthkit.autopsy.mainui.datamodel.events.CommAccountsEvent;
import org.sleuthkit.autopsy.mainui.datamodel.events.DAOEvent;
import org.sleuthkit.autopsy.mainui.datamodel.events.TreeCounts;
import org.sleuthkit.autopsy.mainui.datamodel.events.TreeEvent;
import org.sleuthkit.datamodel.Account;
import org.sleuthkit.datamodel.BlackboardArtifact;
import org.sleuthkit.datamodel.BlackboardAttribute;
import org.sleuthkit.datamodel.SleuthkitCase;
import org.sleuthkit.datamodel.TskCoreException;
import org.sleuthkit.datamodel.TskData;
/**
* DAO for fetching credit card information.
@@ -60,11 +73,46 @@ public class CreditCardDAO extends AbstractDAO {
}
public SearchResultsDTO getCreditCardByFile(CreditCardFileSearchParams searchParams) {
// String query
// = "SELECT blackboard_artifacts.artifact_obj_id " //NON-NLS
// + " FROM blackboard_artifacts " //NON-NLS
// + " JOIN blackboard_attributes ON blackboard_artifacts.artifact_id = blackboard_attributes.artifact_id " //NON-NLS
// + " WHERE blackboard_artifacts.artifact_type_id = " + BlackboardArtifact.Type.TSK_ACCOUNT.getTypeID() //NON-NLS
// + " AND blackboard_attributes.attribute_type_id = " + BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CARD_NUMBER.getTypeID() //NON-NLS
// + " AND blackboard_attributes.value_text >= '" + bin.getBINStart() + "' AND blackboard_attributes.value_text < '" + (bin.getBINEnd() + 1) + "'" //NON-NLS
// + getFilterByDataSourceClause()
// + getRejectedArtifactFilterClause()
// + " ORDER BY blackboard_attributes.value_text"; //NON-NLS
// try (SleuthkitCase.CaseDbQuery results = skCase.executeQuery(query);
// ResultSet rs = results.getResultSet();) {
// while (rs.next()) {
// list.add(skCase.getBlackboard().getDataArtifactById(rs.getLong("artifact_obj_id"))); //NON-NLS
// }
// } catch (TskCoreException | SQLException ex) {
// LOGGER.log(Level.SEVERE, "Error querying for account artifacts.", ex); //NON-NLS
//
// }
}
private SearchResultsDTO fetchCreditCardByFile(CreditCardFileSearchParams searchParams) {
// String query
// = "SELECT count(blackboard_artifacts.artifact_id ) AS count" //NON-NLS
// + " FROM blackboard_artifacts " //NON-NLS
// + " JOIN blackboard_attributes ON blackboard_artifacts.artifact_id = blackboard_attributes.artifact_id " //NON-NLS
// + " WHERE blackboard_artifacts.artifact_type_id = " + BlackboardArtifact.Type.TSK_ACCOUNT.getTypeID() //NON-NLS
// + " AND blackboard_attributes.attribute_type_id = " + BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CARD_NUMBER.getTypeID() //NON-NLS
// + " AND blackboard_attributes.value_text >= '" + bin.getBINStart() + "' AND blackboard_attributes.value_text < '" + (bin.getBINEnd() + 1) + "'" //NON-NLS
// + getFilterByDataSourceClause()
// + getRejectedArtifactFilterClause();
// try (SleuthkitCase.CaseDbQuery results = skCase.executeQuery(query);
// ResultSet resultSet = results.getResultSet();) {
// while (resultSet.next()) {
// setDisplayName(getBinRangeString(bin) + " (" + resultSet.getLong("count") + ")"); //NON-NLS
// }
// } catch (TskCoreException | SQLException ex) {
// LOGGER.log(Level.SEVERE, "Error querying for account artifacts.", ex); //NON-NLS
//
// }
}
public SearchResultsDTO getCreditCardByBin(CreditCardBinSearchParams searchParams) {
@@ -72,15 +120,88 @@ public class CreditCardDAO extends AbstractDAO {
}
public SearchResultsDTO fetchCreditCardByBin(CreditCardBinSearchParams searchParams) {
}
public TreeResultsDTO<CreditCardBinSearchParams> getCreditCardBinCounts(Long dataSourceId) {
// String query
// = "SELECT blackboard_artifacts.obj_id," //NON-NLS
// + " solr_attribute.value_text AS solr_document_id, "; //NON-NLS
// if (skCase.getDatabaseType().equals(TskData.DbType.POSTGRESQL)) {
// query += " string_agg(blackboard_artifacts.artifact_id::character varying, ',') AS artifact_IDs, " //NON-NLS
// + " string_agg(blackboard_artifacts.review_status_id::character varying, ',') AS review_status_ids, ";
// } else {
// query += " GROUP_CONCAT(blackboard_artifacts.artifact_id) AS artifact_IDs, " //NON-NLS
// + " GROUP_CONCAT(blackboard_artifacts.review_status_id) AS review_status_ids, ";
// }
// query += " COUNT( blackboard_artifacts.artifact_id) AS hits " //NON-NLS
// + " FROM blackboard_artifacts " //NON-NLS
// + " LEFT JOIN blackboard_attributes as solr_attribute ON blackboard_artifacts.artifact_id = solr_attribute.artifact_id " //NON-NLS
// + " AND solr_attribute.attribute_type_id = " + BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD_SEARCH_DOCUMENT_ID.getTypeID() //NON-NLS
// + " LEFT JOIN blackboard_attributes as account_type ON blackboard_artifacts.artifact_id = account_type.artifact_id " //NON-NLS
// + " AND account_type.attribute_type_id = " + BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ACCOUNT_TYPE.getTypeID() //NON-NLS
// + " AND account_type.value_text = '" + Account.Type.CREDIT_CARD.getTypeName() + "'" //NON-NLS
// + " WHERE blackboard_artifacts.artifact_type_id = " + BlackboardArtifact.Type.TSK_ACCOUNT.getTypeID() //NON-NLS
// + getFilterByDataSourceClause()
// + getRejectedArtifactFilterClause()
// + " GROUP BY blackboard_artifacts.obj_id, solr_document_id " //NON-NLS
// + " ORDER BY hits DESC "; //NON-NLS
// try (SleuthkitCase.CaseDbQuery results = skCase.executeQuery(query);
// ResultSet resultSet = results.getResultSet();) {
// while (resultSet.next()) {
// list.add(new Accounts.FileWithCCN(
// resultSet.getLong("obj_id"), //NON-NLS
// resultSet.getString("solr_document_id"), //NON-NLS
// unGroupConcat(resultSet.getString("artifact_IDs"), Long::valueOf), //NON-NLS
// resultSet.getLong("hits"), //NON-NLS
// new HashSet<>(unGroupConcat(resultSet.getString("review_status_ids"), reviewStatusID -> BlackboardArtifact.ReviewStatus.withID(Integer.valueOf(reviewStatusID)))))); //NON-NLS
// }
// } catch (TskCoreException | SQLException ex) {
// LOGGER.log(Level.SEVERE, "Error querying for files with ccn hits.", ex); //NON-NLS
//
// }
// return true;
}
public TreeResultsDTO<CreditCardFileSearchParams> getCreditCardFileCounts(Long dataSourceId) {
//
// String query
// = "SELECT SUBSTR(blackboard_attributes.value_text,1,8) AS BIN, " //NON-NLS
// + " COUNT(blackboard_artifacts.artifact_id) AS count " //NON-NLS
// + " FROM blackboard_artifacts " //NON-NLS
// + " JOIN blackboard_attributes ON blackboard_artifacts.artifact_id = blackboard_attributes.artifact_id" //NON-NLS
// + " WHERE blackboard_artifacts.artifact_type_id = " + BlackboardArtifact.Type.TSK_ACCOUNT.getTypeID() //NON-NLS
// + " AND blackboard_attributes.attribute_type_id = " + BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CARD_NUMBER.getTypeID() //NON-NLS
// + getFilterByDataSourceClause()
// + getRejectedArtifactFilterClause()
// + " GROUP BY BIN " //NON-NLS
// + " ORDER BY BIN "; //NON-NLS
// try (SleuthkitCase.CaseDbQuery results = skCase.executeQuery(query);
// ResultSet resultSet = results.getResultSet();) {
// //sort all te individual bins in to the ranges
// while (resultSet.next()) {
// final Integer bin = Integer.valueOf(resultSet.getString("BIN"));
// long count = resultSet.getLong("count");
//
// BINRange binRange = (BINRange) CreditCards.getBINInfo(bin);
// Accounts.BinResult previousResult = binRanges.get(bin);
//
// if (previousResult != null) {
// binRanges.remove(Range.closed(previousResult.getBINStart(), previousResult.getBINEnd()));
// count += previousResult.getCount();
// }
//
// if (binRange == null) {
// binRanges.put(Range.closed(bin, bin), new Accounts.BinResult(count, bin, bin));
// } else {
// binRanges.put(Range.closed(binRange.getBINstart(), binRange.getBINend()), new Accounts.BinResult(count, binRange));
// }
// }
// binRanges.asMapOfRanges().values().forEach(list::add);
// } catch (TskCoreException | SQLException ex) {
// LOGGER.log(Level.SEVERE, "Error querying for BINs.", ex); //NON-NLS
// }
}
// is account invalidating