추출된 Ubi 이미지에서 콘텐츠 가져오기

추출된 Ubi 이미지에서 콘텐츠 가져오기

얼마 전에 NAND 플래시를 덤프하고 binwalk.Binwalk를 사용하여 SQUASHFS 파일 시스템을 찾을 수 있었지만 안타깝게도 UBI 위에 설치되어 unsquashfs유틸리티나 sasquatch특정 작업을 수행하는 기능을 사용할 수 없었기 때문에 데이터를 검색할 수 없었습니다. .

그러나 binwalkUBI 미러도 찾을 수 있습니다. 그래서 나의 다음 접근 방식은 해당 이미지에서 콘텐츠를 추출하고 결국 squashfs 파일 시스템을 만드는 것이었습니다.

이를 위해 도구를 사용하고 싶습니다 ubireader(https://github.com/jrspruitt/ubi_reader).

ubireader_display_info나에게 다음과 같은 결과를 주었다:

UBI File
---------------------
Min I/O: 2048
LEB Size: 126976
PEB Size: 131072
Total Block Count: 847
Data Block Count: 377
Layout Block Count: 2
Internal Volume Block Count: 0
Unknown Block Count: 468
First UBI PEB Number: 10

Image: 1681423409
---------------------
    Image Sequence Num: 1681423409
    Volume Name:spare
    Volume Name:data1
    Volume Name:root1
    Volume Name:root0
    Volume Name:data0
    PEB Range: 0 - 855

    Volume: spare
    ---------------------
        Vol ID: 4
        Name: spare
        Block Count: 142

        Volume Record
        ---------------------
            alignment: 1
            crc: '0x743003a9'
            data_pad: 0
            errors: ''
            flags: 0
            name: u'spare'
            name_len: 5
            padding: u'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
            rec_index: 4
            reserved_pebs: 386
            upd_marker: 0
            vol_type: 'dynamic'


    Volume: data1
    ---------------------
        Vol ID: 3
        Name: data1
        Block Count: 8

        Volume Record
        ---------------------
            alignment: 1
            crc: '0xefc3e0d'
            data_pad: 0
            errors: ''
            flags: 0
            name: u'data1'
            name_len: 5
            padding: u'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
            rec_index: 3
            reserved_pebs: 34
            upd_marker: 0
            vol_type: 'dynamic'


    Volume: root1
    ---------------------
        Vol ID: 1
        Name: root1
        Block Count: 110

        Volume Record
        ---------------------
            alignment: 1
            crc: '0x4a7089bd'
            data_pad: 0
            errors: ''
            flags: 0
            name: u'root1'
            name_len: 5
            padding: u'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
            rec_index: 1
            reserved_pebs: 232
            upd_marker: 0
            vol_type: 'dynamic'


    Volume: root0
    ---------------------
        Vol ID: 0
        Name: root0
        Block Count: 108

        Volume Record
        ---------------------
            alignment: 1
            crc: '0x38a2ed27'
            data_pad: 0
            errors: ''
            flags: 0
            name: u'root0'
            name_len: 5
            padding: u'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
            rec_index: 0
            reserved_pebs: 232
            upd_marker: 0
            vol_type: 'dynamic'


    Volume: data0
    ---------------------
        Vol ID: 2
        Name: data0
        Block Count: 9

        Volume Record
        ---------------------
            alignment: 1
            crc: '0x7c2e5a97'
            data_pad: 0
            errors: ''
            flags: 0
            name: u'data0'
            name_len: 5
            padding: u'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
            rec_index: 2
            reserved_pebs: 34
            upd_marker: 0
            vol_type: 'dynamic'

알 수 없는 청크가 여러 개 있습니다. 이것이 문제인지는 모르겠지만 다음 명령을 사용하여 파일을 추출하려고 하면 ubireader_extract_files다음 오류가 발생합니다.

Extracting files to: ubifs-root/1681423409/spare
extract_files Error: No inodes found
Extracting files to: ubifs-root/1681423409/data1
read Error: LEB: 10 is corrupted or has no data.
extract_files Error: 1
UBIFS Fatal: Super block error: Wrong node type.

확실하지는 않지만 UBI 이미지(또는 전체 덤프)가 어떤 방식으로든 손상되었을 수 있다고 생각합니다.

제가 사용하고 있는 NAND 플래시에는 내부 ECC가 활성화되어 있고 데이터시트에 다음과 같이 나와 있기 때문에 이에 대해 설명할 수 없습니다.

During a READ operation, the page data is read from the array to the cache 
register, where the ECC code is calculated and compared with the ECC code 
value read from the array. If error bits are detected, the error is corrected 
in the cache register. Only corrected data is output on the I/O bus.

이와 같은 데이터를 검색하기 위해 내가 할 수 있는 일이 있습니까? 아니면 제가 뭔가 잘못하고 있는 걸까요?

관련 정보