python扫描局域网端口和ip_如何高效实现扫描局域网IP、主机名、MAC和端口

本文介绍了一个使用Python编写的局域网IP和端口扫描工具,旨在解决设备连接和测试场景中的不便。工具包括IP地址匹配、主机名获取、MAC地址获取等功能,并通过多线程提高扫描效率。此外,还提供了端口状态检查,能够快速识别开放端口及其对应服务。附带源码下载链接,供读者直接使用和测试。
摘要由CSDN通过智能技术生成

近几年工作经常使用RFID识读器,智能家居网关,温湿度传感器、串口服务器、视频编码器等,一般是有串口和网口,由于现场原因一般较少使用串口,大多使用网口。连接方法是IP地址和端口,有的设备带搜索软件,有的就不带。经常测试环境和现场来回用,难免记混。同时使用网上的一些端口扫描工具,发现有一个问题,就是在进行扫描的时候,不怎么好用,比如,扫描器一般都是带端口扫描的,但是,我仅仅只用扫描设备在不在线,不用扫描端口,但是有一些设备是只要扫描端口,这个怎么更方便更好用呢?

同时在扫描成功之后,需要通过TCP连接到设备,发数据,看数据能不能正常相应,或者设备状态对不对,这是不是又要单独开另外一个软件?使用起来,比较繁琐,因此就根据自己的需要制作了一个小工具,用来扫描IP和端口。

扫描速度一定要快,成功和不成功区分要明显,好了,先上图:

一、主要IP扫描方法:

(1)、IP地址匹配,看IP设置是否正确

//匹配正确的IP地址

Regex rgx = new Regex(@"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$");

if (rgx.IsMatch(IPStarttextBox.Text) && rgx.IsMatch(IPStoptextBox.Text))//匹配正确IP

{

if (scan_type == 1)

{

int startIp = Int32.Parse(IPStarttextBox.Text.Split('.')[3]);

int endIp = Int32.Parse(IPStoptextBox.Text.Split('.')[3]);

progressBar.Minimum = startIp;

progressBar.Maximum = endIp;

}

else

{

if (PortStarttextBox.Text == "")

{

MessageBox.Show("请输入端口号!");

}

else

{

portStart = Int32.Parse(PortStarttextBox.Text);

portEnd = Int32.Parse(PortEndtextBox.Text);

progressBar.Minimum = portStart;

progressBar.Maximum = portEnd;

}

if (portEnd < portStart)

{

MessageBox.Show("请填写正确端口范围");

return;

}

}

}

else

{

MessageBox.Show("请填写正确IP");

return;

}

(2)、获取主机名

public static string GetHostEntry(objectip)

{string hostname = "-";try{

IPHostEntry host=Dns.GetHostEntry(ip.ToString());

hostname=host.HostName;

}catch(Exception ex)

{

Console.WriteLine(ex.ToString());

}returnhostname;

}

(3)、获取MAC地址

[DllImport("ws2_32.dll")]private static extern int inet_addr(stringcp);

[DllImport("IPHLPAPI.dll")]private static extern int SendARP(Int32 DestIP, Int32 SrcIP, ref Int64 pMacAddr, refInt32 PhyAddrLen);private string GetMacAddress(string hostip)//获取远程IP(不能跨网段)的MAC地址

{string Mac = "";try{

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值