findings · 3 sessions · 17 apps decompiled

The technical part

Everything behind the story, with evidence. Times are seconds after the capture started (T+). Identifiers in all data are same-length placeholders.

infection chain

Known malware chain vs. what this unit showed

  1. Firmware

    SpectraOS / HY310, AOSP test keys

    Spoofed ADT-3 fingerprint; platform key is Google's public test key

  2. Stage 0

    StoreOS (com.htc.storeos)

    System app; silent self-update (S1) and silent installs (S2)

  3. Stage 1

    ScreenSaverSDK + Zeasn SDK

    Silently installed system app; overlays, remote install/remove, plugin updates

  4. Stage 2

    com.ss.one loader → com.me.cash5

    Present in the bundled plugin; server-activated; not seen running

  5. Stage 3

    Proxy / click-fraud payload

    Not in the APK; no proxy traffic observed

findings

14 findings, by severity

Each card starts with one plain sentence. Expand it for the technical summary and evidence.

timeline

The first 12 minutes online

This is the first-connection capture. The vendor channels fire within five seconds, before anyone touches the remote. The later reboot sessions are summarised in the findings above.
Bytes per 5 s, by destination group
YouTube / videoVendor store & CDN (CN)Google servicesCN telemetry & ad SDKsOther apps (Netflix, GitHub…)Local / multicast
1000 B9.8 KB98 KB977 KB9.54 MB00:0001:0002:0003:0004:0005:0006:0007:0008:0009:0010:0011:0012:00
Event lane (click):bootvendorusertelemetryvideoCaptured bytes. The router capture dropped ≈30 % of downstream frames.
T+45.6 s · 10:59:43 CET · vendor
Store catalog (orders dropper)
store-api.aodintech.com/sign/app/list, plain HTTP, 21 apps incl. forced hidden com.hotack.silentsdk

cleartext

What it sends without encryption

Decoded from the sanitized capture. The full set is in the data explorer.
POST http://ota.triplesai.com:8080/V1/Ota/Check · T+45.5 s · firmware update check
→ {
  "Version": "Projector.20250214.153635",
  "Channel": "HY260Pro_SpectraOS_cyh",
  "Model": "aodin",
  "IMEI": "3c00000000000000000",
  "MAC": "88:22:F3:00:00:01"
}

← {
  "Code": 100,
  "Message": "版本无须更新",
  "Data": null
}
POST http://store-api.aodintech.com/sign/app/list · T+45.6 s · vendor app catalog
→ {
  "sysVersion": "Projector.20250214.153635",
  "complexType": 7,
  "chanId": "HY260Pro_SpectraOS_cyh",
  "model": "HY310",
  "deviceId": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
  "verCode": 20
}

← (base64+gzip, 21 apps; one entry)
{
  "name": "ScreenSaverSDK",
  "pkg": "com.hotack.screensaversdk",
  "isShow": false,
  "isSilentInstall": true,
  "isBootStartup": true,
  "launchParam": "com.hotack.screensaversdk.ExpandSdkService",
  "size": 11986323,
  "upDate": "2026-10-30"
}
POST http://server.mphotool.com:8680/MPAPI/System/MultipleLicenseAuthoriztion · casting licence, fields decoded
{
  "license_serial": "A0toofifitemp001",
  "mac_addr": "88:22:f3:00:00:01",
  "lan_mac_addr": "",
  "cpu_serial": "Generic DT based system:0000000000000000",
  "main_board_serial": "exdroid:3c00000000000000000",
  "memory_serial": {
    "Ver": "1",
    "oem": "HY00",
    "Channel": "HY260Pro_SpectraOS_cyh",
    "host": "dell-PowerEdge-R750",
    "pro": "h713-tuna_p3",
    "finger": "20250214.153635:user",
    "dn": "HY310",
    "id": "5003"
  },
  "client_type": "A",
  "oem_type": "HY00_5003",
  "client_version": "SDK_V1.3.2_13166_20241120",
  "airplay_activate": 5,
  "airplay_version": "4.0.0",
  "mac_addr_type": 0,
  "user_type": 0,
  "user_version": 0,
  "request_id": 1793440785850
}

vendor app store

The catalog that decides what gets installed

Delivered over plain HTTP, unsigned. Entries flagged for silent install are installed without a prompt.
App / packageFlagsVersionSizeUpdatedFetched
AppStore
com.htc.storeos
hidden
26101010433.73 MB2026-10-19T+51 s (automatic)
NFXAccessibility
com.android.nfx
accessibility
v1.1.321 KB2025-07-22no
FtAirPlayApp
com.mphotool.airplay
hiddensilent install
V1.0.1.8_22067_202609213.38 MB2026-09-22no
SilentTools
com.hotack.silentsdk
↳ starts com.hotack.silentsdk.MyService
hiddenforcedsilent uninstall
25090416142.36 MB2025-09-04no
ScreenSaverSDK
com.hotack.screensaversdk
↳ starts com.hotack.screensaversdk.ExpandSdkService
hiddensilent installboot start
261030183011.4 MB2026-10-30no

device & infrastructure

What it is, and who it talks to

Marketing name / channel
HY260 Pro, channel HY260Pro_SpectraOS_cyh
Real model
HY310, OEM HY00, OEM id 5003 (OTA model: aodin)
SoC / board
Allwinner H713, board h713-tuna_p3, BSP exdroid
Firmware
Projector.20250214.153635 (user), Android 11
Kernel
Linux 5.4.99-00036-ge292373d67c8-dirty
Build host
dell-PowerEdge-R750
Claimed identity
ADT-3 Build/RP1A.201005.006 (spoofed)
Likely OEM
Chengdu Hotack Technology (also sold as Magcubic, Nonete, AODIN, …)
Network names
android-dhcp-11, Android.local, mp_<mac>.local, AirPlay “HY310-2951”
Wi-Fi
WPA2 only (no WPA3), 5 GHz VHT; MAC OUI 88:22:f3 not in IEEE registry
endpointnetworkupdown

cdn-store.aodintech.com

43.159.95.33 · tcp/443

AS139341 · SG
ACE-AS-AP - ACE
73 KB59.5 MB

hmma.baidu.com

103.235.46.195 · tcp/443

AS55967 · HK
Baidu - Beijing Baidu Netcom Science and Technology Co., Ltd.
178 KB43 KB

pb-api.aodintech.com, store-api.aodintech.com

119.28.17.161 · tcp/443 tcp/80

AS132203 · CN
TENCENT-NET-AP-CN - Tencent Building, Kejizhongyi Avenue
20 KB159 KB

faq.aodintech.com

43.132.166.121 · tcp/443

AS132203 · SG
TENCENT-NET-AP-CN - Tencent Building, Kejizhongyi Avenue
3.8 KB21 KB

dxp.baidu.com

2408:80f0:410b:2c7:0:ff:b039:27b · tcp/443

AS4808 · CN
CHINA169-BJ - China Unicom Beijing Province Network
3.7 KB20 KB

connect.rom.miui.com

20.33.39.99 · tcp/443

AS8069 · US
MICROSOFT-CORP-MSN-AS-BLOCK - Microsoft Corporation
4.1 KB17 KB

connect.rom.miui.com

20.33.39.105 · tcp/443

AS8069 · US
MICROSOFT-CORP-MSN-AS-BLOCK - Microsoft Corporation
3.7 KB17 KB

connect.rom.miui.com

20.33.39.104 · tcp/443

AS8069 · US
MICROSOFT-CORP-MSN-AS-BLOCK - Microsoft Corporation
2.7 KB11 KB

server.mphotool.com

3.12.169.56 · tcp/8680

AS16509 · US
AMAZON-02 - Amazon.com, Inc.
5.0 KB5.5 KB

api.ipdatacloud.com

111.47.223.8 · tcp/443

AS9808 · CN
CHINAMOBILE-CN - China Mobile Communications Group Co., Ltd.
1.4 KB8.5 KB

ota.triplesai.com

111.230.36.129 · tcp/8080

AS45090 · CN
TENCENT-NET-AP - Shenzhen Tencent Computer Systems Company Limited
1.5 KB994 B

stat.visionular.cn

39.98.48.190 · tcp/80

AS37963 · CN
ALIBABA-CN-NET - Hangzhou Alibaba Advertising Co.,Ltd.
594 B663 B

api.ipdatacloud.com

111.47.223.7 · tcp/443

AS9808 · CN
CHINAMOBILE-CN - China Mobile Communications Group Co., Ltd.
182 B132 B

indicators

IoCs, cross-checked against public research

21 indicators · 21 with an OSINT score · click a row for the breakdown
IndicatorWhat it isOSINT score
store-api.aodintech.com
domain
Vendor app store API (catalog with silent-install flags)
listed in: Kavan00, Zane St. John, probonopd ioc.txt
85malicious
cdn-store.aodintech.com
domain
APK CDN (Tencent EdgeOne)
listed in: Kavan00 (serves SilentSDK APKs)
55suspicious
pb-api.aodintech.com
domain
PocketBase ad-dialog config
listed in: Kavan00, Zane St. John
70malicious
ota.triplesai.com
domain
Firmware OTA (plain HTTP :8080)
listed in: Kavan00, probonopd ioc.txt, Zane St. John
85malicious
111.230.36.129
ip
ota.triplesai.com (Tencent Cloud CN)
listed in: jrm360seclab: “Fake OTA server”
55suspicious
api.ipdatacloud.com
domain
IP geolocation of the device
listed in: Kavan00
55suspicious
faq.aodintech.com
domain
Help page (WebView)
listed in: Parent domain listed (probonopd)
55suspicious
hmma.baidu.com
domain
Baidu Mobile Stats SDK
listed in: Dropper telemetry on another H713 firmware (badbox-h713-projector)
55suspicious
dxp.baidu.com
domain
Baidu SDK
listed in: Same as above
55suspicious
server.mphotool.com
domain
AirPlay / casting licence (:8680)
listed in: Mentioned as casting telemetry, not an IoC
0unknown
connect.rom.miui.com
domain
Xiaomi connectivity check
listed in: Kavan00 network table (telemetry)
55suspicious
stat.visionular.cn
domain
Codec SDK licence (Visionular)0unknown
3.12.169.56
ip
server.mphotool.com (AWS us-east-2)0unknown
119.28.17.161
ip
store-api / pb-api (Tencent HK)
listed in: Only via domain
0unknown
103.235.46.195
ip
hmma.baidu.com (Baidu HK)0unknown
event-api.aodintech.com
domain
App-usage telemetry (plain HTTP /report)
listed in: Kavan00 (5-minute telemetry)
55suspicious
api.pixelpioneerss.com
domain
Stage-2 loader config (in bundled plugin code)
listed in: Kavan00, Zane St. John (stage 2)
70malicious
bur.thedynamicleap.com
domain
Stage-2 loader telemetry (in bundled plugin code)
listed in: Kavan00 (stage 2)
55suspicious
on-euads-o.api.leiniao.com
domain
TCL Leiniao ad server (ScreenSaverSDK)
listed in: leiniao named in public H713 research
55suspicious
saas.zeasn.tv
domain
Zeasn SaaS: silent app install/remove commands, plugin updates0unknown
139.199.190.220
ip
Hardcoded OTA fallback in com.htc.htcotaupdate
listed in: Zane St. John (raw-IP OTA fallback)
55suspicious
suricata/hy310.rules
# Suricata rules: HY310 / SpectraOS vendor channels (sids are local-use range)
alert dns any any -> any any (msg:"HY310 vendor store lookup aodintech.com"; dns.query; dotprefix; content:".aodintech.com"; endswith; nocase; sid:9000001; rev:1;)
alert dns any any -> any any (msg:"HY310 OTA lookup triplesai.com"; dns.query; dotprefix; content:".triplesai.com"; endswith; nocase; sid:9000002; rev:1;)
alert dns any any -> any any (msg:"HY310 IP geolocation ipdatacloud.com"; dns.query; dotprefix; content:".ipdatacloud.com"; endswith; nocase; sid:9000003; rev:1;)
alert http any any -> any any (msg:"HY310 plaintext store catalog request"; flow:to_server,established; http.uri; content:"/sign/app/list"; startswith; http.host; content:"store-api.aodintech.com"; sid:9000004; rev:1;)
alert http any any -> any 8080 (msg:"HY310 plaintext OTA check"; flow:to_server,established; http.uri; content:"/V1/Ota/Check"; startswith; sid:9000005; rev:1;)
alert http any any -> any 8680 (msg:"HY310 AirPlay licence (mphotool) cleartext identifiers"; flow:to_server,established; http.uri; content:"/MPAPI/System/"; startswith; sid:9000006; rev:1;)

local network

Loud on the LAN, but no scanning

SSDP NOTIFY flood

239.255.255.250:1900
4,052
packets
5.9/s
sustained
≈330×
over spec
T+00:40: 18 NOTIFY packets in 10 sT+00:50: 48 NOTIFY packets in 10 sT+01:00: 72 NOTIFY packets in 10 sT+01:10: 54 NOTIFY packets in 10 sT+01:20: 54 NOTIFY packets in 10 sT+01:30: 72 NOTIFY packets in 10 sT+01:40: 54 NOTIFY packets in 10 sT+01:50: 54 NOTIFY packets in 10 sT+02:00: 72 NOTIFY packets in 10 sT+02:10: 54 NOTIFY packets in 10 sT+02:20: 54 NOTIFY packets in 10 sT+02:30: 72 NOTIFY packets in 10 sT+02:40: 45 NOTIFY packets in 10 sT+02:50: 54 NOTIFY packets in 10 sT+03:00: 72 NOTIFY packets in 10 sT+03:10: 54 NOTIFY packets in 10 sT+03:20: 54 NOTIFY packets in 10 sT+03:30: 72 NOTIFY packets in 10 sT+03:40: 54 NOTIFY packets in 10 sT+03:50: 49 NOTIFY packets in 10 sT+04:00: 72 NOTIFY packets in 10 sT+04:10: 51 NOTIFY packets in 10 sT+04:20: 48 NOTIFY packets in 10 sT+04:30: 72 NOTIFY packets in 10 sT+04:40: 54 NOTIFY packets in 10 sT+04:50: 54 NOTIFY packets in 10 sT+05:00: 72 NOTIFY packets in 10 sT+05:10: 54 NOTIFY packets in 10 sT+05:20: 54 NOTIFY packets in 10 sT+05:30: 72 NOTIFY packets in 10 sT+05:40: 54 NOTIFY packets in 10 sT+05:50: 54 NOTIFY packets in 10 sT+06:00: 72 NOTIFY packets in 10 sT+06:10: 54 NOTIFY packets in 10 sT+06:20: 54 NOTIFY packets in 10 sT+06:30: 71 NOTIFY packets in 10 sT+06:40: 54 NOTIFY packets in 10 sT+06:50: 54 NOTIFY packets in 10 sT+07:00: 72 NOTIFY packets in 10 sT+07:10: 54 NOTIFY packets in 10 sT+07:20: 54 NOTIFY packets in 10 sT+07:30: 72 NOTIFY packets in 10 sT+07:40: 54 NOTIFY packets in 10 sT+07:50: 54 NOTIFY packets in 10 sT+08:00: 50 NOTIFY packets in 10 sT+08:10: 42 NOTIFY packets in 10 sT+08:20: 54 NOTIFY packets in 10 sT+08:30: 72 NOTIFY packets in 10 sT+08:40: 54 NOTIFY packets in 10 sT+08:50: 54 NOTIFY packets in 10 sT+09:00: 72 NOTIFY packets in 10 sT+09:10: 54 NOTIFY packets in 10 sT+09:20: 54 NOTIFY packets in 10 sT+09:30: 72 NOTIFY packets in 10 sT+09:40: 54 NOTIFY packets in 10 sT+09:50: 54 NOTIFY packets in 10 sT+10:00: 72 NOTIFY packets in 10 sT+10:10: 47 NOTIFY packets in 10 sT+10:20: 54 NOTIFY packets in 10 sT+10:30: 72 NOTIFY packets in 10 sT+10:40: 49 NOTIFY packets in 10 sT+10:50: 49 NOTIFY packets in 10 sT+11:00: 72 NOTIFY packets in 10 sT+11:10: 53 NOTIFY packets in 10 sT+11:20: 51 NOTIFY packets in 10 sT+11:30: 65 NOTIFY packets in 10 sT+11:40: 52 NOTIFY packets in 10 sT+11:50: 54 NOTIFY packets in 10 sT+12:00: 72 NOTIFY packets in 10 sT+12:10: 42 NOTIFY packets in 10 s00:0002:0004:0006:0008:0010:0012:00
SERVER
Linux/5.4.99-00036-ge292373d67c8-dirty UPnP/1.0 Cling/2.0
LOCATION
http://192.168.179.2:44305/upnp/dev/00000000-0000-4000-8000-000000000001/desc
CACHE
max-age=1800: spec expects re-announce ≈ every 15 min, observed every 2.68 s
Volume
1.63 MB in 690 s → ≈220 MB/day of multicast
6 distinct NT values: service:ConnectionManager:1, upnp:rootdevice, device:MediaRenderer:1, service:RenderingControl:1, service:AVTransport:1, uuid:00000000-0000-4000-8000-000000000001

mDNS: AirPlay receiver posing as an Apple TV

Advertised ports 7000, 7102 (AirPlay video / RAOP audio). pw=false means anyone on the network can cast to it.

am=Shairport,1deviceid=88:22:f3:00:00:01features=0x527FEFF7,0x1Emodel=AppleTV3,2pw=falsesrcvers=220.68tp=UDP
Names announced
  • Android.local
  • mp_8822f3000001.local
  • 8822F3000001@HY310-2951._raop._tcp.local
  • _services._dns-sd._udp.local
  • _raop._tcp.local
  • HY310-2951._airplay._tcp.local
  • _airplay._tcp.local
DHCP fingerprint
vendor class android-dhcp-11, option 55 1,3,6,15,26,28,51,58,59,43,114: stock Android 11 client. ARP: 43 frames, gateway only, so no subnet sweep.

negative results

What it did not do

Absence of evidence over a few sessions is not evidence of absence.

references

Prior research & context

glossary

Terms used here

System app
An app with the same powers as the operating system itself: it can install or remove other apps and change settings without asking.
Silent install
Installing an app without showing the user anything or asking for permission.
Plain HTTP
Internet traffic without encryption. Anyone between the device and the server (a public Wi-Fi, a router, an ISP) can read or change it.
Telemetry
Data a device sends home about how it is used.
Dropper / loader
A small piece of code whose job is to fetch and start other code later, often the actually harmful part.
Residential proxy
A service that routes strangers' internet traffic through ordinary home connections, so their activity appears to come from your IP address.
IoC (indicator of compromise)
A domain, IP address or file that security researchers have already linked to malicious activity.
Platform key
The secret key that marks apps as trusted parts of the operating system. If it is public, anyone can make an app the device trusts as much as itself.
SELinux
Android's built-in lockdown that limits what each app and system process may touch. In “permissive” mode it only logs violations instead of blocking them.
Packet capture (pcap)
A recording of network traffic that can be opened in tools like Wireshark.

open data

Check the work

Every number here comes from the sanitized captures via scripts in the repository.