def get_leb_size(path): f = open(path, "rb") f.seek(0, 2) file_size = f.tell() + 1 f.seek(0) block_size = 0 for i in range(0, file_size, FILE_CHUNK_SZ): buf = f.read(FILE_CHUNK_SZ) for m in re.finditer(UBIFS_NODE_MAGIC, buf): start = m.start() chdr = nodes.common_hdr(buf[start : start + UBIFS_COMMON_HDR_SZ]) if chdr and chdr.node_type == UBIFS_SB_NODE: sb_start = start + UBIFS_COMMON_HDR_SZ sb_end = sb_start + UBIFS_SB_NODE_SZ if chdr.len != len(buf[sb_start:sb_end]): f.seek(sb_start) buf = f.read(UBIFS_SB_NODE_SZ) else: buf = buf[sb_start:sb_end] sbn = nodes.sb_node(buf) block_size = sbn.leb_size f.close() return block_size f.close() return block_size
def get_leb_size(path): f = open(path, 'rb') f.seek(0, 2) file_size = f.tell() + 1 f.seek(0) block_size = 0 for i in range(0, file_size, FILE_CHUNK_SZ): buf = f.read(FILE_CHUNK_SZ) for m in re.finditer(UBIFS_NODE_MAGIC, buf): start = m.start() chdr = nodes.common_hdr(buf[start:start + UBIFS_COMMON_HDR_SZ]) if chdr and chdr.node_type == UBIFS_SB_NODE: sb_start = start + UBIFS_COMMON_HDR_SZ sb_end = sb_start + UBIFS_SB_NODE_SZ if chdr.len != len(buf[sb_start:sb_end]): f.seek(sb_start) buf = f.read(UBIFS_SB_NODE_SZ) else: buf = buf[sb_start:sb_end] sbn = nodes.sb_node(buf) block_size = sbn.leb_size f.close() return block_size f.close() return block_size
def common_hdr(ubifs, lnum, offset=0): """Get common header at given LEB number + offset. Arguments: Obj:ubifs -- UBIFS object. Int:lnum -- LEB number common header is in. Int:offset -- Offset in LEB of common header. Returns: Obj:common_hdr -- Common header found at lnum/offset. """ ubifs.file.seek((ubifs.leb_size * lnum) + offset) # crc checks here return nodes.common_hdr(ubifs.file.read(UBIFS_COMMON_HDR_SZ))
def get_leb_size(path): """Get LEB size from superblock Arguments: Str:path -- Path to file. Returns: Int -- LEB size. Searches file superblock and retrieves leb size. """ f = open(path, 'rb') f.seek(0, 2) file_size = f.tell() + 1 f.seek(0) block_size = 0 for i in range(0, file_size, FILE_CHUNK_SZ): buf = f.read(FILE_CHUNK_SZ) for m in re.finditer(UBIFS_NODE_MAGIC, buf): start = m.start() chdr = nodes.common_hdr(buf[start:start + UBIFS_COMMON_HDR_SZ]) if chdr and chdr.node_type == UBIFS_SB_NODE: sb_start = start + UBIFS_COMMON_HDR_SZ sb_end = sb_start + UBIFS_SB_NODE_SZ if chdr.len != len(buf[sb_start:sb_end]): f.seek(sb_start) buf = f.read(UBIFS_SB_NODE_SZ) else: buf = buf[sb_start:sb_end] sbn = nodes.sb_node(buf) block_size = sbn.leb_size f.close() return block_size f.close() return block_size
def get_leb_size(path): """Get LEB size from superblock Arguments: Str:path -- Path to file. Returns: Int -- LEB size. Searches file superblock and retrieves leb size. """ f = open(path, 'rb') f.seek(0,2) file_size = f.tell()+1 f.seek(0) block_size = 0 for i in range(0, file_size, FILE_CHUNK_SZ): buf = f.read(FILE_CHUNK_SZ) for m in re.finditer(UBIFS_NODE_MAGIC, buf): start = m.start() chdr = nodes.common_hdr(buf[start:start+UBIFS_COMMON_HDR_SZ]) if chdr and chdr.node_type == UBIFS_SB_NODE: sb_start = start + UBIFS_COMMON_HDR_SZ sb_end = sb_start + UBIFS_SB_NODE_SZ if chdr.len != len(buf[sb_start:sb_end]): f.seek(sb_start) buf = f.read(UBIFS_SB_NODE_SZ) else: buf = buf[sb_start:sb_end] sbn = nodes.sb_node(buf) block_size = sbn.leb_size f.close() return block_size f.close() return block_size
def common_hdr(ubifs, lnum, offset = 0): ubifs.file.seek(ubifs.leb_size * lnum + offset) return nodes.common_hdr(ubifs.file.read(UBIFS_COMMON_HDR_SZ))
def common_hdr(ubifs, lnum, offset=0): ubifs.file.seek(ubifs.leb_size * lnum + offset) return nodes.common_hdr(ubifs.file.read(UBIFS_COMMON_HDR_SZ))