Bitcoin Forum
March 29, 2024, 11:32:40 AM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 »  All
  Print  
Author Topic: [ANN] MMGen, a complete Bitcoin command-line online/offline wallet solution  (Read 35546 times)
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
April 11, 2014, 08:01:18 PM
Last edit: November 24, 2016, 03:54:25 AM by mmgen-py
Merited by ABCbits (9), NotATether (5)
 #1

MMGen = Multi-Mode GENerator, a complete online/offline Bitcoin wallet solution for the command line

MMGen is a Bitcoin cold-storage system implemented as a suite of lightweight Python command-line scripts that work together with the reference Bitcoin Core daemon (bitcoind) to create a complete system for storing, tracking, sending and receiving Bitcoins.

The MMGen system is completely self-contained, requiring no external server. No third party will know which addresses you're tracking.

Like all deterministic wallets, MMGen can generate a virtually unlimited number of address/key pairs from a single seed. Since the seed never changes, your wallet needs to be backed up only once.

At the heart of the MMGen system is the seed, the "master key" providing access to all your Bitcoins.  The seed can be stored in five different ways:

  1. as a wallet, encrypted with the crack-resistant scrypt function;
  2. as a one-line unencrypted seed file;
  3. as an Electrum-like mnemonic of 12, 18 or 24 words;
  4. as a brainwallet password; or
  5. as an "incognito wallet" consisting of random-looking data (72 bytes by default) suitable for hiding in a file or on a disk partition.

Furthermore, all these methods can be combined. If you forget your mnemonic, for example, you can regenerate it and your keys from a saved wallet or seed file. Correspondingly, a lost wallet can be regenerated from a mnemonic or seed or a lost seed from a wallet or mnemonic.

All of MMGen's wallet formats are short, plain ASCII text files suitable for printing on paper or even writing out by hand. This makes MMGen an ideal paper wallet system. Just choose the wallet format that best suits your security needs and print or write it out.

MMGen runs on Linux and Windows.

For more information, see the MMGen project page: https://github.com/mmgen/mmgen

Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
1711711960
Hero Member
*
Offline Offline

Posts: 1711711960

View Profile Personal Message (Offline)

Ignore
1711711960
Reply with quote  #2

1711711960
Report to moderator
1711711960
Hero Member
*
Offline Offline

Posts: 1711711960

View Profile Personal Message (Offline)

Ignore
1711711960
Reply with quote  #2

1711711960
Report to moderator
1711711960
Hero Member
*
Offline Offline

Posts: 1711711960

View Profile Personal Message (Offline)

Ignore
1711711960
Reply with quote  #2

1711711960
Report to moderator
"There should not be any signed int. If you've found a signed int somewhere, please tell me (within the next 25 years please) and I'll change it to unsigned int." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
July 14, 2014, 04:34:10 PM
Last edit: May 02, 2015, 05:30:49 AM by mmgen-py
 #2

New feature: export wallet to incognito format

Incognito wallet is 56, 64 or 72 bytes of apparently random data.

Allows user to hide wallet data in a pre-existing file or on a disk partition (preferably filled in advance with random data).

Can be used to hide wallet securely in unencrypted cloud storage or on paper, without revealing the nature of the data.

Data may be written at a user-specified offset into the file or partition, in which case user must remember the offset.

Each export operation uses a new random init vector to create different data each time.  This allows the user to hide wallets at different locations on the Net without detection.

User must remember hash preset in addition to passphrase (though trial and error can be used if it's forgotten).

Fully integrated with address generation and tx signing operations.


MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project:  15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
July 17, 2014, 06:10:08 PM
Last edit: July 18, 2014, 06:07:06 PM by mmgen-py
 #3

New mmgen-tool utility with the following commands:

  General operations:
  hexdump      - encode binary data in formatted hexadecimal form
  unhexdump    - decode formatted hexadecimal data


  Bitcoin operations:
  strtob58     - convert a string to base 58
  hextob58     - convert a hexadecimal number to base 58
  b58tohex     - convert a base 58 number to hexadecimal
  b58randenc   - generate a random 32-byte number and convert it to base 58
  randwif      - generate a random private key in WIF format
  randpair     - generate a random private key/address pair
  wif2addr     - generate a Bitcoin address from a key in WIF format


  Mnemonic operations ("electrum" and "tirosh" wordlists):
  mn_rand128   - generate random 128-bit mnemonic
  mn_rand192   - generate random 192-bit mnemonic
  mn_rand256   - generate random 256-bit mnemonic
  mn_stats     - show stats for mnemonic wordlist
  mn_printlist - print mnemonic wordlist



MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
August 01, 2014, 06:57:34 PM
Last edit: August 02, 2014, 11:31:51 AM by mmgen-py
 #4

New commands for the mmgen-tool utility:

  Bitcoin address/key operations (compressed public keys supported):
  addr2hexaddr - convert Bitcoin address from base58 to hex format
  b58randenc   - generate a random 32-byte number and convert it to base 58
  b58tohex     - convert a base 58 number to hexadecimal
  hex2wif      - convert a private key from hex to WIF format
  hexaddr2addr - convert Bitcoin address from hex to base58 format
  hextob58     - convert a hexadecimal number to base 58
  privhex2addr - generate Bitcoin address from private key in hex format
  pubkey2addr  - convert Bitcoin public key to address
  pubkey2hexaddr - convert Bitcoin public key to address in hex format
  randpair     - generate a random private key/address pair
  randwif      - generate a random private key in WIF format
  strtob58     - convert a string to base 58
  wif2addr     - generate a Bitcoin address from a key in WIF format
  wif2hex      - convert a private key from WIF to hex format


  Wallet/TX operations (bitcoind must be running):
  getbalance    - like 'bitcoind getbalance' but shows confirmed/unconfirmed,
                  spendable/unspendable balances for individual MMGen wallets
  listaddresses - list MMGen addresses and their balances
  viewtx        - show raw/signed MMGen transaction in human-readable form


  General utilities:
  bytespec     - convert a byte specifier such as '1GB' into a plain integer
  hexdump      - encode data into formatted hexadecimal form (file or stdin)
  hexlify      - display string in hexadecimal format
  hexreverse   - reverse bytes of a hexadecimal string
  rand2file    - write 'n' bytes of random data to specified file
  randhex      - print 'n' bytes (default 32) of random data in hex format
  sha256x2     - compute a double sha256 hash of data
  unhexdump    - decode formatted hexadecimal data (file or stdin)


  File encryption:
  encrypt      - encrypt a file
  decrypt      - decrypt a file
  MMGen encryption suite:
    * Key: Scrypt (user-configurable hash parameters, 32-byte salt)
    * Enc: AES256_CTR, 16-byte rand IV, sha256 hash + 32-byte nonce + data
    * The encrypted file is indistinguishable from random data


  MMGen-specific operations:
  check_addrfile - compute checksum and address list for MMGen address file
  find_incog_data - Use an Incog ID to find hidden incognito wallet data
  id6          - generate 6-character MMGen ID checksum for file (or stdin)
  id8          - generate 8-character MMGen ID checksum for file (or stdin)


  Mnemonic operations (choose "electrum" (default), "tirosh" or "all" wordlists):
  mn_rand128   - generate random 128-bit mnemonic
  mn_rand192   - generate random 192-bit mnemonic
  mn_rand256   - generate random 256-bit mnemonic
  mn_stats     - show stats for mnemonic wordlist
  mn_printlist - print mnemonic wordlist



MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
August 01, 2014, 08:38:50 PM
Last edit: August 02, 2014, 11:33:17 AM by mmgen-py
 #5

Announcing MMGen version 0.7.7

New features since the project's debut on April 11th, 2014:

General:
  • Option for online signing with individual keys, making MMGen a convenient tool for small, day-to-day Bitcoin transactions too
  • Multiple transaction signing in one operation
  • Incognito wallets for hiding wallet data in insecure locations
  • Option to skip blockchain rescan for new addresses

An mmgen-tool utility with commands too numerous to mention. For a full list, see the previous post.
Some highlights:
  • a full suite of Bitcoin address/key manipulation utilities with compressed public key support
  • file encryption tool with strong encryption
  • random-data-to-file tool with optional added user entropy
  • search tool for hidden incognito data
  • wallet-tracking commands getbalance and listaddresses

Unique feature: The user may now supply additional entropy in all cases where random data is needed.  This user entropy (typed symbols + keystroke intervals) is hashed into a key with Scrypt and used to encrypt all random data acquired from the OS during the command run.


MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
August 20, 2014, 04:58:31 PM
Last edit: May 02, 2015, 05:33:46 AM by mmgen-py
 #6

Announcing MMGen version 0.7.8

New features:
  • Updated incognito format now includes a checksum for password verification.  The legacy format continues to be supported with '--old-incog-fmt' option
  • mmgen-txsign: '--mmgen-keys-from-file' option (supersedes '--all-keys-from-file' option) allows online signing of transactions with both MMGen and non-MMGen inputs.
  • mmgen-addrimport: '--keyaddr-file' option allows using key-address file (optionally encrypted) as an address source.


MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
January 02, 2015, 09:44:17 PM
 #7

Announcing MMGen version 0.7.9

New feature:
  • An automated, pexpect-based test suite, 'test/test.py', that tests the MMGen scripts in a variety of use cases.  The test suite is Linux-only due to dependencies required by the pexpect module.


MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
RGBKey
Hero Member
*****
Offline Offline

Activity: 854
Merit: 658


rgbkey.github.io/pgp.txt


View Profile WWW
January 03, 2015, 07:23:33 AM
 #8

Very nice looking program, I'll have to try it out later.
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
January 03, 2015, 02:12:31 PM
 #9

Very nice looking program, I'll have to try it out later.
Thanks!  Please get back to me when you do.
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
April 01, 2015, 11:16:27 AM
 #10

Announcing MMGen version 0.8.0

Bugfix release.  Users are strongly advised to upgrade.


MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
May 01, 2015, 07:21:30 PM
Last edit: May 15, 2015, 07:35:24 AM by mmgen-py
 #11

Announcing MMGen version 0.8.1

New features:
  • New utility, mmgen-walletconv, converts to and from all MMGen wallet formats.
  • All wallet-related scripts now use the new object-oriented wallet library seed.py and share a simpler, more logical command-line interface.
  • More thoroughly tested than ever, thanks to a greatly expanded test suite, test/test.py.
  • A subset of the test suite now runs under Windows; some user interaction required.
  • mmgen-pywallet functional again.


MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
October 25, 2015, 01:25:55 PM
Last edit: November 04, 2015, 12:00:24 PM by mmgen-py
 #12

Announcing MMGen version 0.8.2

This is a minor code cleanup and bugfix release.  Upgrade recommended, testers welcome!


MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
February 28, 2016, 02:00:18 PM
 #13

Announcing MMGen version 0.8.3

New features/improvements:
  • New native Bitcoin RPC library.
  • Support for cookie-based RPC authentication (new in Bitcoin Core v0.12.0).
  • Batch mode available when listing and importing addresses.
  • mmgen-tool listaddresses: 'addrs' argument allows you to specify an address or range of addresses.

NOTE: if MMGen is already installed on your system, you must remove your existing installation by hand before installing this new version.  On Linux, this means deleting everything under the directory '/usr/local/lib/python2.7/dist-packages/mmgen/'.  Also, if you did a 'git pull' instead of a fresh clone, you must delete the 'build' directory in the repository root before installing.

The 'mmgen-pywallet' utility has been removed.  It's no longer needed, as the 'bitcoin-cli dumpwallet' command (available since Core v0.9.0) provides equivalent functionality.

The Windows port isn't being actively maintained at the moment.  Use at your own risk, and report any problems on this forum.

To make sure everything's installed and working properly, run 'test/test.py -s' in the repository root.


MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
June 25, 2016, 03:34:18 PM
Last edit: June 27, 2016, 06:37:48 PM by mmgen-py
 #14

Announcing MMGen version 0.8.4

New features/improvements:
  • Dynamic transaction fees!

Fee is calculated using Bitcoin Core’s 'estimatefee' RPC call and can be overridden interactively by the user.


MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
June 28, 2016, 11:27:01 AM
 #15

Announcing MMGenLive, a fully functional Linux system on a USB stick with the MMGen online/offline Bitcoin wallet, Bitcoin Core and related programs preinstalled!

MMGenLive gives you, out of the box:

  • A completely installed, upgradeable and configurable Ubuntu Linux system
  • Full disk encryption (entire filesystem is read/write)
  • The latest Bitcoin Core
  • The MMGen wallet system and documentation

MMGenLive can be used both as an online or offline wallet.

Everything’s ready to go.  Just download and copy to a USB stick.  No installation required!

For Linux users who wish to “roll their own”, an automated build script is also available.

As the MMGen Windows port isn’t being actively maintained, MMGenLive is now the recommended way for non-Linux users to use the MMGen wallet system.


MMGenLive project page: https://github.com/mmgen/MMGenLive
MMGen project page: https://github.com/mmgen/mmgen
Support the MMGen project: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
morantis
Hero Member
*****
Offline Offline

Activity: 868
Merit: 502



View Profile
June 28, 2016, 12:34:31 PM
 #16

two questions, almost three

1. Does the set of scripts work with just one version of bitcoind or all and is that daemon/client included in the download

2. What functionality does this provide versus simply working with bitcoind itself or a third party API

I am not being mean, just did not have the time to FULLY read everything and it seemed that as a command line tool this was right up there with the standard daemon with some additional encryption/decryption tools.  It should be pretty easy to make this into a GUI although you seem to have a vast number of functions and organization would be time consuming, but really the GUI would just be shelling out the command line functions and parsing the return data.  if you want, i could throw together a fast windows GUI for you based on the little bit i had time to read, although i do not code for limux
mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
June 28, 2016, 02:22:23 PM
Last edit: June 28, 2016, 05:42:17 PM by mmgen-py
 #17

1. Does the set of scripts work with just one version of bitcoind or all and is that daemon/client included in the download
The live image includes the most recent version of Bitcoin Core, but the scripts will work with any version of bitcoind >= 0.10.0 (when watch-only support was introduced).

2. What functionality does this provide versus simply working with bitcoind itself or a third party API
Lots of functionality beyond bitcoind itself.  Download the live USB image and try it out!  That will answer a lot of your questions.

It should be pretty easy to make this into a GUI although you seem to have a vast number of functions and organization would be time consuming,
I've thought about a GUI.  I think it should be cross-platform, though, and integrated on a lower level, not just parsing the output of the scripts.
BitcoinNewsMagazine
Legendary
*
Offline Offline

Activity: 1806
Merit: 1164



View Profile WWW
June 28, 2016, 04:18:44 PM
 #18

You still need an online and offline computer for your solution. Armory and Electrum have been providing this type of cold storage for years, and it is not convenient to use. Hardware wallets like Ledger and Trezor have pretty much made this type of cold storage obsolete.

Trezor costs $99 and new Ledger Nano S is $66 and either provides all the security for your bitcoin you will ever need. And they both work with your phone.

mmgen-py (OP)
Member
**
Offline Offline

Activity: 110
Merit: 26


View Profile WWW
June 28, 2016, 05:49:06 PM
 #19

Trezor costs $99 and new Ledger Nano S is $66 and either provides all the security for your bitcoin you will ever need. And they both work with your phone.

MMGen is intended for power users and provides more options, functionality and security than hardware wallets.  It connects with the outside world only via Bitcoin Core.  For many of us, the words "phone" and "security" are mutually exclusive.  In addition, MMGen costs only $0.
BitcoinNewsMagazine
Legendary
*
Offline Offline

Activity: 1806
Merit: 1164



View Profile WWW
June 28, 2016, 06:04:09 PM
 #20

Trezor costs $99 and new Ledger Nano S is $66 and either provides all the security for your bitcoin you will ever need. And they both work with your phone.

MMGen is intended for power users and provides more options, functionality and security than hardware wallets.  It connects with the outside world only via Bitcoin Core.  For many of us, the words "phone" and "security" are mutually exclusive.  In addition, MMGen costs only $0.

If you can prove MMGen is more secure than Trezor have at it. Post your comments at /r/Trezor for slush to respond to.

Pages: [1] 2 3 4 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!