How can I restore wallet from secret.key file from daedalus 0.15.1

I got your contact from Nikola Glumac.
I understand that you're the right team to contact in terms of older cardano wallets.
Would you happen to be so kind and review the following subject?
https://github.com/input-output-hk/daedalus/issues/1234#issuecomment-734457593
Long story short:
There are plenty of users stuck on the 0.15.1 daedalus wallet
which suddenly stopped working and our ADA funds are stuck in it.
Your insight and help is much appreciated.
//BR, Chris

I am in a similar situation as skazichris. Looking forward to support from the dev team in restoring access to the stuck ADA coins. Re-enabling the import wallet feature to allow access through the secret.key file would be great.
Appreciate the help!

I am in a similar situation as skazichris. Looking forward to support from the dev team in restoring access to the stuck ADA coins. Re-enabling the import wallet feature to allow access through the secret.key file would be great.
Appreciate the help!

Questions for both of you @skazichris and @mkr-j:

What operating system are you on / familiar with?
What is your level of expertise in IT?

Questions for both of you @skazichris and @mkr-j:

What operating system are you on / familiar with?
What is your level of expertise in IT?

I'm in the same situation.

What operating system are you on / familiar with?

Linux, MacOS. Can use Windows if it's absolutely necessary :)

What is your level of expertise in IT?

Masters degree in computer science. Basic knowledge of Haskell. Good knowledge of Python, Go, C. For me personally, a good specification of secrets.key file format and a process how to obtain private keys or a wallet phrase from it could be enough.

I'm in the same situation.

What operating system are you on / familiar with?

Linux, MacOS. Can use Windows if it's absolutely necessary :)

What is your level of expertise in IT?

Masters degree in computer science. Basic knowledge of Haskell. Good knowledge of Python, Go, C. For me personally, a good specification of secrets.key file format and a process how to obtain private keys or a wallet phrase from it could be enough.

@mprymek have a look at: https://github.com/input-output-hk/cardano-sl/pull/4278#issuecomment-600553878, there's a pre-compiled binary which should work on any GNU linux. This however requires that you still have access to the old wallet database AND the secret key file. The tool will extract all known encrypted keys from the keystore and spit them in a nicer JSON format.
There has been a few additions to the tools later that aren't in the pre-compiled version linked above but they are non-essential.
From there, the cardano-wallet  gives you a way to import such credentials directly in the "byron-wallets" API (see the "random (xprv) tab in https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/postByronWallet). Fields are named identically in the API and in the tool output. From there, your wallet should restore itself and you should be able to operate it as normal provided that you still remember the encryption passphrase. If you do not, it's hopeless.
If you do not have access to the acid-state database that the old wallet was using at the time and only have the keystore file, then let me know. I'll spend some time documenting the CDDL specification corresponding to the keystore serialization format and/or update the extraction tool to make the acid-state database optional (it's really only used to link the encrypted key to a wallet name and wallet id).

@mprymek have a look at: https://github.com/input-output-hk/cardano-sl/pull/4278#issuecomment-600553878, there's a pre-compiled binary which should work on any GNU linux. This however requires that you still have access to the old wallet database AND the secret key file. The tool will extract all known encrypted keys from the keystore and spit them in a nicer JSON format.
There has been a few additions to the tools later that aren't in the pre-compiled version linked above but they are non-essential.
From there, the cardano-wallet  gives you a way to import such credentials directly in the "byron-wallets" API (see the "random (xprv) tab in https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/postByronWallet). Fields are named identically in the API and in the tool output. From there, your wallet should restore itself and you should be able to operate it as normal provided that you still remember the encryption passphrase. If you do not, it's hopeless.
If you do not have access to the acid-state database that the old wallet was using at the time and only have the keystore file, then let me know. I'll spend some time documenting the CDDL specification corresponding to the keystore serialization format and/or update the extraction tool to make the acid-state database optional (it's really only used to link the encrypted key to a wallet name and wallet id).

Thanks a lot, @KtorZ. I think I have a backup of the acid-state db too but must find it and restore somewhere. And also recall the master password. Will take a while I'm afraid :)

Thanks a lot, @KtorZ. I think I have a backup of the acid-state db too but must find it and restore somewhere. And also recall the master password. Will take a while I'm afraid :)

Questions for both of you @skazichris and @mkr-j:

What operating system are you on / familiar with?
What is your level of expertise in IT?

I am on Windows. I've done some basic coding in the long past but generally am not too familiar with non-GUI operations. With some guidance, however, I'd be willing to attempt something a little more complex.
I do remember the encryption phase, but I do not see an acid-state database. My Daedalus version is 1.0.3769, wallet 0.8.2. Is the tool you referenced expected to work with this version of the wallet?

Questions for both of you @skazichris and @mkr-j:

What operating system are you on / familiar with?
What is your level of expertise in IT?

I am on Windows. I've done some basic coding in the long past but generally am not too familiar with non-GUI operations. With some guidance, however, I'd be willing to attempt something a little more complex.
I do remember the encryption phase, but I do not see an acid-state database. My Daedalus version is 1.0.3769, wallet 0.8.2. Is the tool you referenced expected to work with this version of the wallet?

@KtorZ I have some findings, probably not very good for me...

@mprymek have a look at: input-output-hk/cardano-sl#4278 (comment), there's a pre-compiled binary which should work on any GNU linux.

Sidenote: It doesn't work on "any" Linux distribution. It's dynamically linked and at least librocksdb.so.5.8 is a little bit problematic. It's not available in Ubuntu 20.04. I found it's available in Ubuntu 18.04.
I can confirm it's working on Ubuntu 18.04:
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.1 LTS
Release:	18.04
Codename:	bionic

$ ./export-wallets --mainnet   --wallet-db-path ./state-wallet-mainnet/wallet-db   --keyfile ./state-wallet-mainnet/secret.key
No wallet for id: Ae2tdPwUPEZKHDtF6psSMU99Z7HnMAgSs4T7wpbWAGdHrh1RGM8GhLd3BRq
No wallet for id: Ae2tdPwUPEZ42xY2TByWhGPQ7UST7VsopbX4KAhQRdd6o5KyS9ZJxiEMzLX
[
    {
        "encrypted_root_private_key": "f6e79f49b8999a39d7e970e42d0a91224ecacefc3aa1edb342f34eb8bc6c2fc63e743b862b312a6f92ba0161d4d53c3ee5a2bd8085476d9575765c49dceecbe54b34ec47daf9b7ebc6bdb706622616451c000e85ba81c7449ae436a8cbbf3aab98e5cc704977bd11bb0ba8d5b5571a705704cb9334d27a048532eab49a698c2d",
        "name": "亜哀うめるтУуФф",
        "passphrase_hash": "31347c387c317c5743413633702f6a487a5777575278756756344e316854793470646c6d4f76665177653863775a575472784f79773d3d7c796341722f61326f4f777a736e4e746f4e655049416e4f6b7978426549494a6b59623039574b564a7159493d"
    },
    {
        "encrypted_root_private_key": "38e8de9c583441213fe34eecc4e28265267466877ba4048e3ab1fa9956366947aefaf5ba9779db67eead7fc9cd1354b994a5d8d9cd40ab874bfeb1b33649280cd33651377731e0e59e0233425a55257782c5adaa768da0567f43c1c6c0c18766ed0a547bb34eb472c120b170a8640279832ddf18002887f03c15dea59705422d",
        "name": "WALLET 💜 💛 💚 💙",
        "passphrase_hash": null
    }
]

But i found the original Daedalus version I have a backup of, was probably older than 0.15.
Don't know if it's of any value, but anyways:
$ ls
 GPUCache         Logs          Secrets-1.0   config.json   tls
'Local Storage'   Preferences   Wallet-1.0    storage

$ cat Wallet-1.0/events.version
0.14.2

Export does not work (pre-0.15 had a different DB format?):
$ ../export-wallets-qa/export-wallets --mainnet --wallet-db-path Wallet-1.0/ --keyfile Secrets-1.0/secret.key
export-wallets: user error (There's no acid-state database matching the given path.)

$ ls Wallet-1.0/
Archive                     checkpoints-0000000071.log  events-0000057291.log  open
checkpoints-0000000070.log  checkpoints.version         events.version         open.lock

@KtorZ I have some findings, probably not very good for me...

@mprymek have a look at: input-output-hk/cardano-sl#4278 (comment), there's a pre-compiled binary which should work on any GNU linux.

Sidenote: It doesn't work on "any" Linux distribution. It's dynamically linked and at least librocksdb.so.5.8 is a little bit problematic. It's not available in Ubuntu 20.04. I found it's available in Ubuntu 18.04.
I can confirm it's working on Ubuntu 18.04:
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.1 LTS
Release:	18.04
Codename:	bionic

$ ./export-wallets --mainnet   --wallet-db-path ./state-wallet-mainnet/wallet-db   --keyfile ./state-wallet-mainnet/secret.key
No wallet for id: Ae2tdPwUPEZKHDtF6psSMU99Z7HnMAgSs4T7wpbWAGdHrh1RGM8GhLd3BRq
No wallet for id: Ae2tdPwUPEZ42xY2TByWhGPQ7UST7VsopbX4KAhQRdd6o5KyS9ZJxiEMzLX
[
    {
        "encrypted_root_private_key": "f6e79f49b8999a39d7e970e42d0a91224ecacefc3aa1edb342f34eb8bc6c2fc63e743b862b312a6f92ba0161d4d53c3ee5a2bd8085476d9575765c49dceecbe54b34ec47daf9b7ebc6bdb706622616451c000e85ba81c7449ae436a8cbbf3aab98e5cc704977bd11bb0ba8d5b5571a705704cb9334d27a048532eab49a698c2d",
        "name": "亜哀うめるтУуФф",
        "passphrase_hash": "31347c387c317c5743413633702f6a487a5777575278756756344e316854793470646c6d4f76665177653863775a575472784f79773d3d7c796341722f61326f4f777a736e4e746f4e655049416e4f6b7978426549494a6b59623039574b564a7159493d"
    },
    {
        "encrypted_root_private_key": "38e8de9c583441213fe34eecc4e28265267466877ba4048e3ab1fa9956366947aefaf5ba9779db67eead7fc9cd1354b994a5d8d9cd40ab874bfeb1b33649280cd33651377731e0e59e0233425a55257782c5adaa768da0567f43c1c6c0c18766ed0a547bb34eb472c120b170a8640279832ddf18002887f03c15dea59705422d",
        "name": "WALLET 💜 💛 💚 💙",
        "passphrase_hash": null
    }
]

But i found the original Daedalus version I have a backup of, was probably older than 0.15.
Don't know if it's of any value, but anyways:
$ ls
 GPUCache         Logs          Secrets-1.0   config.json   tls
'Local Storage'   Preferences   Wallet-1.0    storage

$ cat Wallet-1.0/events.version
0.14.2

Export does not work (pre-0.15 had a different DB format?):
$ ../export-wallets-qa/export-wallets --mainnet --wallet-db-path Wallet-1.0/ --keyfile Secrets-1.0/secret.key
export-wallets: user error (There's no acid-state database matching the given path.)

$ ls Wallet-1.0/
Archive                     checkpoints-0000000071.log  events-0000057291.log  open
checkpoints-0000000070.log  checkpoints.version         events.version         open.lock

Just to add, it's probably something zendesk support should have heaps of tickets above, but we have tons of users reporting on telegramnover past few months who - do not seem to have read the warnings and have their funds locked due to missing 12 word seed.
Atleast for those that have the spending password available, it would be really helpful if there's a published way from IOG to use as a workaround (rather than someone from community passing a python/js code and asking them to run - as that involves trust, and potentially mote susceptible to scams on crypto social platforms). If only the part regarding secret.key to master key (unencrypted with spending password) is available as a method from IOG, we could easily ask users to import their wallets into Yoroi 🙂

Just to add, it's probably something zendesk support should have heaps of tickets above, but we have tons of users reporting on telegramnover past few months who - do not seem to have read the warnings and have their funds locked due to missing 12 word seed.
Atleast for those that have the spending password available, it would be really helpful if there's a published way from IOG to use as a workaround (rather than someone from community passing a python/js code and asking them to run - as that involves trust, and potentially mote susceptible to scams on crypto social platforms). If only the part regarding secret.key to master key (unencrypted with spending password) is available as a method from IOG, we could easily ask users to import their wallets into Yoroi 🙂

Hello @KtorZ and @mprymek
I can confirm that unfortunately export-wallets-qa util doesn't works.
`
$ ls Secrets-1.0/
secret.key  secret.key.lock
$ ls Wallet-1.0/
Archive                     checkpoints-0000000009.log  events-0000002481.log  open
checkpoints-0000000008.log  checkpoints.version         events.version         open.lock
$ ./export-wallets --mainnet --wallet-db-path Wallet-1.0/ --keyfile Secrets-1.0/secret.key
export-wallets: user error (There's no acid-state database matching the given path.)
`

Hello @KtorZ and @mprymek
I can confirm that unfortunately export-wallets-qa util doesn't works.
`
$ ls Secrets-1.0/
secret.key  secret.key.lock
$ ls Wallet-1.0/
Archive                     checkpoints-0000000009.log  events-0000002481.log  open
checkpoints-0000000008.log  checkpoints.version         events.version         open.lock
$ ./export-wallets --mainnet --wallet-db-path Wallet-1.0/ --keyfile Secrets-1.0/secret.key
export-wallets: user error (There's no acid-state database matching the given path.)
`

I'm trying to restore a wallet that was created with Daedalus 0.13.1
When using the utility I'm getting the error "user error (There's no acid-state database matching the given path.)"
I'm not %100 on what path or file I should be pointing this too. I have tried:
DB-1.0/
Wallet-1.0-acid/
Wallet-1.0-sqlite.sqlite3
@mprymek mentioned that this utility might not work with this db version. Does anyone have any more information on this?
Any help would be appreciated, thank you.

I'm trying to restore a wallet that was created with Daedalus 0.13.1
When using the utility I'm getting the error "user error (There's no acid-state database matching the given path.)"
I'm not %100 on what path or file I should be pointing this too. I have tried:
DB-1.0/
Wallet-1.0-acid/
Wallet-1.0-sqlite.sqlite3
@mprymek mentioned that this utility might not work with this db version. Does anyone have any more information on this?
Any help would be appreciated, thank you.

I am in the same predicament.. i had my wallet in Daedalus 0.13.1 and although i can get the script to work under ubuntu 18.04 with the test data in the gzip, it seems not work with my 0.13.1 data (same as @clovehitch)
I still have 0.13.1 installed on my windows PC (it runs, just can't connect).. is upgrading to 0.15.1 (after taking a VM snapshot) to upgrade the data structure an option? i had a search around everywhere for the old installer.. but had no luck..

I am in the same predicament.. i had my wallet in Daedalus 0.13.1 and although i can get the script to work under ubuntu 18.04 with the test data in the gzip, it seems not work with my 0.13.1 data (same as @clovehitch)
I still have 0.13.1 installed on my windows PC (it runs, just can't connect).. is upgrading to 0.15.1 (after taking a VM snapshot) to upgrade the data structure an option? i had a search around everywhere for the old installer.. but had no luck..

same error here.
events.version file shows 0.15.0.
need to import wallet using secret.key.
Please help

same error here.
events.version file shows 0.15.0.
need to import wallet using secret.key.
Please help

I have just checked some old Daedalus versions: 0.13.0, 0.13.1 and 0.15.1. From what I see, in all those versions the state directory looks as follows:
~/.local/share/Daedalus/mainnet$ ls -l
total 1036
drwxrwxr-x 7 piotr piotr   4096 sty 11 09:10 DB
-rw-r--r-- 1 piotr piotr 975704 sty 11 09:10 icon_large.png
-rw-r--r-- 1 piotr piotr   4800 sty 11 09:10 icon.png
drwxrwxr-x 3 piotr piotr   4096 sty 11 09:10 Logs
-rwxr-xr-x 1 piotr piotr    880 sty 11 09:10 namespaceHelper
drwxrwxr-x 2 piotr piotr   4096 sty 11 09:10 Secrets
drwxrwxr-x 4 piotr piotr   4096 sty 11 09:10 tls
drwxrwxr-x 3 piotr piotr   4096 sty 11 09:10 Wallet-acid
-rw-r--r-- 1 piotr piotr  45056 sty 11 09:10 Wallet-sqlite.sqlite3

Where:
~/.local/share/Daedalus/mainnet/Wallet-acid$ ls -l
total 16
drwxrwxr-x 2 piotr piotr 4096 sty 11 09:34 Archive
-rw-rw-r-- 1 piotr piotr  127 sty 11 09:34 checkpoints-0000000002.log
-rw-rw-r-- 1 piotr piotr    0 sty 11 09:34 checkpoints-0000000003.log
-rw-rw-r-- 1 piotr piotr    6 sty 11 09:33 checkpoints.version
-rw-rw-r-- 1 piotr piotr    0 sty 11 09:33 events-0000000000.log
-rw-rw-r-- 1 piotr piotr    6 sty 11 09:33 events.version
-rw-rw-r-- 1 piotr piotr    0 sty 11 09:33 open.lock

I am able to run the export-wallets tool on all three Daedalus versions like this:
$ ./export-wallets --wallet-db-path ~/.local/share/Daedalus/mainnet/Wallet \
                   --keyfile ~/.local/share/Daedalus/mainnet/Secrets/secret.key \
                   --mainnet
[]

It is a bit counter-intuitive but, I think, the "rule" would be: if you have those two items in your state directory: Wallet-acid and Wallet-sqlite.sqlite3 you should point --wallet-db-path to something like /path/to/state-dir/Wallet.

I have just checked some old Daedalus versions: 0.13.0, 0.13.1 and 0.15.1. From what I see, in all those versions the state directory looks as follows:
~/.local/share/Daedalus/mainnet$ ls -l
total 1036
drwxrwxr-x 7 piotr piotr   4096 sty 11 09:10 DB
-rw-r--r-- 1 piotr piotr 975704 sty 11 09:10 icon_large.png
-rw-r--r-- 1 piotr piotr   4800 sty 11 09:10 icon.png
drwxrwxr-x 3 piotr piotr   4096 sty 11 09:10 Logs
-rwxr-xr-x 1 piotr piotr    880 sty 11 09:10 namespaceHelper
drwxrwxr-x 2 piotr piotr   4096 sty 11 09:10 Secrets
drwxrwxr-x 4 piotr piotr   4096 sty 11 09:10 tls
drwxrwxr-x 3 piotr piotr   4096 sty 11 09:10 Wallet-acid
-rw-r--r-- 1 piotr piotr  45056 sty 11 09:10 Wallet-sqlite.sqlite3

Where:
~/.local/share/Daedalus/mainnet/Wallet-acid$ ls -l
total 16
drwxrwxr-x 2 piotr piotr 4096 sty 11 09:34 Archive
-rw-rw-r-- 1 piotr piotr  127 sty 11 09:34 checkpoints-0000000002.log
-rw-rw-r-- 1 piotr piotr    0 sty 11 09:34 checkpoints-0000000003.log
-rw-rw-r-- 1 piotr piotr    6 sty 11 09:33 checkpoints.version
-rw-rw-r-- 1 piotr piotr    0 sty 11 09:33 events-0000000000.log
-rw-rw-r-- 1 piotr piotr    6 sty 11 09:33 events.version
-rw-rw-r-- 1 piotr piotr    0 sty 11 09:33 open.lock

I am able to run the export-wallets tool on all three Daedalus versions like this:
$ ./export-wallets --wallet-db-path ~/.local/share/Daedalus/mainnet/Wallet \
                   --keyfile ~/.local/share/Daedalus/mainnet/Secrets/secret.key \
                   --mainnet
[]

It is a bit counter-intuitive but, I think, the "rule" would be: if you have those two items in your state directory: Wallet-acid and Wallet-sqlite.sqlite3 you should point --wallet-db-path to something like /path/to/state-dir/Wallet.

My Daedalus installation was on windows, would that make a difference?

My 0.13.1 directory structure looks like the following (its a copy, so date stamps are not original) :
10/01/2021  01:39 PM              .
10/01/2021  01:39 PM              ..
10/01/2021  01:36 PM              blob_storage
01/09/2020  12:05 PM               167 config.json
10/01/2021  01:39 PM              DB-1.0
10/01/2021  01:39 PM              GPUCache
10/01/2021  01:39 PM              Local Storage
10/01/2021  01:39 PM              Logs
01/09/2020  11:59 AM               533 Preferences
30/12/2018  01:31 PM                 0 public.key
30/12/2018  01:31 PM                 0 public.key.lock
10/01/2021  01:39 PM              Secrets-1.0
10/01/2021  01:39 PM              tls
10/01/2021  01:39 PM              Wallet-1.0-acid
10/01/2021  01:39 PM              Wallet-1.0-backup-2018-12-30T02_31_27
24/03/2019  09:28 PM            45,056 Wallet-1.0-sqlite.sqlite3
24/03/2019  09:04 PM              webrtc_event_logs
The Wallet-1.0-acid directory contains :
10/01/2021  01:39 PM              .
10/01/2021  01:39 PM              ..
10/01/2021  01:39 PM              Archive
01/09/2020  12:04 PM           883,800 checkpoints-0000000737.log
01/09/2020  12:04 PM                 0 checkpoints-0000000738.log
30/12/2018  01:31 PM                 6 checkpoints.version
01/09/2020  12:04 PM                 0 events-0001994441.log
30/12/2018  01:31 PM                 6 events.version
30/12/2018  01:31 PM                 0 open.lock

Hi @khughes5, I just did the same, i.e. copied Daedalus (0.13.0) state dir from Windows to Linux:
My state directory looks as follows:
$ ls -l ~/Documents/daedalus-win/Daedalus/
total 84
drwxrwxr-x 3 piotr piotr  4096 sty 11 12:30  blob_storage
-rw-rw-r-- 1 piotr piotr    35 sty 11 12:19  config.json
drwxrwxr-x 7 piotr piotr  4096 sty 11 12:30  DB-1.0
drwxrwxr-x 2 piotr piotr  4096 sty 11 12:30  GPUCache
drwxrwxr-x 3 piotr piotr  4096 sty 11 12:30 'Local Storage'
-rw-rw-r-- 1 piotr piotr     0 sty 11 12:19  lockfile
drwxrwxr-x 3 piotr piotr  4096 sty 11 12:30  Logs
drwxrwxr-x 2 piotr piotr  4096 sty 11 12:30  Secrets-1.0
drwxrwxr-x 4 piotr piotr  4096 sty 11 12:30  tls
drwxrwxr-x 3 piotr piotr  4096 sty 11 12:33  Wallet-1.0-acid
-rw-rw-r-- 1 piotr piotr 45056 sty 11 12:19  Wallet-1.0-sqlite.sqlite3
drwxrwxr-x 2 piotr piotr  4096 sty 11 12:19  webrtc_event_logs

where:
$ ls -l ~/Documents/daedalus-win/Daedalus/Wallet-1.0-acid/
total 16
drwxrwxr-x 2 piotr piotr 4096 sty 11 12:40 Archive
-rw-rw-r-- 1 piotr piotr  127 sty 11 12:40 checkpoints-0000000004.log
-rw-rw-r-- 1 piotr piotr    0 sty 11 12:40 checkpoints-0000000005.log
-rw-rw-r-- 1 piotr piotr    6 sty 11 12:19 checkpoints.version
-rw-rw-r-- 1 piotr piotr    0 sty 11 12:29 events-0000000000.log
-rw-rw-r-- 1 piotr piotr    6 sty 11 12:19 events.version
-rw-rw-r-- 1 piotr piotr    0 sty 11 12:19 open.lock

With that I am able to run the tool like this:
$ ./export-wallets --mainnet \
--wallet-db-path ~/Documents/daedalus-win/Daedalus/Wallet-1.0 \
--keyfile ~/Documents/daedalus-win/Daedalus/Secrets-1.0/secret.key

[]

Is there any error you are seing?

Hi @khughes5, I just did the same, i.e. copied Daedalus (0.13.0) state dir from Windows to Linux:
My state directory looks as follows:
$ ls -l ~/Documents/daedalus-win/Daedalus/
total 84
drwxrwxr-x 3 piotr piotr  4096 sty 11 12:30  blob_storage
-rw-rw-r-- 1 piotr piotr    35 sty 11 12:19  config.json
drwxrwxr-x 7 piotr piotr  4096 sty 11 12:30  DB-1.0
drwxrwxr-x 2 piotr piotr  4096 sty 11 12:30  GPUCache
drwxrwxr-x 3 piotr piotr  4096 sty 11 12:30 'Local Storage'
-rw-rw-r-- 1 piotr piotr     0 sty 11 12:19  lockfile
drwxrwxr-x 3 piotr piotr  4096 sty 11 12:30  Logs
drwxrwxr-x 2 piotr piotr  4096 sty 11 12:30  Secrets-1.0
drwxrwxr-x 4 piotr piotr  4096 sty 11 12:30  tls
drwxrwxr-x 3 piotr piotr  4096 sty 11 12:33  Wallet-1.0-acid
-rw-rw-r-- 1 piotr piotr 45056 sty 11 12:19  Wallet-1.0-sqlite.sqlite3
drwxrwxr-x 2 piotr piotr  4096 sty 11 12:19  webrtc_event_logs

where:
$ ls -l ~/Documents/daedalus-win/Daedalus/Wallet-1.0-acid/
total 16
drwxrwxr-x 2 piotr piotr 4096 sty 11 12:40 Archive
-rw-rw-r-- 1 piotr piotr  127 sty 11 12:40 checkpoints-0000000004.log
-rw-rw-r-- 1 piotr piotr    0 sty 11 12:40 checkpoints-0000000005.log
-rw-rw-r-- 1 piotr piotr    6 sty 11 12:19 checkpoints.version
-rw-rw-r-- 1 piotr piotr    0 sty 11 12:29 events-0000000000.log
-rw-rw-r-- 1 piotr piotr    6 sty 11 12:19 events.version
-rw-rw-r-- 1 piotr piotr    0 sty 11 12:19 open.lock

With that I am able to run the tool like this:
$ ./export-wallets --mainnet \
--wallet-db-path ~/Documents/daedalus-win/Daedalus/Wallet-1.0 \
--keyfile ~/Documents/daedalus-win/Daedalus/Secrets-1.0/secret.key

[]

Is there any error you are seing?

@piotr-iohk - Thanks SO much!!!! i just got it to work! and thanks to @KtorZ for originally providing reference to the tools!
Before i was just copying a subset of files and Directories (Wallet-1.0-acid, Wallet-1.0-sqlite.sqlite3 and Secrets-1.0)..
This time i copied the whole Directory (c:\users\Name\AppData\Roaming\Daedalus) across into linux, dumped them in the user documents directory like you did and ran the tool as you specified.. it worked! I don't have a very good grasp on linux, so maybe i was screwing something else up before..
Now i am off to start looking at the whole API side, to try and see how to import the encrypted strings!!
PS for those following along (and like me have no linux exp), after a default install of Ubuntu 18.04 i had to run "sudo apt-get update" then "sudo apt-get install librocksdb5.8" to get the required library to be able to get the tool to run (you need an internet connection for that to work)

@piotr-iohk - Thanks SO much!!!! i just got it to work! and thanks to @KtorZ for originally providing reference to the tools!
Before i was just copying a subset of files and Directories (Wallet-1.0-acid, Wallet-1.0-sqlite.sqlite3 and Secrets-1.0)..
This time i copied the whole Directory (c:\users\Name\AppData\Roaming\Daedalus) across into linux, dumped them in the user documents directory like you did and ran the tool as you specified.. it worked! I don't have a very good grasp on linux, so maybe i was screwing something else up before..
Now i am off to start looking at the whole API side, to try and see how to import the encrypted strings!!
PS for those following along (and like me have no linux exp), after a default install of Ubuntu 18.04 i had to run "sudo apt-get update" then "sudo apt-get install librocksdb5.8" to get the required library to be able to get the tool to run (you need an internet connection for that to work)

@khughes5 Did you figure out how to import the encrypted strings?

@khughes5 Did you figure out how to import the encrypted strings?

Unfortunately not yet (i am not a programmer).. and i don't even know if i am on the right track here.. but i was hoping to use my Daedalus flight 3.1.0 install on windows (which seems to run the cardano-node.exe on a random listening port), along with the method described in https://iohk.zendesk.com/hc/en-us/articles/900000672303-How-to-migrate-a-Byron-Legacy-wallet-to-cardano-wallet- with the payload replaced with that described in the random(from xprv) tab by KtorZ above..
again not sure if i am totally missing the mark here.. very open to help from anyone in the thread about what to do with the extracted information from the tool :)

Unfortunately not yet (i am not a programmer).. and i don't even know if i am on the right track here.. but i was hoping to use my Daedalus flight 3.1.0 install on windows (which seems to run the cardano-node.exe on a random listening port), along with the method described in https://iohk.zendesk.com/hc/en-us/articles/900000672303-How-to-migrate-a-Byron-Legacy-wallet-to-cardano-wallet- with the payload replaced with that described in the random(from xprv) tab by KtorZ above..
again not sure if i am totally missing the mark here.. very open to help from anyone in the thread about what to do with the extracted information from the tool :)

@khughes5 I have a tool that can be handy for your use case, but you'll need to have ruby installed on your system. For Windows Ruby+Devkit 2.7.2-1 (x64) from https://rubyinstaller.org/downloads/ should be OK.
The tool (https://github.com/piotr-iohk/ikar) is a lightweit web app over cardano-wallet and can be easily connected with underalying cardano-wallet of your Daedalus instance.

To start the tool (once you have ruby on your system):

git clone https://github.com/piotr-iohk/ikar.git
cd ikar
bundle config set without 'development test'
bundle install
ruby app.rb

Then point your browser to http://localhost:4444/ and click at "Discover" button. If you have Daedalus running you should get it on the list of discovered cardano-wallet servers, like this:

Click "Connect"
Then go to "Byron Wallets" -> "Create random (from xprv)"
Paste the output of export-wallets command into the form like below and hit "Create"

That's it. You should have your wallet now visible in Daedalus and once it is restored you should be able to migrate your funds to Shelley wallet from there.

Hope that helps!

@khughes5 I have a tool that can be handy for your use case, but you'll need to have ruby installed on your system. For Windows Ruby+Devkit 2.7.2-1 (x64) from https://rubyinstaller.org/downloads/ should be OK.
The tool (https://github.com/piotr-iohk/ikar) is a lightweit web app over cardano-wallet and can be easily connected with underalying cardano-wallet of your Daedalus instance.

To start the tool (once you have ruby on your system):

git clone https://github.com/piotr-iohk/ikar.git
cd ikar
bundle config set without 'development test'
bundle install
ruby app.rb

Then point your browser to http://localhost:4444/ and click at "Discover" button. If you have Daedalus running you should get it on the list of discovered cardano-wallet servers, like this:

Click "Connect"
Then go to "Byron Wallets" -> "Create random (from xprv)"
Paste the output of export-wallets command into the form like below and hit "Create"

That's it. You should have your wallet now visible in Daedalus and once it is restored you should be able to migrate your funds to Shelley wallet from there.

Hope that helps!

@piotr-iohk I can't thank you enough!!! thanks so much, using your instructions (and install git for windows) i was able to easily import it into my Daedalus app, and transfer the ADA across to a new shelley wallet!!
 I am sure i am not the first to be saved from everyones guidance and advice through this thread!!

@piotr-iohk I can't thank you enough!!! thanks so much, using your instructions (and install git for windows) i was able to easily import it into my Daedalus app, and transfer the ADA across to a new shelley wallet!!
 I am sure i am not the first to be saved from everyones guidance and advice through this thread!!

I trying to rename "Wallet-1.0" to "Wallet-1.0-acid" but use "Wallet-1.0" in command line instead, so now the error "There's no acid-state database matching the given path." resolved:
./export-wallets --wallet-db-path /Wallet-1.0 --keyfile /Secrets-1.0/secret.key --mainnet
But now I get the error
`export-wallets: Could not parse saved checkpoint due to the following error: Failed reading: safecopy: Cardano.Wallet.Kernel.DB.AcidState.DB: Cannot find getter associated with this version number: Version {unVersion = 2}
Empty call stack
CallStack (from HasCallStack):
error, called at src/Data/Acid/Local.hs:329:7 in acid-state-0.15.0-KPx3nxg5ffCDH1G6VxHbSk:Data.Acid.Local`
I used daedalus in 2018 last time and now I have only Secrets-1.0 and Wallet-1.0 folders backup. Also I remember decrypt pasword.
Anyone can help? Thanks guys.

I trying to rename "Wallet-1.0" to "Wallet-1.0-acid" but use "Wallet-1.0" in command line instead, so now the error "There's no acid-state database matching the given path." resolved:
./export-wallets --wallet-db-path /Wallet-1.0 --keyfile /Secrets-1.0/secret.key --mainnet
But now I get the error
`export-wallets: Could not parse saved checkpoint due to the following error: Failed reading: safecopy: Cardano.Wallet.Kernel.DB.AcidState.DB: Cannot find getter associated with this version number: Version {unVersion = 2}
Empty call stack
CallStack (from HasCallStack):
error, called at src/Data/Acid/Local.hs:329:7 in acid-state-0.15.0-KPx3nxg5ffCDH1G6VxHbSk:Data.Acid.Local`
I used daedalus in 2018 last time and now I have only Secrets-1.0 and Wallet-1.0 folders backup. Also I remember decrypt pasword.
Anyone can help? Thanks guys.

export-wallets-c1815b7d.tar.gz
@devilus
I triggered a compilation during lunch of the latest version of the export tool linked earlier. That version makes the acid-state database optional (as it is only really used to extract wallet names and map them to keys in the keystore). So you could use that to extract keys from your keystore. If you've a single one there's no ambiguity, and if you have multiple ones, you'd have to figure out which one is which by restoring them all and looking at the transaction history.

export-wallets-c1815b7d.tar.gz
@devilus
I triggered a compilation during lunch of the latest version of the export tool linked earlier. That version makes the acid-state database optional (as it is only really used to extract wallet names and map them to keys in the keystore). So you could use that to extract keys from your keystore. If you've a single one there's no ambiguity, and if you have multiple ones, you'd have to figure out which one is which by restoring them all and looking at the transaction history.

@KtorZ
Which linux version do you use? I can't find librocksdb.so.6 package for ubuntu 18.
./export-wallets --keyfile /Secrets-1.0/secret.key --mainnet
./export-wallets: error while loading shared libraries: librocksdb.so.6: cannot open shared object file: No such file or directory

@KtorZ
Which linux version do you use? I can't find librocksdb.so.6 package for ubuntu 18.
./export-wallets --keyfile /Secrets-1.0/secret.key --mainnet
./export-wallets: error while loading shared libraries: librocksdb.so.6: cannot open shared object file: No such file or directory

The binary isn't statically linked sorry. That'd take a bit more work to do for Haskell system dependencies are typically dynamically link. You need rocksdb to run that one unfortunately. On aptitude, you get the necessary dependencies by installing librocksdb-dev
apt get install librocksdb-dev

The binary isn't statically linked sorry. That'd take a bit more work to do for Haskell system dependencies are typically dynamically link. You need rocksdb to run that one unfortunately. On aptitude, you get the necessary dependencies by installing librocksdb-dev
apt get install librocksdb-dev

@KtorZ
Thanks a lot :)
Ok now I have a restored key from secret key:
[
    {
        "encrypted_root_private_key": "_hash_string_",
        "is_passphrase_empty": false,
        "name": null,
        "id": "_id_string_",
        "passphrase_hash": "_hash_string_"
    }
]

Don't understand fully what I need to do now?

@KtorZ
Thanks a lot :)
Ok now I have a restored key from secret key:
[
    {
        "encrypted_root_private_key": "_hash_string_",
        "is_passphrase_empty": false,
        "name": null,
        "id": "_id_string_",
        "passphrase_hash": "_hash_string_"
    }
]

Don't understand fully what I need to do now?

@devilus one option is to try with this -> https://github.com/input-output-hk/cardano-wallet/issues/2395#issuecomment-758784374.
(Probably you might want to change "name": null into something like "name": "My wallet")

@devilus one option is to try with this -> https://github.com/input-output-hk/cardano-wallet/issues/2395#issuecomment-758784374.
(Probably you might want to change "name": null into something like "name": "My wallet")

@piotr-iohk
I trying your solution right now :)
I have a lastest 3.1.0 version Daedalus Mainnet installed and synced with fresh wallet. But after https connection to node only "Tools->Generate mnemonics" option active. What I doing wrong?

@piotr-iohk
I trying your solution right now :)
I have a lastest 3.1.0 version Daedalus Mainnet installed and synced with fresh wallet. But after https connection to node only "Tools->Generate mnemonics" option active. What I doing wrong?

Did you click at Discover button and Connected to your Daedalus?

Did you click at Discover button and Connected to your Daedalus?

Yes sure.
After click "Discover"

After click "Connect"

Yes sure.
After click "Discover"

After click "Connect"

Ok, I've noticed this sometimes happening when you were already connected to different Daedalus instance and now trying to re-connect to another one. The only solution for now is to restart ikar (i.e. kill ruby process and start ruby app.rb again) and try to discover and connect again. If this doesn't help, you may try making a request to Daedalus' underlying cardano-wallet  via curl (just replace , ,  and  with your data):
curl -X POST https://localhost:<PORT>/v2/byron-wallets \
-d '{"encrydpted_root_private_key":"<xprv>","name":"My Old Byron Wallet","passphrase_hash":"<pass>","style":"random"}' \
--cert /Users/<USER>/Library/Application Support/Daedalus Mainnet/tls/client/client.pem \
--cacert /Users/<USER>/Library/Application Support/Daedalus Mainnet/tls/client/ca.crt \
-H "Content-Type: application/json"

Ok, I've noticed this sometimes happening when you were already connected to different Daedalus instance and now trying to re-connect to another one. The only solution for now is to restart ikar (i.e. kill ruby process and start ruby app.rb again) and try to discover and connect again. If this doesn't help, you may try making a request to Daedalus' underlying cardano-wallet  via curl (just replace , ,  and  with your data):
curl -X POST https://localhost:<PORT>/v2/byron-wallets \
-d '{"encrydpted_root_private_key":"<xprv>","name":"My Old Byron Wallet","passphrase_hash":"<pass>","style":"random"}' \
--cert /Users/<USER>/Library/Application Support/Daedalus Mainnet/tls/client/client.pem \
--cacert /Users/<USER>/Library/Application Support/Daedalus Mainnet/tls/client/ca.crt \
-H "Content-Type: application/json"

@piotr-iohk
Unfortunately doesn't work by curl. Where is my mistake?
curl -X POST http://localhost:4444/v2/byron-wallets --cert /Users/max/Library/Application\ Support/Daedalus\ Mainnet/tls/client/client.pem --cacert /Users/max/Library/Application\ Support/Daedalus\ Mainnet/tls/client/ca.crt -d '{"encrypted_root_private_key":"__KEY__","name":"My Old Byron Wallet","passphrase_hash":"__HASH__","style":"random"}' -H "Content-Type: application/json"
Response
<!DOCTYPE html>
<html>
<head>
  <style type="text/css">
  body { text-align:center;font-family:helvetica,arial;font-size:22px;
    color:#888;margin:20px}
  #c {margin:0 auto;width:500px;text-align:left}
  </style>
</head>
<body>
  <h2>Sinatra doesn’t know this ditty.</h2>
  <img src='http://localhost:4444/__sinatra__/404.png'>
  <div id="c">
    Try this:
    <pre>post '/v2/byron-wallets' do
  "Hello World"
end
</pre>
  </div>
</body>
</html>

@piotr-iohk
Unfortunately doesn't work by curl. Where is my mistake?
curl -X POST http://localhost:4444/v2/byron-wallets --cert /Users/max/Library/Application\ Support/Daedalus\ Mainnet/tls/client/client.pem --cacert /Users/max/Library/Application\ Support/Daedalus\ Mainnet/tls/client/ca.crt -d '{"encrypted_root_private_key":"__KEY__","name":"My Old Byron Wallet","passphrase_hash":"__HASH__","style":"random"}' -H "Content-Type: application/json"
Response
<!DOCTYPE html>
<html>
<head>
  <style type="text/css">
  body { text-align:center;font-family:helvetica,arial;font-size:22px;
    color:#888;margin:20px}
  #c {margin:0 auto;width:500px;text-align:left}
  </style>
</head>
<body>
  <h2>Sinatra doesn’t know this ditty.</h2>
  <img src='http://localhost:4444/__sinatra__/404.png'>
  <div id="c">
    Try this:
    <pre>post '/v2/byron-wallets' do
  "Hello World"
end
</pre>
  </div>
</body>
</html>

Port should be a Daedalus' wallet port, so based on your screenshot from https://github.com/input-output-hk/cardano-wallet/issues/2395#issuecomment-759498554 61103.

Port should be a Daedalus' wallet port, so based on your screenshot from https://github.com/input-output-hk/cardano-wallet/issues/2395#issuecomment-759498554 61103.

I did it! Thank you guys @piotr-iohk @KtorZ  for help!🥳

I did it! Thank you guys @piotr-iohk @KtorZ  for help!🥳

The binary isn't statically linked sorry. That'd take a bit more work to do for Haskell system dependencies are typically dynamically linked. You need rocksdb to run that one unfortunately. On aptitude, you get the necessary dependencies by installing librocksdb-dev
apt get install librocksdb-dev

Hi, I still do not get how to install librocksdb.so.6. The libsrocksdb-dev package installs the 5.8.8 version.
I have also downloaded from github the latest rocksdb, compiled and installed it. Still, I do not see the version 6 of librocksdb.
Do I need a specific setup?

The binary isn't statically linked sorry. That'd take a bit more work to do for Haskell system dependencies are typically dynamically linked. You need rocksdb to run that one unfortunately. On aptitude, you get the necessary dependencies by installing librocksdb-dev
apt get install librocksdb-dev

Hi, I still do not get how to install librocksdb.so.6. The libsrocksdb-dev package installs the 5.8.8 version.
I have also downloaded from github the latest rocksdb, compiled and installed it. Still, I do not see the version 6 of librocksdb.
Do I need a specific setup?

The binary isn't statically linked sorry. That'd take a bit more work to do for Haskell system dependencies are typically dynamically linked. You need rocksdb to run that one unfortunately. On aptitude, you get the necessary dependencies by installing librocksdb-dev
apt get install librocksdb-dev

Hi, I still do not get how to install librocksdb.so.6. The libsrocksdb-dev package installs the 5.8.8 version.
I have also downloaded from github the latest rocksdb, compiled and installed it. Still, I do not see the version 6 of librocksdb.
Do I need a specific setup?

Ok, I got it. I modified the Makefile to create dynamic libraries (LIB_MODE?=shared). All good.

The binary isn't statically linked sorry. That'd take a bit more work to do for Haskell system dependencies are typically dynamically linked. You need rocksdb to run that one unfortunately. On aptitude, you get the necessary dependencies by installing librocksdb-dev
apt get install librocksdb-dev

Hi, I still do not get how to install librocksdb.so.6. The libsrocksdb-dev package installs the 5.8.8 version.
I have also downloaded from github the latest rocksdb, compiled and installed it. Still, I do not see the version 6 of librocksdb.
Do I need a specific setup?

Ok, I got it. I modified the Makefile to create dynamic libraries (LIB_MODE?=shared). All good.

Note: there's now a pure typescript implementation of the extract-wallet tool above:
https://github.com/input-output-hk/daedalus/pull/2308
This should make it possible to restore the recovery feature in Daedalus and unlock those who haven't managed to go with the command-line way.

Note: there's now a pure typescript implementation of the extract-wallet tool above:
https://github.com/input-output-hk/daedalus/pull/2308
This should make it possible to restore the recovery feature in Daedalus and unlock those who haven't managed to go with the command-line way.

Note: there's now a pure typescript implementation of the extract-wallet tool above:
input-output-hk/daedalus#2308
This should make it possible to restore the recovery feature in Daedalus and unlock those who haven't managed to go with the command-line way.

Wonderful!
Now I have this structure decoded from my secret.key:
{
  "encryptedPayload": {
    "data": [ /* some data */],
    "type": "Buffer"},
  "isEmptyPassphrase": false,
  "passphraseHash": {
    "data": [/* some data */],
    "type": "Buffer"},
  "walletId": "...some HEX..."}

What can I do next? Can I test some passwords against the password hash? Can I somehow get the recovery phrase? Or anything else to do with that data?

Note: there's now a pure typescript implementation of the extract-wallet tool above:
input-output-hk/daedalus#2308
This should make it possible to restore the recovery feature in Daedalus and unlock those who haven't managed to go with the command-line way.

Wonderful!
Now I have this structure decoded from my secret.key:
{
  "encryptedPayload": {
    "data": [ /* some data */],
    "type": "Buffer"},
  "isEmptyPassphrase": false,
  "passphraseHash": {
    "data": [/* some data */],
    "type": "Buffer"},
  "walletId": "...some HEX..."}

What can I do next? Can I test some passwords against the password hash? Can I somehow get the recovery phrase? Or anything else to do with that data?

@mprymek the best you can do now is to use these inputs to feed into the wallet server via:
https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/postByronWallet

This will restore your wallet, and you'll be able to make a payment from it provided you remember the encryption passphrase.

@mprymek the best you can do now is to use these inputs to feed into the wallet server via:
https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/postByronWallet

This will restore your wallet, and you'll be able to make a payment from it provided you remember the encryption passphrase.

Can I test some passwords against the password hash?
You could, although it's not straightfroward. The password hash is using a scrypt algorithm, ran on top of the a blake2b_256 hash of your passphrase, serialized as CBOR.

Can I somehow get the recovery phrase?
No. Never. There's a one way transformation from the recovery phrase to the wallet root private key. What you have in the keystore is the (encrypted) root private key; there's no way back to the recovery phrase.

Can I test some passwords against the password hash?
You could, although it's not straightfroward. The password hash is using a scrypt algorithm, ran on top of the a blake2b_256 hash of your passphrase, serialized as CBOR.

Can I somehow get the recovery phrase?
No. Never. There's a one way transformation from the recovery phrase to the wallet root private key. What you have in the keystore is the (encrypted) root private key; there's no way back to the recovery phrase.

@mprymek the best you can do now is to use these inputs to feed into the wallet server via:
https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/postByronWallet
This will restore your wallet, and you'll be able to make a payment from it provided you remember the encryption passphrase.

I'm sorry, I don't understand this. There's a required property mnemonic_sentence on this endpoint. I don't have it. How can I use this endpoint?! Everything I have is encryptedPayload, passphraseHash and walletId. None of them is used by this endpoint.

You could, although it's not straightfroward. The password hash is using a scrypt algorithm, ran on top of the a blake2b_256 hash of your passphrase, serialized as CBOR.

Could you please post a function which will accept a passphraseHash and a password and return true if matched, false otherwise?

@mprymek the best you can do now is to use these inputs to feed into the wallet server via:
https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/postByronWallet
This will restore your wallet, and you'll be able to make a payment from it provided you remember the encryption passphrase.

I'm sorry, I don't understand this. There's a required property mnemonic_sentence on this endpoint. I don't have it. How can I use this endpoint?! Everything I have is encryptedPayload, passphraseHash and walletId. None of them is used by this endpoint.

You could, although it's not straightfroward. The password hash is using a scrypt algorithm, ran on top of the a blake2b_256 hash of your passphrase, serialized as CBOR.

Could you please post a function which will accept a passphraseHash and a password and return true if matched, false otherwise?

@mprymek this endpoints accepts 6 different kind of input payloads. See the screenshot I've shared, you need the one labelled "random (from xprv)" which doesn't require a mnemonic sentence, the documentation has tabs you can click on.

Could you please post a function which will accept a passphraseHash and a password and return true if matched, false otherwise?

Not yet, but I'll see if I find time. In the meantime, you could let the server do it by trying to change the passphrase to something else. If the old passphrase doesn't match, the request will fail.

@mprymek this endpoints accepts 6 different kind of input payloads. See the screenshot I've shared, you need the one labelled "random (from xprv)" which doesn't require a mnemonic sentence, the documentation has tabs you can click on.

Could you please post a function which will accept a passphraseHash and a password and return true if matched, false otherwise?

Not yet, but I'll see if I find time. In the meantime, you could let the server do it by trying to change the passphrase to something else. If the old passphrase doesn't match, the request will fail.

@mprymek this endpoints accepts 6 different kind of input payloads. See the screenshot I've shared, you need the one labelled "random (from xprv)" which doesn't require a mnemonic sentence, the documentation has tabs you can click on.

Ah, ok, my bad. What should I feed to encrypted_root_private_key? Whole encryptedPayload converted to hex string?

Not yet, but I'll see if I find time. In the meantime, you could let the server do it by trying to change the passphrase to something else. If the old passphrase doesn't match, the request will fail.

Ok, thanks!

@mprymek this endpoints accepts 6 different kind of input payloads. See the screenshot I've shared, you need the one labelled "random (from xprv)" which doesn't require a mnemonic sentence, the documentation has tabs you can click on.

Ah, ok, my bad. What should I feed to encrypted_root_private_key? Whole encryptedPayload converted to hex string?

Not yet, but I'll see if I find time. In the meantime, you could let the server do it by trying to change the passphrase to something else. If the old passphrase doesn't match, the request will fail.

Ok, thanks!

Ah, ok, my bad. What should I feed to encrypted_root_private_key? Whole encryptedPayload converted to hex string?

Exactly.

Ah, ok, my bad. What should I feed to encrypted_root_private_key? Whole encryptedPayload converted to hex string?

Exactly.

It worked! My old wallet successfully imported into the current Daedalus!
Thank you, @KtorZ very very much!

It worked! My old wallet successfully imported into the current Daedalus!
Thank you, @KtorZ very very much!

Dear @piotr-iohk , dear all,
I am trying to use the Ikar tool to restore my old Daedalus 0.11.2 wallet, but so far with no success:

I have Ikar and my Daedalus running ("Connecting to network..."), When I click on Discovery, it says "Wallet servers discovered: 0"

However, when I click on Connect, I get connected over HTTP (the icon goes green), but I don't know what to do next, the List of Byron wallets is empty...

Thank you very much in advance for your help

Note: there's now a pure typescript implementation of the extract-wallet tool above:
input-output-hk/daedalus#2308
This should make it possible to restore the recovery feature in Daedalus and unlock those who haven't managed to go with the command-line way.

Wonderful!
Now I have this structure decoded from my secret.key:
{
  "encryptedPayload": {
    "data": [ /* some data */],
    "type": "Buffer"},
  "isEmptyPassphrase": false,
  "passphraseHash": {
    "data": [/* some data */],
    "type": "Buffer"},
  "walletId": "...some HEX..."
}

What can I do next? Can I test some passwords against the password hash? Can I somehow get the recovery phrase? Or anything else to do with that data?

Dear @mprymek could you explain how you managed to do that? Many thanks in advance

@chmieleslav I am not familiar with Ikar but this:

looks like a drop-down menu where you may be able to select https as a protocol to run subsequent queries?

Dear @KtorZ , thanks for your quick reply. The https connection / discovery didn't work for me either... I just installed the very last version of Daedalus, but the "import from earlier version " is not implemented... Is there a chance it gets implemented someday?
https://iohk.zendesk.com/hc/en-us/articles/900002473086-Wallet-import-feature-is-currently-disabled
I'm wondering if it WAS available in any earlier version of Daedalus which I could still use now... Otherwise I'll have to wait :(

@chmieleslav as far as I see from the screenshot you shared (https://github.com/input-output-hk/cardano-wallet/issues/2395#issuecomment-774123084) you are trying to connect Ikar to old Daedalus (0.11). That won't work as the underlying cardano-wallet won't even start (I think) on that old version of Daedalus.
The steps I have described in https://github.com/input-output-hk/cardano-wallet/issues/2395#issuecomment-758784374 will work for connecting to new Daedalus where you can import your wallet once you have your old key extracted from old Daedalus.
For extracting the old keys you can use this tool -> https://github.com/input-output-hk/cardano-wallet/issues/2395#issuecomment-759402979 following those steps -> https://github.com/input-output-hk/cardano-wallet/issues/2395#issuecomment-757901705. Unfortunately for this you'll need a Linux machine.

I trying to rename "Wallet-1.0" to "Wallet-1.0-acid" but use "Wallet-1.0" in command line instead, so now the error "There's no acid-state database matching the given path." resolved:
./export-wallets --wallet-db-path /Wallet-1.0 --keyfile /Secrets-1.0/secret.key --mainnet
But now I get the error
export-wallets: Could not parse saved checkpoint due to the following error: Failed reading: safecopy: Cardano.Wallet.Kernel.DB.AcidState.DB: Cannot find getter associated with this version number: Version {unVersion = 2}
Empty call stack

CallStack (from HasCallStack):
  error, called at src/Data/Acid/Local.hs:329:7 in acid-state-0.15.0-KPx3nxg5ffCDH1G6VxHbSk:Data.Acid.Local

I used daedalus in 2018 last time and now I have only Secrets-1.0 and Wallet-1.0 folders backup. Also I remember decrypt pasword.
Anyone can help? Thanks guys.

Dear @devilus how did you solve the "Could not parse saved checkpoint due to the following error: Failed reading: safecopy" error? Thank you in advance

Dear @piotr-iohk , dear @diego76
Could you please help me get  librocksdb.so.6 on my PC? At this point I tried pretty much everything from this thread, including building and installing the latest version of librocksdb from github by myself, but still no success...
My config:
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.5 LTS
Release:        18.04
Codename:       bionic

I get the master branch of rocksdb from github: https://github.com/facebook/rocksdb
In the INSTALL.md file I read:
* make shared_lib will compile librocksdb.so, RocksDB shared library. Compiles shared library in release mode.
So I build it:
root@chmiel:/mnt/c/workspace/rocksdb-master/rocksdb-master# make shared_lib
...
  CC       third-party/folly/folly/synchronization/DistributedMutex.o
  CC       third-party/folly/folly/synchronization/ParkingLot.o
  CC       third-party/folly/folly/synchronization/WaitOptions.o
  GEN      util/build_version.cc
$DEBUG_LEVEL is 0
make: Warning: File 'third-party/folly/folly/synchronization/WaitOptions.cpp.d' has modification time 629 s in the future
  CC       util/build_version.o
  CCLD     librocksdb.so.6.17.0
ln -fs librocksdb.so.6.17.0 librocksdb.so.6.17
ln -fs librocksdb.so.6.17.0 librocksdb.so.6
ln -fs librocksdb.so.6.17.0 librocksdb.so
make: warning:  Clock skew detected.  Your build may be incomplete.

There is a "clock skew" warning, but I install:
root@chmiel:/mnt/c/workspace/rocksdb-master/rocksdb-master# sudo make install
$DEBUG_LEVEL is 0
make: Warning: File 'third-party/folly/folly/synchronization/WaitOptions.cpp.d' has modification time 389 s in the future
echo 'prefix=/usr/local' > rocksdb.pc
echo 'exec_prefix=${prefix}' >> rocksdb.pc
echo 'includedir=${prefix}/include' >> rocksdb.pc
echo 'libdir=/usr/local/lib' >> rocksdb.pc
echo '' >> rocksdb.pc
echo 'Name: rocksdb' >> rocksdb.pc
echo 'Description: An embeddable persistent key-value store for fast storage' >> rocksdb.pc
echo Version: 6.17.0 >> rocksdb.pc
echo 'Libs: -L${libdir}  -ldl -lrocksdb' >> rocksdb.pc
echo 'Libs.private: -lpthread -lrt -ldl' >> rocksdb.pc
echo 'Cflags: -I${includedir} -std=c++11  -faligned-new -DHAVE_ALIGNED_NEW -DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX  -DOS_LINUX -fno-builtin-memcmp -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_BACKTRACE -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DROCKSDB_AUXV_GETAUXVAL_PRESENT -march=native   -DHAVE_SSE42  -DHAVE_PCLMUL  -DHAVE_AVX2  -DHAVE_BMI  -DHAVE_LZCNT -DHAVE_UINT128_EXTENSION -DROCKSDB_SUPPORT_THREAD_LOCAL  -isystem third-party/gtest-1.8.1/fused-src -isystem ./third-party/folly' >> rocksdb.pc
install -d /usr/local/lib
install -d /usr/local/lib/pkgconfig
for header_dir in `find "include/rocksdb" -type d`; do \
        install -d //usr/local/$header_dir; \
done
for header in `find "include/rocksdb" -type f -name *.h`; do \
        install -C -m 644 $header //usr/local/$header; \
done
install -C -m 644 rocksdb.pc /usr/local/lib/pkgconfig/rocksdb.pc
  AR       librocksdb.a
/usr/bin/ar: creating librocksdb.a
install -d /usr/local/lib
install -C -m 755 librocksdb.a /usr/local/lib
[ -e librocksdb.so.6.17.0 ] && make install-shared || :
make: warning:  Clock skew detected.  Your build may be incomplete.

But then, when I check the version of ibrocksdb-dev, it still says 5.8.8...:
root@chmiel:/mnt/c/workspace/rocksdb-master/rocksdb-master# dpkg -l | grep librocksdb-dev
ii  librocksdb-dev                 5.8.8-1                             amd64        persistent Key-Value Store for Flash and RAM Storage (development)

And still the same error here:
root@chmiel:/mnt/c/Users/Piotr/AppData/Roaming/Daedalus# ./export-wallets --mainnet --wallet-db-path Wallet-1.0 --keyfile Secrets-1.0/secret.key
./export-wallets: error while loading shared libraries: librocksdb.so.6: cannot open shared object file: No such file or directory
root@chmiel:/mnt/c/Users/Piotr/AppData/Roaming/Daedalus#

Thank you very much in advance for your help.
PS. Another idea I tried was to symlink so.5.8.8 to so.6 version of this lib.
sudo ln -sf /usr/lib/librocksdb.so.5.8.8 /usr/lib/librocksdb.so.6
Which gives a strange error like this (@devilus had it too, any help will be much appreciated):
export-wallets: Could not parse saved checkpoint due to the following error: Failed reading: safecopy: Cardano.Wallet.Kernel.DB.AcidState.DB: Cannot find getter associated with this version number: Version {unVersion = 2}
Empty call stack

CallStack (from HasCallStack):
  error, called at src/Data/Acid/Local.hs:329:7 in acid-state-0.15.0-KPx3nxg5ffCDH1G6VxHbSk:Data.Acid.Local

I just realized that I was missing export (sorry...!)
root@chmiel:~# sudo ldconfig -v
/usr/local/lib:
librocksdb.so.6.17 -> librocksdb.so.6.17.0
/usr/lib:
librocksdb.so.5.8 -> librocksdb.so.5.8.8
With the following command:
root@chmiel:~# export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib I moved forward, but I have a new error...:
root@chmiel:/mnt/c/Users/Piotr/AppData/Roaming/Daedalus# ./export-wallets --mainnet --wallet-db-path Wallet-1.0 --keyfile Secrets-1.0/secret.key
./export-wallets: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by ./export-wallets)
./export-wallets: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by ./export-wallets)

But my libc6 is already up to date:
root@chmiel:~# sudo apt-get install libc6
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6 is already the newest version (2.27-3ubuntu1.4).
libc6 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Should I build GLIBC_2.28 and GLIBC_2.29 from source as well...?

@chmieleslav note that it now exists a pure TypeScript version of that keystore exporter. See the following pull request:
https://github.com/input-output-hk/daedalus/pull/2308
Thus, provided that you have node and npm installed, you could do as follows:
$ wget -O- https://github.com/input-output-hk/daedalus/archive/a82994e4fcf6cdc9551a46216fea8ba7eb571e33.zip | bsdtar xf - --include='*restore-keystore*'
$ cd daedalus-a82994e4fcf6cdc9551a46216fea8ba7eb571e33/restore-keystore
$ npm install && chmod +x restore-keystore.ts

OS
Command

Linux
./restore-keystore.ts ~/.local/share/Daedalus/mainnet/Secrets/secret.key

Mac OS
./restore-keystore.ts ~/AppData/Roaming/Daedalus/Secrets-1.0/secret.key

This worked like a charm, thank you very very much. Now I have:
[
    {
        "name": "ad9fde4f0bd786be007baaa0f367c69881b01764",
        "encrypted_root_private_key": "___mykey___",
        "passphrase_hash": "___myhash___",
        "is_empty_passphrase": false
    }
]

Next step: ikar...

I was able to restore my wallet from my old state directory, so big thanks to everyone on this thread. However, that was only half the battle for me in regaining control of my ADA as I do not have my seed phrase (which is, admittedly irresponsible and entirely my fault given the warnings in Daedalus) and I am unable to recall my spending password.
Is there any method to decrypt/extract/recover the existing spending password or otherwise bypass the spending password to allow me to move funds out of the old wallet? Thanks!

Is there any method to decrypt/extract/recover the existing spending password or otherwise bypass the spending password to allow me to move funds out of the old wallet?

No. The seed is encrypted with strong encryption. It'd take you more than a lifetime to brute force it. So, best you can do is to try passphrases you can think of. Again and again :/...

The method worked perfectly well for me: https://github.com/input-output-hk/cardano-wallet/issues/2395#issuecomment-775014725
I am a windows user. I have used the virtualbox with Ubuntu 20.04 and installed npm and node:
https://www.geeksforgeeks.org/installation-of-node-js-on-linux/
Copied the secrets dir and run the restore-keystore tool.
Ikar worked perfectly well to import wallet back to daedalus as described. Fortunately I got the spending pass...
Thank you for this thread!

Is there any method to decrypt/extract/recover the existing spending password or otherwise bypass the spending password to allow me to move funds out of the old wallet?

No. The seed is encrypted with strong encryption. It'd take you more than a lifetime to brute force it. So, best you can do is to try passphrases you can think of. Again and again :/...

Thanks for the reply. Unfortunately for me, I used my password manager to generate a secure spending password and then somehow failed to save it.
To come at it from a different angle, is there a way to repeatedly retry/check the spending password without manual intervention such that I could use a password cracking program to try to crack the spending password? I'm fairly certain I know the number of characters in the spending password, but that's about all I have to go on.
Thanks again for your help. I know this isn't really a Cardano/Daedalus issue and was caused entirely by user error, so I really appreciate any insight you (or anyone else here) might be able provide.

@strangedesign11 such that I could use a password cracking program to try to crack the spending password

I am really sorry but, If this was possible we would have a major vulnerability problem. Things is, with the current encryption algorithm and parameters, each verification takes around 50ms on a high-end CPU. If you've generated your passphrase using a passphrase manager, then it's likely a quite secure passphrase, with quite many characters. The encryption is resistant to rainbow tables and dictionary attacks, so even with a passphrase of only 6 characters, it'd take you a few hundred years to brute-force it. Even with a modern GPU, for a long-enough passphrase it would just be unfeasible :/

Hi KtorZ, I tried to restrore my wallet using Daedalus Flight 3.3.0 using my secret.key but i got below error message. Is my secret.key corrupt or won't work with Daedalus Flight 3.3.0?

@michael8359 Sounds like your secret.key is empty or corrupted indeed.

@KtorZ No way for me to recover my wallet?

@michael8359 I am afraid not. For any help with Daedalus however, please contact the technical support desk or, reach out on https://github.com/input-output-hk/daedalus/issues/1234.
Incidentally, one of the last comment on that thread recommend to make sure to close the old Daedalus before attempting to restore from the secret.key file. Make sure it's the case :+1:
Closing this issue now since Daedalus 3.3.0 now bring back the wallet recovery feature. Thanks all for your patience :pray:

@KtorZ or anyone I have used the virtualbox with Ubuntu 20.04 and installed npm and node. Copied the secrets dir and run the restore-keystore tool. I ran the restore-keystore tool as described above in Ubuntu Terminal? I get the below error. What am I doing wrong? Thanks.
(node:4030) UnhandledPromiseRejectionWarning: Error: Additional info not implemented: 30
    at Decoder._parse (/home/cmendez305/daedalus-a82994e4fcf6cdc9551a46216fea8ba7eb571e33/restore-keystore/node_modules/cbor/lib/decoder.js:455:17)
    at _parse.next ()
    at Decoder._transform (/home/cmendez305/daedalus-a82994e4fcf6cdc9551a46216fea8ba7eb571e33/restore-keystore/node_modules/cbor/vendor/binary-parse-stream/index.js:45:29)
    at Decoder.Transform._read (internal/streams/transform.js:205:10)
    at Decoder.Transform._write (internal/streams/transform.js:193:12)
    at writeOrBuffer (internal/streams/writable.js:358:12)
    at Decoder.Writable.write (internal/streams/writable.js:303:10)
    at NoFilter.ondata (internal/streams/readable.js:719:22)
    at NoFilter.emit (events.js:315:20)
    at NoFilter.EventEmitter.emit (domain.js:467:12)
(Use node --trace-warnings ... to show where the warning was created)
(node:4030) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:4030) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

@NeedHelp305 the feature of importing old wallet from state directory or secret.key is now available directly in Daedalus. Have you tried that? (Add wallet -> Import)

@strangedesign11 such that I could use a password cracking program to try to crack the spending password

I am really sorry but, If this was possible we would have a major vulnerability problem. Things is, with the current encryption algorithm and parameters, each verification takes around 50ms on a high-end CPU. If you've generated your passphrase using a passphrase manager, then it's likely a quite secure passphrase, with quite many characters. The encryption is resistant to rainbow tables and dictionary attacks, so even with a passphrase of only 6 characters, it'd take you a few hundred years to brute-force it. Even with a modern GPU, for a long-enough passphrase it would just be unfeasible :/

Excuse me, Can you explain about algorithm of passphare ? I don't see any document said about it.

@KtorZ
Hi KtorZ. I have a secret.key which is set no spending password. Is it possible to get unencrypted private key(192 character) by export-wallets?
I would like to import to yoroi.

@stive131 > @KtorZ Hi KtorZ. I have a secret.key which is set no spending password. Is it possible to get unencrypted private key(192 character) by export-wallets? I would like to import to yoroi.
Hey! currently dealing with the same issue. I've got a fair bit of info on solutions, can possibly point you in the right direction of troubleshooting on your own.
You can not decrypt your secret.key- It is a one way encryption only which only works with Daedalus. There is no function you can call to retrieve it.
Are you working with a shelley or byron wallet? Do you know your mnemonics (you can use these in Yoroi). Are you currently using daedalus and what is your issue there? Do you know the error code?

@gitstar2022
Thank you for your reply. Please help me.
I lost my mnemonic and only have secret.key.
I installed Daedalus4.8 and restored the wallet from secret.key by the import function, but I cannot send money due to an error.
Daedalus just says "An error occurred" when I press the send button.

@stive131 when was your key file generated. is this a shelley wallet or byron?
do you know what the error code is? how many UXTOW are available and when was your last incoming or outgoing transaction. have you verified your balance on the blockchain?

@gitstar2022

when was your key file generated. is this a shelley wallet or byron?
⇨It is byron（Daedalus0.11） in about 2017.

do you know what the error code is?
⇨I don't know if it's an error code, but the following log was output to Daedalus.json.

{"at":"2022-02-23T16:07:20.302Z","env":"mainnet:Windows:10.0.19042","ns":["daedalus","v4.8.0","*mainnet*"],"data":{"error":{"code":"wrong_encryption_passphrase","message":"The given encryption passphrase doesn't match the one I use to encrypt the root private key of the given wallet: xxx(mask)"}},"app":["daedalus"],"msg":"AdaApi::createTransaction error","pid":"","sev":"error","thread":""}

{"at":"2022-02-23T16:07:26.052Z","env":"mainnet:Windows:10.0.19042","ns":["daedalus","v4.8.0","*mainnet*"],"data":{"error":{"code":"created_invalid_transaction","message":"The submitted transaction was rejected by the local node. Here's an error message that may help with debugging: TxValidationErrorInMode (ShelleyTxValidationError ShelleyBasedEraAlonzo (ApplyTxError [UtxowFailure (WrappedShelleyEraFailure (MissingVKeyWitnessesUTXOW (WitHashes (fromList [KeyHash \"3cafa83dde005de730fa93c6078d00682ad8382038bd1eefc3492d41\",KeyHash \"ffea5f425e909556d3190f446ba1058609d2f459fe442932b93d2232\"]))))])) AlonzoEraInCardanoMode"}},"app":["daedalus"],"msg":"AdaApi::createTransaction error","pid":"","sev":"error","thread":""}

how many UXTOW are available
⇨Sorry, I don't know how to check.
when was your last incoming or outgoing transaction.
⇨2022/1/22?
https://explorer.cardano.org/ja/transaction?id=17672d3dc99b2159d9b52d7ba76039b86dee4899e7903117f558867c5d08df0c
have you verified your balance on the blockchain?
⇨Sorry, I don't know how to check. but Daedalu4.8(shelly) shows my ADA balance.

@stive131

{"at":"2022-02-23T16:07:26.052Z","env":"mainnet:Windows:10.0.19042","ns":["daedalus","v4.8.0","*mainnet*"],"data":{"error":{"code":"created_invalid_transaction","message":"The submitted transaction was rejected by the local node. Here's an error message that may help with debugging: TxValidationErrorInMode (ShelleyTxValidationError ShelleyBasedEraAlonzo (ApplyTxError [UtxowFailure (WrappedShelleyEraFailure (MissingVKeyWitnessesUTXOW (WitHashes (fromList [KeyHash \"3cafa83dde005de730fa93c6078d00682ad8382038bd1eefc3492d41\",KeyHash \"ffea5f425e909556d3190f446ba1058609d2f459fe442932b93d2232\"]))))])) AlonzoEraInCardanoMode"}},"app":["daedalus"],"msg":"AdaApi::createTransaction error","pid":"","sev":"error","thread":""}

solved the same, contact me

@quangthienit1994 if reasonable to go over password dictionaries, contact me
check profile for email, in the message mention github thread and username

@fukur0kuju I have secret.key file but when i did import key and come out with error “wallet not found ”. Would you able to help me?

@fukur0kuju I just reached out to you, I have a similar issue, would really appreciate any help you can provide!

@michael8359
your secret.key looks to be empty, check file size, need to be more than 203 bytes
if not empty, stop daedalus and remove logs > start daedalus > import secret.key > download logs by menu help - download logs > send logs to me
check profile for email, in the message mention github thread and username

@stive131
check my profile for email, in the message mention github thread and username

had some requests for the same very specific issue from this thread, even had duplicate requests from the same username
added my previous negotiation, described 90% of what will happen, use it, no need to spend time

@stive131
check email
if email was temp one, contact me again
in your interests

@stive131 @michael8359 @MSC-InfoTech do not send your secret.key file to anyone. They will wipe your account. This person above is a scammer, they will ask for your secret.key or money upfront.  They will wipe your account. This person above is a scammer, they will ask for your secret.key or money upfront. Stay away!

i believe michael8359 now have the full answer, 1 year ago he was not sure if wallet corrupted or empty, answer was not full
now he know it is empty since he checked file size i assume
no further action needed here, i not wait mail from him

do not send your secret.key file to anyone, agree
and i do not ask

i solved the issue above for my wallet, then helped 4 other hodlers with their wallets, all deep web
not so far ago started find other hodlers outside deep using stacktrace, resulted in this thread
today i googled cached surprise
stive131 and you gitstar2022 share same wallet based on comments you removed from https://github.com/input-output-hk/cardano-wallet/issues/3142
internet remember everything: cached version of thread
you will not get it lame, but iohk team will
will save the mhtml version to my repo too
you also changed your username from courtwebb same time
i think both accounts stive131 and gitstar2022 are yours, will try prove in couple days, you started playing with wrong person

MSC-InfoTech was not in this thread at all, but appeared right after my comment, so it relates to someone in this thread too
he is regular scam based on our convo, did lame approaches to get free work

most of the secret.key holders without recovery phrase are scams unfortunately, you take payment from them before doing the work, this is how it works
will share later my convo with MSC-InfoTech, will be example of how they try to have free work, pretty usual convo
main part: overall i received 5 emails for this specific hodlers issue from this thread, 2 from stive131, do conclusions

From your own repository- you asking someone to send secret key.
#1 - I removed my entire error code due to the fact that I didn’t know if it contained sensitive information and was concerned when I saw someone post the same code above here. Have been dealing with Iohk on this for months - they’re aware of everything and of whom the owner of this wallet is.
I have nothing to do with the Stive131 account.  They’re using the error code I posted which is why I removed it. You’ll see my post predates their join date on here even.
And you’ve appeared to just threatened me, which really isn’t needed. Just trying to protect people out here on the internet and I was alarmed that you created an account out of nowhere and started asking everyone to help. then I saw your repository asking for a secret.key file. No need to come at me or threaten me for trying to look out for others. If I’m wrong and you’re a good human, then I apologize buddy.

@gitstar2022 lets continue

From your own repository- you asking someone to send secret key.

poor try i think, read carefully again: client asked to release big amount > we discussed > client leave for some time > client returned and suggest release small wallet first
i assumed it is a check and client has no small wallet 90%, but not want to send hardcoded solution anyway to avoid small price try of rev eng
so i suggest to release small on my side and continue with big, i suggest to count small one as part of big one's fee too

Have been dealing with Iohk on this for months - they’re aware of everything and of whom the owner of this wallet is.

nobody aware of owner of crypto, i sure you not the owner, will share info in next comment

I removed my entire error code due to the fact that I didn’t know if it contained sensitive information ...
I have nothing to do with the Stive131 account. They’re using the error code I posted which is why I removed it. You’ll see my post predates their join date on here even.

no sensitive information in logs
you know nothing leaked, just imitated poor action
stive131 is your account too, info in next comment

pushed convo with MSC-InfoTech to my repo
also pushed mail from developer scammed by gitstar2022, find here
puzzle solved: stive131, gitstar2022 and MSC-InfoTech all same person
stive131 and gitstar2022 same person for 99% based on scammed dev thoughts
i add my 1% here since stive131 not contacted anymore, strange for big wallet owner after realizing someone else owned same wallet

summary: 3 accounts stive131, gitstar2022 and MSC-InfoTech all same person, and this person already scammed few devs

DdzFFzCqrhsmiiQJ9QCqgRz6jisU688V2mSnJQ2R8Hwz2gS6ezHoawJkiE9VhkHNCHCjz2AZ4RJ9cPy2Raq9RkGYacfsm7H4owtfQvo2
DdzFFzCqrhtDG8CnukNLfmDUyixQNgn7a1sEMunMfVXuqCnq7x7KkwyCvK88VSe9UBWxVvWUzYUD2cXYdWLkqn1fQPFqRCgbfWrA1uBP
to be googled, check profile for mail

@khughes5Eu tenho uma ferramenta que pode ser útil para o seu caso de uso, mas você precisará ter o ruby instalado em seu sistema. Para Windows Ruby+Devkit 2.7.2-1 (x64)de https://rubyinstaller.org/downloads/ deve estar OK.
A ferramenta ( https://github.com/piotr-iohk/ikar ) é um aplicativo da web lightweit sobre cardano-wallet e pode ser facilmente conectado com o underaling cardano-walletde sua instância Daedalus.

Para iniciar a ferramenta (depois de ter ruby em seu sistema):

git clone https://github.com/piotr-iohk/ikar.git
cd ikar
bundle config set without 'development test'
bundle install
ruby app.rb

Em seguida, aponte seu navegador para http://localhost:4444/ e clique no botão "Descobrir". Se você tiver o Daedalus em execução, deverá colocá-lo na lista de servidores cardano-wallet descobertos, assim:

Clique em "Conectar"
Em seguida, vá para "Carteiras Byron" -> "Criar aleatório (de xprv)"
Cole a saída do export-walletscomando no formulário abaixo e clique em "Criar"

É isso. Você deve ter sua carteira agora visível no Daedalus e, uma vez restaurada, poderá migrar seus fundos para a carteira Shelley a partir daí.


Add Cirrus CI support

Purpose
Adds support for Cirrus CI.
Notable Changes
Adds a new CI provider
Tests and Risks?
Should be.
Update the SHA1SUM file
Also make sure that you update the sha1 hash by running sha1sum codecov and updating the SHA1SUM file with the output
Change the codecov to - in the file before commiting so it can be compared against the server file

Duplicate of #127


Improve jazzy docs for Kitura-NIO

Note: Most of the documentation comments are copied as-is from Kitura-net.

Codecov Report

Merging #177 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master     #177   +/-   ##
=======================================
  Coverage   68.35%   68.35%
=======================================
  Files          20       20
  Lines        1324     1324
=======================================
  Hits          905      905
  Misses        419      419

Flag
Coverage Δ

#KituraNet
68.35% <100%> (ø)
:arrow_up:

Impacted Files
Coverage Δ

Sources/KituraNet/URLParser.swift
75% <ø> (ø)
:arrow_up:

Sources/KituraNet/HTTP/HTTPServer.swift
54.31% <ø> (ø)
:arrow_up:

Sources/KituraNet/ListenerGroup.swift
50% <ø> (ø)
:arrow_up:

Sources/KituraNet/HTTP/HTTP.swift
95.83% <ø> (ø)
:arrow_up:

Sources/KituraNet/HTTP/HTTPServerResponse.swift
53.5% <ø> (ø)
:arrow_up:

Sources/KituraNet/HTTP/HTTPServerRequest.swift
74.25% <ø> (ø)
:arrow_up:

Sources/KituraNet/SPIUtils.swift
88.57% <ø> (ø)
:arrow_up:

Sources/KituraNet/ClientRequest.swift
74.92% <ø> (ø)
:arrow_up:

Sources/KituraNet/ConnectionUpgrader.swift
25% <ø> (ø)
:arrow_up:

Sources/KituraNet/BufferList.swift
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e7b90f2...996c691. Read the comment docs.


Use monorepo's rust toolchain for twoxtx test

The cargo-test-sbf-twoxtx CI job seems broken since the monorepo landed workspace inheritance.
SPL is on v1.60, and workspace inheritance was added in v1.64. So the twotx job probably needs to inherit the monorepo's rust toolchain and use the monorepo's cargo-test-sbf

Curious. This works for me locally when I run patch.crates-io.sh, the toolchain file cp, and cargo-test-bpf all pointing at my existing monorepo (tip of master, with twotx.patch)

oh ive been running into the workspace issue today too (#4064 adds the toolchain file to patch.crates-io.sh for this very reason hehe)
it may be that the ci binaries are not tracking the required solana version? on my local machine i got bit by this because cargo --version was dictated by rust-toolchain.toml (1.16 -> 1.67) but cargo build-sbf --version was dictated by whichever version of the solana binaries i had happened to have installed (1.14 -> 1.62)

Thanks, @2501babe . @samkim-crypto and I figured we need to use the cargo-test-bpf from the twoxtx monorepo, and also add that monorepo to the SPL workspace exclusions. I'm just working on coding it up properly.
I'll remove the rust-toolchain.toml copy, though, since you're handling that within patch.crates-io.sh

Sorry for the premature ping, reviewers. However, @joncinque , do you have any clever suggestions?
The issue is that the program-test-2022 build script uses cargo build-sbf, but needs to be using token/twoxtx-solana/cargo-build-bpf instead. Should we just build the 2 necessary programs manually for the twoxtx CI job?


Test that running plugins works

There are no build time errors but for good measure add a few to test.

the external plugins still present a problem. it would take reworking the server side scripts but the working idea I have is to change each script to just return a dictionary and then enumerate through each server side script and add to the checkin results.


Store professor data in browser storage

Save the professor data in browser storage.
This data should be updated when new professor information is retrieved.
It should be used as a cache in order to avoid network requests.

Hey Quinton, I'd like to give this issue a shot. Quick question, what data about each professor needs to be stored?


[DOC-2728] CodeCov tutorial

DOC-2728: Added a tutorial for CodeCov.

Diff: https://github.com/harness/developer-hub/pull/1177/files#diff-24f9c8c99713131ac11f71b17f8162c4e6ff1af8bfe67819320f3931540c0e55
Preview: https://6427463d4409541cb0c8e254--harness-developer.netlify.app/tutorials/build-code/ci-tutorial-codecov-test

Refresh Run a script in a Build stage

Diff: https://github.com/harness/developer-hub/pull/1177/files#diff-7c5af8c0c0b9abfedfa43bc71d4cee7da5e61289aa06826c154d2c12125c456d
Preview: https://6427463d4409541cb0c8e254--harness-developer.netlify.app/docs/continuous-integration/use-ci/run-ci-scripts/run-a-script-in-a-ci-stage

CI Run step settings - Container Registry/Image field requirements by build infra

Diff: https://github.com/harness/developer-hub/pull/1177/files#diff-265e13dfbbd707a144211ba6cd480b9af9e7197ed53aaa265d9b2a1771d5968e
Preview: https://6427463d4409541cb0c8e254--harness-developer.netlify.app/docs/continuous-integration/ci-technical-reference/run-step-settings

Other changes:

Fixed some delegate links.
Added a link to the CodeCov tutorial from the CI reference docs.
Updated titles of a couple topics & the links referencing those titles.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

@hemanthmantri Could you please review the tutorial again. I made changes based on your comments.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app


Rewrite GmailToCorrespondence to eliminate sensitive code

Use user properties to store username/API Token, script properties to store environment-specific data.

Completed with initial commit.


trezord: 2.0.27 -> 2.0.28

Motivation for this change
trezord: 2.0.27 -> 2.0.28
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@GrahamcOfBorg test trezord


Add reactive lightning command

Merged with rgbgradientv2, new command syntax is - rivalcfg -c="reactive(duration=1001; initialcolor=#00ff00, #00ff00; activecolor=#ff0000)"

Hi, so im going to redo this pr, but first as things have changed since my initial comment do you still want this command inside rgbgradientv2.py or merge it with reactive_rgbcolor.py which was not present before.

Are the color configuration and reactive color configured in the same packet or in two different packets?


load openldap faild

Hello!
When I used this image to connect to openldap, there was a problem. I kept saying that the authentication failed. I tried many methods. The following is the startup file and the error is reported.
docker run \            --name openvpn \            --detach=true \            -p 1194:1194/tcp \            -e OVPN_PROTOCOL="tcp" \            -e OVPN_NAT="false" \            -e OVPN_SERVER_CN="openvpn.xxx.com" \            -e OVPN_ROUTES="<IP_ADDRESS> <IP_ADDRESS>" \            -e LDAP_URI="ldap://<IP_ADDRESS>" \            -e LDAP_BASE_DN="dc=xxx,dc=com" \            --cap-add=NET_ADMIN \            -e LDAP_BIND_USER_DN="cn=admin,dc=xxx,dc=com" \            -e LDAP_BIND_USER_PASS="123456" \            -v /etc/localtime:/etc/localtime:ro \            -v /data/openvpn:/etc/openvpn \            wheelybird/openvpn-ldap-otp:v1.2
Sat May 16 17:10:13 2020 <IP_ADDRESS>:62978 peer info: IV_GUI_VER="net.tunnelblick.tunnelblick_5440_3.8.2beta04__build_5440)"
AUTH-PAM: BACKGROUND: user 'xingzheng' failed to authenticate: User not known to the underlying authentication module
Sat May 16 17:10:13 2020 <IP_ADDRESS>:62978 PLUGIN_CALL: POST /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so/PLUGIN_AUTH_USER_PASS_VERIFY status=1
Sat May 16 17:10:13 2020 <IP_ADDRESS>:62978 PLUGIN_CALL: plugin function PLUGIN_AUTH_USER_PASS_VERIFY failed with status 1: /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so
Sat May 16 17:10:13 2020 <IP_ADDRESS>:62978 TLS Auth Error: Auth Username/Password verification failed for peer
Sat May 16 17:10:13 2020 <IP_ADDRESS>:62978 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA
Sat May 16 17:10:13 2020 <IP_ADDRESS>:62978 Peer Connection Initiated with [AF_INET]<IP_ADDRESS>:62978
Sat May 16 17:10:15 2020 <IP_ADDRESS>:62978 PUSH: Received control message: 'PUSH_REQUEST'
Sat May 16 17:10:15 2020 <IP_ADDRESS>:62978 Delayed exit in 5 seconds
Sat May 16 17:10:15 2020 <IP_ADDRESS>:62978 SENT CONTROL [UNDEF]: 'AUTH_FAILED' (status=1)
Sat May 16 17:10:15 2020 <IP_ADDRESS>:62978 Connection reset, restarting [0]
Sat May 16 17:10:15 2020 <IP_ADDRESS>:62978 SIGUSR1[soft,connection-reset] received, client-instance restarting

Hi.  There's not much information in those logs - it just says that the user wasn't authenticated.  Take a look at your LDAP logs to see what the VPN container's trying to authenticate as.
You can also try getting a shell in the VPN container (e.g. docker exec -ti openvpn bash) and using pamtester to test authenticating:  yum install pamtester.
Now kill the nslcd process (kill 39 or whatever the process ID is) and run it in debug mode nslcd -d &.
Now run pamtester -v openvpn [username] authenticate.  That should give you some indication of why your user isn't authenticating.


Implemented SOD-123

#25

we cant use smd chip leads for this one, or we have to modify them to be really short for this particular chip thpe


Managed Apps Upgrades (Month from 01. February 2021)

Aim to focus on 30DU and get them done within 2 days.
NGINX Ingress Controller @giantswarm/app-squad-nginx
https://github.com/giantswarm/nginx-ingress-controller-app

Link to latest release:
If won't upgrade, why?

[ ] upgrade
[ ] release

External DNS @giantswarm/app-squad-external-dns
https://github.com/giantswarm/external-dns-app

Link to latest release:
If won't upgrade, why?

[ ] upgrade
[ ] release

Cert Manager @giantswarm/app-squad-cert-manager
https://github.com/giantswarm/cert-manager-app

Link to latest release:
If won't upgrade, why?

[ ] upgrade
[ ] release

EFK @giantswarm/app-squad-efk
https://github.com/giantswarm/efk-stack-app

Link to latest release:
If won't upgrade, why?

[ ] upgrade
[ ] release

Kong @giantswarm/app-squad-kong
https://github.com/giantswarm/kong-app

Link to latest release:
If won't upgrade, why?

[ ] upgrade
[ ] release

Prometheus Operator @giantswarm/app-squad-prometheus
https://github.com/giantswarm/prometheus-operator-app

Link to latest release:
If won't upgrade, why?

[ ] upgrade
[ ] release

Loki @giantswarm/app-squad-prometheus  @giantswarm/app-squad-loki
https://github.com/giantswarm/loki-app

Link to latest release:
If won't upgrade, why?

[ ] upgrade
[ ] release

aqua
https://github.com/giantswarm/aqua-app

[ ] upgrade
[ ] release

Link to latest release:
If won't upgrade, why? @jgsqware or @yasn77 we'll skip checking for any upgrades unless you tell us to.

Notes

Team divides the app upgrades amongst ourselves. Please add @ name beside the app
30 Day Upgrade Promise: By default, we upgrade our apps within 30 days of an upstream release.
Engineer can override this default and decide not to upgrade with good reason.

aqua
https://github.com/giantswarm/aqua-app

[ ]  upgrade

[ ]  release

Link to latest release:

If won't upgrade, why? @jgsqware or @yasn77 we'll skip checking for any upgrades unless you tell us to.

Thu, 18. Feb 2021 Aqua meeting w customer and @ced0ps
Customer is waiting for an upgrade to latest chart.

NGINX Ingress Controller @giantswarm/app-squad-nginx
https://github.com/giantswarm/nginx-ingress-controller-app

Link to latest release:

If won't upgrade, why?

[ ]  upgrade

[ ]  release

@QuentinBisson mentioned an issue customer was having is fixed in 0.44.0. slack. Will ask if it can wait end of next week. We have Upgrade Days Feb 23-24. @giantswarm/app-squad-nginx

Prometheus Operator @giantswarm/app-squad-prometheus
https://github.com/giantswarm/prometheus-operator-app

Link to latest release:

If won't upgrade, why?

[ ]  upgrade

[ ]  release

And Quentin is also waiting for this from prev. issue https://github.com/giantswarm/roadmap/issues/252#issuecomment-779120819 (maybe we can close that one and use this instead)

EFK @giantswarm/app-squad-efk
https://github.com/giantswarm/efk-stack-app

Link to latest release:

If won't upgrade, why?

[ ]  upgrade

[ ]  release

Two customers are eager for this. (1) Slack and (2) https://github.com/giantswarm/efk-stack-app/issues/53 and https://github.com/giantswarm/efk-stack-app/issues/52

aqua
https://github.com/giantswarm/aqua-app

[ ]   upgrade
[ ]   release
Link to latest release:
If won't upgrade, why? @jgsqware or @yasn77 we'll skip checking for any upgrades unless you tell us to.

This is issue for Feb. But I just created it so we could have an issue for Aqua.
Thu, 18. Feb 2021 Aqua meeting w customer and @ced0ps
Customer is waiting for an upgrade to latest chart.
Mon, 22. Feb 2021 there was a line in values file that was a string, instead of boolean. They fixed it upstream.

[ ]  Compare our chart to their giant swarm specific branch @ced0ps will take it on tomorrow.

Is this related to https://github.com/giantswarm/adidas/issues/665?

[ ] Customer is waiting for Jaeger.

Is this related to giantswarm/adidas#665?
In part, yes

[x]  Customer is waiting for Jaeger.

thanks @ced0ps !! wow that was fast 🚀  no info in changelog? 😛  https://github.com/giantswarm/jaeger-operator-app/blob/master/CHANGELOG.md#023---2021-02-26

Hehe, that's way It was fast. Completely forgot but only minor changes anyway.

Pinging @giantswarm/app-squad-cert-manager , @giantswarm/app-squad-efk , @giantswarm/app-squad-kong 😀

Tobi --

EFK (for customer)
Aqua
Grafana
Cert Manager
EFK (when upsteram releases)

Kong - Cedric has an open PR.

I think Cert Manager was not upgraded, but I think it can wait for the next upgrade rounds 😅


CASMINST-4758: Remove redundant instruction to set API token from Deploy Final NCN procedure

Summary and Scope
The Deploy Final NCN procedure has a redundant instruction to set an API token, when one was just set two steps earlier. This removes it (but does note that it is required).
Issues and Related PRs
main branch PR forthcoming.
Pull Request Checklist

[X] License file intact
[X] Target branch correct

/backport main


Streamline chunk writing

This helps to avoid allocations in the same way we were already doing
it during reading.
@fabxc
The "fuzz" benchmark doesn't show any significant differences, but in heavy write scenarios (see our MySQL Prometheus), this might actually matter a bit. It's cleaner in any case (consistency between read and write path).

:+1:

:+1: otherwise


How to set initial currentPage for paginated b-table ?

Overview of the problem
Buefy version: 0.5.4
Vuejs version: 2.5.2
OS/Browser: Various
Description
I am trying to sync route param's pageNumber with b-table. e.g. Accessing /rabbithouse/menu?page=20 shows the 20th page of menu data with b-table.
So far, I achieved showing the correct page of data with b-table with backend-pagination and set new route query & update data on page-change event. But the page number of b-pagination inside b-table is always 1 on first load. Even I directly open /rabbithouse/menu?page=1204, the table is correctly showing the 1204th page of data, while the page number showing is 1.
Expected behavior
I think we could expose the currentPage prop with a default value 1 to fix this.

Hey, guys!
And what if I need to change page after some action on js?
Is it possible to do that dynamically?
I've got the similar situation: I can set my page property to 1, force data reloading - see proper results, but paginations still shows an old page (NOT 1).
Tried, didn't help

:current-page.sync="page"

Thanks!


[Feature]

How can I find dimension of a image and and bubble . Also the origin of a mcq block?

take a ruler

@ajshojol22 Without any user interface, this is currently done by a hit and try method.
You can work faster by guessing the percentages for coordinates of the origin by setting the width to a round number like 1000px.
Please use discord for discussing more where other folks can share their methods as well :)


How to skip network call with repeating events in test?

It's common that in a ViewModel I want to test a network call and if it triggers another call.
So when I have something like this:
fun fetchResult() {
 someRepository.fetchResult()
  .compose(schedulerProvider.getSchedulersForSingle())
  .execute {
    copy(
     ...
    )
  }
}

That works in Unit tests:
viewModel?.fetchResult()
viewModel?.someEvent()
withState(viewModel!!) {
	assert(it.someOtherRequest == Uninitialized)
}

However if the call is repeating:
fun fetchResult() {
  withState { state ->
    disposable = Observable.interval(0L, 6L, TimeUnit.SECONDS)
      .flatMapSingle {
        revolutRepository.fetchResult()
          .compose(schedulerProvider.getSchedulersForSingle())
      }
      .compose(schedulerProvider.getSchedulersForObservable())
      .execute {
        copy(
          ...
        )
      }
  }
}

I cannot get past viewModel?.fetchResult() in the test. How can I make it work? I'm not sure if I miss something in MvRx, MvRxTestRule or in RxJava.
MvRxTestRule() is in the companion object of the tests.

Never mind, I moved the call with the interval to the repo and mocked that. That solved the problem.


Re-write INTERNAL_ID as STRUCT

This is missing a bunch of stuff. @ray6080 suggested passing it off to @acquamarin.
Note that this is based off #2571.

Can you do a rebase before i continue reviewing?

Close this for now, as we are refactoring this in separate PRs.


CAMPD subheader and utility nav responsiveness - 508 Issue

Context
Testing complete for 1651, multiple issues found:
There's an extra tab stop after the hamburger menu icon and before the preview data tooltip, not exactly sure what it is but should be removed.
When I expand the hamburger menu, focus should be put on the collapse button and vice versa.
The hamburger menu has no state information. (Aria expanded). Code similar to the Menu button.
When expanded, only the Home link is keyboard accessible, all the expandable/collapsible elements can only be used with a mouse (data, resources, etc.)
The expandable/collapsible elements don't have state information. Code similar to how they are on desktop.

Everything is good except for the last item: The expandable/collapsible elements don't have state information. Code similar to how they are on desktop.. Screen readers do not pick up the state. Think the problem here is that the aria expanded is on the list item instead of the anchor. li class="usa-sidenav__item" aria-expanded="false"
a class="usa-current" tabindex="0">DATA</a

No remaining issues, closing ticket


Feature request - toggle case

I'm porting more C++ code and it would be great to have functions to toggle case.
1 - straight upper to lower and vice-versa
2 - force to lower/upper
3 - snake to camel etc.
I bet this code as out there waiting to be grabbed
just access from edit menu, no need for key shortcuts

yes we have a package for that already that we're using.  I can easily add to edit menu for selected text.

great, thanks!

https://github.com/iancoleman/strcase

done!

Nice, using now.