38 private long imgOffset, blockSize, blockCount, rootInum,
42 private volatile long filesystemHandle = 0;
60 long first_inum,
long last_inum) {
61 super(db, obj_id, name);
62 this.imgOffset = img_offset;
63 this.fsType = fs_type;
64 this.blockSize = block_size;
65 this.blockCount = block_count;
66 this.rootInum = root_inum;
67 this.firstInum = first_inum;
68 this.lastInum = last_inum;
79 if (dataSource instanceof
Image && ArrayUtils.isEmpty(((
Image) dataSource).getPaths())) {
87 return blockSize * blockCount;
100 if (filesystemHandle == 0) {
101 synchronized (
this) {
102 if (filesystemHandle == 0) {
104 if ((dataSource ==
null) || ( !(dataSource instanceof
Image))) {
108 Image image = (Image) dataSource;
111 if (isPoolContent()) {
112 Pool pool = getPool();
114 throw new TskCoreException(
"Error finding pool for file system");
117 Volume poolVolume = getPoolVolume();
118 if (poolVolume ==
null) {
119 throw new TskCoreException(
"File system is in a pool but has no volume");
121 filesystemHandle = SleuthkitJNI.openFsPool(image.getImageHandle(), imgOffset, pool.getPoolHandle(), poolVolume.getStart(),
getSleuthkitCase());
123 String password = getImagePasswordFromSettings(image.getAcquisitionToolSettings());
124 filesystemHandle = SleuthkitJNI.openFs(image.getImageHandle(), imgOffset, password,
getSleuthkitCase());
129 return this.filesystemHandle;
139 private String getImagePasswordFromSettings(String settingsStr) {
141 if(StringUtils.isBlank(settingsStr)){
146 Map<String, Object> settingsMap = (
new Gson()).fromJson(settingsStr, Map.class);
147 return (String)settingsMap.getOrDefault(IMAGE_PASSWORD_KEY,
"");
148 }
catch (JsonSyntaxException ex) {
157 if (children.size() != 1) {
161 if (!(children.get(0) instanceof
Directory)) {
231 @SuppressWarnings(
"deprecation")
235 if (filesystemHandle != 0) {
237 filesystemHandle = 0;
246 return v.
visit(
this);
250 public <T> T accept(ContentVisitor<T> v) {
251 return v.visit(
this);
256 return super.toString(preserveState) +
"FileSystem [\t" +
" blockCount " + blockCount +
"\t" +
"blockSize " + blockSize +
"\t" +
"firstInum " + firstInum +
"\t" +
"fsType " + fsType +
"\t" +
"imgOffset " + imgOffset +
"\t" +
"lastInum " + lastInum +
"\t" +
"rootInum " + rootInum +
"\t" +
"]";
AbstractContent(SleuthkitCase db, long obj_id, String name)
List< Content > getChildren()
SleuthkitCase getSleuthkitCase()
FileSystem(SleuthkitCase db, long obj_id, String name, long img_offset, TskData.TSK_FS_TYPE_ENUM fs_type, long block_size, long block_count, long root_inum, long first_inum, long last_inum)