mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-13 08:26:15 +00:00
Changed code to use TSK ranges for unallocated file boundary calculations
This commit is contained in:
parent
f50179ab90
commit
32b2588f84
@ -94,6 +94,10 @@ class PhotoRecCarverOutputParser {
|
|||||||
// create and initialize the list to put into the database
|
// create and initialize the list to put into the database
|
||||||
List<CarvedFileContainer> carvedFileContainer = new ArrayList<>();
|
List<CarvedFileContainer> carvedFileContainer = new ArrayList<>();
|
||||||
|
|
||||||
|
List<TskFileRange> ranges = af.getRanges();
|
||||||
|
TskFileRange lastRange = ranges.get(ranges.size() - 1);
|
||||||
|
long imageByteEnd = lastRange.getByteStart() + lastRange.getByteLen();
|
||||||
|
|
||||||
for (int fileIndex = 0; fileIndex < numberOfFiles; ++fileIndex) {
|
for (int fileIndex = 0; fileIndex < numberOfFiles; ++fileIndex) {
|
||||||
entry = (Element) fileObjects.item(fileIndex);
|
entry = (Element) fileObjects.item(fileIndex);
|
||||||
fileNames = entry.getElementsByTagName("filename"); //NON-NLS
|
fileNames = entry.getElementsByTagName("filename"); //NON-NLS
|
||||||
@ -109,21 +113,19 @@ class PhotoRecCarverOutputParser {
|
|||||||
|
|
||||||
List<TskFileRange> tskRanges = new ArrayList<>();
|
List<TskFileRange> tskRanges = new ArrayList<>();
|
||||||
for (int rangeIndex = 0; rangeIndex < fileRanges.getLength(); ++rangeIndex) {
|
for (int rangeIndex = 0; rangeIndex < fileRanges.getLength(); ++rangeIndex) {
|
||||||
|
|
||||||
Long img_offset = Long.parseLong(((Element) fileRanges.item(rangeIndex)).getAttribute("img_offset")); //NON-NLS
|
Long img_offset = Long.parseLong(((Element) fileRanges.item(rangeIndex)).getAttribute("img_offset")); //NON-NLS
|
||||||
Long len = Long.parseLong(((Element) fileRanges.item(rangeIndex)).getAttribute("len")); //NON-NLS
|
Long len = Long.parseLong(((Element) fileRanges.item(rangeIndex)).getAttribute("len")); //NON-NLS
|
||||||
|
|
||||||
// Verify PhotoRec's output
|
// Verify PhotoRec's output
|
||||||
long imageByteStart = af.convertToImgOffset(0);
|
|
||||||
long imageByteEnd = imageByteStart + af.getSize();
|
|
||||||
|
|
||||||
long fileByteStart = af.convertToImgOffset(img_offset);
|
long fileByteStart = af.convertToImgOffset(img_offset);
|
||||||
long fileByteEnd = fileByteStart + len;
|
if (fileByteStart == -1) {
|
||||||
|
|
||||||
if (fileByteStart < imageByteStart || fileByteStart >= imageByteEnd) {
|
|
||||||
// This better never happen... Data for this file is corrupted. Skip it.
|
// This better never happen... Data for this file is corrupted. Skip it.
|
||||||
|
logger.log(Level.INFO, "Error while parsing PhotoRec output for file {0}", fileName); //NON-NLS
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long fileByteEnd = fileByteStart + len;
|
||||||
if (fileByteEnd > imageByteEnd) {
|
if (fileByteEnd > imageByteEnd) {
|
||||||
long overshoot = fileByteEnd - imageByteEnd;
|
long overshoot = fileByteEnd - imageByteEnd;
|
||||||
if (fileSize > overshoot) {
|
if (fileSize > overshoot) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user