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)
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)
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)
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
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)
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)