我正在尝试读取TLS消息。具体来说,是带有证书详细信息(handshake_type =
11)的证书。我正在做的是先检查邮件中是否包含Raw
。如果是这样,我将像这样提取有效负载:b = bytes(pkt[Raw].load)
。接下来,我要检查 第一个 字节是0x16
,接下来的两个字节需要是正确的TLS版本。
问题在于此消息没有通过这些条件。WireShark向我显示了\x16\x03\x03
位置上的字节0000
(已附加图片),但是我想这样做是为了方便。
那么我的假设是有效载荷必须以0x16
错误开头吗?
PS
我不想使用scapy-ssl_tls
库。
编辑
这是代码:
def handle_tls_packet(pkt):
if pkt.haslayer(Raw):
b = bytes(pkt[Raw].load)
if b[0] == 0x16:
version = int.from_bytes(b[1:3], 'big')
message_len = int.from_bytes(b[3:5], 'big')
handshake_type = b[5]
handshake_length = int.from_bytes(b[6:9], 'big')
print("v = ", version, " len = ", message_len, " htype =", handshake_type
, "hlen =", handshake_length)
if handshake_type == 11:
# never happens - Why?
certs_len = int.from_bytes(b[7:11], 'big')
EDIT2:
正如 Cukic0d 所建议,我使用load_layer("ssl")
。
显然pkt[TLS].msg
是一个列表(将多个TLS消息保存在一个数据包中?)。无论如何,我打印出每条这样的消息的类型,如下所示:
def handle_tls_packet(pkt):
for tls_msg in pkt[TLS].msg:
print(type(tls_msg))
我希望看到一个TLSCertificate
对象,但从未见过这样的对象。为什么?
EDIT3: 如果这会让生活更轻松,
我愿意使用scapy-ssl_tls
。
如果要使用TLS握手,请使用启用Scapy上的TLS load_layer("tls")
。
这将启用支持握手的TLS模块(需要scapy> = 2.4.0)。然后,Scapy将正确解析TLS握手/密钥…数据包
你应该先尝试
load_layer("tls")
packets = sniff(prn=lambda x:x.summary(), lfilter=lambda x: TLS in x)
如果您使用的是Scapy 2.4.4+,则为获得更好的一致性,甚至可以使用
sniff([...], session=TLSSession)
看一下数据包的构建方式:
例:
这里还有一个很好的指南:https
:
//github.com/secdev/scapy/blob/master/doc/notebooks/tls/notebook2_tls_protected.ipynb
所以总结一下:
使用时,您会发现每个数据包load_layer("tls")
。
请注意,有很多数据包,并且TLSCertificate只会出现一次。msg
是一个列表,因为许多信息可以包含在一个TLS数据包中
Wireshark和SSL/TLS主密钥 mitmproxy可以记录SSL/TLS主密钥,以便外部程序可以解密与代理之间的SSL/TLS连接。最新版本的Wireshark可以使用这些日志文件来解密数据包。有关更多信息,请参见Wireshark Wiki。 通过设置环境变量来启用键记录SSLKEYLOGFILE,使其指向可写的文本文件: SSLKEYLOGFILE="$PWD/.mitmproxy/
我试图让我的SSL服务器同时支持TLS 1.1和TLS 1.2,而不支持早期版本。 这是我配置SSL上下文的方式: 我甚至尝试清除选项,如果它是默认设置的。即使我将配置减少到: 当尝试与TLS 1.1客户端连接时,回调仍然会给出错误代码。当与TLS1.2客户端连接时,一切都很好。 如果在构造SSL上下文时,我将第二个参数从更改为,那么TLS1.1工作正常,但TLS1.2不可用。 我已经尝试了Boo
问题内容: 解决问题的答案(使用unshort.meAPI)是我的问题,我专注于取消youtube链接。由于unshort.me易于使用,这将返回我无法解析的验证码几乎90%的结果。 到目前为止,我仍然坚持使用: 注意:注释中的所有内容都是我在使用unshort.me服务(返回验证码链接)时尝试执行的操作。 有谁知道一种更有效的方法来完成此操作而无需使用open(因为这浪费带宽)? 问题答案: 在
DShell Dshell是一个基于Python的网络取证分析工具包。 该工具包由美国陆军研究实验室开发。 该开源工具包的发布于2014年。该工具包的主要重点是轻松进行取证调查。 该工具包由大量解码器组成,如下表所示。 Sr.No. 解码器名称和描述 1 dns 这用于提取DNS相关的查询 2 reservedips 标识DNS问题的解决方案 3 large-flows netflows列表 4
本文向大家介绍如何使用Python提取MAC地址?,包括了如何使用Python提取MAC地址?的使用技巧和注意事项,需要的朋友参考一下 每台计算机都需要网络接口卡(NIC)才能成为网络或Internet的一部分。分配给该卡的地址称为MAC地址。MAC地址的值对于每个NIC都是唯一的。它也适用于其他可以连接到LAN或Internet的设备,例如打印机和路由器。 要找到MAC地址,我们使用以下方法之一
问题内容: 我需要浏览IP列表,并从该IP上的证书中检索通用名称(对于每个允许端口443连接的IP)。我已经能够使用套接字和ssl模块成功完成此操作。它适用于具有有效的已签名证书的所有IP,但不适用于自签名证书。 如果我使用此方法,则它需要由我的CA捆绑包验证的有效证书: 如果我删除,那么它将连接但根本无法获得证书。 无论证书是否通过ca-bundle进行验证,如何在IP上检索证书的通用名称? 问