当前位置: 首页 > news >正文

【0x0084】HCI_Set_Min_Encryption_Key_Size命令详解

目录

一、命令概述

二、命令格式及参数

2.1 HCI_Set_Min_Encryption_Key_Size命令格式

2.2. Min_Encryption_Key_Size

三、生成事件及参数

3.1. HCI_Command_Complete 事件

3.2. Status

四、命令的执行流程

4.1. 主机端准备阶段

4.2. 命令发送阶段

4.3. 控制器接收和解析阶段

4.4. 控制器验证和处理阶段

4.5. 状态反馈阶段

4.6. 主机接收和处理反馈阶段

4.7. 示例代码

五、应用场景

5.1. 安全敏感型应用场景

5.2. 设备访问控制场景

5.3. 多设备互联的安全场景

5.4. 综合应用与优化

六、注意事项

6.1. 参数设置

6.2. 命令执行

6.3. 系统稳定性和安全性

6.4. 其他注意事项


HCI_Set_Min_Encryption_Key_Size命令是蓝牙核心规范中定义的一个主机控制接口(Host Controller Interface, HCI)命令,它允许主机配置蓝牙控制器,以确保在后续通过基本速率/增强数据速率(BR/EDR)建立的连接中,使用的加密密钥大小不会小于指定的值。对于提高蓝牙通信的安全性具有重要意义。

一、命令概述

HCI_Set_Min_Encryption_Key_Size 命令用于配置最小加密密钥大小。其目的是确保控制器在后续的 BR/EDR 传输连接中不会协商小于此值的密钥大小。需要注意的是,此命令不会影响任何现有的连接,仅对后续连接起作用。

二、命令格式及参数

2.1 HCI_Set_Min_Encryption_Key_Size命令格式

HCI_Set_Min_Encryption_Key_Size命令包遵循蓝牙HCI的通用数据包格式。

通常包含以下几个部分:

  • 分组类型(Packet Type):1 字节,用于标识数据包的类型,对于命令包,有特定的类型值。
  • 参数总长度(Parameter Total Length):1字节,指示从该字节之后到数据包结束的字节数。
  • 操作码(Operation Code,OCF):2 字节。
    • OGF (Opcode Group Field): 操作码组字段,用于指示命令所属的功能组。对于HCI_Set_Min_Encryption_Key_Size命令,OGF的值为0x03,表示该命令属于链路控制命令组。

    • OCF (Opcode Command Field): 操作码命令字段,用于在指定的功能组内唯一标识一个命令。对于HCI_Set_Min_Encryption_Key_Size命令,OCF的值为0x0084

  • 命令参数(Command Parameter):即 Min_Encryption_Key_Size,其长度根据其数据类型而定。

2.2. Min_Encryption_Key_Size

Min_Encryption_Key_Size 用于指定蓝牙连接中的最小加密密钥大小,单位为字节(octets)。其取值会影响蓝牙连接的安全性和性能,并且要根据设备的支持情况和应用场景进行合理设置。

范围(Range):

  • 最小值:0x01,代表8位(1个字节)的密钥大小。
  • 最大值:0x10,代表128位(16个字节)的密钥大小。

默认值(Default): 默认值是由设备供应商决定的(vendor-specific)。不同的蓝牙设备供应商可能根据其设备的特性和安全策略设置不同的默认最小加密密钥大小。在实际应用中,如果没有明确设置 Min_Encryption_Key_Size 参数,控制器将使用这个默认值进行加密密钥的协商和使用。

不同的取值会影响蓝牙连接的安全性,较大的密钥大小通常提供更高的安全性,但可能会带来一定的性能开销,如加密和解密操作的时间和资源消耗。

三、生成事件及参数

3.1. HCI_Command_Complete 事件

HCI_Set_Min_Encryption_Key_Size命令执行完成后,会生成一个HCI_Command_Complete事件(除非该事件被屏蔽)。这是蓝牙HCI中标准的命令响应机制。

HCI_Command_Complete事件用于指示一个HCI命令已经成功执行完毕,并且返回了命令的结果。该事件包含以下关键信息:

  • 事件代码:用于标识这是一个HCI_Command_Complete事件。
  • 命令不透明度(Opcode):与已执行的命令相匹配的操作码(OGF和OCF的组合)。
  • 返回参数:包含命令执行的结果或状态。对于HCI_Set_Min_Encryption_Key_Size命令,返回参数将包括一个状态码,用于指示命令是否成功执行。
  • 状态码
    • 0x00:表示命令成功执行。
    • 其他值:表示命令执行失败,并提供了失败的具体原因(例如,不支持的特性或参数值)。

3.2. Status

Status 参数是 HCI_Set_Min_Encryption_Key_Size 命令执行结果的重要反馈,开发人员需要密切关注该状态码,根据不同的状态码进行相应的操作和错误处理,以确保蓝牙设备的安全和开发过程的顺利进行。

  • 0x00:表示HCI_Set_Min_Encryption_Key_Size命令成功执行。
  • 0x010xFF:表示命令执行失败,并提供了失败的具体原因。蓝牙Controller错误代码全面概览_蓝牙错误代码-CSDN博客

四、命令的执行流程

4.1. 主机端准备阶段

  • 确定最小加密密钥大小:主机根据安全需求和设备支持情况,在 0x01(8位)到 0x10(128位)范围内确定 Min_Encryption_Key_Size 的值。
  • 构建命令数据包
    • 设置分组类型为命令分组。
    • 计算参数总长度(操作码2字节 + 参数1字节 = 3字节)。
    • 设置操作码为 0x0084,标识 HCI_Set_Min_Encryption_Key_Size 命令。
    • 添加 Min_Encryption_Key_Size 参数。

4.2. 命令发送阶段

  • 主机通过蓝牙主机控制接口(HCI)和物理通信链路(如UART、USB)将命令数据包发送给蓝牙控制器。

4.3. 控制器接收和解析阶段

  • 蓝牙控制器接收数据包,并按照蓝牙协议解析出分组类型、参数总长度、操作码和 Min_Encryption_Key_Size 参数。

4.4. 控制器验证和处理阶段

  • 参数验证:检查 Min_Encryption_Key_Size 是否在 0x01 到 0x10 范围内。
  • 功能支持检查:确认控制器是否支持指定的最小加密密钥大小。
  • 执行设置操作:若验证通过,控制器将设置新的最小加密密钥大小,仅对后续连接生效。

4.5. 状态反馈阶段

  • 控制器根据命令执行情况生成状态码(0x00 表示成功,0x01 - 0xFF 表示失败)。
  • 控制器通过通信链路发送包含状态码的 HCI_Command_Complete 事件回主机。

4.6. 主机接收和处理反馈阶段

  • 主机接收 HCI_Command_Complete 事件。
  • 主机根据状态码判断命令是否成功执行。
    • 若成功(0x00),主机可以继续进行后续操作,如发起新的蓝牙连接。
    • 若失败(0x01 - 0xFF),主机根据错误码进行错误处理,可能包括调整 Min_Encryption_Key_Size 值并重新发送命令。

4.7. 示例代码

以下是一个简化的C语言代码示例,用于展示如何执行HCI_Set_Min_Encryption_Key_Size命令。请注意,这个示例是为了教学目的而编写的,并未包含所有可能的错误处理和完整的蓝牙协议栈实现。

#include <stdint.h>
#include <stdio.h>
#include <string.h>// 假设这是与蓝牙控制器通信的函数原型
extern int send_hci_command(uint8_t *packet, uint16_t length);
extern int receive_hci_event(uint8_t *event, uint16_t *length);// 定义HCI命令操作码
#define HCI_SET_MIN_ENCRYPTION_KEY_SIZE_OPCODE 0x0084// 定义状态码
#define HCI_SUCCESS 0x00// 发送HCI_Set_Min_Encryption_Key_Size命令的函数
int set_min_encryption_key_size(uint8_t min_key_size) {// 检查min_key_size是否在有效范围内if (min_key_size < 0x01 || min_key_size > 0x10) {printf("Error: Min_Encryption_Key_Size out of range.\n");return -1;}// 构建HCI命令数据包uint8_t packet[4]; // 操作码2字节 + 参数1字节 + 参数长度1字节(但这里我们直接写死为3,因为参数长度固定)packet[0] = (HCI_SET_MIN_ENCRYPTION_KEY_SIZE_OPCODE & 0xFF00) >> 8; // 操作码高字节packet[1] = HCI_SET_MIN_ENCRYPTION_KEY_SIZE_OPCODE & 0x00FF;       // 操作码低字节packet[2] = 0x03; // 参数总长度(包括操作码和参数)这里我们实际上不需要这个字段,但为了完整性还是加上packet[3] = min_key_size; // Min_Encryption_Key_Size参数// 发送HCI命令数据包给蓝牙控制器if (send_hci_command(packet, sizeof(packet)) < 0) {printf("Error: Failed to send HCI command.\n");return -1;}// 接收HCI_Command_Complete事件uint8_t event[256]; // 假设事件缓冲区足够大uint16_t length;if (receive_hci_event(event, &length) < 0) {printf("Error: Failed to receive HCI event.\n");return -1;}// 解析HCI_Command_Complete事件if (length < 4) { // 最小长度应包括事件代码、参数总长度、状态码printf("Error: HCI event too short.\n");return -1;}uint8_t event_code = event[0];uint8_t param_length = event[1];uint8_t status = event[2];// 检查事件代码是否为HCI_Command_Completeif (event_code != 0x0E) {printf("Error: Unexpected HCI event code.\n");return -1;}// 检查状态码if (status != HCI_SUCCESS) {printf("Error: HCI command failed with status code 0x%02X.\n", status);return -1;}printf("Success: HCI_Set_Min_Encryption_Key_Size command executed successfully.\n");return 0;
}int main() {// 示例:设置最小加密密钥大小为16位(0x02)uint8_t min_key_size = 0x02;if (set_min_encryption_key_size(min_key_size) == 0) {printf("Minimum encryption key size set to %d bits.\n", min_key_size * 8);} else {printf("Failed to set minimum encryption key size.\n");}return 0;
}

五、应用场景

以下是该命令在不同应用场景中的详细梳理。

5.1. 安全敏感型应用场景

  • 金融交易应用
    • 场景描述:移动支付、手机银行等蓝牙连接的金融交易场景。
    • 应用需求:增强数据传输的安全性,防止支付信息在传输过程中被窃取或篡改。
    • 解决方案:设置较大的最小加密密钥大小(如0x08-0x10字节),确保支付信息的安全传输。
  • 医疗设备数据传输
    • 场景描述:医疗物联网环境中,蓝牙连接的可穿戴健康监测设备与医疗数据管理系统之间的数据传输。
    • 应用需求:保护个人健康数据的隐私和完整性。
    • 解决方案:设置合适的最小加密密钥大小(如0x08字节左右),确保医疗数据的保密性和完整性。
  • 企业级数据共享与同步
    • 场景描述:企业内部通过蓝牙技术实现文件共享、设备同步等操作。
    • 应用需求:保护企业敏感信息,防止数据泄露给竞争对手或外部恶意攻击者。
    • 解决方案:设置较大的最小加密密钥大小,确保数据传输的加密强度。

5.2. 设备访问控制场景

  • 智能家居系统访问控制
    • 场景描述:智能家居环境中,用户通过蓝牙连接控制各种智能设备。
    • 应用需求:限制未经授权的设备访问智能家居网络,保障家庭安全和隐私。
    • 解决方案:设置合适的最小加密密钥大小,确保只有经过授权的设备能够访问智能家居网络。
  • 工业物联网设备管理
    • 场景描述:工业自动化场景中,通过蓝牙连接的工业设备的管理。
    • 应用需求:实现设备访问的权限管理,防止未经授权的访问和误操作。
    • 解决方案:设置最小加密密钥大小,确保只有具有正确加密密钥的管理设备才能对工业设备进行配置和操作。

5.3. 多设备互联的安全场景

  • 蓝牙音频设备连接
    • 场景描述:蓝牙音箱、蓝牙耳机等音频设备与音频源(如手机、电脑)的连接。
    • 应用需求:保护音频内容的隐私,避免被附近设备窃听。
    • 解决方案:设置合适的最小加密密钥大小,为音频传输提供一定程度的加密保护。
  • 蓝牙游戏手柄连接
    • 场景描述:蓝牙游戏手柄与游戏主机或移动设备的连接。
    • 应用需求:防止游戏操作数据被篡改,影响游戏公平性或用户体验。
    • 解决方案:设置加密密钥大小,确保游戏手柄与设备之间的连接安全。

5.4. 综合应用与优化

  • 提高蓝牙通信的安全性:通过设置最小加密密钥大小,确保蓝牙设备间连接使用的加密密钥强度满足特定的安全要求。
  • 适配不同安全级别的需求:根据具体的安全需求,灵活设置最小加密密钥大小,以平衡安全性和性能。
  • 优化蓝牙设备的性能:在设置最小加密密钥大小时,权衡安全性和性能之间的关系,选择合适的密钥大小以优化蓝牙设备的性能。
  • 应对潜在的安全威胁:通过设置最小加密密钥大小,增强蓝牙设备对潜在安全威胁的抵御能力,并符合相关的安全标准和法规要求。

六、注意事项

在使用HCI_Set_Min_Encryption_Key_Size命令时,为了确保蓝牙通信的安全性和可靠性,需要注意以下几个方面。

6.1. 参数设置

  • 取值范围:确保Min_Encryption_Key_Size的取值在0x010x10字节之间,超出此范围可能导致命令执行失败。
  • 设备支持:考虑蓝牙控制器是否支持所设置的最小加密密钥大小,避免因设备不支持而返回错误。
  • 安全性与性能:在设置密钥大小时,要权衡安全性和性能,确保在提供足够安全保障的同时,不影响设备的正常运行。

6.2. 命令执行

  • 控制器支持:在执行命令前,确认蓝牙控制器支持该命令,避免因设备型号或固件版本差异导致的不支持。
  • 检查执行结果:仔细检查返回的HCI_Command_Complete事件中的状态码,对失败情况进行错误处理,如调整参数后重新发送命令、记录错误信息或向用户报告错误。

6.3. 系统稳定性和安全性

  • 不影响现有连接HCI_Set_Min_Encryption_Key_Size命令只对新建立的连接起作用,如需对所有连接采用新密钥大小,需先断开现有连接再重新连接。
  • 系统整体安全策略:将该命令作为蓝牙安全策略的一部分,与其他安全措施配合,构建完整的蓝牙安全体系。

6.4. 其他注意事项

  • 错误处理与日志记录:做好错误处理和日志记录工作,以便及时分析和处理异常情况。
  • 遵循安全标准与法规:在设置密钥大小时,遵循相关安全标准和法规要求,确保蓝牙通信的加密强度符合规定。
  • 密钥更新与管理:关注密钥的更新和管理问题,通过定期更新密钥和管理密钥的生命周期,提高蓝牙通信的安全性和可靠性。

综上所述,HCI_Set_Min_Encryption_Key_Size命令是蓝牙设备安全管理中的一个重要工具,允许主机配置蓝牙控制器以确保后续连接的安全性。通过正确设置最小加密密钥大小,可以增强蓝牙设备的安全性,保护数据传输不受未经授权的访问。

相关文章:

【0x0084】HCI_Set_Min_Encryption_Key_Size命令详解

目录 一、命令概述 二、命令格式及参数 2.1 HCI_Set_Min_Encryption_Key_Size命令格式 2.2. Min_Encryption_Key_Size 三、生成事件及参数 3.1. HCI_Command_Complete 事件 3.2. Status 四、命令的执行流程 4.1. 主机端准备阶段 4.2. 命令发送阶段 4.3. 控制器接收和…...

关于2025年智能化招聘管理系统平台发展趋势

2025年&#xff0c;招聘管理领域正站在变革的十字路口&#xff0c;全新的技术浪潮与不断变化的职场生态相互碰撞&#xff0c;促使招聘管理系统成为重塑企业人才战略的关键力量。智能化招聘管理系统平台在这一背景下迅速崛起&#xff0c;其发展趋势不仅影响企业的招聘效率与质量…...

Docker部署Spring Boot + Vue项目

目录 前提条件 概述 下载代码 打开代码 Docker创建网络 MySQL容器准备 MySQL数据库配置 启动MySQL容器 测试连接MySQL 初始化MySQL数据 Redis容器准备 修改Redis配置 启动redis容器 部署后端 后端代码打包 上传jar包到Linux 创建Dockerfile 构建镜像 运行后…...

开发规范

开发规范 企业项目开发有2种开发模式&#xff1a;前后台混合开发和前后台分离开发。 前后台混合开发 顾名思义就是前台后台代码混在一起开发&#xff0c;如下图所示&#xff1a; 这种开发模式有如下缺点&#xff1a; 沟通成本高&#xff1a;后台人员发现前端有问题&#xf…...

九 RK3568 android11 MPU6500

一 MPU6500 内核驱动 1.1 查询设备连接地址 查看原理图, MPU6500 I2C 连接在 I2C4 上, 且中断没有使用 i2c 探测设备地址为 0x68 1.2 驱动源码 drivers/input/sensors/gyro/mpu6500_gyro.c drivers/input/sensors/accel/mpu6500_acc.c 默认 .config 配置编译了 mpu6550 …...

openplant实时数据库(二次开发)

资源地址 我的网盘〉软件>数据库>openplant>openplant实时数据库(二次开发)...

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析&#xff1a; 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数&#xff0c;使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…...

“AI智慧化服务系统:未来生活的智能管家

在当今快速发展的科技时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的生活。AI智慧化服务系统作为这一变革的前沿技术&#xff0c;正在逐渐成为我们未来生活的智能管家。它们不仅提高了服务效率&#xff0c;还为我们带来了更加个性化和便捷…...

python管理工具:conda部署+使用

python管理工具&#xff1a;conda部署使用 一、安装部署 1、 下载 - 官网下载&#xff1a; https://repo.anaconda.com/archive/index.html - wget方式&#xff1a; wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh2、 安装 在conda文件的…...

minio https配置

minio启动时候指定数据目录,配置文件&#xff0c;密钥文件目录&#xff0c;环境文件 1.创建minio用户,专门用于服务启动的 groupadd -r minio-user useradd -M -r -g minio-user minio-user 2.在当前用户目录下创建minio目录&#xff0c;存储minio相关文件 mkdir minio 在mini…...

SpringMVC——原理简介

狂神SSM笔记 DispatcherServlet——SpringMVC 的核心 SpringMVC 围绕DispatcherServlet设计。 DispatcherServlet的作用是将请求分发到不同的处理器&#xff08;即不同的Servlet&#xff09;。根据请求的url&#xff0c;分配到对应的Servlet接口。 当发起请求时被前置的控制…...

Ubuntu18.04 解决 libc.so.6: version `GLIBC_2.28‘ not found

Glibc&#xff08;GNU C Library&#xff09;是 GNU 系统及其衍生系统如 Linux 操作系统中实现 C 语言标准库的核心组件。升级 Glibc 是一个非常谨慎的操作&#xff0c;因为它与系统的许多关键功能和服务密切相关。Ubuntu 18.04 默认安装的 Glibc 版本为 2.27&#xff0c;但某些…...

Notepad++移除所有空格

1.打开Notepad。 2.打开你想要编辑的文件。 3.按下 Ctrl H 打开查找和替换对话框&#xff0c;并选择 “正则表达式”。 4.在 “查找目标” 框中输入 \s。 5.在 “替换为” 框中留空&#xff0c;不填写任何内容。 6.点击 “全部替换” 按钮。...

Android BottomNavigationView不加icon使text垂直居中,完美解决。

这个问题网上千篇一律的设置iconsize为0&#xff0c;labale固定什么的&#xff0c;都没有效果。我的这个基本上所有人用都会有效果。 问题解决之前的效果&#xff1a;垂直方向&#xff0c;文本不居中&#xff0c;看着很难受 问题解决之后&#xff1a;舒服多了 其实很简单&…...

如何使用 `forEach` 遍历数组?

数组遍历相关问题&#xff1a;如何使用 forEach 遍历数组&#xff1f; 在 JavaScript 中&#xff0c;遍历数组是一个常见且必要的操作。数组提供了多种方法来进行遍历&#xff0c;其中 forEach 是一种非常方便且常用的方法。它可以轻松地对数组中的每个元素执行回调函数。理解…...

Go语言之路————条件控制:if、for、switch

Go语言之路————if、for、switch 前言ifforswitchgoto和label 前言 我是一名多年Java开发人员&#xff0c;因为工作需要现在要学习go语言&#xff0c;Go语言之路是一个系列&#xff0c;记录着我从0开始接触Go&#xff0c;到后面能正常完成工作上的业务开发的过程&#xff0…...

OpenAI推出首个AI Agent!日常事项自动化处理!

2025 年1月15日&#xff0c;OpenAI 正式宣布推出一项名为Tasks的测试版功能 。 该功能可以根据你的需求内容和时间实现自动化处理。比方说&#xff0c;你可以设置每天早晨 7 点获取天气预报&#xff0c;或定时提醒遛狗等日常事项。 看到这里&#xff0c;有没有一种熟悉的感觉&a…...

Go语言的编程范式

Go语言的编程范式 引言 Go语言&#xff0c;又称为Golang&#xff0c;由Google于2007年开发并于2009年开放源代码。Go语言被设计成一种简洁、高效且适用于多核计算和网络编程的语言。其独特的并发模型、静态类型系统以及高效的性能&#xff0c;使其在现代软件开发中逐渐获得了…...

如何在 Rocky Linux 上安装极狐GitLab?

本文分享如何在 Rocky Linux 操作系统上安装极狐GitLab。 相关资料 极狐GitLab 在各种操作系统下的安装指南官网文档 前提条件 一个安装了 Rocky Linux 操作系统的云服务器 可以查看 /etc/os-release 中的信息&#xff0c;确认操作系统信息&#xff1a; NAME"Rocky …...

数据库(MySQL)练习

数据库&#xff08;MySQL&#xff09;练习 一、练习1.15练习1.16练习 二、注意事项2.1 第四天 一、练习 1.15练习 win11安装配置MySQL超详细教程: https://baijiahao.baidu.com/s?id1786910666566008458&wfrspider&forpc 准备工作&#xff1a; mysql -uroot -p #以…...

Mac上安装Label Studio

在Mac上安装Anaconda并随后安装Label Studio&#xff0c;可以按照以下步骤进行&#xff1a; 1. 在Mac上安装Anaconda 首先&#xff0c;你需要从Anaconda的官方网站下载适用于Mac的安装程序。访问Anaconda官网&#xff0c;点击“Download Anaconda”按钮&#xff0c;选择适合M…...

【airtest】自动化入门教程Poco元素定位

1. 前言 本文将详细讲解Poco控件定位的各种方式&#xff0c;利用这些方法可以帮助我们编写出目标控件的定位脚本。我们在IDE录制的poco脚本&#xff0c;常见的都是类似 poco(“star_single”).click()这样的脚本&#xff0c;其中 poco(“star_single”) 这块就属于Poco控件定位…...

【爬虫】某某查cookie逆向

代码仅供技术人员进行学习和研究使用&#xff0c;请勿将其用于非法用途或以任何方式窃取第三方数据。使用该代码产生的所有风险均由用户自行承担&#xff0c;作者不对用户因使用该代码而造成的任何损失或损害承担任何责任。 加密参数 加密参数主要是cookie&#xff0c;其中只有…...

【进程与线程】进程的状态

在操作系统中&#xff0c;进程是执行中的程序实例。进程在其生命周期中会经历不同的状态&#xff0c;操作系统根据进程的执行情况和资源调度&#xff0c;将进程划分为多个状态。 这些状态帮助操作系统更加高效地管理 CPU 和系统资源。 进程的状态&#xff1a;就绪态&#xff0…...

阻塞赋值和非阻塞赋值

理论学习 阻塞赋值 用 表示 &#xff0c;这种对应的电路结构常常与触发器没有关系&#xff0c;只与输入电平的变化有关系。可以将阻塞赋值的操作看作只有一个步骤的操作&#xff0c;即将计算赋值符号的右边赋值给左边&#xff0c;在未执行完之前&#…...

Maven在Win10上的安装教程

诸神缄默不语-个人CSDN博文目录 这个文件可以跟我要&#xff0c;也可以从官网下载&#xff1a; 第一步&#xff1a;解压文件 第二步&#xff1a;设置环境变量 在系统变量处点击新建&#xff0c;输入变量名MAVEN_HOME&#xff0c;变量值为解压路径&#xff1a; 在系统变…...

攻防世界_SQL注入

inget 尝试万能钥匙。 输入?id1or11# supersqli 1.找注入点 输入框 2.判断字符型&#xff0c;数字型 输入1 and 11 和1 and 12&#xff0c;发现两次提交后页面一样&#xff0c;判断出为字符型注入 3.判断闭合符号 输入1&#xff0c;回显正常 输入1&#xff0c;报错 加上…...

Ruby语言的数据结构

Ruby语言的数据结构详解 Ruby是一种动态、面向对象的编程语言&#xff0c;因其简洁优雅的语法而受到开发者的喜爱。在Ruby中&#xff0c;数据结构是构建和管理数据的一种方式&#xff0c;不同的数据结构适用于不同的场景。本文将详细探讨Ruby中的几种主要数据结构&#xff0c;…...

Jmeter配置服务代理器 Proxy(二)

1.创建脚本记录器 2.配置&#xff1a;Jmeter代理、端口、记录目标等 3.配置谷歌浏览器代理 浏览器配置代理的详细教程可参考&#xff1a;使用whistle代理-CSDN博客 4.启动Jmeter记录器 点击ok后弹出这个界面&#xff0c;生成了证书&#xff1a; 5.给浏览器安装Jmeter代理的证书…...

Spring Boot 中实现 WebSocket 的方式

在 Spring Boot 中实现 WebSocket 的方式主要有以下几种,每种方式适用于不同的场景和需求: 1. 基于 Spring WebSocket 的实现 特点: 原生支持 WebSocket,基于 Spring 提供的 API。使用 WebSocketConfigurer 和 WebSocketHandler 配置端点和消息处理逻辑。可以通过拦截器访…...

php+mysql网站开发全程实例.pdf/营销型网站建设模板

首先我们需要了解字符串截取函数&#xff1a;left(), right(), substring(), substring_index()。还有 mid(), substr()。其中&#xff0c;mid(), substr() 等价于 substring() 函数&#xff0c;substring() 的功能非常强大和灵活。(免费学习视频教程推荐&#xff1a;mysql视频…...

建设旅游网站的价值/网站维护一般都是维护什么

近期项目发现&#xff0c;在使用release发布项目包&#xff0c;图片找不到了&#xff0c;而debug下面又有图片。 后来发现&#xff0c;原来图片被另外一个组件嵌入了。 下面例子展示了组件嵌入和不嵌入图片的区别 <?xml version”1.0″ encoding”utf-8″?> <s:Appl…...

做淘客网站用什么服务器好/关键词搜索工具有哪些

什么是HTML?HTML 是用来描述网页的一种语言。HTML 指的是超文本标记语言: HyperText Markup LanguageHTML 不是一种编程语言&#xff0c;而是一种标记语言标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页HTML 文档包含了HTML标签及文本内容HTML文档也叫做web…...

怎样做影视网站/站长论坛

一前言 本来使用qq邮箱发送邮件&#xff0c;然后借助sendEmail来发送邮件告警&#xff0c;但是有每天的200封限制&#xff0c;很是不爽&#xff0c;于是想到来自己搭建邮件服务器来解决这个问题&#xff0c;关于使用sendEmail来借助qq邮箱来发送邮件详见http://www.cnblogs.com…...

租车网站建设/营销的方法和技巧

目录 0. 相关文章链接 1. 导包出错 2. 输入参数 3. java.lang.Exception: java.io.IOException: Illegal partition for 13926435656 (4) 4. 是否执行分区过程 5. windows和Linux环境冲突 6. 找不到文件异常 7. 报类型转换异常 8. 集群中运行wc.jar时出现了无法获得输…...

html5手机网站发布/网络营销招聘岗位有哪些

SVN分支与合并 一、 分支与合并的概念 二、 SVN分支的意义 三、 如何创建分支与合并分支 一、分支与合并的概念&#xff1a; 分支&#xff1a;版本控制系统的一个特性是能够把各种修改分离出来放在开发品的一个分割线上。这条线被称为分支。分支经常被用来试验新的特性&#xf…...