Archive inventory

The app bundle, file by file

Eleven files, 1.23 MB of code, one phishing product. Every row links to the exact bytes served by web.mis-ws.org on capture day — click to download rather than open, because they are minified on purpose.

Why it looks like noise. The whole application is obfuscated with a string-table transform: identifiers renamed to a0_0x10903e, every literal replaced by an index into a shuffled array that is decoded through a self-defending rotation loop. Opening a chunk in a tab shows you that array, not the program. The readable version comes from resolving the 13,449 substitution calls — that is what the teardown walks through.
FileSizeSHA-256What it is
index.html
index.html/
2 KB5782652f5429f9c2Shell
Entry document. Server-side gate markers: five noindex metas, mobile-only precondition, the app root and the gate script tags.
mrdoZ7lOmsmiO2EK.js
llFco8/
6 KBd3f72dc47645dd4dEntry chunk
First JS executed. Wraps everything in an anti-debug IIFE (webdriver / devtools-timing / window-size checks) and mounts the boot component.
rMMvYjUC2OMjmaUv-CxxESmdC.js
llFco8/
7 KB0421a110d1c077b8Stage-2 loader
Second loader, own rotated string table. Sequence-walks its own decode table before continuing.
Ya0GiQViKSAoSBPd-CzaoCS8e.js
llFco8/
7 KB89ed09d4df0785dcGate + dep map
Installs the gate, then dynamically imports the Vue app with its CSS dep map.
xSgpjQlwJiVazovM-C7bOig6j.js
llFco8/
9 KB3082acd72aab307fPreload helper
Tiny module-federation-style resolver: builds asset URLs, resolves them against import.meta, injects them as modulepreload links.
mgate.js
llFco8/
3 KB582ea1f36e9007caClient gate
Decides whether the visitor is a real phone: UA regex, platform, WebGL renderer allow/deny list, navigator.userAgentData.mobile, WebDriver.
6pHhaKvzZfqoKOjN-DpnwfnMB.js
llFco8/
1.14 MB6f70035c3a8cd76cVue application
The product. 1.19 MB: Vue 3 runtime, four locales, the whole bot script, the fake-chat UI, the pairing client and the operator-chat API client.
GbdDzTQ6mWpLgsXz.css
llFco8/
53 KBe98648c1995ffe2cStylesheet
Reproduces WhatsApp's visual language: bubble radii, tail geometry, header green, timestamp typography, system-font stack.
script.js
script.js/
5 KB5da9e457232b0fb1Analytics
Umami, third-party. Loaded by the shell; the archive guard blocks its beacon so nothing reports anywhere.
guard.js
guard.js/
5 KBee2a8a5e5c43b54bADDED BY ME
Not part of the kit. Spoofs the phone signals the gate wants, pins /llFco8/ asset paths into this folder, and blocks every outbound request.

13 images (2.07 MB): the four warning illustrations, the service-menu graphic and the phone-settings screenshots the bot script shows at each stage, in zh-CN / zh-HK / en-US variants. Served as WebP with hash filenames from the same folder.

Archive of a criminal kit, kept inert: guard.js blocks every outbound request, so this copy cannot pair, poll or report. Analysis at the teardown.