您指定的代码几乎是正确的,除了authenticateMessage内的用户名字段是Unicode编码的。
您可以通过调用dump()方法(em>authenticateMessage结构的内容authenticateMessage.dump())。在
我已将您的代码替换为:authenticateMessage.dump()
respToken = SPNEGO_NegTokenResp()
if authenticateMessage['user_name'].decode('utf-16le') == "testUser":
errorCode = STATUS_SUCCESS
respToken['NegResult'] = '\x00'
else:
errorCode = STATUS_LOGON_FAILURE
respToken['NegResult'] = '\x02'
如果您克隆了master(https://github.com/CoreSecurity/impacket),您将看到一个名为examples的新示例/smbserver.py(别和小淘气搞混了/smbserver.py库)使启动简单服务器更容易。只需运行:
^{pr2}$
我做了前面提到的更改并运行smbserver.py然后,从windows 7命令行.exe提示符I run(假设SMB服务器运行在172.16.123.1并且登录用户名不是testUser):start \\172.16.123.1
如果你嗅探流量,你会看到三次尝试登录失败,然后Windows资源管理器将弹出一个对话框,要求新的凭据。如果您将testUser指定为username(密码可以是任何内容),那么您将最终连接到目标SMB服务器。在