无法在本地网络上找到所有机器名称
Can't find all machine name on local network
我们正在尝试获取本地网络上机器的所有 IP 地址和主机名,我们有一个连接到本地网络的显示框(BrightSign 框),我们希望获得有关该框的所有信息。我们可以找到它的 ip 地址,但无法获取主机名。所以我们无法确定哪个 ip 地址分配给了那个盒子。 (我们可以通过盒子自带的程序获知盒子的ip地址;但是我们要自动检测)
这里是我们在c#中使用的代码
`
public void scan(string subnet)
{
Ping myping;
PingReply reply;
IPAddress addr;
IPHostEntry host;
for (int i = 1; i < 255; i++)
{
string subnetn = "." + i.ToString();
myping = new Ping();
//string data = "aa";
//byte[] buffer = Encoding.ASCII.GetBytes(data);
//PingOptions optionss = new PingOptions(64, true);
int timeout = 1000;
reply = myping.Send(subnet + subnetn);
if (reply.Status == IPStatus.Success)
{
try {
addr = IPAddress.Parse(subnet+subnetn);
host = Dns.GetHostEntry(addr);
txtHosts.AppendText(subnet + subnetn + host.HostName.ToString()+"\n");
}
catch {
}
}
}
}`
如果我们使用此代码,系统可以检测到所有 ip 但不是主机名属于电话和我提到的盒子。
简而言之,我们需要拥有本地网络上的所有机器名称和 IP 地址。
那么,你们知道问题是什么吗?我们可以做些什么来解决这个问题。我们做了一些研究并尝试了一些方法。我们尝试发送 ping 我们不能获取主机名的 ip 地址,我们意识到如果机器的 ttl 设置为 64,我们不能获取主机名,但如果它的 ttl 是 128,我们可以设法学习主机名,我也调整了 ping 设置来测试这个挑战,但我仍然有问题。
期待您的回复。
谢谢大家
机器名可以是 DNS 或 NETBIOS 或其他名称。我建议您查看 NMAP,看看它能做什么。如果您想效仿,可以询问具体要求。例如,获取 DNS 名称意味着查询 DNS 服务器,计算机不会仅使用来自 ICMP ping 的名称来回复。如果计算机安全设置允许,您可以进行 netbios 查询,或使用 WMI,或者如果您在域中,则查询域服务器。
我不知道 brightsign 是什么,但没有法律规定设备必须有 DNS 名称,有些设备只使用 IP 地址,仅此而已。也没有法律规定设备必须响应 ping 或任何其他协议。
我们正在尝试获取本地网络上机器的所有 IP 地址和主机名,我们有一个连接到本地网络的显示框(BrightSign 框),我们希望获得有关该框的所有信息。我们可以找到它的 ip 地址,但无法获取主机名。所以我们无法确定哪个 ip 地址分配给了那个盒子。 (我们可以通过盒子自带的程序获知盒子的ip地址;但是我们要自动检测)
这里是我们在c#中使用的代码 `
public void scan(string subnet)
{
Ping myping;
PingReply reply;
IPAddress addr;
IPHostEntry host;
for (int i = 1; i < 255; i++)
{
string subnetn = "." + i.ToString();
myping = new Ping();
//string data = "aa";
//byte[] buffer = Encoding.ASCII.GetBytes(data);
//PingOptions optionss = new PingOptions(64, true);
int timeout = 1000;
reply = myping.Send(subnet + subnetn);
if (reply.Status == IPStatus.Success)
{
try {
addr = IPAddress.Parse(subnet+subnetn);
host = Dns.GetHostEntry(addr);
txtHosts.AppendText(subnet + subnetn + host.HostName.ToString()+"\n");
}
catch {
}
}
}
}`
如果我们使用此代码,系统可以检测到所有 ip 但不是主机名属于电话和我提到的盒子。 简而言之,我们需要拥有本地网络上的所有机器名称和 IP 地址。 那么,你们知道问题是什么吗?我们可以做些什么来解决这个问题。我们做了一些研究并尝试了一些方法。我们尝试发送 ping 我们不能获取主机名的 ip 地址,我们意识到如果机器的 ttl 设置为 64,我们不能获取主机名,但如果它的 ttl 是 128,我们可以设法学习主机名,我也调整了 ping 设置来测试这个挑战,但我仍然有问题。
期待您的回复。 谢谢大家
机器名可以是 DNS 或 NETBIOS 或其他名称。我建议您查看 NMAP,看看它能做什么。如果您想效仿,可以询问具体要求。例如,获取 DNS 名称意味着查询 DNS 服务器,计算机不会仅使用来自 ICMP ping 的名称来回复。如果计算机安全设置允许,您可以进行 netbios 查询,或使用 WMI,或者如果您在域中,则查询域服务器。
我不知道 brightsign 是什么,但没有法律规定设备必须有 DNS 名称,有些设备只使用 IP 地址,仅此而已。也没有法律规定设备必须响应 ping 或任何其他协议。