套接字流量字节复制(?)
Socket Traffic Byte Duplication (?)
我会尽量保持简洁。我正在处理一个原始的二进制网络跟踪,我正在对一个可以解析其内容的服务进行重播。我粗糙的python客户端是这样工作的:
with closing(Telnet('localhost', 5001)) as conn, open(fname, 'rb') as trace:
for seq, source, packet in split(trace):
conn.write(packet)
这工作(大部分)如预期。它在c++中被接收,代码看起来像这样:
string temp(8192, ' ');
int status = ::recv(socket, &temp[0], 8192, 0);
这个问题只证明了字节序列ff
是重复的。一个21字节的数据包工作:
Send: 000000150000000e00000001000000050005d6e480
Recv: 000000150000000E00000001000000050005D6E480
一个29字节的数据包没有——它被接收为30字节:
Send: 0000001d0000000e000000010000000d000dd63380f400ff0000030203
Recv: 0000001D0000000E000000010000000D000DD63380F400FFFF0000030203
一个53字节的数据包也失败,在远端报告57字节:
Send: 000000350000000e00000001000000250008d68f001600000008d633000c0001000ed68f001700003840ffffffff0007d68f80f300
Recv: 000000350000000E00000001000000250008D68F001600000008D633000C0001000ED68F001700003840FFFFFFFFFFFFFFFF0007D68F80F300
使用更任意的序列,结果接收端:
Send: 54ff68ff69ff73ff20ff69ff73ff20ff61ff20ff74ff65ff73ff74ff2e # chr(255).join('This is a test.') - length 29.
Recv: 54FFFF68FFFF69FFFF73FFFF20FFFF69FFFF73FFFF20FFFF61FFFF20FFFF74FFFF65FFFF73FFFF74FFFF2E // length 43
窟?
问题与telnet协议有关。字节0xff
在telnet解释中意味着命令IAC,它出现在telnet命令之前。例如:
IAC BRK 0xff 0xf3
IAC EL 0xff 0xf8
序列0xff 0xff
用于转义此IAC以发送0xff
。
相关文章:
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 使用strcpy将char数组的元素复制到另一个数组
- 是否可以初始化不可复制类型的成员变量(或基类)
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 复制列表初始化的隐式转换的等级是多少
- 当从函数参数中的临时值调用复制构造函数时
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 复制几乎为空的数组的最快方法
- 以下示例中如何避免代码复制?C++/库达
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 为什么复制而不是移动数据元素?
- 文件系统:复制功能的速度秘诀是什么
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 套接字流量字节复制(?)