adb pull /system/framework/arm/ frm
java -jar ~/utils/baksmali-2.5.2.jar x -c boot.oat -d frm HmMyWatch.odex -o out
java -jar ~/utils/smali-2.5.2.jar a -o classes.dex out
adb pull /system/framework/arm/ frm
java -jar ~/utils/baksmali-2.5.2.jar x -c boot.oat -d frm HmMyWatch.odex -o out
java -jar ~/utils/smali-2.5.2.jar a -o classes.dex out
Embedded UICC Controlling Authority Security Domain (ECASD) 负责安全存储支持 eUICC 上所需安全域所需的凭证。
一个 eUICC 上应该只有一个 ECASD。 ECASD 应在 eUICC 制造期间由 EUM (卡商) 安装和个性化,如 GlobalPlatform 卡规范中所述。
ECASD 应包含以下内容:
1. 用于创建签名的 eUICC 私钥 eUICC’s Private Key(s) (SK.EUICC.SIG) 。
2. eUICC认证的证书 (CERT.EUICC.SIG), 此证书含有eUICC的公钥 (PK.EUICC.SIG)。
3. 用于验证 SM-DP+ 和 SM-DS 证书的证书颁发者 (CI) 根证书的公钥 (PK.CI.SIG) 。
4. eUICC 制造商 (EUM) 用于 更新 密钥/证书的密钥集 ((CERT.EUM.SIG)。
可以更新:
1)eUICC’s Private Key(s) 和 Certificate(s)
2) EUM Certificate(s)
3) eSIM CA RootCA public key(s)
4) 添加 新的 new eUICC Private Key(s), eUICC Certificate(s), EUM Certificate(s)
5)
此外,ECASD 应提供在密钥建立和 eUICC 身份验证期间使用的安全功能。
ISD-R 负责创建新的 ISD-P 和 管理 所有 ISD-P 的生命周期。
ISD-P 是用于托管 配置文件(Profile)的安全容器(安全域)。 ISD-P 与配置文件包解释器(用于对接收到的绑定配置文件包,进行解码/解释) 协作, 来完成配置文件下载和安装.
ISD-P是 SM-DP+ 在卡上的代表。
MNO-SD
MNO-SD 是发布配置文件的运营商的卡上代表。 它包含运营商的无线 (OTA) 密钥并提供安全的 OTA 通道。
Profile Policy Enabler
eUICC 操作系统 (OS) 的一个服务,提供配置文件策略规则验证和执行。
Telecom Framework
Telecom Framework 是一种操作系统服务,它为 ISD-P 中托管的 NAA(SIM卡应用) 提供标准化的网络认证算法。 此外,它还提供了使用必要参数配置算法的能力。
Profile Package 解释器是一个 eUICC 操作系统服务,它 将 Profile Package Data 转换为 目标 eUICC 的特定内部格式 的Profile.
LPA 服务
提供 对 (LPA功能要求中定义的)的服务和数据的访问,包括:
1. root SM-DS地址。
2. 可选存储的默认 SM-DP+ 地址。
3. 便于接收从 LPA 传输的绑定配置文件包。(从LPAd传到ISD-P)
4. 提供有关已安装配置文件及其配置文件元数据的信息。
5. 提供本地配置文件管理
6. 支持远程配置文件管理操作
7. 为LPA 提供与SM-DS 进行身份验证和交互的功能。
8. 确保对 EID 的访问仅限于 LPA。
在你的项目中使用 json_serializable,你需要一个常规依赖,以及两个 dev 依赖。
简单来说,dev 依赖 是不包括在我们的 App 源代码中的依赖——它们只会被用在开发环境中。
user.dart
class User { final String name; final String email; User(this.name, this.email); User.fromJson(Map<String, dynamic> json) : name = json['name'], email = json['email']; Map<string, dynamic> toJson() => { 'name': name, 'email': email, }; }
hello.dart
import 'dart:convert'; import 'user.dart'; String jsonString = ''' { "name": "John Smith", "email": "john@example.com" } '''; void main() { Map<String, dynamic> userMap = jsonDecode(jsonString); var user = User.fromJson(userMap); print('Howdy, ${user.name}!'); print('We sent the verification link to ${user.email}.'); String json = jsonEncode(user); print(json); }
被调用的代码根本不需要担心序列化 JSON 数据的问题。然而,你仍然需要模型类。你当然会希望序列化数据在一个生产环境的应用里能奏效。在实践中,User.fromJson() 和 User.toJson() 方法都需要单元测试以便验证正确的行为。
将下列内容保存为 hello.dart
import 'dart:convert'; String jsonString = ''' { "name": "John Smith", "email": "john@example.com" } '''; void main() { Mapuser = jsonDecode(jsonString); print('Howdy, ${user['name']}!'); print('We sent the verification link to ${user['email']}.'); }
运行
dart hello.dart
统一由3gpp来管理的
https://www.freecheckdomain.com/cn/dnsCheck.html
https://dnschecker.org/
来检测
中国联通,此域名不存在 epdg.epc.mnc001.mcc460.pub.3gppnetwork.org 马来 U Mobile epdg.epc.mnc018.mcc502.pub.3gppnetwork.org 123.136.110.180 123.136.100.132 泰国 AIS epdg.epc.mnc003.mcc520.pub.3gppnetwork.org 119.31.121.14 119.31.123.26
MCC 520 泰国 Thailand
MNC 01 AIS
03 AIS
15 AIS
23 AIS
—————
MCC 502 马来西亚 Malaysia
01 Telekom
11 MTX Utara
12 Maxis
13 TM Touch
16 DIGI
17 Maxis
18 U Mobile
—————
epdg.epc.mnc260.mcc310.pub.3gppnetwork.org CNAME epdg.epc.geo.mnc260.mcc310.pub.3gppnetwork.org
epdg.epc.geo.mnc260.mcc310.pub.3gppnetwork.org 208.54.36.3
208.54.40.3
208.54.148.227
208.54.87.3
208.54.2.67
208.54.39.35 (可用)
epdg.epc.mnc260.mcc310.pub.3gppnetwork.org epdg.epc.geo.mnc260.mcc310.pub.3gppnetwork.org
208.54.2.67 (可用)
————-
UDP port 500或4500 是 Internet Security Association and Key Management Protocol (ISAKMP)
UDP PORT 4500是 UDP-encapsulated ESP and IKE
——————–
在OpenWRT的 /etc/config/firewall里有放行的配置
config rule option name 'Allow-IPSec-ESP' option src 'wan' option dest 'lan' option proto 'esp' option target 'ACCEPT' config rule option name 'Allow-ISAKMP' option src 'wan' option dest 'lan' option dest_port '500' option proto 'udp' option target 'ACCEPT'
IPSEC建立分为三个阶段:phase1(建立IKE SA)、phase1.5(xauth,可选)、phase2(建立最终SA并协商SA参数)
IPSEC建立好之后,用ESP协议封装报文。ESP是等同于UDP\TCP的协议,IP协议号是50(因此ESP并不是UDP的上层协议,而是跟UDP\TCP平行协议)
当IKE在阶段一进行NAT监测时候,发现网络中存在NAT,IKE会把端口从500改到4500,后续的ESP流量前面加一个UDP的头,端口4500
在vowifi场景下,NAT是肯定存在的,所以500端口只有第一个请求才会用到,后面都是4500,(而且4500这个 UDP-encapsulated ESP and IKE是不可以配置和更改的,是RFC规定死的 )。
/vendor/firmware_mnt 独立分区
/vendor/firmware_mnt/image
vsimapp
voicepri
modem
/vendor/firmware_mnt/image/modem_pr/mcfg/configs/mcfg_sw
SEA 东南亚 下面有泰国的 AIS, 菲律宾 Globe, 马来 UMobile
UMobile/Commercial/Malaysia/mcfg_sw.mbn
Globe/Commercial/PH/mcfg_sw.mbn
AIS/Commercial/Thailand/mcfg_sw.mbn
China/CU/Commercial/OpenMkt/mcfg_sw.mbn
China/CU/Commercial/VoLTE/mcfg_sw.mbn
China/CMCC/Commercial/Volte_OpenMkt/mcfg_sw.mbn
VoWiFi, 也成 WiFi Calling (Wi-Fi 通話)
澳大利亚:
amaysim https://www.amaysim.com.au/
Optus http://www.optus.com.au/iphone
Telstra http://www.telstra.com.au/iphone
Vodafone http://www.vodafone.com.au/
—————-
柬埔寨
Smart http://www.smart.com.kh/
————-
香港
1O1O 和 CSL http://1010.hkcsl.com/jsp/home/index.jsp
Three http://iphone.three.com.hk/website/chi/home/index.html
中国移动 https://eshop.hk.chinamobile.com/tc/AppleFamily.html
HKBN https://www.hkbn.net/personal/mobile/tc/
SmarTone http://www.smartone.com/tc/
SunMobile https://www.sunmobile.com.hk/iphone/carriersupport
———————
澳门
Three http://iphone.three.com.mo/
——————
马来
Digi https://new.digi.com.my/
Maxis http://www.maxis.com.my/
U Mobile http://www.u.com.my/
————————-
马儿代夫
Ooredoo https://ooredoo.mv/
————–
新西兰
https://www.2degreesmobile.co.nz/help-and-support/mobile/your-phone-or-device
http://www.spark.co.nz/
—————
菲律宾
http://www.globe.com.ph/
http://www.smart.com.ph/
———–
新加坡
https://www.m1.com.sg/
https://www.singtel.com/personal/support
https://www.starhub.com/personal/support/contact-us.html
————
斯里兰卡
http://www.dialog.lk/dlg/index.jsp
http://www.mobitel.lk/
————–
台湾
http://www.aptg.com.tw/
http://iphone.emome.net/
https://www.fetnet.net/
https://www.taiwanmobile.com/
——–
泰国
http://www.ais.co.th/iPhone
https://www.dtac.co.th/en/
http://truemoveh.truecorp.co.th/
———–
越南
http://www.mobifone.vn/
————-
config zone option name 'wan' option input 'REJECT' 改成 ACCEPT option output 'ACCEPT' option forward 'REJECT' 改成 ACCEPT option masq '1' option mtu_fix '1' list network 'wan' .... config rule option name 'allow-IPV6-wrt' option src 'wan' option proto 'tcp' option family 'ipv6' option target 'ACCEPT' config rule option name 'Allow-IPV6-all' option src 'wan' option dest 'lan' option family 'ipv6' option target 'ACCEPT' list proto 'all'
fw4 print可以看到
... chain input_wan { meta nfproto ipv4 udp dport 68 counter accept comment "!fw4: Allow-DHCP-Renew" meta nfproto ipv4 icmp type 8 counter accept comment "!fw4: Allow-Ping" meta nfproto ipv6 meta l4proto tcp counter accept comment "!fw4: allow-IPV6-wrt" meta nfproto ipv4 meta l4proto igmp counter accept comment "!fw4: Allow-IGMP" meta nfproto ipv6 udp dport 546 counter accept comment "!fw4: Allow-DHCPv6" ip6 saddr fe80::/10 icmpv6 type . icmpv6 code { 130 . 0, 131 . 0, 132 . 0, 143 . 0 } counter accept comment "!fw4: Allow-MLD" meta nfproto ipv6 icmpv6 type { 128, 129, 1, 3, 133, 134 } limit rate 1000/second counter accept comment "!fw4: Allow-ICMPv6-Input" meta nfproto ipv6 icmpv6 type . icmpv6 code { 2 . 0, 4 . 0, 4 . 1, 135 . 0, 136 . 0 } limit rate 1000/second counter accept comment "!fw4: Allow-ICMPv6-Input" jump reject_from_wan } ... chain forward_wan { meta nfproto ipv6 counter jump accept_to_lan comment "!fw4: Allow-IPV6-all" meta nfproto ipv6 icmpv6 type { 128, 129, 1, 3 } limit rate 1000/second counter accept comment "!fw4: Allow-ICMPv6-Forward" meta nfproto ipv6 icmpv6 type . icmpv6 code { 2 . 0, 4 . 0, 4 . 1 } limit rate 1000/second counter accept comment "!fw4: Allow-ICMPv6-Forward" meta l4proto esp counter jump accept_to_lan comment "!fw4: Allow-IPSec-ESP" udp dport 500 counter jump accept_to_lan comment "!fw4: Allow-ISAKMP" jump reject_to_wan }
直接运行
dart run hello.dart
编译
dart compile exe hello.dart