SciresM / hactool

hactool is a tool to view information about, decrypt, and extract common file formats for the Nintendo Switch, especially Nintendo Content Archives.
ISC License
982 stars 151 forks source link

Segmentation Fault when extracting NCA #114

Closed roobscoob closed 1 year ago

roobscoob commented 1 year ago

e1ee2bbc2c8b85fd9f878a31f8483f87.nca in 0100763015C2E000 (v0) leads to a segmentation fault after writing subsk1:

[WARN]: Failed to match key "bis_kek_source", (value "34c1a0c48258f8b4fa9e5e6adafc7e4f")
[WARN]: Failed to match key "bis_key_00", (value "cdda7df6e5fe955cc91fe7d80acabeab71c4323684319b24a5f7e6dad6eda313")
[WARN]: Failed to match key "bis_key_01", (value "c9c78d2f45dc30b5c7cafc5772419946636feebee1c67fd41c01da6fdb52481b")
[WARN]: Failed to match key "bis_key_02", (value "1decd1cb237248f5d0e789157d66147d0f93a0bb4ec0439a6794044b25491ede")
[WARN]: Failed to match key "bis_key_03", (value "1decd1cb237248f5d0e789157d66147d0f93a0bb4ec0439a6794044b25491ede")
[WARN]: Failed to match key "bis_key_source_00", (value "f83f386e2cd2ca32a89ab9aa29bfc7487d92b03aa8bfdee1a74c3b6e35cb7106")
[WARN]: Failed to match key "bis_key_source_01", (value "41003049ddccc065647a7eb41eed9c5f44424edab49dfcd98777249adc9f7ca4")
[WARN]: Failed to match key "bis_key_source_02", (value "52c2e9eb09e3ee2932a10c1fb6a0926c4d12e14b2a474c1c09cb0359f015f4e4")
[WARN]: Failed to match key "device_key", (value "90787f8a4b8fba20713c895c33a77de1")
[WARN]: Failed to match key "device_key_4x", (value "c35666a3a2b295a344d2562706fe3f19")
[WARN]: Failed to match key "eticket_rsa_kek", (value "19c8b441d318802bad63a5beda283a84")
[WARN]: Failed to match key "eticket_rsa_kek_source", (value "dba451124ca0a9836814f5ed95e3125b")
[WARN]: Failed to match key "eticket_rsa_kekek_source", (value "466e57b74a447f02f321cde58f2f5535")
[WARN]: Failed to match key "retail_specific_aes_key_source", (value "e2d6b87a119cb880e822888a46fba195")
[WARN]: Failed to match key "rsa_oaep_kek_generation_source", (value "a8ca938434127fda82cc1aa5e807b112")
[WARN]: Failed to match key "rsa_private_kek_generation_source", (value "ef2cb61a56729b9157c38b9316784ddd")
[WARN]: Failed to match key "save_mac_key", (value "630ba2bc9f83b0086edc8e8aade30d0a")
[WARN]: Failed to match key "save_mac_sd_card_kek_source", (value "0489ef5d326e1a59c4b7ab8c367aab17")
[WARN]: Failed to match key "save_mac_sd_card_key_source", (value "6f645947c56146f9ffa045d595332918")
[WARN]: Failed to match key "sd_card_custom_storage_key_source", (value "370c345e12e4cefe21b58e64db52af354f2ca5a3fc999a47c03ee004485b2fd0")
[WARN]: Failed to match key "sd_seed", (value "86902224f794d671e955d48bb5610a00")
[WARN]: Failed to match key "ssl_rsa_kek", (value "b011100660d1dccbad1b1b733afa9f95")
[WARN]: Failed to match key "ssl_rsa_kek_source_x", (value "7f5bb0847b25aa67fac84be23d7b6903")
[WARN]: Failed to match key "ssl_rsa_kek_source_y", (value "9a383bf431d0bd8132534ba964397de3")
Verifying section 0...
Verifying section 1...
    Verifying IVFC Level 1...
    Verifying IVFC Level 2...
    Verifying IVFC Level 3...
    Verifying IVFC Level 4...
    Verifying IVFC Level 5...
Verifying section 2...

NCA:
Magic:                              NCA3
Fixed-Key Index (GOOD):             0x0
Fixed-Key Signature (GOOD):         34F07D3B02DA602FB223E57B00C20334747A176F547149A869434FB5FB084EC7
                                    A17918889CA8F4321E38C8DAD429339985264B6BF6712DE14CD9AB8B44BFE2B4
                                    4AFDCB2AC91BF9D38B34524BC20C40EF77F3D2AAA7177D06FDF4FD7141A1D9F6
                                    0EA507EFC9FA43A0D51A0C90BBF50833221C4F67083C4067FCADD3D024BD8160
                                    5E93913DCDBFCD49617F845BE3DC5CDB55DA118A6D1BC8F917F5172638EEDCAE
                                    D5B1732047D7C819772B7FB09FBABE36518ABFFFD99334D1B3580550690F8E5A
                                    E8447831DB69CA7F0D8002E1FA2714DC793284D481C9A104D656EAC5E5E165E3
                                    8EECD8063964EE532E82007E783B726D4609DE861162D3C12EBA252DD9C7932B
NPDM Signature (GOOD):              BF9DB6DF6AAAF36AAF64E6AAC9AC0946CFE6DFB65BD56CDC420D54A8F496E18B
                                    3C61918A93B2DCEDE53289DFC7C9E84995B70BA5F71E8D3B5576C3EBF4CD0C59
                                    B69043EBAC1886EEE2CEF6A89350B0DB04FD7ED649FCACA4267242D0E71B0181
                                    0613FDB34A81522E46CB4350A25527A4605332559B83B9AD442CF41405A2872B
                                    018165AF869B411B4CF372BB7C61F76D73C9AE172B92D1B7F937B16AB3C99FF6
                                    96587609DB80E9E1C6F69B9636085F132F9CF8628EE31A9E15C693D6DCE2B6FD
                                    097E74AC98B26A1816A08BCBD94803513E38E4CF780B1D79A73D553113C56C48
                                    38C2A58F040C9C09B7D725BBCAED981C143190928EF849535A23EED2CD0FADDA
Content Size:                       0x00005ac10000
Title ID:                           0100763015c2e000
SDK Version:                        13.3.0.0
Distribution type:                  Download
Content Type:                       Program
Master Key Revision:                0xC (Unknown)
Encryption Type:                    Titlekey crypto
Rights ID:                          0100763015C2E000000000000000000D
Titlekey (Encrypted) (From CLI)     FB9E798A81DC89AEFCA52BFC8F4AD0E6
Titlekey (Decrypted) (From CLI)     7FBCDF7894ACA3875B048895DA961539
NPDM:
    Magic:                          META
    MMU Flags:                      27
    Main Thread Priority:           44
    Default CPU ID:                 0
    Version:                        0.0.0-0 (0)
    Main Thread Stack Size:         0x2000000
    Title Name:                     Application
    ACID:
        Magic:                      ACID
        Signature Key (GOOD):       0
        Signature (GOOD):           7340875A6B0D2F6D341A7B652AB8452DA34E407A0A80BE422897F3D83CAE3303
                                    DE21CCEE026350AE9562C674282F23A748BCA79D72FD2795B35753A4FE855FBA
                                    1945B1D7FC381502D817937316E826144D47163A0D3EFB1486DD9065A4AC63F9
                                    0EAF3B597DB8C5125F63B2DB0F30B4BC30B59A4D4E59B6AEF5DE519C85779C59
                                    6ADB32A464CC3FC723456018DCAA2D62D6ACD4ABF9391AB1687B5A047C592FBB
                                    6F016B6A5E0A714DB03D5189B9485668B5005F3A0B608B5840835BE6125941CA
                                    801864707986AE3BD064C0B98DE567540CADF788F5388D42504BD7DB8DD2DB7F
                                    B83E6FD5C7FC8062E62C91CB6C7E9826A01A4B0537553EB6042E44BF8154CF8C
        Header Modulus:             E1E3C0C3372B3DA75E44FDEA692ACDB91EDCE243652D4F43AF8D07E5922669C4
                                    B06FBCFCB6E48682A5DD8DC9F1E85E896752818A5E32D1E0D00AC03214A62D20
                                    9175F1F29D01F7E07A535DCEC14A1EF4A9A4C05B586F4D7D067C361EDFD20BAD
                                    10F678A88F2D2601DE43AFA2620A3970805E8C8287F7C39E3C82F6BC7CB9F999
                                    4FD455C36DF225AF60BD7ECB0A1D0B1ED8A41BE168D083AE3D64DBD1DC625763
                                    C947A23F89116653D7272158BFB89EA5AE57DEDC2BB2A5A9EE8472D092344C2B
                                    37201371EE237D16F7E103968B98AE81877C12254BEEBAACEF419536A65137AA
                                    57DACF775682A724FD185E454B28E50D821B40F45BE92D4455F03AAA57B0F49D
        Is Retail:                  1
        Pool Partition:             0
        Title ID Range:             0100000000010000-01ffffffffffffff
    ACI0:
        Magic:                      ACI0
        Title ID:                   0100763015c2e000
    Kernel Access Control:
        Lowest Allowed Priority:    28
        Highest Allowed Priority:   59
        Lowest Allowed CPU ID:      0
        Highest Allowed CPU ID:     2
        Allowed SVCs:               svcSetHeapSize                      (0x01)
                                    svcSetMemoryPermission              (0x02)
                                    svcSetMemoryAttribute               (0x03)
                                    svcMapMemory                        (0x04)
                                    svcUnmapMemory                      (0x05)
                                    svcQueryMemory                      (0x06)
                                    svcExitProcess                      (0x07)
                                    svcCreateThread                     (0x08)
                                    svcStartThread                      (0x09)
                                    svcExitThread                       (0x0a)
                                    svcSleepThread                      (0x0b)
                                    svcGetThreadPriority                (0x0c)
                                    svcSetThreadPriority                (0x0d)
                                    svcGetThreadCoreMask                (0x0e)
                                    svcSetThreadCoreMask                (0x0f)
                                    svcGetCurrentProcessorNumber        (0x10)
                                    svcSignalEvent                      (0x11)
                                    svcClearEvent                       (0x12)
                                    svcMapSharedMemory                  (0x13)
                                    svcUnmapSharedMemory                (0x14)
                                    svcCreateTransferMemory             (0x15)
                                    svcCloseHandle                      (0x16)
                                    svcResetSignal                      (0x17)
                                    svcWaitSynchronization              (0x18)
                                    svcCancelSynchronization            (0x19)
                                    svcArbitrateLock                    (0x1a)
                                    svcArbitrateUnlock                  (0x1b)
                                    svcWaitProcessWideKeyAtomic         (0x1c)
                                    svcSignalProcessWideKey             (0x1d)
                                    svcGetSystemTick                    (0x1e)
                                    svcConnectToNamedPort               (0x1f)
                                    svcSendSyncRequestLight             (0x20)
                                    svcSendSyncRequest                  (0x21)
                                    svcSendSyncRequestWithUserBuffer    (0x22)
                                    svcSendAsyncRequestWithUserBuffer   (0x23)
                                    svcGetProcessId                     (0x24)
                                    svcGetThreadId                      (0x25)
                                    svcBreak                            (0x26)
                                    svcOutputDebugString                (0x27)
                                    svcReturnFromException              (0x28)
                                    svcGetInfo                          (0x29)
                                    svcMapPhysicalMemory                (0x2c)
                                    svcUnmapPhysicalMemory              (0x2d)
                                    svcGetLastThreadInfo                (0x2f)
                                    svcSetThreadActivity                (0x32)
                                    svcGetThreadContext3                (0x33)
                                    svcWaitForAddress                   (0x34)
                                    svcSignalToAddress                  (0x35)
                                    svcSynchronizePreemptionState       (0x36)
                                    svcFlushProcessDataCache            (0x5f)
        Application Type:           Application
        Handle Table Size:          512
        Minimum Kernel Version:     145
        Allow Debug:                YES
        Force Debug:                NO
    Service Access Control:
        Accesses:                   acc:u0
                                    aoc:u
                                    apm
                                    appletOE
                                    audin:u
                                    audout:u
                                    audren:u
                                    banana
                                    bcat:u
                                    bsd:u
                                    bsdcfg
                                    caps:su
                                    caps:u
                                    csrng
                                    ectx:aw
                                    friend:u
                                    fsp-srv
                                    hid
                                    htc
                                    htc:tenv
                                    htcs
                                    hwopus
                                    irs
                                    ldn:u
                                    ldr:ro
                                    lm
                                    mii:u
                                    mm:u
                                    nfc:mf:u
                                    nfc:user
                                    nfp:user
                                    ngct:u
                                    nifm:u
                                    nim:eca
                                    notif:a
                                    nsd:u
                                    ntc
                                    nvdrv
                                    pcm
                                    pctl
                                    pl:u
                                    prepo:u
                                    set
                                    sfdnsres
                                    ssl
                                    time:u
                                    vi:u
    Filesystem Access Control:
        Version:                    1
        Raw Permissions:            0x4000000000000000
        RW Permissions:             SdCardAccess                     [DEBUG ONLY]
                                    Unknown (0x23)                   [DEBUG ONLY]
                                    HostAccess                       [DEBUG ONLY]

        Boolean Permissions:        PaddingFiles                     [DEBUG ONLY]
                                    SaveData_Debug                   [DEBUG ONLY]
                                    SaveData_SystemManagement        [DEBUG ONLY]

Sections:
    Section 0:
        Offset:                     0x0000597b8000
        Size:                       0x000001458000
        Partition Type:             ExeFS
        Section CTR:                0000000100000000000000000597B800
        Superblock Hash (GOOD):     CC505918EF67BB71D0880BEDBD474F81D30FBC12B7DE0DC9D50FC06E7283B9F4
        Hash Table (GOOD):
            Offset:                 000000000000
            Size:                   000000005140
            Block Size:             0x8000
        PFS0 Offset:                000000008000
        PFS0 Size:                  00000144e04c
    Section 1:
        Offset:                     0x00000001c000
        Size:                       0x00005979c000
        Partition Type:             RomFS
        Section CTR:                00000002000000000000000000001C00
        Superblock Hash (GOOD):     1F43D7B8DBDB098C3D2BA71E1EA63A5C3C335AD54934983B2D401E2568C1B4AE
        Magic:                      IVFC
        ID:                         00020000
        Level 0 (GOOD):
            Data Offset:            0x000000000000
            Data Size:              0x000000004000
            Hash Block Size:        0x00004000
        Level 1 (GOOD):
            Data Offset:            0x000000004000
            Data Size:              0x000000004000
            Hash Offset:            0x000000000000
            Hash Block Size:        0x00004000
        Level 2 (GOOD):
            Data Offset:            0x000000008000
            Data Size:              0x000000004000
            Hash Offset:            0x000000004000
            Hash Block Size:        0x00004000
        Level 3 (GOOD):
            Data Offset:            0x00000000c000
            Data Size:              0x000000004000
            Hash Offset:            0x000000008000
            Hash Block Size:        0x00004000
        Level 4 (GOOD):
            Data Offset:            0x000000010000
            Data Size:              0x0000002cc000
            Hash Offset:            0x00000000c000
            Hash Block Size:        0x00004000
        Level 5 (GOOD):
            Data Offset:            0x0000002dc000
            Data Size:              0x0000594bcef0
            Hash Offset:            0x000000010000
            Hash Block Size:        0x00004000
    Section 2:
        Offset:                     0x000000004000
        Size:                       0x000000018000
        Partition Type:             PFS0
        Section CTR:                00000000000000000000000000000400
        Superblock Hash (GOOD):     5D02E6BBD346B5FCD4300763AF23CC1C1CE2C94AD7EDF8D52C75615083017755
        Hash Table (GOOD):
            Offset:                 000000000000
            Size:                   000000000240
            Block Size:             0x1000
        PFS0 Offset:                000000004000
        PFS0 Size:                  0000000117d4

Saving main to /mnt/user/emu/switch/games/live/NSP.0100763015C2E000.0/exefs/main...
Saving main.npdm to /mnt/user/emu/switch/games/live/NSP.0100763015C2E000.0/exefs/main.npdm...
Saving rtld to /mnt/user/emu/switch/games/live/NSP.0100763015C2E000.0/exefs/rtld...
Saving sdk to /mnt/user/emu/switch/games/live/NSP.0100763015C2E000.0/exefs/sdk...
Saving subsdk0 to /mnt/user/emu/switch/games/live/NSP.0100763015C2E000.0/exefs/subsdk0...
Saving subsdk1 to /mnt/user/emu/switch/games/live/NSP.0100763015C2E000.0/exefs/subsdk1...

Segmentation fault
roobscoob commented 1 year ago

trace:

(gdb) bt
#0  0x000000000042112f in nca_visit_romfs_dir ()
#1  0x00000000004213cf in nca_save_ivfc_section.part ()
#2  0x00000000004219a4 in nca_save_section ()
#3  0x0000000000422248 in nca_process ()
#4  0x000000000044d2b3 in main ()
SciresM commented 1 year ago

Yeah, it's probably a sparse or compressed NCA, which hactool doesn't support.

hactool isn't really actively maintained...I would suggest either of hactoolnet (dotnet equivalent by @Thealexbarney) or hac2l (A work in progress C++ replacement using atmosphere code).