+ Add a two new libraries
+ QR-Code is now readable and decryptable
This commit is contained in:
6
dist/main.js
vendored
6
dist/main.js
vendored
@@ -7,8 +7,7 @@ electron_1.app.on('ready', function () {
|
||||
height: 600,
|
||||
width: 1000,
|
||||
frame: false,
|
||||
resizable: false,
|
||||
alwaysOnTop: true,
|
||||
resizable: true,
|
||||
title: "OffPass",
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
@@ -17,7 +16,8 @@ electron_1.app.on('ready', function () {
|
||||
});
|
||||
//win.loadURL("https://google.de")
|
||||
win.loadFile('../src/index.html');
|
||||
win.setTitle("OffPass");
|
||||
});
|
||||
electron_1.app.on('window-all-closed', function () {
|
||||
win = null;
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
87
package-lock.json
generated
87
package-lock.json
generated
@@ -33,12 +33,45 @@
|
||||
"defer-to-connect": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"@types/bn.js": {
|
||||
"version": "4.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.5.tgz",
|
||||
"integrity": "sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "12.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.6.tgz",
|
||||
"integrity": "sha512-4uPUyY1Aofo1YzoypalYHNd2SnKYxH2b6LzXwpryZCJKA2XlagZSynXx5C8sfPH0r1cSltUpaVHV2q5sYXschQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/openpgp": {
|
||||
"version": "4.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/openpgp/-/openpgp-4.4.7.tgz",
|
||||
"integrity": "sha512-NzmBQDTpvPvbq24oZnLGk+/vfsmofkSbYXxdJCAX314q3EBaj/ve2rig0GYnwnXLxMXekUKJe9LhQSDynRgNQQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/bn.js": "*"
|
||||
}
|
||||
},
|
||||
"asn1.js": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.2.0.tgz",
|
||||
"integrity": "sha512-Q7hnYGGNYbcmGrCPulXfkEw7oW7qjWeM4ZTALmgpuIcZLxyqqKYWxCZg2UBm8bklrnB4m2mGyJPWfoktdORD8A==",
|
||||
"requires": {
|
||||
"bn.js": "^4.0.0",
|
||||
"inherits": "^2.0.1",
|
||||
"minimalistic-assert": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"bn.js": {
|
||||
"version": "4.11.8",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
|
||||
"integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
|
||||
},
|
||||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
||||
@@ -240,8 +273,7 @@
|
||||
"graceful-fs": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
|
||||
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
|
||||
},
|
||||
"http-cache-semantics": {
|
||||
"version": "4.0.3",
|
||||
@@ -249,11 +281,15 @@
|
||||
"integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==",
|
||||
"dev": true
|
||||
},
|
||||
"imurmurhash": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
||||
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
@@ -297,6 +333,11 @@
|
||||
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
|
||||
"dev": true
|
||||
},
|
||||
"minimalistic-assert": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
|
||||
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
@@ -318,6 +359,19 @@
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||
"dev": true
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
|
||||
},
|
||||
"node-localstorage": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-1.3.1.tgz",
|
||||
"integrity": "sha512-NMWCSWWc6JbHT5PyWlNT2i8r7PgGYXVntmKawY83k/M0UJScZ5jirb61TLnqKwd815DfBQu+lR3sRw08SPzIaQ==",
|
||||
"requires": {
|
||||
"write-file-atomic": "^1.1.4"
|
||||
}
|
||||
},
|
||||
"normalize-url": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
|
||||
@@ -333,6 +387,16 @@
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"openpgp": {
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmjs.org/openpgp/-/openpgp-4.6.2.tgz",
|
||||
"integrity": "sha512-zgQmTZjKxjI2vs++5Ejs8wQbs9+YekOAulfq8YxKV7uUxcNxDE2IIh88I/RmjPOvpxCrV7kNqSBwVQMzZxTtDQ==",
|
||||
"requires": {
|
||||
"asn1.js": "^5.0.0",
|
||||
"node-fetch": "^2.1.2",
|
||||
"node-localstorage": "~1.3.0"
|
||||
}
|
||||
},
|
||||
"p-cancelable": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
|
||||
@@ -406,6 +470,11 @@
|
||||
"truncate-utf8-bytes": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"slide": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
|
||||
"integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
@@ -478,6 +547,16 @@
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
},
|
||||
"write-file-atomic": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
|
||||
"integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.11",
|
||||
"imurmurhash": "^0.1.4",
|
||||
"slide": "^1.1.5"
|
||||
}
|
||||
},
|
||||
"yauzl": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
|
||||
|
||||
@@ -3,8 +3,11 @@
|
||||
"version": "1.0.0",
|
||||
"description": "OffPass, a special password manager. All your passwords are not stored in an encrypted container but offline.",
|
||||
"main": "index.js",
|
||||
"dependencies": {},
|
||||
"dependencies": {
|
||||
"openpgp": "^4.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/openpgp": "^4.4.7",
|
||||
"electron": "^7.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
1
src/assets/instascan.min.js
vendored
Normal file
1
src/assets/instascan.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1,16 +1,22 @@
|
||||
html {
|
||||
background: linear-gradient(0deg, rgba(60,60,60,1) 0%, rgba(42,44,43,1) 100%) no-repeat;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #2A2C2B;
|
||||
/*background-color: #2A2C2B;*/
|
||||
overflow: hidden;
|
||||
}
|
||||
h1 {
|
||||
font-family: 'Oxygen', sans-serif;
|
||||
color: #BDC3C7;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
p, span {
|
||||
font-family: 'Source Sans Pro', sans-serif;
|
||||
color: #BDC3C7;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#taskbar {
|
||||
@@ -18,12 +24,23 @@ p, span {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 64px;
|
||||
height: 15px;
|
||||
z-index: 1;
|
||||
-webkit-app-region: drag;
|
||||
}
|
||||
#taskbar i {
|
||||
transition: .1s ease-in-out;
|
||||
padding: 10px;
|
||||
color: #BDC3C7;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
#content {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
vertical-align: middle;
|
||||
text-align: cover;
|
||||
object-fit: fill;
|
||||
}
|
||||
|
||||
.fill {
|
||||
|
||||
@@ -7,26 +7,55 @@
|
||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Oxygen:700&display=swap" rel="stylesheet">
|
||||
<link href="assets/fontawesome-5.11.2/css/all.css" rel="stylesheet">
|
||||
<script type="text/javascript" src="assets/instascan.min.js"></script>
|
||||
<link href="global.css" rel="stylesheet">
|
||||
<link href="scanner.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div id="taskbar">
|
||||
<div class="fill"></div>
|
||||
<i id="mini" class="fas fa-window-minimize" onclick="remote.BrowserWindow.getFocusedWindow().minimize()"></i>
|
||||
<i id="close" class="fas fa-times" onclick="remote.BrowserWindow.getFocusedWindow().close()"></i>
|
||||
</div>
|
||||
<div id="content">
|
||||
<!--<h1>Welcome to OffPass</h1>
|
||||
<p>In this short tutorial you'll learn how to use this software.</p>
|
||||
<a href="#">Let's start</a>-->
|
||||
<video id="preview"></video>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const { remote } = require('electron');
|
||||
document.getElementById("close").onclick = () => remote.BrowserWindow.getFocusedWindow().close();
|
||||
function close() {
|
||||
console.log("ghere")
|
||||
var window = remote.BrowserWindow.getFocusedWindow().close();
|
||||
}
|
||||
function minimize() {
|
||||
console.log("hhrer")
|
||||
var window = remote.BrowserWindow.getFocusedWindow().minimize();
|
||||
const pgp = require('openpgp');
|
||||
|
||||
navigator.mediaDevices.getUserMedia({video: true});
|
||||
const preview = document.getElementById('preview');
|
||||
|
||||
let scanner = new Instascan.Scanner({ video: preview, mirror: false });
|
||||
|
||||
scanner.addListener('scan', async (content) => {
|
||||
content = "-----BEGIN PGP MESSAGE-----\n\n" + content + "\n-----END PGP MESSAGE-----";
|
||||
console.log(content)
|
||||
pgp.decrypt({
|
||||
message: await pgp.message.readArmored(content),
|
||||
passwords: [ '123' ],
|
||||
format: 'string'
|
||||
}).then((plaintext) => {
|
||||
console.log(plaintext.data);
|
||||
});
|
||||
});
|
||||
Instascan.Camera.getCameras().then(function (cameras) {
|
||||
if (cameras.length > 0) {
|
||||
scanner.start(cameras[0]);
|
||||
navigator.mediaDevices.getUserMedia({video: true}).then((stream) => {
|
||||
preview.srcObject = stream;
|
||||
})
|
||||
} else {
|
||||
console.error('No cameras found.');
|
||||
}
|
||||
}).catch(function (e) {
|
||||
console.error(e);
|
||||
});
|
||||
</script>
|
||||
<div id="taskbar" onclick="minimize()">
|
||||
<div class="fill"></div>
|
||||
<i id="mini" class="fas fa-window-minimize" onclick="minimize()"></i>
|
||||
<i id="close" class="fas fa-times" onclick="console.log('Hallo Welt')"></i>
|
||||
</div>
|
||||
<h1 onclick="remote.BrowserWindow.getFocusedWindow().close()">Hello World!</h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,8 +6,7 @@ app.on('ready', () => {
|
||||
height: 600,
|
||||
width: 1000,
|
||||
frame: false,
|
||||
resizable: false,
|
||||
alwaysOnTop: true,
|
||||
resizable: true,
|
||||
title: "OffPass",
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
@@ -16,8 +15,9 @@ app.on('ready', () => {
|
||||
});
|
||||
//win.loadURL("https://google.de")
|
||||
win.loadFile('../src/index.html');
|
||||
win.setTitle("OffPass")
|
||||
});
|
||||
|
||||
app.on('window-all-closed', () => {
|
||||
win = null;
|
||||
})
|
||||
process.exit(0);
|
||||
});
|
||||
9
src/scanner.css
Normal file
9
src/scanner.css
Normal file
@@ -0,0 +1,9 @@
|
||||
#preview {
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
Reference in New Issue
Block a user