Sleuth Kit Java Bindings (JNI)  4.2
Java bindings for using The Sleuth Kit
TskData.java
Go to the documentation of this file.
1 /*
2  * Sleuth Kit Data Model
3  *
4  * Copyright 2011 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.datamodel;
20 
21 import java.text.MessageFormat;
22 import java.util.ResourceBundle;
23 import java.util.EnumSet;
24 import java.util.Set;
25 
30 public class TskData {
31 
32  private static ResourceBundle bundle = ResourceBundle.getBundle("org.sleuthkit.datamodel.Bundle");
33 
38  public enum TSK_FS_NAME_TYPE_ENUM {
39 
40  UNDEF(0, "-"),
41  FIFO(1, "p"),
42  CHR(2, "c"),
43  DIR(3, "d"),
44  BLK(4, "b"),
45  REG(5, "r"),
46  LNK(6, "l"),
47  SOCK(7, "s"),
48  SHAD(8, "h"),
49  WHT(9, "w"),
50  VIRT(10, "v");
51 
52  private short dirType;
53  String label;
54 
55  private TSK_FS_NAME_TYPE_ENUM(int type, String label) {
56  this.dirType = (short) type;
57  this.label = label;
58  }
59 
65  public short getValue() {
66  return dirType;
67  }
68 
74  public String getLabel() {
75  return this.label;
76  }
77 
84  static public TSK_FS_NAME_TYPE_ENUM valueOf(short dir_type) {
85  for (TSK_FS_NAME_TYPE_ENUM v : TSK_FS_NAME_TYPE_ENUM.values()) {
86  if (v.dirType == dir_type) {
87  return v;
88  }
89  }
90  throw new IllegalArgumentException(
91  MessageFormat.format(bundle.getString("TskData.tskFsNameTypeEnum.exception.msg1.text"), dir_type));
92  }
93  }
94 
99  public enum TSK_FS_META_TYPE_ENUM {
100 
112 
113  private short metaType;
114  private String metaTypeStr;
115 
116  private TSK_FS_META_TYPE_ENUM(int type, String metaTypeStr) {
117  this.metaType = (short) type;
118  this.metaTypeStr = metaTypeStr;
119  }
120 
126  public short getValue() {
127  return metaType;
128  }
129 
130  @Override
131  public String toString() {
132  return metaTypeStr;
133  }
134 
135  public static TSK_FS_META_TYPE_ENUM valueOf(short metaType) {
136  for (TSK_FS_META_TYPE_ENUM type : TSK_FS_META_TYPE_ENUM.values()) {
137  if (type.getValue() == metaType) {
138  return type;
139  }
140  }
141  throw new IllegalArgumentException(
142  MessageFormat.format(bundle.getString("TskData.tskFsMetaTypeEnum.exception.msg1.text"), metaType));
143  }
144  }
145 
150  public enum TSK_FS_NAME_FLAG_ENUM {
151 
152  ALLOC(1, bundle.getString("TskData.tskFsNameFlagEnum.allocated")),
153  UNALLOC(2, bundle.getString("TskData.tskFsNameFlagEnum.unallocated"));
154 
155  private short dirFlag;
156  private String dirFlagStr;
157 
158  private TSK_FS_NAME_FLAG_ENUM(int flag, String dirFlagStr) {
159  this.dirFlag = (short) flag;
160  this.dirFlagStr = dirFlagStr;
161  }
162 
168  public short getValue() {
169  return dirFlag;
170  }
171 
172  @Override
173  public String toString() {
174  return dirFlagStr;
175  }
176 
183  public static TSK_FS_NAME_FLAG_ENUM valueOf(int dirFlag) {
184  for (TSK_FS_NAME_FLAG_ENUM flag : TSK_FS_NAME_FLAG_ENUM.values()) {
185  if (flag.dirFlag == dirFlag) {
186  return flag;
187  }
188  }
189  throw new IllegalArgumentException(
190  MessageFormat.format(bundle.getString("TskData.tskFsNameFlagEnum.exception.msg1.text"), dirFlag));
191  }
192  }
193 
198  public enum TSK_FS_META_FLAG_ENUM {
199 
200  ALLOC(1, bundle.getString("TskData.tskFsMetaFlagEnum.allocated")),
201  UNALLOC(2, bundle.getString("TskData.tskFsMetaFlagEnum.unallocated")),
202  USED(4, bundle.getString("TskData.tskFsMetaFlagEnum.used")),
203  UNUSED(8, bundle.getString("TskData.tskFsMetaFlagEnum.unused")),
204  COMP(16, bundle.getString("TskData.tskFsMetaFlagEnum.compressed")),
205  ORPHAN(32, bundle.getString("TskData.tskFsMetaFlagEnum.orphan"));
206 
207  private short meta_flag;
208  private String label;
209 
210  private TSK_FS_META_FLAG_ENUM(int flag, String label) {
211  this.meta_flag = (short) flag;
212  this.label = label;
213  }
214 
220  public short getValue() {
221  return meta_flag;
222  }
223 
229  @Override
230  public String toString() {
231  return label;
232  }
233 
240  public static Set<TSK_FS_META_FLAG_ENUM> valuesOf(short metaFlags) {
241  Set<TSK_FS_META_FLAG_ENUM> matchedFlags = EnumSet.noneOf(TSK_FS_META_FLAG_ENUM.class);
242 
243  for (TSK_FS_META_FLAG_ENUM v : TSK_FS_META_FLAG_ENUM.values()) {
244  long flag = v.getValue();
245 
246  if ((metaFlags & flag) == flag) {
247  matchedFlags.add(v);
248  }
249  }
250 
251  return matchedFlags;
252  }
253 
254  public static short toInt(Set<TSK_FS_META_FLAG_ENUM> metaFlags) {
255  short val = 0;
256  for (TSK_FS_META_FLAG_ENUM flag : metaFlags) {
257  val |= flag.getValue();
258  }
259  return val;
260  }
261 
262  }
263 
268  public enum TSK_FS_ATTR_TYPE_ENUM {
269 
275  TSK_FS_ATTR_TYPE_NTFS_VVER(0x40), // 64 (NT)
276  TSK_FS_ATTR_TYPE_NTFS_OBJID(0x40), // 64 (2K)
284  TSK_FS_ATTR_TYPE_NTFS_SYMLNK(0xC0), // 192 (NT)
285  TSK_FS_ATTR_TYPE_NTFS_REPARSE(0xC0), // 192 (2K)
290  TSK_FS_ATTR_TYPE_UNIX_INDIR(0x1001), // Indirect blocks for UFS and ExtX file systems
291 
292  // Types for HFS+ File Attributes
293  TSK_FS_ATTR_TYPE_HFS_DEFAULT(0x01), // 1 Data fork of fs special files and misc
294  TSK_FS_ATTR_TYPE_HFS_DATA(0x1100), // 4352 Data fork of regular files
295  TSK_FS_ATTR_TYPE_HFS_RSRC(0x1101), // 4353 Resource fork of regular files
296  TSK_FS_ATTR_TYPE_HFS_EXT_ATTR(0x1102), // 4354 Extended Attributes) except compression records
297  TSK_FS_ATTR_TYPE_HFS_COMP_REC(0x1103); // 4355 Compression records
298 
299  private int val;
300 
301  private TSK_FS_ATTR_TYPE_ENUM(int val) {
302  this.val = val;
303  }
304 
305  public int getValue() {
306  return val;
307  }
308 
309  public static TSK_FS_ATTR_TYPE_ENUM valueOf(int val) {
310  for (TSK_FS_ATTR_TYPE_ENUM type : TSK_FS_ATTR_TYPE_ENUM.values()) {
311  if (type.val == val) {
312  return type;
313  }
314  }
315  throw new IllegalArgumentException(
316  MessageFormat.format(bundle.getString("TskData.tskFsAttrTypeEnum.exception.msg1.text"), val));
317  }
318  };
319 
324  public enum TSK_VS_PART_FLAG_ENUM {
325 
330 
331  private long vs_flag;
332 
333  private TSK_VS_PART_FLAG_ENUM(long flag) {
334  vs_flag = flag;
335  }
336 
342  public long getVsFlag() {
343  return vs_flag;
344  }
345 
346  }
347 
352  public enum TSK_FS_META_MODE_ENUM {
353  /* The following describe the file permissions */
354 
358 
362 
366 
370 
371  private short mode;
372 
373  private TSK_FS_META_MODE_ENUM(int mode) {
374  this.mode = (short) mode;
375  }
376 
382  public short getMode() {
383  return mode;
384  }
385 
393  public static Set<TSK_FS_META_MODE_ENUM> valuesOf(short modes) {
394  Set<TSK_FS_META_MODE_ENUM> matchedFlags = EnumSet.noneOf(TSK_FS_META_MODE_ENUM.class);
395 
396  for (TSK_FS_META_MODE_ENUM v : TSK_FS_META_MODE_ENUM.values()) {
397  long flag = v.getMode();
398 
399  if ((modes & flag) == flag) {
400  matchedFlags.add(v);
401  }
402  }
403 
404  return matchedFlags;
405  }
406 
411  public static short toInt(Set<TSK_FS_META_MODE_ENUM> modes) {
412  short modesInt = 0;
413  for (TSK_FS_META_MODE_ENUM mode : modes) {
414  modesInt |= mode.getMode();
415  }
416  return modesInt;
417  }
418  };
419 
420 
425  public enum TSK_FS_TYPE_ENUM {
426 
427  TSK_FS_TYPE_DETECT(0x00000000),
428  TSK_FS_TYPE_NTFS(0x00000001),
430  TSK_FS_TYPE_FAT12(0x00000002),
431  TSK_FS_TYPE_FAT16(0x00000004),
432  TSK_FS_TYPE_FAT32(0x00000008),
433  TSK_FS_TYPE_EXFAT(0x0000000A),
435  TSK_FS_TYPE_FFS1(0x00000010),
436  TSK_FS_TYPE_FFS1B(0x00000020),
437  TSK_FS_TYPE_FFS2(0x00000040),
439  TSK_FS_TYPE_EXT2(0x00000080),
440  TSK_FS_TYPE_EXT3(0x00000100),
442  TSK_FS_TYPE_SWAP(0x00000200),
444  TSK_FS_TYPE_RAW(0x00000400),
446  TSK_FS_TYPE_ISO9660(0x00000800),
448  TSK_FS_TYPE_HFS(0x00001000),
450  TSK_FS_TYPE_EXT4(0x00002000),
451  TSK_FS_TYPE_YAFFS2(0x00004000),
453  TSK_FS_TYPE_UNSUPP(0xffffffff);
454 
455  private int value;
456 
457  private TSK_FS_TYPE_ENUM(int value) {
458  this.value = value;
459  }
460 
466  public int getValue() {
467  return value;
468  }
469 
477  public static TSK_FS_TYPE_ENUM valueOf(int fsTypeValue) {
478  for (TSK_FS_TYPE_ENUM type : TSK_FS_TYPE_ENUM.values()) {
479  if (type.value == fsTypeValue) {
480  return type;
481  }
482  }
483  throw new IllegalArgumentException(
484  MessageFormat.format(bundle.getString("TskData.tskFsTypeEnum.exception.msg1.text"), fsTypeValue));
485  }
486 
487  };
488 
493  public enum TSK_IMG_TYPE_ENUM {
494 
495  TSK_IMG_TYPE_DETECT(0, bundle.getString("TskData.tskImgTypeEnum.autoDetect")), // Auto Detection
496  TSK_IMG_TYPE_RAW_SING(1, bundle.getString("TskData.tskImgTypeEnum.rawSingle")), // Single raw file (dd)
497  TSK_IMG_TYPE_RAW_SPLIT(2, bundle.getString("TskData.tskImgTypeEnum.rawSplit")), // Split raw files
498  TSK_IMG_TYPE_AFF_AFF(4, "AFF"), // Advanced Forensic Format NON-NLS
499  TSK_IMG_TYPE_AFF_AFD(8, "AFD"), // AFF Multiple File NON-NLS
500  TSK_IMG_TYPE_AFF_AFM(16, "AFM"), // AFF with external metadata NON-NLS
501  TSK_IMG_TYPE_AFF_ANY(32, "AFF"), // All AFFLIB image formats (including beta ones) NON-NLS
502  TSK_IMG_TYPE_EWF_EWF(64, "E01"), // Expert Witness format (encase) NON-NLS
503  TSK_IMG_TYPE_UNSUPP(65535, bundle.getString("TskData.tskImgTypeEnum.unknown")); // Unsupported Image Type
504 
505  private long imgType;
506  private String name;
507 
508  private TSK_IMG_TYPE_ENUM(long type, String name) {
509  this.imgType = type;
510  this.name = name;
511  }
512 
513  public static TSK_IMG_TYPE_ENUM valueOf(long imgType) {
514  for (TSK_IMG_TYPE_ENUM type : TSK_IMG_TYPE_ENUM.values()) {
515  if (type.getValue() == imgType) {
516  return type;
517  }
518  }
519  throw new IllegalArgumentException(
520  MessageFormat.format(bundle.getString("TskData.tskImgTypeEnum.exception.msg1.text"), imgType));
521  }
522 
528  public long getValue() {
529  return imgType;
530  }
531 
537  public String getName() {
538  return name;
539  }
540  };
541 
546  public enum TSK_VS_TYPE_ENUM {
547 
548  TSK_VS_TYPE_DETECT(0x0000, bundle.getString("TskData.tskVSTypeEnum.autoDetect")),
549  TSK_VS_TYPE_DOS(0x0001, "DOS"),
550  TSK_VS_TYPE_BSD(0x0002, "BSD"),
551  TSK_VS_TYPE_SUN(0x0004, "SUN VTOC"),
552  TSK_VS_TYPE_MAC(0x0008, "Mac"),
553  TSK_VS_TYPE_GPT(0x0010, "GPT"),
554  TSK_VS_TYPE_DBFILLER(0x00F0, bundle.getString("TskData.tskVSTypeEnum.fake")),
555  TSK_VS_TYPE_UNSUPP(0xFFFF, bundle.getString("TskData.tskVSTypeEnum.unsupported"));
556 
557  private long vsType;
558  private String name;
559 
560  private TSK_VS_TYPE_ENUM(long type, String name) {
561  this.vsType = type;
562  this.name = name;
563  }
564 
565  public static TSK_VS_TYPE_ENUM valueOf(long vsType) {
566  for (TSK_VS_TYPE_ENUM type : TSK_VS_TYPE_ENUM.values()) {
567  if (type.getVsType() == vsType) {
568  return type;
569  }
570  }
571  throw new IllegalArgumentException(
572  MessageFormat.format(bundle.getString("TskData.tskVSTypeEnum.exception.msg1.text"), vsType));
573  }
574 
580  public long getVsType() {
581  return vsType;
582  }
583 
589  public String getName() {
590  return name;
591  }
592  };
593 
594 
599  public enum ObjectType {
600 
601  IMG(0),
602  VS(1),
603  VOL(2),
604  FS(3),
606 
607  private short objectType;
608 
609  private ObjectType(int objectType) {
610  this.objectType = (short) objectType;
611  }
612 
618  public short getObjectType() {
619  return objectType;
620  }
621 
628  public static ObjectType valueOf(short objectType) {
629  for (ObjectType v : ObjectType.values()) {
630  if (v.objectType == objectType) {
631  return v;
632  }
633  }
634  throw new IllegalArgumentException(
635  MessageFormat.format(bundle.getString("TskData.objectTypeEnum.exception.msg1.text"), objectType));
636  }
637  }
638 
643 
644  FS(0, "File System"),
645  CARVED(1, "Carved"),
646  DERIVED(2, "Derived"),
647  LOCAL(3, "Local"),
648  UNALLOC_BLOCKS(4, "Unallocated Blocks"),
649  UNUSED_BLOCKS(5, "Unused Blocks"),
650  VIRTUAL_DIR(6, "Virtual Directory"),
651  ;
652 
653  private final short fileType;
654  private final String name;
655 
656  private TSK_DB_FILES_TYPE_ENUM(int fileType, String name) {
657  this.fileType = (short) fileType;
658  this.name = name;
659  }
660 
667  public static TSK_DB_FILES_TYPE_ENUM valueOf(short fileType) {
668  for (TSK_DB_FILES_TYPE_ENUM type : TSK_DB_FILES_TYPE_ENUM.values()) {
669  if (type.fileType == fileType) {
670  return type;
671  }
672  }
673  throw new IllegalArgumentException(
674  MessageFormat.format(bundle.getString("TskData.tskDbFilesTypeEnum.exception.msg1.text"), fileType));
675  }
676 
682  public short getFileType() {
683  return fileType;
684  }
685 
686  public String getName() {
687  return name;
688  }
689  }
690 
695  public enum FileKnown {
696 
697  UNKNOWN(0, bundle.getString("TskData.fileKnown.unknown")),
698  KNOWN(1, bundle.getString("TskData.fileKnown.known")),
699  BAD(2, bundle.getString("TskData.fileKnown.knownBad"));
700 
701  private byte known;
702  private String name;
703 
704  private FileKnown(int known, String name) {
705  this.known = (byte) known;
706  this.name = name;
707  }
708 
715  public static FileKnown valueOf(byte known) {
716  for (FileKnown v : FileKnown.values()) {
717  if (v.known == known) {
718  return v;
719  }
720  }
721  throw new IllegalArgumentException(
722  MessageFormat.format(bundle.getString("TskData.fileKnown.exception.msg1.text"), known));
723  }
724 
725  public String getName() {
726  return this.name;
727  }
728 
734  public byte getFileKnownValue() {
735  return this.known;
736  }
737  }
738 }
VIRT
Special (TSK added "Virtual" files) NON-NLS.
Definition: TskData.java:50
FS
File that can be found in file system tree.
Definition: TskData.java:644
static FileKnown valueOf(byte known)
Definition: TskData.java:715
TSK_VS_PART_FLAG_ALL
Show all sectors in the walk.
Definition: TskData.java:329
TSK_VS_TYPE_BSD
BSD Partition table NON-NLS.
Definition: TskData.java:550
TSK_VS_TYPE_MAC
Mac partition table NON-NLS.
Definition: TskData.java:552
static Set< TSK_FS_META_FLAG_ENUM > valuesOf(short metaFlags)
Definition: TskData.java:240
TSK_VS_TYPE_DBFILLER
fake partition table type for loaddb (for images that do not have a volume system) ...
Definition: TskData.java:554
UNUSED
Metadata structure has never been allocated.
Definition: TskData.java:203
ALLOC
Metadata structure is currently in an allocated state.
Definition: TskData.java:200
TSK_VS_PART_FLAG_ALLOC
Sectors are allocated to a volume in the volume system.
Definition: TskData.java:326
static TSK_FS_TYPE_ENUM valueOf(int fsTypeValue)
Definition: TskData.java:477
UNALLOC
Metadata structure is currently in an unallocated state.
Definition: TskData.java:201
static TSK_FS_META_TYPE_ENUM valueOf(short metaType)
Definition: TskData.java:135
COMP
The file contents are compressed.
Definition: TskData.java:204
TSK_FS_TYPE_YAFFS2_DETECT
YAFFS2 auto detection.
Definition: TskData.java:452
TSK_VS_PART_FLAG_META
Sectors contain volume system metadata and could also be ALLOC or UNALLOC.
Definition: TskData.java:328
TSK_FS_TYPE_FFS1B
UFS1b (Solaris - has no type)
Definition: TskData.java:436
TSK_FS_TYPE_FFS1
UFS1 (FreeBSD, OpenBSD, BSDI ...)
Definition: TskData.java:435
static TSK_FS_ATTR_TYPE_ENUM valueOf(int val)
Definition: TskData.java:309
LOCAL
Local file that was added (not from a disk image)
Definition: TskData.java:647
CARVED
Set of blocks for a file found from carving. Could be on top of a TSK_DB_FILES_TYPE_UNALLOC_BLOCKS ra...
Definition: TskData.java:645
static TSK_FS_NAME_FLAG_ENUM valueOf(int dirFlag)
Definition: TskData.java:183
TSK_FS_META_TYPE_ENUM(int type, String metaTypeStr)
Definition: TskData.java:116
TSK_FS_TYPE_ISO9660_DETECT
ISO9660 auto detection.
Definition: TskData.java:447
FS
File System - see tsk_fs_info for more details.
Definition: TskData.java:604
USED
Metadata structure has been allocated at least once.
Definition: TskData.java:202
VOL
Volume - see tsk_vs_parts for more details.
Definition: TskData.java:603
TSK_FS_META_TYPE_VIRT
"Virtual File" created by TSK for file system areas NON-NLS
Definition: TskData.java:111
TSK_VS_TYPE_GPT
GPT partition table NON-NLS.
Definition: TskData.java:553
TSK_FS_TYPE_DETECT
Use autodetection methods.
Definition: TskData.java:427
static TSK_FS_NAME_TYPE_ENUM valueOf(short dir_type)
Definition: TskData.java:84
static short toInt(Set< TSK_FS_META_MODE_ENUM > modes)
Definition: TskData.java:411
BAD
File marked as known and bad/notable/interesting by hash db.
Definition: TskData.java:699
DERIVED
File derived from a parent file (i.e. from ZIP)
Definition: TskData.java:646
static TSK_DB_FILES_TYPE_ENUM valueOf(short fileType)
Definition: TskData.java:667
TSK_FS_NAME_FLAG_ENUM(int flag, String dirFlagStr)
Definition: TskData.java:158
static short toInt(Set< TSK_FS_META_FLAG_ENUM > metaFlags)
Definition: TskData.java:254
static TSK_IMG_TYPE_ENUM valueOf(long imgType)
Definition: TskData.java:513
UNALLOC_BLOCKS
Set of blocks not allocated by file system. Parent should be image, volume, or file system...
Definition: TskData.java:648
TSK_FS_META_TYPE_SOCK
UNIX domain socket NON-NLS.
Definition: TskData.java:109
static ObjectType valueOf(short objectType)
Definition: TskData.java:628
UNKNOWN
File marked as unknown by hash db.
Definition: TskData.java:697
static Set< TSK_FS_META_MODE_ENUM > valuesOf(short modes)
Definition: TskData.java:393
static ResourceBundle bundle
Definition: TskData.java:32
TSK_VS_TYPE_DETECT
Use autodetection methods.
Definition: TskData.java:548
KNOWN
File marked as a known by hash db.
Definition: TskData.java:698
VIRTUAL_DIR
Virtual directory (not on fs) with no meta-data entry that can be used to group files of types other ...
Definition: TskData.java:650
TSK_VS_PART_FLAG_UNALLOC
Sectors are not allocated to a volume.
Definition: TskData.java:327
static TSK_VS_TYPE_ENUM valueOf(long vsType)
Definition: TskData.java:565
ABSTRACTFILE
File - see tsk_files for more details.
Definition: TskData.java:605
TSK_VS_TYPE_DOS
DOS Partition table NON-NLS.
Definition: TskData.java:549
ORPHAN
Return only metadata structures that have no file name pointing to the (inode_walk flag only) ...
Definition: TskData.java:205
FileKnown(int known, String name)
Definition: TskData.java:704
UNUSED_BLOCKS
Set of blocks that are unallocated AND not used by a carved or other file type. Parent should be UNAL...
Definition: TskData.java:649
VS
Volume System - see tsk_vs_info for more details.
Definition: TskData.java:602
IMG
Disk Image - see tsk_image_info for more details.
Definition: TskData.java:601
UNALLOC
Name is in an unallocated state.
Definition: TskData.java:153

Copyright © 2011-2015 Brian Carrier. (carrier -at- sleuthkit -dot- org)
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.