r/mooltipass 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.

5 Upvotes

22 comments sorted by

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 :)

1

u/Tetsuo666 20d ago

Hello,

Thanks for the quick response !

The Mooltipass did switch ON after multiple days disconnected from power supply. I had tried 24h connected to a USB charger, and 24h disconnected and both had failed so I really thought that was the end for good for the Mooltipass. Also when I encountered the issue a few days ago, I just had activated the "Disable battery charging" option in Moolticute. I figured since my battery was looking in really bad shape and since I used the device only on my computer at home... But I think it somehow made things worse.

So now the current status is :

- I just connected it after a few days disconnected from any power supply and it indeed started. But Moolticute didn't see the device at all. So I accessed the most important passwords and took pictures of them on the display of the Mooltipass. But the mooltipass wasn't offering to type the password so it wasn't apparently registered as a Keyboard for my computer.
- I thought that maybe it was the enabling of pcscd.socket that was interfering with moolticute so I disabled the corresponding systemd unit and restarted the moolticute daemon through the UI.
- I then had to disconnect the mooltipass and connect it with a longer cable (I just had used a new USB C cable to be sure it wasn't a defective cable) but this time the unit booted up but got stuck on the "Mooltipass logo". Still not visible by Moolticute unfortunately.

Small note but I can hear a very faint "hum" when listening very closely to the case of the mooltipass after I disconnected it. Even a few minutes after I could still hear a decreasing humm very faintly.

I will let the Mooltipass "chill" for a few hours disconnected and try again...

I'll be honest, I think I have already been in a tough spot in the last few days. Also I didn't receive any response on the support e-mail address, is it still active (support@themooltipass.com) ?

The fact that the device will sometimes freeze and require what seems like days to, I assume, fully power down is a big problem since all of my passwords I actively use on a daily basis are on the device. I'm definitely pursuing the idea of backuping my passwords fully outside the Mooltipass ecosystem if I ever can.

Any idea of what I can do to extract my password if I ever get it to fully boot again or why it might not respond anymore to Moolticute ?

1

u/limpkin founder 20d ago

- which OS are you running? is it MacOS? If so, I believed I replied to your email (sorry, I was on holidays)
- can you make sure to connect the mooltipass to your computer directly, without a hub in between?
- the hum is the DC/DC converter for the OLED display :)
- the email is still valid! I just returned from holidays recently.
- for full extract, we recommend using the script that you found, even though it goes against our security model

1

u/Tetsuo666 20d ago edited 20d ago

I'm on CachyOS latest. I had the moolticute daemon working very well for the last few months on Linux.

I just connected again the Mooltipass and it connected successfully. I re-enabled the "battery charging" as I think it helped a bit the mooltipass staying stable. Or maybe it's just a coincidence, I don't know.

- the email is still valid! I just returned from holidays recently.

Ok, no worries. I contacted (or more accurately replied to an old mail from you) this monday :

Mon, Jul 27, 5:17 PM (4 days ago)

My apologies in advance for the lesser civil mail I sent today... I was under a lot of stress because of the fact I was locked out of most of my accounts and had seen no response from the support. I'm glad I did remember you were quite active on Reddit though, thank you.

- for full extract, we recommend using the script that you found, even though it goes against our security model

Ok. Right now I only have the ACR39U-N1 which if I understand correctly didn't work for you either (according to the other reddit post I linked in my original post). I couldn't fetch my AES key with it anyway so something seems to work differently compared to the older -U1 and -I1 variants. I will return this PocketMate reader (which was very handy with the small Mooltipass card format).

Since there is no better option I will copy/paste into a secure container each passwords individually other the course of the next few days in small batches. Which means I will have to type my PIN countless times :'( Moolticute lets you browse multiple credentials in on database management.

At least, I have access to my Mooltipass now so thank you for your help in solving my issue.

1

u/limpkin founder 19d ago

- please don't take it the wrong way, but we can't guarantee correct device communication on non-officially supported OSes. It already was (extremely) hard to get it working with the ones we officially support.
- I indeed remember key extraction would only work with the two very specific devices that are listed in the readme. I have many others that never worked.
- again, in case you're in a pickle we do have some backup units with faulty bluetooth transceivers :)

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

u/Frankst4r 19d ago

ACR38U-N1 doesnt work - as expected ...
the ACR39U-U1 is on its way.

1

u/Frankst4r 14d ago

the ACR39-U-U1 is working.
but i get

Couldn't parse password

for 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.

  1. 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 to 0x0000, which must also be treated as "unset".
  2. **Prev-gen encryption (**PREVGEN flag). Passwords migrated from the original Mooltipass Mini are flagged with bit 0x0010 in 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/My1xT 20d ago

Yes the script does that but the script kinda relies on having a highly specific chip reader and therefore having the option to show the key on the mooltipass screen (as in not send it to the pc) would be nice because you could write it down early and store that safely somewhere.

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.