DRIFT FREE SOURCE CODE
الذهاب إلى القناة على Telegram
إظهار المزيد
لم يتم تحديد البلدالفئة غير محددة
2 599
المشتركون
+3824 ساعات
+3287 أيام
+42130 أيام
جارٍ تحميل البيانات
القنوات المماثلة
لا توجد بيانات
هل تواجه مشاكل؟ يرجى تحديث الصفحة أو الاتصال بمدير الدعم الخاص بنا.
سحابة العلامات
لا توجد بيانات
هل تواجه مشاكل؟ يرجى تحديث الصفحة أو الاتصال بمدير الدعم الخاص بنا.
الإشارات الواردة والصادرة
---
---
---
---
---
---
جذب المشتركين
نوفمبر '26نوفمبر '26
نوفمبر '26
+351
في 0 قنوات
أكتوبر '26
+241
في 2 قنوات
Get PRO
سبتمبر '26
+374
في 11 قنوات
Get PRO
أغسطس '26
+304
في 0 قنوات
Get PRO
يوليو '26
+406
في 5 قنوات
Get PRO
يونيو '26
+1 256
في 32 قنوات
Get PRO
مايو '26
+29
في 29 قنوات
Get PRO
أبريل '26
+98
في 2 قنوات
| التاريخ | نمو المشتركين | الإشارات | القنوات | |
| 08 نوفمبر | +20 | |||
| 07 نوفمبر | +38 | |||
| 06 نوفمبر | +25 | |||
| 05 نوفمبر | +55 | |||
| 04 نوفمبر | +52 | |||
| 03 نوفمبر | +58 | |||
| 02 نوفمبر | +99 | |||
| 01 نوفمبر | +4 |
منشورات القناة
🐱 Dɢ Dʀɪғᴛ — Sᴇʀᴠᴇʀ Hᴏsᴛɪɴɢ Bᴏᴛ
🚀 Yᴏᴜʀ Pᴇʀsᴏɴᴀʟ Hᴏsᴛɪɴɢ Mᴀɴᴀɢᴇʀ!
🤖 Bᴏᴛ Lɪɴᴋ: https://t.me/DG_HOSTINGPANEL_BOT?start=ref_8348660678
☁️ Hᴏsᴛɪɴɢ Fᴇᴀᴛᴜʀᴇs
🐍 Pʏᴛʜᴏɴ Pᴀɴᴇʟ Cʀᴇᴀᴛɪᴏɴ
🟢 Nᴏᴅᴇ.ᴊs Pᴀɴᴇʟ Cʀᴇᴀᴛɪᴏɴ
⚡ Iɴsᴛᴀɴᴛ Pᴀɴᴇʟ Rᴇǫᴜᴇsᴛ
😋 Mʏ Pᴀɴᴇʟs Mᴀɴᴀɢᴇᴍᴇɴᴛ
🔑 Pᴀɴᴇʟ Lᴏɢɪɴ Dᴇᴛᴀɪʟs
🌐 Dɪʀᴇᴄᴛ Pᴀɴᴇʟ Dᴀsʜʙᴏᴀʀᴅ Aᴄᴄᴇss
😡 U sᴇʀ Fᴇᴀᴛᴜʀᴇs
📊 Pᴇʀsᴏɴᴀʟ U sᴇʀ Pʀᴏғɪʟᴇ
👱♂️ U sᴇʀ Iᴅᴇɴᴛɪғɪᴄᴀᴛɪᴏɴ
🔗 Pᴇʀsᴏɴᴀʟ Rᴇғᴇʀʀᴀʟ Lɪɴᴋ
🎁 Rᴇғᴇʀ & Eᴀʀɴ Sʏsᴛᴇᴍ
📈 Rᴇғᴇʀʀᴀʟ Cᴏᴜɴᴛ
📁 Eᴀsʏ Sʜᴀʀᴇ Fᴜɴᴄᴛɪᴏɴ
🤖 Sᴛᴀʀᴛ Yᴏᴜʀ Hᴏsᴛɪɴɢ Jᴏᴜʀɴᴇʏ!
| 2 | 🚀 Dɢ Dʀɪғᴛ — Gᴀʀᴇɴᴀ FF Wᴇʙsɪᴛᴇ Uᴘᴅᴀᴛᴇ
🌐 Wᴇʙsɪᴛᴇ: https://drift-garena-ff.vercel.app/
⚡ Oᴜʀ Gᴀʀᴇɴᴀ FF Wᴇʙsɪᴛᴇ Nᴇᴇᴅs A Cᴏᴍᴘʟᴇᴛᴇ Eʀʀᴏʀ Fɪxɪɴɢ & Iᴍᴘʀᴏᴠᴇᴍᴇɴᴛ Uᴘᴅᴀᴛᴇ!
🇷🇺 Aᴠᴀɪʟᴀʙʟᴇ Tᴏᴏʟs:
🔹 Bɪᴏ Cʜᴀɴɢᴇʀ
🔹 JWT Gᴇɴᴇʀᴀᴛᴏʀ
🔹 Pᴇʀᴍᴀɴᴇɴᴛ Bᴀɴ
🔹 FF Eᴀᴛ Tᴏᴋᴇɴ
🔹 Bɪɴᴅ Tᴏᴏʟs
🔹 Fʀɪᴇɴᴅ Mᴀɴᴀɢᴇʀ
🔹 Gᴜɪʟᴅ Mᴀɴᴀɢᴇʀ
⚙ Wᴏʀᴋ Iɴ Pʀᴏɢʀᴇss:
✅ Fɪx Aʟʟ Wᴇʙsɪᴛᴇ Eʀʀᴏʀs
✅ Fɪx API & Sᴇʀᴠᴇʀ Issᴜᴇs
✅ Fɪx Lᴏᴀᴅɪɴɢ Pʀᴏʙʟᴇᴍs
✅ Fɪx Bʀᴏᴋᴇɴ Bᴜᴛᴛᴏɴs & Pᴀɢᴇs
✅ Iᴍᴘʀᴏᴠᴇ Wᴇʙsɪᴛᴇ Sᴘᴇᴇᴅ
✅ Iᴍᴘʀᴏᴠᴇ Sᴇᴄᴜʀɪᴛʏ & Sᴛᴀʙɪʟɪᴛʏ
✅ Mᴀᴋᴇ Aʟʟ Sᴜᴘᴘᴏʀᴛᴇᴅ Tᴏᴏʟs Wᴏʀᴋ Pʀᴏᴘᴇʀʟʏ
👑 Cᴏɴᴛᴀᴄᴛ Oᴡɴᴇʀ: @DG_DRIFT | 153 |
| 3 | ✦ Pᴇʀᴍᴀɴᴇɴᴛ Fʀɪᴇɴᴅ API ✦
━━━━━━━━━━━━━━━━━━
➕
import requests
url = "https://drift-garena-ff.vercel.app/api/friend_action"
headers = {
"X-API-Key": API_KEY
}
data = {
"uid": "12345678",
"jwt": "eyJ...",
"action": "add"
}
r = requests.post(url, headers=headers, json=data)
print(r.json())
━━━━━━━━━━━━━━━━━━
➖
import requests
url = "https://drift-garena-ff.vercel.app/api/friend_action"
headers = {
"X-API-Key": API_KEY
}
data = {
"uid": "12345678",
"jwt": "eyJ...",
"action": "remove"
}
r = requests.post(url, headers=headers, json=data)
print(r.json())
━━━━━━━━━━━━━━━━━━
🔑 Gᴇᴛ API Kᴇʏ
🌐 Wᴇʙsɪᴛᴇ:
https://drift-garena-ff.vercel.app/
1. Oᴘᴇɴ Tʜᴇ Wᴇʙsɪᴛᴇ.
2. Gᴇɴᴇʀᴀᴛᴇ / Gᴇᴛ Yᴏᴜʀ API Kᴇʏ.
3. Cᴏᴘʏ Yᴏᴜʀ API Kᴇʏ.
4. Aᴅᴅ Iᴛ Iɴ Yᴏᴜʀ Pʏᴛʜᴏɴ Cᴏᴅᴇ.
━━━━━━━━━━━━━━━━━━
⚙ API Dᴇᴛᴀɪʟs
• Eɴᴅᴘᴏɪɴᴛ: /api/friend_action
• Mᴇᴛʜᴏᴅ: POST
• Aᴜᴛʜ: X-API-Key
• Aᴄᴛɪᴏɴs: add / remove
• Tʏᴘᴇ: Pᴇʀᴍᴀɴᴇɴᴛ API
━━━━━━━━━━━━━━━━━━
🔴 Mᴀᴅᴇ Bʏ - @DG_DRIFT | 333 |
| 4 | 🚀 𝘞𝘦𝘣𝘐𝘯𝘵𝘰𝘈𝘱𝘱 Wᴇʙsɪᴛᴇ Fᴜʟʟ Sᴏᴜʀᴄᴇ Cᴏᴅᴇ Aᴠᴀɪʟᴀʙʟᴇ 🔥
💻 Kɪsɪ Kᴏ 𝘞𝘦𝘣𝘐𝘯𝘵𝘰𝘈𝘱𝘱 Wᴇʙsɪᴛᴇ Kᴀ Fᴜʟʟ Sᴏᴜʀᴄᴇ Cᴏᴅᴇ Cʜᴀʜɪʏᴇ Tᴏ Dɪʀᴇᴄᴛ Dᴍ Kʀᴏ! ✍️
⚡️ Fᴜʟʟ Wᴇʙsɪᴛᴇ Sᴏᴜʀᴄᴇ Cᴏᴅᴇ ⚙️ Dᴇᴠᴇʟᴏᴘᴍᴇɴᴛ &
Cᴜsᴛᴏᴍɪᴢᴀᴛɪᴏɴ 🥶 Gᴇᴛ Tʜᴇ Sᴏᴜʀᴄᴇ Cᴏᴅᴇ Fᴏʀ Yᴏᴜʀ Pʀᴏᴊᴇᴄᴛ
💰 Iɴᴛᴇʀᴇsᴛᴇᴅ? Dᴍ Fᴏʀ Pʀɪᴄᴇ & Dᴇᴛᴀɪʟs!
🚩 Dᴍ Fᴏʀ Bᴜʏ — @DG_DRIFT | 462 |
| 5 | Dɢ Cʜᴀᴛ Gᴘᴛ.apk | 435 |
| 6 | لا يوجد نص... | 278 |
| 7 | ✨ Mʏ 1 Tᴏᴏʟ • 3 Pʟᴀᴛғᴏʀᴍs 🚀
⚡ Oɴᴇ Tᴏᴏʟ, Tʜʀᴇᴇ Wᴀʏs Tᴏ Usᴇ!
1️⃣ Aᴘᴋ Vᴇʀsɪᴏɴ
📱 Usᴇ Mʏ Aᴘᴋ
😀 Wᴇʙsɪᴛᴇ Vᴇʀsɪᴏɴ
🌐 https://drift-garena-ff.vercel.app/
3️⃣ Tᴇʟᴇɢʀᴀᴍ Bᴏᴛ Vᴇʀsɪᴏɴ
🤖 @ff_longbio_rebot
🔥 Cʜᴏᴏsᴇ Yᴏᴜʀ Pʟᴀᴛғᴏʀᴍ & Eɴᴊᴏʏ!
👑 Pᴏᴡᴇʀᴇᴅ Bʏ Dʀɪғᴛ
📢 Mᴀɪɴ Cʜᴀɴɴᴇʟ: @DGDRIFT | 299 |
| 8 | 🦁 Fʀᴇᴇ Fɪʀᴇ ID Bᴀɴ Tᴏ Uɴʙᴀɴ SRC Fᴏʀ Sᴀʟᴇ 🧞♀️
🔥 Fᴇᴀᴛᴜʀᴇs & Dᴇᴛᴀɪʟs
🚫 Pᴇʀᴍᴀɴᴇɴᴛ Bᴀɴ Tᴏ Uɴʙᴀɴ
🟢 7 Dᴀʏs Uɴʙᴀɴ Tɪᴍᴇʀ
🟢 Pᴇʀᴍᴀ Bᴀɴ Tᴏ Uɴʙᴀɴ Fᴇᴀᴛᴜʀᴇ
💻 Fᴜʟʟ Wᴏʀᴋɪɴɢ SRC
😒 Dᴍ Tᴏ Bᴜʏ — @DG_DRIFT ✅
💐 Tɪᴍᴇ Pᴀss Nᴏᴛ Aʟʟᴏᴡᴇᴅ ❌ | 410 |
| 9 | 💳 FᴀᴍPᴀʏ Pᴀʏᴍᴇɴᴛ Gᴀᴛᴇᴡᴀʏ
🔥 FᴀᴍPᴀʏ Pᴀʏᴍᴇɴᴛ Gᴀᴛᴇᴡᴀʏ Wᴇʙsɪᴛᴇ Kᴀ Sᴏᴜʀᴄᴇ Cᴏᴅᴇ Aᴠᴀɪʟᴀʙʟᴇ!
💻 Fᴜʟʟ Wᴇʙsɪᴛᴇ Sᴏᴜʀᴄᴇ Cᴏᴅᴇ
✉️ Iɴᴛᴇʀᴇsᴛᴇᴅ? Dᴍ Nᴏᴡ — @DG_DRIFT
⚡ Sᴇʀɪᴏᴜs Bᴜʏᴇʀs Oɴʟʏ! | 377 |
| 10 | DRIFT_FF_Tools.apk
Guyss use my apk for free 🔴🙂 | 289 |
| 11 | 🚀 Nᴇᴡ Wᴇʙsɪᴛᴇ Lᴀᴜɴᴄʜᴇᴅ!
🔴 Gᴀʀᴇɴᴀ Fʀᴇᴇ Fɪʀᴇ Tᴏᴏʟs
✨ Aʟʟ Fᴇᴀᴛᴜʀᴇs Aᴅᴅᴇᴅ Tᴏ Tʜᴇ Wᴇʙsɪᴛᴇ!
🌐 Wᴇʙsɪᴛᴇ Lɪɴᴋ
✅ https://drift-garena-ff.vercel.app/
⚡️ Eɴᴅᴘᴏɪɴᴛs Aᴠᴀɪʟᴀʙʟᴇ
💻 Uꜱᴇ Tʜᴇ Wᴇʙsɪᴛᴇ Eɴᴅᴘᴏɪɴᴛs Iɴ Yᴏᴜʀ Oᴡɴ Bᴏᴛ Oʀ Wᴇʙsɪᴛᴇ!
🔗 Eɴᴅᴘᴏɪɴᴛs Lɪɴᴋ
✅ https://drift-garena-ff.vercel.app/endpoints
📜 Tᴇʀᴍs & Cᴏɴᴅɪᴛɪᴏɴs 🔐 Pʀɪᴠᴀᴄʏ Pᴏʟɪᴄʏ
━━━━━━━━━━━━━━━━━━
👑 Mᴀᴅᴇ Bʏ : @DG_DRIFT
🔥 Dʀɪғᴛ Aʀᴍʏ
━━━━━━━━━━━━━━━━━━ | 377 |
| 12 | Kaisa chal raha hai guest generator | 23 |
| 13 | Fast-guest-gen-0b55.zip | 459 |
| 14 | 🔥 Fʀᴇᴇ Fɪʀᴇ Aᴜᴛᴏ Lɪᴋᴇꜱ 🔥
✨ Gᴇᴛ Dᴀɪʟʏ Aᴜᴛᴏ Lɪᴋᴇꜱ Fᴏʀ Yᴏᴜʀ Fʀᴇᴇ Fɪʀᴇ Iᴅ!
🚀 Fᴀꜱᴛ • Eᴀꜱʏ • Sɪᴍᴘʟᴇ
🌐 Wᴇʙꜱɪᴛᴇ Lɪɴᴋ 👇
https://auto-likes.vercel.app
❤️ Eɴᴊᴏʏ Yᴏᴜʀ Dᴀɪʟʏ Aᴜᴛᴏ Lɪᴋᴇꜱ! | 453 |
| 15 | 🔥 Fʀᴇᴇ Fɪʀᴇ Lɪᴋᴇs Pᴀᴄᴋᴀɢᴇ ❤️
💎 Pʀɪᴄᴇ Lɪsᴛ 💰
🔹 ₹15 ➜ 200 ❤️ Lɪᴋᴇs ➜ 1 Dᴀʏ
🔹 ₹59 ➜ 1,500 ❤️ Lɪᴋᴇs ➜ 7 Dᴀʏs
🔹 ₹109 ➜ 3,000 ❤️ Lɪᴋᴇs ➜ 15 Dᴀʏs
🔹 ₹179 ➜ 6,000 ❤️ Lɪᴋᴇs ➜ 30 Dᴀʏs
🔹 ₹299 ➜ 12,000 ❤️ Lɪᴋᴇs ➜ 60 Dᴀʏs
🔹 ₹399 ➜ 18,000 ❤️ Lɪᴋᴇs ➜ 90 Dᴀʏs
🔹 ₹549 ➜ 24,000 ❤️ Lɪᴋᴇs ➜ 120 Dᴀʏs
🌍 Aʟʟ Sᴇʀᴠᴇʀs Sᴜᴘᴘᴏʀᴛᴇᴅ ✅
✍️ Cᴏɴᴛᴀᴄᴛ Oᴡɴᴇʀ 👑
✅ @DG_DRIFT
🔗 Tᴇʟᴇɢʀᴀᴍ ✈️
https://t.me/DG_DRIFT
#FreeFire #FreeFireLikes #LikesPackage
#FFLikes #DGDRIFT #FreeFireCommunity | 454 |
| 16 | ❤️ Gᴜʏss, Tʜᴏʀᴀ Sᴀ Sᴜᴘᴘᴏʀᴛ Dɪᴋʜᴀᴏ 🥹❤️
🎥 Nᴇᴡ Vɪᴅᴇᴏ 👇
https://youtu.be/8B9GrDVcmBI
❤️ Lɪᴋᴇ 👍 Cᴏᴍᴍᴇɴᴛ 💬 Sᴜʙsᴄʀɪʙᴇ 🔔 | 437 |
| 17 | 🚀 Hᴏᴡ Tᴏ Mᴀᴋᴇ Gᴜɪʟᴅ Gʟᴏʀʏ Bᴏᴛ 🔥
🍂 Sᴏᴜʀᴄᴇ Cᴏᴅᴇ Fɪʟᴇ 👇
https://t.me/DRIFT_FREE_SOURCE_CODE_BoT?start=9PMJPogWxJ
🎥 Fᴜʟʟ Tᴜᴛᴏʀɪᴀʟ Vɪᴅᴇᴏ 👇
https://youtu.be/g614F1fKnK0
💻 Wᴀᴛᴄʜ Tʜᴇ Tᴜᴛᴏʀɪᴀʟ & Fᴏʟʟᴏᴡ Tʜᴇ Sᴛᴇᴘs! ⚡️
🔥 Mᴏʀᴇ Uᴘᴅᴀᴛᴇs & Fʀᴇᴇ Sᴏᴜʀᴄᴇ Cᴏᴅᴇs:
📢 Main Channel: https://t.me/DGDRIFT
#DGDRIFT #GuildGloryBot #FreeFire #BotTutorial | 518 |
| 18 | Kal video aayega uske andar password rahega | 306 |
| 19 | Guild-Glory.zip | 575 |
| 20 | New major login code
import json
import base64
import httpx
from Crypto.Cipher import AES
from google.protobuf import json_format
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# ============================================================
# Proto: LoginReq + LoginRes
# ============================================================
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
b'\n\x0e\x46reeFire.proto"c\n\x08LoginReq\x12\x0f\n\x07open_id\x18\x16 \x01(\t'
b'\x12\x14\n\x0copen_id_type\x18\x17 \x01(\t\x12\x13\n\x0blogin_token\x18\x1d '
b'\x01(\t\x12\x1b\n\x13orign_platform_type\x18\x63 \x01(\t"]\n\x10\x42lacklist'
b'InfoRes\x12\x1e\n\nban_reason\x18\x01 \x01(\x0e\x32\n.BanReason\x12\x17\n'
b'\x0f\x65xpire_duration\x18\x02 \x01(\r\x12\x10\n\x08\x62\x61n_time\x18\x03 '
b'\x01(\r"f\n\x0eLoginQueueInfo\x12\r\n\x05\x61llow\x18\x01 \x01(\x08\x12'
b'\x16\n\x0equeue_position\x18\x02 \x01(\r\x12\x16\n\x0eneed_wait_secs\x18'
b'\x03 \x01(\r\x12\x15\n\rqueue_is_full\x18\x04 \x01(\x08"\xa0\x03\n\x08'
b'LoginRes\x12\x12\n\naccount_id\x18\x01 \x01(\x04\x12\x13\n\x0block_region'
b'\x18\x02 \x01(\t\x12\x13\n\x0bnoti_region\x18\x03 \x01(\t\x12\x11\n\tip_'
b'region\x18\x04 \x01(\t\x12\x19\n\x11\x61gora_environment\x18\x05 \x01(\t'
b'\x12\x19\n\x11new_active_region\x18\x06 \x01(\t\x12\x19\n\x11recommend_'
b'regions\x18\x07 \x03(\t\x12\r\n\x05token\x18\x08 \x01(\t\x12\x0b\n\x03ttl'
b'\x18\t \x01(\r\x12\x12\n\nserver_url\x18\n \x01(\t\x12\x16\n\x0e\x65mul'
b'ator_score\x18\x0b \x01(\r\x12$\n\tblacklist\x18\x0c \x01(\x0b\x32\x11.'
b'BlacklistInfoRes\x12#\n\nqueue_info\x18\r \x01(\x0b\x32\x0f.LoginQueue'
b'Info\x12\x0e\n\x06tp_url\x18\x0e \x01(\t\x12\x15\n\rapp_server_id\x18'
b'\x0f \x01(\r\x12\x0f\n\x07\x61no_url\x18\x10 \x01(\t\x12\x0f\n\x07ip_city'
b'\x18\x11 \x01(\t\x12\x16\n\x0eip_subdivision\x18\x12 \x01(\t*\xa8\x01\n'
b'\tBanReason\x12\x16\n\x12\x42\x41N_REASON_UNKNOWN\x10\x00\x12\x1b\n\x17'
b'\x42\x41N_REASON_IN_GAME_AUTO\x10\x01\x12\x15\n\x11\x42\x41N_REASON_'
b'REFUND\x10\x02\x12\x15\n\x11\x42\x41N_REASON_OTHERS\x10\x03\x12\x16\n'
b'\x12\x42\x41N_REASON_SKINMOD\x10\x04\x12 \n\x1b\x42\x41N_REASON_IN_GAME'
b'_AUTO_NEW\x10\xf6\x07\x62\x06proto3'
)
_g = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _g)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "FreeFire_pb2", _g)
LoginReq = _g["LoginReq"]
LoginRes = _g["LoginRes"]
# ============================================================
# Constants
# ============================================================
MAIN_KEY = base64.b64decode("WWcmdGMlREV1aDYlWmNeOA==")
MAIN_IV = base64.b64decode("Nm95WkRyMjJFM3ljaGpNJQ==")
RELEASEVERSION = "OB55"
USERAGENT = "UnityPlayer/2018.4.12f1 (UnityWebRequest/1.0, libcurl/8.5.0-DEV)"
LOGIN_URL = "https://loginbp.ppmainecoonghj.com/"
_client = httpx.Client(
limits=httpx.Limits(max_keepalive_connections=20, max_connections=50),
timeout=httpx.Timeout(15.0, connect=5.0),
verify=False,
)
def _pad(t: bytes) -> bytes:
n = AES.block_size - (len(t) % AES.block_size)
return t + bytes([n] * n)
def _aes(key, iv, pt: bytes) -> bytes:
return AES.new(key, AES.MODE_CBC, iv).encrypt(_pad(pt))
# ============================================================
# LoginRes Parser
# ============================================================
def _try_parse(data: bytes):
try:
m = LoginRes(); m.ParseFromString(data)
if m.account_id and m.account_id > 0:
return json.loads(json_format.MessageToJson(m))
except Exception:
pass
return None
def _extract(raw: bytes) -> dict:
p = _try_parse(raw)
if p: return p
i = 0
while True:
i = raw.find(b"\x08", i)
if i == -1: break
p = _try_parse(raw[i:])
if p: return p
i += 1
j = raw.find(b"eyJhbGciOiJIUzI1NiIs")
if j != -1:
for k in range(j - 1, max(j - 300, -1), -1):
if raw[k] == 0x42:
p = _try_parse(raw[k:])
if p: return p
break
raise Exception("Could not parse LoginRes from server response")
# ============================================================
# MAJOR LOGIN
# ============================================================
def major_login(uid: str, password: str) -> dict:
"""
Returns:
{
"jwt_token": str,
"account_id": int,
"region": str,
"server_url": str,
"open_id": str,
"access_token": str,
"raw": dict # full LoginRes
}
Raises Exception on failure.
"""
# 1) Garena guest token
r = _client.post(
"https://ffmconnect.live.gop.garenanow.com/oauth/guest/token/grant",
data={
"uid": str(uid),
"password": str(password),
"response_type": "token",
"client_type": "2",
"client_secret": "2ee44819e9b4598845141067b281621874d0d5d7af9d8f7e00c1e54715b7d1e3",
"client_id": "100067",
},
headers={
"User-Agent": USERAGENT,
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip",
"Content-Type": "application/x-www-form-urlencoded",
},
).json()
access_token = r.get("access_token")
open_id = r.get("open_id")
if not access_token or not open_id:
raise Exception("Invalid UID or Password")
# 2) Build LoginReq proto
msg = LoginReq()
json_format.ParseDict({
"open_id": open_id,
"open_id_type": "4",
"login_token": access_token,
"orign_platform_type": "4",
}, msg)
# 3) AES-128-CBC encrypt
payload = _aes(MAIN_KEY, MAIN_IV, msg.SerializeToString())
# 4) POST /MajorLogin
resp = _client.post(
f"{LOGIN_URL}MajorLogin",
data=payload,
headers={
"User-Agent": USERAGENT,
"Accept": "*/*",
"Accept-Encoding": "deflate, gzip",
"X-Ga-Sv": "1789534056",
"Authorization": "Bearer",
"X-Ga": "v1 1",
"Releaseversion": RELEASEVERSION,
"Content-Type": "application/x-www-form-urlencoded",
"X-Unity-Version": "2018.4.12f1",
"PlAy_VeR": "1.132.1",
"Ob_VeR": RELEASEVERSION,
},
)
# 5) Parse
res = _extract(resp.content)
return {
"jwt_token": res.get("token"),
"account_id": res.get("accountId"),
"region": res.get("lockRegion") or res.get("notiRegion"),
"server_url": res.get("serverUrl"),
"open_id": open_id,
"access_token": access_token,
"raw": res,
} | 467 |
