diff options
Diffstat (limited to 'index.ts')
-rw-r--r-- | index.ts | 92 |
1 files changed, 18 insertions, 74 deletions
@@ -4,113 +4,57 @@ const express = require('express') const app = express() const port = 3001 const fs = require('fs') -const crypt = require("crypto") const bodyParser = require("body-parser"); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); +const NodeRSA = require('node-rsa'); //let priv = ''; - interface keyring{ [sid: string]: string, } let keyring = {} as keyring let key:any; -function decryptMessage(encryptedMessage:any, privateKey:any) { - const rsaPrivateKey = { - key: privateKey, - passphrase: '', - padding: crypt.constants.RSA_PKCS1_PADDING, - }; - - const decryptedMessage = crypt.privateDecrypt( - rsaPrivateKey, - Buffer.from(encryptedMessage, 'base64'), - ); - return decryptedMessage.toString('utf8'); -} app.get('/', (req:any, res:any) => { res.sendFile(__dirname+"/html/index.html") }) app.get('/kanna.txt', (req:any, res:any) => { res.sendFile(__dirname+"/kanna.txt") }) -app.get('/src/jsencrypt.min.js', (req:any, res:any) => { - res.sendFile(__dirname+'/src/jsencrypt.min.js') -}) -app.get('/src/crypto.js', (req:any, res:any) => { - res.sendFile(__dirname+'/src/crypto.js') +app.get('/src/bundle.js', (req:any, res:any) => { + res.sendFile(__dirname+'/src/bundle.js') }) app.get('/src/lights-out.gif', (req:any, res:any) => { res.sendFile(__dirname+'/src/lights-out.gif') }) app.post('/pub.key', async (req:{body:{json:boolean,sid:keyof keyring}}, res:any) => { if(req.body.json){ - const { publicKey, privateKey } = crypt.generateKeyPairSync("rsa", { - // The standard secure default length for RSA keys is 2048 bits - modulusLength: 1024, - publicKeyEncoding: { - type: 'pkcs1', - format: 'pem' - }, - privateKeyEncoding: { - type: 'pkcs8', - format: 'pem', - } - }) - res.send(publicKey.toString("base64")) - console.log(publicKey,privateKey) + const key = new NodeRSA({b: 1024}); + keyring[req.body.sid]=key.exportKey('pkcs1-private') + res.send(key.exportKey('pkcs8-public')) } }) app.post('/login/submit', async (req:{body:{json:boolean,enc:boolean,data:string,sid:keyof keyring}}, res:any) => { - //console.log(req.body) - //console.log(keyring,req.body.sid) + const key = new NodeRSA({b: 1024}) + + key.importKey(keyring[req.body.sid],'pkcs1-private') + let dec:{user:string,pass:string} = JSON.parse((atob(key.decrypt(req.body.data,'base64','base64')))) - if(req.body.enc,req.body.json){ - try{ - console.log(key) - // @ts-ignore - /* - let request = await decryptMessage(req.body.data, crypt.createPrivateKey({ - key: Buffer.from(key, 'base64'), - padding:crypt.constants.RSA_PKCS1_PADDING, - }))*/ - console.log(req.body) - const decryptedData = crypt.privateDecrypt( - { - key: key, - // In order to decrypt the data, we need to specify the - // same hashing function and padding scheme that we used to - // encrypt the data in the previous step - padding: crypt.constants.RSA_PKCS1_OAEP_PADDING, - oaepHash: "sha256", - }, - req.body.data - ) - //console.log(req.body) - let request=JSON.parse(decryptedData) - console.log(request) - //console.log(request.user,request.pass) - //if(request.date==null){return} - let user:any=readFileSync("json/user.json") - //console.log(user) - for(let i of JSON.parse(user)){ - //console.log(i) - if(request.user.trim() == i['user'] && request.pass.trim() == i['pass']){ - res.send("logged in") + let users = JSON.parse(readFileSync('json/user.json').toString()) + for(let user of users){ + let use=user as typeof users + console.log(use) + if(user.name==dec.user&&user.pass==dec.pass){ + res.send('logged in, hello!') } - - }}catch(err){ - console.log(err) - } -} - }) + + app.listen(port,'0.0.0.0', () => { console.log(`Example app listening on port ${port}`) })
\ No newline at end of file |