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.
@@ -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;
@@ -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
- function getLibraryFile(service, parent) {
78
+ var service_1 = require("./types/service");
79
+ function getLibraryFile(service, libManager, parent) {
79
80
  switch (service) {
80
- case types_1.Service.SSH: {
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: '1.0.0.0'
87
+ version: libManager.getLatestVersion(library_1.Library.SSH).toString()
87
88
  }, parent);
88
89
  }
89
- case types_1.Service.FTP: {
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: '1.0.0.0'
96
+ version: libManager.getLatestVersion(library_1.Library.FTP).toString()
96
97
  }, parent);
97
98
  }
98
- case types_1.Service.HTTP: {
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: '1.0.0.0'
105
+ version: libManager.getLatestVersion(library_1.Library.HTTP).toString()
105
106
  }, parent);
106
107
  }
107
- case types_1.Service.RSHELL: {
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: '1.0.0.0'
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: '1.0.0.0'
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: '1.0.0.0'
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: '1.0.0.0'
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: '1.0.0.0'
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: '1.0.0.0'
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: '1.0.0.0'
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: '1.0.0.0'
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: '1.0.0.0'
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
- constructor({ seed, basicGenerator, userGenerator, emailGenerator }: NetworkGeneratorOptions);
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 { Library, Vulnerability } from '../types';
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
- vulnerabilities: Vulnerability[];
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(library: Library, memAddress: string, remote: boolean): Vulnerability;
15
- generateSectorVulnerabilities(library: Library, sector: string, remote: boolean): Vulnerability[];
16
- generateVulnerabilitiesForLibrary(library: Library, options?: {
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 types_1 = require("../types");
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.vulnerabilities = [];
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 (library, memAddress, remote) {
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 = types_1.VulnerabilityActionList[me.vulnerabilityRng.intBetween(0, 4)];
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 = types_1.VulnerabilityRequirementList[index];
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 = types_1.VulnerabilityActionUser.ROOT;
89
+ user = vulnerabilities_1.VulnerabilityActionUser.Root;
66
90
  break;
67
91
  case 1:
68
92
  case 2:
69
- user = types_1.VulnerabilityActionUser.NORMAL;
93
+ user = vulnerabilities_1.VulnerabilityActionUser.Normal;
70
94
  break;
71
95
  default:
72
- user = types_1.VulnerabilityActionUser.GUEST;
96
+ user = vulnerabilities_1.VulnerabilityActionUser.Guest;
73
97
  break;
74
98
  }
75
- return new types_1.Vulnerability({
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 (library, sector, remote) {
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(library, sector, remote));
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 (library, options) {
99
- if (options === void 0) { options = {}; }
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 (options.remote)
104
- me.generateSectorVulnerabilities(library, address, true);
105
- if (options.local)
106
- me.generateSectorVulnerabilities(library, address, false);
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()
@@ -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;