fca-horidai-remastered 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. package/.gitattributes +2 -0
  2. package/Extra/Bypass/956/index.js +234 -0
  3. package/Extra/Bypass/test/aaaa.json +170 -0
  4. package/Extra/Bypass/test/index.js +188 -0
  5. package/Extra/Database/index.js +469 -0
  6. package/Extra/ExtraAddons.js +82 -0
  7. package/Extra/ExtraFindUID.js +62 -0
  8. package/Extra/ExtraGetThread.js +365 -0
  9. package/Extra/ExtraScreenShot.js +430 -0
  10. package/Extra/ExtraUptimeRobot.js +38 -0
  11. package/Extra/Html/Classic/script.js +119 -0
  12. package/Extra/Html/Classic/style.css +8 -0
  13. package/Extra/Security/AES_256_GCM/index.js +0 -0
  14. package/Extra/Security/Base/Step_1.js +6 -0
  15. package/Extra/Security/Base/Step_2.js +22 -0
  16. package/Extra/Security/Base/Step_3.js +22 -0
  17. package/Extra/Security/Base/index.js +191 -0
  18. package/Extra/Security/Index.js +5 -0
  19. package/Extra/Security/Step_1.js +6 -0
  20. package/Extra/Security/Step_2.js +22 -0
  21. package/Extra/Security/Step_3.js +22 -0
  22. package/Extra/Src/Change_Environment.js +24 -0
  23. package/Extra/Src/Check_Update.js +67 -0
  24. package/Extra/Src/History.js +115 -0
  25. package/Extra/Src/Instant_Update.js +65 -0
  26. package/Extra/Src/Last-Run.js +65 -0
  27. package/Extra/Src/Premium.js +81 -0
  28. package/Extra/Src/Release_Memory.js +160 -0
  29. package/Extra/Src/Websocket.js +213 -0
  30. package/Extra/Src/image/checkmate.jpg +0 -0
  31. package/Extra/Src/test.js +28 -0
  32. package/Extra/Src/uuid.js +137 -0
  33. package/Func/AcceptAgreement.js +31 -0
  34. package/Func/ClearCache.js +64 -0
  35. package/Func/ReportV1.js +54 -0
  36. package/LICENSE +21 -0
  37. package/Language/index.json +222 -0
  38. package/Main.js +1266 -0
  39. package/README.md +152 -0
  40. package/SECURITY.md +18 -0
  41. package/broadcast.js +44 -0
  42. package/index.js +448 -0
  43. package/logger.js +66 -0
  44. package/package.json +94 -0
  45. package/src/Dev_Horizon_Data.js +125 -0
  46. package/src/Dev_getThreadInfoOLD.js +422 -0
  47. package/src/Dev_shareTest2.js +68 -0
  48. package/src/Dev_shareTest3.js +71 -0
  49. package/src/Premium.js +25 -0
  50. package/src/Screenshot.js +83 -0
  51. package/src/addExternalModule.js +16 -0
  52. package/src/addUserToGroup.js +79 -0
  53. package/src/changeAdminStatus.js +79 -0
  54. package/src/changeArchivedStatus.js +41 -0
  55. package/src/changeAvt.js +85 -0
  56. package/src/changeBio.js +65 -0
  57. package/src/changeBlockedStatus.js +36 -0
  58. package/src/changeGroupImage.js +106 -0
  59. package/src/changeNickname.js +45 -0
  60. package/src/changeThreadColor.js +62 -0
  61. package/src/changeThreadEmoji.js +42 -0
  62. package/src/createNewGroup.js +70 -0
  63. package/src/createPoll.js +60 -0
  64. package/src/deleteMessage.js +45 -0
  65. package/src/deleteThread.js +43 -0
  66. package/src/editMessage.js +53 -0
  67. package/src/forwardAttachment.js +48 -0
  68. package/src/getAccessToken.js +28 -0
  69. package/src/getCurrentUserID.js +7 -0
  70. package/src/getEmojiUrl.js +27 -0
  71. package/src/getFriendsList.js +73 -0
  72. package/src/getMessage.js +103 -0
  73. package/src/getThreadHistory.js +537 -0
  74. package/src/getThreadInfo.js +424 -0
  75. package/src/getThreadInfoOLD.js +422 -0
  76. package/src/getThreadList.js +213 -0
  77. package/src/getThreadMain.js +220 -0
  78. package/src/getThreadPictures.js +59 -0
  79. package/src/getUID.js +59 -0
  80. package/src/getUserID.js +62 -0
  81. package/src/getUserInfo.js +112 -0
  82. package/src/getUserInfoMain.js +65 -0
  83. package/src/getUserInfoV2.js +32 -0
  84. package/src/getUserInfoV3.js +63 -0
  85. package/src/getUserInfoV4.js +55 -0
  86. package/src/getUserInfoV5.js +61 -0
  87. package/src/handleFriendRequest.js +46 -0
  88. package/src/handleMessageRequest.js +49 -0
  89. package/src/httpGet.js +49 -0
  90. package/src/httpPost.js +48 -0
  91. package/src/httpPostFormData.js +41 -0
  92. package/src/listenMqtt.js +936 -0
  93. package/src/listenMqttV1.js +846 -0
  94. package/src/logout.js +68 -0
  95. package/src/markAsDelivered.js +48 -0
  96. package/src/markAsRead.js +70 -0
  97. package/src/markAsReadAll.js +43 -0
  98. package/src/markAsSeen.js +51 -0
  99. package/src/muteThread.js +47 -0
  100. package/src/removeUserFromGroup.js +49 -0
  101. package/src/resolvePhotoUrl.js +37 -0
  102. package/src/searchForThread.js +43 -0
  103. package/src/sendMessage.js +386 -0
  104. package/src/sendMqttMessage.js +71 -0
  105. package/src/sendTypingIndicator.js +80 -0
  106. package/src/setMessageReaction.js +109 -0
  107. package/src/setPostReaction.js +102 -0
  108. package/src/setTitle.js +74 -0
  109. package/src/shareContact.js +55 -0
  110. package/src/shareLink.js +58 -0
  111. package/src/threadColors.js +39 -0
  112. package/src/unfriend.js +43 -0
  113. package/src/unsendMessage.js +40 -0
  114. package/test/Database_Test.js +4 -0
  115. package/test/Db2.js +530 -0
  116. package/test/Horizon_Database/A_README.md +1 -0
  117. package/test/Horizon_Database/Database.db +0 -0
  118. package/test/data/shareAttach.js +146 -0
  119. package/test/data/something.mov +0 -0
  120. package/test/data/test.png +0 -0
  121. package/test/data/test.txt +7 -0
  122. package/test/env/.env +0 -0
  123. package/test/example-config.json +18 -0
  124. package/test/example-db.db +0 -0
  125. package/test/memoryleak.js +18 -0
  126. package/test/test-page.js +140 -0
  127. package/test/test.js +385 -0
  128. package/test/testname.js +1342 -0
  129. package/test/testv2.js +3 -0
  130. package/utils.js +3038 -0
package/.gitattributes ADDED
@@ -0,0 +1,2 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
@@ -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
+ }