[源码]K8 Cscan插件 C#获取内网主机IP/机器名/Banner/网页标题

[源码]K8 Cscan模块 C#扫描内网主机IP/机器名/Banner/网页标题源码

Cscan内置Delphi、VC、.NET例子,需要更多功能,请自行添加完善

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Text.RegularExpressions;

namespace CscanDLL
{
    public class scan
    {
        public static string run(string ip)
        {
            if (string.IsNullOrEmpty(ip))
                return "";
            else
            {
                string hostName = "";
                //return ip;
                //return System.Net.Dns.GetHostByAddress(ip).HostName;
                //192.11.22.10    Microsoft-IIS/10.0      IIS Windows
                //192.11.22.1     H3C-Miniware-Webs       ER3200G2
                return ip + "\t" + getURLbanner(ip) + "\t" + GetTitle(getHtml("http://" + ip,2));
                //return ip + "\t" + hostName + "\t[" + getURLbanner(ip) + "]\t[" + GetTitle(getHtml("http://" + ip)) + "]";
                //return ip + "\t" + System.Net.Dns.GetHostByAddress(ip).HostName;

            }

        }

        private static string getURLbanner(string url)
        {

            url = "http://" + url;

            try
            {
                var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
                req.Method = "HEAD";
                req.Timeout = 10000;
                var res = (HttpWebResponse)req.GetResponse();

                if (res.StatusCode == HttpStatusCode.OK || res.StatusCode == HttpStatusCode.Forbidden || res.StatusCode == HttpStatusCode.Redirect || res.StatusCode == HttpStatusCode.MovedPermanently)
                {
                    return res.Server;
                }

                //res.Close();

                return res.Server;
            }
            catch (WebException ex)
            {
                return "";
            }
        }

        private static string GetTitle(string html)
        {

            String regex = @"<title>.+</title>";

            String title = Regex.Match(html, regex).ToString();
            title = Regex.Replace(title, @"[\""]+", "");
            return title;

        }

        private static string getHtml(string url)
        {

            try
            {
                if (!url.ToLower().Contains("https://") && !url.ToLower().Contains("http://"))
                    url = "http://" + url;

                WebClient web = new WebClient();
                byte[] buffer = web.DownloadData(url);
                return Encoding.UTF8.GetString(buffer);

            }
            catch (Exception ex)
            {
                return ex.Message;
            }

        }

    }
}

编译成netscan.dll后,放置Cscan.exe同目录即可(netscan.dll优先级最高,无须删除其它插件)

ip.txt填上当前IP段或内网多个IP段,执行Cscan.exe。

Cscan20对应.net 2.0编译,所以编译的DLL也要对应版本

实战使用哪个版本,由目标系统已安装.net版本来决定。

结果如图

原文地址:https://www.cnblogs.com/k8gege/p/10519512.html

时间: 2025-01-10 00:01:40

[源码]K8 Cscan插件 C#获取内网主机IP/机器名/Banner/网页标题的相关文章

shell脚本批量获取内网主机的MAC地址

这个shell脚本用来批量获取192.168.4.0/24网段的内网主机的mac地址 #!/bin/bash #Author:Jink #这脚本使用ping和arp命令获取内网主机的MAC地址,查询到的MAC地址写入到文件中 myping(){ ping -c2 -w1 -i0.5 $1 &>/dev/null if [ $? -eq 0 ];then arp $1 | tail -1 | awk '{print $1,$3}'>> /tmp/mactable.txt fi }

Spring Boot 揭秘与实战 源码分析 - 开箱即用,内藏玄机

文章目录 1. 开箱即用,内藏玄机 2. 总结 3. 源代码 Spring Boot提供了很多"开箱即用"的依赖模块,那么,Spring Boot 如何巧妙的做到开箱即用,自动配置的呢? 开箱即用,内藏玄机 Spring Boot提供了很多"开箱即用"的依赖模块,都是以spring-boot-starter-xx作为命名的.例如,之前提到的 spring-boot-starter-redis.spring-boot-starter-data-mongodb.spri

Spring事务源码解析(二)获取增强

在上一篇文章@EnableTransactionManagement注解解析中,我们搭建了源码阅读的环境,以及解析了开启Spring事务功能的注解@EnableTransactionManagement的实现逻辑 在进行接下来的源码解析之前我想大家应该知道,当我们使用传统的jdbc应用事务的时候是不是做了如下操作: 开启事务 save.update.delete等操作 出现异常进行回滚 正常情况提交事务 而在Spring中我们好像只需要关心第三步,也就是我们的业务,而其他的操作都不需要关心.那么

nodejs中获取内网ip地址

今天同事有个需求,希望用nodejs里的web服务器的对应的站点可以支持内网访问,后来发现修改express里的hostname属性为自己的内网ip就可以了.但是问题是,我们的机器都是自动获取内网ip,那么这次写死的hostname下次基本上就不能用了,于是我们想到了在nodejs里动态获取内网ip,并且把值赋给express的open方法就可以了,于是我按照这个思路开工了. 我们先了解怎么获取内网ip,网上的通用方法我试了下,在我机器里是无效的,调试了下才发现了它这个不是完全通用的,于是我针对

C#获取内网和外网IP

写了个小客户端,里面用到了获取内网和外网的IP地址,代码如下: // InnerIP var ipHost = Dns.Resolve(Dns.GetHostName()); var ipaddress = ipHost.AddressList[0]; innerIP = ipaddress.ToString(); /// <summary> /// 获得客户端外网IP地址 /// </summary> /// <returns>IP地址</returns>

Android获取外网和内网的IP

很晚了,直播上代码: /** * 获取外网的IP(要访问Url,要放到后台线程里处理) * * @Title: GetNetIp * @Description: * @param @return * @return String * @throws */ public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; String ipLine = ""; HttpURLConnect

构建n2n网络,实现随时随地控制内网主机

1.对于控制内网主机的方案有很多,但是如果没有公网的IP地址,想通过别人开放的公网主机实现随时随地控制内网的主机的方案却不多. 对于没有公网IP的用户,又想实现控制内网主机,甚至是自己手机的用户,这里也许是你的一个好选择. 2.对于构建VPN的用户来说,这里也是一个很好的选择,自己构建一个supernode的超级节点服务器即可. 3.对于强烈指示欲望的读者,可以深究其源码,细细品味下,毕竟这里的源码数量不是太多: 4.对应想了解如何如何打通通道的用户,也可以看其源码,所有的一切都写在里面了,所有

外网主机A连接内网主机B

实现通过外网的主机A连接内网的主机B 设置内网主机B免密登陆外网主机A 在主机B中输入下面的命令,并且一直回车: ssh-keygen 然后会在/root/.ssh/下生成2个文件:id_rsa和id_rsa.pub. 可以用下面的命令查看: ls /root/.ssh/ 在外网主机A中建立自己的文件夹,用来存id_rsa.pub文件.把内网主机B中的id_rsa.pub发到外网主机A的文件夹中: scp ~/.ssh/id_rsa.pub [email protected]123.206.18

Linux 下查看局域网内所有主机IP和MAC

用nmap对局域网扫描一遍,然后查看arp缓存表就可以知道局域内ip对应的mac了.nmap比较强大也可以直接扫描mac地址和端口.执行扫描之后就可以 cat /proc/net/arp查看arp缓存表了. 进行ping扫描,打印出对扫描做出响应的主机: $ nmap -sP 192.168.1.0/24 仅列出指定网络上的每台主机,不发送任何报文到目标主机: $ nmap -sL 192.168.1.0/24 探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS 22,23,25