对某嵌入式设备声波配网的研究
一
前言
二
硬件分析
三
音频分析
音频处理
m4a转wav
import librosa
from pydub import AudioSegment
import matplotlib.pyplot as plt
import numpy as np
input_file = './声波配网信息.m4a'
output_file = './声波配网信息.wav'
# 将M4A文件转换为WAV格式
audio = AudioSegment.from_file(input_file, format='m4a')
audio.export(output_file, format='wav')
频谱生成
audio_path = './声波配网信息.wav'
audio_data, sample_rate = librosa.load(audio_path)
spectrogram = librosa.stft(audio_data)
plt.figure(figsize=(12, 8))
plt.title('Spectrogram')
plt.xlabel('Time')
plt.ylabel('Frequency')
plt.imshow(librosa.amplitude_to_db(abs(spectrogram), ref=np.max),
origin='lower', aspect='auto', cmap='coolwarm')
plt.colorbar(format='%+2.0f dB')
plt.tight_layout()
plt.show()
提取频率数组
# 使用librosa进行频谱分析,并将能量值转换为分贝单位
spectrogram = librosa.amplitude_to_db(librosa.stft(audio_data), ref=np.max)
# 设置阈值,只记录强度大于-10dB的频率
threshold = -10
# 初始化空的频率数组
frequencies = []
# 遍历每个时间帧
for i in range(spectrogram.shape[1]):
# 获取当前时间帧的能量值
frame = spectrogram[:, i]
# 获取强度大于阈值的频率索引
freq_indices = np.where(frame > threshold)[0]
# 将符合条件的频率添加到频率数组中
frequencies.extend(freq_indices)
# 去除重复的频率,并按升序排列
frequencies = sorted(set(frequencies))
print(frequencies)
尝试特殊的wifi和密码
四
通信细节分析
通信概要
接收方
发送方app的逆向分析
app脱壳
frida-dexdump -FU
定位关键dex
对原生库文件进行分析
五
协议分析
type0:全是数字(1111)
type1:前面是小写后面是数字(aa11)
type2:前面是除数字外的base64后面全是数字的(_A11)
type3:含有非base64的(@#$%)
type4:前面全是数字然后出现不是数字的base64的(11_a)
type5:全是小写(aaaa)
type6:只要是由base64组成的(a-_b)
type7:全是大写(AAAA)
function hook_java(){
Java.perform(function(){
Java.use("voice.encoder.DataEncoder").encodeSSIDWiFi.implementation = function(ssid,wifi){
console.log("java hooked");
console.log(ssid);
console.log(wifi);
var enc = this.encodeSSIDWiFi(ssid,wifi);
return enc;
}
Java.use("voice.encoder.DataEncoder").encodeData.implementation = function(a1,a2,a3){
//console.log("encode hooked");
let str = String.fromCharCode.apply(null, a1);
console.log("string before encode:"+str);
var enc = this.encodeData(a1,a2,a3);
return enc;
}
Java.use("voice.encoder.VoicePlayer").play.overload('java.lang.String', 'int', 'int').implementation = function(a1,a2,a3){
//console.log("play hooked");
console.log("string after encode:"+a1);
//console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new()));
this.play(a1,a2,a3);
return;
}
});
}
hook_java();
六
后续的工作以及收尾
七
总结
看雪ID:Nameless_a
https://bbs.kanxue.com/user-home-943085.htm
# 往期推荐
球分享
球点赞
球在看
[广告]赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注KnowSafe微信公众号
随时掌握互联网精彩
随时掌握互联网精彩
- SharpHostInfo内网渗透扫描工具
- Easysearch由极限科技研发的分布式近实时搜索型数据库
- “敏捷欺骗了开发人员”
- 快手回应董事长宿华“被带走配合调查”:恶意谣言,已报案;苹果关闭iOS 15.4.1验证通道;Linux 5.18发布|极客头条
- 游戏核心资产保护,迎来硬核救星
- 微软若“无故”解雇暴雪 CEO,将付 1500 万美元“分手费”
- Swift之父离开团队?Lattner本人回应表示团队“有毒”
- Google、苹果、亚马逊向“自动驾驶”发起进攻!
- Amazon Linux 2022 来袭,AWS 承诺后续每两年更新一次
- “穿梭”现实与虚拟,体验更沉浸智能的无界XR
- CSO说安全 | 秦峰:基于商业组织的网络安全合规风险管理构建和实践
- 第二届“网安好播客”直播大赛启动报名
赞助链接