greybel-mock-environment 1.0.9 → 1.1.1

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, EMail, Port, Router, Switch, User } from './types';
6
+ import { Computer, EMail, Port, Router, Session, Switch } from './types';
7
7
  export default class MockEnvironment {
8
8
  seed: string;
9
9
  basicGenerator: BasicGenerator;
@@ -11,7 +11,8 @@ export default class MockEnvironment {
11
11
  userGenerator: UserGenerator;
12
12
  vulnerabilityGenerator: VulnerabilityGenerator;
13
13
  networkGenerator: NetworkGenerator;
14
- localComputer: Computer;
14
+ sessions: Session[];
15
+ localSession: Session;
15
16
  constructor(seed: string, localUser: {
16
17
  username: string;
17
18
  password: string;
@@ -25,10 +26,8 @@ export default class MockEnvironment {
25
26
  computer: Computer;
26
27
  } | null;
27
28
  setupLibraries(): void;
28
- getLocal(): {
29
- computer: Computer;
30
- user: User;
31
- };
29
+ getLatestSession(): Session;
30
+ getLocal(): Session;
32
31
  connectLocal(router: Router): void;
33
32
  getRouterByIp(ipAddress: string): Router | null;
34
33
  getSwitchByIp(ipAddress: string): Switch | null;
@@ -40,28 +40,37 @@ var utils_1 = require("./utils");
40
40
  var MockEnvironment = /** @class */ (function () {
41
41
  function MockEnvironment(seed, localUser) {
42
42
  if (seed === void 0) { seed = 'test'; }
43
- this.seed = seed;
44
- this.basicGenerator = new basic_1.default({ seed: seed });
45
- this.emailGenerator = new email_1.default({
43
+ var me = this;
44
+ me.seed = seed;
45
+ me.basicGenerator = new basic_1.default({ seed: seed });
46
+ me.emailGenerator = new email_1.default({
46
47
  seed: seed,
47
- basicGenerator: this.basicGenerator
48
+ basicGenerator: me.basicGenerator
48
49
  });
49
- this.userGenerator = new user_1.default({
50
+ me.userGenerator = new user_1.default({
50
51
  seed: seed,
51
- basicGenerator: this.basicGenerator,
52
- emailGenerator: this.emailGenerator
52
+ basicGenerator: me.basicGenerator,
53
+ emailGenerator: me.emailGenerator
53
54
  });
54
- this.vulnerabilityGenerator = new vulnerability_1.default({
55
+ me.vulnerabilityGenerator = new vulnerability_1.default({
55
56
  seed: seed,
56
- basicGenerator: this.basicGenerator
57
+ basicGenerator: me.basicGenerator
57
58
  });
58
- this.networkGenerator = new network_1.default({
59
+ me.networkGenerator = new network_1.default({
59
60
  seed: seed,
60
- basicGenerator: this.basicGenerator,
61
- userGenerator: this.userGenerator,
62
- emailGenerator: this.emailGenerator
61
+ basicGenerator: me.basicGenerator,
62
+ userGenerator: me.userGenerator,
63
+ emailGenerator: me.emailGenerator
64
+ });
65
+ var user = me.userGenerator.generate(localUser.username, localUser.password);
66
+ var computer = me.networkGenerator.generateLocalComputer([user], 'test');
67
+ var location = computer.getHome(user);
68
+ me.localSession = new types_1.Session({
69
+ user: user,
70
+ computer: computer,
71
+ location: location
63
72
  });
64
- this.localComputer = this.networkGenerator.generateLocalComputer([this.userGenerator.generate(localUser.username, localUser.password)], 'test');
73
+ me.sessions.push(me.localSession);
65
74
  }
66
75
  MockEnvironment.prototype.getComputerInLan = function (ipAddress, router) {
67
76
  var me = this;
@@ -135,13 +144,11 @@ var MockEnvironment = /** @class */ (function () {
135
144
  remote: true
136
145
  });
137
146
  };
147
+ MockEnvironment.prototype.getLatestSession = function () {
148
+ return this.sessions[this.sessions.length - 1];
149
+ };
138
150
  MockEnvironment.prototype.getLocal = function () {
139
- var computer = this.localComputer;
140
- var user = computer.users[1];
141
- return {
142
- computer: computer,
143
- user: user
144
- };
151
+ return this.localSession;
145
152
  };
146
153
  MockEnvironment.prototype.connectLocal = function (router) {
147
154
  var me = this;
@@ -149,15 +156,15 @@ var MockEnvironment = /** @class */ (function () {
149
156
  if (!serverMap.has(router.publicIp)) {
150
157
  throw new Error("Router with ip ".concat(router.publicIp, " is unknown in serverMap."));
151
158
  }
152
- var localComputer = me.localComputer;
153
- if (localComputer.router) {
154
- localComputer.router.devices.delete(localComputer.localIp);
159
+ var computer = me.localSession.computer;
160
+ if (computer.router) {
161
+ computer.router.devices.delete(computer.localIp);
155
162
  }
156
163
  var serverMapGenerator = serverMap.get(router.publicIp);
157
164
  var localIp = serverMapGenerator.generateLocalIp(router);
158
- localComputer.router = router;
159
- localComputer.localIp = localIp;
160
- router.devices.set(localIp, localComputer);
165
+ computer.router = router;
166
+ computer.localIp = localIp;
167
+ router.devices.set(localIp, computer);
161
168
  };
162
169
  MockEnvironment.prototype.getRouterByIp = function (ipAddress) {
163
170
  var me = this;
@@ -178,7 +185,7 @@ var MockEnvironment = /** @class */ (function () {
178
185
  if (!(0, utils_1.isValidIp)(ipAddress) || !(0, utils_1.isLanIp)(ipAddress)) {
179
186
  return null;
180
187
  }
181
- var localRouter = me.localComputer.router;
188
+ var localRouter = me.getLatestSession().computer.router;
182
189
  try {
183
190
  for (var _b = __values(localRouter.devices), _c = _b.next(); !_c.done; _c = _b.next()) {
184
191
  var _d = __read(_c.value, 2), localIp = _d[0], device = _d[1];
File without changes
@@ -29,307 +29,265 @@ exports.getDefaultFileSystem = exports.getUserFolder = void 0;
29
29
  var types_1 = require("./types");
30
30
  function getEtcAptFiles(parent) {
31
31
  return [
32
- {
32
+ new types_1.File({
33
33
  name: 'sources.txt',
34
34
  permissions: '-rw-r-----',
35
35
  owner: 'root',
36
36
  content: "{\n\t\t\t\"official_server\": true,\n\t\t\t\"sourceList\": {}\n\t\t}",
37
- type: types_1.FileType.Plain,
38
- parent: parent
39
- }
37
+ type: types_1.FileType.Plain
38
+ }, parent)
40
39
  ];
41
40
  }
42
41
  function getEtcAptFolder(parent) {
43
- var aptFolder = {
42
+ var aptFolder = new types_1.Folder({
44
43
  name: 'apt',
45
44
  permissions: 'drwxr-x---',
46
45
  owner: 'root',
47
- isFolder: true,
48
46
  folders: [],
49
- files: [],
50
- parent: parent
51
- };
47
+ files: []
48
+ }, parent);
52
49
  aptFolder.files = getEtcAptFiles(aptFolder);
53
50
  return aptFolder;
54
51
  }
55
52
  function getEtcFiles(parent, users) {
56
53
  return [
57
- {
54
+ new types_1.File({
58
55
  name: 'passwd',
59
56
  permissions: '-rw-r-----',
60
57
  owner: 'root',
61
- content: users.map(function (v) { return "".concat(v.username, ":").concat(v.passwordHashed); }).join('\n'),
62
- type: types_1.FileType.Plain,
63
- parent: parent
64
- },
65
- {
58
+ content: users
59
+ .map(function (v) { return "".concat(v.username, ":").concat(v.passwordHashed); })
60
+ .join('\n'),
61
+ type: types_1.FileType.Plain
62
+ }, parent),
63
+ new types_1.File({
66
64
  name: 'xorg.conf',
67
65
  permissions: '-rw-r-----',
68
66
  owner: 'root',
69
67
  content: "",
70
- type: types_1.FileType.Plain,
71
- parent: parent
72
- },
73
- {
68
+ type: types_1.FileType.Plain
69
+ }, parent),
70
+ new types_1.File({
74
71
  name: 'fstab',
75
72
  permissions: '-rw-r-----',
76
73
  owner: 'root',
77
74
  content: "",
78
- type: types_1.FileType.Plain,
79
- parent: parent
80
- }
75
+ type: types_1.FileType.Plain
76
+ }, parent)
81
77
  ];
82
78
  }
83
79
  function getEtcFolder(parent, users) {
84
- var etcFolder = {
80
+ var etcFolder = new types_1.Folder({
85
81
  name: 'etc',
86
82
  permissions: 'drwxr-x---',
87
83
  owner: 'root',
88
- isFolder: true,
89
84
  folders: [],
90
- files: [],
91
- parent: parent
92
- };
85
+ files: []
86
+ }, parent);
93
87
  etcFolder.folders = [getEtcAptFolder(etcFolder)];
94
88
  etcFolder.files = getEtcFiles(etcFolder, users);
95
89
  return etcFolder;
96
90
  }
97
91
  function getLibFiles(parent) {
98
92
  return [
99
- {
93
+ new types_1.File({
100
94
  name: 'init.so',
101
95
  permissions: '-rw-r-----',
102
96
  owner: 'root',
103
- type: types_1.FileType.Init,
104
- parent: parent
105
- },
106
- {
97
+ type: types_1.FileType.Init
98
+ }, parent),
99
+ new types_1.File({
107
100
  name: 'kernel_module.so',
108
101
  permissions: '-rw-r-----',
109
102
  owner: 'root',
110
- type: types_1.FileType.KernelModule,
111
- parent: parent
112
- },
113
- {
103
+ type: types_1.FileType.KernelModule
104
+ }, parent),
105
+ new types_1.File({
114
106
  name: 'net.so',
115
107
  permissions: '-rw-r-----',
116
108
  owner: 'root',
117
- type: types_1.FileType.Net,
118
- parent: parent
119
- },
120
- {
109
+ type: types_1.FileType.Net
110
+ }, parent),
111
+ new types_1.File({
121
112
  name: 'aptclient.so',
122
113
  permissions: '-rw-r--r--',
123
114
  owner: 'root',
124
- type: types_1.FileType.AptClient,
125
- parent: parent
126
- },
127
- {
115
+ type: types_1.FileType.AptClient
116
+ }, parent),
117
+ new types_1.File({
128
118
  name: 'crypto.so',
129
119
  permissions: '-rw-r--r--',
130
120
  owner: 'root',
131
- type: types_1.FileType.Crypto,
132
- parent: parent
133
- },
134
- {
121
+ type: types_1.FileType.Crypto
122
+ }, parent),
123
+ new types_1.File({
135
124
  name: 'metaxploit.so',
136
125
  permissions: '-rw-r--r--',
137
126
  owner: 'root',
138
- type: types_1.FileType.Metaxploit,
139
- parent: parent
140
- },
141
- {
127
+ type: types_1.FileType.Metaxploit
128
+ }, parent),
129
+ new types_1.File({
142
130
  name: 'blockchain.so',
143
131
  permissions: '-rw-r--r--',
144
132
  owner: 'root',
145
- type: types_1.FileType.Blockchain,
146
- parent: parent
147
- },
148
- {
133
+ type: types_1.FileType.Blockchain
134
+ }, parent),
135
+ new types_1.File({
149
136
  name: 'ssh.so',
150
137
  permissions: '-rw-r--r--',
151
138
  owner: 'root',
152
- type: types_1.FileType.SSH,
153
- parent: parent
154
- },
155
- {
139
+ type: types_1.FileType.SSH
140
+ }, parent),
141
+ new types_1.File({
156
142
  name: 'ftp.so',
157
143
  permissions: '-rw-r--r--',
158
144
  owner: 'root',
159
- type: types_1.FileType.FTP,
160
- parent: parent
161
- },
162
- {
145
+ type: types_1.FileType.FTP
146
+ }, parent),
147
+ new types_1.File({
163
148
  name: 'http.so',
164
149
  permissions: '-rw-r--r--',
165
150
  owner: 'root',
166
- type: types_1.FileType.HTTP,
167
- parent: parent
168
- },
169
- {
151
+ type: types_1.FileType.HTTP
152
+ }, parent),
153
+ new types_1.File({
170
154
  name: 'chat.so',
171
155
  permissions: '-rw-r--r--',
172
156
  owner: 'root',
173
- type: types_1.FileType.Chat,
174
- parent: parent
175
- },
176
- {
157
+ type: types_1.FileType.Chat
158
+ }, parent),
159
+ new types_1.File({
177
160
  name: 'rshell.so',
178
161
  permissions: '-rw-r--r--',
179
162
  owner: 'root',
180
- type: types_1.FileType.RShell,
181
- parent: parent
182
- },
183
- {
163
+ type: types_1.FileType.RShell
164
+ }, parent),
165
+ new types_1.File({
184
166
  name: 'repository.so',
185
167
  permissions: '-rw-r--r--',
186
168
  owner: 'root',
187
- type: types_1.FileType.Repository,
188
- parent: parent
189
- }
169
+ type: types_1.FileType.Repository
170
+ }, parent)
190
171
  ];
191
172
  }
192
173
  function getLibFolder(parent) {
193
- var libFolder = {
174
+ var libFolder = new types_1.Folder({
194
175
  name: 'lib',
195
176
  permissions: 'drwxrwx---',
196
177
  owner: 'root',
197
- isFolder: true,
198
178
  folders: [],
199
- files: [],
200
- parent: parent
201
- };
179
+ files: []
180
+ }, parent);
202
181
  libFolder.files = getLibFiles(libFolder);
203
182
  return libFolder;
204
183
  }
205
184
  function getSysFiles(parent) {
206
185
  return [
207
- {
186
+ new types_1.File({
208
187
  name: 'xorg.sys',
209
188
  permissions: '-r-x------',
210
189
  owner: 'root',
211
- type: types_1.FileType.System,
212
- parent: parent
213
- },
214
- {
190
+ type: types_1.FileType.System
191
+ }, parent),
192
+ new types_1.File({
215
193
  name: 'config.sys',
216
194
  permissions: '-rw-------',
217
195
  owner: 'root',
218
- type: types_1.FileType.System,
219
- parent: parent
220
- },
221
- {
196
+ type: types_1.FileType.System
197
+ }, parent),
198
+ new types_1.File({
222
199
  name: 'network.cfg',
223
200
  permissions: '-rw-------',
224
201
  owner: 'root',
225
- type: types_1.FileType.System,
226
- parent: parent
227
- }
202
+ type: types_1.FileType.System
203
+ }, parent)
228
204
  ];
229
205
  }
230
206
  function getSysFolder(parent) {
231
- var sysFolder = {
207
+ var sysFolder = new types_1.Folder({
232
208
  name: 'sys',
233
209
  permissions: 'drwxr-xr-x',
234
210
  owner: 'root',
235
- isFolder: true,
236
211
  folders: [],
237
- files: [],
238
- parent: parent
239
- };
212
+ files: []
213
+ }, parent);
240
214
  sysFolder.files = getSysFiles(sysFolder);
241
215
  return sysFolder;
242
216
  }
243
217
  function getDefaultHomeFolders(parent, owner, permissions) {
244
218
  return [
245
- {
219
+ new types_1.Folder({
246
220
  name: 'Desktop',
247
221
  permissions: permissions,
248
222
  owner: owner,
249
- isFolder: true,
250
223
  folders: [],
251
- files: [],
252
- parent: parent
253
- },
254
- {
224
+ files: []
225
+ }, parent),
226
+ new types_1.Folder({
255
227
  name: 'Downloads',
256
228
  permissions: permissions,
257
229
  owner: owner,
258
- isFolder: true,
259
230
  folders: [],
260
- files: [],
261
- parent: parent
262
- },
263
- {
231
+ files: []
232
+ }, parent),
233
+ new types_1.Folder({
264
234
  name: 'Config',
265
235
  permissions: permissions,
266
236
  owner: owner,
267
- isFolder: true,
268
237
  folders: [],
269
- files: [],
270
- parent: parent
271
- },
272
- {
238
+ files: []
239
+ }, parent),
240
+ new types_1.Folder({
273
241
  name: '.Trash',
274
242
  permissions: permissions,
275
243
  owner: owner,
276
- isFolder: true,
277
244
  folders: [],
278
- files: [],
279
- parent: parent
280
- }
245
+ files: []
246
+ }, parent)
281
247
  ];
282
248
  }
283
249
  function getRootFolder(parent) {
284
- var rootFolder = {
250
+ var rootFolder = new types_1.Folder({
285
251
  name: 'root',
286
252
  permissions: 'drwxr-----',
287
253
  owner: 'root',
288
- isFolder: true,
289
254
  folders: [],
290
- files: [],
291
- parent: parent
292
- };
255
+ files: []
256
+ }, parent);
293
257
  rootFolder.folders = getDefaultHomeFolders(rootFolder, 'root', 'drwxrwx---');
294
258
  return rootFolder;
295
259
  }
296
260
  function getUserFolder(parent, user) {
297
- var userFolder = {
261
+ var userFolder = new types_1.Folder({
298
262
  name: user,
299
263
  permissions: 'drwxr-----',
300
264
  owner: user,
301
- isFolder: true,
302
265
  folders: [],
303
- files: [],
304
- parent: parent
305
- };
266
+ files: []
267
+ }, parent);
306
268
  userFolder.folders = getDefaultHomeFolders(userFolder, user, 'drwxrwx---');
307
269
  return userFolder;
308
270
  }
309
271
  exports.getUserFolder = getUserFolder;
310
272
  function getGuestFolder(parent) {
311
- var guestFolder = {
273
+ var guestFolder = new types_1.Folder({
312
274
  name: 'guest',
313
275
  permissions: 'drwxrwxrwx',
314
276
  owner: 'guest',
315
- isFolder: true,
316
277
  folders: [],
317
- files: [],
318
- parent: parent
319
- };
278
+ files: []
279
+ }, parent);
320
280
  guestFolder.folders = getDefaultHomeFolders(guestFolder, 'guest', 'drwxrwxrwx');
321
281
  return guestFolder;
322
282
  }
323
283
  function getHomeFolder(parent, users) {
324
- var homeFolder = {
284
+ var homeFolder = new types_1.Folder({
325
285
  name: 'home',
326
286
  permissions: 'drwxr-xr-x',
327
287
  owner: 'root',
328
- isFolder: true,
329
288
  folders: [],
330
- files: [],
331
- parent: parent
332
- };
289
+ files: []
290
+ }, parent);
333
291
  homeFolder.folders = __spreadArray(__spreadArray([], __read(users
334
292
  .filter(function (v) { return v.username !== 'root'; })
335
293
  .map(function (v) { return getUserFolder(homeFolder, v.username); })), false), [
@@ -338,99 +296,85 @@ function getHomeFolder(parent, users) {
338
296
  return homeFolder;
339
297
  }
340
298
  function getVarFolder(parent) {
341
- return {
299
+ return new types_1.Folder({
342
300
  name: 'var',
343
301
  permissions: 'drwxr-xr-x',
344
302
  owner: 'root',
345
- isFolder: true,
346
303
  folders: [],
347
- files: [],
348
- parent: parent
349
- };
304
+ files: []
305
+ }, parent);
350
306
  }
351
307
  function getBinFolder(parent) {
352
- return {
308
+ return new types_1.Folder({
353
309
  name: 'bin',
354
310
  permissions: 'drwxrwxr-x',
355
311
  owner: 'root',
356
- isFolder: true,
357
312
  folders: [],
358
- files: [],
359
- parent: parent
360
- };
313
+ files: []
314
+ }, parent);
361
315
  }
362
316
  function getUsrBinFolder(parent) {
363
- return {
317
+ return new types_1.Folder({
364
318
  name: 'bin',
365
319
  permissions: 'drwxrwxr-x',
366
320
  owner: 'root',
367
- isFolder: true,
368
321
  folders: [],
369
- files: [],
370
- parent: parent
371
- };
322
+ files: []
323
+ }, parent);
372
324
  }
373
325
  function getUsrFolder(parent) {
374
- var usrFolder = {
326
+ var usrFolder = new types_1.Folder({
375
327
  name: 'usr',
376
328
  permissions: 'drwxrwxr-x',
377
329
  owner: 'root',
378
- isFolder: true,
379
330
  folders: [],
380
- files: [],
381
- parent: parent
382
- };
331
+ files: []
332
+ }, parent);
383
333
  usrFolder.folders = [getUsrBinFolder(usrFolder)];
384
334
  return usrFolder;
385
335
  }
386
336
  function getBootFiles(parent) {
387
337
  return [
388
- {
338
+ new types_1.File({
389
339
  name: 'System.map',
390
340
  permissions: '-rw-------',
391
341
  owner: 'root',
392
- type: types_1.FileType.System,
393
- parent: parent
394
- },
395
- {
342
+ type: types_1.FileType.System
343
+ }, parent),
344
+ new types_1.File({
396
345
  name: 'inittrd.img',
397
346
  permissions: '-r--------',
398
347
  owner: 'root',
399
- type: types_1.FileType.System,
400
- parent: parent
401
- },
402
- {
348
+ type: types_1.FileType.System
349
+ }, parent),
350
+ new types_1.File({
403
351
  name: 'kernel.img',
404
352
  permissions: '-r--------',
405
353
  owner: 'root',
406
- type: types_1.FileType.System,
407
- parent: parent
408
- }
354
+ type: types_1.FileType.System
355
+ }, parent)
409
356
  ];
410
357
  }
411
358
  function getBootFolder(parent) {
412
- var bootFolder = {
359
+ var bootFolder = new types_1.Folder({
413
360
  name: 'sys',
414
361
  permissions: 'drwxr-xr-x',
415
362
  owner: 'root',
416
- isFolder: true,
417
363
  folders: [],
418
- files: [],
419
- parent: parent
420
- };
364
+ files: []
365
+ }, parent);
421
366
  bootFolder.files = getBootFiles(bootFolder);
422
367
  return bootFolder;
423
368
  }
424
369
  function getDefaultFileSystem(users) {
425
- var defaultSystem = {
370
+ var defaultSystem = new types_1.Folder({
426
371
  name: '',
427
372
  permissions: 'drwxr--r--',
428
373
  owner: 'root',
429
- isFolder: true,
430
374
  isProtected: true,
431
375
  files: [],
432
376
  folders: []
433
- };
377
+ });
434
378
  defaultSystem.folders = [
435
379
  getEtcFolder(defaultSystem, users),
436
380
  getLibFolder(defaultSystem),