![]() |
|
[Legends] Exporting Authy codes to Ente Auth, a YubiKey or another authenticator - Printable Version +- Hack Forums (https://hackforums.net) +-- Forum: Hacks, Exploits, and Various Discussions (https://hackforums.net/forumdisplay.php?fid=45) +--- Forum: Whitehat • Blue Team • Defensive Security (https://hackforums.net/forumdisplay.php?fid=448) +---- Forum: OpSec and OSINT (https://hackforums.net/forumdisplay.php?fid=322) +---- Thread: [Legends] Exporting Authy codes to Ente Auth, a YubiKey or another authenticator (/showthread.php?tid=6333906) |
Exporting Authy codes to Ente Auth, a YubiKey or another authenticator - 7 - Oct 15, 2026 This is how I moved my codes out of Authy using an iPhone, a computer and my Authy backup password. No jailbreak was needed. I tried emulating, I tried everything... until I did this. The idea is straightforward: capture the encrypted backup that Authy sends to your phone, then decrypt it locally with your backup password. Once you have the actual authentication keys, you can import them elsewhere. Keep Authy working until you have checked the replacement codes. You do not need to delete or reinstall it. What you need
This guide covers ordinary authenticator/TOTP accounts. Authy-specific push approvals and proprietary tokens may need separate handling. 1. Prepare the computer Install Python from python.org if necessary. Create a folder for the export. Open a terminal in that folder and run: Code python -m venv .venvActivate the environment. Windows: Code .venv\Scripts\activatemacOS or Linux: Code source .venv/bin/activateThen install the tools: Code python -m pip install mitmproxy cryptographySome systems use python3 instead of python. 2. Start the proxy Run: Code mitmweb --listen-host 0.0.0.0 --listen-port 8080 --allow-hosts "^api.authy.com(:443)?$"Leave that terminal running. mitmweb also opens a local browser interface, normally at: Code http://127.0.0.1:8081The phone connects to port 8080. Port 8081 is the interface you use on the computer. Find your computer’s local Wi-Fi IP address. It will usually look something like: Code 192.168.1.100Use your actual address, not that example. If a firewall prompt appears, allow the connection on your private network. On Linux, you may need a temporary firewall rule allowing TCP port 8080 from your local network. Do not disable the entire firewall. 3. Connect the iPhone On the iPhone, open: Settings → Wi-Fi → ⓘ beside your connected network → Configure Proxy → Manual Enter:
Tap Save. Temporarily disconnect any VPN if it prevents the phone from reaching the computer. Before touching Authy, open an ordinary website in Safari. If nothing loads, fix the proxy connection first. There is no point troubleshooting Authy while the phone cannot reach the proxy. 4. Install and trust the certificate In Safari, type this exact address: Code http://mitm.itUse http for this installation step. Download the iOS certificate and allow the profile download. Then open: Settings → General → VPN & Device Management Select the downloaded mitmproxy profile and install it. Downloading the profile is not the same as installing it. After installation, open: Settings → General → About → Certificate Trust Settings Enable full trust for mitmproxy. If it does not appear there, go back to VPN & Device Management and check that the profile was actually installed. 5. Capture Authy’s encrypted tokens Open Authy normally, then close and reopen it once. In mitmweb on the computer, look for requests to: Code api.authy.comThe request you want is a GET whose path ends with: Code /authenticator_tokensA useful response contains something like: Code {Those encrypted seeds are what you need. If Authy is not making a fresh request: Try making a harmless label change to one account, then close and reopen Authy. A rename may produce an update request first; that is useful evidence that traffic is getting through, but it is not necessarily the full token list. Leave backups enabled. Do not switch them off to force a sync. That caused unnecessary trouble during my export. 6. Make sure you capture the full list Authy may send a list of accounts it already knows about in an apps query parameter. This can result in an empty or partial response. On the authenticated GET /authenticator_tokens request:
Do not replay an update or delete request by mistake. Save the full response body as: Code authenticator_tokens.jsonCheck how many records it contains against the number of accounts in Authy. Do not post the request URL online. It contains authentication information. The JSON response also belongs in your private backup folder. 7. Decrypt the export There are community tools that decrypt this JSON using your Authy backup password. One documented workflow is: Export-Authy-Tokens — instructions and Python exporter Download and inspect the script, then follow its current usage instructions. Enter your backup password locally when prompted. The usual decryption uses:
You do not need to manually calculate any of that. A failed record does not automatically mean your password is wrong. During my export, 75 records decrypted and passed validation. One record decrypted but did not contain a valid Base32 secret. The sensible result was to export the working records and keep the failed encrypted record for investigation. Do not discard the original capture. 8. Clean up the names Before importing, separate each entry into: Code Provider: HostingerRather than: Code Provider: HostingerAuthy sometimes leaves the provider field empty while putting the useful name in the account label. Examples include: Code 12345678 @ GoDaddyKeep server names, customer names and domain context where they distinguish accounts. An email address alone does not prove which service the code belongs to. If the source label is unclear, keep it for review rather than inventing a provider. Also, two entries showing the same six-digit code are not enough to prove they are duplicates. Compare the underlying secret and OTP settings. Different URL labels may still be worth preserving even when they share a secret. 9. Import into Ente Auth Ente accepts a plain-text file containing one OTPAuth URI per line: Code otpauth://totp/Example:you%40example.com?secret=BASE32SECRET&issuer=Example&algorithm=SHA1&digits=6&period=30In Ente, open: Settings → Data → Import codes → Plain text Select the exported TXT file. Check several codes against Authy, preferably near the beginning of a new 30-second interval. If you are replacing an existing Ente list:
That last point matters: otherwise you may be looking at the old unnamed entries and think the cleanup failed. 10. Add the codes to a YubiKey For normal six-digit authenticator codes, use Yubico Authenticator and the YubiKey’s OATH application. The similarly named Yubico OTP application is a different feature. You can add credentials using:
Do not upload your OTPAuth URIs to an online QR-code generator. Generate the images locally. Capacity:
Passkey capacity is separate. A 5C NFC does not hold 100 ordinary TOTP accounts just because it supports a larger number of passkeys. For two backup keys, add the same chosen credentials to both. Accounts spread across two keys are not a mirrored backup. Keep the original export: you cannot rely on exporting the secrets back out of a YubiKey later. Yubico’s OATH capacity documentation YubiKey Manager OATH commands 11. Disconnect and keep your backup When finished:
The decrypted TXT files, JSON exports and QR codes contain the actual authentication secrets. Store them as carefully as your other recovery material. Keep Authy available until you have checked the imported codes and successfully used the accounts that matter. If it does not work Nothing loads on the iPhone Check the proxy IP, port, saved Wi-Fi settings, VPN and computer firewall. Test Safari before Authy. Safari shows a certificate warning The certificate is not correctly trusted, or you installed a different certificate from the one the running proxy uses. Fix that before continuing. Authy connects but no keys appear Look for the GET token-list request, not just POST updates. Check whether the apps filter is excluding accounts. Authy disconnects during TLS Check certificate trust first. Certificate pinning is another possibility, but a failed handshake alone does not prove it. An Android emulator gives an integrity-token error That is a different problem from knowing your backup password. Both the standard Android emulator and BlueStacks failed Authy’s integrity checks during my attempt. The working route was the already-authorized iPhone. The password works for most entries but one fails Keep the successful entries and preserve the failed original. Do not throw away an otherwise valid export. Ente still looks unnamed after importing Check that you are viewing the active list rather than Trash. Then inspect whether the provider was genuinely missing from Authy’s metadata. |