gpt4 book ai didi

ios - 解析 iOS 上的 NetBIOS 名称

转载 作者:行者123 更新时间:2023-12-01 10:26:05 25 4
gpt4 key购买 nike

iOS上有什么方法可以解决NetBIOS名称使用 IP 地址?

可以解决NetBIOS在 Mac 上使用 命名终端命令:

smbutil -v status -ae



smbutil 是开源的,所以你可以在这里找到它:
http://www.apple.com/opensource/ -> http://opensource.apple.com//source/smb/

在 GitHub 上也是如此:
https://github.com/unofficial-opensource-apple/smb

但是该实用程序广泛使用私有(private)和 Mac OS 特定的框架,因此 Xcode 甚至无法为 iOS 编译源代码。

最佳答案

我认为您只需要进行反向 DNS 查找,gethostbyaddr ,因为它看起来像 DNS,gethostbyname , 是唯一用于从 NetBios 名称到 IP 的东西。

查看来自 Apple 的来源,smbutil 'status' 模式下的应用程序首先调用' nb_resolvehost ' 它只是使用 'gethostbyname' 从 NetBios 名称中获取 IP 地址。 'gethostbyname' 在后台使用 DNS:

nb_resolvehost_in(const char *name, struct sockaddr **dest)
{
struct hostent* h;
struct sockaddr_in *sinp;
int len;

h = gethostbyname(name);
if (!h) {
warnx("can't get server address `%s': ", name);
herror(NULL);
return ENETDOWN;
}
if (h->h_addrtype != AF_INET) {
warnx("address for `%s' is not in the AF_INET family", name);
return EAFNOSUPPORT;
}
if (h->h_length != 4) {
warnx("address for `%s' has invalid length", name);
return EAFNOSUPPORT;
}
len = sizeof(struct sockaddr_in);
sinp = malloc(len);
if (sinp == NULL)
return ENOMEM;
bzero(sinp, len);
sinp->sin_len = len;
sinp->sin_family = h->h_addrtype;
memcpy(&sinp->sin_addr.s_addr, h->h_addr, 4);
sinp->sin_port = htons(SMB_TCP_PORT);
*dest = (struct sockaddr*)sinp;
return 0;
}

在此调用之后,“smbutil status”然后使用函数“ nbns_getnodestatus”发送某种 SMB 查询。 ' 到 SMB 端口上先前给定的 IP 地址。从这个查询命令获取 Workgroup 和 Servername(不确定这是指哪个服务器)。

关于ios - 解析 iOS 上的 NetBIOS 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39589655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com