逆向题(40)nss:3323

nss:3323

这个需要我们来去除花指令,基于常见花指令,我们直接就可以去除了

然后我们直接观看后面的函数,我们看出来这应该是一个对比函数,我们直接提取后面那个字符

image-20250218163726769

这函数里面就是取地址然后,一位一位的去比较,就是偏移。

​
​
unsigned char ida_chars[] =
​
{
​
  0xCD, 0x4D, 0x8C, 0x7D, 0xAD, 0x1E, 0xBE, 0x4A, 0x8A, 0x7D, 
​
  0xBC, 0x7C, 0xFC, 0x2E, 0x2A, 0x79, 0x9D, 0x6A, 0x1A, 0xCC, 
​
  0x3D, 0x4A, 0xF8, 0x3C, 0x79, 0x69, 0x39, 0xD9, 0xDD, 0x9D, 
​
  0xA9, 0x69, 0x4C, 0x8C, 0xDD, 0x59, 0xE9, 0xD7
​
};

那么我们现在需要求的就是v4这个的加密过程,然后反过来,我们就可以解决掉这个题了。

以下是第一个加密的内容,这个我也想了半天才解决

image-20250218165350334

记住,这里有个坑,他把a2的长度减一说明循环少了一个次,所以我们写代码要从36为开始倒着写。

image-20250218173107862

image-20250218173155004

最后这是我们的源代码

moectf{p4tch_pr0gr4m_t0_d3c0mpi1e_it!}

<think>好的,用户现在询问的是关于STM32CubeMX中如何配置SPI的Hardware NSS为Disable的问。之前我给出的配置步骤里提到过这个设置,但用户可能需要更详细的指导。首先,我需要回忆STM32的SPI配置,特别是NSS引脚的作用和配置选项。 用户可能是在实际配置时遇到了问,或者在按照之前的教程操作时对这一步不太确定。他们可能不太清楚NSS引脚的作用,或者为什么需要禁用硬件NSS。因此,我需要解释清楚NSS的作用,以及禁用后的影响。 首先,NSS(Slave Select)是SPI协议中用于选择从设备的信号。在硬件模式下,NSS由硬件自动管理,主模式下通常不需要使用,但某些情况下可能需要软件控制。禁用硬件NSS意味着用户需要手动控制片选信号,比如通过GPIO引脚来拉高或拉低CS引脚。 接下来,我需要详细说明在STM32CubeMX中的配置步骤。用户可能想知道在图形界面中如何找到这个选项,具体的位置在哪里,以及相关的参数设置。需要分步骤说明,从选择SPI1开始,到参数设置中的Hardware NSS选项,选择Disable,并确保正确分配GPIO作为软件控制的CS引脚。 同时,用户可能还关心为什么需要这样配置,比如使用软件控制CS的好处,或者硬件NSS可能带来的问。例如,当使用多个从设备时,硬件NSS可能不够灵活,需要软件控制每个设备的片选。 另外,用户可能在代码中看到CS引脚的定义,比如PA4作为GPIO输出,需要解释这部分代码是如何与SPI配置配合的。可能需要提到在初始化代码中如何设置GPIO,以及在数据传输时如何手动控制CS引脚的电平。 还要注意可能的常见错误,比如忘记配置GPIO引脚为输出模式,或者在代码中没有正确控制CS信号,导致SPI通信失败。这时候需要提醒用户在配置后检查GPIO的设置,并确保在传输数据前拉低CS,传输完成后拉高。 最后,用户可能需要一个完整的配置流程示例,结合之前的教程,确保每一步都正确无误。需要确认所有相关配置步骤,包括SPI模式、时钟极性、相位、数据大小等,都正确设置,并且和OLED屏幕的规格相符。 总结来说,用户需要明确的步骤来禁用硬件NSS,理解其背后的原因,以及如何在代码中正确使用软件控制的CS引脚。确保回答清晰,覆盖配置步骤、原理和常见问,帮助用户顺利完成配置。</think>在STM32CubeMX中配置SPI的**Hardware NSS为Disable**是开发中常见的关键操作,以下是详细配置流程及原理说明: --- ### **一、NSS信号的作用** NSS(Slave Select)是SPI协议中用于**选择从设备**的信号: - **硬件模式**:由SPI控制器自动管理片选信号 - **软件模式**:需手动控制GPIO电平实现片选 - **禁用场景**:当使用**多个从设备**或需要**灵活控制片选时序**时 --- ### **二、STM32CubeMX配置步骤** 1. **打开SPI1配置界面** - 左侧外设树找到 `Connectivity` → `SPI1` - 工作模式选择 `Full-Duplex Master` 2. **参数设置** ```plaintext Parameter Settings → Hardware NSS Signal → 选择 Disable ``` 3. **引脚验证** - 确认NSS引脚(默认PA4)已自动变为普通GPIO - 若需使用其他GPIO作为CS: - 在`Pinout View`中手动分配一个GPIO(如PA4) - 设置该GPIO为`GPIO_Output`模式 4. **配置示例(以PA4作为软件CS)** | 引脚 | 功能 | 模式 | |------|---------------|--------------------| | PA4 | GPIO_Output | 推挽输出/高速模式 | | PA5 | SPI1_SCK | Alternate Function | | PA7 | SPI1_MOSI | Alternate Function | --- ### **三、Keil代码实现** 在生成的代码中需手动控制CS信号: ```c // 宏定义简化操作(需根据实际引脚修改) #define OLED_CS_PIN GPIO_PIN_4 #define OLED_CS_PORT GPIOA // 传输数据时的典型操作流程 void SPI_SendData(uint8_t *data, uint16_t size) { HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_RESET); // 拉低CS HAL_SPI_Transmit(&hspi1, data, size, 100); // 传输数据 HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_SET); // 拉高CS } ``` --- ### **四、常见问排查** 1. **SPI无响应** - 检查GPIO时钟是否使能 - 验证CS引脚电平是否在传输期间保持低电平 - 用逻辑分析仪捕捉SCK/MOSI信号波形 2. **通信错位** - 确认SPI的CPOL/CPHA设置与从设备一致 - 检查数据大小设置(通常OLED使用8bit模式) 3. **性能优化** ```c // 使用寄存器直接操作可提高速度(示例代码) void Fast_CS_Control(uint8_t state) { if(state) OLED_CS_PORT->BSRR = OLED_CS_PIN; // 置高 else OLED_CS_PORT->BSRR = (uint32_t)OLED_CS_PIN << 16; // 置低 } ``` --- ### **五、硬件NSS与软件NSS对比** | 特性 | 硬件NSS | 软件NSS | |--------------------|--------------------------|--------------------------| | 控制方式 | 自动触发 | 手动GPIO操作 | | 多从机支持 | 需硬件支持多CS | 灵活扩展 | | 时序精度 | 精确到时钟周期 | 依赖代码执行速度 | | 典型应用场景 | 单一从设备 | OLED/多外设/自定义时序 | --- 通过以上配置,可确保SPI通信在**禁用硬件NSS**时仍能稳定工作。建议在首次配置时使用STM32CubeMX的`Clock Configuration`界面验证SPI时钟频率是否符合从设备要求(一般OLED屏支持0-10MHz范围)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值