从套接字数据事件nodejs中获取字节

问题描述 投票:0回答:1

我有一个奇怪的问题

我一直在尝试实现自己的tls实现,以便能够连接到不符合TLSv1.2规范的服务器(client_random和server_random不是随机的,而是从时间戳生成的,服务器强制执行客户端使记录层版本为tls 1.2来执行握手)

最重要的是,我需要在一个类似于http但不是http(sts / 1.0)的协议中以clearText发送一些数据,然后才能开始tls握手

所以我把两个方面的实现混在一起,但我正在打一些我不知道会发生的事情

当我在tls握手中接收服务器的证书时,我在用Buffer.from(data, "ascii")创建的缓冲区中看到的字节(是的,套接字编码也是ascii)(我也尝试使用utf-8编码)是not我看到的那些wireshark并导致我的x509解析器失败(如果我从wireshark的证书的复制粘贴十六进制流创建缓冲区,则有效)我相信这是一个编码问题,但是我可以使用什么编码来获取data中的原始字节而不必编码它?

例:

wireshark中证书消息的开头:

16:03:03:03:52:0b:00:03:4e:00:03:4b

以ascii编码的nodejs中的证书消息的开头:

16:03:03:00:2a:02:00:00:26:03:03:12

插座使用的是来自net.Socket的插座

我在撰写本文时解决此问题的计划是让低级语言充当代理,接收原始字节,创建这些字节的ascii表示,然后将其发送到我的nodejs套接字。根本不是最好的解决方案,但这是我自己能找到的全部。

PS:如果有人知道一个nodejs tls实现可以接受一个特定的client_random和/或强制tls记录层版本在握手期间为1.2,你将节省我几十个小时的开发我需要的一切。

PS2:我试图在nodejs上寻找一个“原始”tcp套接字来获得对我收到的数据的更多控制,并且有一个“raw-socket”npm包。但是从我看到的情况来看,无法在服务器上设置要连接的端口。如果有人之前使用过这个包,并且知道如何在该包下的tcp套接字中设置端口,我想了解你是如何做到的。

谢谢你的帮助!

node.js sockets ssl tcp tls1.2
1个回答
0
投票

我使用python代理向我发送这些字节的ascii表示,一切正常。我很沮丧,我无法找到一种方法在节点中做到这一点,而不必做一个该死的.node

© www.soinside.com 2019 - 2024. All rights reserved.