scanoss 0.12.1 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/build/main/cli/bin/cli-bin.js +2 -1
- package/build/main/cli/commands/crypto.js +5 -2
- package/build/main/sdk/Cryptography/CryptoCfg.d.ts +10 -2
- package/build/main/sdk/Cryptography/CryptoCfg.js +11 -4
- package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +3 -7
- package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.js +10 -35
- package/build/main/sdk/Cryptography/CryptographyScanner.js +2 -2
- package/build/main/sdk/Cryptography/Worker/ThreadPool.d.ts +21 -0
- package/build/main/sdk/Cryptography/Worker/ThreadPool.js +86 -0
- package/build/main/sdk/Cryptography/Worker/Worker.d.ts +16 -0
- package/build/main/sdk/Cryptography/Worker/Worker.js +68 -0
- package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.js +2 -2
- package/build/main/tsconfig.tsbuildinfo +42 -9
- package/build/module/cli/bin/cli-bin.js +2 -1
- package/build/module/cli/commands/crypto.js +5 -2
- package/build/module/sdk/Cryptography/CryptoCfg.d.ts +10 -2
- package/build/module/sdk/Cryptography/CryptoCfg.js +11 -4
- package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +3 -7
- package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.js +10 -32
- package/build/module/sdk/Cryptography/CryptographyScanner.js +2 -2
- package/build/module/sdk/Cryptography/Worker/ThreadPool.d.ts +21 -0
- package/build/module/sdk/Cryptography/Worker/ThreadPool.js +83 -0
- package/build/module/sdk/Cryptography/Worker/Worker.d.ts +16 -0
- package/build/module/sdk/Cryptography/Worker/Worker.js +65 -0
- package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.js +2 -2
- package/build/module/tsconfig.module.tsbuildinfo +42 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.13.0](https://github.com/scanoss/scanoss.js/compare/v0.12.2...v0.13.0) (2024-05-13)
|
|
6
|
+
|
|
7
|
+
### [0.12.2](https://github.com/scanoss/scanoss.js/compare/v0.12.0...v0.12.2) (2024-05-10)
|
|
8
|
+
|
|
5
9
|
### [0.12.0](https://github.com/scanoss/scanoss.js/compare/v0.11.5...v0.12.0) (2024-05-06)
|
|
6
10
|
|
|
7
11
|
### [0.11.5](https://github.com/scanoss/scanoss.js/compare/v0.11.4...v0.11.5) (2024-04-19)
|
|
@@ -73,6 +73,7 @@ async function main() {
|
|
|
73
73
|
// Options
|
|
74
74
|
cryptography.addOption(new commander_1.Option("-r, --rules <rules>", "Crypto rules"));
|
|
75
75
|
cryptography.addOption(new commander_1.Option("-o, --output <filename>", "Output result file name (optional - default stdout)"));
|
|
76
|
+
cryptography.addOption(new commander_1.Option("-T, --threads <threads>", "Number of threads to use while scanning (optional - default 5)"));
|
|
76
77
|
cryptography.action((source, options) => {
|
|
77
78
|
crypto_1.cryptoHandler(source, options).catch((e) => {
|
|
78
79
|
CLIErrorHandler(e);
|
|
@@ -94,4 +95,4 @@ catch (e) {
|
|
|
94
95
|
console.error(e);
|
|
95
96
|
process.exit(1);
|
|
96
97
|
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx5Q0FBc0Q7QUFFdEQsaURBQThDO0FBQzlDLHlDQUE2QztBQUM3QywyQ0FBK0M7QUFDL0MseUNBQTZDO0FBQzdDLCtDQUFtRDtBQUVuRCxTQUFTLGVBQWUsQ0FBQyxDQUFRO0lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUVqQixNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9CQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUVBQWlFLENBQUMsQ0FBQztJQUU3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxXQUFXLEVBQUUsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLFlBQVksRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDLENBQUM7SUFDekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsZUFBZSxFQUFFLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztJQUMzSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyx3QkFBd0IsRUFBRSwrQ0FBK0MsQ0FBQyxDQUFDLENBQUM7SUFDdEcsSUFBSSxD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
|
|
@@ -15,7 +15,10 @@ async function cryptoHandler(rootPath, options) {
|
|
|
15
15
|
let cryptoRules = null;
|
|
16
16
|
if (options.rules)
|
|
17
17
|
cryptoRules = options.rules;
|
|
18
|
-
|
|
18
|
+
let threads = null;
|
|
19
|
+
if (options.threads)
|
|
20
|
+
threads = options.threads;
|
|
21
|
+
const cryptoScanner = new CryptographyScanner_1.CryptographyScanner(new CryptoCfg_1.CryptoCfg({ threads, rulesPath: cryptoRules }));
|
|
19
22
|
let fileList = [];
|
|
20
23
|
fileList.push(rootPath);
|
|
21
24
|
if (pathIsFolder) {
|
|
@@ -34,4 +37,4 @@ async function cryptoHandler(rootPath, options) {
|
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
exports.cryptoHandler = cryptoHandler;
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1Q0FBcUM7QUFLckMsb0ZBRW9EO0FBQ3BELDhDQUEyQztBQUUzQyxnRUFBNkQ7QUFDN0QsNENBQW9CO0FBRWIsS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFDaEUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBRyxPQUFPLENBQUMsS0FBSztRQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRTlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLHFCQUFTLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUVoRyxJQUFJLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFeEIsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7SUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5ELElBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNqQixNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDbkQ7U0FBTTtRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0M7QUFFSCxDQUFDO0FBaENELHNDQWdDQyJ9
|
|
@@ -2,15 +2,23 @@
|
|
|
2
2
|
* Represents a configuration for cryptography scanner.
|
|
3
3
|
*/
|
|
4
4
|
export declare class CryptoCfg {
|
|
5
|
+
private readonly DEFAULT_THREADS;
|
|
5
6
|
private readonly rulesPath;
|
|
7
|
+
private readonly threads;
|
|
6
8
|
/**
|
|
7
9
|
* Creates an instance of CryptoCfg.
|
|
8
|
-
* @param
|
|
10
|
+
* @param {Object} cfg - Configuration object.
|
|
11
|
+
* @param {number} [cfg.threads=5] - The number of threads to use. Defaults to 5 if not provided.
|
|
12
|
+
* @param {string} [cfg.rulesPath] - Optional. Path to the cryptography rules file.
|
|
9
13
|
*/
|
|
10
|
-
constructor(
|
|
14
|
+
constructor(cfg: {
|
|
15
|
+
threads: number;
|
|
16
|
+
rulesPath: string;
|
|
17
|
+
});
|
|
11
18
|
/**
|
|
12
19
|
* Gets the path to the cryptography rules file.
|
|
13
20
|
* @returns The path to the cryptography rules file.
|
|
14
21
|
*/
|
|
15
22
|
getRulesPath(): string;
|
|
23
|
+
getNumberOfThreads(): number;
|
|
16
24
|
}
|
|
@@ -6,10 +6,14 @@ exports.CryptoCfg = void 0;
|
|
|
6
6
|
class CryptoCfg {
|
|
7
7
|
/**
|
|
8
8
|
* Creates an instance of CryptoCfg.
|
|
9
|
-
* @param
|
|
9
|
+
* @param {Object} cfg - Configuration object.
|
|
10
|
+
* @param {number} [cfg.threads=5] - The number of threads to use. Defaults to 5 if not provided.
|
|
11
|
+
* @param {string} [cfg.rulesPath] - Optional. Path to the cryptography rules file.
|
|
10
12
|
*/
|
|
11
|
-
constructor(
|
|
12
|
-
this.
|
|
13
|
+
constructor(cfg) {
|
|
14
|
+
this.DEFAULT_THREADS = 5;
|
|
15
|
+
this.rulesPath = cfg.rulesPath;
|
|
16
|
+
this.threads = cfg.threads ? Number(cfg.threads) : this.DEFAULT_THREADS;
|
|
13
17
|
}
|
|
14
18
|
/**
|
|
15
19
|
* Gets the path to the cryptography rules file.
|
|
@@ -18,6 +22,9 @@ class CryptoCfg {
|
|
|
18
22
|
getRulesPath() {
|
|
19
23
|
return this.rulesPath;
|
|
20
24
|
}
|
|
25
|
+
getNumberOfThreads() {
|
|
26
|
+
return this.threads;
|
|
27
|
+
}
|
|
21
28
|
}
|
|
22
29
|
exports.CryptoCfg = CryptoCfg;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvQ2ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFRcEI7Ozs7O09BS0c7SUFDRixZQUFhLEdBQTJDO1FBWnhDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBYWxDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDMUUsQ0FBQztJQUVGOzs7T0FHRztJQUNLLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FFSDtBQS9CRCw4QkErQkMifQ==
|
|
@@ -6,20 +6,16 @@ import { CryptoAlgorithmRules } from '../CryptographyTypes';
|
|
|
6
6
|
export declare class LocalCrypto {
|
|
7
7
|
private cryptoMapper;
|
|
8
8
|
private cryptoRules;
|
|
9
|
+
private threads;
|
|
9
10
|
/**
|
|
10
11
|
* Constructs a new LocalCrypto.
|
|
11
12
|
* @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
|
|
13
|
+
* @param threads Number of threads to be use to scan local cryptography (default = 5).
|
|
12
14
|
*/
|
|
13
|
-
constructor(cryptoRules: Array<CryptoAlgorithmRules
|
|
15
|
+
constructor(cryptoRules: Array<CryptoAlgorithmRules>, threads: number);
|
|
14
16
|
/**
|
|
15
17
|
* Searches for cryptographic algorithms in the content of a files.
|
|
16
18
|
* @param files The files to search.
|
|
17
19
|
*/
|
|
18
20
|
search(files: Array<string>): Promise<Array<CryptoItem>>;
|
|
19
|
-
/**
|
|
20
|
-
* Asynchronously searches for cryptographic algorithms in the content of a file.
|
|
21
|
-
* @param cryptoItem The CryptoItem to search for cryptographic algorithms.
|
|
22
|
-
* @returns A promise that resolves when the search is complete.
|
|
23
|
-
*/
|
|
24
|
-
private searchCrypto;
|
|
25
21
|
}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
2
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
3
|
-
};
|
|
4
1
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
2
|
exports.LocalCrypto = void 0;
|
|
6
3
|
const CryptoItem_1 = require("../Scanneable/CryptoItem");
|
|
7
4
|
const CryptoDef_1 = require("../CryptoDef/CryptoDef");
|
|
8
|
-
const
|
|
5
|
+
const ThreadPool_1 = require("../Worker/ThreadPool");
|
|
9
6
|
/**
|
|
10
7
|
* Represents a CryptoCalculator used for searching cryptographic algorithms in files.
|
|
11
8
|
*/
|
|
@@ -13,10 +10,12 @@ class LocalCrypto {
|
|
|
13
10
|
/**
|
|
14
11
|
* Constructs a new LocalCrypto.
|
|
15
12
|
* @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
|
|
13
|
+
* @param threads Number of threads to be use to scan local cryptography (default = 5).
|
|
16
14
|
*/
|
|
17
|
-
constructor(cryptoRules) {
|
|
15
|
+
constructor(cryptoRules, threads) {
|
|
18
16
|
this.cryptoRules = CryptoDef_1.createCryptoKeywordMapper(cryptoRules);
|
|
19
17
|
this.cryptoMapper = CryptoDef_1.getCryptoMapper(cryptoRules);
|
|
18
|
+
this.threads = threads;
|
|
20
19
|
}
|
|
21
20
|
/**
|
|
22
21
|
* Searches for cryptographic algorithms in the content of a files.
|
|
@@ -25,37 +24,13 @@ class LocalCrypto {
|
|
|
25
24
|
async search(files) {
|
|
26
25
|
if (files.length <= 0)
|
|
27
26
|
return [];
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}));
|
|
32
|
-
return cryptoItems;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Asynchronously searches for cryptographic algorithms in the content of a file.
|
|
36
|
-
* @param cryptoItem The CryptoItem to search for cryptographic algorithms.
|
|
37
|
-
* @returns A promise that resolves when the search is complete.
|
|
38
|
-
*/
|
|
39
|
-
async searchCrypto(cryptoItem) {
|
|
40
|
-
const cryptoFound = new Array();
|
|
41
|
-
let content = await fs_1.default.promises.readFile(cryptoItem.getPath(), 'utf-8');
|
|
42
|
-
this.cryptoRules.forEach((value, key) => {
|
|
43
|
-
try {
|
|
44
|
-
const matches = content.match(value);
|
|
45
|
-
if (matches) {
|
|
46
|
-
cryptoFound.push(key);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
console.error(e);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
const results = [];
|
|
54
|
-
cryptoFound.forEach((cf) => {
|
|
55
|
-
results.push(this.cryptoMapper.get(cf));
|
|
27
|
+
const threadPool = new ThreadPool_1.ThreadPool(this.threads, this.cryptoRules, this.cryptoMapper);
|
|
28
|
+
files.forEach((f) => {
|
|
29
|
+
threadPool.enqueueTask(new CryptoItem_1.CryptoItem(f));
|
|
56
30
|
});
|
|
57
|
-
|
|
31
|
+
await threadPool.init();
|
|
32
|
+
return await threadPool.processQueue();
|
|
58
33
|
}
|
|
59
34
|
}
|
|
60
35
|
exports.LocalCrypto = LocalCrypto;
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxDcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9Qcm92aWRlci9Mb2NhbENyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlEQUFzRDtBQUN0RCxzREFFZ0M7QUFHaEMscURBQWtEO0FBR2xEOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBUXRCOzs7O09BSUc7SUFDSCxZQUFZLFdBQXdDLEVBQUUsT0FBZTtRQUNuRSxJQUFJLENBQUMsV0FBVyxHQUFHLHFDQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsMkJBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksdUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksdUJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsT0FBTyxNQUFNLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUFoQ0Qsa0NBZ0NDIn0=
|
|
@@ -26,7 +26,7 @@ class CryptographyScanner {
|
|
|
26
26
|
*/
|
|
27
27
|
async scan(files) {
|
|
28
28
|
const cryptographyRules = await this.loadRules(this.cryptoConfig.getRulesPath());
|
|
29
|
-
const localCrypto = new LocalCrypto_1.LocalCrypto(cryptographyRules);
|
|
29
|
+
const localCrypto = new LocalCrypto_1.LocalCrypto(cryptographyRules, this.cryptoConfig.getNumberOfThreads());
|
|
30
30
|
const cryptoItems = await localCrypto.search(files);
|
|
31
31
|
return cryptoAdapters_1.mapToILocalCryptographyResponse(cryptoItems);
|
|
32
32
|
}
|
|
@@ -54,4 +54,4 @@ class CryptographyScanner {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
exports.CryptographyScanner = CryptographyScanner;
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsdUNBQW9DO0FBQ3BDLDhEQUEyRDtBQU0zRCxvRUFFeUM7QUFDekMsZ0RBQXdCO0FBRXhCOztHQUVHO0FBQ0gsTUFBYSxtQkFBbUI7SUFHOUI7OztPQUdHO0lBQ0gsWUFBWSxTQUFvQjtRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBb0I7UUFDcEMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRixNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsT0FBTyxnREFBK0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBaUI7UUFDdkMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFFLGNBQUksQ0FBQyxJQUFJLENBQ3JELFNBQVMsRUFDVCxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBRUY7QUFqREQsa0RBaURDIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CryptoAlgorithm } from '../CryptographyTypes';
|
|
2
|
+
import { CryptoItem } from '../Scanneable/CryptoItem';
|
|
3
|
+
export declare class ThreadPool {
|
|
4
|
+
private readonly maxWorkers;
|
|
5
|
+
private readonly workers;
|
|
6
|
+
private readonly jobsQueue;
|
|
7
|
+
private readonly cryptoRules;
|
|
8
|
+
private readonly cryptoMapper;
|
|
9
|
+
private results;
|
|
10
|
+
private activeWorkers;
|
|
11
|
+
private resolve;
|
|
12
|
+
private reject;
|
|
13
|
+
constructor(maxWorkers: number, rules: Map<string, RegExp>, cryptoMapper: Map<string, CryptoAlgorithm>);
|
|
14
|
+
enqueueTask(item: CryptoItem): Promise<unknown>;
|
|
15
|
+
init(): Promise<void>;
|
|
16
|
+
private releaseWorker;
|
|
17
|
+
private next;
|
|
18
|
+
private destroyAllWorkers;
|
|
19
|
+
processQueue(): Promise<Array<CryptoItem>>;
|
|
20
|
+
private processItem;
|
|
21
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
exports.ThreadPool = void 0;
|
|
3
|
+
const Worker_1 = require("./Worker");
|
|
4
|
+
class ThreadPool {
|
|
5
|
+
constructor(maxWorkers = 3, rules, cryptoMapper) {
|
|
6
|
+
this.workers = [];
|
|
7
|
+
this.results = [];
|
|
8
|
+
this.activeWorkers = 0;
|
|
9
|
+
this.maxWorkers = maxWorkers;
|
|
10
|
+
this.workers = [];
|
|
11
|
+
this.jobsQueue = [];
|
|
12
|
+
this.cryptoRules = rules;
|
|
13
|
+
this.cryptoMapper = cryptoMapper;
|
|
14
|
+
}
|
|
15
|
+
enqueueTask(item) {
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
const job = { item, resolve, reject };
|
|
18
|
+
this.jobsQueue.push(job);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async init() {
|
|
22
|
+
for (let i = 0; i < this.maxWorkers; i++) {
|
|
23
|
+
const worker = new Worker_1.Worker();
|
|
24
|
+
worker.on('message', async (item) => {
|
|
25
|
+
this.results.push(item.result);
|
|
26
|
+
this.releaseWorker(item.id);
|
|
27
|
+
await this.next();
|
|
28
|
+
});
|
|
29
|
+
// TODO: See what can be done in case an error on the thread
|
|
30
|
+
worker.on('error', async (error) => {
|
|
31
|
+
console.log(error);
|
|
32
|
+
this.releaseWorker(worker.getId());
|
|
33
|
+
await this.next();
|
|
34
|
+
});
|
|
35
|
+
this.workers.push(worker);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
releaseWorker(id) {
|
|
39
|
+
const wId = this.workers.findIndex(w => w.getId() === id);
|
|
40
|
+
const w = this.workers[wId];
|
|
41
|
+
w.release();
|
|
42
|
+
return w.getId();
|
|
43
|
+
}
|
|
44
|
+
async next() {
|
|
45
|
+
this.activeWorkers -= 1;
|
|
46
|
+
if (this.activeWorkers === 0 && this.jobsQueue.length === 0) {
|
|
47
|
+
await this.destroyAllWorkers();
|
|
48
|
+
this.resolve(this.results);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.processItem();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async destroyAllWorkers() {
|
|
55
|
+
for (const worker of this.workers) {
|
|
56
|
+
await worker.terminate(); // Terminate each worker
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async processQueue() {
|
|
60
|
+
return new Promise(async (resolve, reject) => {
|
|
61
|
+
this.resolve = resolve;
|
|
62
|
+
this.reject = reject;
|
|
63
|
+
this.processItem();
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
processItem() {
|
|
67
|
+
if (this.workers.length > 0 && this.jobsQueue.length > 0) {
|
|
68
|
+
const freeWorkerIndices = this.workers.reduce((indices, worker, index) => {
|
|
69
|
+
if (worker.isFree()) {
|
|
70
|
+
indices.push(index);
|
|
71
|
+
}
|
|
72
|
+
return indices;
|
|
73
|
+
}, []);
|
|
74
|
+
freeWorkerIndices.forEach(workerIndex => {
|
|
75
|
+
if (this.jobsQueue.length <= 0)
|
|
76
|
+
return;
|
|
77
|
+
const { item, reject } = this.jobsQueue.shift();
|
|
78
|
+
const worker = this.workers[workerIndex];
|
|
79
|
+
worker.run({ item, rules: this.cryptoRules, cryptoMapper: this.cryptoMapper });
|
|
80
|
+
this.activeWorkers += 1;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.ThreadPool = ThreadPool;
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhyZWFkUG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L1dvcmtlci9UaHJlYWRQb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEscUNBQW1EO0FBRW5ELE1BQWEsVUFBVTtJQW1CckIsWUFBWSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQXlCLEVBQUUsWUFBMEM7UUFmaEYsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFRckMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBTXhCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBZ0I7UUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssRUFB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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { TransferListItem, Worker as W } from 'worker_threads';
|
|
3
|
+
import { CryptoItem } from '../Scanneable/CryptoItem';
|
|
4
|
+
export interface IWorkerResponse {
|
|
5
|
+
result: CryptoItem;
|
|
6
|
+
id: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class Worker extends W {
|
|
9
|
+
private free;
|
|
10
|
+
constructor();
|
|
11
|
+
getId(): number;
|
|
12
|
+
release(): void;
|
|
13
|
+
isFree(): boolean;
|
|
14
|
+
on(event: any, listener: any): this;
|
|
15
|
+
run(value: any, transferList?: ReadonlyArray<TransferListItem>): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
exports.Worker = void 0;
|
|
3
|
+
const worker_threads_1 = require("worker_threads");
|
|
4
|
+
const stringWorker = `
|
|
5
|
+
const { parentPort } = require('worker_threads');
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
|
|
8
|
+
parentPort.on('message', async (data) => {
|
|
9
|
+
|
|
10
|
+
const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
|
|
11
|
+
|
|
12
|
+
const { item, rules , cryptoMapper, id } = data;
|
|
13
|
+
|
|
14
|
+
const cryptoFound = new Array();
|
|
15
|
+
const stats = await fs.promises.stat(item.file);
|
|
16
|
+
if (stats.size > MAX_FILE_SIZE) {
|
|
17
|
+
item.algorithms = [];
|
|
18
|
+
parentPort.postMessage({ result: item, id });
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let content = fs.readFileSync(item.file, 'utf-8');
|
|
23
|
+
rules.forEach((value, key) => {
|
|
24
|
+
try {
|
|
25
|
+
const matches = content.match(value);
|
|
26
|
+
if (matches) {
|
|
27
|
+
cryptoFound.push(key);
|
|
28
|
+
}
|
|
29
|
+
} catch (e){
|
|
30
|
+
console.error(e);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
const results = [];
|
|
34
|
+
cryptoFound.forEach((cf)=>{
|
|
35
|
+
results.push(cryptoMapper.get(cf));
|
|
36
|
+
});
|
|
37
|
+
item.algorithms = results;
|
|
38
|
+
parentPort.postMessage({ result: item, id });
|
|
39
|
+
});
|
|
40
|
+
`;
|
|
41
|
+
class Worker extends worker_threads_1.Worker {
|
|
42
|
+
constructor() {
|
|
43
|
+
super(stringWorker, { eval: true });
|
|
44
|
+
this.free = true;
|
|
45
|
+
}
|
|
46
|
+
getId() {
|
|
47
|
+
return this.threadId;
|
|
48
|
+
}
|
|
49
|
+
release() {
|
|
50
|
+
this.free = true;
|
|
51
|
+
}
|
|
52
|
+
isFree() {
|
|
53
|
+
return this.free;
|
|
54
|
+
}
|
|
55
|
+
on(event, listener) {
|
|
56
|
+
if (event === 'error') {
|
|
57
|
+
this.free = true;
|
|
58
|
+
}
|
|
59
|
+
// Call super.on with the provided arguments
|
|
60
|
+
return super.on(event, listener);
|
|
61
|
+
}
|
|
62
|
+
run(value, transferList) {
|
|
63
|
+
this.free = false;
|
|
64
|
+
this.postMessage(Object.assign(Object.assign({}, value), { id: this.threadId }));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.Worker = Worker;
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvV29ya2VyL1dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1EQUE4RTtBQUk5RSxNQUFNLFlBQVksR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0NwQixDQUFDO0FBT0YsTUFBYSxNQUFPLFNBQVEsdUJBQUM7SUFLM0I7UUFDRSxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVNLEtBQUs7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsRUFBRSxDQUFDLEtBQUssRUFBRSxRQUFRO1FBQ2hCLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUNELDRDQUE0QztRQUMzQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXBDLENBQUM7SUFDTSxHQUFHLENBQUUsS0FBVSxFQUFFLFlBQThDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLGlDQUFLLEtBQUssS0FBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBRyxDQUFDO0lBQ25ELENBQUM7Q0FFRjtBQW5DRCx3QkFtQ0MifQ==
|
|
@@ -6,10 +6,10 @@ exports.mapToILocalCryptographyResponse = void 0;
|
|
|
6
6
|
* @returns An ILocalCryptographyResponse object containing mapped cryptographic items.
|
|
7
7
|
*/
|
|
8
8
|
function mapToILocalCryptographyResponse(ci) {
|
|
9
|
-
const fileList = ci.map((c) => ({ file: c.
|
|
9
|
+
const fileList = ci.map((c) => ({ file: c.file, algorithms: c.algorithms }));
|
|
10
10
|
return {
|
|
11
11
|
fileList
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
exports.mapToILocalCryptographyResponse = mapToILocalCryptographyResponse;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvQWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS91dGlscy9hZGFwdGVycy9jcnlwdG9BZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBOzs7O0dBSUc7QUFDSCxTQUFnQiwrQkFBK0IsQ0FBQyxFQUFxQjtJQUNuRSxNQUFNLFFBQVEsR0FBdUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLE9BQU87UUFDTCxRQUFRO0tBQ1QsQ0FBQTtBQUNILENBQUM7QUFMRCwwRUFLQyJ9
|
|
@@ -1186,23 +1186,33 @@
|
|
|
1186
1186
|
"signature": "42ef1caff70c5da8c9c6ebc82ac2ebdc21bf60274786a6a4707b7d983e47f50c",
|
|
1187
1187
|
"affectsGlobalScope": false
|
|
1188
1188
|
},
|
|
1189
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts": {
|
|
1190
|
+
"version": "63d1850409c989b9486228d957316f536f1ff586ab0731eb763ab888148ea822",
|
|
1191
|
+
"signature": "ccb42ecdc7e2a04167368763d46f7eb3c79a44fbeda79498b8b42f0223c72909",
|
|
1192
|
+
"affectsGlobalScope": false
|
|
1193
|
+
},
|
|
1194
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts": {
|
|
1195
|
+
"version": "e8c8885745c6d05a2ed9c216322bf729908e3e60a8a1e47a08140557c9fb15ca",
|
|
1196
|
+
"signature": "37421d8f7f9700f710ad8a654635bdc1a42d46e8cf101604eedc49a23e6f877c",
|
|
1197
|
+
"affectsGlobalScope": false
|
|
1198
|
+
},
|
|
1189
1199
|
"../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts": {
|
|
1190
|
-
"version": "
|
|
1191
|
-
"signature": "
|
|
1200
|
+
"version": "7eff76625475ea0d15e0026797b4ba166acc54a6e8373e4993c32b85b12ac7da",
|
|
1201
|
+
"signature": "a26649da45a1cb7044e9ff16c813111ca599f24fde0b7a275ad4cafa200556fe",
|
|
1192
1202
|
"affectsGlobalScope": false
|
|
1193
1203
|
},
|
|
1194
1204
|
"../../src/sdk/Cryptography/CryptoCfg.ts": {
|
|
1195
|
-
"version": "
|
|
1196
|
-
"signature": "
|
|
1205
|
+
"version": "9d7472e2a06ed91f0d97cdb0be0aab4e805fe7b89d1b99024e0dc7bea2bd9975",
|
|
1206
|
+
"signature": "556b688ca25d64662be634b41ba6613f442f17b9e34608105f0d6c01c5e821b3",
|
|
1197
1207
|
"affectsGlobalScope": false
|
|
1198
1208
|
},
|
|
1199
1209
|
"../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": {
|
|
1200
|
-
"version": "
|
|
1210
|
+
"version": "ca0db37074d84c4c8d2a3ef96d5d3811ad92e4def2a03349ee05e08000d7fbbe",
|
|
1201
1211
|
"signature": "07fb866e2304237f9fde84da70e3443430d2a377c0b463ec475ac50ab69ce8e3",
|
|
1202
1212
|
"affectsGlobalScope": false
|
|
1203
1213
|
},
|
|
1204
1214
|
"../../src/sdk/Cryptography/CryptographyScanner.ts": {
|
|
1205
|
-
"version": "
|
|
1215
|
+
"version": "6468e7d976bd50b3388685836539234a8fad3b9feae5c36c72f88dc7312c4f98",
|
|
1206
1216
|
"signature": "8c3e8e247c583b1144e13ee4ffe30b01377687eb25d88af8828d69e96f17ddd4",
|
|
1207
1217
|
"affectsGlobalScope": false
|
|
1208
1218
|
},
|
|
@@ -1362,12 +1372,12 @@
|
|
|
1362
1372
|
"affectsGlobalScope": false
|
|
1363
1373
|
},
|
|
1364
1374
|
"../../src/cli/commands/crypto.ts": {
|
|
1365
|
-
"version": "
|
|
1375
|
+
"version": "406a726fb9349e5bc24ac82927f6cbc01b7029fae72362a47f4ac71d34ec4193",
|
|
1366
1376
|
"signature": "7facac4a5ac19854614a21eacbcb2f83eaadab500bd6f73aa80c7f8100cce221",
|
|
1367
1377
|
"affectsGlobalScope": false
|
|
1368
1378
|
},
|
|
1369
1379
|
"../../src/cli/bin/cli-bin.ts": {
|
|
1370
|
-
"version": "
|
|
1380
|
+
"version": "8556937d76e99dfb660e52ff7f714829ebe1cb548ded334a65d7d36c770d9bb3",
|
|
1371
1381
|
"signature": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
|
|
1372
1382
|
"affectsGlobalScope": false
|
|
1373
1383
|
},
|
|
@@ -2656,7 +2666,8 @@
|
|
|
2656
2666
|
"../../node_modules/@types/node/util.d.ts",
|
|
2657
2667
|
"../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts",
|
|
2658
2668
|
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
2659
|
-
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
2669
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
|
|
2670
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts"
|
|
2660
2671
|
],
|
|
2661
2672
|
"../../src/sdk/Cryptography/CryptographyScanner.ts": [
|
|
2662
2673
|
"../../node_modules/@types/node/fs.d.ts",
|
|
@@ -2675,6 +2686,18 @@
|
|
|
2675
2686
|
"../../node_modules/@types/node/util.d.ts",
|
|
2676
2687
|
"../../src/sdk/Cryptography/CryptographyTypes.ts"
|
|
2677
2688
|
],
|
|
2689
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
|
|
2690
|
+
"../../node_modules/@types/node/util.d.ts",
|
|
2691
|
+
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
2692
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
|
|
2693
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts"
|
|
2694
|
+
],
|
|
2695
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts": [
|
|
2696
|
+
"../../node_modules/@types/node/url.d.ts",
|
|
2697
|
+
"../../node_modules/@types/node/util.d.ts",
|
|
2698
|
+
"../../node_modules/@types/node/worker_threads.d.ts",
|
|
2699
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
2700
|
+
],
|
|
2678
2701
|
"../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
|
|
2679
2702
|
"../../node_modules/@types/node/util.d.ts",
|
|
2680
2703
|
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
@@ -4242,6 +4265,14 @@
|
|
|
4242
4265
|
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts": [
|
|
4243
4266
|
"../../src/sdk/Cryptography/CryptographyTypes.ts"
|
|
4244
4267
|
],
|
|
4268
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
|
|
4269
|
+
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
4270
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
4271
|
+
],
|
|
4272
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts": [
|
|
4273
|
+
"../../node_modules/@types/node/worker_threads.d.ts",
|
|
4274
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
4275
|
+
],
|
|
4245
4276
|
"../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
|
|
4246
4277
|
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
4247
4278
|
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
@@ -4670,6 +4701,8 @@
|
|
|
4670
4701
|
"../../src/sdk/Cryptography/CryptographyScanner.ts",
|
|
4671
4702
|
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
4672
4703
|
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
|
|
4704
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts",
|
|
4705
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts",
|
|
4673
4706
|
"../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts",
|
|
4674
4707
|
"../../src/sdk/Decompress/DecompressionManager.ts",
|
|
4675
4708
|
"../../src/sdk/Decompress/Decompressor/DecompressTgz.ts",
|
|
@@ -72,6 +72,7 @@ async function main() {
|
|
|
72
72
|
// Options
|
|
73
73
|
cryptography.addOption(new Option("-r, --rules <rules>", "Crypto rules"));
|
|
74
74
|
cryptography.addOption(new Option("-o, --output <filename>", "Output result file name (optional - default stdout)"));
|
|
75
|
+
cryptography.addOption(new Option("-T, --threads <threads>", "Number of threads to use while scanning (optional - default 5)"));
|
|
75
76
|
cryptography.action((source, options) => {
|
|
76
77
|
cryptoHandler(source, options).catch((e) => {
|
|
77
78
|
CLIErrorHandler(e);
|
|
@@ -93,4 +94,4 @@ catch (e) {
|
|
|
93
94
|
console.error(e);
|
|
94
95
|
process.exit(1);
|
|
95
96
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELFNBQVMsZUFBZSxDQUFDLENBQVE7SUFDL0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVELEtBQUssVUFBVSxJQUFJO0lBRWpCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUVBQWlFLENBQUMsQ0FBQztJQUU3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsOENBQThDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztJQUMzSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHdCQUF3QixFQUFFLCtDQUErQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDRCQUE0QixFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztJQUM1RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDhCQUE4QixFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztJQUM5RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDRCQUE0QixFQUFFLCtFQUErRSxDQUFDLENBQUMsQ0FBQztJQUMxSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztJQUNwRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDLENBQUMsQ0FBQztJQUM3RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLG1SQUFtUixDQUFDLENBQUMsQ0FBQztJQUN2VSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDJCQUEyQixFQUFFLGlGQUFpRixDQUFDLENBQUMsQ0FBQztJQUMzSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLDJEQUEyRCxDQUFDLENBQUMsQ0FBQztJ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
|
|
@@ -10,7 +10,10 @@ export async function cryptoHandler(rootPath, options) {
|
|
|
10
10
|
let cryptoRules = null;
|
|
11
11
|
if (options.rules)
|
|
12
12
|
cryptoRules = options.rules;
|
|
13
|
-
|
|
13
|
+
let threads = null;
|
|
14
|
+
if (options.threads)
|
|
15
|
+
threads = options.threads;
|
|
16
|
+
const cryptoScanner = new CryptographyScanner(new CryptoCfg({ threads, rulesPath: cryptoRules }));
|
|
14
17
|
let fileList = [];
|
|
15
18
|
fileList.push(rootPath);
|
|
16
19
|
if (pathIsFolder) {
|
|
@@ -28,4 +31,4 @@ export async function cryptoHandler(rootPath, options) {
|
|
|
28
31
|
console.log(JSON.stringify(results, null, 2));
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUtyQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sNENBQTRDLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFcEIsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQUMsUUFBZ0IsRUFBRSxPQUFZO0lBQ2hFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFFLGtDQUFrQztJQUMzRSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFFLDBDQUEwQztJQUNoRyxNQUFNLFlBQVksR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBRyxPQUFPLENBQUMsS0FBSztRQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRTlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhHLElBQUksUUFBUSxHQUFrQixFQUFFLENBQUM7SUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QixJQUFJLFlBQVksRUFBRTtRQUNoQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNuQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQTtJQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbkQsSUFBRyxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2pCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUNuRDtTQUFNO1FBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMvQztBQUVILENBQUMifQ==
|
|
@@ -2,15 +2,23 @@
|
|
|
2
2
|
* Represents a configuration for cryptography scanner.
|
|
3
3
|
*/
|
|
4
4
|
export declare class CryptoCfg {
|
|
5
|
+
private readonly DEFAULT_THREADS;
|
|
5
6
|
private readonly rulesPath;
|
|
7
|
+
private readonly threads;
|
|
6
8
|
/**
|
|
7
9
|
* Creates an instance of CryptoCfg.
|
|
8
|
-
* @param
|
|
10
|
+
* @param {Object} cfg - Configuration object.
|
|
11
|
+
* @param {number} [cfg.threads=5] - The number of threads to use. Defaults to 5 if not provided.
|
|
12
|
+
* @param {string} [cfg.rulesPath] - Optional. Path to the cryptography rules file.
|
|
9
13
|
*/
|
|
10
|
-
constructor(
|
|
14
|
+
constructor(cfg: {
|
|
15
|
+
threads: number;
|
|
16
|
+
rulesPath: string;
|
|
17
|
+
});
|
|
11
18
|
/**
|
|
12
19
|
* Gets the path to the cryptography rules file.
|
|
13
20
|
* @returns The path to the cryptography rules file.
|
|
14
21
|
*/
|
|
15
22
|
getRulesPath(): string;
|
|
23
|
+
getNumberOfThreads(): number;
|
|
16
24
|
}
|
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
export class CryptoCfg {
|
|
5
5
|
/**
|
|
6
6
|
* Creates an instance of CryptoCfg.
|
|
7
|
-
* @param
|
|
7
|
+
* @param {Object} cfg - Configuration object.
|
|
8
|
+
* @param {number} [cfg.threads=5] - The number of threads to use. Defaults to 5 if not provided.
|
|
9
|
+
* @param {string} [cfg.rulesPath] - Optional. Path to the cryptography rules file.
|
|
8
10
|
*/
|
|
9
|
-
constructor(
|
|
10
|
-
this.
|
|
11
|
+
constructor(cfg) {
|
|
12
|
+
this.DEFAULT_THREADS = 5;
|
|
13
|
+
this.rulesPath = cfg.rulesPath;
|
|
14
|
+
this.threads = cfg.threads ? Number(cfg.threads) : this.DEFAULT_THREADS;
|
|
11
15
|
}
|
|
12
16
|
/**
|
|
13
17
|
* Gets the path to the cryptography rules file.
|
|
@@ -16,5 +20,8 @@ export class CryptoCfg {
|
|
|
16
20
|
getRulesPath() {
|
|
17
21
|
return this.rulesPath;
|
|
18
22
|
}
|
|
23
|
+
getNumberOfThreads() {
|
|
24
|
+
return this.threads;
|
|
25
|
+
}
|
|
19
26
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvQ2ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFRcEI7Ozs7O09BS0c7SUFDRixZQUFhLEdBQTJDO1FBWnhDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBYWxDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDMUUsQ0FBQztJQUVGOzs7T0FHRztJQUNLLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FFSCJ9
|
|
@@ -6,20 +6,16 @@ import { CryptoAlgorithmRules } from '../CryptographyTypes';
|
|
|
6
6
|
export declare class LocalCrypto {
|
|
7
7
|
private cryptoMapper;
|
|
8
8
|
private cryptoRules;
|
|
9
|
+
private threads;
|
|
9
10
|
/**
|
|
10
11
|
* Constructs a new LocalCrypto.
|
|
11
12
|
* @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
|
|
13
|
+
* @param threads Number of threads to be use to scan local cryptography (default = 5).
|
|
12
14
|
*/
|
|
13
|
-
constructor(cryptoRules: Array<CryptoAlgorithmRules
|
|
15
|
+
constructor(cryptoRules: Array<CryptoAlgorithmRules>, threads: number);
|
|
14
16
|
/**
|
|
15
17
|
* Searches for cryptographic algorithms in the content of a files.
|
|
16
18
|
* @param files The files to search.
|
|
17
19
|
*/
|
|
18
20
|
search(files: Array<string>): Promise<Array<CryptoItem>>;
|
|
19
|
-
/**
|
|
20
|
-
* Asynchronously searches for cryptographic algorithms in the content of a file.
|
|
21
|
-
* @param cryptoItem The CryptoItem to search for cryptographic algorithms.
|
|
22
|
-
* @returns A promise that resolves when the search is complete.
|
|
23
|
-
*/
|
|
24
|
-
private searchCrypto;
|
|
25
21
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CryptoItem } from '../Scanneable/CryptoItem';
|
|
2
2
|
import { createCryptoKeywordMapper, getCryptoMapper, } from '../CryptoDef/CryptoDef';
|
|
3
|
-
import
|
|
3
|
+
import { ThreadPool } from '../Worker/ThreadPool';
|
|
4
4
|
/**
|
|
5
5
|
* Represents a CryptoCalculator used for searching cryptographic algorithms in files.
|
|
6
6
|
*/
|
|
@@ -8,10 +8,12 @@ export class LocalCrypto {
|
|
|
8
8
|
/**
|
|
9
9
|
* Constructs a new LocalCrypto.
|
|
10
10
|
* @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
|
|
11
|
+
* @param threads Number of threads to be use to scan local cryptography (default = 5).
|
|
11
12
|
*/
|
|
12
|
-
constructor(cryptoRules) {
|
|
13
|
+
constructor(cryptoRules, threads) {
|
|
13
14
|
this.cryptoRules = createCryptoKeywordMapper(cryptoRules);
|
|
14
15
|
this.cryptoMapper = getCryptoMapper(cryptoRules);
|
|
16
|
+
this.threads = threads;
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
17
19
|
* Searches for cryptographic algorithms in the content of a files.
|
|
@@ -20,36 +22,12 @@ export class LocalCrypto {
|
|
|
20
22
|
async search(files) {
|
|
21
23
|
if (files.length <= 0)
|
|
22
24
|
return [];
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}));
|
|
27
|
-
return cryptoItems;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Asynchronously searches for cryptographic algorithms in the content of a file.
|
|
31
|
-
* @param cryptoItem The CryptoItem to search for cryptographic algorithms.
|
|
32
|
-
* @returns A promise that resolves when the search is complete.
|
|
33
|
-
*/
|
|
34
|
-
async searchCrypto(cryptoItem) {
|
|
35
|
-
const cryptoFound = new Array();
|
|
36
|
-
let content = await fs.promises.readFile(cryptoItem.getPath(), 'utf-8');
|
|
37
|
-
this.cryptoRules.forEach((value, key) => {
|
|
38
|
-
try {
|
|
39
|
-
const matches = content.match(value);
|
|
40
|
-
if (matches) {
|
|
41
|
-
cryptoFound.push(key);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
catch (e) {
|
|
45
|
-
console.error(e);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
const results = [];
|
|
49
|
-
cryptoFound.forEach((cf) => {
|
|
50
|
-
results.push(this.cryptoMapper.get(cf));
|
|
25
|
+
const threadPool = new ThreadPool(this.threads, this.cryptoRules, this.cryptoMapper);
|
|
26
|
+
files.forEach((f) => {
|
|
27
|
+
threadPool.enqueueTask(new CryptoItem(f));
|
|
51
28
|
});
|
|
52
|
-
|
|
29
|
+
await threadPool.init();
|
|
30
|
+
return await threadPool.processQueue();
|
|
53
31
|
}
|
|
54
32
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxDcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9Qcm92aWRlci9Mb2NhbENyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUNMLHlCQUF5QixFQUFFLGVBQWUsR0FDM0MsTUFBTSx3QkFBd0IsQ0FBQztBQUdoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVF0Qjs7OztPQUlHO0lBQ0gsWUFBWSxXQUF3QyxFQUFFLE9BQWU7UUFDbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xCLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLE9BQU8sTUFBTSxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztDQUNGIn0=
|
|
@@ -21,7 +21,7 @@ export class CryptographyScanner {
|
|
|
21
21
|
*/
|
|
22
22
|
async scan(files) {
|
|
23
23
|
const cryptographyRules = await this.loadRules(this.cryptoConfig.getRulesPath());
|
|
24
|
-
const localCrypto = new LocalCrypto(cryptographyRules);
|
|
24
|
+
const localCrypto = new LocalCrypto(cryptographyRules, this.cryptoConfig.getNumberOfThreads());
|
|
25
25
|
const cryptoItems = await localCrypto.search(files);
|
|
26
26
|
return mapToILocalCryptographyResponse(cryptoItems);
|
|
27
27
|
}
|
|
@@ -48,4 +48,4 @@ export class CryptographyScanner {
|
|
|
48
48
|
return JSON.parse(rules);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTTNELE9BQU8sRUFDTCwrQkFBK0IsRUFDaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCOzs7T0FHRztJQUNILFlBQVksU0FBb0I7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQW9CO1FBQ3BDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNqRixNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRixNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsT0FBTywrQkFBK0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBaUI7UUFDdkMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxJQUFJLENBQ3JELFNBQVMsRUFDVCxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBRUYifQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CryptoAlgorithm } from '../CryptographyTypes';
|
|
2
|
+
import { CryptoItem } from '../Scanneable/CryptoItem';
|
|
3
|
+
export declare class ThreadPool {
|
|
4
|
+
private readonly maxWorkers;
|
|
5
|
+
private readonly workers;
|
|
6
|
+
private readonly jobsQueue;
|
|
7
|
+
private readonly cryptoRules;
|
|
8
|
+
private readonly cryptoMapper;
|
|
9
|
+
private results;
|
|
10
|
+
private activeWorkers;
|
|
11
|
+
private resolve;
|
|
12
|
+
private reject;
|
|
13
|
+
constructor(maxWorkers: number, rules: Map<string, RegExp>, cryptoMapper: Map<string, CryptoAlgorithm>);
|
|
14
|
+
enqueueTask(item: CryptoItem): Promise<unknown>;
|
|
15
|
+
init(): Promise<void>;
|
|
16
|
+
private releaseWorker;
|
|
17
|
+
private next;
|
|
18
|
+
private destroyAllWorkers;
|
|
19
|
+
processQueue(): Promise<Array<CryptoItem>>;
|
|
20
|
+
private processItem;
|
|
21
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Worker } from './Worker';
|
|
2
|
+
export class ThreadPool {
|
|
3
|
+
constructor(maxWorkers = 3, rules, cryptoMapper) {
|
|
4
|
+
this.workers = [];
|
|
5
|
+
this.results = [];
|
|
6
|
+
this.activeWorkers = 0;
|
|
7
|
+
this.maxWorkers = maxWorkers;
|
|
8
|
+
this.workers = [];
|
|
9
|
+
this.jobsQueue = [];
|
|
10
|
+
this.cryptoRules = rules;
|
|
11
|
+
this.cryptoMapper = cryptoMapper;
|
|
12
|
+
}
|
|
13
|
+
enqueueTask(item) {
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
const job = { item, resolve, reject };
|
|
16
|
+
this.jobsQueue.push(job);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async init() {
|
|
20
|
+
for (let i = 0; i < this.maxWorkers; i++) {
|
|
21
|
+
const worker = new Worker();
|
|
22
|
+
worker.on('message', async (item) => {
|
|
23
|
+
this.results.push(item.result);
|
|
24
|
+
this.releaseWorker(item.id);
|
|
25
|
+
await this.next();
|
|
26
|
+
});
|
|
27
|
+
// TODO: See what can be done in case an error on the thread
|
|
28
|
+
worker.on('error', async (error) => {
|
|
29
|
+
console.log(error);
|
|
30
|
+
this.releaseWorker(worker.getId());
|
|
31
|
+
await this.next();
|
|
32
|
+
});
|
|
33
|
+
this.workers.push(worker);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
releaseWorker(id) {
|
|
37
|
+
const wId = this.workers.findIndex(w => w.getId() === id);
|
|
38
|
+
const w = this.workers[wId];
|
|
39
|
+
w.release();
|
|
40
|
+
return w.getId();
|
|
41
|
+
}
|
|
42
|
+
async next() {
|
|
43
|
+
this.activeWorkers -= 1;
|
|
44
|
+
if (this.activeWorkers === 0 && this.jobsQueue.length === 0) {
|
|
45
|
+
await this.destroyAllWorkers();
|
|
46
|
+
this.resolve(this.results);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.processItem();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async destroyAllWorkers() {
|
|
53
|
+
for (const worker of this.workers) {
|
|
54
|
+
await worker.terminate(); // Terminate each worker
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async processQueue() {
|
|
58
|
+
return new Promise(async (resolve, reject) => {
|
|
59
|
+
this.resolve = resolve;
|
|
60
|
+
this.reject = reject;
|
|
61
|
+
this.processItem();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
processItem() {
|
|
65
|
+
if (this.workers.length > 0 && this.jobsQueue.length > 0) {
|
|
66
|
+
const freeWorkerIndices = this.workers.reduce((indices, worker, index) => {
|
|
67
|
+
if (worker.isFree()) {
|
|
68
|
+
indices.push(index);
|
|
69
|
+
}
|
|
70
|
+
return indices;
|
|
71
|
+
}, []);
|
|
72
|
+
freeWorkerIndices.forEach(workerIndex => {
|
|
73
|
+
if (this.jobsQueue.length <= 0)
|
|
74
|
+
return;
|
|
75
|
+
const { item, reject } = this.jobsQueue.shift();
|
|
76
|
+
const worker = this.workers[workerIndex];
|
|
77
|
+
worker.run({ item, rules: this.cryptoRules, cryptoMapper: this.cryptoMapper });
|
|
78
|
+
this.activeWorkers += 1;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhyZWFkUG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L1dvcmtlci9UaHJlYWRQb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBbUIsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5ELE1BQU0sT0FBTyxVQUFVO0lBbUJyQixZQUFZLFVBQVUsR0FBRyxDQUFDLEVBQUUsS0FBeUIsRUFBRSxZQUEwQztRQWZoRixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQVFyQyxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFNeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFnQjtRQUMxQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7WUFDNUIsTUFBTSxD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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { TransferListItem, Worker as W } from 'worker_threads';
|
|
3
|
+
import { CryptoItem } from '../Scanneable/CryptoItem';
|
|
4
|
+
export interface IWorkerResponse {
|
|
5
|
+
result: CryptoItem;
|
|
6
|
+
id: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class Worker extends W {
|
|
9
|
+
private free;
|
|
10
|
+
constructor();
|
|
11
|
+
getId(): number;
|
|
12
|
+
release(): void;
|
|
13
|
+
isFree(): boolean;
|
|
14
|
+
on(event: any, listener: any): this;
|
|
15
|
+
run(value: any, transferList?: ReadonlyArray<TransferListItem>): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Worker as W } from 'worker_threads';
|
|
2
|
+
const stringWorker = `
|
|
3
|
+
const { parentPort } = require('worker_threads');
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
|
|
6
|
+
parentPort.on('message', async (data) => {
|
|
7
|
+
|
|
8
|
+
const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
|
|
9
|
+
|
|
10
|
+
const { item, rules , cryptoMapper, id } = data;
|
|
11
|
+
|
|
12
|
+
const cryptoFound = new Array();
|
|
13
|
+
const stats = await fs.promises.stat(item.file);
|
|
14
|
+
if (stats.size > MAX_FILE_SIZE) {
|
|
15
|
+
item.algorithms = [];
|
|
16
|
+
parentPort.postMessage({ result: item, id });
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
let content = fs.readFileSync(item.file, 'utf-8');
|
|
21
|
+
rules.forEach((value, key) => {
|
|
22
|
+
try {
|
|
23
|
+
const matches = content.match(value);
|
|
24
|
+
if (matches) {
|
|
25
|
+
cryptoFound.push(key);
|
|
26
|
+
}
|
|
27
|
+
} catch (e){
|
|
28
|
+
console.error(e);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
const results = [];
|
|
32
|
+
cryptoFound.forEach((cf)=>{
|
|
33
|
+
results.push(cryptoMapper.get(cf));
|
|
34
|
+
});
|
|
35
|
+
item.algorithms = results;
|
|
36
|
+
parentPort.postMessage({ result: item, id });
|
|
37
|
+
});
|
|
38
|
+
`;
|
|
39
|
+
export class Worker extends W {
|
|
40
|
+
constructor() {
|
|
41
|
+
super(stringWorker, { eval: true });
|
|
42
|
+
this.free = true;
|
|
43
|
+
}
|
|
44
|
+
getId() {
|
|
45
|
+
return this.threadId;
|
|
46
|
+
}
|
|
47
|
+
release() {
|
|
48
|
+
this.free = true;
|
|
49
|
+
}
|
|
50
|
+
isFree() {
|
|
51
|
+
return this.free;
|
|
52
|
+
}
|
|
53
|
+
on(event, listener) {
|
|
54
|
+
if (event === 'error') {
|
|
55
|
+
this.free = true;
|
|
56
|
+
}
|
|
57
|
+
// Call super.on with the provided arguments
|
|
58
|
+
return super.on(event, listener);
|
|
59
|
+
}
|
|
60
|
+
run(value, transferList) {
|
|
61
|
+
this.free = false;
|
|
62
|
+
this.postMessage({ ...value, id: this.threadId });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvV29ya2VyL1dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLE1BQU0sSUFBSSxDQUFDLEVBQWlCLE1BQU0sZ0JBQWdCLENBQUM7QUFJOUUsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9DcEIsQ0FBQztBQU9GLE1BQU0sT0FBTyxNQUFPLFNBQVEsQ0FBQztJQUszQjtRQUNFLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sS0FBSztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVE7UUFDaEIsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCO1FBQ0QsNENBQTRDO1FBQzNDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFcEMsQ0FBQztJQUNNLEdBQUcsQ0FBRSxLQUFVLEVBQUUsWUFBOEM7UUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBRUYifQ==
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* @returns An ILocalCryptographyResponse object containing mapped cryptographic items.
|
|
5
5
|
*/
|
|
6
6
|
export function mapToILocalCryptographyResponse(ci) {
|
|
7
|
-
const fileList = ci.map((c) => ({ file: c.
|
|
7
|
+
const fileList = ci.map((c) => ({ file: c.file, algorithms: c.algorithms }));
|
|
8
8
|
return {
|
|
9
9
|
fileList
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvQWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS91dGlscy9hZGFwdGVycy9jcnlwdG9BZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUFDLEVBQXFCO0lBQ25FLE1BQU0sUUFBUSxHQUF1QixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEcsT0FBTztRQUNMLFFBQVE7S0FDVCxDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -1186,23 +1186,33 @@
|
|
|
1186
1186
|
"signature": "42ef1caff70c5da8c9c6ebc82ac2ebdc21bf60274786a6a4707b7d983e47f50c",
|
|
1187
1187
|
"affectsGlobalScope": false
|
|
1188
1188
|
},
|
|
1189
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts": {
|
|
1190
|
+
"version": "63d1850409c989b9486228d957316f536f1ff586ab0731eb763ab888148ea822",
|
|
1191
|
+
"signature": "ccb42ecdc7e2a04167368763d46f7eb3c79a44fbeda79498b8b42f0223c72909",
|
|
1192
|
+
"affectsGlobalScope": false
|
|
1193
|
+
},
|
|
1194
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts": {
|
|
1195
|
+
"version": "e8c8885745c6d05a2ed9c216322bf729908e3e60a8a1e47a08140557c9fb15ca",
|
|
1196
|
+
"signature": "37421d8f7f9700f710ad8a654635bdc1a42d46e8cf101604eedc49a23e6f877c",
|
|
1197
|
+
"affectsGlobalScope": false
|
|
1198
|
+
},
|
|
1189
1199
|
"../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts": {
|
|
1190
|
-
"version": "
|
|
1191
|
-
"signature": "
|
|
1200
|
+
"version": "7eff76625475ea0d15e0026797b4ba166acc54a6e8373e4993c32b85b12ac7da",
|
|
1201
|
+
"signature": "a26649da45a1cb7044e9ff16c813111ca599f24fde0b7a275ad4cafa200556fe",
|
|
1192
1202
|
"affectsGlobalScope": false
|
|
1193
1203
|
},
|
|
1194
1204
|
"../../src/sdk/Cryptography/CryptoCfg.ts": {
|
|
1195
|
-
"version": "
|
|
1196
|
-
"signature": "
|
|
1205
|
+
"version": "9d7472e2a06ed91f0d97cdb0be0aab4e805fe7b89d1b99024e0dc7bea2bd9975",
|
|
1206
|
+
"signature": "556b688ca25d64662be634b41ba6613f442f17b9e34608105f0d6c01c5e821b3",
|
|
1197
1207
|
"affectsGlobalScope": false
|
|
1198
1208
|
},
|
|
1199
1209
|
"../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": {
|
|
1200
|
-
"version": "
|
|
1210
|
+
"version": "ca0db37074d84c4c8d2a3ef96d5d3811ad92e4def2a03349ee05e08000d7fbbe",
|
|
1201
1211
|
"signature": "07fb866e2304237f9fde84da70e3443430d2a377c0b463ec475ac50ab69ce8e3",
|
|
1202
1212
|
"affectsGlobalScope": false
|
|
1203
1213
|
},
|
|
1204
1214
|
"../../src/sdk/Cryptography/CryptographyScanner.ts": {
|
|
1205
|
-
"version": "
|
|
1215
|
+
"version": "6468e7d976bd50b3388685836539234a8fad3b9feae5c36c72f88dc7312c4f98",
|
|
1206
1216
|
"signature": "8c3e8e247c583b1144e13ee4ffe30b01377687eb25d88af8828d69e96f17ddd4",
|
|
1207
1217
|
"affectsGlobalScope": false
|
|
1208
1218
|
},
|
|
@@ -1362,12 +1372,12 @@
|
|
|
1362
1372
|
"affectsGlobalScope": false
|
|
1363
1373
|
},
|
|
1364
1374
|
"../../src/cli/commands/crypto.ts": {
|
|
1365
|
-
"version": "
|
|
1375
|
+
"version": "406a726fb9349e5bc24ac82927f6cbc01b7029fae72362a47f4ac71d34ec4193",
|
|
1366
1376
|
"signature": "7facac4a5ac19854614a21eacbcb2f83eaadab500bd6f73aa80c7f8100cce221",
|
|
1367
1377
|
"affectsGlobalScope": false
|
|
1368
1378
|
},
|
|
1369
1379
|
"../../src/cli/bin/cli-bin.ts": {
|
|
1370
|
-
"version": "
|
|
1380
|
+
"version": "8556937d76e99dfb660e52ff7f714829ebe1cb548ded334a65d7d36c770d9bb3",
|
|
1371
1381
|
"signature": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
|
|
1372
1382
|
"affectsGlobalScope": false
|
|
1373
1383
|
},
|
|
@@ -2656,7 +2666,8 @@
|
|
|
2656
2666
|
"../../node_modules/@types/node/util.d.ts",
|
|
2657
2667
|
"../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts",
|
|
2658
2668
|
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
2659
|
-
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
2669
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
|
|
2670
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts"
|
|
2660
2671
|
],
|
|
2661
2672
|
"../../src/sdk/Cryptography/CryptographyScanner.ts": [
|
|
2662
2673
|
"../../node_modules/@types/node/fs.d.ts",
|
|
@@ -2675,6 +2686,18 @@
|
|
|
2675
2686
|
"../../node_modules/@types/node/util.d.ts",
|
|
2676
2687
|
"../../src/sdk/Cryptography/CryptographyTypes.ts"
|
|
2677
2688
|
],
|
|
2689
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
|
|
2690
|
+
"../../node_modules/@types/node/util.d.ts",
|
|
2691
|
+
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
2692
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
|
|
2693
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts"
|
|
2694
|
+
],
|
|
2695
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts": [
|
|
2696
|
+
"../../node_modules/@types/node/url.d.ts",
|
|
2697
|
+
"../../node_modules/@types/node/util.d.ts",
|
|
2698
|
+
"../../node_modules/@types/node/worker_threads.d.ts",
|
|
2699
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
2700
|
+
],
|
|
2678
2701
|
"../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
|
|
2679
2702
|
"../../node_modules/@types/node/util.d.ts",
|
|
2680
2703
|
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
@@ -4242,6 +4265,14 @@
|
|
|
4242
4265
|
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts": [
|
|
4243
4266
|
"../../src/sdk/Cryptography/CryptographyTypes.ts"
|
|
4244
4267
|
],
|
|
4268
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
|
|
4269
|
+
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
4270
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
4271
|
+
],
|
|
4272
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts": [
|
|
4273
|
+
"../../node_modules/@types/node/worker_threads.d.ts",
|
|
4274
|
+
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
4275
|
+
],
|
|
4245
4276
|
"../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
|
|
4246
4277
|
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
4247
4278
|
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
|
|
@@ -4670,6 +4701,8 @@
|
|
|
4670
4701
|
"../../src/sdk/Cryptography/CryptographyScanner.ts",
|
|
4671
4702
|
"../../src/sdk/Cryptography/CryptographyTypes.ts",
|
|
4672
4703
|
"../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
|
|
4704
|
+
"../../src/sdk/Cryptography/Worker/ThreadPool.ts",
|
|
4705
|
+
"../../src/sdk/Cryptography/Worker/Worker.ts",
|
|
4673
4706
|
"../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts",
|
|
4674
4707
|
"../../src/sdk/Decompress/DecompressionManager.ts",
|
|
4675
4708
|
"../../src/sdk/Decompress/Decompressor/DecompressTgz.ts",
|
package/package.json
CHANGED