19 package org.sleuthkit.datamodel;
21 import java.io.Serializable;
22 import java.util.Arrays;
23 import java.util.Collections;
24 import java.util.List;
25 import java.util.Objects;
26 import java.util.ResourceBundle;
27 import java.util.TimeZone;
28 import java.util.logging.Level;
29 import java.util.logging.Logger;
47 private static final char[] HEX_ARRAY =
"0123456789ABCDEF".toCharArray();
50 private static final ResourceBundle bundle = ResourceBundle.getBundle(
"org.sleuthkit.datamodel.Bundle");
52 private final int valueInt;
53 private final long valueLong;
54 private final double valueDouble;
55 private final String valueString;
56 private final byte[] valueBytes;
57 private String context;
58 private long artifactID;
60 private String sources;
68 private Long parentDataSourceID;
84 throw new IllegalArgumentException(
"Value types do not match");
88 this.sources = replaceNulls(source);
89 this.valueInt = valueInt;
92 this.valueString =
"";
93 this.valueBytes =
new byte[0];
111 throw new IllegalArgumentException(
"Type mismatched with value type");
114 this.attributeType = attributeType;
115 this.sources = replaceNulls(source);
116 this.valueInt = valueInt;
118 this.valueDouble = 0;
119 this.valueString =
"";
120 this.valueBytes =
new byte[0];
142 throw new IllegalArgumentException(
"Value types do not match");
146 this.sources = replaceNulls(source);
148 this.valueLong = valueLong;
149 this.valueDouble = 0;
150 this.valueString =
"";
151 this.valueBytes =
new byte[0];
172 throw new IllegalArgumentException(
"Type mismatched with value type");
175 this.attributeType = attributeType;
176 this.sources = replaceNulls(source);
178 this.valueLong = valueLong;
179 this.valueDouble = 0;
180 this.valueString =
"";
181 this.valueBytes =
new byte[0];
199 throw new IllegalArgumentException(
"Value types do not match");
203 this.sources = replaceNulls(source);
206 this.valueDouble = valueDouble;
207 this.valueString =
"";
208 this.valueBytes =
new byte[0];
227 throw new IllegalArgumentException(
"Type mismatched with value type");
230 this.attributeType = attributeType;
231 this.sources = replaceNulls(source);
234 this.valueDouble = valueDouble;
235 this.valueString =
"";
236 this.valueBytes =
new byte[0];
257 throw new IllegalArgumentException(
"Value types do not match");
261 this.sources = replaceNulls(source);
264 this.valueDouble = 0;
265 if (valueString == null) {
266 this.valueString =
"";
268 this.valueString = replaceNulls(valueString).trim();
270 this.valueBytes =
new byte[0];
289 throw new IllegalArgumentException(
"Type mismatched with value type");
292 this.attributeType = attributeType;
293 this.sources = replaceNulls(source);
296 this.valueDouble = 0;
297 if (valueString == null) {
298 this.valueString =
"";
300 this.valueString = replaceNulls(valueString).trim();
302 this.valueBytes =
new byte[0];
320 throw new IllegalArgumentException(
"Value types do not match");
324 this.sources = replaceNulls(source);
328 this.valueDouble = 0;
329 this.valueString =
"";
330 if (valueBytes == null) {
331 this.valueBytes =
new byte[0];
333 this.valueBytes = valueBytes;
351 throw new IllegalArgumentException(
"Type mismatched with value type");
354 this.attributeType = attributeType;
355 this.sources = replaceNulls(source);
359 this.valueDouble = 0;
360 this.valueString =
"";
361 if (valueBytes == null) {
362 this.valueBytes =
new byte[0];
364 this.valueBytes = valueBytes;
385 return this.attributeType;
445 return Arrays.copyOf(valueBytes, valueBytes.length);
454 if (null != sources && !this.sources.isEmpty()) {
455 List<String> modules = Arrays.asList(sources.split(
","));
458 return Collections.emptyList();
470 this.sources = sleuthkitCase.addSourceToArtifactAttribute(
this, source);
485 if (parentArtifact == null) {
488 return parentArtifact;
494 hash = 97 * hash + (int) (this.artifactID ^ (this.artifactID >>> 32));
503 if (getClass() != obj.getClass()) {
512 return "BlackboardAttribute{" +
"artifactID=" + artifactID +
", attributeType=" + attributeType.
toString() +
", moduleName=" + sources +
", context=" + context +
", valueInt=" + valueInt +
", valueLong=" + valueLong +
", valueDouble=" + valueDouble +
", valueString=" + valueString +
", valueBytes=" + Arrays.toString(valueBytes) +
", Case=" + sleuthkitCase +
'}';
545 if (parentDataSourceID == null) {
547 parentDataSourceID = parent.getDataSourceObjectID();
550 if ((dataSource != null) && (dataSource instanceof
Image)) {
552 Image image = (Image) dataSource;
553 TimeZone tzone = TimeZone.getTimeZone(image.
getTimeZone());
557 LOGGER.log(Level.WARNING,
"Could not get timezone for image", ex);
588 int valueInt,
long valueLong,
double valueDouble, String valueString, byte[] valueBytes,
591 this.artifactID = artifactID;
592 this.attributeType = attributeType;
593 this.sources = replaceNulls(source);
594 this.context = replaceNulls(context);
595 this.valueInt = valueInt;
596 this.valueLong = valueLong;
597 this.valueDouble = valueDouble;
598 if (valueString == null) {
599 this.valueString =
"";
601 this.valueString = replaceNulls(valueString).trim();
603 if (valueBytes == null) {
604 this.valueBytes =
new byte[0];
606 this.valueBytes = valueBytes;
608 this.sleuthkitCase = sleuthkitCase;
617 void setCaseDatabase(SleuthkitCase sleuthkitCase) {
618 this.sleuthkitCase = sleuthkitCase;
626 void setArtifactId(
long artifactID) {
627 this.artifactID = artifactID;
636 void setParentDataSourceID(
long parentDataSourceID) {
637 this.parentDataSourceID = parentDataSourceID;
648 String getSourcesCSV() {
659 static String bytesToHexString(byte[] bytes) {
661 char[] hexChars =
new char[bytes.length * 2];
662 for (
int j = 0; j < bytes.length; j++) {
663 int v = bytes[j] & 0xFF;
664 hexChars[j * 2] = HEX_ARRAY[v >>> 4];
665 hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
667 return new String(hexChars);
677 private String replaceNulls(String text) {
678 return text.replace((
char) 0x00, (
char) 0x1A);
684 public static final class Type implements Serializable {
686 private static final long serialVersionUID = 1L;
687 private final String typeName;
688 private final int typeID;
689 private final String displayName;
701 this.typeID = typeID;
702 this.typeName = typeName;
703 this.displayName = displayName;
704 this.valueType = valueType;
714 this.typeID = type.getTypeID();
715 this.typeName = type.getLabel();
716 this.displayName = type.getDisplayName();
717 this.valueType = type.getValueType();
726 return this.valueType;
735 return this.typeName;
753 return this.displayName;
776 return this.typeName.equals(that.getTypeName())
777 && this.displayName.equals(that.getDisplayName())
778 && this.typeID == that.getTypeID()
779 && this.valueType == that.getValueType();
785 hash = 63 * hash + Objects.hashCode(this.typeID);
786 hash = 63 * hash + Objects.hashCode(this.displayName);
787 hash = 63 * hash + Objects.hashCode(this.typeName);
788 hash = 63 * hash + Objects.hashCode(this.valueType);
794 return "(typeID= " + this.typeID
795 +
", displayName=" + this.displayName
796 +
", typeName=" + this.typeName
797 +
", valueType=" + this.valueType +
")";
837 private final long typeId;
838 private final String typeName;
852 this.typeName = typeName;
876 return this.typeName;
895 if (valueType.
getType() == typeId) {
899 throw new IllegalArgumentException(
"No TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE matching type: " + typeId);
918 if (valueType.
getLabel().equals(typeName)) {
922 throw new IllegalArgumentException(
"No TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE matching type: " + typeName);
935 TSK_URL(1,
"TSK_URL",
936 bundle.getString(
"BlackboardAttribute.tskUrl.text"),
938 TSK_DATETIME(2,
"TSK_DATETIME",
939 bundle.getString(
"BlackboardAttribute.tskDatetime.text"),
941 TSK_NAME(3,
"TSK_NAME",
942 bundle.getString(
"BlackboardAttribute.tskName.text"),
944 TSK_PROG_NAME(4,
"TSK_PROG_NAME",
945 bundle.getString(
"BlackboardAttribute.tskProgName.text"),
947 TSK_VALUE(6,
"TSK_VALUE",
948 bundle.getString(
"BlackboardAttribute.tskValue.text"),
950 TSK_FLAG(7,
"TSK_FLAG",
951 bundle.getString(
"BlackboardAttribute.tskFlag.text"),
953 TSK_PATH(8,
"TSK_PATH",
954 bundle.getString(
"BlackboardAttribute.tskPath.text"),
956 TSK_KEYWORD(10,
"TSK_KEYWORD",
957 bundle.getString(
"BlackboardAttribute.tskKeyword.text"),
959 TSK_KEYWORD_REGEXP(11,
"TSK_KEYWORD_REGEXP",
960 bundle.getString(
"BlackboardAttribute.tskKeywordRegexp.text"),
962 TSK_KEYWORD_PREVIEW(12,
"TSK_KEYWORD_PREVIEW",
963 bundle.getString(
"BlackboardAttribute.tskKeywordPreview.text"),
969 TSK_KEYWORD_SET(13,
"TSK_KEYWORD_SET",
970 bundle.getString(
"BlackboardAttribute.tskKeywordSet.text"),
972 TSK_USER_NAME(14,
"TSK_USER_NAME",
973 bundle.getString(
"BlackboardAttribute.tskUserName.text"),
975 TSK_DOMAIN(15,
"TSK_DOMAIN",
976 bundle.getString(
"BlackboardAttribute.tskDomain.text"),
978 TSK_PASSWORD(16,
"TSK_PASSWORD",
979 bundle.getString(
"BlackboardAttribute.tskPassword.text"),
981 TSK_NAME_PERSON(17,
"TSK_NAME_PERSON",
982 bundle.getString(
"BlackboardAttribute.tskNamePerson.text"),
984 TSK_DEVICE_MODEL(18,
"TSK_DEVICE_MODEL",
985 bundle.getString(
"BlackboardAttribute.tskDeviceModel.text"),
987 TSK_DEVICE_MAKE(19,
"TSK_DEVICE_MAKE",
988 bundle.getString(
"BlackboardAttribute.tskDeviceMake.text"),
990 TSK_DEVICE_ID(20,
"TSK_DEVICE_ID",
991 bundle.getString(
"BlackboardAttribute.tskDeviceId.text"),
993 TSK_EMAIL(21,
"TSK_EMAIL",
994 bundle.getString(
"BlackboardAttribute.tskEmail.text"),
996 TSK_HASH_MD5(22,
"TSK_HASH_MD5",
997 bundle.getString(
"BlackboardAttribute.tskHashMd5.text"),
999 TSK_HASH_SHA1(23,
"TSK_HASH_SHA1",
1000 bundle.getString(
"BlackboardAttribute.tskHashSha1.text"),
1002 TSK_HASH_SHA2_256(24,
"TSK_HASH_SHA2_256",
1003 bundle.getString(
"BlackboardAttribute.tskHashSha225.text"),
1005 TSK_HASH_SHA2_512(25,
"TSK_HASH_SHA2_512",
1006 bundle.getString(
"BlackboardAttribute.tskHashSha2512.text"),
1008 TSK_TEXT(26,
"TSK_TEXT",
1009 bundle.getString(
"BlackboardAttribute.tskText.text"),
1011 TSK_TEXT_FILE(27,
"TSK_TEXT_FILE",
1012 bundle.getString(
"BlackboardAttribute.tskTextFile.text"),
1014 TSK_TEXT_LANGUAGE(28,
"TSK_TEXT_LANGUAGE",
1015 bundle.getString(
"BlackboardAttribute.tskTextLanguage.text"),
1017 TSK_ENTROPY(29,
"TSK_ENTROPY",
1018 bundle.getString(
"BlackboardAttribute.tskEntropy.text"),
1024 TSK_HASHSET_NAME(30,
"TSK_HASHSET_NAME",
1025 bundle.getString(
"BlackboardAttribute.tskHashsetName.text"),
1031 TSK_INTERESTING_FILE(31,
"TSK_INTERESTING_FILE",
1032 bundle.getString(
"BlackboardAttribute.tskInterestingFile.text"),
1034 TSK_REFERRER(32,
"TSK_REFERRER",
1035 bundle.getString(
"BlackboardAttribute.tskReferrer.text"),
1037 TSK_DATETIME_ACCESSED(33,
"TSK_DATETIME_ACCESSED",
1038 bundle.getString(
"BlackboardAttribute.tskDateTimeAccessed.text"),
1040 TSK_IP_ADDRESS(34,
"TSK_IP_ADDRESS",
1041 bundle.getString(
"BlackboardAttribute.tskIpAddress.text"),
1043 TSK_PHONE_NUMBER(35,
"TSK_PHONE_NUMBER",
1044 bundle.getString(
"BlackboardAttribute.tskPhoneNumber.text"),
1046 TSK_PATH_ID(36,
"TSK_PATH_ID",
1047 bundle.getString(
"BlackboardAttribute.tskPathId.text"),
1049 TSK_SET_NAME(37,
"TSK_SET_NAME",
1050 bundle.getString(
"BlackboardAttribute.tskSetName.text"),
1056 TSK_ENCRYPTION_DETECTED(38,
"TSK_ENCRYPTION_DETECTED",
1057 bundle.getString(
"BlackboardAttribute.tskEncryptionDetected.text"),
1059 TSK_MALWARE_DETECTED(39,
"TSK_MALWARE_DETECTED",
1060 bundle.getString(
"BlackboardAttribute.tskMalwareDetected.text"),
1062 TSK_STEG_DETECTED(40,
"TSK_STEG_DETECTED",
1063 bundle.getString(
"BlackboardAttribute.tskStegDetected.text"),
1065 TSK_EMAIL_TO(41,
"TSK_EMAIL_TO",
1066 bundle.getString(
"BlackboardAttribute.tskEmailTo.text"),
1068 TSK_EMAIL_CC(42,
"TSK_EMAIL_CC",
1069 bundle.getString(
"BlackboardAttribute.tskEmailCc.text"),
1071 TSK_EMAIL_BCC(43,
"TSK_EMAIL_BCC",
1072 bundle.getString(
"BlackboardAttribute.tskEmailBcc.text"),
1074 TSK_EMAIL_FROM(44,
"TSK_EMAIL_FROM",
1075 bundle.getString(
"BlackboardAttribute.tskEmailFrom.text"),
1077 TSK_EMAIL_CONTENT_PLAIN(45,
"TSK_EMAIL_CONTENT_PLAIN",
1078 bundle.getString(
"BlackboardAttribute.tskEmailContentPlain.text"),
1080 TSK_EMAIL_CONTENT_HTML(46,
"TSK_EMAIL_CONTENT_HTML",
1081 bundle.getString(
"BlackboardAttribute.tskEmailContentHtml.text"),
1083 TSK_EMAIL_CONTENT_RTF(47,
"TSK_EMAIL_CONTENT_RTF",
1084 bundle.getString(
"BlackboardAttribute.tskEmailContentRtf.text"),
1086 TSK_MSG_ID(48,
"TSK_MSG_ID",
1087 bundle.getString(
"BlackboardAttribute.tskMsgId.text"),
1089 TSK_MSG_REPLY_ID(49,
"TSK_MSG_REPLY_ID",
1090 bundle.getString(
"BlackboardAttribute.tskMsgReplyId.text"),
1092 TSK_DATETIME_RCVD(50,
"TSK_DATETIME_RCVD",
1093 bundle.getString(
"BlackboardAttribute.tskDateTimeRcvd.text"),
1095 TSK_DATETIME_SENT(51,
"TSK_DATETIME_SENT",
1096 bundle.getString(
"BlackboardAttribute.tskDateTimeSent.text"),
1098 TSK_SUBJECT(52,
"TSK_SUBJECT",
1099 bundle.getString(
"BlackboardAttribute.tskSubject.text"),
1101 TSK_TITLE(53,
"TSK_TITLE",
1102 bundle.getString(
"BlackboardAttribute.tskTitle.text"),
1104 TSK_GEO_LATITUDE(54,
"TSK_GEO_LATITUDE",
1105 bundle.getString(
"BlackboardAttribute.tskGeoLatitude.text"),
1107 TSK_GEO_LONGITUDE(55,
"TSK_GEO_LONGITUDE",
1108 bundle.getString(
"BlackboardAttribute.tskGeoLongitude.text"),
1110 TSK_GEO_VELOCITY(56,
"TSK_GEO_VELOCITY",
1111 bundle.getString(
"BlackboardAttribute.tskGeoVelocity.text"),
1113 TSK_GEO_ALTITUDE(57,
"TSK_GEO_ALTITUDE",
1114 bundle.getString(
"BlackboardAttribute.tskGeoAltitude.text"),
1116 TSK_GEO_BEARING(58,
"TSK_GEO_BEARING",
1117 bundle.getString(
"BlackboardAttribute.tskGeoBearing.text"),
1119 TSK_GEO_HPRECISION(59,
"TSK_GEO_HPRECISION",
1120 bundle.getString(
"BlackboardAttribute.tskGeoHPrecision.text"),
1122 TSK_GEO_VPRECISION(60,
"TSK_GEO_VPRECISION",
1123 bundle.getString(
"BlackboardAttribute.tskGeoVPrecision.text"),
1125 TSK_GEO_MAPDATUM(61,
"TSK_GEO_MAPDATUM",
1126 bundle.getString(
"BlackboardAttribute.tskGeoMapDatum.text"),
1133 TSK_FILE_TYPE_SIG(62,
"TSK_FILE_TYPE_SIG",
1134 bundle.getString(
"BlackboardAttribute.tskFileTypeSig.text"),
1136 TSK_FILE_TYPE_EXT(63,
"TSK_FILE_TYPE_EXT",
1137 bundle.getString(
"BlackboardAttribute.tskFileTypeExt.text"),
1144 TSK_TAGGED_ARTIFACT(64,
"TSK_TAGGED_ARTIFACT",
1145 bundle.getString(
"BlackboardAttribute.tskTaggedArtifact.text"),
1152 TSK_TAG_NAME(65,
"TSK_TAG_NAME",
1153 bundle.getString(
"BlackboardAttribute.tskTagName.text"),
1155 TSK_COMMENT(66,
"TSK_COMMENT",
1156 bundle.getString(
"BlackboardAttribute.tskComment.text"),
1158 TSK_URL_DECODED(67,
"TSK_URL_DECODED",
1159 bundle.getString(
"BlackboardAttribute.tskUrlDecoded.text"),
1161 TSK_DATETIME_CREATED(68,
"TSK_DATETIME_CREATED",
1162 bundle.getString(
"BlackboardAttribute.tskDateTimeCreated.text"),
1164 TSK_DATETIME_MODIFIED(69,
"TSK_DATETIME_MODIFIED",
1165 bundle.getString(
"BlackboardAttribute.tskDateTimeModified.text"),
1167 TSK_PROCESSOR_ARCHITECTURE(70,
"TSK_PROCESSOR_ARCHITECTURE",
1168 bundle.getString(
"BlackboardAttribute.tskProcessorArchitecture.text"),
1170 TSK_VERSION(71,
"TSK_VERSION",
1171 bundle.getString(
"BlackboardAttribute.tskVersion.text"),
1173 TSK_USER_ID(72,
"TSK_USER_ID",
1174 bundle.getString(
"BlackboardAttribute.tskUserId.text"),
1176 TSK_DESCRIPTION(73,
"TSK_DESCRIPTION",
1177 bundle.getString(
"BlackboardAttribute.tskDescription.text"),
1179 TSK_MESSAGE_TYPE(74,
"TSK_MESSAGE_TYPE",
1180 bundle.getString(
"BlackboardAttribute.tskMessageType.text"),
1182 TSK_PHONE_NUMBER_HOME(75,
"TSK_PHONE_NUMBER_HOME",
1183 bundle.getString(
"BlackboardAttribute.tskPhoneNumberHome.text"),
1185 TSK_PHONE_NUMBER_OFFICE(76,
"TSK_PHONE_NUMBER_OFFICE",
1186 bundle.getString(
"BlackboardAttribute.tskPhoneNumberOffice.text"),
1188 TSK_PHONE_NUMBER_MOBILE(77,
"TSK_PHONE_NUMBER_MOBILE",
1189 bundle.getString(
"BlackboardAttribute.tskPhoneNumberMobile.text"),
1191 TSK_PHONE_NUMBER_FROM(78,
"TSK_PHONE_NUMBER_FROM",
1192 bundle.getString(
"BlackboardAttribute.tskPhoneNumberFrom.text"),
1194 TSK_PHONE_NUMBER_TO(79,
"TSK_PHONE_NUMBER_TO",
1195 bundle.getString(
"BlackboardAttribute.tskPhoneNumberTo.text"),
1197 TSK_DIRECTION(80,
"TSK_DIRECTION",
1198 bundle.getString(
"BlackboardAttribute.tskDirection.text"),
1200 TSK_EMAIL_HOME(81,
"TSK_EMAIL_HOME",
1201 bundle.getString(
"BlackboardAttribute.tskEmailHome.text"),
1203 TSK_EMAIL_OFFICE(82,
"TSK_EMAIL_OFFICE",
1204 bundle.getString(
"BlackboardAttribute.tskEmailOffice.text"),
1206 TSK_DATETIME_START(83,
"TSK_DATETIME_START",
1207 bundle.getString(
"BlackboardAttribute.tskDateTimeStart.text"),
1209 TSK_DATETIME_END(84,
"TSK_DATETIME_END",
1210 bundle.getString(
"BlackboardAttribute.tskDateTimeEnd.text"),
1212 TSK_CALENDAR_ENTRY_TYPE(85,
"TSK_CALENDAR_ENTRY_TYPE",
1213 bundle.getString(
"BlackboardAttribute.tskCalendarEntryType.text"),
1215 TSK_LOCATION(86,
"TSK_LOCATION",
1216 bundle.getString(
"BlackboardAttribute.tskLocation.text"),
1218 TSK_SHORTCUT(87,
"TSK_SHORTCUT",
1219 bundle.getString(
"BlackboardAttribute.tskShortcut.text"),
1221 TSK_DEVICE_NAME(88,
"TSK_DEVICE_NAME",
1222 bundle.getString(
"BlackboardAttribute.tskDeviceName.text"),
1224 TSK_CATEGORY(89,
"TSK_CATEGORY",
1225 bundle.getString(
"BlackboardAttribute.tskCategory.text"),
1227 TSK_EMAIL_REPLYTO(90,
"TSK_EMAIL_REPLYTO",
1228 bundle.getString(
"BlackboardAttribute.tskEmailReplyTo.text"),
1230 TSK_SERVER_NAME(91,
"TSK_SERVER_NAME",
1231 bundle.getString(
"BlackboardAttribute.tskServerName.text"),
1233 TSK_COUNT(92,
"TSK_COUNT",
1234 bundle.getString(
"BlackboardAttribute.tskCount.text"),
1236 TSK_MIN_COUNT(93,
"TSK_MIN_COUNT",
1237 bundle.getString(
"BlackboardAttribute.tskMinCount.text"),
1239 TSK_PATH_SOURCE(94,
"TSK_PATH_SOURCE",
1240 bundle.getString(
"BlackboardAttribute.tskPathSource.text"),
1242 TSK_PERMISSIONS(95,
"TSK_PERMISSIONS",
1243 bundle.getString(
"BlackboardAttribute.tskPermissions.text"),
1245 TSK_ASSOCIATED_ARTIFACT(96,
"TSK_ASSOCIATED_ARTIFACT",
1246 bundle.getString(
"BlackboardAttribute.tskAssociatedArtifact.text"),
1248 TSK_ISDELETED(97,
"TSK_ISDELETED",
1249 bundle.getString(
"BlackboardAttribute.tskIsDeleted.text"),
1251 TSK_GEO_LATITUDE_START(98,
"TSK_GEO_LATITUDE_START",
1252 bundle.getString(
"BlackboardAttribute.tskGeoLatitudeStart.text"),
1254 TSK_GEO_LATITUDE_END(99,
"TSK_GEO_LATITUDE_END",
1255 bundle.getString(
"BlackboardAttribute.tskGeoLatitudeEnd.text"),
1257 TSK_GEO_LONGITUDE_START(100,
"TSK_GEO_LONGITUDE_START",
1258 bundle.getString(
"BlackboardAttribute.tskGeoLongitudeStart.text"),
1260 TSK_GEO_LONGITUDE_END(101,
"TSK_GEO_LONGITUDE_END",
1261 bundle.getString(
"BlackboardAttribute.tskGeoLongitudeEnd.text"),
1263 TSK_READ_STATUS(102,
"TSK_READ_STATUS",
1264 bundle.getString(
"BlackboardAttribute.tskReadStatus.text"),
1266 TSK_LOCAL_PATH(103,
"TSK_LOCAL_PATH",
1267 bundle.getString(
"BlackboardAttribute.tskLocalPath.text"),
1269 TSK_REMOTE_PATH(104,
"TSK_REMOTE_PATH",
1270 bundle.getString(
"BlackboardAttribute.tskRemotePath.text"),
1272 TSK_TEMP_DIR(105,
"TSK_TEMP_DIR",
1273 bundle.getString(
"BlackboardAttribute.tskTempDir.text"),
1275 TSK_PRODUCT_ID(106,
"TSK_PRODUCT_ID",
1276 bundle.getString(
"BlackboardAttribute.tskProductId.text"),
1278 TSK_OWNER(107,
"TSK_OWNER",
1279 bundle.getString(
"BlackboardAttribute.tskOwner.text"),
1281 TSK_ORGANIZATION(108,
"TSK_ORGANIZATION",
1282 bundle.getString(
"BlackboardAttribute.tskOrganization.text"),
1284 TSK_CARD_NUMBER(109,
"TSK_CARD_NUMBER",
1285 bundle.getString(
"BlackboardAttribute.tskCardNumber.text"),
1287 TSK_CARD_EXPIRATION(110,
"TSK_CARD_EXPIRATION",
1288 bundle.getString(
"BlackboardAttribute.tskCardExpiration.text"),
1290 TSK_CARD_SERVICE_CODE(111,
"TSK_CARD_SERVICE_CODE",
1291 bundle.getString(
"BlackboardAttribute.tskCardServiceCode.text"),
1293 TSK_CARD_DISCRETIONARY(112,
"TSK_CARD_DISCRETIONARY",
1294 bundle.getString(
"BlackboardAttribute.tskCardDiscretionary.text"),
1296 TSK_CARD_LRC(113,
"TSK_CARD_LRC",
1297 bundle.getString(
"BlackboardAttribute.tskCardLRC.text"),
1299 TSK_KEYWORD_SEARCH_DOCUMENT_ID(114,
"TSK_KEYWORD_SEARCH_DOCUMENT_ID",
1300 bundle.getString(
"BlackboardAttribute.tskKeywordSearchDocumentID.text"),
1302 TSK_CARD_SCHEME(115,
"TSK_CARD_SCHEME",
1303 bundle.getString(
"BlackboardAttribute.tskCardScheme.text"),
1305 TSK_CARD_TYPE(116,
"TSK_CARD_TYPE",
1306 bundle.getString(
"BlackboardAttribute.tskCardType.text"),
1308 TSK_BRAND_NAME(117,
"TSK_BRAND_NAME",
1309 bundle.getString(
"BlackboardAttribute.tskBrandName.text"),
1311 TSK_BANK_NAME(118,
"TSK_BANK_NAME",
1312 bundle.getString(
"BlackboardAttribute.tskBankName.text"),
1314 TSK_COUNTRY(119,
"TSK_COUNTRY",
1315 bundle.getString(
"BlackboardAttribute.tskCountry.text"),
1317 TSK_CITY(120,
"TSK_CITY",
1318 bundle.getString(
"BlackboardAttribute.tskCity.text"),
1320 TSK_ACCOUNT_TYPE(121,
"TSK_ACCOUNT_TYPE",
1321 bundle.getString(
"BlackboardAttribute.tskAccountType.text"),
1326 TSK_KEYWORD_SEARCH_TYPE(122,
"TSK_KEYWORD_SEARCH_TYPE",
1327 bundle.getString(
"BlackboardAttribute.tskKeywordSearchType.text"),
1329 TSK_HEADERS(123,
"TSK_HEADERS",
1330 bundle.getString(
"BlackboardAttribute.tskHeaders.text"),
1332 TSK_ID(124,
"TSK_ID",
1333 bundle.getString(
"BlackboardAttribute.tskId.text"),
1335 TSK_SSID(125,
"TSK_SSID",
1336 bundle.getString(
"BlackboardAttribute.tskSsid.text"),
1338 TSK_BSSID(126,
"TSK_BSSID",
1339 bundle.getString(
"BlackboardAttribute.tskBssid.text"),
1341 TSK_MAC_ADDRESS(127,
"TSK_MAC_ADDRESS",
1342 bundle.getString(
"BlackboardAttribute.tskMacAddress.text"),
1344 TSK_IMEI(128,
"TSK_IMEI",
1345 bundle.getString(
"BlackboardAttribute.tskImei.text"),
1347 TSK_IMSI(129,
"TSK_IMSI",
1348 bundle.getString(
"BlackboardAttribute.tskImsi.text"),
1350 TSK_ICCID(130,
"TSK_ICCID",
1351 bundle.getString(
"BlackboardAttribute.tskIccid.text"),
1353 TSK_THREAD_ID(131,
"TSK_THREAD_ID",
1354 bundle.getString(
"BlackboardAttribute.tskthreadid.text"),
1360 TSK_TL_EVENT_TYPE(132,
"TSK_TL_EVENT_TYPE",
1361 bundle.getString(
"BlackboardAttribute.tskTLEventType.text"),
1363 TSK_DATETIME_DELETED(133,
"TSK_DATETIME_DELETED",
1364 bundle.getString(
"BlackboardAttribute.tskdatetimedeleted.text"),
1366 TSK_DATETIME_PASSWORD_RESET(134,
"TSK_DATETIME_PASSWORD_RESET",
1367 bundle.getString(
"BlackboardAttribute.tskdatetimepwdreset.text"),
1369 TSK_DATETIME_PASSWORD_FAIL(135,
"TSK_DATETIME_PWD_FAIL",
1370 bundle.getString(
"BlackboardAttribute.tskdatetimepwdfail.text"),
1372 TSK_DISPLAY_NAME(136,
"TSK_DISPLAY_NAME",
1373 bundle.getString(
"BlackboardAttribute.tskdisplayname.text"),
1375 TSK_PASSWORD_SETTINGS(137,
"TSK_PASSWORD_SETTINGS",
1376 bundle.getString(
"BlackboardAttribute.tskpasswordsettings.text"),
1378 TSK_ACCOUNT_SETTINGS(138,
"TSK_ACCOUNT_SETTINGS",
1379 bundle.getString(
"BlackboardAttribute.tskaccountsettings.text"),
1381 TSK_PASSWORD_HINT(139,
"TSK_PASSWORD_HINT",
1382 bundle.getString(
"BlackboardAttribute.tskpasswordhint.text"),
1384 TSK_GROUPS(140,
"TSK_GROUPS",
1385 bundle.getString(
"BlackboardAttribute.tskgroups.text"),
1392 TSK_ATTACHMENTS(141,
"TSK_ATTACHMENTS",
1393 bundle.getString(
"BlackboardAttribute.tskattachments.text"),
1399 TSK_GEO_TRACKPOINTS(142,
"TSK_GEO_TRACKPOINTS",
1400 bundle.getString(
"BlackboardAttribute.tskgeopath.text"),
1406 TSK_GEO_WAYPOINTS(143,
"TSK_GEO_WAYPOINTS",
1407 bundle.getString(
"BlackboardAttribute.tskgeowaypoints.text"),
1409 TSK_DISTANCE_TRAVELED(144,
"TSK_DISTANCE_TRAVELED",
1410 bundle.getString(
"BlackboardAttribute.tskdistancetraveled.text"),
1412 TSK_DISTANCE_FROM_HOMEPOINT(145,
"TSK_DISTANCE_FROM_HOMEPOINT",
1413 bundle.getString(
"BlackboardAttribute.tskdistancefromhome.text"),
1415 TSK_HASH_PHOTODNA(146,
"TSK_HASH_PHOTODNA",
1416 bundle.getString(
"BlackboardAttribute.tskhashphotodna.text"),
1418 TSK_BYTES_SENT(147,
"TSK_BYTES_SENT",
1419 bundle.getString(
"BlackboardAttribute.tskbytessent.text"),
1421 TSK_BYTES_RECEIVED(148,
"TSK_BYTES_RECEIVED",
1422 bundle.getString(
"BlackboardAttribute.tskbytesreceived.text"),
1424 TSK_LAST_PRINTED_DATETIME(149,
"TSK_LAST_PRINTED_DATETIME",
1425 bundle.getString(
"BlackboardAttribute.tsklastprinteddatetime.text"),
1427 TSK_RULE(150,
"TSK_RULE",
1428 bundle.getString(
"BlackboardAttribute.tskrule.text"),
1430 TSK_ACTIVITY_TYPE(151,
"TSK_ACTIVITY_TYPE",
1431 bundle.getString(
"BlackboardAttribute.tskActivityType.text"),
1437 TSK_GEO_AREAPOINTS(152,
"TSK_GEO_AREAPOINTS",
1438 bundle.getString(
"BlackboardAttribute.tskgeoareapoints.text"),
1440 TSK_REALM(153,
"TSK_REALM",
1441 bundle.getString(
"BlackboardAttribute.tskRealm.text"),
1443 TSK_HOST(154,
"TSK_HOST",
1444 bundle.getString(
"BlackboardAttribute.tskHost.text"),
1448 private final int typeID;
1449 private final String typeName;
1450 private final String displayName;
1462 this.typeID = typeID;
1463 this.typeName = typeName;
1464 this.displayName = displayName;
1465 this.valueType = valueType;
1486 return this.typeName;
1495 return this.displayName;
1504 return this.valueType;
1522 if (attrType.getTypeID() == typeID) {
1526 throw new IllegalArgumentException(
"No ATTRIBUTE_TYPE matching type: " + typeID);
1544 if (attrType.getLabel().equals(typeName)) {
1548 throw new IllegalArgumentException(
"No ATTRIBUTE_TYPE matching type: " + typeName);
1570 public BlackboardAttribute(
int attributeTypeID, String moduleName,
int valueInt)
throws IllegalArgumentException {
1594 this(attributeTypeID, moduleName, valueInt);
1595 this.context = replaceNulls(context);
1618 long valueLong)
throws IllegalArgumentException {
1644 this(attributeTypeID, moduleName, valueLong);
1645 this.context = replaceNulls(context);
1666 double valueDouble)
throws IllegalArgumentException {
1689 double valueDouble) {
1690 this(attributeTypeID, moduleName, valueDouble);
1691 this.context = replaceNulls(context);
1711 public BlackboardAttribute(
int attributeTypeID, String moduleName, String valueString)
throws IllegalArgumentException {
1734 String valueString) {
1735 this(attributeTypeID, moduleName, valueString);
1736 this.context = replaceNulls(context);
1756 public BlackboardAttribute(
int attributeTypeID, String moduleName, byte[] valueBytes)
throws IllegalArgumentException {
1779 byte[] valueBytes) {
1780 this(attributeTypeID, moduleName, valueBytes);
1781 this.context = replaceNulls(context);
1796 setArtifactId(artifactID);
1812 setCaseDatabase(sleuthkitCase);
1835 String getContextString() {
1848 return attributeType.getTypeID();
1862 return attributeType.getTypeName();
1877 return attributeType.getDisplayName();
BlackboardAttribute(int attributeTypeID, String moduleName, String context, byte[] valueBytes)
void setCase(SleuthkitCase sleuthkitCase)
Type(int typeID, String typeName, String displayName, TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE valueType)
String getAttributeTypeDisplayName()
static String epochToTime(long epoch)
TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE getValueType()
static ATTRIBUTE_TYPE fromID(int typeID)
void setArtifactID(long artifactID)
String getAttributeTypeName()
BlackboardAttribute(Type attributeType, String source, long valueLong)
BlackboardAttribute(Type attributeType, String source, int valueInt)
Content getContentById(long id)
BlackboardAttribute(int attributeTypeID, String moduleName, String context, int valueInt)
BlackboardArtifact getBlackboardArtifact(long artifactID)
static TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE fromLabel(String typeName)
TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE getValueType()
BlackboardAttribute(int attributeTypeID, String moduleName, int valueInt)
BlackboardAttribute(int attributeTypeID, String moduleName, String valueString)
String getDisplayString()
BlackboardAttribute(int attributeTypeID, String moduleName, double valueDouble)
boolean equals(Object obj)
BlackboardAttribute(ATTRIBUTE_TYPE attributeType, String source, String valueString)
TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE getValueType()
BlackboardAttribute(Type attributeType, String source, byte[] valueBytes)
static TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE fromType(long typeId)
BlackboardAttribute(int attributeTypeID, String moduleName, String context, double valueDouble)
BlackboardAttribute.Type getAttributeType()
boolean equals(Object that)
static ATTRIBUTE_TYPE fromLabel(String typeName)
BlackboardAttribute(ATTRIBUTE_TYPE attributeType, String source, long valueLong)
BlackboardArtifact getParentArtifact()
BlackboardAttribute(ATTRIBUTE_TYPE attributeType, String source, int valueInt)
BlackboardAttribute(Type attributeType, String source, double valueDouble)
BlackboardAttribute(ATTRIBUTE_TYPE attributeType, String source, double valueDouble)
BlackboardAttribute(int attributeTypeID, String moduleName, String context, long valueLong)
BlackboardAttribute(int attributeTypeID, String moduleName, String context, String valueString)
BlackboardAttribute(int attributeTypeID, String moduleName, long valueLong)
Type(BlackboardAttribute.ATTRIBUTE_TYPE type)
BlackboardAttribute(int attributeTypeID, String moduleName, byte[] valueBytes)
BlackboardAttribute(ATTRIBUTE_TYPE attributeType, String source, byte[] valueBytes)
void addSource(String source)
List< String > getSources()
BlackboardAttribute(Type attributeType, String source, String valueString)