Bluetooth Device Address(BD_ADDR) - 2

蓝牙核心规范: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.rhkb.cn/news/244093.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker容器操作 Docker创建并运行Nginx、Redis

容器操作的命令如图: 容器命令 # 创建并运行一个容器,运行成功后会返回容器id docker run# 暂停,将容器挂起,内存暂存,CPU不再执行 docker pause # 恢复运行,内存恢复,CPU恢复 docker unpause#…

设计模式篇章(4)——十一种行为型模式

这个设计模式主要思考的是如何分配对象的职责和将对象之间相互协作完成单个对象无法完成的任务,这个与结构型模式有点像,结构型可以理解为静态的组合,例如将不同的组件拼起来成为一个更大的组件;而行为型更是一种动态或者具有某个…

微信小程序实现长按 识别图片二维码

第一种方案&#xff08;只需要在image里面加一个属性就可以了&#xff09; show-menu-by-longpress“{{true}}” <image show-menu-by-longpress"{{true}}" src"{{sysset.dyqewm}}" />第二种方案 放大预览图片&#xff0c;长按识别二维码 wxml <…

ImportError: The Qt version imported is 5.9.7 but Matplotlib requires Qt>=5.12

一、错误描述 ImportError: The Qt version imported is 5.9.7 but Matplotlib requires Qt>5.12 在用python中的plt包进行绘图时对plt进行了更新&#xff0c;更新之后再运行以前的代码就出现了这个问题。 二、bug消除 &#xff08;一&#xff09;解决方法——升级pyqt包…

【4k】4k的webrtc播放示例

目录 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数

关于在微信小程序中使用taro + react-hook后销毁函数无法执行的问题

问题&#xff1a; 在 taro中使用navigageTo() 跳转路由后hook中useEffect 的return函数没有执行 没有执行return函数 框架版本&#xff1a; tarojs: 3.6 react: 18.0 原因&#xff1a; 使用navigateTo() 跳转路由的话并不会销毁页面和组件&#xff0c;会加入一…

2023年第十四届蓝桥杯软件赛省赛总评

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上交流答疑&am…

Portainer Docker容器可视化管理平台实践

Portainer Docker容器可视化管理平台实践 引安装登录Remote ENV 实践 引 平常用docker命令操作比较多&#xff0c;找了一款docker可视化工具&#xff0c;方便快速预览和批量操作&#xff0c;不想一行一行敲的时候&#xff0c;可以偷偷懒。Portainer试用了一下&#xff0c;安装…

二分法——C++

二分分为整数二分和浮点数二分&#xff0c;其中比较复杂的是整数二分&#xff0c;简单一点的是浮点数二分。 我们首先来说明整数二分,主要来讲解模板。 整数二分&#xff1a; 我们先来说一说使用二分法的前提&#xff0c;要有单调性&#xff0c;然后可以根据某种性质来划分成…

C#winform上位机开发学习笔记5-串口助手的定时发送功能添加

1.功能描述 选择自动发送功能后&#xff0c;按照设定的发送时间发送发送框中的信息数据&#xff0c;设定时间可以手动输入&#xff0c;当手动输入信息无效&#xff08;非数字&#xff09;时&#xff0c;系统弹出错误提示&#xff0c;并将其设置为默认定时时间。 2.代码部分 步…

不同知识表示方法与知识图谱

目录 前言1 一阶谓词逻辑1.1 简介1.2 优势1.3 局限性 2 产生式规则2.1 简介2.2 优势2.3 局限性 3 框架系统3.1 简介3.2 优势3.3 局限性 4 描述逻辑4.1 简介4.2 优势4.3 局限性 5 语义网络5.1 简介5.2 优势5.3 局限性 结语 前言 知识表示是人工智能领域中至关重要的一环&#x…

基于SpringBoot Vue博物馆管理系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

TCP和SSL/TLS 协议通信原理

&#x1f47d;System.out.println(“&#x1f44b;&#x1f3fc;嗨&#xff0c;大家好&#xff0c;我是代码不会敲的小符&#xff0c;双非大四&#xff0c;Java实习中…”); &#x1f4da;System.out.println(“&#x1f388;如果文章中有错误的地方&#xff0c;恳请大家指正&a…

windows 11安装VMware 17 ,VMware安装Ubuntu 20.4

一、下载安装激活VMware 17 下载与激活&#xff1a;Vmware 17 下载地址、最新激活码 2024 _ 注意&#xff1a;安装路径自己选择&#xff0c;路径中尽可能避免中文或空格 二、下载Ubuntu 镜像 下载镜像地址&#xff1a;清华大学开源软件镜像站 点开下载镜像地址&#xff0c;找…

Shell 脚本实现自动启动程序、日志管理和定时任务监控

简介 本篇将通过Shell 脚本实现自动启动Java程序、日志管理和定时任务监控。脚本启动程序具灵活定制、可移植性和扩展性强的优点&#xff0c;可以根据需要添加额外的功能、配置选项和自定义行为&#xff0c;从而满足更具体的要求。 脚本编写 vim start_program.sh#!/bin/bas…

PgSQL - 17新特性 - 块级别增量备份

PgSQL - 17新特性 - 块级别增量备份 PgSQL可通过pg_basebackup进行全量备份。在构建复制关系时&#xff0c;创建备机时需要通过pg_basebackup全量拉取一个备份&#xff0c;形成一个mirror。但很多场景下&#xff0c;我们往往不需要进行全量备份/恢复&#xff0c;数据量特别大的…

【操作系统】内存管理

文章目录 1. 为什么需要引入虚拟内存2. 如何实现虚拟地址到物理地址的映射2.1 内存分段2.1.1 分段机制2.1.2 内存分段的不足之处 2.2 内存分页2.2.1 分页机制2.2.2 单级页表2.2.3 多级页表 2.2.2 如何解决了外部碎片和内存交换效率低的问题 2.3 段页式 1. 为什么需要引入虚拟内…

【Linux取经路】初探进程地址空间

文章目录 一、历史问题回顾二、语言层面的地址空间2.1 验证 三、虚拟地址的引入3.1 初步解释这种现象——引入地址空间的概念3.2 再来粗粒度理解上面的现象 四、细节解释4.1 地址空间究竟是什么&#xff1f;4.2为什么要有地址空间4.3 页表4.3.1 CR3寄存器4.3.2 页表是由页表项组…

luffy商城项目(二)

路飞后端配置 二次封装response drf提供的Response对象&#xff0c;不能很方便的加入code和msg字段&#xff0c;自己封装一个Response类&#xff0c;以后都用我们自己封装的&#xff0c;方便咱们写code和msg 封装步骤&#xff1a; 1 在utils/common_response.py from rest_…

以太坊账户地址与比特B地址生成方法对比

作者 张群&#xff08;赛联区块链教育首席讲师&#xff0c;工信部赛迪特聘资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09;关注张群&#xff0c;为您提供一站式区块链技术和方案咨询。 以太坊和比特B地址在生成方…