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.mzph.cn/news/643133.shtml

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

相关文章

IPoE技术汇总

在国内并没有遇到这么多的IPoE(IP over Ethernet)技术,可能也是因为我来日本多年了,没有接触国内的IPv4 over IPv6的技术,感觉国内IPv4地址紧张,用的传统NAT和PPPoE非常多,大多数设备还是建立在…

使用 YApi 管理 API 文档,测试, mock

随着互联网的发展,API变的至关重要。根据统计,目前市面上有上千万的开发者,互联网项目超过10亿,保守统计涉及的 API 数量大约有 100 亿。这么大基数的API,只要解决某些共有的痛点,将会是非常有意义的事情。…

开发实战角度:distinct实现原理及具体优化总结

1.背景 Distinct是一种常用的操作,在所有数据库的SQl语言中都是一个非常重要的操作,在Hive中,Distinct去重原理是通过MapReduce来实现的,Distinct操作可以应用于单个列,亦可以应用于多个列。基本原理是将输入的数据集…

机器学习期末复习总结笔记(李航统计学习方法)

文章目录 模型复杂度高---过拟合分类与回归有监督、无监督、半监督正则化生成模型和判别模型感知机KNN朴素贝叶斯决策树SVMAdaboost聚类风险PCA深度学习范数计算梯度下降与随机梯度下降SGD线性回归逻辑回归最大熵模型适用性讨论 模型复杂度高—过拟合 是什么:当模型…

golang通过go-git下载gitlab源码

1 申请令牌 方法1:具体项目下申请: 方法2:全局申请 2 获取token 3 下载代码 package mainimport ("fmt""os""github.com/go-git/go-git/v5" )func main() {_, err : git.PlainClone("/tmp/foo",…

java web mvc-07-Vaadin 入门介绍

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails 开源 The jdbc pool for java.(java …

MySQL函数—数值函数,随机数验证码生成

MySQL函数—日期函数 函数功能CEIL(x)向上取整FLOOR(x)向下取整MOD(x,y)返回x/y的模(取余)RAND()返回0-1的随机数ROUND(x,y)求参数x的四舍五入,保留y位小数 1、向上取整:CEIL。只要小数点后的数字大于0就取整。 select CEIL(1.2…

Qt解析含颜色的QString字符串显示到控件

1、需求 开发接收含颜色字符串显示到窗口,可解析字符串颜色配置窗口属性,且分割字符串显示。 mprintf(“xxxxxx”);打印的xxxxxx含有颜色配置。 2、实现方法 2.1、条件 选用Qt的PlainTextEdit控件显示字符串,配置为只读模式 …

pytestallure分析redis的数据并动态生成testCase报告

1.pytest.mark.parametrize pytest.mark.parametrize 是一个pytest的装饰器,它可以用于将参数传递给测试函数。使用 pytest.mark.parametrize 装饰器时,需要在装饰器中指定参数名称和参数值。对于多个参数,可以使用多个装饰器。 下面是一些…

数据链路层——笔记·续

使用集线器的星形拓扑 传统以太网传输媒体:粗同轴电缆 -> 细同轴电缆 -> 双绞线。 采用双绞线的以太网采用星形拓扑。 在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (hub)。 传统以太网使用同轴电缆,采用总线形拓扑结构&am…

嵌入式软件工程师面试题——2025校招社招通用(计算机网络篇)(二十八)

说明: 面试群,群号: 228447240面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但…

计算机网络 第3章(数据链路层)

系列文章目录 计算机网络 第1章(概述) 计算机网络 第2章(物理层) 计算机网络 第3章(数据链路层) 文章目录 系列文章目录1. 数据链路层概述1.1 概述1.2 三个重要问题 2. 封装成帧2.1 介绍2.2 透明传输2.3 总…

归一化是是什么意思,为什么要归一化

归一化 归一化是指将数据转换为标准尺度或相对比例的过程。在数据处理中,归一化的目标是使数据具有统一的尺度,以便更好地适应模型的训练和提高模型性能。归一化通常是通过线性变换将数据映射到一个特定的范围或分布。 为什么要进行归一化? …

RK3399平台开发系列讲解(USB篇)USB2.0 包格式分类

🚀返回专栏总目录 文章目录 一、令牌包格式二、数据包格式三、握手包格式沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 USB协议定了多种类型的包,有令牌包、数据包和握手包。 根据PID可将USB2.0的包分为四种包类型。 令牌包(Token):01B数据包(Data):11B握手包…

QT下载、安装详细教程[Qt5.15及Qt6在线安装,附带下载链接]

QT5.15及QT6的下载和安装 1.下载1.1官网下载1.2国内镜像网站下载 2.安装3.软件启动及测试程序运行3.1Qt Creator(Community) 1.下载 QT自Qt5.15版本后不在支持离线安装包下载(非商业版本,开源),故Qt5.15及Qt6需要使用在线安装程序…

云原生安全:风险挑战与安全架构设计策略

概述 数字化转型已经成为当今最流行的话题之一,大部分企业已经开启自身的数字化转型之旅,在未来企业只有数字化企业和非数字化企业之分。通过数字经济的加速发展,可以有效推动企业数字化转型的步伐。云计算作为数字化转型的底座和重要的载体…

Redis 面试题 | 07.精选Redis高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【思路合集】talking head generation+stable diffusion

1 以DiffusionVideoEditing为baseline: 改进方向 针对于自回归训练方式可能导致的漂移问题: 训练时,在前一帧上引入小量的面部扭曲,模拟在生成过程中自然发生的扭曲。促使模型查看身份帧以进行修正。在像VoxCeleb或LRS这样的具…

webpack如何把dist.js中某个模块js打包成一个全局变量,使得在html引入dist.js后可以直接访问

webpack可以通过使用expose-loader来将模块中的一个js文件暴露为全局可以访问的变量。下面是一个示例代码: 1、安装expose-loader npm install expose-loader --save-dev 2、webpack.config.js配置文件 值得注意的是:我在本地使用16.14.2版本的node打包…

【深度学习】初识深度学习

初识深度学习 什么是深度学习 关系: #mermaid-svg-7QyNQ1BBaD6vmMVi {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7QyNQ1BBaD6vmMVi .error-icon{fill:#552222;}#mermaid-svg-7QyNQ1BBaD6vmMVi .err…