Example #1
0
def main():
    if 0:
        t = time.time()
        fd = open("./images/ntfs1-gen2.dd", "rb")
        count = test_time(fd)
        print "RAW Read %s in %s" % (count, time.time() - t)

    if 1:
        t = time.time()
        ## Open all the volumes at once:
        fiffile = fif.FIFFile("./samples/ntfs1-gen2.00.zip", readwrite=True)

        fd = fiffile.open_stream_by_name("./images/ntfs1-gen2.dd")

        count = test_time(fd)
        fiffile.stats()
        print "FIF Read %s in %s" % (count, time.time() - t)

    if 0:
        t = time.time()
        fd = pyewf.open([
            "test.E01",
        ])
        count = test_time(fd)
        fd.close()
        print "EWF Read %s in %s" % (count, time.time() - t)
Example #2
0
 def __init__(self, base, opts):
     assert(base)
     assert(base.read(0,6) == "\x45\x56\x46\x09\x0D\x0A")
     self.name = self.fname = opts['filename']
     self.fhandle = pyewf.open([self.name])
     self.mode = 'rb'
     self.fhandle.seek(0,2)
     self.fsize = self.fhandle.tell()
     self.fhandle.seek(0)
Example #3
0
 def __init__(self, base, opts):
     assert (base)
     assert (base.read(0, 6) == "\x45\x56\x46\x09\x0D\x0A")
     self.name = self.fname = opts['filename']
     self.fhandle = pyewf.open([self.name])
     self.mode = 'rb'
     self.fhandle.seek(0, 2)
     self.fsize = self.fhandle.tell()
     self.fhandle.seek(0)
Example #4
0
    def worker(self):
        disk: pyewf.handle = pyewf.open(self._names)
        queue = self._queue

        while True:
            with Timer(f"({current_thread().ident})Reading spends:",
                       display=False):
                task = queue.get()
                if task is None:  # get None, exit
                    break
                task.read_complete_event.wait()  # wait until read complete

            task.buffer[:] = disk.read_buffer_at_offset(task.size, task.offset)
            task.write_complete_event.set()  # write complete

            queue.task_done()  # useless now
Example #5
0
    def __init__(
        self,
        ewf_path: Path,
        parallelism: int = 3,
        block_size: int = 1024 * 1024 * 512,
        verbose: bool = False,
    ):
        # backup for recovery
        current_dir = os.getcwd()

        if str(ewf_path) != ewf_path.name:
            warnings.warn(
                "pyewf can only handle file in current dir, current dir may change!"
            )
            os.chdir(ewf_path.absolute().parent)
            ewf_path = Path(ewf_path.name)

        ewf_path: str = str(ewf_path)

        self._names = pyewf.glob(ewf_path)
        self._thread_count = parallelism
        self._block_size = block_size
        self._queue_size = parallelism + 3
        self._queue = Queue(maxsize=self._queue_size)
        self._threads = [
            Thread(target=self.worker) for _ in range(parallelism)
        ]
        self._verbose = verbose

        disk: pyewf.handle
        with closing(pyewf.open(self._names)) as disk:
            self._disk_size = disk.media_size

        for t in self._threads:
            t.start()

        os.chdir(current_dir)
Example #6
0
def main():
    if 0:
        t = time.time()
        fd = open("./images/ntfs1-gen2.dd", "rb")
        count = test_time(fd)
        print "RAW Read %s in %s" % (count, time.time() - t)

    if 1:
        t = time.time()
        ## Open all the volumes at once:
        fiffile = fif.FIFFile("./samples/ntfs1-gen2.00.zip", readwrite=True)

        fd = fiffile.open_stream_by_name("./images/ntfs1-gen2.dd")

        count = test_time(fd)
        fiffile.stats()
        print "FIF Read %s in %s" % (count, time.time() - t)

    if 0:
        t = time.time()
        fd = pyewf.open(["test.E01"])
        count = test_time(fd)
        fd.close()
        print "EWF Read %s in %s" % (count, time.time() - t)