Bluetooth Device Address(BD_ADDR) - 2

news2024/11/18 18:33:55

蓝牙核心规范:Core v5.3中关于蓝牙地址的其他说明

Vol 3: Host, Part C: Generic Access Profile

3 User interface aspects

3.2 Representation of Bluetooth parameters

3.2.1 Bluetooth Device Address (BD_ADDR)

BD_ADDR 是蓝牙设备使用的地址。在设备发现过程中,从远程设备接收到这个信息。

  • 用户界面层面的术语

在用户界面层面提及蓝牙地址时,应使用"Bluetooth Device Address"这一术语。

  • 表示法

在基带层,BD_ADDR 表示为 48 位。在链路层,公共地址和随机设备地址用 48 位地址表示。

在用户界面层,蓝牙地址应表示为 12 个十六进制字符,可分为以": "分隔的子部分(如 "000C3E3A4B69 "或 "00:0C:3E:3A:4B:69")。在用户界面层面,任何数字都应具有 MSB -> LSB(从左到右)的 "自然 "排序。

我们看到的蓝牙地址字符串,如果是公共地址的话,前面的是高位,是公司组织的ID,后面是低位,是各个产品分配不同的ID。

但在数据传输中,是小端传送。比如在Out of band的配对模式中,将蓝牙地址放在NFC tag中,这时存放的地址数据,就是低地址存放低位的地址信息。

在程序中存储蓝牙地址的结构体,也是小端存储的。

A BD_ADDR is the address used by a Bluetooth device as defined in Section 15.1. It is received from a remote device during the device discovery procedure.

Term on user interface level

When the Bluetooth address is referred to on the UI level, the term ‘Bluetooth Device Address’ should be used.

Representation

On the Baseband level the BD_ADDR is represented as 48 bits (see [Vol 2] Part B, Section 1.2). On the Link Layer the public and random device address are represented as 48-bit addresses.

On the UI level the Bluetooth address shall be represented as 12 hexadecimal characters, possibly divided into sub-parts separated by ‘:’ (e.g., ‘000C3E3A4B69’ or ‘00:0C:3E:3A:4B:69’). On the UI level any number shall have the MSB -> LSB (from left to right) ‘natural’ ordering.

Vol 3: Host, Part C: Generic Access Profile

15 Bluetooth Device requirements

15.1 Bluetooth Device Address

所有蓝牙设备都必须有一个蓝牙设备地址 (BD_ADDR),该地址可唯一地标识该设备,同其他蓝牙设备区分开。具体的蓝牙设备地址要求取决于蓝牙设备的类型。[ All Bluetooth devices shall have a Bluetooth Device Address (BD_ADDR) that uniquely identifies the device to another Bluetooth device. The specific Bluetooth Device Address requirements depend on the type of Bluetooth device. ]

  • 蓝牙地址类型 [Bluetooth Device Address types]

    • 公用地址类型 [ Public Bluetooth address ]

用作 BR/EDR 物理信道 BD_ADDR 的蓝牙公共地址在前面进行了说明。用作 LE 物理信道 BD_ADDR 的蓝牙公共地址有另外的定义,除了公共地址外,还有随机蓝牙地址。 [ A Bluetooth public address used as the BD_ADDR for the BR/EDR physical channel is defined in [Vol 2] Part B, Section 1.2. A Bluetooth public address used as the BD_ADDR for the LE physical channel is defined in [Vol 6] Part B, Section 1.3. ]

    • 随机蓝牙地址 [ Random Bluetooth address ]

LE 物理通道上可以使用随机设备地址用作BD_ADDR。[ A random device address used as the BD_ADDR on the LE physical channel is defined in Section 10.8. ]

Vol 3: Host, Part C: Generic Access Profile

10 Security aspects – LE physical transport

10.8 Random Device Address

根据在GAP中的用途,随机设备地址可以是以下两种子类型中的一种:

- 静态地址

- 私有地址

术语 "随机设备地址"包含静态地址类型和私有地址类型。

随机设备地址的传输是可选的。设备应接受远程设备对随机设备地址的接收处理。

私有地址可以是以下两种子类型中的一种:

- 不可解析私有地址

- 可解析的私有地址

For the purposes of this profile, the random device address may be of either of the following two sub-types:

• Static address

• Private address.

The term random device address refers to both static and private address types.

The transmission of a random device address is optional. A device shall accept the reception of a random device address from a remote device.

The private address may be of either of the following two sub-types:

• Non-resolvable private address

• Resolvable private address

绑定过的设备应能处理可解析的私有地址,或者使用可解析私有地址来创建连接,然后进行接下来的蓝牙连接的身份认证过程。如果双方设备都是可绑定的,某设备为其本地地址生成一个可解析的私有地址,需要向对等设备分发其IRK值。如果已经分发了就不再需要了。

设备分发 IRK 后,在与已分发 IRK 的对等设备建立连接时,应使用可解析私有地址。

A bonded device shall process a resolvable private address as defined in Section 10.8.2.3 or by establishing a connection and then performing the authentication procedure as defined in Section 10.3. A device that generates a resolvable private address for its local address shall always request to distribute its IRK value as defined in [Vol 3] Part H, Section 3.6.4 if both sides are bondable, unless keys have been pre-distributed.

After a device has distributed its IRK, it should use resolvable private addresses when establishing a connection with a peer device to which the IRK has been distributed.

  • Static address [静态地址]

主机可以按照一定程序生成静态地址。

The Host can generate a static address using the procedure described in [Vol 6] Part B, Section 1.3.2.1.

  • Private address (私有地址)

私有地址有以下两类:[ The private address may be either of the following two sub-types: ]

• Non-resolvable private address

• Resolvable private address

  • Non-Resolvable Private Address Generation procedure (不可解析的私有地址的生成过程)

主机可以按照一定程序生成不可解析的私有地址。

The Host can generate a non resolvable private address using the procedure described in [Vol 6] Part B, Section 1.3.2.2.

  • Resolvable Private Address Generation procedure ( 可解析私有地址的生成过程 )

主机可以按照一定程序生成一个可解析的私有地址,在这个过程中使用了主机自己的IRK。

The Host can generate a resolvable private address where the Host has its IRK using the procedure described in [Vol 6] Part B, Section 1.3.2.2.

  • Resolvable Private Address Resolution procedure (可解析私有地址的解析过程)

主机可以按照一定程序,在主机拥有对等设备 IRK 或本地设备 IRK 的情况下,解析可解析的私有地址。

The Host can resolve a resolvable private address where the Host has the peer device’s IRK or the local device's IRK, using the procedure described in [Vol 6] Part B, Section 1.3.2.3.

Vol 6: Low Energy Controller, Part B: Link Layer Specification (Section 1.3)

1 General description

1.3 Device address

设备使用设备地址和地址类型进行识别;地址类型包括公共设备地址和随机设备地址。公共设备地址和随机设备地址的长度都是 48 位。

Devices are identified using a device address and an address type; the address type indicates either a public device address or a random device address. A public device address and a random device address are both 48 bits in length.

设备应至少使用一种设备地址,也可同时使用两种设备地址。

A device shall use at least one type of device address and may contain both.

设备的身份地址是公共设备地址或随机静态设备地址,在传输的数据包中使用。如果设备使用 "可解析私有地址",它也应有一个 "身份地址"。

A device's Identity Address is a Public Device Address or Random Static Device Address that it uses in packets it transmits. If a device is using Resolvable Private Addresses, it shall also have an Identity Address.

在比较两个设备地址时,比较应包括设备地址类型(即如果两个地址的类型不同,即使两个 48 位地址相同,也是不同的)。

Whenever two device addresses are compared, the comparison shall include the device address type (i.e. if the two addresses have different types, they are different even if the two 48-bit addresses are the same).

  • Public device address [ 公共设备地址 ]

公共设备地址应根据 [Vol 2] B 部分第 1.2 节创建。如果此公共设备地址将用作 BR/EDR 控制器的 BD_ADR,则LAP 值需要按照规则来设定,否则LAP可以自由设定。

The public device address shall be created in accordance with [Vol 2] Part B, Section 1.2, with the exception that the restriction on LAP values does not apply unless the public device address will also be used as a BD_ADDR for a BR/EDR Controller.

  • Random device address [ 随机设备地址 ]

随机地址包括静态地址和私有地址。

The random device address may be of either of the following:

• Static address

• Private address.

随机地址的子类型,由最高两位地址表示,如下表:

The specific sub-type is indicated by the two most significant bits of the random device address as shown in Table 1.2.

Address [47:46]

Sub-Type

0b00

Non-resolvable private address

0b01

Resolvable private address

0b10

Reserved for future use

0b11

Static device address

Table 1.2: Sub-types of random device addresses

  • Static device address [ 静态设备地址 ]

静态地址是随机生成的 48 位地址,应符合以下要求:

- 地址随机部分的至少一位应为 0

- 地址随机部分的至少一位应为 1

A static address is a 48-bit randomly generated address and shall meet the following requirements:

• At least one bit of the random part of the address shall be 0

• At least one bit of the random part of the address shall be 1

静态地址的格式如下图所示:

设备可选择在每次电源上电后将其静态地址初始化为新值。设备一旦初始化,在设备电源重新之前不得更改其静态地址值。

注意:如果设备的静态地址被更改,则对等设备中存储的地址将失效,并且将无法使用旧地址重新连接。

A device may choose to initialize its static address to a new value after each power cycle. A device shall not change its static address value once initialized until the device is power cycled.

Note: If the static address of a device is changed, then the address stored in peer devices will not be valid and the ability to reconnect using the old address will be lost.

  • Private device address generation [ 私有地址生成 ]

私有地址有两类,不可解析私有地址和可解析私有地址。

The private address may be of either of the following two sub-types:

• Non-resolvable private address

• Resolvable private address

要生成不可解析地址,设备应生成一个 48 位地址,并满足以下要求:

- 地址随机部分的至少一位必须为 1

- 地址随机部分的至少一位必须为 0

- 地址不得等于公共地址

To generate a non-resolvable address, the device shall generate a 48-bit address with the following requirements:

• At least one bit of the random part of the address shall be 1

• At least one bit of the random part of the address shall be 0

• The address shall not be equal to the public address

不可解析私有地址如下图:

要生成可解析私有地址,设备必须拥有本地身份解析密钥(IRK - Local Identity Resolving Key)或对等设备的身份解析密钥(IRK)。可解析私有地址应使用 IRK 和随机生成的 24 位数字生成。随机数称为 prand,应符合以下要求:

- prand 随机部分的至少一位应为 0

- prand 随机部分的至少一位应为 1

To generate a resolvable private address, the device must have either the Local Identity Resolving Key (IRK) or the Peer Identity Resolving Key (IRK). The resolvable private address shall be generated with the IRK and a randomly generated 24-bit number. The random number is known as prand and shall meet the following requirements:

• At least one bit of the random part of prand shall be 0

• At least one bit of the random part of prand shall be 1

可解析私有地址的格式如下图:

哈希值使用 [Vol 3] H 部分第 2.2.2 节定义的随机地址函数 ah 生成,输入参数 k 设为设备的 IRK,输入参数 r 设为 prand。

hash = ah(IRK, prand)

将 prand 和 hash 连接起来,按以下方式生成随机地址(randomAddress):

randomAddress = prand || hash

The hash is generated using the random address function ah defined in [Vol 3] Part H, Section 2.2.2 with the input parameter k set to the device’s IRK and the input parameter r set to prand.

hash = ah(IRK, prand)

The prand and hash are concatenated to generate the random address (randomAddress) in the following manner:

randomAddress = prand || hash

哈希值的最小有效八位字节变为随机地址的最小有效八位字节,prand 值的最大有效八位字节变为随机地址的最大有效八位字节。

The least significant octet of hash becomes the least significant octet of randomAddress and the most significant octet of prand becomes the most significant octet of randomAddress.

  • Private device address resolution [ 私有地址的解析 ]

如果相应设备的 IRK 可用,则可使用此程序解析可解析的私有地址。如果解析了可解析私有地址,设备就可以将该地址与对等设备关联起来。

可解析私有地址 (RPA - resolvable private address) 分为 24 位随机部分 (prand) 和 24 位散列部分 (hash)。RPA 的最小有效八位字节成为哈希值的最小有效八位字节,RPA 的最大有效八位字节成为 prand 的最大有效八位字节。然后使用 [Vol 3] H 部分第 2.2.2 节定义的随机地址哈希函数 ah 生成本地哈希值,输入参数 k 设为已知设备的 IRK,输入参数 r 设为从 RPA 提取的 prand 值。

localHash = ah(IRK, prand)

然后将本地哈希值与从 RPA 提取的哈希值进行比较。如果本地哈希值与提取的哈希值相匹配,则对等设备的身份已被解析。

如果设备有多个已存储的 IRK,则设备会对每个已存储的 IRK 重复上述过程,以确定接收到的可解析私有地址是否与已存储的 IRK 相关联,直到其中一个 IRK 的地址解析成功或所有IRK 都已尝试过而未解析成功。

注意:在 T_IFS 内无法解析专用地址的设备可能会在接收到下一个事件时作出响应。

[ T_IFS: Time Inter Frame Space. Time interval between consecutive packets on same channel index]

无法解析的私有地址无法解析。

A resolvable private address may be resolved if the corresponding device’s IRK is available using this procedure. If a resolvable private address is resolved, the device can associate this address with the peer device.

The resolvable private address (RPA) is divided into a 24-bit random part (prand) and a 24-bit hash part (hash). The least significant octet of the RPA becomes the least significant octet of hash and the most significant octet of RPA becomes the most significant octet of prand. A localHash value is then generated using the random address hash function ah defined in [Vol 3] Part H, Section 2.2.2 with the input parameter k set to IRK of the known device and the input parameter r set to the prand value extracted from the RPA.

localHash = ah(IRK, prand)

The localHash value is then compared with the hash value extracted from RPA. If the localHash value matches the extracted hash value, then the identity of the peer device has been resolved.

If a device has more than one stored IRK, the device repeats the above procedure for each stored IRK to determine if the received resolvable private address is associated with a stored IRK, until either address resolution is successful for one of the IRKs or all have been tried.

Note: A device that cannot resolve a private address within T_IFS may respond on the reception of the next event.

A non-resolvable private address cannot be resolved.

========== 分割线 ========== 

BR/EDR经典蓝牙用的是蓝牙public地址。而对于BLE,既可以使用public地址,也可以使用random随机地址。

但所有蓝牙设备必须使用其中一种类型:public公共地址或随机静态地址。

下一类地址(私人地址)是可选的,仅用于解决隐私问题(即设备可以在公共或随机静态地址之外使用此类型)。

All Bluetooth devices must use one of either type: a Public Address or a Random Static Address.

The next type of address (Private Address) is optional and is solely used to address privacy concerns (i.e. device may use one of them in addition to either a Public or Random Static Address).

上面的图是表示有四种蓝牙地址,随机地址和私有地址只表示分类,在具体实现中并不直接使用。

Four Bluetooth address types are:

* Public Address

* Random Static Address

* Random Private Resolvable Address

* Random Private Non-Resolvable Address

Random Address and Private Address, as shown in the diagram, are simply classifications and are not types used in and of themselves in implementation.

  • Public Address [ 公开地址 ]

蓝牙公共地址是必须向 IEEE 注册的全球固定地址。它遵循与 MAC 地址相同的准则,应为 48 位扩展唯一标识符 (EUI-48)。

创建有效的 EUI-48 需要从 IEEE 注册机构获得以下 MAC 地址块类型之一:

- 大型 MAC 地址块 (MA-L)

- 中型 MAC 地址块 (MA-M) 

- 小型 MAC 地址块 (MA-S)

该地址永不更改,并保证蓝牙设备的唯一性。不过,向 IEEE 申请/保留地址块需要付费。

A Bluetooth Public address is a global fixed address that must be registered with the IEEE. It follows the same guidelines as MAC Addresses and shall be a 48-bit extended unique identifier (EUI-48).

The creation of a valid EUI-48 requires one of the following MAC Address Block types to be obtained from the IEEE Registration Authority:

* MAC Address Block Large (MA-L)

* MAC Address Block Medium (MA-M)

* MAC Address Block Small (MA-S)

This address never changes and is guaranteed to be unique for a Bluetooth device. However, there is a fee associated with obtaining/reserving a block with the IEEE.

下图是公共蓝牙地址的简化格式:[ The following diagram represents the simplified format of a Public Bluetooth Address. ]

[ Public Address Format (little-endian format) ]

- 公司组织ID:IEEE 公开分配的地址部分(MSB)

- 公司分配部分:内部分配的 ID,作为分配块的一部分(LSB)

要进一步了解 IEEE 分配的 MAC 地址块的详细信息,请参阅以下链接:[To learn more about the details of IEEE-assigned MAC address blocks, refer to the following links:]

IEEE SA - Registration Authority

- Company ID: the publicly assigned portion of the address by the IEEE (MSB)

- Company Assigned: the internally assigned ID as part of the allocated block (LSB)

  • Random Address [ 随机地址 ]

随机地址比公共地址更受欢迎,因为它们不需要在 IEEE 注册。随机地址是一种标识符,它可以是

- 编程到设备中或

- 运行时生成(取决于子类型)。

随机地址的两种子类型是

- 随机静态地址

- 随机私有地址

Random addresses are more popular than Public addresses since they do not require registration with the IEEE. A Random address is an identifier that’s either:

* programmed into the device or

* generated at runtime (depending on the subtype).

The two subtypes of Random addresses are:

* Random Static Address

* Random Private Address

Let’s dig into each of these types in more detail.

  • 随机静态地址 [ Random Static Address ]

这种特定类型的蓝牙地址作为公共地址的流行替代品,因为使用它不涉及任何费用。

随机静态地址可以用两种方式之一来使用。

- 它可以在设备的生命周期内被分配和固定。

- 它可以在启动时改变

然而,它不能在运行时改变。

This specific type of Bluetooth address serves as a popular alternative to Public addresses since there are no fees involved with using it.

Random Static Addresses can be used in one of two ways:

* It can be assigned and fixed for the lifetime of the device

* It can be changed at bootup

However, it cannot be changed during runtime.

随机静态地址的格式看起来像这样:

[ Random Static Address format (little-endian format) ]

- 1和1被固定在MSB开头两位中

- 其余46位由开发者/制造商随机选择

* 1 and 1 are fixed in the most significant bits (MSB)

* The remaining 46 bits are chosen randomly by the developer/manufacturer

- 随机私有地址 [ Random Private Address ]

有两种类型的随机私有地址:可解析和不可解析。随机私有地址专门用于保护蓝牙设备的隐私,以隐藏身份,并防止跟踪设备。

There are two types of Random Private addresses: resolvable and non-resolvable. Random Private addresses are used specifically for protecting the privacy of a Bluetooth device, to hide the identity, and to prevent tracking of the device. Let’s take a look at each of these types.

让我们来看看这两种类型。

- 可解析的随机私有地址 [ Resolvable Random Private Address ]

可解决的随机私人地址的目的是防止恶意的第三方跟踪蓝牙设备,同时仍然允许一个或多个受信任方识别感兴趣的蓝牙设备。

The purpose of a Resolvable Random Private Address is to prevent malicious third-parties from tracking a Bluetooth device while still allowing one or more trusted parties from identifying the Bluetooth device of interest.

一个可解析的随机私有地址是使用与受信任设备共享的密钥而能够"可解析 "的。这个密钥被称为IRK(身份解析密钥Identity Resolving Key)。

A Resolvable Random Private address is “resolvable” using a key shared with a trusted device. This key is referred to as the IRK (Identity Resolving Key).

该地址最初是用这个IRK和一个随机数生成的。

The address is originally generated using this IRK and a random number.

那么,是什么让一个设备被另一个设备 "信任"?

So, what makes a device “trusted” by another device?

在这种情况下,一个受信任的设备就是一个绑定的设备。绑定是两个BLE设备配对后发生的可选步骤。绑定过程涉及到每个相互绑定的设备对密钥的存储。绑定还允许两个设备在成功配对的原始连接之后进行连接时无缝配对。两个绑定的BLE设备所交换的密钥之一是每个参与设备的IRK。

In this case, a trusted device is a bonded device. Bonding is the optional step that takes place after the pairing of two BLE devices. The Bonding process involves the storage of keys by each of the devices that are bonded with each other. Bonding also allows the two devices to pair seamlessly in connection subsequent to the original connection when the two devices were paired. One of the keys exchanged by the two bonded BLE devices is the IRK of each device involved.

这种类型的地址会定期改变。根据蓝牙规范的建议,它每15分钟改变一次(这在所有iOS设备中都很明显)。

This type of address changes periodically. The recommendation per the Bluetooth specification is to have it change every 15 minutes (this is evident in all iOS devices).

一个可解析的随机私人地址由以下字段组成:[ A Resolvable Random Private address is made up of the following fields: ]

[ Random Private Resolvable Address format (little-endian format) ]

- 0和1被固定在最高有效位(MSB)。

- 接下来的22位是随机产生的

- MSB的24位构成了prand。

- 较低的24位代表一个哈希值,该值是用prand和IRK生成的。

* 0 and 1 are fixed in the most significant bits (MSB)

* The next 22 bits are randomly generated

* The prand constitutes of these most significant 24 bits

* The lower 24 bits represent a hash value which is generated using the prand and the IRK

  • 不可解析的随机私有地址 [ Non-Resolvable Random Private Address ]

另一种类型的随机私有地址是不可解析的随机私有地址。

这种类型的地址也是周期性变化的。然而,与可解析的地址不同,它不能被任何其他设备解析。这种类型的地址的唯一目的是防止被任何其他BLE设备追踪。

这种类型不是很常见,但有时在信标应用中使用。

The other type of Random Private Address is the Non-Resolvable Random Private Address.

This type of address also changes periodically. However, unlike resolvable addresses, it is not resolvable by any other device. The sole purpose of this type of address is to prevent tracking by any other BLE device.

This type is not very common but is sometimes used in beacon applications.

不可解析的随机私有地址的格式如下:[ The format of Non-Resolvable Random Private Addresses is as follows: ]

[ Random Private Non-Resolvable Address format (little-endian format) ]

- 0和0被固定在MSB

- 剩下的46位是随机选择的

* 0 and 0 are fixed in the most significant bits (MSB)

* The remaining 46 bits are chosen at random

  • BLE中的隐私 [ Privacy in BLE ]

隐私是蓝牙设备用户的主要关注点,需要认真对待。在这种情况下,我们所说的隐私是指确保不受信任的各方无法通过蓝牙地址追踪设备。

如果没有谨慎的措施,这个地址就会被用来追踪用户。幸运的是,BLE提供了保护隐私的功能来防止这种攻击。

蓝牙设备的隐私是通过使用可解析的私人地址实现的。这种类型的地址需要两个蓝牙设备的绑定,以便一个能解析另一个的地址。

Privacy is a major concern for users of Bluetooth devices, and it needs to be taken seriously. What we mean by privacy in this context is making sure that untrusted parties are not able to track a device by its Bluetooth address.

If no careful measures are put in place, this Address can be used to track users. Fortunately, BLE provides Privacy features to safeguard against such attacks.

Privacy for Bluetooth devices is achieved by using a resolvable private address. This type of address requires bonding of the two Bluetooth devices in order for one to resolve the address of the other.

以下是为BLE设备实现隐私的步骤:[ Here are the steps involved in implementing privacy for BLE devices: ]

- 一个被称为IRK(身份解析密钥)的密钥被用来生成和解析可解析的随机私有地址。

- 每个设备在本地生成的IRK要么是随机的,要么是在制造过程中分配的。

- 在绑定期间,每个设备将其对等的IRK存储在所谓的解析列表中。

- 然后,该IRK被用来解析对等设备的私有地址。例如,当它在以后的时间里收到对等设备的广告包时。

- 这是通过验证包含在私有地址中的哈希值与本地哈希值计算的输出值相匹配来完成的,具体方法如下:。

hash = ah(IRK, prand)

- 由于设备拥有存储在本地的IRK,并且可以访问作为私有地址一部分的prand,该地址包含在BLE数据包中,因此它可以进行这种计算。

* A key referred to as the IRK (Identity Resolving Key) is used in generating and resolving the resolvable random private address.

* The IRK is generated by each device locally either randomly or assigned during manufacturing.

* During bonding, each device stores its peer’s IRK in what’s called a resolving list.

* The IRK is then used to resolve the private address of a peer device. For example, when it receives the peer’s advertising packets at a later time.

* This is done by verifying that the hash included in the private address matches the output of the local hash computation according to the following equation:

hash = ah(IRK, prand)

* Since the device has the IRK stored locally and has access to the prand included as part of the private address which is included in the BLE packets, it can perform this computation.

值得注意的是,IRK并不是用来揭示对等体的身份地址(公共地址或随机静态地址)的,而只是用于验证目的。然后,设备可以通过 IRK 和安全数据库将 RPA(可解析专用地址)映射回身份地址(一旦地址通过验证)。

It’s important to note that the IRK is not used to directly reveal the peer’s Identity Address (which is either a Public Address or a Random Static Address). Rather, it is used for verification purposes only. The device can then map the RPA (Resolvable Private Address) back to the Identity Address via the IRK and the security database (once the address is verified).

其他

1,如果蓝牙地址是全0的话,即00:00:00:00:00:00,表示空地址或错误地址。

2,可以使用工具改变Windows系统的PC的蓝牙地址。

参考:

1,NovelBits

Bluetooth Addresses & Privacy in Bluetooth Low Energy | Novel Bits

2,Bluetooth MAC Address Changer for Windows

Invalid Bluetooth Address | Bluetooth MAC Address Changer for Windows

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1413485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux中断 -- 中断路由、优先级、数据和标识

目录 1.中断路由 2.中断优先级 3.中断平衡 4.Linux内核中重要的数据结构 5.中断标识 承前文,本文从中断路由、优先级、数据结构和标识意义等方面对Linux内核中断进行一步的解析。 1.中断路由 Aset affinity flow GIC文中有提到SPI类型中断的路由控制器寄存器为…

01 Redis的特性+下载安装启动+客户端连接

1.1 NoSQL NoSQL(“non-relational”, “Not Only SQL”),泛指非关系型的数据库。 键值存储数据库 : 就像 Map 一样的 key-value 对。如Redis文档数据库 : NoSQL 与关系型数据的结合,最像关系…

南昌市青山湖、滕王阁、洛阳路隧道FM调频广播集群通信调度系统应用案例

一、用户需求 青山湖隧道,是南昌市一条东西走向的城市主干道,隧道为双向6车道,长1070米,其中湖底暗埋段为550米,净高5.45米,两孔每孔净宽12.4米。 滕王阁隧道是南昌市沿江北大道与沿江中大道连通工程&#…

智能分析网关V4智慧机房:视频AI智能安全监管方案

一、背景分析 随着互联网的迅猛发展,机房及其配套设施的数量持续攀升,它们的运行状况对于企业运营效率和服务质量的影响日益显著。作为企业信息化的基石,机房的安全监测与管理的重要性不容忽视。它不仅关乎企业的稳定运营,同时也直…

Redis6基础知识梳理~

初识NOSQL: NOSQL是为了解决性能问题而产生的技术,在最初,我们都是使用单体服务器架构,如下所示: 随着用户访问量大幅度提升,同时产生了大量的用户数据,单体服务器架构面对着巨大的压力 NOSQL解…

ctf-idea调试jar包

0.拿到jar包并解压 进入解压出来的目录,然后以该目录打开项目 1.设置maven 设不设置都行 2.添加依赖 添加两个依赖, boot-inf下的 classes和lib 3.配置调试器 添加 remote jvm debug 1.根据jdk版本选择调试参数 2.选择module classpath为解压后的文件夹名 如图,运行jar包的…

【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签

本文是在前面两篇文章的基础上,讲解如何更改训练数据集颜色,需要与前面两篇文章连起来看。 本文用于修改cityscapes数据集的标签颜色与Semankitti数据集的标签一致,对修改后的数据集进行训练。需要下载两个开发工具包和一个数据集&#xff0…

免费交互式大模型在线图像去除水印.擦除.替换和增强照片项目代码(免费在线图像修复工具)

图像修复工具:基于SOTA人工智能模型的应用 原始图: 擦出不想要区域 结果展示 并继续擦除 怎么样神奇把,水印也同样神奇的效果!!! 想要了解更多,请看下文! ! 基于S…

安全小记-ngnix负载均衡

目录 一.配置ngnix环境二.nginx负载均衡 一.配置ngnix环境 本次实验使用的是centos7,首先默认yum源已经配置好,没有配置好的自行访问阿里云镜像站 https://developer.aliyun.com/mirror/ 接着进行安装工作 1.首先创建Nginx的目录并进入: mkdir /soft &…

Qt编写手机端视频播放器/推流工具/Onvif工具

一、视频播放器 同时支持多种解码内核,包括qmedia内核(Qt4/Qt5/Qt6)、ffmpeg内核(ffmpeg2/ffmpeg3/ffmpeg4/ffmpeg5/ffmpeg6)、vlc内核(vlc2/vlc3)、mpv内核(mpv1/mp2)、…

淘宝扭蛋机小程序:新时代的互动营销与娱乐体验

随着科技的快速发展,小程序已经成为人们日常生活中不可或缺的一部分。在众多的小程序中,淘宝扭蛋机小程序以其独特的互动性和趣味性,吸引了大量用户。本文将深入探讨淘宝扭蛋机小程序的特色、用户体验以及未来发展。 一、淘宝扭蛋机小程序的…

【深度学习】【AutoDL】【SSH】通过VSCode和SSH使用AutoDL服务器训练模型

身边没有显卡资源或不足以训练模型时,可以租赁服务器的显卡。 1、注册AutoDL并配置环境 首先打开AutoDL官网,注册账号并租赁自己期望的显卡资源 点击“租赁”之后,我们要继续选择基础环境。此处,我们让其自动配置好基础的pytor…

用Visual Studio Code创建JavaScript运行环境【2024版】

用Visual Studio Code创建JavaScript运行环境 JavaScript 的历史 JavaScript 最初被称为 LiveScript,由 Netscape(Netscape Communications Corporation,网景通信公司)公司的布兰登艾奇(Brendan Eich)在 …

【C/C++】详解程序环境和预处理(什么是程序环境?为什么要有程序环境?如何理解程序环境?)

目录 一、前言 二、 什么是程序环境? 三、 为什么要有程序环境? 四、如何理解程序环境? 🍎 ANSI C 标准 🍐 翻译环境和执行环境 五、详解翻译环境和执行环境 🍇翻译环境(重点&#xff01…

【K12】tk窗口+plt图像功能-学习物理中的串并联研究【附源码说明】

程序源码 import tkinter as tk import matplotlib.pyplot as plt# 初始化 matplotlib 的字体设置 plt.rcParams[font.family] SimHei# 计算串联电路的函数 def calculate_series():try:# 获取用户输入的电阻值并转换为浮点数r1 float(entry_r1.get())r2 float(entry_r2.ge…

Kotlin Multiplatform项目推荐 | 太空人分布图

Kotlin Multiplatform项目推荐 | 太空人分布图 项目简介 Kotlin Multiplatform项目是一种跨平台开发技术,它可以同时使用SwiftUI、Jetpack Compose、Compose for Wear OS、Compose for Desktop、Compose for Web、Kotlin/JS React等客户端框架,并且使…

【Linux】-cp模型

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

IDEA 安装阿里Java编码规范插件

1.File>Settings 2.安装之后重启 开发过程中如果有不符合规范的地方,会自动出现提示

单片机学习笔记---独立按键控制LED状态

上一节学习的是独立按键控制LED亮灭 这一节我们先来讲一下按键的抖动: 对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以…

go slice 基本用法

slice(切片)是 go 里面非常常用的一种数据结构,它代表了一个变长的序列,序列中的每个元素都有相同的数据类型。 一个 slice 类型一般写作 []T,其中 T 代表 slice 中元素的类型;slice 的语法和数组很像&…