Documenting my findings here for a camera that is likely a derivative of pppp in case a dissector can be made.
Device: Aliexpress camera https://www.aliexpress.com/item/1005006054720973.html (PIX-LINK A10)
- has a BK7252 (verified inside, pictures pending).
- apk can be downloaded from: https://qr01.cn/E3BMyh
- apk name is "shix.pixlink.camera".
- apk contains
libobject_jni.so which appears to be similar to libpppp, since it contains functions such as cs2p2p_PPPP_Initialize and cs2p2p__P2P_Proprietary_Decrypt("SSD@cs2-network.",...) which appears on the internet at least here and here.
PPPP_SIMPLE_SHUFFLE table is the same in the apk's .so as here.
- Default camera password is
SHIX_DEFUALT_PWD = "6666" (DEFUALT is not a typo)
did is of format PIXA123456XXXXX
Tested on non-direct mode (aka connected to WiFi AP):
- Traffic is different to pppp-dissector's: every packet starts with
0x9f instead of 0x2c (both directions). Opcodes do not match if the magic packet alone is changed.
- The device keeps on broadcasting a UDP packet
IP 10.0.9.44.11007 > 0.0.0.0.0: UDP, length 48 with payload starting with 0x9f 0x83 0x24 0x22 .... (payload does not change between broadcastings).
- Simulating offline mode by blocking phone and the device prevents connecting to the device. (Speculation: maybe DNS also needs to be blocked, will keep on testing.)
Intercepted with jnitrace and frida-gadget. Phone is sending json messages to the .so for some commands (might be towards cloud, still learning jnitrace):
{"pro":"set_cypush","cmd":1,"user":"admin","pwd":"1234","pushIp":"47.106.146.11","pushPort":9093,"pushInterval":180,"cyAdmin":"admin","cyPwd":"admin123","isPushPic":1,"isPushVideo":1}
{"pro":"set_datetime","cmd":126,"user":"admin","pwd":"1234","time":1699723191,"tz":-7200}
{"pro":"get_parms","cmd":101,"user":"admin","pwd":"1234"}
Called functions according to jnitrace: PPPPMsgNotify, CallBack_H264Data, SearchResult. Likely similar SDK.
getServer() (StartPPPP?) has likely decryption key at least for some traffic:
if(strcmp("PIXA", vendorstring_or_something))
{
return "EIHGFNBBKAIEGEJLELHBFEELGDNNGBMIHFFMAPDMAAJEKEKPDLAJDPPKGALBIBLAAENOKNDAOFNFBICNIF:SHIX";
}
Keys also exist for XIAODOU and MANY others.
Documenting my findings here for a camera that is likely a derivative of pppp in case a dissector can be made.
Device: Aliexpress camera https://www.aliexpress.com/item/1005006054720973.html (PIX-LINK A10)
libobject_jni.sowhich appears to be similar to libpppp, since it contains functions such ascs2p2p_PPPP_Initializeandcs2p2p__P2P_Proprietary_Decrypt("SSD@cs2-network.",...)which appears on the internet at least here and here.PPPP_SIMPLE_SHUFFLEtable is the same in the apk's.soas here.SHIX_DEFUALT_PWD = "6666"(DEFUALT is not a typo)didis of formatPIXA123456XXXXXTested on non-direct mode (aka connected to WiFi AP):
0x9finstead of0x2c(both directions). Opcodes do not match if the magic packet alone is changed.IP 10.0.9.44.11007 > 0.0.0.0.0: UDP, length 48with payload starting with0x9f 0x83 0x24 0x22 ....(payload does not change between broadcastings).Intercepted with jnitrace and frida-gadget. Phone is sending json messages to the
.sofor some commands (might be towards cloud, still learning jnitrace):{"pro":"set_cypush","cmd":1,"user":"admin","pwd":"1234","pushIp":"47.106.146.11","pushPort":9093,"pushInterval":180,"cyAdmin":"admin","cyPwd":"admin123","isPushPic":1,"isPushVideo":1} {"pro":"set_datetime","cmd":126,"user":"admin","pwd":"1234","time":1699723191,"tz":-7200} {"pro":"get_parms","cmd":101,"user":"admin","pwd":"1234"}Called functions according to jnitrace:
PPPPMsgNotify,CallBack_H264Data,SearchResult. Likely similar SDK.getServer() (StartPPPP?) has likely decryption key at least for some traffic:
Keys also exist for
XIAODOUand MANY others.