我正在尝试使用Scapy从pcap提取TLS元数据。我能够成功解析数据包和单个消息,例如client-hello,server-
hello等及其字段。我遇到的麻烦是TLS记录分布在多个TCP数据包/段中。对于大型TLS消息(例如应用程序数据)或服务器在一个TLS帧中发送多个TLS消息(服务器问候,证书等)时,通常会发生这种情况。scapy表示,在这种情况下,它具有TLS
/ SSLv2层,但我无法从此类帧中提取任何有意义的信息。当我在wireshark中查看相同的pcap时,wireshark显示
Reassembled TCP segments (T bytes): #X (x), #Y(y), #Z(z)
其中T是合计总数;X,Y,Z是帧ID,x,y,z是每个帧中占总T的字节数。Wireshark在解析TLS帧之前会重新组装整个TLS有效负载。
我的代码中有这样的内容:
if pkt.haslayer(TCP) and pkt.haslayer(TLS):
parseTLS(pkt)
elif pkt.haslayer(TCP) and pkt.haslayer(SSLv2):
parseSSLv2(pkt)
当它遇到部分TLS数据包时,该代码始终落入SSLv2。我是否有办法准确地将数据包标识为部分tls段并进行累积,然后像wireshark一样处理完整的TLS帧?如果是这样,我该怎么做。任何指针或帮助表示赞赏。谢谢。
不知道是否有更好的解决方案,但这是我为解决问题所做的工作。累积的帧大小似乎与Wireshark从多个数据包重组TLS帧时的行为一致。
注意
:此解决方案假定没有错误排序的数据包或重复。此外,此处显示的解决方案也不完整。以下代码仅显示当TLS帧跨越单个TCP流的多个IP数据包时如何累积TLS帧。请遵循Janus的建议(在下面的评论中提到),或提出自己的解决方案以累积不同的流。
def extractDataFromPcap(pcapfile):
load_layer("tls")
try:
reader = PcapReader(pcapfile)
# tls frame accumulation related variables.
tls_accumulate = False
tls_leftover_len = 0
tls_blist = list()
for pkt in reader:
try:
if tls_accumulate and pkt.haslayer(TCP):
ip_tcp_hdr_overhead = ((pkt[IP].ihl*4) + (pkt[TCP].dataofs*4))
pkt_payload_len = (pkt[IP].len - ip_tcp_hdr_overhead)
tls_leftover_len = (tls_leftover_len - pkt_payload_len)
tls_blist.append(raw(pkt[TCP].payload))
if tls_leftover_len <= 0:
# got complete TLS frame
tls_raw_bytes = b''.join(tls_blist)
# parse accumulated frame.
tls = TLS(tls_raw_bytes)
#... process tls object
# reset accumlation variables.
tls_accumulate = False
tls_leftover_len = 0
tls_blist = list()
else:
continue
if pkt.haslayer(TCP) and pkt.haslayer(TLS):
if not tls_accumulate:
# Process new TLS frame.
# Pkt over head: ip-hdr-len + tcp-hdr-len
ip_tcp_hdr_overhead = ((pkt[IP].ihl*4) + (pkt[TCP].dataofs*4))
pkt_payload_len = (pkt[IP].len - ip_tcp_hdr_overhead)
if pkt[TLS].len > pkt_payload_len:
# partial TLS frame. Start accumulating.
tls_accumulate = True
tls_leftover_len = (pkt[TLS].len - pkt_payload_len)
tls_blist.append(raw(pkt[TCP].payload))
else:
# complete TLS frame
# ... process complete TLS Frame
except Exception as error:
pkt.show()
print("tcp-processing error: %s", error)
sys.exit(-1)
except Exception as error:
print("packet processing error: %s", error)
sys.exit(-1)
一些背景信息:这个项目是一个简单的图像,在项目结束时,它将成为我电脑屏幕的背景。 我想模糊背景的一部分,这样文本的一部分就更清晰了。我可以模糊图像中文本本身的部分,但这是我最后的选择。我不想这样做,因为在未来的项目中,我想随着一些东西的移动而主动模糊背景(我还没有开始这个未来的项目,所以我无法更好地描述这个项目)。 有人知道如何模糊背景的一部分吗?对于这个项目,它需要大约400x200像素,模糊1
本部分就 Ceph 存储集群常见的问题做了归纳和总结,方便运维人员进行故障排除。
Scapy是一款强大的交互式数据包处理工具、数据包生成器、网络扫描器、网络发现工具和包嗅探工具。它提供多种类别的交互式生成数据包或数据包集合、对 数据包进行操作、发送数据包、包嗅探、应答和反馈匹配等等功能。Python解释器提供交互功能,所以要用到Python编程知识(例如 variables、loops、和functions)。支持生成报告,且报告生成简单。
问题内容: 我正在尝试读取TLS消息。具体来说,是带有证书详细信息(handshake_type = 11)的证书。我正在做的是先检查邮件中是否包含。如果是这样,我将像这样提取有效负载:。接下来,我要检查 第一个 字节是,接下来的两个字节需要是正确的TLS版本。 问题在于此消息没有通过这些条件。WireShark向我显示了位置上的字节(已附加图片),但是我想这样做是为了方便。 那么我的假设是有效载
DShell Dshell是一个基于Python的网络取证分析工具包。 该工具包由美国陆军研究实验室开发。 该开源工具包的发布于2014年。该工具包的主要重点是轻松进行取证调查。 该工具包由大量解码器组成,如下表所示。 Sr.No. 解码器名称和描述 1 dns 这用于提取DNS相关的查询 2 reservedips 标识DNS问题的解决方案 3 large-flows netflows列表 4
问题内容: 我有一个PHP代码,需要将数据库表数据编码为json。所以我使用了json_encode()。 我使用此处给出的表格-http: //www.geekality.net/2011/08/21/country-names-continent- names-and-iso-3166-codes-for- mysql/ 对于不同的输入,此代码的行为似乎有所不同。 查询- 不返回任何json值
由于以下错误消息,我无法使用WebRequest连接到HTTPS服务器(TLS 1.3): 请求被中止:无法创建SSL/TLS安全通道。 以前的TLS版本是1.2,使用下面的代码,我可以正确获取页面,但当页面ssl升级到TLS 1.3时,我出现了错误,并且我找不到任何解决方案: 事实上,我认为应该是这样的: 但是没有。
3.1 PG 无法达到 CLEAN 状态 创建一个新集群后,PG 的状态一直处于 active , active + remapped 或 active + degraded 状态, 而无法达到 active + clean 状态 ,那很可能是你的配置有问题。 你可能需要检查下集群中有关 Pool 、 PG 和 CRUSH 的配置项,做以适当的调整。 一般来说,你的集群中需要多于 1 个 OSD,