コード例 #1
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def flag(self): return reverse_hexlify_int(self.flag_raw)

    # @property
    # def reserved(self): return self.

    ####################################################################################################################
    # Derived values
    @property
コード例 #2
0
ファイル: rstr_record.py プロジェクト: NTFSparse/ntfs_parse
    def restartlog_open_count(self): return reverse_hexlify_int(self.restartlog_open_count_raw)

    ####################################################################################################################
    # Derived values

    ####################################################################################################################
    # Printing

    def all_fields_described(self):
コード例 #3
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def target_lcn(self): return reverse_hexlify_int(self.target_lcn_raw)

    # @property
    # def alignment_or_reserved3(self): return self.
    #
    # @property
    # def data(self): return self.

    @property
コード例 #4
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
    def parse(self, number=None):
        n_parsed = 0
        with open(self.file_name, 'rb') as f:
            while n_parsed != number:
                pos = f.tell()

                bytes = f.read(4)
                if len(bytes) == 0:
                    # EOF
                    break
                size = reverse_hexlify_int(bytes)
                if size == 0:
                    # We've hit a bunch of zeroes. Complete this useless line en start looping.
                    # The file often contains blobs of zeroes as it consists of multiple runs, each padded with zeroes
                    # in the end if a full USN record doesn't fit anymore.
                    pos = f.tell()
                    if pos % 16 != 0:
                        f.seek(16 - pos % 16, os.SEEK_CUR)
                    while True:
                        line = f.read(16)
                        if len(line) == 0:
                            # EOF
                            # print('breaking')
                            return
                        if line != b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00':
                            break

                    # Done skipping rows of zeroes.
                    size = reverse_hexlify_int(line[0:4])

                    # Reset from reading the last line
                    f.seek(-16, os.SEEK_CUR)
                    pos = f.tell()

                else:
                    # This flow needs to reset its cursor.
                    f.seek(pos)
                record = UsnRecord(f.read(size), offset_bytes=pos)
                if not record:
                    # Record could not be parsed. At this moment, this is a weak promise that stuff will work.
                    # If this happens, just stop. Probably this is the end of the file where we will find gibberish
                    return
                self.records.append(record)
                n_parsed += 1
コード例 #5
0
    def _parse(self):
        current_runlist = self.runlist_bytes
        while len(current_runlist) > 2 and current_runlist[0] >= 0b00000001:
            run_offset_length = (current_runlist[0] & 0b11110000) >> 4
            run_length_length = current_runlist[0] & 0b00001111

            if run_offset_length > 0:
                run_offset_bytes = reverse(current_runlist[1+run_length_length : 1+run_length_length+run_offset_length])
                run_offset = int(hexlify(run_offset_bytes), 16)
                # Check whether the MSB is set, which means that it is signed and therefore negative
                if run_offset_bytes[0] >= 128:
                    run_offset -= 256 ** len(run_offset_bytes)
            else:
                run_offset = 0
            run_length = reverse_hexlify_int(current_runlist[1 : 1+run_length_length])
            self.runs.append((run_offset, run_length))
            current_runlist = current_runlist[1+run_length_length+run_offset_length:]
コード例 #6
0
ファイル: attribute_headers.py プロジェクト: ta-b0/ntfs_parse
    def _parse(self):
        current_runlist = self.runlist_bytes
        while len(current_runlist) > 2 and current_runlist[0] >= 0b00000001:
            run_offset_length = (current_runlist[0] & 0b11110000) >> 4
            run_length_length = current_runlist[0] & 0b00001111

            if run_offset_length > 0:
                run_offset_bytes = reverse(
                    current_runlist[1 + run_length_length:1 +
                                    run_length_length + run_offset_length])
                run_offset = int(hexlify(run_offset_bytes), 16)
                # Check whether the MSB is set, which means that it is signed and therefore negative
                if run_offset_bytes[0] >= 128:
                    run_offset -= 256**len(run_offset_bytes)
            else:
                run_offset = 0
            run_length = reverse_hexlify_int(
                current_runlist[1:1 + run_length_length])
            self.runs.append((run_offset, run_length))
            current_runlist = current_runlist[1 + run_length_length +
                                              run_offset_length:]
コード例 #7
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def transaction_id(self): return reverse_hexlify_int(self.transaction_id_raw)

    @property
コード例 #8
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def client_index(self): return reverse_hexlify_int(self.client_index_raw)

    @property
コード例 #9
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def restart_area_offset(self):
     return reverse_hexlify_int(self.restart_area_offset_raw)
コード例 #10
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def file_name_length(self):
     return reverse_hexlify_int(self.file_name_length_raw)
コード例 #11
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def client_array_offset(self):
     return reverse_hexlify_int(self.client_array_offset_raw)
コード例 #12
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def current_lsn(self):
     return reverse_hexlify_int(self.current_lsn_raw)
コード例 #13
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def lcns_to_follow(self): return reverse_hexlify_int(self.lcns_to_follow_raw)

    @property
コード例 #14
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def oldest_lsn(self):
     return reverse_hexlify_int(self.oldest_lsn_raw)
コード例 #15
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def restartlog_open_count(self):
     return reverse_hexlify_int(self.restartlog_open_count_raw)
コード例 #16
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def logpage_data_offset(self):
     return reverse_hexlify_int(self.logpage_data_offset_raw)
コード例 #17
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def log_record_hd_length(self):
     return reverse_hexlify_int(self.log_record_hd_length_raw)
コード例 #18
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def last_lsn_data_length(self):
     return reverse_hexlify_int(self.last_lsn_data_length_raw)
コード例 #19
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def file_size(self):
     return reverse_hexlify_int(self.file_size_raw)
コード例 #20
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def undo_operation(self): return reverse_hexlify_int(self.undo_operation_raw)

    @property
コード例 #21
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def undo_length(self): return reverse_hexlify_int(self.undo_length_raw)

    @property
コード例 #22
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def client_restart_lsn(self):
     return reverse_hexlify_int(self.client_restart_lsn_raw)
コード例 #23
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def attr_offset(self): return reverse_hexlify_int(self.attr_offset_raw)

    @property
コード例 #24
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def client_name_length(self):
     return reverse_hexlify_int(self.client_name_length_raw)
コード例 #25
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def __init__(self, data=None, offset_bytes=None):
     record_length = reverse_hexlify_int(data[0:4])
     self.data = data[0:record_length]
     self.offset_bytes = offset_bytes
     self.file_attributes_object = FileAttributesFlag(self.file_attributes)
コード例 #26
0
ファイル: rstr_record.py プロジェクト: NTFSparse/ntfs_parse
    def logpage_data_offset(self): return reverse_hexlify_int(self.logpage_data_offset_raw)

    @property
コード例 #27
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def security_id(self):
     return reverse_hexlify_int(self.security_id_raw)
コード例 #28
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def sequence_number_bits(self):
     return reverse_hexlify_int(self.sequence_number_bits_raw)
コード例 #29
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def file_reference_mft_entry(self):
     return reverse_hexlify_int(self.file_reference_number_raw[0:6])
コード例 #30
0
ファイル: rstr_record.py プロジェクト: NTFSparse/ntfs_parse
    def oldest_lsn(self): return reverse_hexlify_int(self.oldest_lsn_raw)

    @property
コード例 #31
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def seq_number(self): return reverse_hexlify_int(self.seq_number_raw)

    @property
コード例 #32
0
ファイル: rstr_record.py プロジェクト: NTFSparse/ntfs_parse
    def client_restart_lsn(self): return reverse_hexlify_int(self.client_restart_lsn_raw)

    @property
コード例 #33
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def record_type(self): return reverse_hexlify_int(self.record_type_raw)

    @property
コード例 #34
0
ファイル: rstr_record.py プロジェクト: NTFSparse/ntfs_parse
    def client_name_length(self): return reverse_hexlify_int(self.client_name_length_raw)

    @property
コード例 #35
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def log_clients(self):
     return reverse_hexlify_int(self.log_clients_raw)
コード例 #36
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def update_seq_array_count(self): return reverse_hexlify_int(self.update_seq_array_count_raw)

    @property
コード例 #37
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def undo_offset(self): return reverse_hexlify_int(self.undo_offset_raw)

    @property
コード例 #38
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def last_lsn_or_offset_to_next_page(self): return reverse_hexlify_int(self.last_lsn_or_offset_to_next_page_raw)

    @property
コード例 #39
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def target_attribute(self): return reverse_hexlify_int(self.target_attribute_raw)

    @property
コード例 #40
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def flags(self): return reverse_hexlify_int(self.flags_raw)

    @property
コード例 #41
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def record_offset(self): return reverse_hexlify_int(self.record_offset_raw)

    @property
コード例 #42
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def record_length(self):
     return reverse_hexlify_int(self.record_length_raw)
コード例 #43
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def mft_cluster_index(self): return reverse_hexlify_int(self.mft_cluster_index_raw)

    # @property
    # def alignment_or_reserved1(self): return self.

    @property
コード例 #44
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def usn(self):
     return reverse_hexlify_int(self.usn_raw)
コード例 #45
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def __new__(cls, data, offset_bytes):
     major_version = reverse_hexlify_int(data[4:6])
     if major_version == 2:
         return UsnRecordV2(data, offset_bytes)
コード例 #46
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def reason(self):
     return reverse_hexlify_int(self.reason_raw)
コード例 #47
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def page_count(self): return reverse_hexlify_int(self.page_count_raw)

    @property
コード例 #48
0
ファイル: rstr_record.py プロジェクト: ta-b0/ntfs_parse
 def restart_area_length(self):
     return reverse_hexlify_int(self.restart_area_length_raw)
コード例 #49
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def minor_version(self):
     return reverse_hexlify_int(self.minor_version_raw)
コード例 #50
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def page_position(self): return reverse_hexlify_int(self.page_position_raw)

    @property
コード例 #51
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def timestamp(self):
     return reverse_hexlify_int(self.timestamp_raw)
コード例 #52
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def last_end_lsn(self): return reverse_hexlify_int(self.last_end_lsn_raw)

    @property
コード例 #53
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def source_info(self):
     return reverse_hexlify_int(self.source_info_raw)
コード例 #54
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def this_lsn(self): return reverse_hexlify_int(self.this_lsn_raw)

    @property
コード例 #55
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def file_attributes(self):
     return reverse_hexlify_int(self.file_attributes_raw)
コード例 #56
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def previous_lsn(self): return reverse_hexlify_int(self.previous_lsn_raw)

    @property
コード例 #57
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def file_name_offset(self):
     return reverse_hexlify_int(self.file_name_offset_raw)
コード例 #58
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def undo_next_lsn(self): return reverse_hexlify_int(self.undo_next_lsn_raw)

    @property
コード例 #59
0
ファイル: usn_jrnl.py プロジェクト: ta-b0/ntfs_parse
 def file_reference_sequence_number(self):
     return reverse_hexlify_int(self.file_reference_number_raw[6:8])
コード例 #60
0
ファイル: rcrd_record.py プロジェクト: NTFSparse/ntfs_parse
    def data_length(self): return reverse_hexlify_int(self.data_length_raw)

    @property