作者归档:softsim

5G频谱

3GPP定义的频率范围分为FR1和FR2
FR1也就是Sub 6G, 低于6G Hz的频段   450 MHz ~ 6000 MHz
FR2 24.350GHz ~ 52.6 GHz

1. 700MHz频段(694~790MHz)
全球性使用的低频5G频段

2. L波段(1427~1518MHz)
所有国家和地区确定的新的全球波段
3. 2496 MHz – 2690 MHz
许多国家和地区确定的全球波段,但这频段已经给LTE使用,在中国这一频段分配了160MHz给中国移动。
2515-2575MHz、2635-2675MHz为新增频段
2575-2635MHz频段为重耕中国移动现有的TD-LTE(4G)频段

3300~3400MHz     欧美外的许多国家和地区确定的全球波段
C波段(3400~3600MHz) 所有国家和地区确定的全球波段, 中国这个频段分给了中国电信和中国联通
3.4-3.5 给中国电信
3.5-3.6 给中国联通

C波段(3600~3700MHz) 许多国家和地区确定的全球波段
4800~4990MHz     为亚太地区少数几个国家确定的新频段,在中国分配了100MHz给中国移动

n1 1.920-1.980 2.11-2.17

https://zhuanlan.zhihu.com/p/82704664

703-743/758-798MHz频段号为n28。(703MHz-748MHz/758MHz-803MHz的频段号为n28)
n1 重耕 2.1G
n41 重耕 2.6G
n78 新的 3.3g

debian和openwrt下驱动mt7601u网卡

mt7601u是ralink(mediatek) 2012年推出的一款usb接口 150 Mbps速率的802.11b/g/n无线网卡,主要规格:

嵌入式高性能32位risc微处理器

55nm CMOS工艺

高集成射频 1T1R模式

支持150MbpsPHY速率

集成高效开关调节器

紧凑型5mm×5mm QFN40L封装

Debian中只需要安装 firmware-misc-nonfree

apt install  firmware-misc-nonfree

firmware-ralink现在由 firmware-misc-nonfree提供

重启后,即可以收到信号

OpenWRT编译配置

Kernel modules –> Wireless Drivers –> kmod-mt7601u

配置文件

/etc/config/wireless

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/101c0000.otg/usb1/1-1/1-1:1.0'
	option disabled '0'

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'wan'
	option mode 'sta'
	option ssid 'uplink'
	option encryption 'psk2'
	option key '12345678'

/etc/config/network

config interface 'wan'
	option proto 'dhcp'

Linux网卡流量统计

ifconfig可以获取
但现在新的系统,默认安装iproute2包,没有ifconfig命令了
ifconfig命令,实际从

 
/sys/class/net/wwan0/statistics/rx_bytes
/sys/class/net/wwan0/statistics/tx_bytes

这两个文件,获取的流量统计信息

wwan0是我的usb 4G网卡的名称

vscode开发Java控制台应用

0. 下载 vscode

https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64

1.解压缩 后 直接运行

dpkg -x  code_1.52.1-1608136922_amd64.deb  app
cd app/user/share/code
chown root:root chrome-sandbox
chmod 4755 chrome-sandbox
./code

3.配置Java环境
Ctrl+Shift+P 调出 Command Palette, 输入命令

Java: Configure Java Runtime

选择 Java: Configure Java Runtime.

4.创建Java项目

Java: Create Java Project

选择No build tools
或者
Maven

mitmproxy捕获手机ssl流量

一. 安装mitmproxy
1. 安装python3-venv

apt install python3-venv

2. 获取源代码

git clone https://github.com/mitmproxy/mitmproxy.git
cd mitmproxy
./dev.sh 

3. 激活python3虚拟环境,并执行

. venv/bin/activate  
mitmdump 

二. 上传证书到 手机
1. 运行mitmproxy后,会自动在 ~/.mitmproxy 目录下生成证书:
mitmproxy-ca.pem  证书和私钥
mitmproxy-ca-cert.pem  PEM格式的证书
mitmproxy-ca-cert.cer  跟PEM格式的证书完全一样,只是扩展名不同

2.制作一个Android兼容的证书
2.1 获得mitmproxy证书的hash值

openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem | head -1

会显示 hash值为 c8750f0d

注意,要用 -subject_hash_old 选项,而不是 -subject_hash 这样才会得到 openssl 0.9 兼容的hash值

2.2 android证书文件名 以.0结尾

cat mitmproxy-ca-cert.pem > c8750f0d.0
openssl x509 -inform PEM -text -in mitmproxy-ca-cert.pem -noout >>  c8750f0d.0

一步到位

hashed_name=`openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1` && cp mitmproxy-ca-cert.cer $hashed_name.0

3. 将证书放入 /system/etc/security/cacerts/

adb push c8750f0d.0 /data/local/tmp/
adb shell
su 
# mount -o remount,rw /system
# setenforce 0
#  mv /data/local/tmp/c8750f0d.0 /system/etc/security/cacerts/ 
# chmod 644 /system/etc/security/cacerts/c8750f0d.0
# chown root:root /system/etc/security/cacerts/c8750f0d.0
#  setenforce 1
# mount -o remount,ro /system

如果是用Magisk来root的,上述命令中有些应该适当修改

mount -o remount,rw /sbin/.magisk/mirror/system_root

三.让手机通过usb上网
1. 手机开启无线数据,或者开启wifi

2. 手机开启usb共享,PC上启用usb网卡

3. PC上启用有线连接

ip addr add 192.168.1.158/24 dev eno1
ip route add default via 192.168.1.1 dev eno1
ip route  del default via 192.168.42.129

4. 在手机上给usb网卡重新分配ip

ip addr del 192.168.42.129/24 dev rndis0 
ip addr add 10.42.0.2/24 dev rndis0

5. 手机上 修改路由表 (rmnet_data3根据实际情况修改)

ip route add 10.42.0.0/24 dev rndis0 table rmnet_data3
ip route delete default table rmnet_data3
ip route add default via 10.42.0.1 table rmnet_data3

ip -6 route  del default  table rmnet_data3

6. PC上开启转发

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -n -L

7. PC上给usb网卡重新分配地址

ip addr del 192.168.42.140/24 dev usb0
ip addr add 10.42.0.1/24 dev usb0

8. 在手机上检测

ping 10.42.0.1

9. 手机上设置私人DNS

四. PC上配置mitmproxy环境
1. 将80和443端口的流量都重定向给 mitmproxy

iptables -t nat -A PREROUTING  -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING  -p tcp --dport 443 -j REDIRECT --to-port 8080

2.透明模式启动mitmproxy

mitmproxy --mode transparent --showhost

五. 用frida解除 ssl pinning

frida -U -f com.sinovatech.unicom.ui -l ../ssl.js --no-pause

trojan nginx wordperss共存

/etc/trojan/config.json

{
“run_type”: “server”,
“local_addr”: “192.168.0.1”,
“local_port”: 443,
“remote_addr”: “127.0.0.1”,
“remote_port”: 443,

…}

local_addr这里可以改为 :: 表示任意地址

nginx配置

server {
server_name softs.im;

listen 127.0.0.1:443 default_server;

因为在worpress里有 wp-includes/load.php
function is_ssl() {
}
判断是否支持ssl
如果端口监听在443, 就认为是ssl

如何检测Magisk Hide

Magisk是自2018年后的唯一root方案。与其配合的Magisk Manager用来管理magisk模块,管理su请求.
Magisk Manager还可以管理Magisk Hide.
Magisk Hide用来隐藏Magisk, 不被应用程序检测到。
某些应用通过检测是否安装了Magisk Manager来判断设备是否root
Magisk Manager的应对措施是,改变自己的包名为随机的字符串。
但是,某些执着的应用,通过遍历系统所有的包,解析出每个包的签名,对比签名,判断是否为Magisk Manager.

应用使用Android API(startService, bindService)来启动服务时, 依赖于在AndroidManifest里的配置,服务跟app运行于同一个进程,或者新开启进程。如果使用不同的进程,父进程会孵化一个新进程,进程名会加一个后缀(在Manifest里定义的后缀名).
Magisk Hide很多时候不能为新开启的服务进程,隐藏Magisk mount path.
很有游戏,银行应用,就是通过这种方式(派生出远程服务进程)来检测magisk的。
Magisk Hide也在更新,新的Magisk Hide也能会远程服务,来隐藏su和magisk path

隔离的进程

/proc/pid/mounts, /mountinfo, /mountstats

移远锁频锁网AT命令

AT+QNWINFO

回应

+QNWINFO: “FDD LTE”,”46001″,”LTE BAND 3″,1650
分别是:
接入技术 FDD LTE
运营商 MCC_MNC 46001
频段: LTE Band 3
channel id: 1650
——————-
AT+QCFG=”servicedomain”,1,1
设置,只连接到PS域名,立即生效
—————-

AT+QCFG="band", bandval, ltebandval, tdsbandval, effect
bandval = 0000 0000  表示不改变
bandval = 0000 FFFF 表示任何频率都可以
0000 0001 GSM900
0000 0002  GSM1800
0000 0004  GSM850
0000 0008  GSM1900
0000 0010  WCDMA2100
0000 0020  WCDMA1900
0000 0040  WCDMA850

ltebandval
1 = BC1
4 = BC3
10 = BC5
40 = BC7
80 = BC8
0x80 0000 = BC20

频段配置
+QCFG: "band",0x493,0x1e200000095,0x21

用
at+qcfg="band",0,1,0,1
变成
+QCFG: "band",0x493,0x1,0x21

骁龙处理器的安全处理单元

一个潜在的区别是845新增的安全处理单元(SPU)。这是经过改进的Arm SC300。

它具有自己的CPU内核,嵌入式专用RAM,硬件随机数生成器和加速的加密功能,所有这些功能均位于片上系统芯片内部的独有电源岛上。它运行由高通公司提供的代码,无论是谁制造了容纳SOC的设备。

它旨在以安全和私密的方式进行处理,而不会出现在操作系统甚至CPU内核的TrustZone部分的视线范围之内,例如指纹和面部图像之类的东西可以对所有者进行身份验证。这样做应该可以防止危害系统的黑客和恶意软件从小工具中获取这些敏感的生物特征数据,包括您的指纹,脸部地图等。还应该保护应用程序和用户所需的加密密钥。

它通过隔离对敏感数据的所有访问,并安全地私下处理诸如指纹之类的事情来做到这一点,从而使在主CPU上运行的任何代码(包括OS内核和任何恶意软件)都无法检查或干扰信息。它与传统的TrustZone区域(受保护的内存和代码)完全分开,Qualcomm承认,传统的TrustZone区域已被国家资助的黑客和计算机安全专家所击败。

TrustZone是CPU内核中的一种特殊模式:通常,内核或低级驱动程序将设置一些参数并触发向TrustZone的切换,这时将启动单独的固件代码(仅在内存中设置一些东西才能能够访问Trustzone),然后切换回内核模式并显示结果。运行在顶部的内核,驱动程序和应用程序应该看不到TrustZone代码可以访问的私有内容,例如加密密钥和指纹。

SPU是一个物理上独立的CPU内核,具有物理上的专用内存,它自己的内置加密引擎以及防止其他软件的篡改和重放攻击的机制。乍一看,这听起来有点像英特尔的命运不佳的管理引擎,它可以被不法之徒用来劫持整个工作站和服务器。

但是,与管理引擎不同,SPU不能控制片上系统。有人告诉我们它通过类似邮箱的接口与各种内部单元(例如GPU和矢量计算处理DSP)进行对话,将它们发布到数据和请求中并收集结果。

在主CPU上运行的软件不应该监听这些单元为SPU所做的任何工作,从而允许由专用数学电路秘密执行诸如指纹和面部识别算法之类的任务。因此,不可能远程破坏SPU,也不能通过恶意应用程序或内核级驱动程序在本地对其进行监听。

与往常一样,事情有错误,并且SPU或其固件中的任何缺陷都可能导致高通安全性出现裂缝。曾几何时,人们说TrustZone不可破解,然后被允许运行Qualy开发的代码,该代码不进行边界检查。

希望845的SPU不仅可以处理指纹和面部扫描,还可以处理虹膜和声音来验证用户身份并允许他们登录其设备和服务。 SPU还有望实现其他形式的身份验证和授权,使人们的电话可以替换其芯片银行卡,公共交通支付卡,SIM卡等。

因此,让我们希望它能够坚持下去。高通公司的高管对SPU的设计相当不满意。他们的思维方式围绕着其机制越是神秘,那么可供黑客利用的信息就越少。默默无闻带来安全性。一名安全部门的高级职员在按下安全单元内部时说:“部分原因是混淆,您说的越少越好。”

Android APP的selinux身份

/system/etc/selinux/plat_seapp_contexts 这个文件里有

user=_app minTargetSdkVersion=29 domain=untrusted_app type=app_data_file levelFrom=all
user=_app minTargetSdkVersion=28 domain=untrusted_app_27 type=app_data_file levelFrom=all
user=_app minTargetSdkVersion=26 domain=untrusted_app_27 type=app_data_file levelFrom=user
user=_app domain=untrusted_app_25 type=app_data_file levelFrom=user
user=_app minTargetSdkVersion=28 fromRunAs=true domain=runas_app levelFrom=all

这是Android 10

user=_app minTargetSdkVersion=28 domain=untrusted_app type=app_data_file levelFrom=all
user=_app minTargetSdkVersion=26 domain=untrusted_app_27 type=app_data_file levelFrom=user
user=_app domain=untrusted_app_25 type=app_data_file levelFrom=user

这是Android 9

user=_app minTargetSdkVersion=26 domain=untrusted_app type=app_data_file levelFrom=user
user=_app domain=untrusted_app_25 type=app_data_file levelFrom=user

这是Android 8.1

如果需要调整app身份, 是 untrusted_app 还是 untrusted_app_27

修改 Android Studio项目中的 build.gradle 中的 targetSdkVersion的值 就可以了