[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81103":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":15,"stars30d":15,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"lastSyncTime":36,"discoverSource":37},81103,"messenger-recall-tool","quyanhfex\u002Fmessenger-recall-tool","quyanhfex","Personal Chrome extension for archiving and managing direct messages. For educational and personal use only.","",null,"JavaScript",41,17,39,2,0,1,3,3.77,"MIT License",false,"main",true,[25,26,27,28,29,30,31,32],"browser-extensions","chrome-extensions","education","manifest-v3-chrome","protobuf","research","reverse-engineering","side-panel","2026-06-12 02:04:10","# Messenger Recall Tool\n\nChrome extension (side panel) to read, search, export and bulk-recall Facebook Messenger E2EE messages — including history beyond the 100-message client cache.\n\n**For your own account only. Personal research purposes.**\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"media\u002Fgiaodien.jpg\" alt=\"Panel UI\" width=\"420\">\n\u003C\u002Fp>\n\n## Demo\n\n| Desktop | Mobile |\n|---|---|\n| [demopc.mp4](media\u002Fdemopc.mp4) | [demomobile.mp4](media\u002Fdemomobile.mp4) |\n\n---\n\n## Disclaimer\n\nIndependent project, not affiliated with Meta \u002F Facebook.\n\n- Use on your own account. You are solely responsible for any consequences (rate limits, account flags, suspension).\n- Do not use to harass, stalk, or harm anyone.\n- Provided AS-IS. See [LICENSE](LICENSE).\n\n---\n\n## Features\n\n| Tab | Description |\n|---|---|\n| **Load** | Paginates `mpsLoadMessages` bridge API to fetch history beyond the 100-message cache. Configurable start date, batch size, and delay. |\n| **View** | Full-text search, filter by date \u002F sender \u002F status (unsent, system messages). Shift-click range selection. |\n| **Recall** | Bulk-recall selected messages via E2EE protocol. Random delay between requests to avoid rate-limiting. |\n| **Export** | Export as PDF (chat-style with avatars and images) or raw JSON. Statistics by hour, month, sender, call duration. |\n| **Chat** | Send messages directly from the side panel via bridge API. |\n| **AI** | Auto-reply: uses an OpenAI-compatible API to automatically reply to incoming messages. Configurable system prompt, model, delay, context size. |\n\nAdditional:\n- Inline image viewer and download (JPEG\u002FPNG\u002FGIF\u002FWebP) + CDN `.enc` image decryption (HKDF-SHA256 + AES-256-CBC)\n- Call event detection from protobuf payload: `[missed call 0:03]`, `[video call 1:23]`\n- Per-thread extras cached in `chrome.storage.local` (7-day TTL)\n\n---\n\n## Install\n\n1. `git clone https:\u002F\u002Fgithub.com\u002Fquyanhfex\u002Fmessenger-recall-tool.git`\n2. Open `chrome:\u002F\u002Fextensions\u002F` → enable **Developer mode** (top right)\n3. **Load unpacked** → select the cloned folder\n4. Pin the extension → open Messenger → click the icon to open the side panel\n\nNot available on the Chrome Web Store.\n\n---\n\n## How it works\n\n```\nChrome Side Panel  ←  RPC  →  Content Script  ←  RPC  →\n(panel.html\u002Fjs)              (content_script.js)\n                                    ↓ window.postMessage\n                       MAIN world injector (injector.js)\n                                    ↓\n                  window.require('MAWBridgeSendAndReceive')\n                                    ↓\n                  MAW Worker  →  Facebook backend  →  E2EE peers\n```\n\n- `hook_injector.js` runs at `document_start` to install a fake `__REACT_DEVTOOLS_GLOBAL_HOOK__`, capturing React Fiber roots before React initializes.\n- `injector.js` walks the Fiber tree to get the LSDatabase store; parses protobuf payloads without a `.proto` schema — decodes UTF-8 leaves heuristically.\n- CDN image decryption uses WhatsApp media-key derivation: `HKDF(salt=zeros, info=\"WhatsApp Image Keys\")` → AES-256-CBC.\n- Bulk recall calls `sendRevokeMsg` directly via the bridge, bypassing the React UI.\n\n---\n\n## FAQ\n\n**Q: Will my account get banned?**\nHaven't been banned, but sample size is 1. Set a higher recall delay to be safe.\n\n**Q: Why do some messages show `[không decode được]`?**\nAttachment type not yet handled (stickers, location, reply quotes...). PRs welcome.\n\n**Q: Can it recall call event messages?**\nNo. Facebook silently rejects revoke for call events server-side — the local DB marks them `isUnsent: true` but the peer never receives the revoke.\n\n---\n\n## License\n\n[MIT](LICENSE) — Inspired by [shoot-the-messenger](https:\u002F\u002Fgithub.com\u002Ftheahura\u002Fshoot-the-messenger) (DOM-based approach).\n\n---\n---\n\n# Messenger Recall Tool (Tiếng Việt)\n\nChrome extension (side panel) để đọc, tìm kiếm, xuất và thu hồi hàng loạt tin nhắn Messenger E2EE — kể cả tin vượt giới hạn 100 tin của cache client.\n\n**Chỉ dùng cho tài khoản của chính bạn. Mục đích nghiên cứu cá nhân.**\n\n---\n\n## Disclaimer\n\nDự án độc lập, không liên kết với Meta \u002F Facebook.\n\n- Dùng trên tài khoản của bạn, tự chịu trách nhiệm nếu bị rate-limit hoặc khóa tài khoản.\n- Không dùng để quấy rối, theo dõi, hay gây hại người khác.\n- Provided AS-IS. See [LICENSE](LICENSE).\n\n---\n\n## Tính năng\n\n| Tab | Mô tả |\n|---|---|\n| **Tải** | Phân trang qua bridge API (`mpsLoadMessages`) để tải lịch sử vượt cache 100 tin. Cấu hình ngày bắt đầu, kích thước batch, delay giữa các lượt. |\n| **Xem** | Full-text search, lọc theo ngày \u002F người gửi \u002F trạng thái (đã thu hồi, tin hệ thống). Shift-click để chọn nhiều tin. |\n| **Thu hồi** | Thu hồi hàng loạt tin đã chọn qua E2EE protocol. Delay ngẫu nhiên giữa các lần để tránh rate-limit. |\n| **Xuất** | Xuất PDF (dạng chat có avatar, ảnh) hoặc JSON thô. Xem thống kê theo giờ, tháng, người gửi, thời lượng gọi. |\n| **Chat** | Gửi tin nhắn trực tiếp từ side panel qua bridge API. |\n| **AI** | Auto-reply: dùng AI (OpenAI-compatible API) tự động trả lời tin nhắn đến. Cấu hình system prompt, model, delay, context size. |\n\nTính năng thêm:\n- Xem và tải ảnh inline (JPEG\u002FPNG\u002FGIF\u002FWebP) + decrypt ảnh CDN `.enc` (HKDF-SHA256 + AES-256-CBC)\n- Nhận diện cuộc gọi từ protobuf payload: `[cuộc gọi nhỡ 0:03]`, `[video call 1:23]`\n- Cache extras per-thread vào `chrome.storage.local` (TTL 7 ngày)\n\n---\n\n## Cài đặt\n\n1. `git clone https:\u002F\u002Fgithub.com\u002Fquyanhfex\u002Fmessenger-recall-tool.git`\n2. Mở `chrome:\u002F\u002Fextensions\u002F` → bật **Developer mode** (góc trên phải)\n3. **Load unpacked** → chọn thư mục vừa clone\n4. Pin extension → mở Messenger → click icon để mở side panel\n\nKhông có trên Chrome Web Store.\n\n---\n\n## Cách hoạt động\n\n```\nChrome Side Panel  ←  RPC  →  Content Script  ←  RPC  →\n(panel.html\u002Fjs)              (content_script.js)\n                                    ↓ window.postMessage\n                       MAIN world injector (injector.js)\n                                    ↓\n                  window.require('MAWBridgeSendAndReceive')\n                                    ↓\n                  MAW Worker  →  Facebook backend  →  E2EE peers\n```\n\n- `hook_injector.js` chạy ở `document_start` để cài fake `__REACT_DEVTOOLS_GLOBAL_HOOK__`, bắt React Fiber roots trước khi React khởi động.\n- `injector.js` walk Fiber tree để lấy LSDatabase store; parse protobuf payload không cần `.proto` schema — decode UTF-8 leaves heuristically.\n- CDN image decryption dùng WhatsApp media-key derivation: `HKDF(salt=zeros, info=\"WhatsApp Image Keys\")` → AES-256-CBC.\n- Bulk recall gọi thẳng `sendRevokeMsg` qua bridge, không qua React UI.\n\n---\n\n## FAQ\n\n**Q: Có bị ban không?**\nChưa bị, nhưng sample size là 1. Đặt delay thu hồi cao một chút cho an toàn.\n\n**Q: Một số tin hiện `[không decode được]` là sao?**\nAttachment chưa được xử lý (sticker, location, reply quote...). PR welcome.\n\n**Q: Thu hồi được tin nhắn cuộc gọi không?**\nKhông. Facebook từ chối revoke call events phía server — local DB sẽ mark `isUnsent: true` nhưng phía kia không nhận được revoke.\n\n---\n\n## License\n\n[MIT](LICENSE) — Inspired by [shoot-the-messenger](https:\u002F\u002Fgithub.com\u002Ftheahura\u002Fshoot-the-messenger) (DOM-based approach).\n","Messenger Recall Tool 是一个个人用的 Chrome 扩展程序，用于存档和管理 Facebook Messenger 的端到端加密消息。其核心功能包括加载超过客户端缓存100条消息的历史记录、全文搜索、批量撤回消息以及导出为PDF或JSON格式。此外，该工具还支持自动回复、图片解密和通话事件检测等功能。适合需要对个人账户中的消息进行深度管理和研究的用户使用。请注意，此扩展仅供个人教育和研究用途，使用时需遵守相关条款并自行承担风险。","2026-06-11 04:03:31","CREATED_QUERY"]