N平: 错误的袜子长度传递到 nsock iod set localadr breaks -- tcp- connect and unprivileed -- udp on macOS/BSD 上
** 描述错误**
在macOS和BSDsnping-tcp-connection'上,每一个探测器都失败了,没有特权的nping-udp'也有同样的问题。 从来没有被发送。
nping/ProbeMode.cc中的两个探测器处理器通过"sizeof(sockaddr storage)",即128,作为本地地址的长度:
nping/ProbeMode.cc: 1874 nsock iod set localaddr(fds [packetno%max iods], o.get SourceSockAddr( & ss), sizeof( sockaddr storage) ).
nping/ProbeMode.cc: 2083 nsock iod set localaddr(fds [packetno%max iods], o.get SourceSockAddr( & ss), sizeof( sockaddr storage) ).地址本身仅是袜子 in或袜子 in 6. nsock iod set localaddr ()' 复制到“nsi->locallen”(nsock/src/nsock iod.c:392)和mksock bind addr () ' ,不作改动。 Linux并不在意过长的长度,但BSD堆栈验证后还原了EINVAL,因此绑定失败而连接尝试无从进行.
这看起来和3438号一样 84420aa3更正了"NmapOps:: set sourceSockAddr ()","目标: set sourceSockAddr ()"和"NpingTarget: set sourceSockAddr ( ()"中的长度,但这两个呼叫站点将长度直接传入nsock,因此这三个站点都没有适用于它们.
** 废除**
听听18080号新闻
$n平 -- tcp -- -- 连接 -- p 18080 127.0.0.1 -c 5 -- -- 平分 5
开始 Nping 7.991SVN (https://nmap.org/nping.
libnsock mksock bind addr (): 绑定到 0.0. 0.0: 0 失败 (IOD # 1): 无效的参数 (22)
RCVD(0.0012s) 从0.0:0收到可能的TCP RST -- > 无效的参数
SENT (0. 013s) 启动 TCP 手握 > 127.0.0.1:18080
. . . . . . . .
TCP 连接尝试 : 5 QQ 成功连接 : 0 QQ 失败 : 5 (100.0%)`nping-udp-p 18080 127.0.0.1' 无根击中相同的绑定故障。
** 预期行为**
握手应该完成。 两位操作员已经为目的地袜子划出几行 " slen " 的正确长度,并据此:
TCP 连接尝试: 5 QQ 成功连接: 5 QQ 失败: 0 (0.00%)我还检查了`-source-port'仍然绑定在您要求它之后的地方,使用一个打印客户源端口的收听器,IPv6对一个*1收听器起作用.
** 资料(请填写下列资料):**
- OS: macOS 26.3(Darwin 25.3.0,arm64)
- `nping-version'的输出:Nping版本7.991SVN(https://nmap.org/nping),由大师建于d70c2d9
- “nmap-version”的输出:n/a,我只从树上建出正线
- “nmap-iflist”输出:无
** 其他情况**
这很容易错过,因为绑定错误只出现在nsock日志行中. 在正常的动词中,你只看到每一个连接失败, 它的读法像目标拒绝你,而不是一些地方出错。 #1939 覆盖它的那一面。
我有一个补丁,会发送公关.
内容来源: nmap/nmap