会员登录 立即注册

搜索

暴力破解串口协议

[复制链接]
崎山小鹿 发表于 昨天 23:49 | 显示全部楼层 |阅读模式
崎山小鹿
昨天 23:49 6 0 看全部
// 1. 获取配置描述符
            const usb_config_desc_t *config_desc;
            err = usb_host_get_active_config_descriptor(temp_dev_hdl, &config_desc);
            if (err != ESP_OK) {
                Serial.println("Failed to get config descriptor");
                return;
            }

            Serial.printf("Parsing configuration descriptor (Total Length: %d)...", config_desc->wTotalLength);

            // 2. 手动遍历描述符链,寻找接口和端点
            // p 是当前遍历的指针,end 是整个描述符的结束地址
            uint8_t *p = (uint8_t *)config_desc;
            uint8_t *end = p + config_desc->wTotalLength;

            while (p < end) {
                // 描述符的前两个字节固定是:bLength(长度), bDescriptorType(类型)
                uint8_t len = p[0];
                uint8_t type = p[1];

                // 如果长度为0或者超出范围,说明描述符异常,跳出防止死循环
                if (len == 0) break;

                // 类型 0x04 代表接口描述符 (USB_DT_INTERFACE)
                if (type == 0x04) {
                    const usb_intf_desc_t *intf = (const usb_intf_desc_t *)p;
                    Serial.printf("Found Interface %d, Class: 0x%02X", intf->bInterfaceNumber, intf->bInterfaceClass);
                    
                    // 抢占接口(Claim Interface),告诉底层驱动这个接口归我们管
                    // 注意:必须在提交任何传输(Transfer)之前 Claim
                    err = usb_host_interface_claim(naobo->clientHandle, naobo->deviceHandle, intf->bInterfaceNumber, intf->bAlternateSetting);
                    if (err == ESP_OK) {
                        Serial.printf("Interface %d claimed successfully!", intf->bInterfaceNumber);
                    } else {
                        Serial.printf("Failed to claim interface %d: %d", intf->bInterfaceNumber, err);
                    }
                }
                // 类型 0x05 代表端点描述符 (USB_DT_ENDPOINT)
                else if (type == 0x05) {
                    const usb_ep_desc_t *ep = (const usb_ep_desc_t *)p;
                    uint8_t ep_addr = ep->bEndpointAddress;
                    uint8_t ep_dir = ep_addr & 0x80; // 0x80 表示 IN (设备->ESP32),0x00 表示 OUT
                    
                    if (ep_dir) {
                        naobo->ep_in_addr = ep_addr;
                        naobo->ep_in_max_size = ep->wMaxPacketSize;
                        Serial.printf("Found IN Endpoint: 0x%02X, Max Size: %d", ep_addr, ep->wMaxPacketSize);
                    } else {
                        naobo->ep_out_addr = ep_addr;
                        Serial.printf("Found OUT Endpoint: 0x%02X", ep_addr);
                    }
                }

                // 指针跳到下一个描述符的起始位置
                p += len;
            }
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

  • 您可能感兴趣
  • USBTreeView
    USBTreeView
    Windows的设备管理器中可以查看USB设备的信息: 驱动程序供应商:FTDI, 数字签名者:
    05-23
  • 电子电路仿真网站
    电子电路仿真网站
    https://velxio.dev/ Arduino、ESP32 和 Raspberry Pi。 直接在您的浏览器中即可使
    05-19
  • ESP32 板子为什么识别为 CP2102
    ESP32 板子为什么识别为 CP2102
    你的ESP32开发板被电脑识别为“CP2102”,这并不是一个错误,而是完全正常的现象。这
    05-09
  • 固件如何加密
    固件如何加密
    做固件加密,本质上是防止别人读取或复制你的程序。常见做法分为“芯片级保护 + 软件
    04-06
  • 高端神经反馈脑波检测系统
    高端神经反馈脑波检测系统
    高端神经反馈脑波检测系统分为脑波检测、脑波分析、脑波解码三个部分。 前端主程序
    01-06
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则 返回列表

管理员给TA私信
以墨运商,以商助墨。

查看:6 | 回复:0

  • USBTreeView

    Windows的设备管理器中可以查看USB设备的信息: 驱动程序供应商:FTDI, 数字签名者:

    阅读:7|2026-05-23
  • 电子电路仿真网站

    https://velxio.dev/ Arduino、ESP32 和 Raspberry Pi。 直接在您的浏览器中即可使

    阅读:129|2026-05-19
  • ESP32 板子为什么识别为 CP2102

    你的ESP32开发板被电脑识别为“CP2102”,这并不是一个错误,而是完全正常的现象。这

    阅读:367|2026-05-09
  • 固件如何加密

    做固件加密,本质上是防止别人读取或复制你的程序。常见做法分为“芯片级保护 + 软件

    阅读:877|2026-04-06
  • 高端神经反馈脑波检测系统

    高端神经反馈脑波检测系统分为脑波检测、脑波分析、脑波解码三个部分。 前端主程序

    阅读:14|2026-01-06
  • 国内第三方量化平台有哪些有什么特点

    好的,我们来详细了解一下国内主流的第三方量化平台。这些平台极大地降低了个人投资者

    阅读:2836|2025-12-09
  • 为什么脑波要去除伪迹

    1. 伪迹不是大脑信号 EEG设备记录的是头皮上非常微弱的电位变化(微伏级别,μV)。

    阅读:15|2025-12-05
  • 便携可视化语音AI耳机

    项目起源: 初先生的聊天记录: 你那边掌握的技术,有办法做一个有摄像头的,墨者机

    阅读:1360|2025-12-01
  • 脑波峰值频率

    看看1-30Hz脑波功率曲线 发现15Hz之后的波动很小。 去掉15Hz之后的曲线 发现4Hz

    阅读:105|2025-11-28
  • 什么是基础节律

    🧠 一、什么是“基础节律”(Basic Rhythm) 基础节律 = 在闭眼静息状态下,大脑自发

    阅读:120|2025-11-27
金双石科技,软件开发20年,技术行业领先,您的满意,就是我们的目标,认真负责,开拓进取,让成品物超所值
关于我们
公司简介
发展历程
联系我们
本站站务
友情链接
新手指南
内容审核
商家合作
广告合作
商家入驻
新闻合作

手机APP

官方微博

官方微信

联系电话:15876572365 地址:深圳市宝安区西乡街道宝民二路宝民花园 ( 粤ICP备2021100124号-1 ) 邮箱:qishanxiaolu@qq.com
QQ|Powered by Discuz! X3.5 © 2001-2026 Discuz! Team.
快速回复 返回顶部 返回列表