├── views ├── error.ejs ├── index.ejs └── result.ejs ├── README.md ├── public └── stylesheets │ └── style.css ├── package.json ├── routes └── index.js ├── app.js └── bin └── www /views/error.ejs: -------------------------------------------------------------------------------- 1 |

<%= message %>

2 |

<%= error.status %>

3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Mnemonic2PrivateKey 2 | 3 | ## Created by github.com/vsec7 4 | 5 | Demo : https://mnemonic2pk.herokuapp.com 6 | 7 | -------------------------------------------------------------------------------- /public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mnemonic-to-pk", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "start": "node ./bin/www" 7 | }, 8 | "keywords": [ 9 | "ERC20", 10 | "BEP20" 11 | ], 12 | "author": "github.com/vsec7", 13 | "dependencies": { 14 | "bip39": "^2.6.0", 15 | "body-parser": "^1.13.2", 16 | "cookie-parser": "~1.3.5", 17 | "debug": "~2.2.0", 18 | "ejs": "~2.5.7", 19 | "ethereum-hdwallet": "^0.0.26", 20 | "express": "~4.13.1", 21 | "morgan": "~1.6.1", 22 | "serve-favicon": "~2.3.0" 23 | }, 24 | "devDependencies": { 25 | "nodemon": "^1.12.1" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /routes/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | const HDWallet = require('ethereum-hdwallet'); 4 | const bip39 = require('bip39'); 5 | 6 | /* GET home page. */ 7 | router.get('/', function(req, res, next) { 8 | res.render('index', { title: 'Express' }); 9 | }); 10 | 11 | router.post('/result', function(req, res, next) { 12 | 13 | const mnemonic = req.body.mnemonic; 14 | const seed = bip39.mnemonicToSeed(mnemonic); 15 | const derivePath = "m/44'/60'/0'/0/0" 16 | console.log(mnemonic) 17 | const hdwallet = HDWallet.fromSeed(seed) 18 | const addr = `0x${hdwallet.derive(derivePath).getAddress().toString('hex')}`; 19 | const pk = `0x${hdwallet.derive(derivePath).getPrivateKey().toString('hex')}`; 20 | 21 | res.render('result', { query: { 'addr': addr, 'pk': pk } }); 22 | }); 23 | 24 | 25 | module.exports = router; 26 | -------------------------------------------------------------------------------- /views/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Mnemonic to PrivateKey Converter 5 | 6 | 7 | 8 |
9 |

Mnemonic to PrivateKey Converter

10 | 11 |
12 |
13 |
14 |
15 | 16 | 17 |
18 | 19 |
20 | 21 |
22 | 23 |
24 | 2021 Created by Viloid 25 |
26 |
27 |
28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /views/result.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Mnemonic to PrivateKey 5 | 6 | 7 | 8 |
9 |

Mnemonic to PrivateKey

10 | 11 | Result: 12 |
13 | Address: <%= query.addr %> 14 |
15 | PrivateKey: 16 | 17 | 18 |
19 | 20 |
21 | 2021 Created by Viloid 22 |
23 |
24 | 25 | 26 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var path = require('path'); 3 | var favicon = require('serve-favicon'); 4 | var logger = require('morgan'); 5 | var cookieParser = require('cookie-parser'); 6 | var bodyParser = require('body-parser'); 7 | var index = require('./routes/index'); 8 | 9 | var app = express(); 10 | 11 | // view engine setup 12 | app.set('views', path.join(__dirname, 'views')); 13 | app.set('view engine', 'ejs'); 14 | 15 | // uncomment after placing your favicon in /public 16 | //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 17 | app.use(logger('dev')); 18 | app.use(bodyParser.json()); 19 | app.use(bodyParser.urlencoded({ extended: false })); 20 | app.use(cookieParser()); 21 | app.use(express.static(path.join(__dirname, 'public'))); 22 | 23 | app.use('/', index); 24 | 25 | 26 | // catch 404 and forward to error handler 27 | app.use(function(req, res, next) { 28 | var err = new Error('Not Found'); 29 | err.status = 404; 30 | next(err); 31 | }); 32 | 33 | // error handlers 34 | 35 | // development error handler 36 | // will print stacktrace 37 | if (app.get('env') === 'development') { 38 | app.use(function(err, req, res, next) { 39 | res.status(err.status || 500); 40 | res.render('error', { 41 | message: err.message, 42 | error: err 43 | }); 44 | }); 45 | } 46 | 47 | // production error handler 48 | // no stacktraces leaked to user 49 | app.use(function(err, req, res, next) { 50 | res.status(err.status || 500); 51 | res.render('error', { 52 | message: err.message, 53 | error: {} 54 | }); 55 | }); 56 | 57 | 58 | module.exports = app; 59 | -------------------------------------------------------------------------------- /bin/www: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * Module dependencies. 5 | */ 6 | 7 | var app = require('../app'); 8 | var debug = require('debug')('mnemonic-to-pk:server'); 9 | var http = require('http'); 10 | 11 | /** 12 | * Get port from environment and store in Express. 13 | */ 14 | 15 | var port = normalizePort(process.env.PORT || '3000'); 16 | app.set('port', port); 17 | 18 | /** 19 | * Create HTTP server. 20 | */ 21 | 22 | var server = http.createServer(app); 23 | 24 | /** 25 | * Listen on provided port, on all network interfaces. 26 | */ 27 | 28 | server.listen(port); 29 | server.on('error', onError); 30 | server.on('listening', onListening); 31 | 32 | /** 33 | * Normalize a port into a number, string, or false. 34 | */ 35 | 36 | function normalizePort(val) { 37 | var port = parseInt(val, 10); 38 | 39 | if (isNaN(port)) { 40 | // named pipe 41 | return val; 42 | } 43 | 44 | if (port >= 0) { 45 | // port number 46 | return port; 47 | } 48 | 49 | return false; 50 | } 51 | 52 | /** 53 | * Event listener for HTTP server "error" event. 54 | */ 55 | 56 | function onError(error) { 57 | if (error.syscall !== 'listen') { 58 | throw error; 59 | } 60 | 61 | var bind = typeof port === 'string' 62 | ? 'Pipe ' + port 63 | : 'Port ' + port; 64 | 65 | // handle specific listen errors with friendly messages 66 | switch (error.code) { 67 | case 'EACCES': 68 | console.error(bind + ' requires elevated privileges'); 69 | process.exit(1); 70 | break; 71 | case 'EADDRINUSE': 72 | console.error(bind + ' is already in use'); 73 | process.exit(1); 74 | break; 75 | default: 76 | throw error; 77 | } 78 | } 79 | 80 | /** 81 | * Event listener for HTTP server "listening" event. 82 | */ 83 | 84 | function onListening() { 85 | var addr = server.address(); 86 | var bind = typeof addr === 'string' 87 | ? 'pipe ' + addr 88 | : 'port ' + addr.port; 89 | debug('Listening on ' + bind); 90 | } 91 | --------------------------------------------------------------------------------