
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
@aladas-org/cryptocalc
Advanced tools
Purpose
CryptoCalc is a Cryptocurrency wallet generator provided as a standalone non custodial desktop application.
These wallets can be Non Deterministic (Simple Wallet) or Hierarchical Deterministic (BIP32
).
Even though there is already similar tools online, the purpose is to provide these features
locally on your computer (non custodial) in order to reduce the risk of your Private Key / WIF
or seed phrase informations being stolen.
NB: Since its first release CryptoCalc has been downloaded 10205 times on npm (even though there is also bots involved,
our estimation is that there is between 100 and 150 frequent users).
You can support this project by opening issues, provide localization files (see 5.1.17) or even by donating to Aladas, a non profit organization whose primary goal is to protect wild bees.
Features 2.1. Support of HD / Bip32 (multiple wallets)
2.2. Selection of Entropy size
(between 128 and 256 bits)
2.3. Dynamic conversion of between Entropy
and Seed phrase
2.4. File/Save/Open..
operations which allow edition of Wallet informations (saved as a .wits
file, which uses JSON
format)
2.5. Multiple Entropy sources
Entropy
is indeed computed by combining a Salt
(currenly a dynamically generated UUID
) with the value provided by the Entropy source
2.6. Salted Entropy source
100 d6 dices
, Mouse moves
, Images
and Fortune cookies
2.7. QR code generation For Wallet address, Private Key (also WIF if applicable) and Mnemonics
2.8. Customizable options
Options includes Blockchain
, Wallet mode
(eg: Simple / HD) and Entropy size
2.9. List of Word indexes
Because the crucial data in the Seed phrase
is indeed the list of Word indexes
, it is explicitly displayed
and if the language is changed these word indexes are the same.
2.10. Internet connection status Because of the Cold wallet / Non custodial purpose of Cryptocalc, it is not recommended to generate cryptocurrency wallets while being online. The status is displayed on the right of the main horizontal toolbar, it's a red "connected" icon when online and a green "disconnected" icon when offline (the highly recommended way to use Cryptocalc).
2.11. Localization Translations of GUI labels in the user's language (only English anf French translations files provided but this feature allows translations in other languages as well).
2.12. Dynamic links
2.12.1: To the balance of generated wallet in the appropriate Blockchain Explorer
2.12.2: Informations in Coinmarketcap.com
for the wallet's cryptocurrency
2.12.3: Dynamic link to (https://aladas-org.github.io/aladas.github.io/) with the Seed phrase
2.13. An auto-installer (published on SourceForge)
to use it as a .exe
local standalone desktop application (see 3.1.1)
2.14. Supported Cryptocurrencies BTC (Bitcoin), ETH (Ethereum), XRP (Ripple), BNB (Binance Smart Chain), SOL (Solana), DOGE (Dogecoin), TRX (TRON), ADA (Cardano), XLM (Stellar), SUI (Sui), BCH (Bitcoin Cash), AVAX (Avalanche), TON (Toncoin), LTC (Litecoin), ETC (Ethereum Classic), POL (Polygon), VET (VeChain), BSV (Bitcoin SV), DASH (Dash), RVN (Ravencoin), ZEN (Horizen), LUNA (Terra) and FIRO (Firo)
BNB
support is on Binance Smart Chain (in this blockchain BNB
is a BEP-20
token, see reference 5.3.4)LUNA 2.O
(on Terra blockchain) not LUNA Classic
SUI
support was validated with 'Suiet' (Sui wallet), a Chrome extension2.15. Supported Languages
Officially supported in Bip49
:
English, French, Spanish, Italian, Czech, Portuguese, Simplified Chinese, Traditional Chinese, Japanese and Korean.
Non official languages:
Deutsch, Russian, Esperanto, Latin, Greek, Hindi, Gujarati and Bengali.
2.16. Developed in Javascript
with ElectronJS
CryptoCalc uses ElectronJS as well as many modern and popular
Desktop applications (e.g. Visual Studio Code)
Setup
Inno Setup
and following the Howto
provided in the _inno_setup
subfolder (Howto build cryptocalc_setup.txt
)C:\Users\$CURRENT_USER\AppData\Local\Programs\Cryptocalc
$DEFAULT_SETUP_FOLDER\resources\app\_output
cmd
D
then type D:
)md tools
then cd tools
)git clone
followed by the .git
URLgit clone https://github.com/ALADAS-org/cryptocalc.git
cd cryptocalc
npm install
Release notes
0.3.50
Seed phrase
(this is a web page
which is indeed a copy of a companion project (_CryptoShape)Password
with Passphrase
in HD Wallet mode0.3.49
README.md
)0.3.48
Mouse moves
Entropy source :
XOR
operation) each mouse point
(provided by the user) with a random byte (generated with Crypto.getRandomValues()
)0.3.47
0.3.46
D6 dices
0.3.45
Mouse moves
Entropy source:
0.3.15
to 0.3.45
0.3.44
Mouse moves
0.3.43
D6 dices
(e.g. 100 rolls for 256 bits of Entropy)0.3.42
0.3.41
0.3.40
Marketcap
button (after Explore
button) in Wallet Tab Page to show the relevant coinmarketcap URL0.3.39
Math.random
with a more secure for cryptography usage (see secureRandom()
in hex_utils.js
)0.3.38
POL
cryptocurrency (POL) in Simple Wallet, HD Wallet and SWORD Wallet modesSUI
support was validated0.3.37
SUI
cryptocurrency (Sui) in HD Wallet / SWORD Wallet modes0.3.36
ZEN
(Horizen) in the kist of supported cryptocurrencies0.3.35
ZEN
cryptocurrency (Horizen) in Simple Wallet mode0.3.34
ZEC
(ZCASH) is not supported ATM0.3.33
RVN
cryptocurrency (Ravencoin) in HD Wallet / SWORD Wallet modes0.3.32
LUNA
cryptocurrency (Terra, it's LUNA 2.O
not LUNA Classic
) in Simple Wallet mode0.3.31
BSV
cryptocurrency (Bitcoin SV) in HD Wallet / SWORD Wallet modes0.3.30
VET
cryptocurrency (VeChain) in HD Wallet / SWORD Wallet modes0.3.29
ETC
cryptocurrency (Ethereum Classic) in HD Wallet / SWORD Wallet modes0.3.28
0.3.27
induced by incomplete clean after prototyping TON
supportCryptoCalc User Guide
You can launch CryptoCalc either by first installing it with the CryptoCalc Standalone installer (see 2.1)
or by downloading the npm package
(see 3.2) then double clicking on _run.bat
.
$DEFAULT_SETUP_FOLDER\resources\app\_output
: Notice that this folder won't be automatically deleted if you uninstall CryptoCalcBIP39
specification) then in the Shortened seed phrase each mnemonic is represented
only by its 4 first characters (with the first character in Uppercase as a mean to separate mnemonics).NTAG213 NFC
(see 4.2.3).D6 Dices
, Mouse moves
, Image
or Fortunes
D6 Dices
: default source, the number of rolls depends on Entropy size (e.g. 100 rolls for 256 bits)Mouse moves
: entropy bytes are generated when the user moves the mouse pointeImage
:
png
, jpg
or svg
) from you local folders.www/img
folder.www/img/CryptoCurrency
Fortunes
: drawn from a compilation of 12803 Fortune CookiesWallet
tab page)
Derivation Path
used by HD Wallets). So a it's a good fit to
Give it a Try and start creating your Cryptocurrency Wallets with minimum knowledge.Please notice that the
Derivation Path
is nowHardened
by default and mandatory (since0.3.18
). This is for Security purpose (see 5.2.3) TheBIP32
HD wallet tree_ is fully determined by the Entropy (or seed phrase which is equivalent) and an optional Password. The Entropy may be represented by a more human friendly representation: the Mnemonics Sequence which may also be called a seed phrase, Mnemonics or even SRP (Secret Recovery Passphrase).
How to Generate a new wallet with a given Entropy:
Paste a new Entropy (or seed phrase) in theEntropy
wallet tab. Notice that this will hide the Entropy Source and Salt fields (meaningless in this situation).
You can then change either the Account or Address Index fields (the maximum number of digits is 9 so you can input a decimal value between 0 and 999999999 for each field) in the Wallet tab page. This will show a [Refresh] button to recompute the wallet once you have finished. Pushing the [Refresh] button (or hitting either [Return] or [Enter] keys while the cursor is in either Account or Address Index field) will recompute the wallet address (and Private key or WIF) accordingly.
SWORD
is an acronym which means Simple Wallet Over Randomized Deterministic
,
it's an hybrid between Simple Wallet
and HD Wallet
because it hides the Derivation Path
logic
(which contains Account
and Address Index
), thus you don't need to care or understand the principles
of Hierarchical Deterministic wallets, but it allows to generate all the cryptocurrencies provided by HD Wallet
.Cardano
HD wallets, the Account
and Address Index
parameters are not taken
into account by the Wallet Managers which I have tested (namely Guarda
and Yoroi
) because they ask for
the Mnemonics
(Seed phrase
in CryptoCalc). This is why in CryptoCalc, these parameters are hard-coded
to Zero (for Cardano
HD wallets only).Help menu
(Help/Resources/Ian Coleman BIP39
)Refresh
icon, like in the main toolbar).
Important Notice: Once a password is provided, you must use the [Apply] button to recompute the HD hierarchy,
this is the reason why Save is disabled (in the main toolbar and in the 'File' menu) until you click on the [Apply] button.UUID
) to ensure that the Entropy will be different at each Generation even if the Entropy Source
is the same. Thus the Entropy will be unique at each press of [Generate] button.Wallet
tab page. There's also an [Explorer...] button which allows to check
the generated address in the appropriate Blockchain Explorer.Wifi ON
red icon) or not connected (Wifi OFF
green icon)Save
Wallet InformationsFile/Save
(or the Save icon in the main toolbar), you can save the Wallet Informations in a timestamped
subfolder (eg. 2024_10_07_21h-4m-4s-3_BTC_EN
) under _output
folder.
This subfolder contains wallet_info.txt
and a wallet.json
with the informations displayed in Entropy and Wallet tab pages.
png
images) for Address
, Private Key
, Seedphrase
,
Entropy
and WIF
(if applicable).xtras
subfolder where these QR codes are provided
in the svg
format. There is also a Rectangular Micro QR code (rMQR
) of the
Entropy
(Rectangular Micro QR Code, R15x59
or R15x77
version depending on
Entropy size
) and an experimental Ultracode
color QR code of the Entropy
.QRQR
an Android QR Code reader published by Arara on the Google Play Store.Entropy
field of CryptoCalc.Entropy Size
and
Derivation path
(if applicable, don't forget to use the [Refresh] button)
than those used when the wallet was created (these informations
are provided either in the wallet_info.txt
or in wallet_info.wits
).Open
Wallet Informations of a previously saved wallet
.txt
but also as a .wits
file (JSON
format)..wits
file can be opened either with File.Open...
menu item or 'Open...' icon
in the toolbar. It can be also be opened in Cryptocalc.exe
by double clicking on the .wits
(File extension to Application feature): this will launchlc Cryptocalc.exe
(cf. 3.1 for installing
Cryptocalc.exe
with the CryptoCalc Standalone installer) /File.Save As...
which will save the wallet with a different timestamp than the original one.Account
and/or the Address Index
(dont forget to push
the [Refresh] button). Now you can save the new wallet with File.Save As...
and if you didn't change the Entropy
then this new wallet will belong to the same Bip32 HD Wallet Tree
(see A.2) than the original one.Guarda
Guarda
.BIP39
wordlist (see also A.1.1).
You can choose to display these indexes in Decimal or Binary
(in Binary you can check that the computed Checksum bits are added at the end
of the converted Entropy to determine the index of the last word).BIP32
hierarchy that is determined by the
seed phrase (also called the Secret Recovery Passphrase).Tools/Options
)Default Blockchain
, Wallet Mode
and Entropy Size
.
These values are defined in www/config/options.json
file.www/config/defaults/options.json
)l10n
) feature is the translation of
GUI Labels to adapt to the locale (eg. en
).
A locale name can be composed of a base language, country (territory) of use,
and optionnally a codeset (eg. de_CH.UTF-8
).
The locale is provided as part of your machine's environment.
CryptoCalc only uses the 2 letter language part (eg. en
).
Localization is enabled by a JSon file in the www/js/L10n
folder
(eg. gui-msg-en.json
).
Currently only en
and fr
are provided.Guarda
you can import
a wallet generated by CryptoCalc:
BTC
,ETH
,XRP
,ADA
,DOGE
,LTC
,SOL
,AVX
,TRON
,BCH
,DASH
,Firo
BTC
wallets)NTAG213 NFC
with
144 bytes useable capacity. This is enough to store the Shortened Seedphrase,
with a 24 words Shortened Seedphrase
the maximum required capacity is 96 bytes/characters (24*4, cf. 5.1.1)
or even less (as some mnemonics have only three characters).A. Appendix
+ A.1. BIP39
: a Dictionary of 2048 words
BIP39
(BIP
is the acronym of Bitcoin Improvement Proposal) is a specification regarding:
* A.1.1. A Dictionary of 2048 words
The Dictionary contains 2048 English words each with a their unique 4 starting characters
(or 3 if the word is 3 characters long). This dictionary exists also in other languages
(e.g. French, Deutsh, Spanish, Italian_, Portuguese, etc...) but Wallet Managers
(e.g. Guarda, Metamask, Atomic Wallet, etc...) and Hardware Wallets
(eg. Ledger, Trezor, Tangem, etc...) will most probably accept only English words.
* A.1.2. Conversion of seed phrase from and to Entropy
The seed phrase is obtained by drawing words (also called or menemonics) from the dictionary.
Drawing a word is indeed choosing an index between 0 and 2047. This index can be represented
by 11 bits in Binary (because 2^11 = 2048).
* Conversion from Entropy to seed phrase
The Entropy is represented in Binary and divided in 11 bits segements but the entropy
is a multiple of 8 bits (128, 160, 192, 224, 256) there are "missing bits" for choosing
the last word. These "missing bits" are provided by computing the Entropy Checksum.
e.g. For an Entropy Size of 128 bits (converted to a 12 words seed phrase),
132 bits are needed (11 * 12), so the Entropy Checksum provides the missing 4 bits.
* Conversion from seed phrase to Entropy
For each word its index is retrieved from the Dictionary, its value is represented
as a 11 bits segment and a number of bits corresponding to tne Entropy Checksum
are removed at the end of the concatenation of 11 bits segments.
e.g. For a seed phrase of 12 words (converted to a 128 bits Entropy),
132 bits are obtained from the Word Indexes (11 * 12), and because the Entropy Checksum
is 4 bits long then the 4 bits at the end are removed.
* Reference
BIP39 — Mnemonic Generation with detailed explanation
+ A.2. `BIP32`: Hierarchic Deterministic wallets
`BIP32` specifies how to generate wallets with are all derived from the same _Entropy_
or _seed phrase_ (also called the _Secret Recovery Passphrase_).
A _seed phrase_ of only 12 words is enough is most _Wallet Managers_ but it is much more secure to use a 24 words
_seed phrase_ if possible (e.g. _Ledger_ hardware wallet manager).
Example: meaning of each part for `m/44'/60'/0'/0/0'` (a _Hardened Derivation Path_):
* Start at the master key (m)
* Follow the `BIP44` specification (44')
* Derive the key for _Ethereum_ (for which _Coin type_ is 60) (60')
* Access the first account (0')
* Choose the external chain, used for public addresses (0)
* And finally, generate the first address in this sequence (0')
* A.3. References
+ A.3.1. [Understanding Derivation Paths in Cryptocurrency: Easy-To-Follow Guide](https://getcoinplate.com/blog/derivation-paths-guide/#:~:text=A%20derivation%20path%20is%20simply,a%20particular%20branch%20(address))
+ A.3.2. [Hierarchical key generation](https://alexey-shepelev.medium.com/hierarchical-key-generation-fc27560f786)
+ A.3.3. [BIP32 Key Derivation with HD Wallets](https://docs.bsvblockchain.org/guides/sdks/ts/examples/example_hd_wallets)
+ A.3.4. [The evolution of the Binance Smart Chain](https://cointelegraph.com/learn/articles/a-beginners-guide-to-the-bnb-chain-the-evolution-of-the-binance-smart-chain)
FAQs
Cryptocurrency wallet generator
The npm package @aladas-org/cryptocalc receives a total of 237 weekly downloads. As such, @aladas-org/cryptocalc popularity was classified as not popular.
We found that @aladas-org/cryptocalc demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.