利用空口抓包分析Wi-Fi问题
一、空口抓包 1. 原理 2. 操作方法 二、实例分析 1. 手机兼容性问题 2. Wi-Fi省电模式 3. 其他适用场景 随着IoT的兴起,越来越多的嵌入式设备内置Wi-Fi模块,具备了网络接入能力。 在开发过程中,难免会遇到各种各样的网络问题,而抓包无疑是分析网络问题最直...
一、空口抓包 1. 原理 2. 操作方法 二、实例分析 1. 手机兼容性问题 2. Wi-Fi省电模式 3. 其他适用场景 随着IoT的兴起,越来越多的嵌入式设备内置Wi-Fi模块,具备了网络接入能力。 在开发过程中,难免会遇到各种各样的网络问题,而抓包无疑是分析网络问题最直...
一、安装交叉编译工具链 二、安装arm模拟器qemu 三、通过gdb调试arm程序 四、参考文档 没有开发板,如何调试运行arm程序? 本文主要讲解如何在Ubuntu上搭建arm交叉编译、运行环境。 一、安装交叉编译工具链 安装交叉编译工具链arm-linux-gnueabihf-gcc: sudo apt-get install gcc-arm-linux-gnuea...
一、实现思路 二、使用方法 三、编译方法 在基于RTP的实时码流传输过程中,经常会遇到音视频卡顿、花屏的现象。对于这类问题,如何定位? 下面这个工具可以帮助分析类似问题: https://github.com/sigusr1/rtp_parse_from_pcap 一、实现思路 从传输的角度看,造成卡顿、花屏的常见原因如下: 接收端收到的帧不完整(可能是发送方发的就不完...
实际工作中,我们经常会向其他同事咨询一些技术问题。但是,他给出的答案一定是正确的吗? 近期项目组遇到这么个问题,Android平台上软件解码RTSP实时视频流CPU占用率较高,打算切换到硬件解码。但是在调用硬件解码接口的时候返回失败,原因是视频流的分辨率信息未知,结果又自动切换回了软解。 那么,基于RTSP传输的视频流,一般可以从哪里获取分辨率信息呢? RTSP报文中的SDP,一...
需求 适配方法 方法一:通过va_list传递变参 方法二:宏重定义 方法三:函数指针 性能分析 其他 参考资料 嵌入式开发中经常需要跨平台移植,但是不同平台的系统函数通常不一样,如果能封装一个平台适配层,将底层系统差异和上层业务代码隔离,移植起来将事半功倍。 需求 系统层次结构如下所示: 平台适配...
一、 TCP连接建立过程 1. 三次握手 2. 同时打开 3. 自连接 二、 TCP连接断开过程 1. 四次挥手 2. 同时关闭连接 三、 常见问题 1. 为什么要三次握手建立连接 2. 为什么要四次挥手断开连接 3. 为什么TIME...
一、 背景 二、 backtrace 1. 栈帧 2. 编译优化 3. 通过追踪栈变化回溯函数 4. 程序实现 三、 栈保护 四、 参考资料 本文主要介绍在arm平台回溯函数调用栈(backtrace)的方法。 一、 背景 嵌入式设备开发过程中,难免会遇到各种死机问题。这类问题的定位一直是开发人员的噩...
一、预备知识 二、实验环境 三、malloc 3.1 没有malloc就没有堆 3.2 malloc(x) 四、strace, brk 和 sbrk 4.1 多次malloc 4.2 自行实现malloc 五、丢失的16字节 5.1 从源码找答案(RTFSC)#...
一、预备知识 二、实验环境 三、栈 四、堆 五、可执行程序的位置 六、命令行参数和环境变量 6.1 数组变量argv和env是相邻的吗? 6.2 第一个命令行参数紧挨着数组变量env吗? 七、栈真的是向下生长吗? 八、/proc 九、下节预告 十、继续阅读 十一、原文链接 这是虚拟内存系列文章的第三篇。...
一、预备知识 二、实验环境 三、剖析一个简单的Python脚本 1. Python中的字节对象(bytes object) 1.1 字节和字符串(bytes vs str) 1.2 一切都是对象 2. 执行read_write_heap.py脚本 ...