467 字
2 分钟
wifi安全以及IoT传输杂谈
最近进度
wifi安全以及IoT传输杂谈
做了一些实验,现在常见的家用WiFi还在大量使用wpa2
几乎没有遇到3的。以下会阐述一些实验性结论和研究
因为自身的设备是支持802.11a协议,在wpa扫描的情况发现是存在一些丢包的
同时,私有地址以及轮替的mac地址追踪是在跨路由的设备追踪的,而不是一直轮替
所以还是可以抓到4次握手的管理帧,并且其实aireplay 的 deauth也是非常方便进行攻击的
在有密码后其实有很多的攻击思路,http是直接明文传输的,
https的话走tls,当然,如果针对个人的话,如果可以拿到tls更好
再者为Iot,这边用的设备只能收点BLS广播
比如说如下示例
#include <zephyr/kernel.h>#include <zephyr/sys/printk.h>#include <zephyr/bluetooth/bluetooth.h>#include <zephyr/bluetooth/conn.h>#include <zephyr/bluetooth/gatt.h>#include <zephyr/bluetooth/uuid.h>
#define BT_UUID_LAB_SERVICE \ BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x12345678, 0x1234, 0x5678, \ 0x1234, 0x1234567890ab))
#define BT_UUID_LAB_STATUS \ BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x12345679, 0x1234, 0x5678, \ 0x1234, 0x1234567890ab))
#define BT_UUID_LAB_COMMAND \ BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x1234567a, 0x1234, 0x5678, \ 0x1234, 0x1234567890ab))
static uint8_t status;
static ssize_t read_status(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, uint16_t len, uint16_t offset){ return bt_gatt_attr_read(conn, attr, buf, len, offset, &status, sizeof(status));}
static ssize_t write_command(struct bt_conn *conn, const struct bt_gatt_attr *attr, const void *buf, uint16_t len, uint16_t offset, uint8_t flags){ if (offset != 0 || len != 1) { return BT_GATT_ERR(BT_ATT_ERR_INVALID_ATTRIBUTE_LEN); }
uint8_t command = ((const uint8_t *)buf)[0];
if (command == 0x00 || command == 0x01) { status = command; printk("status = %d\n", status); return len; }
return BT_GATT_ERR(BT_ATT_ERR_VALUE_NOT_ALLOWED);}
BT_GATT_SERVICE_DEFINE(lab_service, BT_GATT_PRIMARY_SERVICE(BT_UUID_LAB_SERVICE),
BT_GATT_CHARACTERISTIC(BT_UUID_LAB_STATUS, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, /* 故意:不要求验证 */ read_status, NULL, NULL),
BT_GATT_CHARACTERISTIC(BT_UUID_LAB_COMMAND, BT_GATT_CHRC_WRITE, BT_GATT_PERM_WRITE, /* 故意:不要求验证 */ NULL, write_command, NULL));
static const struct bt_data ad[] = { BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR), BT_DATA_BYTES(BT_DATA_UUID128_ALL, BT_UUID_128_ENCODE(0x12345678, 0x1234, 0x5678, 0x1234, 0x1234567890ab)), BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1),};
int main(void){ int err = bt_enable(NULL); if (err) { printk("Bluetooth init failed: %d\n", err); return 0; }
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0); if (err) { printk("Advertising failed: %d\n", err); return 0; }
printk("BLE-LAB advertising\n"); return 0;}对于 nRF Connect 。其实没什么设备可以研究,所以比较局限吧
LAST UPDATE / 最后更新