带有\0的arduino wifi密码短语
我正在尝试将Arduino连接到WiFi网络带有\0的arduino wifi密码短语,arduino,wifi,passphrase,Arduino,Wifi,Passphrase,我正在尝试将Arduino连接到WiFi网络 const char* ssid = "ssid"; char* password = "some_hex_chars"; . . . void setup(void){ WiFi.begin(ssid, password); . . . 问题是,密码短语中的某个地方有代码0x00。由于begin()方法接受参数char(以null结尾的字符串),所以密码被截断。 有办法解决这个问题吗?在哪里可以找到begin()方法的源代码来修改它 编辑:错
const char* ssid = "ssid";
char* password = "some_hex_chars";
.
.
.
void setup(void){
WiFi.begin(ssid, password);
.
.
.
问题是,密码短语中的某个地方有代码0x00。由于begin()方法接受参数char(以null结尾的字符串),所以密码被截断。
有办法解决这个问题吗?在哪里可以找到begin()方法的源代码来修改它
编辑:错了。
它不是密码,它是带有64个十六进制字符的PSK,它不想连接
更新:
我解决了这个问题。我不是PSK的问题,而是WiFi路由器的高级设置。什么时候
54g™ 模式设置为54g性能,它不想连接。在我将其更改为54g Auto后,它工作正常。我对Arduino一无所知,但更了解802.11又称Wi-Fi。因此: 不要那样做。如果在你的密码短语中间有一个0x00,它在技术上是无效的,按照IEEE 802.11标准。< /强> 因此,我认为,如果正确实现,您的802.11堆栈会将其解释为您的密码短语的下一个最后一个字符(=密码短语是0x00之前的所有字符),并且您正在寻找未定义的行为-最好是互操作性问题,最坏的情况下,您是在打赌 怎么样? (警告:这会很无聊,有很多“网络律师”的东西) 与此相关的IEEE 802.11标准是IEEE Std 802.11i-2004“修改件6:介质访问控制(MAC)安全增强”[0],也称为“WPA2” (我不会深入挖掘WEP,它显然被弃用为无用,也不会深入挖掘“基本”WPA,它是等待WPA2标准完成的过渡) 相关部分见802.11i,ASN MIB[1](附录D,规范性),第136页,将“
dot11RSNAConfigPSKPassPhrase
”定义为“DisplayString
”。那么“DisplayString
”到底是什么类型的数据呢
RFC 1213,“基于TCP/IP的互联网网络管理的管理信息库:MIB-II”,1991年起,第3页,声明:
DisplayString仅限于NVT ASCII字符集,如下所示:
定义见[6]第10-11页。”
好的
这个“[6]”是1983年的RFC 854(哇!这些IETF和IEEE认真地、真的、真的建立在他们的标准之上)。你还在跟踪我吗?:-)因此,通过查看,我们了解到NVT代表“网络虚拟终端”,在第10页和第11页,我们发现:
NVT打印机[sic!记住那是1983年][…]可以生产
所有95个USASCII图形的表示(代码32到126)
好的,ASCII码32到126。现在让我们回到IEEE 802.11i:
在附录H(资料性)“RSNA参考实现和测试向量”中的“H.4建议的密码短语到PSK映射”一节中(请记住,使用SSID进行数学处理的密码短语的目的是导出PSK(预共享密钥),该密钥对802.11操作更有用,但用户友好性远低于“一个该死的简单密码短语,我可以用该死的键盘输入”)。按照IEEE的说法,它给出了以下内容(第165页):
RSNA PSK由256位或64个八位字节组成,表示为
十六进制。用户很难正确输入64个十六进制字符。
然而,大多数用户都熟悉密码并传递短语和密码
输入它们比输入键更舒服。用户更容易
可能能够输入ASCII密码或密码短语,甚至
尽管这样做限制了可能的键集
最好的办法是向PSK介绍一个通行短语
映射
本条款定义了一个pass短语–to–PSK映射,它是
与RSNAs一起使用的推荐做法
引入此通行短语映射是为了鼓励不熟悉的用户
使用加密概念来启用其
无线局域网
…那么,密码短语的用途是什么呢。然后在下一页166:
在此,以下假设适用:
- 密码短语是由8到63个ASCII编码字符组成的序列。63个字符的限制来自于区分
在密码短语和显示为64十六进制的PSK之间
人物 - 密码短语中的每个字符的编码范围必须在32到126(十进制)之间,包括32到126(十进制)。[我的重点]
# WPA pre-shared keys for WPA-PSK. This can be either entered as a 256-bit
# secret in hex format (64 hex digits), wpa_psk, or as an ASCII passphrase
# (8..63 characters) that will be converted to PSK. This conversion uses SSID
# so the PSK changes when ASCII passphrase is used and the SSID is changed.
# wpa_psk (dot11RSNAConfigPSKValue)
# wpa_passphrase (dot11RSNAConfigPSKPassPhrase)
#wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
#wpa_passphrase=secret passphrase