精华内容
下载资源
问答
  • 局域网IP地址扫描器可以扫描局域网内的IP地址,以及对应的网卡MAC地址,计算机名,所在工作组或域等。局域网IP地址扫描器是一个非常快的IP扫描器和端口扫描器。其目的是为系
  • 局域网IP地址扫描器

    2011-09-01 16:48:22
    不错的ip地址扫描工具,一直在用。可扫描ip地址,主机名,mac地址等信息
  • ipscan-局域网ip地址扫描器 可以查看mac地址
  • visual c++局域网IP地址扫描器,可扫描到局域网的所有机器的名称,IP地址及MAC地址
  • Free IP Scanner是一个非常快的IP扫描器和端口扫描器。可以扫描局域网内的IP地址,以及对应的网卡MAC地址,计算机名,所在工作组或域等。 其目的是为系统管理员和一般用户的监控和管理网络。多线程的页面扫描技术,...
  • 局域网IP扫描器

    2019-07-31 11:36:32
    快速扫描同一局域网所有的IP地址,自动扫描端口号
  • 局域网IP地址扫描器 基于winpcap 网络编程 Visual c++ 6.0 局域网IP地址扫描器 基于winpcap 网络编程 Visual c++ 6.0 局域网IP地址扫描器 基于winpcap 网络编程 Visual c++ 6.0
  • 局域网的网卡和IP地址扫描器 网络管理员的好助手!能保存结果为多种格式便于管理.包括无线网的.网络管理员的好助手
  • 局域网MAC地址扫描器

    2008-10-30 18:17:46
    MAC地址扫描器 可以扫描局域网内的所有在线机子的mac地址及其所对应的IP,同时具有更换自己mac地址的功能
  • 查看局域网内所有电脑的IP地址,机器名称,MAC地址,可以快速发现有冲突的IP电脑设备,快速解决IP电脑冲突问题。
  • 局域网IP扫描器.rar

    2020-06-03 14:44:20
    当需要搜索所在局域网内哪些用户存在,及其IP地址,那么这个工具是非常有用,可以扫描出设备信息及其IP地址
  • Advanced IP Scanner是一款用于Windows 的快速、健壮和易于使用的局域网扫描器。它很容易让您在几秒钟之内得到局域网计算机的相关信息。它使您能够单击访问更多有用的功能- 远程关机和唤醒,RAdmin集成,等等 软件...
  • 可以扫描局域网IP地址MAC地址以及计算机名和工作组。
  • 它Ping每个IP地址以检查它是否还活着,然后选择它,并试图解释主机名,就可以在选项对话框中指定的TCP端口。该程序使用每个单独的线程处理,以减少扫描速度。它也可以显示NetBIOS信息:计算机名,工作组,当前登录...
  • IP地址扫描器

    2013-02-17 15:39:37
    用于局域网IP地址扫描使用,绿色版,使用方便。
  • 局域网IP扫描

    2013-04-01 13:58:39
    IPScan是一款软硬件结合的产品,在针对网络集中管理和增强基础网络接入控制,IP地址分配等方面,IPScan都是行业领先的解决方案。 分布式的 IPScan探测监控每一个VLAN,可以探测出接入到网络中所有的以太网和IP设备...
  • 1.局域网IP地址扫描功能,能够扫描主机名,用户名,工作组和MAC。 2.内网扫描功能,能够扫描到主机名和MAC
  • 局域网IP段查看常用功能介绍: 1.支持对整个IP段的扫描,同时显示对应IP的计算机名、操作系统、MAC地址、工作组等,如果对方开启了共享,则可以直接查看共享资源。 2.协助网管人员迅速掌握每个IP段的IP地址占用...
  • MAC、ip地址扫描器.zip

    2019-11-21 17:03:45
    解决局域网ARP攻击的基础工具。扫描网络中所有主机的IP、MAC地址,统计网络中主机数量。在工具的搜索框中输入IP地址或者IP地址的范围,点击扫描扫描结果包含计算机名称、IP地址、mac地址以及设备制造商。
  • 局域网arp扫描检测

    2011-02-24 09:22:09
    比较实用的局域网IP和MAC地址扫描器,适合中小型网络使用,简单易用,直接解压运行即可。
  • 绝对好用的局域网扫描器,速度快,信息详细。包括ip,以及对应的计算机名,mac地址,工作组
  • ip地址扫描器

    2012-10-15 11:26:28
    很好用的局域网软件,免费的也是汉化版,字数补丁
  • 局域网(内网)IP占用情况扫描器,超直观的界面,完全免费,速度快,2018年最新版本,企业、公司网络管理员必备工具,IP地址管理神器!!
  • 局域网扫描器

    2019-02-16 16:33:47
    多ping:多ping,不同颜色显示ping结果,支持多种方式导入IP地址。IP计算:包含IP信息、子网计算、IP地址规划、路由汇总、路由重叠检查、排序和去重、IP掩码转换、添加前后缀。命令查询:离线查询思科和华为交换机、...
  • netscan局域网ip查看

    2009-12-01 22:26:06
    局域网所有机器ip查看工具。扫描局域网内各个网段的在线电脑的网卡mac地址、主机名称,进行端口扫描,可以查出开放的端口号
  • 蹭网监视,文明蹭网,扫描局域网内机器的mac及IP地址
  • 连接方法是IP地址和端口,有的设备带搜索软件,有的就不带。经常测试环境和现场来回用,难免记混。同时使用网上的一些端口扫描工具,发现有一个问题,就是在进行扫描的时候,不怎么好用,比如,扫描器一般都是带端口...

    近几年工作经常使用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{

    Int32 ldest= inet_addr(hostip); //将IP地址从 点数格式转换成无符号长整型

    Int64 macinfo = newInt64();

    Int32 len= 6;

    SendARP(ldest,0, ref macinfo, reflen);string TmpMac = Convert.ToString(macinfo, 16).PadLeft(12, '0');//转换成16进制  注意有些没有十二位

    Mac = TmpMac.Substring(0, 2).ToUpper();// for (int i = 2; i < TmpMac.Length; i = i + 2)

    {

    Mac= TmpMac.Substring(i, 2).ToUpper() + "-" +Mac;

    }

    }catch(Exception Mye)

    {

    Mac= "获取远程主机的MAC错误:" +Mye.Message;

    }returnMac;

    }

    (3)、主要准备工作做好了,接下来,进入主题,如何通过多线程判断IP是否在线。

    Thread waitT = new Thread(newThreadStart(ipwait));

    waitT.Start();//等待所有线程执行完毕在写入textbox中

    public voidipwait()

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

    ListViewItem lvi;string ip = IPStarttextBox.Text.Split('.')[0] + "." + IPStarttextBox.Text.Split('.')[1] + "." + IPStarttextBox.Text.Split('.')[2] + ".";

    String ipaddr= "";int timeout = int.Parse(TimeOuttextBox.Text);string mac = "";

    progressBar.Minimum=startIp;

    progressBar.Maximum=endIp;try{for (int q = startIp; q <= endIp && isrun == true; q++)

    {//---------------------ping

    ipaddr = ip +q;

    lvi= newListViewItem();

    Ping ping= newPing();

    PingReply reply=ping.Send(IPAddress.Parse(ipaddr), overTime);if (reply.Status ==IPStatus.Success)

    {

    ResuleTextBox.Text+= ipaddr + "Ping时间" + reply.RoundtripTime + "毫秒\n";

    mac=GetMacAddress(ipaddr);//IPHostEntry host = Dns.GetHostEntry(ipaddr);//IPHostEntry host = Dns.GetHostByAddress(ipaddr);//ResuleTextBox.Text += "主机名为 " + host.HostName + "\n";//ScanResultlistBox.Items.Add(ipaddr + " " + mac + " 在线 ");

    lvi.BackColor =Color.LightSeaGreen;

    lvi.Text=ipaddr;

    Task t1 = new Task(GetHostEntry,ipaddr);

    t1.Start();

    t1.Wait(timeout);//设置获取主机名超时时间

    if(t1.IsCompleted)

    {

    lvi.SubItems.Add(t1.Result);

    }else{

    lvi.SubItems.Add("-");

    }

    lvi.SubItems.Add(mac);

    lvi.SubItems.Add("在线");

    }else{

    lvi.BackColor=Color.Pink;

    lvi.Text=ipaddr;

    lvi.SubItems.Add("-");

    lvi.SubItems.Add("-");

    lvi.SubItems.Add("不在线");

    }

    progressBar.Value=q;

    progressBar.Update();

    ListViewUpdate(lvi);

    ResuleTextBox.SelectionStart= ResuleTextBox.Text.Length -1;

    ResuleTextBox.ScrollToCaret();

    }

    ScanResultlistBox.Items[ScanResultlistBox.Items.Count- 1].EnsureVisible();

    }catch(Exception ex)

    {

    Console.WriteLine(ex.ToString());

    isrun= false;

    progressBar.Value=progressBar.Minimum;

    startScanbutton.Enabled= true;

    stopScanbutton.Enabled= false;

    ResuleTextBox.Text+=ex.ToString();

    }

    startScanbutton.Enabled= true;

    stopScanbutton.Enabled= false;

    isrun= false;

    progressBar.Value=progressBar.Maximum;

    }

    说明一下:在我获取主机名的过程中,发现如果不对获取主机名设置一个超时时间,那么将会出现一个问题,程序将会卡在获取主机名的这个阶段,无法向下继续执行,因为,为了高效的执行,给获取主机名设置一个超时时间,将会大大提高程序的执行效率。

    二、主要端口状态获取方法

    Thread waitT = new Thread(newThreadStart(portwait));

    waitT.Start();//等待所有线程执行完毕在写入textbox中

    public voidportwait()

    {int startIp = Int32.Parse(IPStarttextBox.Text.Split('.')[3]);int endIp = Int32.Parse(IPStoptextBox.Text.Split('.')[3]);string ip = IPStarttextBox.Text.Split('.')[0] + "." + IPStarttextBox.Text.Split('.')[1] + "." + IPStarttextBox.Text.Split('.')[2] + ".";

    String mac= "" , ipaddr ="";

    ListViewItem lvi;

    String host;int timeout = int.Parse(TimeOuttextBox.Text);for (int q = startIp; q <= endIp && isrun == true; q++)

    {

    ResuleTextBox.Text+= (ip + q) + "IP地址扫描中---\n";//---------------------ping

    Ping ping = newPing();

    PingReply reply= ping.Send(IPAddress.Parse(ip +q), overTime);

    ipaddr= ip +q;if (reply.Status ==IPStatus.Success)

    {

    ResuleTextBox.Text+=ipaddr + "Ping时间" + reply.RoundtripTime + "毫秒\n";

    mac=GetMacAddress(ipaddr);

    Task t1 = new Task(GetHostEntry, ipaddr);

    t1.Start();

    t1.Wait(timeout);if(t1.IsCompleted)

    {

    host=t1.Result.ToString();

    }else{

    host= "-";

    }

    ResuleTextBox.Text+= "MAC地址为" + mac + "\n";

    }else{//ScanResultlistBox.Items.Add(ipaddr + " " + "-" + " " + "-" + " " + " - 不可达\n");

    lvi = newListViewItem();

    lvi.BackColor=Color.Pink;

    lvi.Text=ipaddr;

    lvi.SubItems.Add("-");

    lvi.SubItems.Add("-");

    lvi.SubItems.Add("不可达");

    ResuleTextBox.Text+= ipaddr + "不可达\n";

    ListViewUpdate(lvi);continue;

    }//---------------------end

    Thread[] tharr;if (numThread < (portEnd - portStart + 1))

    {

    tharr= new Thread[portEnd - portStart + 1];

    }else{

    tharr= newThread[numThread];

    }

    str= new List();for (int i = portStart; (i <= portEnd) && (isrun ==true); i++)

    {

    Thread thread= new Thread(newParameterizedThreadStart(Scan));

    thread.Start(new IPEndPoint(IPAddress.Parse(ip + q), i));//每扫描一个端口创建一个线程

    ResuleTextBox.Text+= i + "端口扫描中---\n";

    tharr[i- portStart] =thread;

    progressBar.Value=i;string s =State(i);

    lvi= newListViewItem();if (s == "Open")

    {

    lvi.BackColor=Color.LightSeaGreen;

    }else{

    lvi.BackColor=Color.Silver;

    }

    lvi.Text= ipaddr + ":" +i.ToString();

    lvi.SubItems.Add(host);

    lvi.SubItems.Add(mac);if(checkBox1.Checked)

    {if (s == "Open")

    {//ScanResultlistBox.Items.Add(ip + q + " " + mac +" "+ i + " " + s + " " + " " + Service(i));

    lvi.SubItems.Add(i.ToString());

    lvi.SubItems.Add(s);

    lvi.SubItems.Add(Service(i));

    }else{

    lvi= null;

    }

    }else{if (s == "Open")

    {//ScanResultlistBox.Items.Add(ip + q + " " + mac + " " + i + " " + s + " " + " " + Service(i));

    lvi.SubItems.Add(i.ToString());

    lvi.SubItems.Add(s);

    lvi.SubItems.Add(Service(i));

    }else{//ScanResultlistBox.Items.Add(ip + q + " " + mac + " " + i + " " + s + " " + " ");

    lvi.SubItems.Add(i.ToString());

    lvi.SubItems.Add(s);

    lvi.SubItems.Add("");

    }

    }if (lvi != null)

    {

    ListViewUpdate(lvi);

    }

    }bool iscon = true;//第一个线程等待时间

    for (int i = 0; i < tharr.Length; i++)

    {if (tharr[i] == null)continue;while (tharr[i].IsAlive && iscon)//端口超时设置时间(目前200毫秒),一直等待此ip所有线程执行完毕才扫描下个ip

    {

    Thread.Sleep(200);

    iscon= false;//第一个线程给200ms等待时间,其他线程由于同步执行的,所以没等待时间了,如果线程还没执行完,说明此端口不可达。

    }

    }

    str.Sort();

    ResuleTextBox.Text+= "开放端口:";for (int k = 0; k < str.Count; k++)

    ResuleTextBox.Text+= str[k] + " ";

    ResuleTextBox.Text+= "\n";

    }

    ScanResultlistBox.Items[ScanResultlistBox.Items.Count- 1].EnsureVisible();if (isrun == true)

    {

    MessageBox.Show("扫描完成");

    progressBar.Value=progressBar.Minimum;

    startScanbutton.Enabled= true;

    stopScanbutton.Enabled= false;

    isrun= false;

    }else{

    MessageBox.Show("扫描终止");

    startScanbutton.Enabled= true;

    stopScanbutton.Enabled= false;

    progressBar.Value=progressBar.Minimum;

    isrun= false;

    }

    }public string State(inti)

    {

    str.Sort();for (int k = 0; k < str.Count; k++)

    {string s =str[k];if (Convert.ToString(i) ==s)return "Open";

    }return "Closed";

    }public string Service(inti)

    {switch(i)

    {case 80:return "HTTP协议代理服务";case 135:return "DCE endpoint resolutionnetbios-ns";case 445:return "安全服务";case 1025:return "NetSpy.698(YAI)";case 8080:return "HTTP协议代理服务";case 8081:return "HTTP协议代理服务";case 3128:return "HTTP协议代理服务";case 9080:return "HTTP协议代理服务";case 1080:return "SOCKS代理协议服务";case 21:return "FTP(文件传输)协议代理服务";case 23:return "Telnet(远程登录)协议代理服务";case 443:return "HTTPS协议代理服务";case 69:return "TFTP协议代理服务";case 22:return "SSH、SCP、端口重定向协议代理服务";case 25:return "SMTP协议代理服务";case 110:return "POP3协议代理服务";default:return "Unknow Servies";

    }

    }public void Scan(objectPoint)

    {

    IPEndPoint IPPoint=(IPEndPoint)Point;try{

    TcpClient tcp= newTcpClient();

    tcp.Connect(IPPoint);if(tcp.Connected)

    str.Add(Convert.ToString(IPPoint.Port));

    }catch(Exception ex)

    {

    Console.WriteLine(ex.ToString());

    }

    }

    好了,大家最后,可能都会说,我不想设计,也不想开发,我想要现成的怎么办?当然了,最后附上程序,大家可以实际进行测试使用。

    工具链接:http://download.csdn.net/detail/dwx1005526886/9808540

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 355
精华内容 142
关键字:

局域网ip地址扫描器