greybel-mock-environment 1.0.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fs.d.ts +36 -0
- package/dist/fs.js +784 -0
- package/dist/generators/network.js +5 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/default-fs.d.ts +0 -3
- package/dist/default-fs.js +0 -447
package/dist/fs.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as Type from './types';
|
|
2
|
+
export declare function getUserFolder(parent: Type.FSEntity, user: string): Type.Folder;
|
|
3
|
+
export declare function getDefaultFileSystem(users: Type.User[]): Type.Folder;
|
|
4
|
+
export interface PermissionSegment {
|
|
5
|
+
x: boolean;
|
|
6
|
+
w: boolean;
|
|
7
|
+
r: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface PermissionMap {
|
|
10
|
+
u: PermissionSegment;
|
|
11
|
+
g: PermissionSegment;
|
|
12
|
+
o: PermissionSegment;
|
|
13
|
+
}
|
|
14
|
+
export declare function getPermissionSegmentValueByString(flag: PermissionSegment, flagType: string): boolean;
|
|
15
|
+
export declare function setPermissionSegmentValueByString(flag: PermissionSegment, flagType: string, value: boolean): void;
|
|
16
|
+
export declare function getPermissionSegmentByString(flag: PermissionMap, userType: string): PermissionSegment;
|
|
17
|
+
export declare function transformFlagsToPermissions(permissionMap: PermissionMap): string;
|
|
18
|
+
export declare function parsePermissions(file: Type.FSEntity): PermissionMap;
|
|
19
|
+
export declare function getPermissions(user: Type.User, file: Type.FSEntity): PermissionSegment;
|
|
20
|
+
export declare function getFile(entity: Type.FSEntity, path: string[]): Type.FSEntity | null;
|
|
21
|
+
export declare function hasFile(folder: Type.Folder, fileName: string): boolean;
|
|
22
|
+
export declare function getFileIndex(folder: Type.Folder, fileName: string): {
|
|
23
|
+
isFolder: boolean;
|
|
24
|
+
index: number;
|
|
25
|
+
};
|
|
26
|
+
export declare function putFile(folder: Type.Folder, file: Type.File): void;
|
|
27
|
+
export declare function removeFile(folder: Type.Folder, fileName: string): boolean;
|
|
28
|
+
export declare function traverseChildren(entity: Type.FSEntity, callback: (v: Type.FSEntity) => void, skip?: boolean): void;
|
|
29
|
+
export declare function copyFile(entity: Type.FSEntity, parent: Type.FSEntity): Type.FSEntity;
|
|
30
|
+
export declare function getHomePath(user: Type.User, computer: Type.Computer): string[] | null;
|
|
31
|
+
export declare function getFilePath(entity: Type.FSEntity): string[] | null;
|
|
32
|
+
export declare function getTraversalPath(path: string | null, currentLocation: string[] | null): null | string[];
|
|
33
|
+
export declare function getFileLibrary(file: Type.File): Type.Library | null;
|
|
34
|
+
export declare function getServiceLibrary(service: Type.Service): Type.Library | null;
|
|
35
|
+
export declare function getUserByVulnerability(vulActionUser: Type.VulnerabilityActionUser, computer: Type.Computer): Type.User;
|
|
36
|
+
export declare function changePassword(computer: Type.Computer, username: string, password: string): boolean;
|
package/dist/fs.js
ADDED
|
@@ -0,0 +1,784 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
26
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
27
|
+
if (!m) return o;
|
|
28
|
+
var i = m.call(o), r, ar = [], e;
|
|
29
|
+
try {
|
|
30
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
31
|
+
}
|
|
32
|
+
catch (error) { e = { error: error }; }
|
|
33
|
+
finally {
|
|
34
|
+
try {
|
|
35
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
36
|
+
}
|
|
37
|
+
finally { if (e) throw e.error; }
|
|
38
|
+
}
|
|
39
|
+
return ar;
|
|
40
|
+
};
|
|
41
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
42
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
43
|
+
if (ar || !(i in from)) {
|
|
44
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
45
|
+
ar[i] = from[i];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
49
|
+
};
|
|
50
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
51
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
52
|
+
};
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.changePassword = exports.getUserByVulnerability = exports.getServiceLibrary = exports.getFileLibrary = exports.getTraversalPath = exports.getFilePath = exports.getHomePath = exports.copyFile = exports.traverseChildren = exports.removeFile = exports.putFile = exports.getFileIndex = exports.hasFile = exports.getFile = exports.getPermissions = exports.parsePermissions = exports.transformFlagsToPermissions = exports.getPermissionSegmentByString = exports.setPermissionSegmentValueByString = exports.getPermissionSegmentValueByString = exports.getDefaultFileSystem = exports.getUserFolder = void 0;
|
|
55
|
+
var blueimp_md5_1 = __importDefault(require("blueimp-md5"));
|
|
56
|
+
var Type = __importStar(require("./types"));
|
|
57
|
+
function getEtcAptFiles(parent) {
|
|
58
|
+
return [
|
|
59
|
+
{
|
|
60
|
+
name: 'sources.txt',
|
|
61
|
+
permissions: '-rw-r-----',
|
|
62
|
+
owner: 'root',
|
|
63
|
+
content: "{\n\t\t\t\"official_server\": true,\n\t\t\t\"sourceList\": {}\n\t\t}",
|
|
64
|
+
type: Type.FileType.Plain,
|
|
65
|
+
parent: parent
|
|
66
|
+
}
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
function getEtcAptFolder(parent) {
|
|
70
|
+
var aptFolder = {
|
|
71
|
+
name: 'apt',
|
|
72
|
+
permissions: 'drwxr-x---',
|
|
73
|
+
owner: 'root',
|
|
74
|
+
isFolder: true,
|
|
75
|
+
folders: [],
|
|
76
|
+
files: [],
|
|
77
|
+
parent: parent
|
|
78
|
+
};
|
|
79
|
+
aptFolder.files = getEtcAptFiles(aptFolder);
|
|
80
|
+
return aptFolder;
|
|
81
|
+
}
|
|
82
|
+
function getEtcFiles(parent, users) {
|
|
83
|
+
return [
|
|
84
|
+
{
|
|
85
|
+
name: 'passwd',
|
|
86
|
+
permissions: '-rw-r-----',
|
|
87
|
+
owner: 'root',
|
|
88
|
+
content: users.map(function (v) { return "".concat(v.username, ":").concat(v.passwordHashed); }).join('\n'),
|
|
89
|
+
type: Type.FileType.Plain,
|
|
90
|
+
parent: parent
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'xorg.conf',
|
|
94
|
+
permissions: '-rw-r-----',
|
|
95
|
+
owner: 'root',
|
|
96
|
+
content: "",
|
|
97
|
+
type: Type.FileType.Plain,
|
|
98
|
+
parent: parent
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'fstab',
|
|
102
|
+
permissions: '-rw-r-----',
|
|
103
|
+
owner: 'root',
|
|
104
|
+
content: "",
|
|
105
|
+
type: Type.FileType.Plain,
|
|
106
|
+
parent: parent
|
|
107
|
+
}
|
|
108
|
+
];
|
|
109
|
+
}
|
|
110
|
+
function getEtcFolder(parent, users) {
|
|
111
|
+
var etcFolder = {
|
|
112
|
+
name: 'etc',
|
|
113
|
+
permissions: 'drwxr-x---',
|
|
114
|
+
owner: 'root',
|
|
115
|
+
isFolder: true,
|
|
116
|
+
folders: [],
|
|
117
|
+
files: [],
|
|
118
|
+
parent: parent
|
|
119
|
+
};
|
|
120
|
+
etcFolder.folders = [getEtcAptFolder(etcFolder)];
|
|
121
|
+
etcFolder.files = getEtcFiles(etcFolder, users);
|
|
122
|
+
return etcFolder;
|
|
123
|
+
}
|
|
124
|
+
function getLibFiles(parent) {
|
|
125
|
+
return [
|
|
126
|
+
{
|
|
127
|
+
name: 'init.so',
|
|
128
|
+
permissions: '-rw-r-----',
|
|
129
|
+
owner: 'root',
|
|
130
|
+
type: Type.FileType.Init,
|
|
131
|
+
parent: parent
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: 'kernel_module.so',
|
|
135
|
+
permissions: '-rw-r-----',
|
|
136
|
+
owner: 'root',
|
|
137
|
+
type: Type.FileType.KernelModule,
|
|
138
|
+
parent: parent
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: 'net.so',
|
|
142
|
+
permissions: '-rw-r-----',
|
|
143
|
+
owner: 'root',
|
|
144
|
+
type: Type.FileType.Net,
|
|
145
|
+
parent: parent
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: 'aptclient.so',
|
|
149
|
+
permissions: '-rw-r--r--',
|
|
150
|
+
owner: 'root',
|
|
151
|
+
type: Type.FileType.AptClient,
|
|
152
|
+
parent: parent
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: 'crypto.so',
|
|
156
|
+
permissions: '-rw-r--r--',
|
|
157
|
+
owner: 'root',
|
|
158
|
+
type: Type.FileType.Crypto,
|
|
159
|
+
parent: parent
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: 'metaxploit.so',
|
|
163
|
+
permissions: '-rw-r--r--',
|
|
164
|
+
owner: 'root',
|
|
165
|
+
type: Type.FileType.Metaxploit,
|
|
166
|
+
parent: parent
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: 'blockchain.so',
|
|
170
|
+
permissions: '-rw-r--r--',
|
|
171
|
+
owner: 'root',
|
|
172
|
+
type: Type.FileType.Blockchain,
|
|
173
|
+
parent: parent
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'ssh.so',
|
|
177
|
+
permissions: '-rw-r--r--',
|
|
178
|
+
owner: 'root',
|
|
179
|
+
type: Type.FileType.SSH,
|
|
180
|
+
parent: parent
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
name: 'ftp.so',
|
|
184
|
+
permissions: '-rw-r--r--',
|
|
185
|
+
owner: 'root',
|
|
186
|
+
type: Type.FileType.FTP,
|
|
187
|
+
parent: parent
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: 'http.so',
|
|
191
|
+
permissions: '-rw-r--r--',
|
|
192
|
+
owner: 'root',
|
|
193
|
+
type: Type.FileType.HTTP,
|
|
194
|
+
parent: parent
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
name: 'chat.so',
|
|
198
|
+
permissions: '-rw-r--r--',
|
|
199
|
+
owner: 'root',
|
|
200
|
+
type: Type.FileType.Chat,
|
|
201
|
+
parent: parent
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
name: 'rshell.so',
|
|
205
|
+
permissions: '-rw-r--r--',
|
|
206
|
+
owner: 'root',
|
|
207
|
+
type: Type.FileType.RShell,
|
|
208
|
+
parent: parent
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: 'repository.so',
|
|
212
|
+
permissions: '-rw-r--r--',
|
|
213
|
+
owner: 'root',
|
|
214
|
+
type: Type.FileType.Repository,
|
|
215
|
+
parent: parent
|
|
216
|
+
}
|
|
217
|
+
];
|
|
218
|
+
}
|
|
219
|
+
function getLibFolder(parent) {
|
|
220
|
+
var libFolder = {
|
|
221
|
+
name: 'lib',
|
|
222
|
+
permissions: 'drwxrwx---',
|
|
223
|
+
owner: 'root',
|
|
224
|
+
isFolder: true,
|
|
225
|
+
folders: [],
|
|
226
|
+
files: [],
|
|
227
|
+
parent: parent
|
|
228
|
+
};
|
|
229
|
+
libFolder.files = getLibFiles(libFolder);
|
|
230
|
+
return libFolder;
|
|
231
|
+
}
|
|
232
|
+
function getSysFiles(parent) {
|
|
233
|
+
return [
|
|
234
|
+
{
|
|
235
|
+
name: 'xorg.sys',
|
|
236
|
+
permissions: '-r-x------',
|
|
237
|
+
owner: 'root',
|
|
238
|
+
type: Type.FileType.System,
|
|
239
|
+
parent: parent
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
name: 'config.sys',
|
|
243
|
+
permissions: '-rw-------',
|
|
244
|
+
owner: 'root',
|
|
245
|
+
type: Type.FileType.System,
|
|
246
|
+
parent: parent
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
name: 'network.cfg',
|
|
250
|
+
permissions: '-rw-------',
|
|
251
|
+
owner: 'root',
|
|
252
|
+
type: Type.FileType.System,
|
|
253
|
+
parent: parent
|
|
254
|
+
}
|
|
255
|
+
];
|
|
256
|
+
}
|
|
257
|
+
function getSysFolder(parent) {
|
|
258
|
+
var sysFolder = {
|
|
259
|
+
name: 'sys',
|
|
260
|
+
permissions: 'drwxr-xr-x',
|
|
261
|
+
owner: 'root',
|
|
262
|
+
isFolder: true,
|
|
263
|
+
folders: [],
|
|
264
|
+
files: [],
|
|
265
|
+
parent: parent
|
|
266
|
+
};
|
|
267
|
+
sysFolder.files = getSysFiles(sysFolder);
|
|
268
|
+
return sysFolder;
|
|
269
|
+
}
|
|
270
|
+
function getDefaultHomeFolders(parent, owner, permissions) {
|
|
271
|
+
return [
|
|
272
|
+
{
|
|
273
|
+
name: 'Desktop',
|
|
274
|
+
permissions: permissions,
|
|
275
|
+
owner: owner,
|
|
276
|
+
isFolder: true,
|
|
277
|
+
folders: [],
|
|
278
|
+
files: [],
|
|
279
|
+
parent: parent
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
name: 'Downloads',
|
|
283
|
+
permissions: permissions,
|
|
284
|
+
owner: owner,
|
|
285
|
+
isFolder: true,
|
|
286
|
+
folders: [],
|
|
287
|
+
files: [],
|
|
288
|
+
parent: parent
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
name: 'Config',
|
|
292
|
+
permissions: permissions,
|
|
293
|
+
owner: owner,
|
|
294
|
+
isFolder: true,
|
|
295
|
+
folders: [],
|
|
296
|
+
files: [],
|
|
297
|
+
parent: parent
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
name: '.Trash',
|
|
301
|
+
permissions: permissions,
|
|
302
|
+
owner: owner,
|
|
303
|
+
isFolder: true,
|
|
304
|
+
folders: [],
|
|
305
|
+
files: [],
|
|
306
|
+
parent: parent
|
|
307
|
+
}
|
|
308
|
+
];
|
|
309
|
+
}
|
|
310
|
+
function getRootFolder(parent) {
|
|
311
|
+
var rootFolder = {
|
|
312
|
+
name: 'root',
|
|
313
|
+
permissions: 'drwxr-----',
|
|
314
|
+
owner: 'root',
|
|
315
|
+
isFolder: true,
|
|
316
|
+
folders: [],
|
|
317
|
+
files: [],
|
|
318
|
+
parent: parent
|
|
319
|
+
};
|
|
320
|
+
rootFolder.folders = getDefaultHomeFolders(rootFolder, 'root', 'drwxrwx---');
|
|
321
|
+
return rootFolder;
|
|
322
|
+
}
|
|
323
|
+
function getUserFolder(parent, user) {
|
|
324
|
+
var userFolder = {
|
|
325
|
+
name: user,
|
|
326
|
+
permissions: 'drwxr-----',
|
|
327
|
+
owner: user,
|
|
328
|
+
isFolder: true,
|
|
329
|
+
folders: [],
|
|
330
|
+
files: [],
|
|
331
|
+
parent: parent
|
|
332
|
+
};
|
|
333
|
+
userFolder.folders = getDefaultHomeFolders(userFolder, user, 'drwxrwx---');
|
|
334
|
+
return userFolder;
|
|
335
|
+
}
|
|
336
|
+
exports.getUserFolder = getUserFolder;
|
|
337
|
+
function getGuestFolder(parent) {
|
|
338
|
+
var guestFolder = {
|
|
339
|
+
name: 'guest',
|
|
340
|
+
permissions: 'drwxrwxrwx',
|
|
341
|
+
owner: 'guest',
|
|
342
|
+
isFolder: true,
|
|
343
|
+
folders: [],
|
|
344
|
+
files: [],
|
|
345
|
+
parent: parent
|
|
346
|
+
};
|
|
347
|
+
guestFolder.folders = getDefaultHomeFolders(guestFolder, 'guest', 'drwxrwxrwx');
|
|
348
|
+
return guestFolder;
|
|
349
|
+
}
|
|
350
|
+
function getHomeFolder(parent, users) {
|
|
351
|
+
var homeFolder = {
|
|
352
|
+
name: 'home',
|
|
353
|
+
permissions: 'drwxr-xr-x',
|
|
354
|
+
owner: 'root',
|
|
355
|
+
isFolder: true,
|
|
356
|
+
folders: [],
|
|
357
|
+
files: [],
|
|
358
|
+
parent: parent
|
|
359
|
+
};
|
|
360
|
+
homeFolder.folders = __spreadArray(__spreadArray([], __read(users
|
|
361
|
+
.filter(function (v) { return v.username !== 'root'; })
|
|
362
|
+
.map(function (v) { return getUserFolder(homeFolder, v.username); })), false), [
|
|
363
|
+
getGuestFolder(homeFolder)
|
|
364
|
+
], false);
|
|
365
|
+
return homeFolder;
|
|
366
|
+
}
|
|
367
|
+
function getVarFolder(parent) {
|
|
368
|
+
return {
|
|
369
|
+
name: 'var',
|
|
370
|
+
permissions: 'drwxr-xr-x',
|
|
371
|
+
owner: 'root',
|
|
372
|
+
isFolder: true,
|
|
373
|
+
folders: [],
|
|
374
|
+
files: [],
|
|
375
|
+
parent: parent
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
function getBinFolder(parent) {
|
|
379
|
+
return {
|
|
380
|
+
name: 'bin',
|
|
381
|
+
permissions: 'drwxrwxr-x',
|
|
382
|
+
owner: 'root',
|
|
383
|
+
isFolder: true,
|
|
384
|
+
folders: [],
|
|
385
|
+
files: [],
|
|
386
|
+
parent: parent
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
function getUsrBinFolder(parent) {
|
|
390
|
+
return {
|
|
391
|
+
name: 'bin',
|
|
392
|
+
permissions: 'drwxrwxr-x',
|
|
393
|
+
owner: 'root',
|
|
394
|
+
isFolder: true,
|
|
395
|
+
folders: [],
|
|
396
|
+
files: [],
|
|
397
|
+
parent: parent
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
function getUsrFolder(parent) {
|
|
401
|
+
var usrFolder = {
|
|
402
|
+
name: 'usr',
|
|
403
|
+
permissions: 'drwxrwxr-x',
|
|
404
|
+
owner: 'root',
|
|
405
|
+
isFolder: true,
|
|
406
|
+
folders: [],
|
|
407
|
+
files: [],
|
|
408
|
+
parent: parent
|
|
409
|
+
};
|
|
410
|
+
usrFolder.folders = [getUsrBinFolder(usrFolder)];
|
|
411
|
+
return usrFolder;
|
|
412
|
+
}
|
|
413
|
+
function getBootFiles(parent) {
|
|
414
|
+
return [
|
|
415
|
+
{
|
|
416
|
+
name: 'System.map',
|
|
417
|
+
permissions: '-rw-------',
|
|
418
|
+
owner: 'root',
|
|
419
|
+
type: Type.FileType.System,
|
|
420
|
+
parent: parent
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
name: 'inittrd.img',
|
|
424
|
+
permissions: '-r--------',
|
|
425
|
+
owner: 'root',
|
|
426
|
+
type: Type.FileType.System,
|
|
427
|
+
parent: parent
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
name: 'kernel.img',
|
|
431
|
+
permissions: '-r--------',
|
|
432
|
+
owner: 'root',
|
|
433
|
+
type: Type.FileType.System,
|
|
434
|
+
parent: parent
|
|
435
|
+
}
|
|
436
|
+
];
|
|
437
|
+
}
|
|
438
|
+
function getBootFolder(parent) {
|
|
439
|
+
var bootFolder = {
|
|
440
|
+
name: 'sys',
|
|
441
|
+
permissions: 'drwxr-xr-x',
|
|
442
|
+
owner: 'root',
|
|
443
|
+
isFolder: true,
|
|
444
|
+
folders: [],
|
|
445
|
+
files: [],
|
|
446
|
+
parent: parent
|
|
447
|
+
};
|
|
448
|
+
bootFolder.files = getBootFiles(bootFolder);
|
|
449
|
+
return bootFolder;
|
|
450
|
+
}
|
|
451
|
+
function getDefaultFileSystem(users) {
|
|
452
|
+
var defaultSystem = {
|
|
453
|
+
name: '',
|
|
454
|
+
permissions: 'drwxr--r--',
|
|
455
|
+
owner: 'root',
|
|
456
|
+
isFolder: true,
|
|
457
|
+
isProtected: true,
|
|
458
|
+
files: [],
|
|
459
|
+
folders: []
|
|
460
|
+
};
|
|
461
|
+
defaultSystem.folders = [
|
|
462
|
+
getEtcFolder(defaultSystem, users),
|
|
463
|
+
getLibFolder(defaultSystem),
|
|
464
|
+
getSysFolder(defaultSystem),
|
|
465
|
+
getRootFolder(defaultSystem),
|
|
466
|
+
getHomeFolder(defaultSystem, users),
|
|
467
|
+
getVarFolder(defaultSystem),
|
|
468
|
+
getBinFolder(defaultSystem),
|
|
469
|
+
getUsrFolder(defaultSystem),
|
|
470
|
+
getBootFolder(defaultSystem)
|
|
471
|
+
];
|
|
472
|
+
return defaultSystem;
|
|
473
|
+
}
|
|
474
|
+
exports.getDefaultFileSystem = getDefaultFileSystem;
|
|
475
|
+
function getPermissionSegmentValueByString(flag, flagType) {
|
|
476
|
+
switch (flagType) {
|
|
477
|
+
case 'x':
|
|
478
|
+
return flag.x;
|
|
479
|
+
case 'w':
|
|
480
|
+
return flag.w;
|
|
481
|
+
case 'r':
|
|
482
|
+
return flag.r;
|
|
483
|
+
default:
|
|
484
|
+
throw new Error('Invalid permission flag type.');
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
exports.getPermissionSegmentValueByString = getPermissionSegmentValueByString;
|
|
488
|
+
function setPermissionSegmentValueByString(flag, flagType, value) {
|
|
489
|
+
switch (flagType) {
|
|
490
|
+
case 'x': {
|
|
491
|
+
flag.x = value;
|
|
492
|
+
break;
|
|
493
|
+
}
|
|
494
|
+
case 'w': {
|
|
495
|
+
flag.w = value;
|
|
496
|
+
break;
|
|
497
|
+
}
|
|
498
|
+
case 'r': {
|
|
499
|
+
flag.r = value;
|
|
500
|
+
break;
|
|
501
|
+
}
|
|
502
|
+
default:
|
|
503
|
+
throw new Error('Invalid permission flag type.');
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
exports.setPermissionSegmentValueByString = setPermissionSegmentValueByString;
|
|
507
|
+
function getPermissionSegmentByString(flag, userType) {
|
|
508
|
+
switch (userType) {
|
|
509
|
+
case 'u':
|
|
510
|
+
return flag.u;
|
|
511
|
+
case 'g':
|
|
512
|
+
return flag.g;
|
|
513
|
+
case 'o':
|
|
514
|
+
return flag.o;
|
|
515
|
+
default:
|
|
516
|
+
throw new Error('Invalid permission user type.');
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
exports.getPermissionSegmentByString = getPermissionSegmentByString;
|
|
520
|
+
function transformFlagsToPermissions(permissionMap) {
|
|
521
|
+
var segments = [
|
|
522
|
+
permissionMap.u,
|
|
523
|
+
permissionMap.g,
|
|
524
|
+
permissionMap.o
|
|
525
|
+
].map(function (map) {
|
|
526
|
+
return "".concat(map.r ? 'r' : '-').concat(map.w ? 'w' : '-').concat(map.x ? 'x' : '-');
|
|
527
|
+
});
|
|
528
|
+
return segments.join('');
|
|
529
|
+
}
|
|
530
|
+
exports.transformFlagsToPermissions = transformFlagsToPermissions;
|
|
531
|
+
function parsePermissions(file) {
|
|
532
|
+
var permSegments = file.permissions.substr(1).match(/.{1,3}/g);
|
|
533
|
+
if (permSegments.length !== 3) {
|
|
534
|
+
throw Error('Invalid permissions.');
|
|
535
|
+
}
|
|
536
|
+
var _a = __read(permSegments, 3), u = _a[0], g = _a[1], o = _a[2];
|
|
537
|
+
return {
|
|
538
|
+
u: {
|
|
539
|
+
r: u[0] !== '-',
|
|
540
|
+
w: u[1] !== '-',
|
|
541
|
+
x: u[2] !== '-'
|
|
542
|
+
},
|
|
543
|
+
g: {
|
|
544
|
+
r: g[0] !== '-',
|
|
545
|
+
w: g[1] !== '-',
|
|
546
|
+
x: g[2] !== '-'
|
|
547
|
+
},
|
|
548
|
+
o: {
|
|
549
|
+
r: o[0] !== '-',
|
|
550
|
+
w: o[1] !== '-',
|
|
551
|
+
x: o[2] !== '-'
|
|
552
|
+
}
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
exports.parsePermissions = parsePermissions;
|
|
556
|
+
function getPermissions(user, file) {
|
|
557
|
+
// g is ignored for now
|
|
558
|
+
// todo: add group logic
|
|
559
|
+
var parsedPermissions = parsePermissions(file);
|
|
560
|
+
if (file.owner === user.username) {
|
|
561
|
+
return parsedPermissions.u;
|
|
562
|
+
}
|
|
563
|
+
return parsedPermissions.o;
|
|
564
|
+
}
|
|
565
|
+
exports.getPermissions = getPermissions;
|
|
566
|
+
function getFile(entity, path) {
|
|
567
|
+
if (!path || !entity.isFolder) {
|
|
568
|
+
return null;
|
|
569
|
+
}
|
|
570
|
+
if (path.length === 0) {
|
|
571
|
+
return entity;
|
|
572
|
+
}
|
|
573
|
+
var nextPath = [].concat(path);
|
|
574
|
+
var currentSegment = nextPath.shift();
|
|
575
|
+
var folder = entity;
|
|
576
|
+
var nextEntity = folder.files.find(function (item) { return item.name === currentSegment; }) ||
|
|
577
|
+
folder.folders.find(function (item) { return item.name === currentSegment; });
|
|
578
|
+
if (!nextEntity) {
|
|
579
|
+
return null;
|
|
580
|
+
}
|
|
581
|
+
if (nextPath.length === 0) {
|
|
582
|
+
return nextEntity;
|
|
583
|
+
}
|
|
584
|
+
return getFile(nextEntity, nextPath);
|
|
585
|
+
}
|
|
586
|
+
exports.getFile = getFile;
|
|
587
|
+
function hasFile(folder, fileName) {
|
|
588
|
+
return !!getFileIndex(folder, fileName);
|
|
589
|
+
}
|
|
590
|
+
exports.hasFile = hasFile;
|
|
591
|
+
function getFileIndex(folder, fileName) {
|
|
592
|
+
var fileIndex = folder.files.findIndex(function (item) { return item.name === fileName; });
|
|
593
|
+
if (fileIndex !== -1 && fileIndex !== undefined) {
|
|
594
|
+
return {
|
|
595
|
+
isFolder: false,
|
|
596
|
+
index: fileIndex
|
|
597
|
+
};
|
|
598
|
+
}
|
|
599
|
+
var folderIndex = folder.folders.findIndex(function (item) { return item.name === fileName; });
|
|
600
|
+
if (folderIndex !== -1 && folderIndex !== undefined) {
|
|
601
|
+
return {
|
|
602
|
+
isFolder: true,
|
|
603
|
+
index: folderIndex
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
return null;
|
|
607
|
+
}
|
|
608
|
+
exports.getFileIndex = getFileIndex;
|
|
609
|
+
function putFile(folder, file) {
|
|
610
|
+
removeFile(folder, file.name);
|
|
611
|
+
file.parent = folder;
|
|
612
|
+
folder.files.push(file);
|
|
613
|
+
}
|
|
614
|
+
exports.putFile = putFile;
|
|
615
|
+
function removeFile(folder, fileName) {
|
|
616
|
+
var result = getFileIndex(folder, fileName);
|
|
617
|
+
if (!result) {
|
|
618
|
+
return false;
|
|
619
|
+
}
|
|
620
|
+
var isFolder = result.isFolder, index = result.index;
|
|
621
|
+
var entity;
|
|
622
|
+
if (isFolder) {
|
|
623
|
+
entity = folder.folders[index];
|
|
624
|
+
entity.deleted = true;
|
|
625
|
+
folder.folders.splice(index, 1);
|
|
626
|
+
}
|
|
627
|
+
else {
|
|
628
|
+
entity = folder.files[index];
|
|
629
|
+
entity.deleted = true;
|
|
630
|
+
folder.files.splice(index, 1);
|
|
631
|
+
}
|
|
632
|
+
traverseChildren(entity, function (item) {
|
|
633
|
+
item.deleted = true;
|
|
634
|
+
});
|
|
635
|
+
return true;
|
|
636
|
+
}
|
|
637
|
+
exports.removeFile = removeFile;
|
|
638
|
+
function traverseChildren(entity, callback, skip) {
|
|
639
|
+
if (!entity.isFolder) {
|
|
640
|
+
return;
|
|
641
|
+
}
|
|
642
|
+
var folder = entity;
|
|
643
|
+
if (!skip) {
|
|
644
|
+
callback(entity);
|
|
645
|
+
}
|
|
646
|
+
folder.files.forEach(function (item) { return callback(item); });
|
|
647
|
+
folder.folders.forEach(function (item) {
|
|
648
|
+
return traverseChildren(item, callback);
|
|
649
|
+
});
|
|
650
|
+
}
|
|
651
|
+
exports.traverseChildren = traverseChildren;
|
|
652
|
+
function copyFile(entity, parent) {
|
|
653
|
+
var newEntity = {
|
|
654
|
+
name: entity.name,
|
|
655
|
+
permissions: entity.permissions,
|
|
656
|
+
owner: entity.owner,
|
|
657
|
+
isFolder: entity.isFolder,
|
|
658
|
+
parent: parent
|
|
659
|
+
};
|
|
660
|
+
if (entity.isFolder) {
|
|
661
|
+
var folder = entity;
|
|
662
|
+
var newFolder_1 = newEntity;
|
|
663
|
+
newFolder_1.files = folder.files.map(function (item) { return copyFile(item, newFolder_1); });
|
|
664
|
+
newFolder_1.folders = folder.folders.map(function (item) { return copyFile(item, newFolder_1); });
|
|
665
|
+
return newFolder_1;
|
|
666
|
+
}
|
|
667
|
+
var file = entity;
|
|
668
|
+
var newFile = newEntity;
|
|
669
|
+
newFile.content = file.content;
|
|
670
|
+
newFile.type = file.type;
|
|
671
|
+
return newFile;
|
|
672
|
+
}
|
|
673
|
+
exports.copyFile = copyFile;
|
|
674
|
+
function getHomePath(user, computer) {
|
|
675
|
+
var path;
|
|
676
|
+
switch (user.username) {
|
|
677
|
+
case 'root':
|
|
678
|
+
path = '/root';
|
|
679
|
+
break;
|
|
680
|
+
case 'guest':
|
|
681
|
+
path = '/home/guest';
|
|
682
|
+
break;
|
|
683
|
+
default:
|
|
684
|
+
path = '/home/' + user.username;
|
|
685
|
+
}
|
|
686
|
+
var traversalPath = getTraversalPath(path, []);
|
|
687
|
+
var folder = getFile(computer.fileSystem, traversalPath);
|
|
688
|
+
return folder ? traversalPath : null;
|
|
689
|
+
}
|
|
690
|
+
exports.getHomePath = getHomePath;
|
|
691
|
+
function getFilePath(entity) {
|
|
692
|
+
var path = [entity.name];
|
|
693
|
+
var current = entity.parent;
|
|
694
|
+
while (current && current.name !== '') {
|
|
695
|
+
path.unshift(current.name);
|
|
696
|
+
current = current.parent;
|
|
697
|
+
}
|
|
698
|
+
return path;
|
|
699
|
+
}
|
|
700
|
+
exports.getFilePath = getFilePath;
|
|
701
|
+
function getTraversalPath(path, currentLocation) {
|
|
702
|
+
if (!path) {
|
|
703
|
+
return null;
|
|
704
|
+
}
|
|
705
|
+
else if (path === '/') {
|
|
706
|
+
return [];
|
|
707
|
+
}
|
|
708
|
+
path = path.replace(/\/+$/i, '');
|
|
709
|
+
if (path.startsWith('/')) {
|
|
710
|
+
return path.substr(1).split('/');
|
|
711
|
+
}
|
|
712
|
+
if (currentLocation) {
|
|
713
|
+
return currentLocation.concat(path.split('/'));
|
|
714
|
+
}
|
|
715
|
+
return path.split('/');
|
|
716
|
+
}
|
|
717
|
+
exports.getTraversalPath = getTraversalPath;
|
|
718
|
+
function getFileLibrary(file) {
|
|
719
|
+
switch (file.type) {
|
|
720
|
+
case Type.FileType.AptClient:
|
|
721
|
+
return Type.Library.APT;
|
|
722
|
+
case Type.FileType.Crypto:
|
|
723
|
+
return Type.Library.CRYPTO;
|
|
724
|
+
case Type.FileType.Init:
|
|
725
|
+
return Type.Library.INIT;
|
|
726
|
+
case Type.FileType.KernelModule:
|
|
727
|
+
return Type.Library.KERNEL_MODULE;
|
|
728
|
+
case Type.FileType.Metaxploit:
|
|
729
|
+
return Type.Library.METAXPLOIT;
|
|
730
|
+
case Type.FileType.Net:
|
|
731
|
+
return Type.Library.NET;
|
|
732
|
+
default:
|
|
733
|
+
}
|
|
734
|
+
return null;
|
|
735
|
+
}
|
|
736
|
+
exports.getFileLibrary = getFileLibrary;
|
|
737
|
+
function getServiceLibrary(service) {
|
|
738
|
+
switch (service) {
|
|
739
|
+
case Type.Service.FTP:
|
|
740
|
+
return Type.Library.FTP;
|
|
741
|
+
case Type.Service.HTTP:
|
|
742
|
+
return Type.Library.HTTP;
|
|
743
|
+
case Type.Service.RSHELL:
|
|
744
|
+
return Type.Library.RSHELL;
|
|
745
|
+
case Type.Service.SMTP:
|
|
746
|
+
return Type.Library.SMTP;
|
|
747
|
+
case Type.Service.SQL:
|
|
748
|
+
return Type.Library.SQL;
|
|
749
|
+
case Type.Service.SSH:
|
|
750
|
+
return Type.Library.SSH;
|
|
751
|
+
default:
|
|
752
|
+
}
|
|
753
|
+
return null;
|
|
754
|
+
}
|
|
755
|
+
exports.getServiceLibrary = getServiceLibrary;
|
|
756
|
+
function getUserByVulnerability(vulActionUser, computer) {
|
|
757
|
+
switch (vulActionUser) {
|
|
758
|
+
case Type.VulnerabilityActionUser.NORMAL:
|
|
759
|
+
return computer.users[1];
|
|
760
|
+
case Type.VulnerabilityActionUser.ROOT:
|
|
761
|
+
return computer.users[0];
|
|
762
|
+
default:
|
|
763
|
+
}
|
|
764
|
+
return {
|
|
765
|
+
username: 'guest',
|
|
766
|
+
password: '',
|
|
767
|
+
passwordHashed: '',
|
|
768
|
+
email: '',
|
|
769
|
+
bankNumber: ''
|
|
770
|
+
};
|
|
771
|
+
}
|
|
772
|
+
exports.getUserByVulnerability = getUserByVulnerability;
|
|
773
|
+
function changePassword(computer, username, password) {
|
|
774
|
+
var user = computer.users.find(function (item) {
|
|
775
|
+
return item.username === username && item.password === password;
|
|
776
|
+
});
|
|
777
|
+
if (user) {
|
|
778
|
+
user.password = password;
|
|
779
|
+
user.passwordHashed = (0, blueimp_md5_1.default)(password);
|
|
780
|
+
return true;
|
|
781
|
+
}
|
|
782
|
+
return false;
|
|
783
|
+
}
|
|
784
|
+
exports.changePassword = changePassword;
|
|
@@ -30,7 +30,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
31
|
exports.ServerMapGenerator = void 0;
|
|
32
32
|
var random_seed_1 = __importDefault(require("random-seed"));
|
|
33
|
-
var
|
|
33
|
+
var fs_1 = require("../fs");
|
|
34
34
|
var types_1 = require("../types");
|
|
35
35
|
var ServerMapGenerator = /** @class */ (function () {
|
|
36
36
|
function ServerMapGenerator(_a) {
|
|
@@ -70,7 +70,7 @@ var ServerMapGenerator = /** @class */ (function () {
|
|
|
70
70
|
activeNetCard: options.activeNetCard || networkDevice.type,
|
|
71
71
|
networkDevices: options.networkDevices || [networkDevice],
|
|
72
72
|
users: options.users || switchUsers,
|
|
73
|
-
fileSystem: options.fileSystem || (0,
|
|
73
|
+
fileSystem: options.fileSystem || (0, fs_1.getDefaultFileSystem)(switchUsers),
|
|
74
74
|
bssid: options.bssid || basicGenerator.generateUUID(),
|
|
75
75
|
essid: options.essid || basicGenerator.generateUUID()
|
|
76
76
|
});
|
|
@@ -97,7 +97,7 @@ var ServerMapGenerator = /** @class */ (function () {
|
|
|
97
97
|
activeNetCard: networkDevice.type,
|
|
98
98
|
networkDevices: [networkDevice],
|
|
99
99
|
users: computerUsers,
|
|
100
|
-
fileSystem: (0,
|
|
100
|
+
fileSystem: (0, fs_1.getDefaultFileSystem)(computerUsers)
|
|
101
101
|
});
|
|
102
102
|
computer.ports = me.generatePorts(computer);
|
|
103
103
|
router.devices.set(computer.localIp, computer);
|
|
@@ -161,7 +161,7 @@ var NetworkGenerator = /** @class */ (function () {
|
|
|
161
161
|
activeNetCard: networkDevice.type,
|
|
162
162
|
networkDevices: [networkDevice],
|
|
163
163
|
users: computerUsers,
|
|
164
|
-
fileSystem: (0,
|
|
164
|
+
fileSystem: (0, fs_1.getDefaultFileSystem)(computerUsers)
|
|
165
165
|
});
|
|
166
166
|
return computer;
|
|
167
167
|
};
|
|
@@ -192,7 +192,7 @@ var NetworkGenerator = /** @class */ (function () {
|
|
|
192
192
|
activeNetCard: options.activeNetCard || networkDevice.type,
|
|
193
193
|
networkDevices: options.networkDevices || [networkDevice],
|
|
194
194
|
users: options.users || routerUsers,
|
|
195
|
-
fileSystem: options.fileSystem || (0,
|
|
195
|
+
fileSystem: options.fileSystem || (0, fs_1.getDefaultFileSystem)(routerUsers),
|
|
196
196
|
bssid: options.bssid || basicGenerator.generateUUID(),
|
|
197
197
|
essid: options.essid || basicGenerator.generateUUID()
|
|
198
198
|
});
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -27,7 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.isValidIp = exports.isLanIp = exports.Type = exports.Generators = exports.MockEnvironment = exports.FS = void 0;
|
|
30
|
-
exports.FS = __importStar(require("./
|
|
30
|
+
exports.FS = __importStar(require("./fs"));
|
|
31
31
|
var environment_1 = require("./environment");
|
|
32
32
|
Object.defineProperty(exports, "MockEnvironment", { enumerable: true, get: function () { return __importDefault(environment_1).default; } });
|
|
33
33
|
exports.Generators = __importStar(require("./generators"));
|
package/package.json
CHANGED
package/dist/default-fs.d.ts
DELETED
package/dist/default-fs.js
DELETED
|
@@ -1,447 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.getDefaultFileSystem = exports.getUserFolder = void 0;
|
|
29
|
-
var types_1 = require("./types");
|
|
30
|
-
function getEtcAptFiles(parent) {
|
|
31
|
-
return [
|
|
32
|
-
{
|
|
33
|
-
name: 'sources.txt',
|
|
34
|
-
permissions: '-rw-r-----',
|
|
35
|
-
owner: 'root',
|
|
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
|
-
}
|
|
40
|
-
];
|
|
41
|
-
}
|
|
42
|
-
function getEtcAptFolder(parent) {
|
|
43
|
-
var aptFolder = {
|
|
44
|
-
name: 'apt',
|
|
45
|
-
permissions: 'drwxr-x---',
|
|
46
|
-
owner: 'root',
|
|
47
|
-
isFolder: true,
|
|
48
|
-
folders: [],
|
|
49
|
-
files: [],
|
|
50
|
-
parent: parent
|
|
51
|
-
};
|
|
52
|
-
aptFolder.files = getEtcAptFiles(aptFolder);
|
|
53
|
-
return aptFolder;
|
|
54
|
-
}
|
|
55
|
-
function getEtcFiles(parent, users) {
|
|
56
|
-
return [
|
|
57
|
-
{
|
|
58
|
-
name: 'passwd',
|
|
59
|
-
permissions: '-rw-r-----',
|
|
60
|
-
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
|
-
{
|
|
66
|
-
name: 'xorg.conf',
|
|
67
|
-
permissions: '-rw-r-----',
|
|
68
|
-
owner: 'root',
|
|
69
|
-
content: "",
|
|
70
|
-
type: types_1.FileType.Plain,
|
|
71
|
-
parent: parent
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
name: 'fstab',
|
|
75
|
-
permissions: '-rw-r-----',
|
|
76
|
-
owner: 'root',
|
|
77
|
-
content: "",
|
|
78
|
-
type: types_1.FileType.Plain,
|
|
79
|
-
parent: parent
|
|
80
|
-
}
|
|
81
|
-
];
|
|
82
|
-
}
|
|
83
|
-
function getEtcFolder(parent, users) {
|
|
84
|
-
var etcFolder = {
|
|
85
|
-
name: 'etc',
|
|
86
|
-
permissions: 'drwxr-x---',
|
|
87
|
-
owner: 'root',
|
|
88
|
-
isFolder: true,
|
|
89
|
-
folders: [],
|
|
90
|
-
files: [],
|
|
91
|
-
parent: parent
|
|
92
|
-
};
|
|
93
|
-
etcFolder.folders = [getEtcAptFolder(etcFolder)];
|
|
94
|
-
etcFolder.files = getEtcFiles(etcFolder, users);
|
|
95
|
-
return etcFolder;
|
|
96
|
-
}
|
|
97
|
-
function getLibFiles(parent) {
|
|
98
|
-
return [
|
|
99
|
-
{
|
|
100
|
-
name: 'init.so',
|
|
101
|
-
permissions: '-rw-r-----',
|
|
102
|
-
owner: 'root',
|
|
103
|
-
type: types_1.FileType.Init,
|
|
104
|
-
parent: parent
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
name: 'kernel_module.so',
|
|
108
|
-
permissions: '-rw-r-----',
|
|
109
|
-
owner: 'root',
|
|
110
|
-
type: types_1.FileType.KernelModule,
|
|
111
|
-
parent: parent
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
name: 'net.so',
|
|
115
|
-
permissions: '-rw-r-----',
|
|
116
|
-
owner: 'root',
|
|
117
|
-
type: types_1.FileType.Net,
|
|
118
|
-
parent: parent
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
name: 'aptclient.so',
|
|
122
|
-
permissions: '-rw-r--r--',
|
|
123
|
-
owner: 'root',
|
|
124
|
-
type: types_1.FileType.AptClient,
|
|
125
|
-
parent: parent
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
name: 'crypto.so',
|
|
129
|
-
permissions: '-rw-r--r--',
|
|
130
|
-
owner: 'root',
|
|
131
|
-
type: types_1.FileType.Crypto,
|
|
132
|
-
parent: parent
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
name: 'metaxploit.so',
|
|
136
|
-
permissions: '-rw-r--r--',
|
|
137
|
-
owner: 'root',
|
|
138
|
-
type: types_1.FileType.Metaxploit,
|
|
139
|
-
parent: parent
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
name: 'blockchain.so',
|
|
143
|
-
permissions: '-rw-r--r--',
|
|
144
|
-
owner: 'root',
|
|
145
|
-
type: types_1.FileType.Blockchain,
|
|
146
|
-
parent: parent
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
name: 'ssh.so',
|
|
150
|
-
permissions: '-rw-r--r--',
|
|
151
|
-
owner: 'root',
|
|
152
|
-
type: types_1.FileType.SSH,
|
|
153
|
-
parent: parent
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
name: 'ftp.so',
|
|
157
|
-
permissions: '-rw-r--r--',
|
|
158
|
-
owner: 'root',
|
|
159
|
-
type: types_1.FileType.FTP,
|
|
160
|
-
parent: parent
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
name: 'http.so',
|
|
164
|
-
permissions: '-rw-r--r--',
|
|
165
|
-
owner: 'root',
|
|
166
|
-
type: types_1.FileType.HTTP,
|
|
167
|
-
parent: parent
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
name: 'chat.so',
|
|
171
|
-
permissions: '-rw-r--r--',
|
|
172
|
-
owner: 'root',
|
|
173
|
-
type: types_1.FileType.Chat,
|
|
174
|
-
parent: parent
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
name: 'rshell.so',
|
|
178
|
-
permissions: '-rw-r--r--',
|
|
179
|
-
owner: 'root',
|
|
180
|
-
type: types_1.FileType.RShell,
|
|
181
|
-
parent: parent
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
name: 'repository.so',
|
|
185
|
-
permissions: '-rw-r--r--',
|
|
186
|
-
owner: 'root',
|
|
187
|
-
type: types_1.FileType.Repository,
|
|
188
|
-
parent: parent
|
|
189
|
-
}
|
|
190
|
-
];
|
|
191
|
-
}
|
|
192
|
-
function getLibFolder(parent) {
|
|
193
|
-
var libFolder = {
|
|
194
|
-
name: 'lib',
|
|
195
|
-
permissions: 'drwxrwx---',
|
|
196
|
-
owner: 'root',
|
|
197
|
-
isFolder: true,
|
|
198
|
-
folders: [],
|
|
199
|
-
files: [],
|
|
200
|
-
parent: parent
|
|
201
|
-
};
|
|
202
|
-
libFolder.files = getLibFiles(libFolder);
|
|
203
|
-
return libFolder;
|
|
204
|
-
}
|
|
205
|
-
function getSysFiles(parent) {
|
|
206
|
-
return [
|
|
207
|
-
{
|
|
208
|
-
name: 'xorg.sys',
|
|
209
|
-
permissions: '-r-x------',
|
|
210
|
-
owner: 'root',
|
|
211
|
-
type: types_1.FileType.System,
|
|
212
|
-
parent: parent
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
name: 'config.sys',
|
|
216
|
-
permissions: '-rw-------',
|
|
217
|
-
owner: 'root',
|
|
218
|
-
type: types_1.FileType.System,
|
|
219
|
-
parent: parent
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
name: 'network.cfg',
|
|
223
|
-
permissions: '-rw-------',
|
|
224
|
-
owner: 'root',
|
|
225
|
-
type: types_1.FileType.System,
|
|
226
|
-
parent: parent
|
|
227
|
-
}
|
|
228
|
-
];
|
|
229
|
-
}
|
|
230
|
-
function getSysFolder(parent) {
|
|
231
|
-
var sysFolder = {
|
|
232
|
-
name: 'sys',
|
|
233
|
-
permissions: 'drwxr-xr-x',
|
|
234
|
-
owner: 'root',
|
|
235
|
-
isFolder: true,
|
|
236
|
-
folders: [],
|
|
237
|
-
files: [],
|
|
238
|
-
parent: parent
|
|
239
|
-
};
|
|
240
|
-
sysFolder.files = getSysFiles(sysFolder);
|
|
241
|
-
return sysFolder;
|
|
242
|
-
}
|
|
243
|
-
function getDefaultHomeFolders(parent, owner, permissions) {
|
|
244
|
-
return [
|
|
245
|
-
{
|
|
246
|
-
name: 'Desktop',
|
|
247
|
-
permissions: permissions,
|
|
248
|
-
owner: owner,
|
|
249
|
-
isFolder: true,
|
|
250
|
-
folders: [],
|
|
251
|
-
files: [],
|
|
252
|
-
parent: parent
|
|
253
|
-
},
|
|
254
|
-
{
|
|
255
|
-
name: 'Downloads',
|
|
256
|
-
permissions: permissions,
|
|
257
|
-
owner: owner,
|
|
258
|
-
isFolder: true,
|
|
259
|
-
folders: [],
|
|
260
|
-
files: [],
|
|
261
|
-
parent: parent
|
|
262
|
-
},
|
|
263
|
-
{
|
|
264
|
-
name: 'Config',
|
|
265
|
-
permissions: permissions,
|
|
266
|
-
owner: owner,
|
|
267
|
-
isFolder: true,
|
|
268
|
-
folders: [],
|
|
269
|
-
files: [],
|
|
270
|
-
parent: parent
|
|
271
|
-
},
|
|
272
|
-
{
|
|
273
|
-
name: '.Trash',
|
|
274
|
-
permissions: permissions,
|
|
275
|
-
owner: owner,
|
|
276
|
-
isFolder: true,
|
|
277
|
-
folders: [],
|
|
278
|
-
files: [],
|
|
279
|
-
parent: parent
|
|
280
|
-
}
|
|
281
|
-
];
|
|
282
|
-
}
|
|
283
|
-
function getRootFolder(parent) {
|
|
284
|
-
var rootFolder = {
|
|
285
|
-
name: 'root',
|
|
286
|
-
permissions: 'drwxr-----',
|
|
287
|
-
owner: 'root',
|
|
288
|
-
isFolder: true,
|
|
289
|
-
folders: [],
|
|
290
|
-
files: [],
|
|
291
|
-
parent: parent
|
|
292
|
-
};
|
|
293
|
-
rootFolder.folders = getDefaultHomeFolders(rootFolder, 'root', 'drwxrwx---');
|
|
294
|
-
return rootFolder;
|
|
295
|
-
}
|
|
296
|
-
function getUserFolder(parent, user) {
|
|
297
|
-
var userFolder = {
|
|
298
|
-
name: user,
|
|
299
|
-
permissions: 'drwxr-----',
|
|
300
|
-
owner: user,
|
|
301
|
-
isFolder: true,
|
|
302
|
-
folders: [],
|
|
303
|
-
files: [],
|
|
304
|
-
parent: parent
|
|
305
|
-
};
|
|
306
|
-
userFolder.folders = getDefaultHomeFolders(userFolder, user, 'drwxrwx---');
|
|
307
|
-
return userFolder;
|
|
308
|
-
}
|
|
309
|
-
exports.getUserFolder = getUserFolder;
|
|
310
|
-
function getGuestFolder(parent) {
|
|
311
|
-
var guestFolder = {
|
|
312
|
-
name: 'guest',
|
|
313
|
-
permissions: 'drwxrwxrwx',
|
|
314
|
-
owner: 'guest',
|
|
315
|
-
isFolder: true,
|
|
316
|
-
folders: [],
|
|
317
|
-
files: [],
|
|
318
|
-
parent: parent
|
|
319
|
-
};
|
|
320
|
-
guestFolder.folders = getDefaultHomeFolders(guestFolder, 'guest', 'drwxrwxrwx');
|
|
321
|
-
return guestFolder;
|
|
322
|
-
}
|
|
323
|
-
function getHomeFolder(parent, users) {
|
|
324
|
-
var homeFolder = {
|
|
325
|
-
name: 'home',
|
|
326
|
-
permissions: 'drwxr-xr-x',
|
|
327
|
-
owner: 'root',
|
|
328
|
-
isFolder: true,
|
|
329
|
-
folders: [],
|
|
330
|
-
files: [],
|
|
331
|
-
parent: parent
|
|
332
|
-
};
|
|
333
|
-
homeFolder.folders = __spreadArray(__spreadArray([], __read(users
|
|
334
|
-
.filter(function (v) { return v.username !== 'root'; })
|
|
335
|
-
.map(function (v) { return getUserFolder(homeFolder, v.username); })), false), [
|
|
336
|
-
getGuestFolder(homeFolder)
|
|
337
|
-
], false);
|
|
338
|
-
return homeFolder;
|
|
339
|
-
}
|
|
340
|
-
function getVarFolder(parent) {
|
|
341
|
-
return {
|
|
342
|
-
name: 'var',
|
|
343
|
-
permissions: 'drwxr-xr-x',
|
|
344
|
-
owner: 'root',
|
|
345
|
-
isFolder: true,
|
|
346
|
-
folders: [],
|
|
347
|
-
files: [],
|
|
348
|
-
parent: parent
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
function getBinFolder(parent) {
|
|
352
|
-
return {
|
|
353
|
-
name: 'bin',
|
|
354
|
-
permissions: 'drwxrwxr-x',
|
|
355
|
-
owner: 'root',
|
|
356
|
-
isFolder: true,
|
|
357
|
-
folders: [],
|
|
358
|
-
files: [],
|
|
359
|
-
parent: parent
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
function getUsrBinFolder(parent) {
|
|
363
|
-
return {
|
|
364
|
-
name: 'bin',
|
|
365
|
-
permissions: 'drwxrwxr-x',
|
|
366
|
-
owner: 'root',
|
|
367
|
-
isFolder: true,
|
|
368
|
-
folders: [],
|
|
369
|
-
files: [],
|
|
370
|
-
parent: parent
|
|
371
|
-
};
|
|
372
|
-
}
|
|
373
|
-
function getUsrFolder(parent) {
|
|
374
|
-
var usrFolder = {
|
|
375
|
-
name: 'usr',
|
|
376
|
-
permissions: 'drwxrwxr-x',
|
|
377
|
-
owner: 'root',
|
|
378
|
-
isFolder: true,
|
|
379
|
-
folders: [],
|
|
380
|
-
files: [],
|
|
381
|
-
parent: parent
|
|
382
|
-
};
|
|
383
|
-
usrFolder.folders = [getUsrBinFolder(usrFolder)];
|
|
384
|
-
return usrFolder;
|
|
385
|
-
}
|
|
386
|
-
function getBootFiles(parent) {
|
|
387
|
-
return [
|
|
388
|
-
{
|
|
389
|
-
name: 'System.map',
|
|
390
|
-
permissions: '-rw-------',
|
|
391
|
-
owner: 'root',
|
|
392
|
-
type: types_1.FileType.System,
|
|
393
|
-
parent: parent
|
|
394
|
-
},
|
|
395
|
-
{
|
|
396
|
-
name: 'inittrd.img',
|
|
397
|
-
permissions: '-r--------',
|
|
398
|
-
owner: 'root',
|
|
399
|
-
type: types_1.FileType.System,
|
|
400
|
-
parent: parent
|
|
401
|
-
},
|
|
402
|
-
{
|
|
403
|
-
name: 'kernel.img',
|
|
404
|
-
permissions: '-r--------',
|
|
405
|
-
owner: 'root',
|
|
406
|
-
type: types_1.FileType.System,
|
|
407
|
-
parent: parent
|
|
408
|
-
}
|
|
409
|
-
];
|
|
410
|
-
}
|
|
411
|
-
function getBootFolder(parent) {
|
|
412
|
-
var bootFolder = {
|
|
413
|
-
name: 'sys',
|
|
414
|
-
permissions: 'drwxr-xr-x',
|
|
415
|
-
owner: 'root',
|
|
416
|
-
isFolder: true,
|
|
417
|
-
folders: [],
|
|
418
|
-
files: [],
|
|
419
|
-
parent: parent
|
|
420
|
-
};
|
|
421
|
-
bootFolder.files = getBootFiles(bootFolder);
|
|
422
|
-
return bootFolder;
|
|
423
|
-
}
|
|
424
|
-
function getDefaultFileSystem(users) {
|
|
425
|
-
var defaultSystem = {
|
|
426
|
-
name: '',
|
|
427
|
-
permissions: 'drwxr--r--',
|
|
428
|
-
owner: 'root',
|
|
429
|
-
isFolder: true,
|
|
430
|
-
isProtected: true,
|
|
431
|
-
files: [],
|
|
432
|
-
folders: []
|
|
433
|
-
};
|
|
434
|
-
defaultSystem.folders = [
|
|
435
|
-
getEtcFolder(defaultSystem, users),
|
|
436
|
-
getLibFolder(defaultSystem),
|
|
437
|
-
getSysFolder(defaultSystem),
|
|
438
|
-
getRootFolder(defaultSystem),
|
|
439
|
-
getHomeFolder(defaultSystem, users),
|
|
440
|
-
getVarFolder(defaultSystem),
|
|
441
|
-
getBinFolder(defaultSystem),
|
|
442
|
-
getUsrFolder(defaultSystem),
|
|
443
|
-
getBootFolder(defaultSystem)
|
|
444
|
-
];
|
|
445
|
-
return defaultSystem;
|
|
446
|
-
}
|
|
447
|
-
exports.getDefaultFileSystem = getDefaultFileSystem;
|