(一百七十七) WiFi如何分辨出不同加密方式的AP?(续)

2023-12-19 07:32

本文主要是介绍(一百七十七) WiFi如何分辨出不同加密方式的AP?(续),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:之前https://blog.csdn.net/sinat_20059415/article/details/99686537 看WiFi如何分辨出不同加密方式的AP? 中提到“加密方式大概是从扫描结果中的ie解析出来放在一个叫做capabilities里的,后续上面判断加密方式就简单判断下是否包含特定加密方式的字符串就好了。”抓个包看下

 

1.probe request & response

用wireshark看下有啥

1.1 arrival time

1.2 radio informatin

1.3 probe response

主要显示了mac地址

1.4 wireless LAN

可以看到至少有ssid channel和加密方式

这个psk应该也是wireshark根据特定字段解析出来的,结合之前的梳理代码看下

        // RSNE format (size unit: byte)//// | Element ID | Length | Version | Group Data Cipher Suite |//      1           1         2                 4// | Pairwise Cipher Suite Count | Pairwise Cipher Suite List |//              2                            4 * m// | AKM Suite Count | AKM Suite List | RSN Capabilities |//          2               4 * n               2// | PMKID Count | PMKID List | Group Management Cipher Suite |//        2          16 * s                 4//// Note: InformationElement.bytes has 'Element ID' and 'Length'//       stripped off alreadyprivate void parseRsnElement(InformationElement ie) {ByteBuffer buf = ByteBuffer.wrap(ie.bytes).order(ByteOrder.LITTLE_ENDIAN);try {// versionif (buf.getShort() != RSNE_VERSION) {// incorrect versionreturn;}// found the RSNE IE, hence start building the capability stringprotocol.add(ScanResult.PROTOCOL_WPA2);// group data cipher suitegroupCipher.add(parseRsnCipher(buf.getInt()));// pairwise cipher suite countshort cipherCount = buf.getShort();ArrayList<Integer> rsnPairwiseCipher = new ArrayList<>();// pairwise cipher suite listfor (int i = 0; i < cipherCount; i++) {rsnPairwiseCipher.add(parseRsnCipher(buf.getInt()));}pairwiseCipher.add(rsnPairwiseCipher);// AKM// AKM suite countshort akmCount = buf.getShort();ArrayList<Integer> rsnKeyManagement = new ArrayList<>();for (int i = 0; i < akmCount; i++) {int akm = buf.getInt();switch (akm) {case WPA2_AKM_EAP:rsnKeyManagement.add(ScanResult.KEY_MGMT_EAP);break;case WPA2_AKM_PSK:rsnKeyManagement.add(ScanResult.KEY_MGMT_PSK);break;case WPA2_AKM_FT_EAP:rsnKeyManagement.add(ScanResult.KEY_MGMT_FT_EAP);break;case WPA2_AKM_FT_PSK:rsnKeyManagement.add(ScanResult.KEY_MGMT_FT_PSK);break;case WPA2_AKM_EAP_SHA256:rsnKeyManagement.add(ScanResult.KEY_MGMT_EAP_SHA256);break;case WPA2_AKM_PSK_SHA256:rsnKeyManagement.add(ScanResult.KEY_MGMT_PSK_SHA256);break;default:// do nothingbreak;}}// Default AKMif (rsnKeyManagement.isEmpty()) {rsnKeyManagement.add(ScanResult.KEY_MGMT_EAP);}keyManagement.add(rsnKeyManagement);} catch (BufferUnderflowException e) {Log.e("IE_Capabilities", "Couldn't parse RSNE, buffer underflow");}}

这边是解析的一个

与报文对应

是反过来的

  OUI:OUI认证应该是对应的wpa2

结合起来就是wpa2_psk的加密方式

 

 

2.beacon

待续,没抓到。。。尴尬

 

3.过滤器转载

https://my.oschina.net/665544/blog/1647001

 

帧类型

过滤器语法

Management frame

wlan.fc.type == 0

Control frame

wlan.fc.type == 1

Data frame

wlan.fc.type == 2

Association request

wlan.fc.type_subtype == 0x00

Association response

wlan.fc.type_subtype == 0x01

Reassociation request

wlan.fc.type_subtype == 0x02

Reassociation response

wlan.fc.type_subtype == 0x03

Probe request

wlan.fc.type_subtype == 0x04

Probe response

wlan.fc.type_subtype == 0x05

Beacon

wlan.fc.type_subtype == 0x08

Disassociate

wlan.fc.type_subtype == 0x0A

Authentication

wlan.fc.type_subtype == 0x0B

Deauthentication

wlan.fc.type_subtype == 0x0C

Action frame

wlan.fc.type_subtype == 0x0D

Block ACK requests

wlan.fc.type_subtype == 0x18

Block ACK

wlan.fc.type_subtype == 0x19

Power save poll

wlan.fc.type_subtype == 0x1A

Request to send

wlan.fc.type_subtype == 0x1B

Clear to send

wlan.fc.type_subtype == 0x1C

ACK

wlan.fc.type_subtype == 0x1D

Contention free period end

wlan.fc.type_subtype == 0x1E

NULL data

wlan.fc.type_subtype == 0x24

QoS data

wlan.fc.type_subtype == 0x28

Null QoS data

wlan.fc.type_subtype == 0x2C

 

4.总结

与之前总结基本一致,加密方式其实就是从datagram的特定字段解析出来的,结合抓包可以定位是解析的

RSN Information的AKM字段,里面包含认证和类型两个小字段,比如wpa2+psk

 

PS:

The RSN information element was brought out by the IEEE 802.11i Task Group. RSN stands for Robust Security Network and it made AES cipher mandatory with the use of Robust Security Network.

高级加密标准(Advanced Encryption Standard: AES)

IEEE 802.11i引入了RSN信息元素。RSN表示强健安全网络,它使用健壮安全网络和强制AES加密。

这篇关于(一百七十七) WiFi如何分辨出不同加密方式的AP?(续)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/511370

相关文章

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与