fca-dragon 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.gitattributes +2 -0
- package/Extra/Bypass/956/index.js +234 -0
- package/Extra/Bypass/test/aaaa.json +170 -0
- package/Extra/Bypass/test/index.js +188 -0
- package/Extra/Database/index.js +469 -0
- package/Extra/ExtraAddons.js +82 -0
- package/Extra/ExtraFindUID.js +62 -0
- package/Extra/ExtraGetThread.js +365 -0
- package/Extra/ExtraScreenShot.js +430 -0
- package/Extra/ExtraUptimeRobot.js +38 -0
- package/Extra/Html/Classic/script.js +119 -0
- package/Extra/Html/Classic/style.css +8 -0
- package/Extra/Security/AES_256_GCM/index.js +0 -0
- package/Extra/Security/Base/Step_1.js +6 -0
- package/Extra/Security/Base/Step_2.js +22 -0
- package/Extra/Security/Base/Step_3.js +22 -0
- package/Extra/Security/Base/index.js +191 -0
- package/Extra/Security/Index.js +5 -0
- package/Extra/Security/Step_1.js +6 -0
- package/Extra/Security/Step_2.js +22 -0
- package/Extra/Security/Step_3.js +22 -0
- package/Extra/Src/Change_Environment.js +24 -0
- package/Extra/Src/Check_Update.js +67 -0
- package/Extra/Src/History.js +115 -0
- package/Extra/Src/Instant_Update.js +65 -0
- package/Extra/Src/Last-Run.js +65 -0
- package/Extra/Src/Premium.js +81 -0
- package/Extra/Src/Release_Memory.js +160 -0
- package/Extra/Src/Websocket.js +213 -0
- package/Extra/Src/image/checkmate.jpg +0 -0
- package/Extra/Src/test.js +28 -0
- package/Extra/Src/uuid.js +137 -0
- package/FastConfigFca.json +56 -0
- package/Func/AcceptAgreement.js +31 -0
- package/Func/ClearCache.js +64 -0
- package/Func/ReportV1.js +54 -0
- package/LICENSE +21 -0
- package/Language/index.json +220 -0
- package/Main.js +1062 -0
- package/README.md +128 -0
- package/SECURITY.md +18 -0
- package/broadcast.js +44 -0
- package/index.js +428 -0
- package/logger.js +66 -0
- package/package.json +93 -0
- package/src/Dev_Horizon_Data.js +125 -0
- package/src/Dev_shareTest2.js +68 -0
- package/src/Dev_shareTest3.js +71 -0
- package/src/Premium.js +25 -0
- package/src/Screenshot.js +83 -0
- package/src/addExternalModule.js +16 -0
- package/src/addUserToGroup.js +79 -0
- package/src/changeAdminStatus.js +79 -0
- package/src/changeArchivedStatus.js +41 -0
- package/src/changeAvt.js +85 -0
- package/src/changeBio.js +65 -0
- package/src/changeBlockedStatus.js +36 -0
- package/src/changeGroupImage.js +106 -0
- package/src/changeNickname.js +45 -0
- package/src/changeThreadColor.js +62 -0
- package/src/changeThreadEmoji.js +42 -0
- package/src/createNewGroup.js +70 -0
- package/src/createPoll.js +60 -0
- package/src/deleteMessage.js +45 -0
- package/src/deleteThread.js +43 -0
- package/src/editMessage.js +53 -0
- package/src/forwardAttachment.js +48 -0
- package/src/getAccessToken.js +28 -0
- package/src/getCurrentUserID.js +7 -0
- package/src/getEmojiUrl.js +27 -0
- package/src/getFriendsList.js +73 -0
- package/src/getMessage.js +103 -0
- package/src/getThreadHistory.js +537 -0
- package/src/getThreadInfo.js +415 -0
- package/src/getThreadInfoOLD.js +422 -0
- package/src/getThreadList.js +213 -0
- package/src/getThreadMain.js +220 -0
- package/src/getThreadPictures.js +59 -0
- package/src/getUID.js +59 -0
- package/src/getUserID.js +62 -0
- package/src/getUserInfo.js +113 -0
- package/src/getUserInfoMain.js +65 -0
- package/src/getUserInfoV2.js +32 -0
- package/src/getUserInfoV3.js +63 -0
- package/src/getUserInfoV4.js +55 -0
- package/src/getUserInfoV5.js +61 -0
- package/src/handleFriendRequest.js +46 -0
- package/src/handleMessageRequest.js +49 -0
- package/src/httpGet.js +49 -0
- package/src/httpPost.js +48 -0
- package/src/httpPostFormData.js +41 -0
- package/src/listenMqtt.js +929 -0
- package/src/listenMqttV1.js +846 -0
- package/src/logout.js +68 -0
- package/src/markAsDelivered.js +48 -0
- package/src/markAsRead.js +70 -0
- package/src/markAsReadAll.js +43 -0
- package/src/markAsSeen.js +51 -0
- package/src/muteThread.js +47 -0
- package/src/removeUserFromGroup.js +49 -0
- package/src/resolvePhotoUrl.js +37 -0
- package/src/searchForThread.js +43 -0
- package/src/sendMessage.js +386 -0
- package/src/sendMqttMessage.js +71 -0
- package/src/sendTypingIndicator.js +80 -0
- package/src/setMessageReaction.js +109 -0
- package/src/setPostReaction.js +102 -0
- package/src/setTitle.js +74 -0
- package/src/shareContact.js +55 -0
- package/src/shareLink.js +58 -0
- package/src/threadColors.js +39 -0
- package/src/unfriend.js +43 -0
- package/src/unsendMessage.js +40 -0
- package/test/Database_Test.js +4 -0
- package/test/Db2.js +530 -0
- package/test/Horizon_Database/A_README.md +1 -0
- package/test/Horizon_Database/Database.db +0 -0
- package/test/data/shareAttach.js +146 -0
- package/test/data/something.mov +0 -0
- package/test/data/test.png +0 -0
- package/test/data/test.txt +7 -0
- package/test/env/.env +0 -0
- package/test/example-config.json +18 -0
- package/test/example-db.db +0 -0
- package/test/memoryleak.js +18 -0
- package/test/test-page.js +140 -0
- package/test/test.js +385 -0
- package/test/testname.js +1342 -0
- package/test/testv2.js +3 -0
- package/utils.js +3006 -0
package/.gitattributes
ADDED
@@ -0,0 +1,234 @@
|
|
1
|
+
/** By @KanzuWakazaki 03/05/2024 - DD/MM/YYYY */
|
2
|
+
// !Type - change password is not required
|
3
|
+
function Find_And_Parse(Data) {
|
4
|
+
const regex = /<script\s+type="application\/json"\s+data-content-len="([0-9]+)"\s+data-sjs\s*(.*?)\s*<\/script>/gs;
|
5
|
+
const matches = Data.matchAll(regex);
|
6
|
+
let Data_resp;
|
7
|
+
for (const match of matches) {
|
8
|
+
if (JSON.parse(JSON.stringify((match[2]))).includes('any_eligible_challenges')) {
|
9
|
+
const Data_ = JSON.parse(match[2].replace('>', ''))
|
10
|
+
Data_resp = findAnyEligibleChallengesAndSiblings(Data_)
|
11
|
+
}
|
12
|
+
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
function findAnyEligibleChallengesAndSiblings(data) {
|
17
|
+
const screenData = findScreenData(data);
|
18
|
+
if (!screenData) {
|
19
|
+
return null;
|
20
|
+
}
|
21
|
+
|
22
|
+
const siblings = {};
|
23
|
+
for (const [key, value] of Object.entries(screenData)) {
|
24
|
+
if (key === 'any_eligible_challenges') {
|
25
|
+
siblings[key] = value;
|
26
|
+
}
|
27
|
+
else {
|
28
|
+
siblings[key] = value;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
return siblings;
|
33
|
+
}
|
34
|
+
|
35
|
+
function findScreenData(data) {
|
36
|
+
if (Array.isArray(data)) {
|
37
|
+
for (const item of data) {
|
38
|
+
const result = findScreenData(item);
|
39
|
+
if (result) {
|
40
|
+
return result;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
else if (typeof data === 'object' && data !== null) {
|
45
|
+
if (data.screen) {
|
46
|
+
return data.screen;
|
47
|
+
}
|
48
|
+
for (const value of Object.values(data)) {
|
49
|
+
const result = findScreenData(value);
|
50
|
+
if (result) {
|
51
|
+
return result;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
return null;
|
56
|
+
}
|
57
|
+
return Data_resp.token || null
|
58
|
+
}
|
59
|
+
|
60
|
+
module.exports.Check = Find_And_Parse
|
61
|
+
module.exports.Cook_And_Work = async function(ctx, defaultFuncs) {
|
62
|
+
const utils = require('../../../utils');
|
63
|
+
var Form_P1;
|
64
|
+
var CanResolve_P1;
|
65
|
+
var NextToken_P1;
|
66
|
+
var lsd;
|
67
|
+
|
68
|
+
const Level_1 = () => new Promise((re, rj) => {
|
69
|
+
try {
|
70
|
+
utils.get('https://www.facebook.com/checkpoint/828281030927956/?next=https%3A%2F%2Faccountscenter.facebook.com%2Fpassword_and_security', ctx.jar, null, ctx.globalOptions)
|
71
|
+
.then(function(data) {
|
72
|
+
lsd = utils.getFrom(data.body, "[\"LSD\",[],{\"token\":\"", "\"}")
|
73
|
+
Form_P1 = {
|
74
|
+
lsd: lsd,
|
75
|
+
fb_api_caller_class: 'RelayModern',
|
76
|
+
fb_api_req_friendly_name: 'useEpsilonNavigateMutation',
|
77
|
+
variables: JSON.stringify({
|
78
|
+
input:{
|
79
|
+
client_mutation_id:"1",
|
80
|
+
actor_id: ctx.userId,
|
81
|
+
step:"STEPPER_CONFIRMATION",
|
82
|
+
token : JSON.stringify({
|
83
|
+
sensitive_string_value: Find_And_Parse(data.body)
|
84
|
+
})
|
85
|
+
},
|
86
|
+
scale:1
|
87
|
+
}),
|
88
|
+
server_timestamps: true,
|
89
|
+
doc_id: 7414856831926043
|
90
|
+
};
|
91
|
+
})
|
92
|
+
.then(function() {
|
93
|
+
defaultFuncs.postFormData('https://www.facebook.com/api/graphql/', ctx.jar, Form_P1, {})
|
94
|
+
.then(function(resp) {
|
95
|
+
let checkpoint = resp.data.epsilon_navigate.epsilon_checkpoint;
|
96
|
+
if (checkpoint.id == '__EPSILON_CLIENT__' && checkpoint.__typename == "EpsilonStepperScreen" && checkpoint.screen.next_screen == 'CONTACT_POINT_REVIEW' && checkpoint.screen.steps.length === 3 && checkpoint.screen.steps[1].active == true) {
|
97
|
+
NextToken_P1 = checkpoint.screen.token;
|
98
|
+
CanResolve_P1 = true;
|
99
|
+
re(CanResolve_P1)
|
100
|
+
}
|
101
|
+
else {
|
102
|
+
CanResolve_P1 = false;
|
103
|
+
re(CanResolve_P1)
|
104
|
+
}
|
105
|
+
});
|
106
|
+
})
|
107
|
+
}
|
108
|
+
catch (e) {
|
109
|
+
rj(e);
|
110
|
+
}
|
111
|
+
})
|
112
|
+
|
113
|
+
await Level_1();
|
114
|
+
|
115
|
+
var CanResolve_P2;
|
116
|
+
var NextToken_P2;
|
117
|
+
|
118
|
+
const Level_2 = () => new Promise((re, rj) => {
|
119
|
+
let Form_P2 = {
|
120
|
+
doc_id: 7414856831926043,
|
121
|
+
lsd: lsd,
|
122
|
+
fb_api_caller_class: "RelayModern",
|
123
|
+
fb_api_req_friendly_name: "useEpsilonNavigateMutation",
|
124
|
+
server_timestamps: true,
|
125
|
+
variables: JSON.stringify({
|
126
|
+
input: {
|
127
|
+
client_mutation_id: 2,
|
128
|
+
actor_id: ctx.userId,
|
129
|
+
step:"CONTACT_POINT_REVIEW",
|
130
|
+
token: JSON.stringify({
|
131
|
+
sensitive_string_value: NextToken_P1
|
132
|
+
})
|
133
|
+
},
|
134
|
+
scale: 1
|
135
|
+
})
|
136
|
+
}
|
137
|
+
|
138
|
+
defaultFuncs.postFormData('https://www.facebook.com/api/graphql/', ctx.jar, Form_P2, {}).then(function(resp) {
|
139
|
+
let checkpoint = resp.data.epsilon_navigate.epsilon_checkpoint;
|
140
|
+
if (checkpoint.id == '__EPSILON_CLIENT__' && checkpoint.__typename == "EpsilonContactPointReview" && checkpoint.screen.contact_points.length >= 1 && checkpoint.screen.contact_points[0].suspicious == "UNSUSPICIOUS") {
|
141
|
+
NextToken_P2 = checkpoint.screen.token;
|
142
|
+
CanResolve_P2 = true;
|
143
|
+
re(CanResolve_P2)
|
144
|
+
}
|
145
|
+
else {
|
146
|
+
CanResolve_P2 = false;
|
147
|
+
re(CanResolve_P2)
|
148
|
+
}
|
149
|
+
});
|
150
|
+
})
|
151
|
+
|
152
|
+
if (CanResolve_P1 == true) await Level_2();
|
153
|
+
else return CanResolve_P1;
|
154
|
+
|
155
|
+
var CanResolve_P3;
|
156
|
+
var NextToken_P3;
|
157
|
+
|
158
|
+
const Level_3 = () => new Promise((re, rj) => {
|
159
|
+
let Form_P3 ={
|
160
|
+
doc_id: 7414856831926043,
|
161
|
+
lsd: lsd,
|
162
|
+
fb_api_caller_class: "RelayModern",
|
163
|
+
fb_api_req_friendly_name: "useEpsilonNavigateMutation",
|
164
|
+
server_timestamps: true,
|
165
|
+
variables: JSON.stringify({
|
166
|
+
input: {
|
167
|
+
client_mutation_id: 3,
|
168
|
+
actor_id: ctx.userId,
|
169
|
+
step: "CHANGE_PASSWORD", //bro where's change password :d?
|
170
|
+
token: JSON.stringify({
|
171
|
+
sensitive_string_value: NextToken_P2
|
172
|
+
})
|
173
|
+
},
|
174
|
+
scale:1
|
175
|
+
})
|
176
|
+
}
|
177
|
+
|
178
|
+
defaultFuncs.postFormData('https://www.facebook.com/api/graphql/', ctx.jar, Form_P3, {}).then(function(resp) {
|
179
|
+
let checkpoint = resp.data.epsilon_navigate.epsilon_checkpoint;
|
180
|
+
if (checkpoint.id == '__EPSILON_CLIENT__' && checkpoint.__typename == "EpsilonLoginDetailsConfirmationScreen" && checkpoint.screen.contact_points.length >= 1) {
|
181
|
+
NextToken_P3 = checkpoint.screen.token;
|
182
|
+
CanResolve_P3 = true;
|
183
|
+
re(CanResolve_P3)
|
184
|
+
}
|
185
|
+
else {
|
186
|
+
CanResolve_P3 = false;
|
187
|
+
rj(CanResolve_P3)
|
188
|
+
}
|
189
|
+
});
|
190
|
+
})
|
191
|
+
|
192
|
+
if (CanResolve_P2 == true) await Level_3();
|
193
|
+
else return CanResolve_P2
|
194
|
+
|
195
|
+
var CanResolve_P4;
|
196
|
+
var NextToken_P4;
|
197
|
+
|
198
|
+
const Level_Final = () => new Promise((re, rj) => {
|
199
|
+
let Form_P4 ={
|
200
|
+
doc_id: 7414856831926043,
|
201
|
+
lsd: lsd,
|
202
|
+
fb_api_caller_class: "RelayModern",
|
203
|
+
fb_api_req_friendly_name: "useEpsilonNavigateMutation",
|
204
|
+
server_timestamps: true,
|
205
|
+
variables: JSON.stringify({
|
206
|
+
input: {
|
207
|
+
client_mutation_id: 4,
|
208
|
+
actor_id: ctx.userId,
|
209
|
+
step: "OUTRO",
|
210
|
+
token: JSON.stringify({
|
211
|
+
sensitive_string_value: NextToken_P3
|
212
|
+
})
|
213
|
+
},
|
214
|
+
scale:1
|
215
|
+
})
|
216
|
+
}
|
217
|
+
|
218
|
+
defaultFuncs.postFormData('https://www.facebook.com/api/graphql/', ctx.jar, Form_P4, {}).then(function(resp) {
|
219
|
+
let checkpoint = resp.data.epsilon_navigate.epsilon_checkpoint;
|
220
|
+
if (checkpoint.id == '__EPSILON_CLIENT__' && checkpoint.__typename == "EpsilonOutroScreen" && checkpoint.screen.fallback.uri == 'https://www.facebook.com/') {
|
221
|
+
NextToken_P4 = checkpoint.screen.token;
|
222
|
+
CanResolve_P4 = true;
|
223
|
+
re(CanResolve_P4)
|
224
|
+
}
|
225
|
+
else {
|
226
|
+
CanResolve_P4 = false;
|
227
|
+
re(CanResolve_P4)
|
228
|
+
}
|
229
|
+
});
|
230
|
+
});
|
231
|
+
|
232
|
+
if (CanResolve_P3 == true) return await Level_Final();
|
233
|
+
else return (CanResolve_P3);
|
234
|
+
}
|
@@ -0,0 +1,170 @@
|
|
1
|
+
|
2
|
+
{
|
3
|
+
"require": [
|
4
|
+
[
|
5
|
+
"ScheduledServerJS",
|
6
|
+
"handle",
|
7
|
+
null,
|
8
|
+
[
|
9
|
+
{
|
10
|
+
"__bbox": {
|
11
|
+
"require": [
|
12
|
+
[
|
13
|
+
"EpsilonIntro_data$normalization.graphql"
|
14
|
+
],
|
15
|
+
[
|
16
|
+
"EpsilonIntro.react"
|
17
|
+
],
|
18
|
+
[
|
19
|
+
"emptyFunction",
|
20
|
+
"thatReturns",
|
21
|
+
[
|
22
|
+
"RequireDeferredReference"
|
23
|
+
],
|
24
|
+
[
|
25
|
+
[
|
26
|
+
{
|
27
|
+
"__dr": "EpsilonIntro_data$normalization.graphql"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"__dr": "EpsilonIntro.react"
|
31
|
+
}
|
32
|
+
]
|
33
|
+
]
|
34
|
+
],
|
35
|
+
[
|
36
|
+
"RelayPrefetchedStreamCache",
|
37
|
+
"next",
|
38
|
+
[
|
39
|
+
],
|
40
|
+
[
|
41
|
+
"adp_EpsilonAppQueryRelayPreloader_6633c02c658625382051842",
|
42
|
+
{
|
43
|
+
"__bbox": {
|
44
|
+
"complete": true,
|
45
|
+
"result": {
|
46
|
+
"data": {
|
47
|
+
"epsilon_checkpoint": {
|
48
|
+
"screen": {
|
49
|
+
"__typename": "EpsilonIntroScreen",
|
50
|
+
"any_eligible_challenges": true,
|
51
|
+
"is_unvetted_flow": false,
|
52
|
+
"title": "Naroki \u01a1i, t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111\u00e3 b\u1ecb kh\u00f3a",
|
53
|
+
"description": "Ch\u00fang t\u00f4i \u0111\u00e3 ph\u00e1t hi\u1ec7n th\u1ea5y ho\u1ea1t \u0111\u1ed9ng b\u1ea5t th\u01b0\u1eddng tr\u00ean t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n. Nh\u01b0 v\u1eady ngh\u0129a l\u00e0 ai \u0111\u00f3 \u0111\u00e3 s\u1eed d\u1ee5ng t\u00e0i kho\u1ea3n n\u00e0y m\u00e0 b\u1ea1n kh\u00f4ng bi\u1ebft.",
|
54
|
+
"secondary_title": null,
|
55
|
+
"secondary": "H\u00e3y c\u00f9ng th\u1ef1c hi\u1ec7n m\u1ed9t v\u00e0i b\u01b0\u1edbc theo h\u01b0\u1edbng d\u1eabn \u0111\u1ec3 m\u1edf kh\u00f3a t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n nh\u00e9.",
|
56
|
+
"info_box": {
|
57
|
+
"heading": "Ng\u00e0y kh\u00f3a t\u00e0i kho\u1ea3n: Th\u00e1ng 5 2, 2024 ",
|
58
|
+
"body": "\u0110\u1ec3 b\u1ea3o v\u1ec7 b\u1ea1n, ch\u00fang t\u00f4i s\u1ebd \u1ea9n trang c\u00e1 nh\u00e2n c\u1ee7a b\u1ea1n v\u1edbi m\u1ecdi ng\u01b0\u1eddi tr\u00ean Facebook v\u00e0 b\u1ea1n c\u0169ng kh\u00f4ng th\u1ec3 s\u1eed d\u1ee5ng t\u00e0i kho\u1ea3n c\u1ee7a m\u00ecnh."
|
59
|
+
},
|
60
|
+
"button_text": "B\u1eaft \u0111\u1ea7u",
|
61
|
+
"token": "",
|
62
|
+
"view_vetted_devices_link": null,
|
63
|
+
"vetted_devices_title": "\u0110\u0103ng nh\u1eadp b\u1eb1ng b\u1ea5t k\u1ef3 thi\u1ebft b\u1ecb n\u00e0o sau \u0111\u00e2y",
|
64
|
+
"vetted_devices_body": "H\u00e3y \u0111\u1ea3m b\u1ea3o b\u1ea1n d\u00f9ng \u1ee9ng d\u1ee5ng ho\u1eb7c tr\u00ecnh duy\u1ec7t hi\u1ec3n th\u1ecb c\u00f9ng thi\u1ebft b\u1ecb.",
|
65
|
+
"vetted_devices": [
|
66
|
+
],
|
67
|
+
"__module_operation_EpsilonScreen_data": {
|
68
|
+
"__dr": "EpsilonIntro_data$normalization.graphql"
|
69
|
+
},
|
70
|
+
"__module_component_EpsilonScreen_data": {
|
71
|
+
"__dr": "EpsilonIntro.react"
|
72
|
+
}
|
73
|
+
},
|
74
|
+
"id": "__EPSILON_CLIENT__"
|
75
|
+
},
|
76
|
+
"viewer": {
|
77
|
+
"actor": {
|
78
|
+
"__typename": "User",
|
79
|
+
"__isActor": "User",
|
80
|
+
"id": "100077059530660",
|
81
|
+
"answer_agent_group_id": null,
|
82
|
+
"__isEntity": "User",
|
83
|
+
"profile_url": "https:\/\/www.facebook.com\/Horizon.Lucius.Synthesis.III",
|
84
|
+
"story_bucket": {
|
85
|
+
"nodes": [
|
86
|
+
{
|
87
|
+
"should_show_close_friend_badge": false,
|
88
|
+
"id": "100254162553235",
|
89
|
+
"first_story_to_show": null
|
90
|
+
}
|
91
|
+
]
|
92
|
+
},
|
93
|
+
"url": "https:\/\/www.facebook.com\/Horizon.Lucius.Synthesis.III",
|
94
|
+
"name": "Halzion Naroki",
|
95
|
+
"profile_picture": {
|
96
|
+
"uri": "https:\/\/scontent.fsgn15-1.fna.fbcdn.net\/v\/t39.30808-1\/399896211_348698977708751_6334756641854988641_n.jpg?stp=c0.53.120.120a_dst-jpg_p120x120&_nc_cat=103&ccb=1-7&_nc_sid=5f2048&_nc_ohc=KEEs_WVu_G8Q7kNvgExP4FT&_nc_ht=scontent.fsgn15-1.fna&oh=00_AfC6xFTxM16_NLs1beZLhfwOutDOc-BmzcA20030DBBvUA&oe=6639910A",
|
97
|
+
"width": 120,
|
98
|
+
"height": 120,
|
99
|
+
"scale": 2
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
},
|
104
|
+
"extensions": {
|
105
|
+
"prefetch_uris_v2": [
|
106
|
+
{
|
107
|
+
"uri": "https:\/\/scontent.fsgn15-1.fna.fbcdn.net\/v\/t39.30808-1\/399896211_348698977708751_6334756641854988641_n.jpg?stp=c0.53.120.120a_dst-jpg_p120x120&_nc_cat=103&ccb=1-7&_nc_sid=5f2048&_nc_ohc=KEEs_WVu_G8Q7kNvgExP4FT&_nc_ht=scontent.fsgn15-1.fna&oh=00_AfC6xFTxM16_NLs1beZLhfwOutDOc-BmzcA20030DBBvUA&oe=6639910A",
|
108
|
+
"label": null
|
109
|
+
}
|
110
|
+
],
|
111
|
+
"is_final": true
|
112
|
+
}
|
113
|
+
},
|
114
|
+
"sequence_number": 0
|
115
|
+
}
|
116
|
+
}
|
117
|
+
]
|
118
|
+
],
|
119
|
+
[
|
120
|
+
"Bootloader",
|
121
|
+
"markComponentsAsImmediate",
|
122
|
+
[
|
123
|
+
],
|
124
|
+
[
|
125
|
+
[
|
126
|
+
"EpsilonVettedDevicesDialog.react",
|
127
|
+
"CometProfileVideoSection.react",
|
128
|
+
"CometHovercardQueryRenderer.react"
|
129
|
+
]
|
130
|
+
]
|
131
|
+
],
|
132
|
+
[
|
133
|
+
"RequireDeferredReference",
|
134
|
+
"unblock",
|
135
|
+
[
|
136
|
+
],
|
137
|
+
[
|
138
|
+
[
|
139
|
+
"EpsilonIntro_data$normalization.graphql",
|
140
|
+
"EpsilonIntro.react"
|
141
|
+
],
|
142
|
+
"sd"
|
143
|
+
]
|
144
|
+
],
|
145
|
+
[
|
146
|
+
"RequireDeferredReference",
|
147
|
+
"unblock",
|
148
|
+
[
|
149
|
+
],
|
150
|
+
[
|
151
|
+
[
|
152
|
+
"EpsilonIntro_data$normalization.graphql",
|
153
|
+
"EpsilonIntro.react"
|
154
|
+
],
|
155
|
+
"css"
|
156
|
+
]
|
157
|
+
]
|
158
|
+
]
|
159
|
+
}
|
160
|
+
},
|
161
|
+
{
|
162
|
+
"__bbox": null
|
163
|
+
},
|
164
|
+
{
|
165
|
+
"__bbox": null
|
166
|
+
}
|
167
|
+
]
|
168
|
+
]
|
169
|
+
]
|
170
|
+
}
|
@@ -0,0 +1,188 @@
|
|
1
|
+
/** By @KanzuWakazaki 03/05/2024 - DD/MM/YYYY */
|
2
|
+
var Form_P1;
|
3
|
+
var CanResolve_P1;
|
4
|
+
var NextToken_P1;
|
5
|
+
var lsd;
|
6
|
+
utils.get('https://www.facebook.com/checkpoint/828281030927956/?next=https%3A%2F%2Faccountscenter.facebook.com%2Fpassword_and_security', ctx.jar, null, ctx.globalOptions)
|
7
|
+
.then(function(data) {
|
8
|
+
lsd = utils.getFrom(data.body, "[\"LSD\",[],{\"token\":\"", "\"}")
|
9
|
+
Form_P1 = {
|
10
|
+
lsd: lsd,
|
11
|
+
fb_api_caller_class: 'RelayModern',
|
12
|
+
fb_api_req_friendly_name: 'useEpsilonNavigateMutation',
|
13
|
+
variables: JSON.stringify({
|
14
|
+
input:{
|
15
|
+
client_mutation_id:"1",
|
16
|
+
actor_id: ctx.userId,
|
17
|
+
step:"STEPPER_CONFIRMATION",
|
18
|
+
token : JSON.stringify({
|
19
|
+
sensitive_string_value: Find_And_Parse(data.body)
|
20
|
+
})
|
21
|
+
},
|
22
|
+
scale:1
|
23
|
+
}),
|
24
|
+
server_timestamps: true,
|
25
|
+
doc_id: 7414856831926043
|
26
|
+
};
|
27
|
+
})
|
28
|
+
.then(function() {
|
29
|
+
defaultFuncs.postFormData('https://www.facebook.com/api/graphql/', ctx.jar, Form_P1, {})
|
30
|
+
.then(function(resp) {
|
31
|
+
let checkpoint = resp.data.epsilon_navigate.epsilon_checkpoint;
|
32
|
+
if (checkpoint.id == '__EPSILON_CLIENT__' && checkpoint.__typename == "EpsilonStepperScreen" && checkpoint.screen.next_screen == 'CONTACT_POINT_REVIEW' && checkpoint.screen.steps.length === 3 && checkpoint.screen.steps[1].active == true) {
|
33
|
+
NextToken_P1 = checkpoint.screen.token;
|
34
|
+
return CanResolve_P1 = true;
|
35
|
+
}
|
36
|
+
else return CanResolve_P1 = false;
|
37
|
+
});
|
38
|
+
})
|
39
|
+
|
40
|
+
var CanResolve_P2;
|
41
|
+
var NextToken_P2;
|
42
|
+
|
43
|
+
let Form_P2 = {
|
44
|
+
doc_id: 7414856831926043,
|
45
|
+
lsd: lsd,
|
46
|
+
fb_api_caller_class: "RelayModern",
|
47
|
+
fb_api_req_friendly_name: "useEpsilonNavigateMutation",
|
48
|
+
server_timestamps: true,
|
49
|
+
variables: JSON.stringify({
|
50
|
+
input: {
|
51
|
+
client_mutation_id: 2,
|
52
|
+
actor_id: ctx.userId,
|
53
|
+
step:"CONTACT_POINT_REVIEW",
|
54
|
+
token: JSON.stringify({
|
55
|
+
sensitive_string_value: NextToken_P1
|
56
|
+
})
|
57
|
+
},
|
58
|
+
scale: 1
|
59
|
+
})
|
60
|
+
}
|
61
|
+
|
62
|
+
defaultFuncs.postFormData('https://www.facebook.com/api/graphql/', ctx.jar, Form_P2, {}).then(function(resp) {
|
63
|
+
let checkpoint = resp.data.epsilon_navigate.epsilon_checkpoint;
|
64
|
+
if (checkpoint.id == '__EPSILON_CLIENT__' && checkpoint.__typename == "EpsilonContactPointReview" && checkpoint.screen.contact_points.length >= 1 && checkpoint.screen.contact_points[0].suspicious == "UNSUSPICIOUS") {
|
65
|
+
NextToken_P2 = checkpoint.screen.token;
|
66
|
+
return CanResolve_P2 = true;
|
67
|
+
}
|
68
|
+
else return CanResolve_P2 = false;
|
69
|
+
});
|
70
|
+
|
71
|
+
|
72
|
+
var CanResolve_P3;
|
73
|
+
var NextToken_P3;
|
74
|
+
let Form_P3 ={
|
75
|
+
doc_id: 7414856831926043,
|
76
|
+
lsd: lsd,
|
77
|
+
fb_api_caller_class: "RelayModern",
|
78
|
+
fb_api_req_friendly_name: "useEpsilonNavigateMutation",
|
79
|
+
server_timestamps: true,
|
80
|
+
variables: JSON.stringify({
|
81
|
+
input: {
|
82
|
+
client_mutation_id: 3,
|
83
|
+
actor_id: ctx.userId,
|
84
|
+
step: "CHANGE_PASSWORD",
|
85
|
+
token: JSON.stringify({
|
86
|
+
sensitive_string_value: NextToken_P2
|
87
|
+
})
|
88
|
+
},
|
89
|
+
scale:1
|
90
|
+
})
|
91
|
+
}
|
92
|
+
|
93
|
+
defaultFuncs.postFormData('https://www.facebook.com/api/graphql/', ctx.jar, Form_P3, {}).then(function(resp) {
|
94
|
+
let checkpoint = resp.data.epsilon_navigate.epsilon_checkpoint;
|
95
|
+
if (checkpoint.id == '__EPSILON_CLIENT__' && checkpoint.__typename == "EpsilonLoginDetailsConfirmationScreen" && checkpoint.screen.contact_points.length >= 1) {
|
96
|
+
NextToken_P3 = checkpoint.screen.token;
|
97
|
+
return CanResolve_P3 = true;
|
98
|
+
}
|
99
|
+
else return CanResolve_P3 = false;
|
100
|
+
});
|
101
|
+
|
102
|
+
var CanResolve_P4;
|
103
|
+
var NextToken_P4;
|
104
|
+
let Form_P4 ={
|
105
|
+
doc_id: 7414856831926043,
|
106
|
+
lsd: lsd,
|
107
|
+
fb_api_caller_class: "RelayModern",
|
108
|
+
fb_api_req_friendly_name: "useEpsilonNavigateMutation",
|
109
|
+
server_timestamps: true,
|
110
|
+
variables: JSON.stringify({
|
111
|
+
input: {
|
112
|
+
client_mutation_id: 4,
|
113
|
+
actor_id: ctx.userId,
|
114
|
+
step: "OUTRO",
|
115
|
+
token: JSON.stringify({
|
116
|
+
sensitive_string_value: NextToken_P3
|
117
|
+
})
|
118
|
+
},
|
119
|
+
scale:1
|
120
|
+
})
|
121
|
+
}
|
122
|
+
|
123
|
+
defaultFuncs.postFormData('https://www.facebook.com/api/graphql/', ctx.jar, Form_P4, {}).then(function(resp) {
|
124
|
+
let checkpoint = resp.data.epsilon_navigate.epsilon_checkpoint;
|
125
|
+
if (checkpoint.id == '__EPSILON_CLIENT__' && checkpoint.__typename == "EpsilonOutroScreen" && checkpoint.screen.fallback.uri == 'https://www.facebook.com/') {
|
126
|
+
NextToken_P4 = checkpoint.screen.token;
|
127
|
+
return CanResolve_P4 = true;
|
128
|
+
}
|
129
|
+
else return CanResolve_P4 = false;
|
130
|
+
});
|
131
|
+
|
132
|
+
|
133
|
+
function Find_And_Parse(Data) {
|
134
|
+
const regex = /<script\s+type="application\/json"\s+data-content-len="([0-9]+)"\s+data-sjs\s*(.*?)\s*<\/script>/gs;
|
135
|
+
const matches = Data.matchAll(regex);
|
136
|
+
let Data_resp;
|
137
|
+
for (const match of matches) {
|
138
|
+
if (JSON.parse(JSON.stringify((match[2]))).includes('any_eligible_challenges')) {
|
139
|
+
const Data_ = JSON.parse(match[2].replace('>', ''))
|
140
|
+
Data_resp = findAnyEligibleChallengesAndSiblings(Data_)
|
141
|
+
}
|
142
|
+
|
143
|
+
}
|
144
|
+
|
145
|
+
|
146
|
+
function findAnyEligibleChallengesAndSiblings(data) {
|
147
|
+
const screenData = findScreenData(data);
|
148
|
+
if (!screenData) {
|
149
|
+
return null;
|
150
|
+
}
|
151
|
+
|
152
|
+
const siblings = {};
|
153
|
+
for (const [key, value] of Object.entries(screenData)) {
|
154
|
+
if (key === 'any_eligible_challenges') {
|
155
|
+
siblings[key] = value;
|
156
|
+
}
|
157
|
+
else {
|
158
|
+
siblings[key] = value;
|
159
|
+
}
|
160
|
+
}
|
161
|
+
|
162
|
+
return siblings;
|
163
|
+
}
|
164
|
+
|
165
|
+
function findScreenData(data) {
|
166
|
+
if (Array.isArray(data)) {
|
167
|
+
for (const item of data) {
|
168
|
+
const result = findScreenData(item);
|
169
|
+
if (result) {
|
170
|
+
return result;
|
171
|
+
}
|
172
|
+
}
|
173
|
+
}
|
174
|
+
else if (typeof data === 'object' && data !== null) {
|
175
|
+
if (data.screen) {
|
176
|
+
return data.screen;
|
177
|
+
}
|
178
|
+
for (const value of Object.values(data)) {
|
179
|
+
const result = findScreenData(value);
|
180
|
+
if (result) {
|
181
|
+
return result;
|
182
|
+
}
|
183
|
+
}
|
184
|
+
}
|
185
|
+
return null;
|
186
|
+
}
|
187
|
+
return Data_resp.token || null
|
188
|
+
}
|