greybel-mock-environment 1.0.3 → 1.0.5
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/dist/default-fs.d.ts +2 -2
- package/dist/environment.d.ts +13 -44
- package/dist/environment.js +119 -360
- package/dist/generators/basic.d.ts +19 -0
- package/dist/generators/basic.js +83 -0
- package/dist/generators/email.d.ts +17 -0
- package/dist/generators/email.js +24 -0
- package/dist/generators/index.d.ts +5 -0
- package/dist/generators/index.js +16 -0
- package/dist/generators/network.d.ts +48 -0
- package/dist/generators/network.js +238 -0
- package/dist/generators/user.d.ts +15 -0
- package/dist/generators/user.js +29 -0
- package/dist/generators/vulnerability.d.ts +20 -0
- package/dist/generators/vulnerability.js +114 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5 -1
- package/dist/types/computer.d.ts +9 -0
- package/dist/types/computer.js +29 -0
- package/dist/types/device.d.ts +21 -0
- package/dist/types/device.js +15 -0
- package/dist/types/email.d.ts +16 -0
- package/dist/types/email.js +20 -0
- package/dist/types/file-system.d.ts +56 -0
- package/dist/types/file-system.js +74 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.js +36 -0
- package/dist/types/network-device.d.ts +11 -0
- package/dist/types/network-device.js +12 -0
- package/dist/types/port.d.ts +14 -0
- package/dist/types/port.js +13 -0
- package/dist/types/router.d.ts +13 -0
- package/dist/types/router.js +32 -0
- package/dist/types/service.d.ts +9 -0
- package/dist/types/service.js +20 -0
- package/dist/types/switch.d.ts +8 -0
- package/dist/types/switch.js +29 -0
- package/dist/types/user.d.ts +14 -0
- package/dist/types/user.js +18 -0
- package/dist/types/vulnerabilities.d.ts +63 -0
- package/dist/{types.js → types/vulnerabilities.js} +16 -39
- package/dist/types/wifi-network.d.ts +20 -0
- package/dist/types/wifi-network.js +16 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +11 -0
- package/package.json +1 -1
- package/dist/types.d.ts +0 -152
package/dist/default-fs.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function getUserFolder(parent:
|
|
1
|
+
import { Folder, FSEntity, User } from './types';
|
|
2
|
+
export declare function getUserFolder(parent: FSEntity, user: string): Folder;
|
|
3
3
|
export declare function getDefaultFileSystem(users: User[]): Folder;
|
package/dist/environment.d.ts
CHANGED
|
@@ -1,59 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import BasicGenerator from './generators/basic';
|
|
2
|
+
import EmailGenerator from './generators/email';
|
|
3
|
+
import NetworkGenerator from './generators/network';
|
|
4
|
+
import UserGenerator from './generators/user';
|
|
5
|
+
import VulnerabilityGenerator from './generators/vulnerability';
|
|
6
|
+
import { Computer, EMail, Port, Router, Switch, User } from './types';
|
|
3
7
|
export default class MockEnvironment {
|
|
4
8
|
seed: string;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
passwordRng: RandomSeed;
|
|
11
|
-
usernameRng: RandomSeed;
|
|
12
|
-
portRng: RandomSeed;
|
|
13
|
-
users: User[];
|
|
14
|
-
routers: Router[];
|
|
15
|
-
computers: Computer[];
|
|
16
|
-
vulnerabilities: Vulnerability[];
|
|
17
|
-
networks: Network[];
|
|
18
|
-
emails: EMail[];
|
|
9
|
+
basicGenerator: BasicGenerator;
|
|
10
|
+
emailGenerator: EmailGenerator;
|
|
11
|
+
userGenerator: UserGenerator;
|
|
12
|
+
vulnerabilityGenerator: VulnerabilityGenerator;
|
|
13
|
+
networkGenerator: NetworkGenerator;
|
|
19
14
|
localComputer: Computer;
|
|
20
15
|
constructor(seed: string, localUser: {
|
|
21
16
|
username: string;
|
|
22
17
|
password: string;
|
|
23
18
|
});
|
|
24
|
-
generateUser(username: string, password: string): User;
|
|
25
|
-
generateDomain(): string;
|
|
26
|
-
generateEmail(options: {
|
|
27
|
-
name?: string;
|
|
28
|
-
domain?: string;
|
|
29
|
-
password?: string;
|
|
30
|
-
}): string;
|
|
31
|
-
generateRouter(options?: Partial<Router>): Router;
|
|
32
|
-
generateComputer(router: Router | null, users: User[], rootPassword?: string): Computer;
|
|
33
|
-
generatePorts(computer: Computer): Port[];
|
|
34
19
|
getComputerInLan(ipAddress: string, router: Router): Computer | null;
|
|
35
20
|
getComputersOfRouter(router: Router): Computer[];
|
|
36
21
|
getPortsOfRouter(router: Router): Port[];
|
|
37
22
|
getForwardedPortsOfRouter(router: Router): Port[];
|
|
38
23
|
getForwardedPortOfRouter(router: Router, port: number): {
|
|
39
|
-
computer: Computer;
|
|
40
24
|
port: Port;
|
|
25
|
+
computer: Computer;
|
|
41
26
|
} | null;
|
|
42
|
-
generateNetworkDevice(): NetworkDevice;
|
|
43
|
-
generateIp(): string;
|
|
44
|
-
generateLocalIp(): string;
|
|
45
|
-
generateMAC(): string;
|
|
46
|
-
generateUUID(): string;
|
|
47
|
-
generateUsername(): string;
|
|
48
|
-
generatePassword(): string;
|
|
49
|
-
generateNetwork(router: Router, options?: Partial<Network>): Network;
|
|
50
|
-
generateVulnerabilityAddress(): string;
|
|
51
|
-
generateVulnerability(library: Library, memAddress: string, remote: boolean): Vulnerability;
|
|
52
|
-
generateSectorVulnerabilities(library: Library, sector: string, remote: boolean): Vulnerability[];
|
|
53
|
-
generateVulnerabilitiesForLibrary(library: Library, options?: {
|
|
54
|
-
remote?: boolean;
|
|
55
|
-
local?: boolean;
|
|
56
|
-
}): void;
|
|
57
27
|
setupLibraries(): void;
|
|
58
28
|
getLocal(): {
|
|
59
29
|
computer: Computer;
|
|
@@ -61,10 +31,9 @@ export default class MockEnvironment {
|
|
|
61
31
|
};
|
|
62
32
|
connectLocal(router: Router): void;
|
|
63
33
|
getRouterByIp(ipAddress: string): Router | null;
|
|
34
|
+
getSwitchByIp(ipAddress: string): Switch | null;
|
|
64
35
|
getComputersOfRouterByIp(ipAddress: string): Computer[];
|
|
65
36
|
findRouterViaNS(name: string): Router;
|
|
66
37
|
getEmailViaLogin(email: string, password: string): EMail | null;
|
|
67
38
|
getEmail(email: string): EMail | null;
|
|
68
|
-
isValidIp(target: string): boolean;
|
|
69
|
-
isLanIp(target: string): boolean;
|
|
70
39
|
}
|
package/dist/environment.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __values = (this && this.__values) || function(o) {
|
|
3
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
|
+
if (m) return m.call(o);
|
|
5
|
+
if (o && typeof o.length === "number") return {
|
|
6
|
+
next: function () {
|
|
7
|
+
if (o && i >= o.length) o = void 0;
|
|
8
|
+
return { value: o && o[i++], done: !o };
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
+
};
|
|
2
13
|
var __read = (this && this.__read) || function (o, n) {
|
|
3
14
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
15
|
if (!m) return o;
|
|
@@ -15,157 +26,43 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
15
26
|
}
|
|
16
27
|
return ar;
|
|
17
28
|
};
|
|
18
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
-
if (ar || !(i in from)) {
|
|
21
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
-
ar[i] = from[i];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
-
};
|
|
27
|
-
var __values = (this && this.__values) || function(o) {
|
|
28
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
29
|
-
if (m) return m.call(o);
|
|
30
|
-
if (o && typeof o.length === "number") return {
|
|
31
|
-
next: function () {
|
|
32
|
-
if (o && i >= o.length) o = void 0;
|
|
33
|
-
return { value: o && o[i++], done: !o };
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
37
|
-
};
|
|
38
29
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
30
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
31
|
};
|
|
41
32
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
var
|
|
43
|
-
var
|
|
44
|
-
var
|
|
33
|
+
var basic_1 = __importDefault(require("./generators/basic"));
|
|
34
|
+
var email_1 = __importDefault(require("./generators/email"));
|
|
35
|
+
var network_1 = __importDefault(require("./generators/network"));
|
|
36
|
+
var user_1 = __importDefault(require("./generators/user"));
|
|
37
|
+
var vulnerability_1 = __importDefault(require("./generators/vulnerability"));
|
|
45
38
|
var types_1 = require("./types");
|
|
46
|
-
var
|
|
39
|
+
var utils_1 = require("./utils");
|
|
47
40
|
var MockEnvironment = /** @class */ (function () {
|
|
48
41
|
function MockEnvironment(seed, localUser) {
|
|
49
42
|
if (seed === void 0) { seed = 'test'; }
|
|
50
43
|
this.seed = seed;
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
this.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
this.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.
|
|
44
|
+
this.basicGenerator = new basic_1.default({ seed: seed });
|
|
45
|
+
this.emailGenerator = new email_1.default({
|
|
46
|
+
seed: seed,
|
|
47
|
+
basicGenerator: this.basicGenerator
|
|
48
|
+
});
|
|
49
|
+
this.userGenerator = new user_1.default({
|
|
50
|
+
seed: seed,
|
|
51
|
+
basicGenerator: this.basicGenerator,
|
|
52
|
+
emailGenerator: this.emailGenerator
|
|
53
|
+
});
|
|
54
|
+
this.vulnerabilityGenerator = new vulnerability_1.default({
|
|
55
|
+
seed: seed,
|
|
56
|
+
basicGenerator: this.basicGenerator
|
|
57
|
+
});
|
|
58
|
+
this.networkGenerator = new network_1.default({
|
|
59
|
+
seed: seed,
|
|
60
|
+
basicGenerator: this.basicGenerator,
|
|
61
|
+
userGenerator: this.userGenerator,
|
|
62
|
+
emailGenerator: this.emailGenerator
|
|
63
|
+
});
|
|
64
|
+
this.localComputer = this.networkGenerator.generateLocalComputer([this.userGenerator.generate(localUser.username, localUser.password)], 'test');
|
|
66
65
|
}
|
|
67
|
-
MockEnvironment.prototype.generateUser = function (username, password) {
|
|
68
|
-
var me = this;
|
|
69
|
-
var user = {
|
|
70
|
-
username: username,
|
|
71
|
-
password: password,
|
|
72
|
-
passwordHashed: (0, blueimp_md5_1.default)(password),
|
|
73
|
-
email: me.generateEmail({
|
|
74
|
-
name: username,
|
|
75
|
-
password: password
|
|
76
|
-
}),
|
|
77
|
-
userBankNumber: me.bankIdRng.random().toString(36).substring(2, 10)
|
|
78
|
-
};
|
|
79
|
-
me.users.push(user);
|
|
80
|
-
return user;
|
|
81
|
-
};
|
|
82
|
-
MockEnvironment.prototype.generateDomain = function () {
|
|
83
|
-
var me = this;
|
|
84
|
-
return "".concat(me.generateUsername(), ".").concat(['org', 'com', 'de', 'tv'][me.networkRng.intBetween(0, 3)]);
|
|
85
|
-
};
|
|
86
|
-
MockEnvironment.prototype.generateEmail = function (options) {
|
|
87
|
-
var me = this;
|
|
88
|
-
var email = "".concat(options.name || me.generateUsername(), "@").concat(options.domain || me.generateDomain());
|
|
89
|
-
me.emails.push({
|
|
90
|
-
email: email,
|
|
91
|
-
password: options.password || me.generatePassword(),
|
|
92
|
-
messages: new Map()
|
|
93
|
-
});
|
|
94
|
-
return email;
|
|
95
|
-
};
|
|
96
|
-
MockEnvironment.prototype.generateRouter = function (options) {
|
|
97
|
-
if (options === void 0) { options = {}; }
|
|
98
|
-
var me = this;
|
|
99
|
-
var networkDevice = me.generateNetworkDevice();
|
|
100
|
-
var routerUsers = [
|
|
101
|
-
me.generateUser('root', me.generatePassword()),
|
|
102
|
-
me.generateUser(me.generateUsername(), me.generatePassword())
|
|
103
|
-
];
|
|
104
|
-
var domain = me.generateDomain();
|
|
105
|
-
var name = me.generateUsername();
|
|
106
|
-
var router = {
|
|
107
|
-
domain: options.domain || "www.".concat(domain),
|
|
108
|
-
whoisDescription: options.whoisDescription ||
|
|
109
|
-
[
|
|
110
|
-
"Domain name: ".concat(domain),
|
|
111
|
-
"Administrative contact: ".concat(name),
|
|
112
|
-
"Email address: ".concat(me.generateEmail({ name: name, domain: domain })),
|
|
113
|
-
'Phone: 123456891'
|
|
114
|
-
].join('\n'),
|
|
115
|
-
publicIp: options.publicIp || me.generateIp(),
|
|
116
|
-
localIp: options.localIp || me.generateLocalIp(),
|
|
117
|
-
activeNetCard: options.activeNetCard || networkDevice.type,
|
|
118
|
-
networkDevices: options.networkDevices || [networkDevice],
|
|
119
|
-
users: options.users || routerUsers,
|
|
120
|
-
fileSystem: options.fileSystem || (0, default_fs_1.getDefaultFileSystem)(routerUsers)
|
|
121
|
-
};
|
|
122
|
-
for (var index = me.networkRng.intBetween(4, 10); index >= 0; index--) {
|
|
123
|
-
me.generateComputer(router, [
|
|
124
|
-
me.generateUser(me.generateUsername(), me.generatePassword())
|
|
125
|
-
]);
|
|
126
|
-
}
|
|
127
|
-
me.routers.push(router);
|
|
128
|
-
return router;
|
|
129
|
-
};
|
|
130
|
-
MockEnvironment.prototype.generateComputer = function (router, users, rootPassword) {
|
|
131
|
-
var me = this;
|
|
132
|
-
var networkDevice = me.generateNetworkDevice();
|
|
133
|
-
var computerUsers = __spreadArray([
|
|
134
|
-
me.generateUser('root', rootPassword || me.generatePassword())
|
|
135
|
-
], __read(users), false);
|
|
136
|
-
var computer = {
|
|
137
|
-
router: router,
|
|
138
|
-
localIp: me.generateLocalIp(),
|
|
139
|
-
activeNetCard: networkDevice.type,
|
|
140
|
-
networkDevices: [networkDevice],
|
|
141
|
-
users: computerUsers,
|
|
142
|
-
fileSystem: (0, default_fs_1.getDefaultFileSystem)(computerUsers),
|
|
143
|
-
ports: []
|
|
144
|
-
};
|
|
145
|
-
computer.ports = me.generatePorts(computer);
|
|
146
|
-
me.computers.push(computer);
|
|
147
|
-
return computer;
|
|
148
|
-
};
|
|
149
|
-
MockEnvironment.prototype.generatePorts = function (computer) {
|
|
150
|
-
var me = this;
|
|
151
|
-
var portNumber = me.portRng.intBetween(1, 1000);
|
|
152
|
-
var router = computer.router;
|
|
153
|
-
var forwarded = false;
|
|
154
|
-
if (router) {
|
|
155
|
-
var forwardedPort = me.getForwardedPortOfRouter(router, portNumber);
|
|
156
|
-
if (!forwardedPort) {
|
|
157
|
-
forwarded = me.networkRng.intBetween(0, 2) === 1;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return __spreadArray([], __read(Array(me.portRng.intBetween(1, 3)).keys()), false).map(function () {
|
|
161
|
-
return {
|
|
162
|
-
port: me.portRng.intBetween(1, 1000),
|
|
163
|
-
isClosed: !!me.portRng.intBetween(0, 1),
|
|
164
|
-
service: types_1.ServiceList[me.portRng.intBetween(0, 5)],
|
|
165
|
-
forwarded: forwarded
|
|
166
|
-
};
|
|
167
|
-
});
|
|
168
|
-
};
|
|
169
66
|
MockEnvironment.prototype.getComputerInLan = function (ipAddress, router) {
|
|
170
67
|
var me = this;
|
|
171
68
|
return me.getComputersOfRouter(router).find(function (v) {
|
|
@@ -173,240 +70,67 @@ var MockEnvironment = /** @class */ (function () {
|
|
|
173
70
|
});
|
|
174
71
|
};
|
|
175
72
|
MockEnvironment.prototype.getComputersOfRouter = function (router) {
|
|
176
|
-
|
|
177
|
-
return me.computers.filter(function (v) {
|
|
178
|
-
var _a;
|
|
179
|
-
return ((_a = v.router) === null || _a === void 0 ? void 0 : _a.publicIp) === router.publicIp;
|
|
180
|
-
});
|
|
73
|
+
return Array.from(router.devices.values()).filter(function (d) { return d instanceof types_1.Computer; });
|
|
181
74
|
};
|
|
182
75
|
MockEnvironment.prototype.getPortsOfRouter = function (router) {
|
|
183
|
-
|
|
184
|
-
var computers = me.getComputersOfRouter(router);
|
|
185
|
-
return [].concat.apply([], __spreadArray([], __read(computers.map(function (v) {
|
|
186
|
-
return v.ports;
|
|
187
|
-
})), false));
|
|
76
|
+
return Array.from(router.ports.values());
|
|
188
77
|
};
|
|
189
78
|
MockEnvironment.prototype.getForwardedPortsOfRouter = function (router) {
|
|
190
79
|
var me = this;
|
|
191
80
|
return me.getPortsOfRouter(router).filter(function (v) { return v.forwarded; });
|
|
192
81
|
};
|
|
193
82
|
MockEnvironment.prototype.getForwardedPortOfRouter = function (router, port) {
|
|
194
|
-
var e_1, _a, e_2, _b;
|
|
195
83
|
var me = this;
|
|
196
|
-
var computers = me.
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
});
|
|
200
|
-
var computerResult;
|
|
201
|
-
var portResult;
|
|
202
|
-
try {
|
|
203
|
-
for (var computers_1 = __values(computers), computers_1_1 = computers_1.next(); !computers_1_1.done; computers_1_1 = computers_1.next()) {
|
|
204
|
-
var item = computers_1_1.value;
|
|
205
|
-
if (item.ports) {
|
|
206
|
-
try {
|
|
207
|
-
for (var _c = (e_2 = void 0, __values(item.ports)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
208
|
-
var itemPort = _d.value;
|
|
209
|
-
if (itemPort.port === port && itemPort.forwarded) {
|
|
210
|
-
computerResult = item;
|
|
211
|
-
portResult = itemPort;
|
|
212
|
-
break;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
217
|
-
finally {
|
|
218
|
-
try {
|
|
219
|
-
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
|
|
220
|
-
}
|
|
221
|
-
finally { if (e_2) throw e_2.error; }
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
if (computerResult || portResult) {
|
|
225
|
-
break;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
230
|
-
finally {
|
|
231
|
-
try {
|
|
232
|
-
if (computers_1_1 && !computers_1_1.done && (_a = computers_1.return)) _a.call(computers_1);
|
|
233
|
-
}
|
|
234
|
-
finally { if (e_1) throw e_1.error; }
|
|
235
|
-
}
|
|
236
|
-
if (!computerResult || !portResult) {
|
|
84
|
+
var computers = me.getComputersOfRouter(router);
|
|
85
|
+
var computer = computers.find(function (c) { return c.ports.has(port); });
|
|
86
|
+
if (!computer) {
|
|
237
87
|
return null;
|
|
238
88
|
}
|
|
239
89
|
return {
|
|
240
|
-
computer:
|
|
241
|
-
port:
|
|
242
|
-
};
|
|
243
|
-
};
|
|
244
|
-
MockEnvironment.prototype.generateNetworkDevice = function () {
|
|
245
|
-
return {
|
|
246
|
-
type: this.networkRng.intBetween(0, 1) === 0 ? 'wlan0' : 'eth0',
|
|
247
|
-
id: this.networkRng.random().toString(36).substring(2, 10),
|
|
248
|
-
active: true
|
|
249
|
-
};
|
|
250
|
-
};
|
|
251
|
-
MockEnvironment.prototype.generateIp = function () {
|
|
252
|
-
var me = this;
|
|
253
|
-
return "".concat(me.networkRng.intBetween(0, 255), ".").concat(me.networkRng.intBetween(0, 255), ".").concat(me.networkRng.intBetween(0, 255), ".").concat(me.networkRng.intBetween(0, 255));
|
|
254
|
-
};
|
|
255
|
-
MockEnvironment.prototype.generateLocalIp = function () {
|
|
256
|
-
var me = this;
|
|
257
|
-
return "192.168.".concat(me.networkRng.intBetween(0, 255), ".").concat(me.networkRng.intBetween(0, 255));
|
|
258
|
-
};
|
|
259
|
-
MockEnvironment.prototype.generateMAC = function () {
|
|
260
|
-
var me = this;
|
|
261
|
-
var d = '0123456789ABCDEF';
|
|
262
|
-
return __spreadArray([], __read(Array(6).keys()), false).map(function () {
|
|
263
|
-
return (d[me.macAddressRng.intBetween(0, 15)] +
|
|
264
|
-
d[me.macAddressRng.intBetween(0, 15)]);
|
|
265
|
-
})
|
|
266
|
-
.join(':');
|
|
267
|
-
};
|
|
268
|
-
MockEnvironment.prototype.generateUUID = function () {
|
|
269
|
-
var me = this;
|
|
270
|
-
var dt = me.uuidRng.random();
|
|
271
|
-
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
272
|
-
var r = (dt + me.uuidRng.random() * 16) % 16 | 0;
|
|
273
|
-
dt = Math.floor(dt / 16);
|
|
274
|
-
return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
|
|
275
|
-
});
|
|
276
|
-
};
|
|
277
|
-
MockEnvironment.prototype.generateUsername = function () {
|
|
278
|
-
var me = this;
|
|
279
|
-
var nativeMath = Math.random;
|
|
280
|
-
Math.random = function () { return me.usernameRng.random(); };
|
|
281
|
-
var username = randomUsernameGenerator.generate();
|
|
282
|
-
Math.random = nativeMath;
|
|
283
|
-
return username;
|
|
284
|
-
};
|
|
285
|
-
MockEnvironment.prototype.generatePassword = function () {
|
|
286
|
-
var me = this;
|
|
287
|
-
return me.passwordRng.string(me.passwordRng.intBetween(4, 8));
|
|
288
|
-
};
|
|
289
|
-
MockEnvironment.prototype.generateNetwork = function (router, options) {
|
|
290
|
-
if (options === void 0) { options = {}; }
|
|
291
|
-
var me = this;
|
|
292
|
-
var network = {
|
|
293
|
-
mac: options.mac || me.generateMAC(),
|
|
294
|
-
percentage: options.percentage || me.networkRng.intBetween(20, 70),
|
|
295
|
-
name: options.name || me.generateUsername(),
|
|
296
|
-
bssid: options.bssid || me.generateUUID(),
|
|
297
|
-
essid: options.essid || me.generateUUID(),
|
|
298
|
-
password: options.password || me.generatePassword(),
|
|
299
|
-
router: router
|
|
300
|
-
};
|
|
301
|
-
me.networks.push(network);
|
|
302
|
-
return network;
|
|
303
|
-
};
|
|
304
|
-
MockEnvironment.prototype.generateVulnerabilityAddress = function () {
|
|
305
|
-
var me = this;
|
|
306
|
-
var d = '0123456789ABCDEF';
|
|
307
|
-
return ('0x' +
|
|
308
|
-
__spreadArray([], __read(Array(8).keys()), false).map(function () {
|
|
309
|
-
return d[me.vulnerabilityRng.intBetween(0, 15)];
|
|
310
|
-
})
|
|
311
|
-
.join(''));
|
|
312
|
-
};
|
|
313
|
-
MockEnvironment.prototype.generateVulnerability = function (library, memAddress, remote) {
|
|
314
|
-
var me = this;
|
|
315
|
-
var requirementAmount = me.vulnerabilityRng.intBetween(0, 3);
|
|
316
|
-
var required = [];
|
|
317
|
-
var action = types_1.VulnerabilityActionList[me.vulnerabilityRng.intBetween(0, 4)];
|
|
318
|
-
var user;
|
|
319
|
-
while (required.length < requirementAmount) {
|
|
320
|
-
var index = me.vulnerabilityRng.intBetween(0, 6);
|
|
321
|
-
var req = types_1.VulnerabilityRequirementList[index];
|
|
322
|
-
if (!required.includes(req)) {
|
|
323
|
-
required.push(req);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
var userType = me.vulnerabilityRng.intBetween(0, 5);
|
|
327
|
-
switch (userType) {
|
|
328
|
-
case 0:
|
|
329
|
-
user = types_1.VulnerabilityActionUser.ROOT;
|
|
330
|
-
break;
|
|
331
|
-
case 1:
|
|
332
|
-
case 2:
|
|
333
|
-
user = types_1.VulnerabilityActionUser.NORMAL;
|
|
334
|
-
break;
|
|
335
|
-
default:
|
|
336
|
-
user = types_1.VulnerabilityActionUser.GUEST;
|
|
337
|
-
break;
|
|
338
|
-
}
|
|
339
|
-
return {
|
|
340
|
-
required: required,
|
|
341
|
-
memAddress: memAddress,
|
|
342
|
-
sector: me.vulnerabilityRng.random().toString(36).substring(2, 12),
|
|
343
|
-
details: 'loop in array',
|
|
344
|
-
remote: remote,
|
|
345
|
-
library: library,
|
|
346
|
-
action: action,
|
|
347
|
-
user: user,
|
|
348
|
-
folder: ['home', 'guest']
|
|
90
|
+
computer: computer,
|
|
91
|
+
port: computer.ports.get(port)
|
|
349
92
|
};
|
|
350
93
|
};
|
|
351
|
-
MockEnvironment.prototype.generateSectorVulnerabilities = function (library, sector, remote) {
|
|
352
|
-
var _a;
|
|
353
|
-
var me = this;
|
|
354
|
-
var vulAmount = me.vulnerabilityRng.intBetween(1, 4);
|
|
355
|
-
var result = [];
|
|
356
|
-
for (var index = vulAmount; index >= 0; index--) {
|
|
357
|
-
result.push(me.generateVulnerability(library, sector, remote));
|
|
358
|
-
}
|
|
359
|
-
(_a = this.vulnerabilities).push.apply(_a, __spreadArray([], __read(result), false));
|
|
360
|
-
return result;
|
|
361
|
-
};
|
|
362
|
-
MockEnvironment.prototype.generateVulnerabilitiesForLibrary = function (library, options) {
|
|
363
|
-
if (options === void 0) { options = {}; }
|
|
364
|
-
var me = this;
|
|
365
|
-
var address = me.generateVulnerabilityAddress();
|
|
366
|
-
for (var amount = me.vulnerabilityRng.intBetween(2, 5); amount >= 0; amount--) {
|
|
367
|
-
if (options.remote)
|
|
368
|
-
me.generateSectorVulnerabilities(library, address, true);
|
|
369
|
-
if (options.local)
|
|
370
|
-
me.generateSectorVulnerabilities(library, address, false);
|
|
371
|
-
address =
|
|
372
|
-
me.vulnerabilityRng.intBetween(0, 3) === 1
|
|
373
|
-
? me.generateVulnerabilityAddress()
|
|
374
|
-
: address;
|
|
375
|
-
}
|
|
376
|
-
};
|
|
377
94
|
MockEnvironment.prototype.setupLibraries = function () {
|
|
378
95
|
var me = this;
|
|
379
|
-
|
|
380
|
-
|
|
96
|
+
var vulnerabilityGenerator = me.vulnerabilityGenerator;
|
|
97
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.CRYPTO, {
|
|
98
|
+
local: true
|
|
99
|
+
});
|
|
100
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.FTP, {
|
|
381
101
|
local: true,
|
|
382
102
|
remote: true
|
|
383
103
|
});
|
|
384
|
-
|
|
104
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.HTTP, {
|
|
385
105
|
local: true,
|
|
386
106
|
remote: true
|
|
387
107
|
});
|
|
388
|
-
|
|
389
|
-
|
|
108
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.INIT, {
|
|
109
|
+
local: true
|
|
110
|
+
});
|
|
111
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.KERNEL_MODULE, {
|
|
390
112
|
local: true
|
|
391
113
|
});
|
|
392
|
-
|
|
114
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.KERNEL_ROUTER, {
|
|
393
115
|
remote: true
|
|
394
116
|
});
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
117
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.METAXPLOIT, { local: true });
|
|
118
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.NET, {
|
|
119
|
+
local: true
|
|
120
|
+
});
|
|
121
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.RSHELL, {
|
|
398
122
|
local: true,
|
|
399
123
|
remote: true
|
|
400
124
|
});
|
|
401
|
-
|
|
125
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.SMTP, {
|
|
402
126
|
local: true,
|
|
403
127
|
remote: true
|
|
404
128
|
});
|
|
405
|
-
|
|
129
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.SQL, {
|
|
406
130
|
local: true,
|
|
407
131
|
remote: true
|
|
408
132
|
});
|
|
409
|
-
|
|
133
|
+
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.SSH, {
|
|
410
134
|
local: true,
|
|
411
135
|
remote: true
|
|
412
136
|
});
|
|
@@ -420,19 +144,57 @@ var MockEnvironment = /** @class */ (function () {
|
|
|
420
144
|
};
|
|
421
145
|
};
|
|
422
146
|
MockEnvironment.prototype.connectLocal = function (router) {
|
|
423
|
-
|
|
147
|
+
var me = this;
|
|
148
|
+
var serverMap = me.networkGenerator.serverMap;
|
|
149
|
+
if (!serverMap.has(router.publicIp)) {
|
|
150
|
+
throw new Error("Router with ip ".concat(router.publicIp, " is unknown in serverMap."));
|
|
151
|
+
}
|
|
152
|
+
var localComputer = me.localComputer;
|
|
153
|
+
if (localComputer.router) {
|
|
154
|
+
localComputer.router.devices.delete(localComputer.localIp);
|
|
155
|
+
}
|
|
156
|
+
var serverMapGenerator = serverMap.get(router.publicIp);
|
|
157
|
+
var localIp = serverMapGenerator.generateLocalIp(router);
|
|
158
|
+
localComputer.router = router;
|
|
159
|
+
localComputer.localIp = localIp;
|
|
160
|
+
router.devices.set(localIp, localComputer);
|
|
424
161
|
};
|
|
425
162
|
MockEnvironment.prototype.getRouterByIp = function (ipAddress) {
|
|
426
163
|
var me = this;
|
|
427
|
-
if (
|
|
164
|
+
if ((0, utils_1.isValidIp)(ipAddress)) {
|
|
428
165
|
return null;
|
|
429
166
|
}
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
167
|
+
var serverMap = me.networkGenerator.serverMap;
|
|
168
|
+
if (serverMap.has(ipAddress)) {
|
|
169
|
+
return serverMap.get(ipAddress).router;
|
|
170
|
+
}
|
|
171
|
+
return me.networkGenerator.generateRouter({
|
|
172
|
+
publicIp: ipAddress
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
MockEnvironment.prototype.getSwitchByIp = function (ipAddress) {
|
|
176
|
+
var e_1, _a;
|
|
177
|
+
var me = this;
|
|
178
|
+
if (!(0, utils_1.isValidIp)(ipAddress) || !(0, utils_1.isLanIp)(ipAddress)) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
var localRouter = me.localComputer.router;
|
|
182
|
+
try {
|
|
183
|
+
for (var _b = __values(localRouter.devices), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
184
|
+
var _d = __read(_c.value, 2), localIp = _d[0], device = _d[1];
|
|
185
|
+
if (localIp === ipAddress && device instanceof types_1.Switch) {
|
|
186
|
+
return device;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
191
|
+
finally {
|
|
192
|
+
try {
|
|
193
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
194
|
+
}
|
|
195
|
+
finally { if (e_1) throw e_1.error; }
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
436
198
|
};
|
|
437
199
|
MockEnvironment.prototype.getComputersOfRouterByIp = function (ipAddress) {
|
|
438
200
|
var me = this;
|
|
@@ -440,29 +202,26 @@ var MockEnvironment = /** @class */ (function () {
|
|
|
440
202
|
if (!router) {
|
|
441
203
|
return [];
|
|
442
204
|
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
});
|
|
205
|
+
var devices = Array.from(router.devices.values());
|
|
206
|
+
return devices.filter(function (d) { return d instanceof types_1.Computer; });
|
|
446
207
|
};
|
|
447
208
|
MockEnvironment.prototype.findRouterViaNS = function (name) {
|
|
448
209
|
var me = this;
|
|
449
|
-
|
|
210
|
+
var serverMap = me.networkGenerator.serverMap;
|
|
211
|
+
var routers = Array.from(serverMap.values()).map(function (g) { return g.router; });
|
|
212
|
+
return routers.find(function (item) {
|
|
450
213
|
return item.domain === name;
|
|
451
214
|
});
|
|
452
215
|
};
|
|
453
216
|
MockEnvironment.prototype.getEmailViaLogin = function (email, password) {
|
|
454
217
|
var me = this;
|
|
455
|
-
|
|
218
|
+
var emails = me.emailGenerator.emails;
|
|
219
|
+
return emails.find(function (v) { return v.email === email && v.password === password; });
|
|
456
220
|
};
|
|
457
221
|
MockEnvironment.prototype.getEmail = function (email) {
|
|
458
222
|
var me = this;
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
MockEnvironment.prototype.isValidIp = function (target) {
|
|
462
|
-
return /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(target);
|
|
463
|
-
};
|
|
464
|
-
MockEnvironment.prototype.isLanIp = function (target) {
|
|
465
|
-
return /^1(0|27|69\.254|72\.(1[6-9]|2[0-9]|3[0-1])|92\.168)\./.test(target);
|
|
223
|
+
var emails = me.emailGenerator.emails;
|
|
224
|
+
return emails.find(function (v) { return v.email === email; });
|
|
466
225
|
};
|
|
467
226
|
return MockEnvironment;
|
|
468
227
|
}());
|