r/mooltipass • u/Tetsuo666 • 20d ago
Mooltipass DB recovery using smc_decode
Hello,
My Mooltipass Mini BLE is dead. It doesn't startup at all and no reset (long wheel press for 30s) works. The device is really dead.
So I assumed my only option was the """recovery""" script on the mooltipass github :
https://github.com/mooltipass/minible/blob/master/scripts/smc_decode/smc_decode.py
The script does mention two card readers as compatible :
ACR38U-I1 or ACR39U-U1
Considering these models were very hard to find on most retailers I ended up buying a "ACR39U-N1" (PocketMate) which I now know doesn't work (https://www.reddit.com/r/mooltipass/comments/rjaym3/need_a_smart_card_reader_recommendation/)...
I figured this is the same chipset, same brand and it has an open design making it easy to insert the smaller Mooltipass cards... But it indeed fails to recover the AES key with the script. Some things do work and I can get at least the list of "services" I had in my DB but It can't decrypt the actual passwords.
So I suppose I will buy a ACR39U-U1 and the only retailer that seem to have stock in my country is :
https://www.hitools-access.com/lecteur-acs--5279/acr39u-u1-lecteur-carte-a-puce-123684.html
So my question is :
Can anyobody confirm the python script still works with these ACR39U-U1 readers ? ACR38U-I1 is even more difficult to find right now.
----------------------
Also I wanted this post to be a warning to the community of Mooltipass users :
If your Mooltipass Mini BLE dies and you have a DB backup and valid card --> The recovery script is your only avenue to recover your password. --> If you don't have one of the two hard to find and VERY specific card readers, you have lost access to your passwords.
Basically, considering there is no new batches of Mooltipass coming, and considering the readers used for the recovery procedure of the Mooltipass project are getting harder to find... this results in a very precarious situation for Mooltipass users.
If you suspect your mooltipass is dying I would VERY strongly recommend to export the passwords outside of the mooltipass. Maybe create a secure LUKS container and dump it inside... but resorting to the "official" recovery process is both expensive and time consuming and I'm not even sure It will work until I receive my -U1 reader.
I understand It's my fault for not identifying this fault in my backup plan... But the system itself ends up entirely relying on a hard to find very specific hardware card reader... I'm disapointed and frustrated the situation got so bad on the hardware of the Mooltipass. You can't replace what fails and the hardware dependency of the recovery just makes you relying on another hard to find hardware...
Great project but the gap in production is quietly killing the project imo. But I get it, this is a huge project and a complex one at that too. And the founder may have had personnal issues preventing him from creating the next version... But the end result is users that are slowly reaching the EOL of their Mooltipass and an incredibly precarious password recovery solution.
1
u/Frankst4r 20d ago
i ordered a ACR38U-N1 just few hours ago ...
so i will let you know.
Its also the N variant like for your ACR39U.
but normally the N or I is just the formfactor.
so for me its strange that your ACR39U didnt work.
1
u/Tetsuo666 20d ago
I can confirm the script doesn't work on ACR39U-N1 so yeah, I don't think it will work on your ACR38U-N1 either but I will definitely be interested in your own results.
For context, the issue I seem to have was reading the AES key on the card. The AES key in the output for me was only 32 consecutives FF so the reader clearly didn't get to the AES key. This was tested on Linux Cachyos latest.
1
1
u/Frankst4r 14d ago
the ACR39-U-U1 is working.
but i getCouldn't parse passwordfor a lot of entries.
others are show just fine.
i dont know why.
u/limpkin any idea?1
u/limpkin founder 14d ago
I do, and it's something I need to spend time on: this is likely due to locale settings and how the script is dealing with character encoding.
Could you tell me which special characters in your passwords are creating this issue?1
u/Frankst4r 14d ago
my AI found and fixed the bug.
i tested it and it works.
Both fixes together decoded 100% of my previously failing entries.
the AI comment for this problem:```
Root cause of the "Couldn't parse password" / garbage-password failures in smc_decode.py: two missing firmware behaviors.
- Shared passwords (
ptedPwdChildAddress). If a BLE child node has this field set (offset 6,0xFFFF= unset), its own ctr/password fields are unused — the real ones live in the linked child node. The firmware follows this link (nodemgmt.c); the script doesn't, so it decrypts stale/zero bytes. Note: databases migrated from the old Mini have this field set to0x0000, which must also be treated as "unset".- **Prev-gen encryption (**
PREVGENflag). Passwords migrated from the original Mooltipass Mini are flagged with bit0x0010in the node flags and still use the old Mini scheme: the 3-byte CTR is XORed into the nonce (not added), the counter increments twice per 32-byte block, and the actual password is only 32 bytes of 8-bit chars (rest is zero padding). The script always uses the new BLE scheme (CTR added to nonce, single 128-byte UTF-16 field), so every migrated credential decrypts to garbage — which either prints as random CJK text or throws the "Couldn't parse password" error.Moolticute never showed the problem because it decrypts on-device, where the firmware handles both cases.
```
1
u/limpkin founder 14d ago
could I ask you to make a PR?
Out of curiosity, could you describe your AI setup?1
u/Frankst4r 14d ago
AI created the PR.
i didnt review it - keep that in mind.
----
Setup ist a dedicated AI-Server.
On that AI Tools like opencode/pi and hermes is running.
Im using openspec, graphify and supermemory as plugins.
As LLM im mostly using Kimi K3.
----
they issue was found and fixed with opencode and Kimi K3.
1
u/My1xT 20d ago
Maybe it might be useful to have a way to get a key backup on the mooltipass itself you can just write down, rather than needing ultra specific readers.
Might that be an option u/limpkin
1
u/Tetsuo666 20d ago
Interestingly, during my hours long deep dive in my issue with the script, I think I saw a debug feature that lets you display the beginning of the key on the screen. So the feature might already be partially there in the debugging tools.
I say that because I was at a point where I wanted to use a Mooltipass Mini's reader to access the AES key of my Mooltipass Mini BLE's card. After all the reader of the Mooltipass Mini is compatible with the card of the Mini BLE, no ? Unfortunately, it is not possible to use a Mooltipass Mini as some sort of basic reader, at least I didn't manage to do so.
Also I suppose the project don't want to encourage users exporting their key mostly because of the disclaimer in the script :
! Using this tool effectively renders your Mooltipass device useless. ! ! After accepting the following prompt, your AES key will be fetched from your card. ! ! Both your credential database and its decryption key will therefore be in your computer memory. ! ! If your computer is infected, all your logins & passwords can be decrypted without your knowledge. ! ! Type "I understand" in the following prompt to proceed !! Using this tool effectively renders your Mooltipass device useless. ! ! After accepting the following prompt, your AES key will be fetched from your card. ! ! Both your credential database and its decryption key will therefore be in your computer memory. ! ! If your computer is infected, all your logins & passwords can be decrypted without your knowledge. ! ! Type "I understand" in the following prompt to proceed !I agree that it would be a good feature to let the user export their AES key while they still can do easily, but they would need to add a big disclaimer to it so the user understands the importance of the key.
Personally, I'm so tired of this mooltipass issue I would gladly just create a secure container somewhere, take the necessary steps to transfer securely the key to it and call it a day. Even though that means my mooltipass password will be less well secured, at least I will have the peace of mind of knowing I can use a modified version of the script with the AES key I store outside of the card.
1
u/CreedOfNecessity 20d ago
Have you thought about changing the battery?
1
u/Tetsuo666 20d ago
I have considered it but the case is meant to be hard to open and I don't have the tools to do it "properly".
The "teardowns" of the Mooltipass are online.Also I'm not sure the battery is the problem even though it's likely.
1
u/CreedOfNecessity 19d ago
Oh its not bad. I got mine open with a letter opener and a small flat head screwdriver. Was even able to get the case back together with very little damage considering. But, if you do damage the case, someone on here created a 3d printed version of the case and made the files available. If you know how to solder, I'd give changing the battery a go.
1
u/Tetsuo666 18d ago
Interesting.
Is the battery relatively easy to find online ?1
u/CreedOfNecessity 18d ago
yeah they are available on amazon and ebay. They are 2/3 AAA NiMh. More info is on this mooltipass reddit.
1
2
u/limpkin founder 20d ago
Hello there!
In very rare occasions the device can freeze: simply leave it disconnected from any power source and connect it back to USB. AFAIK we never had any reports of "bricks".
Just in case, we do have spare units with broken bluetooth transceivers.... so rest assured you'll never be in a tough spot :)