greybel-mock-environment 1.2.5 → 1.2.7
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/environment.d.ts +2 -2
- package/dist/environment.js +6 -47
- package/dist/fs.d.ts +4 -2
- package/dist/fs.js +32 -19
- package/dist/generators/network.d.ts +7 -2
- package/dist/generators/network.js +26 -18
- package/dist/generators/vulnerability.d.ts +10 -9
- package/dist/generators/vulnerability.js +43 -22
- package/dist/types/device.d.ts +4 -2
- package/dist/types/device.js +29 -9
- package/dist/types/file-system.d.ts +4 -4
- package/dist/types/file-system.js +37 -50
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.js +11 -1
- package/dist/types/library-manager.d.ts +44 -0
- package/dist/types/library-manager.js +197 -0
- package/dist/types/library.d.ts +3 -2
- package/dist/types/library.js +2 -1
- package/dist/types/network-device.d.ts +6 -0
- package/dist/types/network-device.js +7 -1
- package/dist/types/permission.d.ts +35 -0
- package/dist/types/permission.js +157 -0
- package/dist/types/router.d.ts +2 -0
- package/dist/types/router.js +8 -0
- package/dist/types/version.d.ts +2 -2
- package/dist/types/version.js +4 -1
- package/dist/types/vulnerabilities.d.ts +21 -20
- package/dist/types/vulnerabilities.js +34 -30
- package/dist/utils.d.ts +0 -14
- package/dist/utils.js +1 -53
- package/package.json +1 -1
package/dist/environment.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import EmailGenerator from './generators/email';
|
|
|
3
3
|
import NetworkGenerator from './generators/network';
|
|
4
4
|
import UserGenerator from './generators/user';
|
|
5
5
|
import VulnerabilityGenerator from './generators/vulnerability';
|
|
6
|
-
import { Computer, Device, EMail, Location, Port, Router, Session, Switch } from './types';
|
|
6
|
+
import { Computer, Device, EMail, LibraryManager, Location, Port, Router, Session, Switch } from './types';
|
|
7
7
|
export interface RouterLocation {
|
|
8
8
|
distance: number;
|
|
9
9
|
percentage: number;
|
|
@@ -19,6 +19,7 @@ export default class MockEnvironment {
|
|
|
19
19
|
networkGenerator: NetworkGenerator;
|
|
20
20
|
sessions: Session[];
|
|
21
21
|
localSession: Session;
|
|
22
|
+
libraryManager: LibraryManager;
|
|
22
23
|
constructor(seed: string, localUser: {
|
|
23
24
|
username: string;
|
|
24
25
|
password: string;
|
|
@@ -31,7 +32,6 @@ export default class MockEnvironment {
|
|
|
31
32
|
port: Port;
|
|
32
33
|
computer: Computer;
|
|
33
34
|
} | null;
|
|
34
|
-
setupLibraries(): void;
|
|
35
35
|
setupLocalSession(username: string, password: string): void;
|
|
36
36
|
getLatestSession(): Session;
|
|
37
37
|
getLocal(): Session;
|
package/dist/environment.js
CHANGED
|
@@ -42,6 +42,7 @@ var MockEnvironment = /** @class */ (function () {
|
|
|
42
42
|
if (seed === void 0) { seed = 'test'; }
|
|
43
43
|
this.WIFI_MAX_DISTANCE = 10;
|
|
44
44
|
var me = this;
|
|
45
|
+
me.libraryManager = new types_1.LibraryManager();
|
|
45
46
|
me.seed = seed;
|
|
46
47
|
me.basicGenerator = new basic_1.default({ seed: seed });
|
|
47
48
|
me.emailGenerator = new email_1.default({
|
|
@@ -55,13 +56,15 @@ var MockEnvironment = /** @class */ (function () {
|
|
|
55
56
|
});
|
|
56
57
|
me.vulnerabilityGenerator = new vulnerability_1.default({
|
|
57
58
|
seed: seed,
|
|
58
|
-
basicGenerator: me.basicGenerator
|
|
59
|
+
basicGenerator: me.basicGenerator,
|
|
60
|
+
libraryManager: me.libraryManager
|
|
59
61
|
});
|
|
60
62
|
me.networkGenerator = new network_1.default({
|
|
61
63
|
seed: seed,
|
|
62
64
|
basicGenerator: me.basicGenerator,
|
|
63
65
|
userGenerator: me.userGenerator,
|
|
64
|
-
emailGenerator: me.emailGenerator
|
|
66
|
+
emailGenerator: me.emailGenerator,
|
|
67
|
+
libraryManager: me.libraryManager
|
|
65
68
|
});
|
|
66
69
|
me.sessions = [];
|
|
67
70
|
me.setupLocalSession(localUser.username, localUser.password);
|
|
@@ -94,50 +97,6 @@ var MockEnvironment = /** @class */ (function () {
|
|
|
94
97
|
port: computer.ports.get(port)
|
|
95
98
|
};
|
|
96
99
|
};
|
|
97
|
-
MockEnvironment.prototype.setupLibraries = function () {
|
|
98
|
-
var me = this;
|
|
99
|
-
var vulnerabilityGenerator = me.vulnerabilityGenerator;
|
|
100
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.CRYPTO, {
|
|
101
|
-
local: true
|
|
102
|
-
});
|
|
103
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.FTP, {
|
|
104
|
-
local: true,
|
|
105
|
-
remote: true
|
|
106
|
-
});
|
|
107
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.HTTP, {
|
|
108
|
-
local: true,
|
|
109
|
-
remote: true
|
|
110
|
-
});
|
|
111
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.INIT, {
|
|
112
|
-
local: true
|
|
113
|
-
});
|
|
114
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.KERNEL_MODULE, {
|
|
115
|
-
local: true
|
|
116
|
-
});
|
|
117
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.KERNEL_ROUTER, {
|
|
118
|
-
remote: true
|
|
119
|
-
});
|
|
120
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.METAXPLOIT, { local: true });
|
|
121
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.NET, {
|
|
122
|
-
local: true
|
|
123
|
-
});
|
|
124
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.RSHELL, {
|
|
125
|
-
local: true,
|
|
126
|
-
remote: true
|
|
127
|
-
});
|
|
128
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.SMTP, {
|
|
129
|
-
local: true,
|
|
130
|
-
remote: true
|
|
131
|
-
});
|
|
132
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.SQL, {
|
|
133
|
-
local: true,
|
|
134
|
-
remote: true
|
|
135
|
-
});
|
|
136
|
-
vulnerabilityGenerator.generateVulnerabilitiesForLibrary(types_1.Library.SSH, {
|
|
137
|
-
local: true,
|
|
138
|
-
remote: true
|
|
139
|
-
});
|
|
140
|
-
};
|
|
141
100
|
MockEnvironment.prototype.setupLocalSession = function (username, password) {
|
|
142
101
|
var me = this;
|
|
143
102
|
var user = me.userGenerator.generate(username, password);
|
|
@@ -145,7 +104,7 @@ var MockEnvironment = /** @class */ (function () {
|
|
|
145
104
|
var currentPath = computer.getHome(user);
|
|
146
105
|
var programPath = new types_1.File({
|
|
147
106
|
name: 'myprogramm',
|
|
148
|
-
permissions: '
|
|
107
|
+
permissions: '----------',
|
|
149
108
|
owner: 'root',
|
|
150
109
|
isProtected: true,
|
|
151
110
|
type: types_1.FileType.Bin
|
package/dist/fs.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Service } from './types';
|
|
2
1
|
import { Entity, File, Folder } from './types/file-system';
|
|
2
|
+
import { LibraryManager } from './types/library-manager';
|
|
3
3
|
import { MetaInfo } from './types/meta-info';
|
|
4
4
|
import { Port } from './types/port';
|
|
5
|
+
import { Service } from './types/service';
|
|
5
6
|
import { User } from './types/user';
|
|
6
|
-
export declare function getLibraryFile(service: Service, parent?: Entity): File;
|
|
7
|
+
export declare function getLibraryFile(service: Service, libManager: LibraryManager, parent?: Entity): File;
|
|
7
8
|
export declare type Files = Map<string, File>;
|
|
8
9
|
export declare function generateFiles(...files: File[]): Files;
|
|
9
10
|
export declare type Folders = Map<string, Folder>;
|
|
@@ -11,6 +12,7 @@ export declare function generateFolders(...folders: Folder[]): Folders;
|
|
|
11
12
|
export interface FSOptions {
|
|
12
13
|
users: User[];
|
|
13
14
|
meta: MetaInfo;
|
|
15
|
+
libManager: LibraryManager;
|
|
14
16
|
parent?: Entity;
|
|
15
17
|
ports?: Map<number, Port>;
|
|
16
18
|
}
|
package/dist/fs.js
CHANGED
|
@@ -72,45 +72,46 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
72
72
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
73
73
|
exports.getDefaultFileSystem = exports.getUserFolder = exports.generateFolders = exports.generateFiles = exports.getLibraryFile = void 0;
|
|
74
74
|
var BinFiles = __importStar(require("./scripts"));
|
|
75
|
-
var types_1 = require("./types");
|
|
76
75
|
var file_system_1 = require("./types/file-system");
|
|
76
|
+
var library_1 = require("./types/library");
|
|
77
77
|
var meta_info_1 = require("./types/meta-info");
|
|
78
|
-
|
|
78
|
+
var service_1 = require("./types/service");
|
|
79
|
+
function getLibraryFile(service, libManager, parent) {
|
|
79
80
|
switch (service) {
|
|
80
|
-
case
|
|
81
|
+
case service_1.Service.SSH: {
|
|
81
82
|
return new file_system_1.File({
|
|
82
83
|
name: 'ssh.so',
|
|
83
84
|
permissions: '-rw-r--r--',
|
|
84
85
|
owner: 'root',
|
|
85
86
|
type: file_system_1.FileType.SSH,
|
|
86
|
-
version:
|
|
87
|
+
version: libManager.getLatestVersion(library_1.Library.SSH).toString()
|
|
87
88
|
}, parent);
|
|
88
89
|
}
|
|
89
|
-
case
|
|
90
|
+
case service_1.Service.FTP: {
|
|
90
91
|
return new file_system_1.File({
|
|
91
92
|
name: 'ftp.so',
|
|
92
93
|
permissions: '-rw-r--r--',
|
|
93
94
|
owner: 'root',
|
|
94
95
|
type: file_system_1.FileType.FTP,
|
|
95
|
-
version:
|
|
96
|
+
version: libManager.getLatestVersion(library_1.Library.FTP).toString()
|
|
96
97
|
}, parent);
|
|
97
98
|
}
|
|
98
|
-
case
|
|
99
|
+
case service_1.Service.HTTP: {
|
|
99
100
|
return new file_system_1.File({
|
|
100
101
|
name: 'http.so',
|
|
101
102
|
permissions: '-rw-r--r--',
|
|
102
103
|
owner: 'root',
|
|
103
104
|
type: file_system_1.FileType.HTTP,
|
|
104
|
-
version:
|
|
105
|
+
version: libManager.getLatestVersion(library_1.Library.HTTP).toString()
|
|
105
106
|
}, parent);
|
|
106
107
|
}
|
|
107
|
-
case
|
|
108
|
+
case service_1.Service.RSHELL: {
|
|
108
109
|
return new file_system_1.File({
|
|
109
110
|
name: 'rshell.so',
|
|
110
111
|
permissions: '-rw-r--r--',
|
|
111
112
|
owner: 'root',
|
|
112
113
|
type: file_system_1.FileType.RShell,
|
|
113
|
-
version:
|
|
114
|
+
version: libManager.getLatestVersion(library_1.Library.RSHELL).toString()
|
|
114
115
|
}, parent);
|
|
115
116
|
}
|
|
116
117
|
}
|
|
@@ -200,14 +201,14 @@ function getLibFiles(options) {
|
|
|
200
201
|
permissions: '-rw-r-----',
|
|
201
202
|
owner: 'root',
|
|
202
203
|
type: file_system_1.FileType.Init,
|
|
203
|
-
version:
|
|
204
|
+
version: options.libManager.getLatestVersion(library_1.Library.INIT).toString()
|
|
204
205
|
}, options.parent),
|
|
205
206
|
new file_system_1.File({
|
|
206
207
|
name: 'net.so',
|
|
207
208
|
permissions: '-rw-r-----',
|
|
208
209
|
owner: 'root',
|
|
209
210
|
type: file_system_1.FileType.Net,
|
|
210
|
-
version:
|
|
211
|
+
version: options.libManager.getLatestVersion(library_1.Library.NET).toString()
|
|
211
212
|
}, options.parent)
|
|
212
213
|
];
|
|
213
214
|
if (options.meta.deviceType === meta_info_1.MetaDeviceType.Computer) {
|
|
@@ -216,7 +217,9 @@ function getLibFiles(options) {
|
|
|
216
217
|
permissions: '-rw-r-----',
|
|
217
218
|
owner: 'root',
|
|
218
219
|
type: file_system_1.FileType.KernelModule,
|
|
219
|
-
version:
|
|
220
|
+
version: options.libManager
|
|
221
|
+
.getLatestVersion(library_1.Library.KERNEL_MODULE)
|
|
222
|
+
.toString()
|
|
220
223
|
}, options.parent));
|
|
221
224
|
}
|
|
222
225
|
else {
|
|
@@ -225,7 +228,9 @@ function getLibFiles(options) {
|
|
|
225
228
|
permissions: '-rw-r-----',
|
|
226
229
|
owner: 'root',
|
|
227
230
|
type: file_system_1.FileType.KernelRouter,
|
|
228
|
-
version:
|
|
231
|
+
version: options.libManager
|
|
232
|
+
.getLatestVersion(library_1.Library.KERNEL_ROUTER)
|
|
233
|
+
.toString()
|
|
229
234
|
}, options.parent));
|
|
230
235
|
}
|
|
231
236
|
if (options.meta.ownerType === meta_info_1.MetaOwnerType.Player) {
|
|
@@ -234,25 +239,33 @@ function getLibFiles(options) {
|
|
|
234
239
|
permissions: '-rw-r--r--',
|
|
235
240
|
owner: 'root',
|
|
236
241
|
type: file_system_1.FileType.Crypto,
|
|
237
|
-
version:
|
|
242
|
+
version: options.libManager
|
|
243
|
+
.getLatestVersion(library_1.Library.CRYPTO)
|
|
244
|
+
.toString()
|
|
238
245
|
}, options.parent), new file_system_1.File({
|
|
239
246
|
name: 'metaxploit.so',
|
|
240
247
|
permissions: '-rw-r--r--',
|
|
241
248
|
owner: 'root',
|
|
242
249
|
type: file_system_1.FileType.Metaxploit,
|
|
243
|
-
version:
|
|
250
|
+
version: options.libManager
|
|
251
|
+
.getLatestVersion(library_1.Library.METAXPLOIT)
|
|
252
|
+
.toString()
|
|
244
253
|
}, options.parent), new file_system_1.File({
|
|
245
254
|
name: 'blockchain.so',
|
|
246
255
|
permissions: '-rw-r--r--',
|
|
247
256
|
owner: 'root',
|
|
248
257
|
type: file_system_1.FileType.Blockchain,
|
|
249
|
-
version:
|
|
258
|
+
version: options.libManager
|
|
259
|
+
.getLatestVersion(library_1.Library.BLOCKCHAIN)
|
|
260
|
+
.toString()
|
|
250
261
|
}, options.parent), new file_system_1.File({
|
|
251
262
|
name: 'aptclient.so',
|
|
252
263
|
permissions: '-rw-r--r--',
|
|
253
264
|
owner: 'root',
|
|
254
265
|
type: file_system_1.FileType.AptClient,
|
|
255
|
-
version:
|
|
266
|
+
version: options.libManager
|
|
267
|
+
.getLatestVersion(library_1.Library.APT_CLIENT)
|
|
268
|
+
.toString()
|
|
256
269
|
}, options.parent));
|
|
257
270
|
}
|
|
258
271
|
var ports = options.ports || new Map();
|
|
@@ -263,7 +276,7 @@ function getLibFiles(options) {
|
|
|
263
276
|
try {
|
|
264
277
|
for (var services_1 = __values(services), services_1_1 = services_1.next(); !services_1_1.done; services_1_1 = services_1.next()) {
|
|
265
278
|
var service = services_1_1.value;
|
|
266
|
-
var file = getLibraryFile(service, options.parent);
|
|
279
|
+
var file = getLibraryFile(service, options.libManager, options.parent);
|
|
267
280
|
if (file !== null) {
|
|
268
281
|
libFiles.push(file);
|
|
269
282
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RandomSeed } from 'random-seed';
|
|
2
2
|
import { Computer, MetaOwnerLevel, NetworkDevice, Port, Router, Switch, User } from '../types';
|
|
3
|
+
import { LibraryManager } from '../types/library-manager';
|
|
3
4
|
import { RouterOptions } from '../types/router';
|
|
4
5
|
import { SwitchOptions } from '../types/switch';
|
|
5
6
|
import BasicGenerator from './basic';
|
|
@@ -10,6 +11,7 @@ export interface ServerMapGeneratorOptions {
|
|
|
10
11
|
userGenerator: UserGenerator;
|
|
11
12
|
networkGenerator: NetworkGenerator;
|
|
12
13
|
router: Router;
|
|
14
|
+
libraryManager: LibraryManager;
|
|
13
15
|
networkRng: RandomSeed;
|
|
14
16
|
portRng: RandomSeed;
|
|
15
17
|
}
|
|
@@ -18,9 +20,10 @@ export declare class ServerMapGenerator {
|
|
|
18
20
|
userGenerator: UserGenerator;
|
|
19
21
|
networkGenerator: NetworkGenerator;
|
|
20
22
|
router: Router;
|
|
23
|
+
libraryManager: LibraryManager;
|
|
21
24
|
networkRng: RandomSeed;
|
|
22
25
|
portRng: RandomSeed;
|
|
23
|
-
constructor({ router, networkRng, portRng, basicGenerator, userGenerator, networkGenerator }: ServerMapGeneratorOptions);
|
|
26
|
+
constructor({ router, networkRng, portRng, basicGenerator, userGenerator, networkGenerator, libraryManager }: ServerMapGeneratorOptions);
|
|
24
27
|
generateLocalIp(router: Router): string;
|
|
25
28
|
generateSwitch(options?: Partial<SwitchOptions>): Switch;
|
|
26
29
|
generateComputer(router: Router, users: User[], rootPassword?: string): Computer;
|
|
@@ -32,6 +35,7 @@ export interface NetworkGeneratorOptions {
|
|
|
32
35
|
basicGenerator: BasicGenerator;
|
|
33
36
|
userGenerator: UserGenerator;
|
|
34
37
|
emailGenerator: EmailGenerator;
|
|
38
|
+
libraryManager: LibraryManager;
|
|
35
39
|
}
|
|
36
40
|
export default class NetworkGenerator {
|
|
37
41
|
basicGenerator: BasicGenerator;
|
|
@@ -40,7 +44,8 @@ export default class NetworkGenerator {
|
|
|
40
44
|
networkRng: RandomSeed;
|
|
41
45
|
portRng: RandomSeed;
|
|
42
46
|
serverMap: Map<string, ServerMapGenerator>;
|
|
43
|
-
|
|
47
|
+
libraryManager: LibraryManager;
|
|
48
|
+
constructor({ seed, basicGenerator, userGenerator, emailGenerator, libraryManager }: NetworkGeneratorOptions);
|
|
44
49
|
generateIp(): string;
|
|
45
50
|
generateDifficulty(): MetaOwnerLevel;
|
|
46
51
|
generateLocalComputer(users: User[], rootPassword?: string): Computer;
|
|
@@ -35,10 +35,11 @@ var types_1 = require("../types");
|
|
|
35
35
|
var net_card_1 = require("../types/net-card");
|
|
36
36
|
var ServerMapGenerator = /** @class */ (function () {
|
|
37
37
|
function ServerMapGenerator(_a) {
|
|
38
|
-
var router = _a.router, networkRng = _a.networkRng, portRng = _a.portRng, basicGenerator = _a.basicGenerator, userGenerator = _a.userGenerator, networkGenerator = _a.networkGenerator;
|
|
38
|
+
var router = _a.router, networkRng = _a.networkRng, portRng = _a.portRng, basicGenerator = _a.basicGenerator, userGenerator = _a.userGenerator, networkGenerator = _a.networkGenerator, libraryManager = _a.libraryManager;
|
|
39
39
|
this.basicGenerator = basicGenerator;
|
|
40
40
|
this.userGenerator = userGenerator;
|
|
41
41
|
this.networkGenerator = networkGenerator;
|
|
42
|
+
this.libraryManager = libraryManager;
|
|
42
43
|
this.router = router;
|
|
43
44
|
this.networkRng = networkRng;
|
|
44
45
|
this.portRng = portRng;
|
|
@@ -73,14 +74,14 @@ var ServerMapGenerator = /** @class */ (function () {
|
|
|
73
74
|
domain: options.domain || '',
|
|
74
75
|
whoisDescription: options.whoisDescription || '',
|
|
75
76
|
localIp: options.localIp || me.generateLocalIp(router),
|
|
76
|
-
activeNetCard: options.activeNetCard || networkDevice.type,
|
|
77
77
|
networkDevices: options.networkDevices || [networkDevice],
|
|
78
78
|
users: options.users || switchUsers,
|
|
79
79
|
meta: metaInfo,
|
|
80
80
|
fileSystem: options.fileSystem ||
|
|
81
81
|
(0, fs_1.getDefaultFileSystem)({
|
|
82
82
|
users: switchUsers,
|
|
83
|
-
meta: metaInfo
|
|
83
|
+
meta: metaInfo,
|
|
84
|
+
libManager: me.libraryManager
|
|
84
85
|
}),
|
|
85
86
|
bssid: options.bssid || basicGenerator.generateUUID(),
|
|
86
87
|
essid: options.essid || basicGenerator.generateUUID(),
|
|
@@ -89,7 +90,8 @@ var ServerMapGenerator = /** @class */ (function () {
|
|
|
89
90
|
wifi: {
|
|
90
91
|
credentials: Array.from(switchUsers.values())[1],
|
|
91
92
|
name: basicGenerator.generateUsername()
|
|
92
|
-
}
|
|
93
|
+
},
|
|
94
|
+
libraryManager: me.libraryManager
|
|
93
95
|
});
|
|
94
96
|
for (var index = me.networkRng.intBetween(2, 4); index >= 0; index--) {
|
|
95
97
|
me.generateComputer(subSwitch, [
|
|
@@ -117,7 +119,6 @@ var ServerMapGenerator = /** @class */ (function () {
|
|
|
117
119
|
var computer = new types_1.Computer({
|
|
118
120
|
router: router,
|
|
119
121
|
localIp: me.generateLocalIp(router),
|
|
120
|
-
activeNetCard: networkDevice.type,
|
|
121
122
|
networkDevices: [networkDevice],
|
|
122
123
|
users: computerUsers,
|
|
123
124
|
ports: ports,
|
|
@@ -125,10 +126,12 @@ var ServerMapGenerator = /** @class */ (function () {
|
|
|
125
126
|
fileSystem: (0, fs_1.getDefaultFileSystem)({
|
|
126
127
|
users: computerUsers,
|
|
127
128
|
meta: metaInfo,
|
|
128
|
-
ports: ports
|
|
129
|
+
ports: ports,
|
|
130
|
+
libManager: me.libraryManager
|
|
129
131
|
}),
|
|
130
132
|
mac: basicGenerator.generateMAC(),
|
|
131
|
-
location: basicGenerator.generateLocation()
|
|
133
|
+
location: basicGenerator.generateLocation(),
|
|
134
|
+
libraryManager: me.libraryManager
|
|
132
135
|
});
|
|
133
136
|
router.devices.set(computer.localIp, computer);
|
|
134
137
|
return computer;
|
|
@@ -160,10 +163,11 @@ var ServerMapGenerator = /** @class */ (function () {
|
|
|
160
163
|
exports.ServerMapGenerator = ServerMapGenerator;
|
|
161
164
|
var NetworkGenerator = /** @class */ (function () {
|
|
162
165
|
function NetworkGenerator(_a) {
|
|
163
|
-
var seed = _a.seed, basicGenerator = _a.basicGenerator, userGenerator = _a.userGenerator, emailGenerator = _a.emailGenerator;
|
|
166
|
+
var seed = _a.seed, basicGenerator = _a.basicGenerator, userGenerator = _a.userGenerator, emailGenerator = _a.emailGenerator, libraryManager = _a.libraryManager;
|
|
164
167
|
this.basicGenerator = basicGenerator;
|
|
165
168
|
this.userGenerator = userGenerator;
|
|
166
169
|
this.emailGenerator = emailGenerator;
|
|
170
|
+
this.libraryManager = libraryManager;
|
|
167
171
|
this.networkRng = random_seed_1.default.create("".concat(seed, "-network"));
|
|
168
172
|
this.portRng = random_seed_1.default.create("".concat(seed, "-port"));
|
|
169
173
|
this.serverMap = new Map();
|
|
@@ -193,16 +197,17 @@ var NetworkGenerator = /** @class */ (function () {
|
|
|
193
197
|
});
|
|
194
198
|
var computer = new types_1.Computer({
|
|
195
199
|
localIp: '0.0.0.0',
|
|
196
|
-
activeNetCard: networkDevice.type,
|
|
197
200
|
networkDevices: [networkDevice],
|
|
198
201
|
users: computerUsers,
|
|
199
202
|
meta: metaInfo,
|
|
200
203
|
fileSystem: (0, fs_1.getDefaultFileSystem)({
|
|
201
204
|
users: computerUsers,
|
|
202
|
-
meta: metaInfo
|
|
205
|
+
meta: metaInfo,
|
|
206
|
+
libManager: me.libraryManager
|
|
203
207
|
}),
|
|
204
208
|
mac: basicGenerator.generateMAC(),
|
|
205
|
-
location: basicGenerator.generateLocation()
|
|
209
|
+
location: basicGenerator.generateLocation(),
|
|
210
|
+
libraryManager: me.libraryManager
|
|
206
211
|
});
|
|
207
212
|
return computer;
|
|
208
213
|
};
|
|
@@ -235,14 +240,14 @@ var NetworkGenerator = /** @class */ (function () {
|
|
|
235
240
|
].join('\n'),
|
|
236
241
|
publicIp: options.publicIp || me.generateIp(),
|
|
237
242
|
localIp: options.localIp || "192.168.0.".concat(me.networkRng.intBetween(0, 10)),
|
|
238
|
-
activeNetCard: options.activeNetCard || networkDevice.type,
|
|
239
243
|
networkDevices: options.networkDevices || [networkDevice],
|
|
240
244
|
users: options.users || routerUsers,
|
|
241
245
|
meta: metaInfo,
|
|
242
246
|
fileSystem: options.fileSystem ||
|
|
243
247
|
(0, fs_1.getDefaultFileSystem)({
|
|
244
248
|
users: routerUsers,
|
|
245
|
-
meta: metaInfo
|
|
249
|
+
meta: metaInfo,
|
|
250
|
+
libManager: me.libraryManager
|
|
246
251
|
}),
|
|
247
252
|
bssid: options.bssid || basicGenerator.generateUUID(),
|
|
248
253
|
essid: options.essid || basicGenerator.generateUUID(),
|
|
@@ -251,7 +256,8 @@ var NetworkGenerator = /** @class */ (function () {
|
|
|
251
256
|
wifi: {
|
|
252
257
|
credentials: Array.from(routerUsers.values())[1],
|
|
253
258
|
name: basicGenerator.generateUsername()
|
|
254
|
-
}
|
|
259
|
+
},
|
|
260
|
+
libraryManager: me.libraryManager
|
|
255
261
|
});
|
|
256
262
|
var serverMapGenerator = new ServerMapGenerator({
|
|
257
263
|
router: router,
|
|
@@ -259,7 +265,8 @@ var NetworkGenerator = /** @class */ (function () {
|
|
|
259
265
|
basicGenerator: basicGenerator,
|
|
260
266
|
networkGenerator: me,
|
|
261
267
|
networkRng: me.networkRng,
|
|
262
|
-
portRng: me.portRng
|
|
268
|
+
portRng: me.portRng,
|
|
269
|
+
libraryManager: me.libraryManager
|
|
263
270
|
});
|
|
264
271
|
for (var index = me.networkRng.intBetween(4, 10); index >= 0; index--) {
|
|
265
272
|
serverMapGenerator.generateLocalComputer([
|
|
@@ -273,13 +280,14 @@ var NetworkGenerator = /** @class */ (function () {
|
|
|
273
280
|
return router;
|
|
274
281
|
};
|
|
275
282
|
NetworkGenerator.prototype.generateNetworkDevice = function () {
|
|
276
|
-
return {
|
|
283
|
+
return new types_1.NetworkDevice({
|
|
277
284
|
type: this.networkRng.intBetween(0, 1) === 0
|
|
278
285
|
? net_card_1.NetCard.Wifi
|
|
279
286
|
: net_card_1.NetCard.Ethernet,
|
|
280
287
|
id: this.networkRng.random().toString(36).substring(2, 10),
|
|
281
|
-
active: true
|
|
282
|
-
|
|
288
|
+
active: true,
|
|
289
|
+
mode: types_1.NetworkDeviceMode.Montior
|
|
290
|
+
});
|
|
283
291
|
};
|
|
284
292
|
return NetworkGenerator;
|
|
285
293
|
}());
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { RandomSeed } from 'random-seed';
|
|
2
|
-
import {
|
|
2
|
+
import { LibraryContainer, LibraryManager, LibraryVersion } from '../types/library-manager';
|
|
3
|
+
import { Vulnerability, VulnerabilityMode } from '../types/vulnerabilities';
|
|
3
4
|
import BasicGenerator from './basic';
|
|
4
5
|
export interface VulnerabilityGeneratorOptions {
|
|
5
6
|
seed: string;
|
|
6
7
|
basicGenerator: BasicGenerator;
|
|
8
|
+
libraryManager: LibraryManager;
|
|
7
9
|
}
|
|
8
10
|
export default class VulnerabilityGenerator {
|
|
9
11
|
basicGenerator: BasicGenerator;
|
|
10
12
|
vulnerabilityRng: RandomSeed;
|
|
11
|
-
|
|
12
|
-
constructor({ seed, basicGenerator }: VulnerabilityGeneratorOptions);
|
|
13
|
+
libraryManager: LibraryManager;
|
|
14
|
+
constructor({ seed, basicGenerator, libraryManager }: VulnerabilityGeneratorOptions);
|
|
15
|
+
generateLibrary(libraryContainer: LibraryContainer): void;
|
|
16
|
+
initialize(): void;
|
|
13
17
|
generateVulnerabilityAddress(): string;
|
|
14
|
-
generateVulnerability(
|
|
15
|
-
generateSectorVulnerabilities(
|
|
16
|
-
generateVulnerabilitiesForLibrary(
|
|
17
|
-
remote?: boolean;
|
|
18
|
-
local?: boolean;
|
|
19
|
-
}): void;
|
|
18
|
+
generateVulnerability(memAddress: string, mode: VulnerabilityMode): Vulnerability;
|
|
19
|
+
generateSectorVulnerabilities(sector: string, mode: VulnerabilityMode): Vulnerability[];
|
|
20
|
+
generateVulnerabilitiesForLibrary(libContainer: LibraryContainer, libVersion: LibraryVersion): void;
|
|
20
21
|
}
|
|
@@ -29,14 +29,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
29
29
|
};
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
31
|
var random_seed_1 = __importDefault(require("random-seed"));
|
|
32
|
-
var
|
|
32
|
+
var library_1 = require("../types/library");
|
|
33
|
+
var vulnerabilities_1 = require("../types/vulnerabilities");
|
|
33
34
|
var VulnerabilityGenerator = /** @class */ (function () {
|
|
34
35
|
function VulnerabilityGenerator(_a) {
|
|
35
|
-
var seed = _a.seed, basicGenerator = _a.basicGenerator;
|
|
36
|
+
var seed = _a.seed, basicGenerator = _a.basicGenerator, libraryManager = _a.libraryManager;
|
|
36
37
|
this.basicGenerator = basicGenerator;
|
|
37
38
|
this.vulnerabilityRng = random_seed_1.default.create("".concat(seed, "-vul-number"));
|
|
38
|
-
this.
|
|
39
|
+
this.libraryManager = libraryManager;
|
|
40
|
+
this.initialize();
|
|
39
41
|
}
|
|
42
|
+
VulnerabilityGenerator.prototype.generateLibrary = function (libraryContainer) {
|
|
43
|
+
var _this = this;
|
|
44
|
+
var lib = libraryContainer.getLatest();
|
|
45
|
+
this.generateVulnerabilitiesForLibrary(libraryContainer, lib);
|
|
46
|
+
libraryContainer.once('new-version', function () {
|
|
47
|
+
_this.generateLibrary(libraryContainer);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
VulnerabilityGenerator.prototype.initialize = function () {
|
|
51
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.CRYPTO));
|
|
52
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.FTP));
|
|
53
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.HTTP));
|
|
54
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.INIT));
|
|
55
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.KERNEL_MODULE));
|
|
56
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.KERNEL_ROUTER));
|
|
57
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.METAXPLOIT));
|
|
58
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.NET));
|
|
59
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.RSHELL));
|
|
60
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.SMTP));
|
|
61
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.SQL));
|
|
62
|
+
this.generateLibrary(this.libraryManager.get(library_1.Library.SSH));
|
|
63
|
+
};
|
|
40
64
|
VulnerabilityGenerator.prototype.generateVulnerabilityAddress = function () {
|
|
41
65
|
var me = this;
|
|
42
66
|
var d = '0123456789ABCDEF';
|
|
@@ -46,15 +70,15 @@ var VulnerabilityGenerator = /** @class */ (function () {
|
|
|
46
70
|
})
|
|
47
71
|
.join(''));
|
|
48
72
|
};
|
|
49
|
-
VulnerabilityGenerator.prototype.generateVulnerability = function (
|
|
73
|
+
VulnerabilityGenerator.prototype.generateVulnerability = function (memAddress, mode) {
|
|
50
74
|
var me = this;
|
|
51
75
|
var requirementAmount = me.vulnerabilityRng.intBetween(0, 3);
|
|
52
76
|
var required = [];
|
|
53
|
-
var action =
|
|
77
|
+
var action = vulnerabilities_1.VulnerabilityActionList[me.vulnerabilityRng.intBetween(0, 4)];
|
|
54
78
|
var user;
|
|
55
79
|
while (required.length < requirementAmount) {
|
|
56
80
|
var index = me.vulnerabilityRng.intBetween(0, 6);
|
|
57
|
-
var req =
|
|
81
|
+
var req = vulnerabilities_1.VulnerabilityRequirementList[index];
|
|
58
82
|
if (!required.includes(req)) {
|
|
59
83
|
required.push(req);
|
|
60
84
|
}
|
|
@@ -62,48 +86,45 @@ var VulnerabilityGenerator = /** @class */ (function () {
|
|
|
62
86
|
var userType = me.vulnerabilityRng.intBetween(0, 5);
|
|
63
87
|
switch (userType) {
|
|
64
88
|
case 0:
|
|
65
|
-
user =
|
|
89
|
+
user = vulnerabilities_1.VulnerabilityActionUser.Root;
|
|
66
90
|
break;
|
|
67
91
|
case 1:
|
|
68
92
|
case 2:
|
|
69
|
-
user =
|
|
93
|
+
user = vulnerabilities_1.VulnerabilityActionUser.Normal;
|
|
70
94
|
break;
|
|
71
95
|
default:
|
|
72
|
-
user =
|
|
96
|
+
user = vulnerabilities_1.VulnerabilityActionUser.Guest;
|
|
73
97
|
break;
|
|
74
98
|
}
|
|
75
|
-
return new
|
|
99
|
+
return new vulnerabilities_1.Vulnerability({
|
|
76
100
|
required: required,
|
|
77
101
|
memAddress: memAddress,
|
|
78
102
|
sector: me.vulnerabilityRng.random().toString(36).substring(2, 12),
|
|
79
103
|
details: 'loop in array',
|
|
80
|
-
remote: remote,
|
|
81
|
-
library: library,
|
|
82
104
|
action: action,
|
|
83
105
|
user: user,
|
|
106
|
+
mode: mode,
|
|
84
107
|
folder: ['home', 'guest']
|
|
85
108
|
});
|
|
86
109
|
};
|
|
87
|
-
VulnerabilityGenerator.prototype.generateSectorVulnerabilities = function (
|
|
88
|
-
var _a;
|
|
110
|
+
VulnerabilityGenerator.prototype.generateSectorVulnerabilities = function (sector, mode) {
|
|
89
111
|
var me = this;
|
|
90
112
|
var vulAmount = me.vulnerabilityRng.intBetween(1, 4);
|
|
91
113
|
var result = [];
|
|
92
114
|
for (var index = vulAmount; index >= 0; index--) {
|
|
93
|
-
result.push(me.generateVulnerability(
|
|
115
|
+
result.push(me.generateVulnerability(sector, mode));
|
|
94
116
|
}
|
|
95
|
-
(_a = this.vulnerabilities).push.apply(_a, __spreadArray([], __read(result), false));
|
|
96
117
|
return result;
|
|
97
118
|
};
|
|
98
|
-
VulnerabilityGenerator.prototype.generateVulnerabilitiesForLibrary = function (
|
|
99
|
-
|
|
119
|
+
VulnerabilityGenerator.prototype.generateVulnerabilitiesForLibrary = function (libContainer, libVersion) {
|
|
120
|
+
var _a, _b;
|
|
100
121
|
var me = this;
|
|
101
122
|
var address = me.generateVulnerabilityAddress();
|
|
102
123
|
for (var amount = me.vulnerabilityRng.intBetween(2, 5); amount >= 0; amount--) {
|
|
103
|
-
if (
|
|
104
|
-
me.generateSectorVulnerabilities(
|
|
105
|
-
if (
|
|
106
|
-
me.generateSectorVulnerabilities(
|
|
124
|
+
if (libContainer.allowsOnline())
|
|
125
|
+
(_a = libVersion.vulnerabilities).push.apply(_a, __spreadArray([], __read(me.generateSectorVulnerabilities(address, vulnerabilities_1.VulnerabilityMode.Online)), false));
|
|
126
|
+
if (libContainer.allowsLocal())
|
|
127
|
+
(_b = libVersion.vulnerabilities).push.apply(_b, __spreadArray([], __read(me.generateSectorVulnerabilities(address, vulnerabilities_1.VulnerabilityMode.Local)), false));
|
|
107
128
|
address =
|
|
108
129
|
me.vulnerabilityRng.intBetween(0, 3) === 1
|
|
109
130
|
? me.generateVulnerabilityAddress()
|
package/dist/types/device.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Entity, File, Folder } from './file-system';
|
|
2
|
+
import { LibraryManager } from './library-manager';
|
|
2
3
|
import { Location } from './location';
|
|
3
4
|
import { MetaDeviceType, MetaInfo } from './meta-info';
|
|
4
5
|
import { NetCard } from './net-card';
|
|
@@ -9,7 +10,6 @@ import { User } from './user';
|
|
|
9
10
|
import { VulnerabilityActionUser } from './vulnerabilities';
|
|
10
11
|
export interface DeviceOptions {
|
|
11
12
|
localIp: string;
|
|
12
|
-
activeNetCard: NetCard;
|
|
13
13
|
location: Location;
|
|
14
14
|
networkDevices?: NetworkDevice[];
|
|
15
15
|
users?: User[];
|
|
@@ -17,10 +17,10 @@ export interface DeviceOptions {
|
|
|
17
17
|
ports?: Map<number, Port>;
|
|
18
18
|
meta: MetaInfo;
|
|
19
19
|
mac: string;
|
|
20
|
+
libraryManager: LibraryManager;
|
|
20
21
|
}
|
|
21
22
|
export declare class Device {
|
|
22
23
|
localIp: string;
|
|
23
|
-
activeNetCard: NetCard;
|
|
24
24
|
location: Location;
|
|
25
25
|
networkDevices: NetworkDevice[];
|
|
26
26
|
users: Map<string, User>;
|
|
@@ -30,9 +30,11 @@ export declare class Device {
|
|
|
30
30
|
processes: Map<number, Process>;
|
|
31
31
|
groups: Map<string, Set<string>>;
|
|
32
32
|
mac: string;
|
|
33
|
+
libraryManager: LibraryManager;
|
|
33
34
|
constructor(options: DeviceOptions);
|
|
34
35
|
initialize(): void;
|
|
35
36
|
getNetworkDeviceMap(): Map<string, NetworkDevice>;
|
|
37
|
+
findNetworkDevicesByNetCard(netCard: NetCard): NetworkDevice[];
|
|
36
38
|
addUser(userName: string, password: string): boolean;
|
|
37
39
|
removeUser(userName: string): boolean;
|
|
38
40
|
updatePasswd(): boolean;
|