精华内容
下载资源
问答
  • 150讲轻松学习Python网络爬虫

    万人学习 2019-05-16 15:30:54
    另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。   从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+定期答疑
  • 两台机器同时加载IP网络报文透明解密模块,此时机器A和机器B之间网络通信的IP报文将采用密文形式传输防止别人窃取数据,从而保证数据传输过程中的安全。 需要其它linux系统测试,欢迎把系统版本和内核版本留给...
  • IP网络报文透明解密系统测试版(for windows) ...两台机器同时加载IP网络报文透明解密模块,此时机器A和机器B之间网络通信的IP报文将采用密文形式传输防止别人窃取数据,从而保证数据传输过程中的安全。
  • 24 * 365) = 69 * 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId * 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号 * 起来...

     

    snowflake雪花算法最后是得到一个64位的长整型数值,64位如图上说明,算法不复杂,却是一个很好的ID生成策略。

    10位工作机器id 一般由5位工作Id+5位machine编号,来唯定位一台机器,

    12位序列能在单位毫秒内产生4096个ID序号 。显然10位工作机器id和12位序列都是可以自由调整的

    下面的代码可直接在项目中使用:

    +10位工作机器id默认实现-> 5位用服务ip得到 + 5位的随机数 --- 详见代码177行的说明

    +修正生成id偶数问题 ---详见代码115行

    调用 SnowflakeIdUtil.newId() 获取新id

    详见main()测试方法

    package snowflake;
    
    import java.net.Inet4Address;
    import java.net.InetAddress;
    import java.net.NetworkInterface;
    import java.util.Enumeration;
    import java.util.Random;
    
    /**
     * @author tan
     * @date 2020-04
     * 
     * Twitter_Snowflake<br>
     * SnowFlake的结构如下(每部分用-分开):<br>
     * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 <br>
     * 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0<br>
     * 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截)
     * 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69<br>
     * 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId<br>
     * 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号<br>
     * 加起来刚好64位,为一个Long型。<br>
     * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。
     */
    public class SnowflakeIdUtil {
    
        // ==============================Fields===========================================
        /** 开始时间截 (2019-01-01) */
        private final long twepoch = 1546272000000L;
    
        /** 机器id所占的位数 */
        private final long workerIdBits = 5L;
    
        /** 数据标识id所占的位数 */
        private final long datacenterIdBits = 5L;
    
        /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */
        private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
    
        /** 支持的最大数据标识id,结果是31 */
        private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
    
        /** 序列在id中占的位数 */
        private final long sequenceBits = 12L;
    
        /** 机器ID向左移12位 */
        private final long workerIdShift = sequenceBits;
    
        /** 数据标识id向左移17位(12+5) */
        private final long datacenterIdShift = sequenceBits + workerIdBits;
    
        /** 时间截向左移22位(5+5+12) */
        private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
    
        /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */
        private final long sequenceMask = -1L ^ (-1L << sequenceBits);
    
        /** 工作机器ID(0~31) */
        private long workerId;
    
        /** 数据中心ID(0~31) */
        private long datacenterId;
    
        /** 毫秒内序列(0~4095) */
        private long sequence = 0L;
    
        /** 上次生成ID的时间截 */
        private long lastTimestamp = -1L;
        
        /** 默认实现,工作ID用本机ip生成,数据中心ID 用随机数 */
        private static SnowflakeIdUtil snowflakeIdUtil;
    
        //==============================Constructors=====================================
        /**
         * 构造函数
         * @param workerId 工作ID (0~31)
         * @param datacenterId 数据中心ID (0~31)
         */
        public SnowflakeIdUtil(long workerId, long datacenterId) {
            if (workerId > maxWorkerId || workerId < 0) {
                throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
            }
            if (datacenterId > maxDatacenterId || datacenterId < 0) {
                throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId));
            }
            this.workerId = workerId;
            this.datacenterId = datacenterId;
        }
    
        // ==============================Methods==========================================
        /**
         * 获得下一个ID (该方法是线程安全的)
         * @return SnowflakeId
         */
        public synchronized long nextId() {
            long timestamp = timeGen();
    
            //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
            if (timestamp < lastTimestamp) {
                throw new RuntimeException(
                        String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
            }
    
            //如果是同一时间生成的,则进行毫秒内序列
            if (lastTimestamp == timestamp) {
                sequence = (sequence + 1) & sequenceMask;
                //毫秒内序列溢出
                if (sequence == 0) {
                    //阻塞到下一个毫秒,获得新的时间戳
                    timestamp = tilNextMillis(lastTimestamp);
                }
            }
            //时间戳改变,毫秒内序列重置
            else {
            	    //sequence = 0L; 
                sequence = timestamp & 1L; //根据当前时间戳单or双数重置序列,(修正在大多数情况下生成偶数的情况)
            }
    
            //上次生成ID的时间截
            lastTimestamp = timestamp;
    
            //移位并通过或运算拼到一起组成64位的ID
            return ((timestamp - twepoch) << timestampLeftShift) //
                    | (datacenterId << datacenterIdShift) //
                    | (workerId << workerIdShift) //
                    | sequence;
        }
    
        /**
         * 阻塞到下一个毫秒,直到获得新的时间戳
         * @param lastTimestamp 上次生成ID的时间截
         * @return 当前时间戳
         */
        protected long tilNextMillis(long lastTimestamp) {
            long timestamp = timeGen();
            while (timestamp <= lastTimestamp) {
                timestamp = timeGen();
            }
            return timestamp;
        }
    
        /**
         * 返回以毫秒为单位的当前时间
         * @return 当前时间(毫秒)
         */
        protected long timeGen() {
            return System.currentTimeMillis();
        }
    
        /**
         * 获取本机ip
         * @return
         */
        private static String getHostIp(){
            try{
                Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
                while (allNetInterfaces.hasMoreElements()){
                    NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
                    Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
                    while (addresses.hasMoreElements()){
                        InetAddress ip = (InetAddress) addresses.nextElement();
                        if (ip != null 
                                && ip instanceof Inet4Address
                                && !ip.isLoopbackAddress() //loopback地址即本机地址,IPv4的loopback范围是127.0.0.0 ~ 127.255.255.255
                                && ip.getHostAddress().indexOf(":")==-1){
                            System.out.println("本机的IP = " + ip.getHostAddress());
                            return ip.getHostAddress();
                        } 
                    }
                }
            }catch(Exception e){
                e.printStackTrace();
            }
            return null;
        }
        
        
        /*默认实现 逻辑:
        工作id -> 用服务器ip生成,ip转化为long再模32(如有集群部署,且机器ip是连续的,
        如我的集群服务器是192.168.180.54~58共五台机器,这样取模就能避免重复.如服务器ip不连续,慎用,慎用,慎用!!!!!! 重要事情说三遍)
        数据中心ID -> 取0~31的随机数*/
        static {
        	 Random rd = new Random();
        	 long workerId = rd.nextInt(31), datacenterId = rd.nextInt(31); //工作id,数据中心ID
        	 
        	 //获取当前ip,生成工作id
        	 String ip = getHostIp();
        	 if(ip != null) {
        		 workerId = Long.parseLong(ip.replaceAll("\\.", ""));
        		 workerId = workerId % 32; //因为占用5位,模32
        	 }
        	 snowflakeIdUtil = new SnowflakeIdUtil(workerId, datacenterId);
        }
    
        //默认实现
        public static long newId() {
        		return snowflakeIdUtil.nextId();
        }
        
        //==============================Test=============================================
        /** 测试 
         * @throws InterruptedException */
        public static void main(String[] args) throws InterruptedException {
        	
        	    //默认实现
    	    	for (int i = 0; i < 100; i++) {
    	            long id = SnowflakeIdUtil.newId();
    	            Thread.sleep(10); 
    	            System.out.println("生成第"+i+"id:"+id);
    	        }
        	
        	
        	    //自定义实现 
        	    // 需要传入 workerId工作id 与 datacenterId 数据中心id  请自行实现这里默认取0
    //        SnowflakeIdUtil util2 = new SnowflakeIdUtil(0, 0);
    //        for (int i = 0; i < 100; i++) {
    //            long id = util2.nextId();
    //            //Thread.sleep(10);
    //             System.out.println("生成第"+i+"id:"+id);
    //        }
            
        }
    }
    

    注-- main方法中的自定义实现,需传入workerId与 datacenterId

    说一下使用场景:

    如果能使用数据库自增列作主键的,尽量使用自增列,mysql,oracle都有自身的实现.

    给出的实现作为工具类来使用,如有使用微服务开发的,可封闭成单独的Id生成服务,这样所有业务都可使用同一个生成器服务

    展开全文
  • Python 搭建一个简易QQ机器

    万次阅读 多人点赞 2019-10-01 15:43:19
    本次搭建的QQ机器人基于nonebot。可以参考官方文档:nonebot指南 安装nonebot: pip install nonebot tips:python版本要>=3.6.1 下载酷Q: 官方地址 然后可以跟着酷Q的新手教程走一遍 安装 CoolQ HTTP API ...

    本次搭建的QQ机器人基于nonebot。可以参考官方文档:nonebot指南

    我的项目地址 : 简单QQ机器人项目

    1. 安装nonebot:
    pip install nonebot
    

    tips:python版本要>=3.6.1

    • 下载酷Q:
      官方地址
      然后可以跟着酷Q的新手教程走一遍

    • 安装 CoolQ HTTP API 插件
      官方地址
      继续跟着教程走

    • 在这提一下CoolQ HTTP API插件的配置

    进入应用目录的方法
    进入该目录后就可以进行配置了。

    • 新建一个Python文件,加入以下代码:
    import nonebot
    
    if __name__ == '__main__':
        nonebot.init()
        nonebot.load_builtin_plugins()
        nonebot.run(host='127.0.0.1', port=8080)
    

    第1行代码:导入nonebot库
    第4行代码:使用默认配置初始化 NoneBot 包
    第5行代码:加载 NoneBot 内置的插件
    第6行代码:在地址 127.0.0.1:8080 运行 NoneBot

    提示
    
    这里 nonebot.run() 的参数 host='127.0.0.1' 
    表示让 NoneBot 监听本地环回地址,
    如果你的 酷Q 运行在非本机的其它位置,
    例如 Docker 容器内、局域网内的另一台机器上等,
    则这里需要修改 host 参数为希望让 CoolQ HTTP API 插件访问的 IP。
    如果不清楚该使用哪个 IP,或者希望本机的所有 IP 都被监听,
    可以使用 0.0.0.0
    • 再次配置CoolQ HTTP API 插件
      照着之前的方法打开名为 “user-id”.json 的文件(“user-id” 为你登录的 QQ 账号)
      修改如下配置项:(有则改,无则加)
      "ws_reverse_api_url": "ws://127.0.0.1:8080/ws/api/",
      "ws_reverse_event_url": "ws://127.0.0.1:8080/ws/event/",
      "use_ws_reverse": true
    

    配置好后重启插件

    • 运行你写的Python文件,若配置成功,控制台应该会输出以下内容:
    [2019-10-01 15:55:21,745] 127.0.0.1:50971 GET /ws/api/ 1.1 101 - 1031
    [2019-10-01 15:55:22,044] 127.0.0.1:50972 GET /ws/event/ 1.1 101 - 996
    

    这表示 CoolQ HTTP API 插件已经成功地连接上了 NoneBot,与此同时,插件的日志文件中也会输出反向 WebSocket 连接成功的日志。

    注意
    
    如果到这一步你没有看到上面这样的日志,请查看插件的日志文件中是否在不断尝试重连(可通过将插件的 show_log_console 配置项设置为 true 来显示日志控制台,方便调试),如果没有在不断重连,也说明连接成功.
    
    除此之外,也可以直接向机器人随便发送一些消息,观察 NoneBot 运行日志中是否有输出,如果有,说明连接成功。
    
    如果 NoneBot 运行日志中没有任何访问日志,插件的日志中也在不断重连,请注意检查配置中的 IP 和端口是否确实可以访问。
    

    接下来向你的机器人发送如下消息:

    /echo 你好,世界
    

    如果你的机器人向你回复:你好,世界。那么恭喜你搭建成功!

    展开全文
  • dos命令 通过IP查看机器

    千次阅读 2013-04-11 23:58:29
    dos命令 通过IP查看机器名 如果对方与你在同一个网段内的话,通过下面方法可以得到对方的name:   ping -a ip; nbtstat -A ip;   如果不在一个网段内的话,应该无法通过命令直接得到对方的名字的
    from:http://yuanmuqiuyu2000.blog.sohu.com/82285093.html

    dos命令 通过IP查看机器名

    如果对方与你在同一个网段内的话,通过下面方法可以得到对方的name:  
              ping   -a   ip;   nbtstat   -A   ip;    
      如果不在一个网段内的话,应该无法通过命令直接得到对方的名字的.

    一,ping 

      它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧,在DOS窗口中键入:ping/?回车,出现如图1所示的帮助画面。在此,我们只掌握一些基本的很有用的参数就可以了。

      -t表示将不间断向目标IP发送数据包,直到我们强迫其停止。试想,如果你使用100M的宽带接入,而目标IP是56K的小猫,那么要不了多久,目标IP就因为承受不了这么多的数据而掉线,呵呵,一次攻击就这么简单的实现了。

      -l定义发送数据包的大小,默认为32字节,我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用,会有更好的效果哦。

      -n定义向目标IP发送数据包的次数,默认为3次。如果网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那么就定义为一次吧。

      说明一下,如果-t参数和-n参数一起使用,ping命令就以放在后面的参数为标准,比如“pingIP-t-n3”,虽然使用了-t参数,但并不是一直ping下去,而是只ping3次。另外,ping命令不一定非得pingIP,也可以直接ping主机域名,这样就可以得到主机的IP。

      下面我们举个例子来说明一下具体用法

      这里time<10ms表示从发出数据包到接受到返回数据包所用的时间小于10ms,从这里可以判断网络连接速度的大小。从TTL的返回值可以初步判断被ping主机的操作系统,之所以说“初步判断”是因为这个值是可以修改的。这里TTL=128表示操作系统可能是Win2000。

      (小知识:如果TTL=32,则表示目标主机可能是win98;如果TTL=250,则目标主机可能是Unix)

      至于利用ping命令可以快速查找局域网故障,可以快速搜索最快的QQ服务器,可以对别人进行ping攻击……这些就靠大家自己发挥了。

      二,nbtstat

      该命令使用TCP/IP上的NetBIOS显示协议统计当前TCP/IP连接,使用这个命令你可以得到远程主机的NETBIOS信息,比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。

      -A这个参数可以得到远程主机的NETBIOS信息,但需要你知道它的IP。

      -a使用这个参数,只要你知道了远程主机的机器名称,就可以得到它的NETBIOS信息。

      -n列出本地机器的NETBIOS信息。

      当得到了对方的IP或者机器名的时候,就可以使用nbtstat命令来进一步得到对方的信息了,这又增加了我们入侵的保险系数。

      三,netstat

      这是一个用来查看网络状态的命令,操作简便功能强大。

      -a查看本地机器的所有开放端口,可以有效发现和预防木马,可以知道机器所开的服务等信息。

      -r列出当前的路由信息,告诉我们本地机器的网关、子网掩码等信息。用法:netstat-rIP。

      四,tracert

      跟踪路由信息,使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径,这对我们了解网络布局和结构很有帮助。

      这里说明数据从本地机器传输到192.168.0.1的机器上,中间没有经过任何中转,说明这两台机器是在同一段局域网内。用法:tracertIP。

      五,net

      这个命令是网络命令中最重要的一个,必须透彻掌握它的每一个子命令的用法,因为它的功能实在是太强大了,这简直就是微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令,键入net/?,回车。

      在这里,我们重点掌握几个入侵常用的子命令。

      netview

      使用此命令查看远程主机的所有共享资源。命令格式为netview\\IP。

      netuse

      把远程主机的某个共享资源影射为本地盘符,图形界面方便使用,呵呵。命令格式为netusex:\\IP\sharename。下面表示和192.168.0.7建立IPC$连接(netuse\\IP\IPC$"password"/user:"name")。

      建立了IPC$连接后,呵呵,就可以上传文件了:copync.exe\\192.168.0.7\admin$,表示把本地目录下的nc.exe传到远程主机,结合后面要介绍到的其他DOS命令就可以实现入侵了。

      netstart

      使用它来启动远程主机上的服务。当你和远程主机建立连接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?就使用这个命令来启动吧。用法:netstartservername,如用netstarttelnet命令启动telnet服务。

      netstop

      入侵后发现远程主机的某个服务碍手碍脚,怎么办?利用这个命令停掉就ok了,用法和netstart同。

      netuser

      查看和帐户有关的情况,包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的,最重要的,它为我们克隆帐户提供了前提。键入不带参数的netuser,可以查看所有用户,包括已经禁用的。下面分别讲解。

      1,netuserabcd1234/add,新建一个用户名为abcd,密码为1234的帐户,默认为user组成员。

      2,netuserabcd/del,将用户名为abcd的用户删除。

      3,netuserabcd/active:no,将用户名为abcd的用户禁用。

      4,netuserabcd/active:yes,激活用户名为abcd的用户。

      5,netuserabcd,查看用户名为abcd的用户的情况。

      netlocalgroup

      查看所有和用户组有关的信息和进行相关操作。键入不带参数的netlocalgroup即列出当前所有的用户组。在入侵过程中,我们一般利用它来把某个帐户提升为administrator组帐户,这样我们利用这个帐户就可以控制整个远程主机了。用法:netlocalgroupgroupnameusername/add。

      现在我们把刚才新建的用户abcd加到administrator组里去了,这时候abcd用户已经是超级管理员了,呵呵,你可以再使用netuserabcd来查看他的状态,就可以看出来。但这样太明显了,网管一看用户情况就能漏出破绽,所以这种方法只能对付菜鸟网管,但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员,这是后话。

      nettime

      这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面,那么也许就用不到这个命令了。但简单的入侵成功了,难道只是看看吗?我们需要进一步渗透。这就连远程主机当前的时间都需要知道,因为利用时间和其他手

    展开全文
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    ◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup; ◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who; ◆ 其它...
  • ping计算机名获取IP

    万次阅读 2016-06-01 15:44:45
    如何ping别人的计算机名来获取IP?   获取别人的IP,是作为骇客或是黑客必要的步骤。那么,怎么来获取IP呢?     今天想试着用arp命令干点坏事来陶冶一下情操,当我ping电脑名查询IP时,发现返回的...

         如何ping别人的计算机名来获取IP? 

            获取别人的IP,是作为骇客或是黑客必要的步骤。那么,怎么来获取IP呢? 
           
            今天想试着用arp命令干点坏事来陶冶一下情操,当我ping电脑名查询IP时,发现返回的是[fe80::64ca:cb99:2e4d:bd27%13]32位字节数据。于是我百度了几小时,终于找到了解决的办法,下面是整理出来的具体方法:
           
           一般ping命令返回一个公网ip地址,但是这个ip地址和所查机器的当前公网ip不一致,遇到这种情况,首先要确认是不是你的电脑中的DNS缓存尚未刷新导致。使用:命令“ ipconfig /displaydns”可以看到本机DNS缓存中的所有记录。
          
            计算机ping一个域名时,会先去本机的DNS缓存中查找,上面看到的DNS缓存中的信息就影响了ping的结果。这时用命令“ipconfig /flushdns”就可以清除本机DNS缓存中的所有记录。 清除了缓存后,再ping域名,就可以排除本机DNS缓存的影响,这时返回的ip地址就是正确的。
         
           如果仍然是错的,这时候很可能是你的宽带接入商的地区DNS服务器尚未刷新数据,也就是它尚未同步DNS数据,那么当你的所在电脑的ip地址变化了之后,虽然Oray的DNS服务器已经将要查询的计算机名指向了当前的新ip地址,但是你那个地区的接入商的DNS服务器返回给你电脑的所查计算机名的ip地址还是之前的旧ip地址。 这种时候你要做的就是把本机DNS服务器设置为当地最高效的DNS服务器,你可以直接拨打你的宽带接入商的服务电话询问并把问到的高效DNS地址设置到你的电脑上。例如将电脑的主DNS从202.96.128.86改为 202.96.128.166,然后用命令“ipconfig/flushdns”清除本机DNS缓存后,再ping 计算机名。当然,这是很麻烦的。
        
          然而,还有一个非常好用方法,就是使用“ping 计算机名 -4”命令,即查询IP4的地址。返回的绝对是一个正确ip,本人亲测,效果非常棒。

        也可以用IP地址反查主机名,或是用主机名查询计算机的MAC,这里就要用到一些arp命令或NBTSTAT命令。下面附其语法格式:           
       一.     NBTSTAT [ [-a RemoteName] [-A IP address] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [interval] ]
       参数说明:
       -a Remoename—说明使用远程计算机的名称列出其名称表,此参数可以通过远程计算机的NetBios名来查看他的当前状态。
      -A IP address—说明使用远程计算机的 IP 地址并列出名称表,这个和-a不同的是就是这个只能使用IP,其实-a就包括了-A的功能了。
      -c—列出远程计算机的NetBIOS 名称的缓存和每个名称的 IP 地址这个参数就是用来列出在你的NetBIOS里缓存的你连接过的计算机的IP。
      -n—列出本地机的 NetBIOS 名称,此参数与上面所介绍的一个工具软件“netstat”中加“ -a”参数功能类似,只是这个是检查本地的,
           如果把netstat -a后面的IP换为自己的就和nbtstat -n的效果是一样的了。
      -r—列出 Windows 网络名称解析的名称解析统计。在配置使用 WINS 的 Windows 2000 计算机上,此选项返回要通过广播或 WINS 来解析和注册的名称数。
      -R—清除 NetBIOS 名称缓存中的所有名称后,重新装入 Lmhosts 文件,这个参数就是清除nbtstat -c所能看见的缓存里的IP。
      -S—在客户端和服务器会话表中只显示远程计算机的IP地址。
      -s—显示客户端和服务器会话,并将远程计算机 IP 地址转换成NETBIOS名称。此参数和-S差不多,只是这个会把对方的NetBIOS名给解析出来。
      -RR—释放在 WINS 服务器上注册的 NetBIOS 名称,然后刷新它们的注册。
      
           interval—每隔interval 秒重新显示所选的统计,直到按“CTRL+C”键停止重新显示统计。如果省略该参数,nbtstat 将打印一次当前的配置信息。此参数和netstat的一样,nbtstat中的“interval”参数是配合-s和-S一起使用的。在局域网内,我们常使用一些工具来查IP查主机名,利用ipconfig或者ping可以查到IP地址。而要查网内的主机,可以用网上邻居,其实我们也有一个很方便的方法,通过指定IP地址就可以查询到主机名,在windows的命令行方式下,输入命令:nbtstat -A 192.168.1.111(对方的IP地址)就会把主机名,此主机所在的群组名也显示出来nbtstat该命令使用TCP/IP上的etBIOS显示协议统计和当前TCP/IP连接,使用这个命令你可以得到远程主机的NETBIOS信息,比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。
        -a使用这个参数,只要你知道了远程主机的机器名称,就可以得到它的NETBIOS信息(下同)。
        -A这个参数也可以得到远程主机的NETBIOS信息,但需要你知道它的IP。
        -n列出本地机器的NETBIOS信息。
       当得到了对方的IP或者机器名的时候,就可以使用nbtstat命令来进一步得到对方的信息了,这又增加了我们入侵的保险系数。 
      
     二.     ARP [-a [inetaddr] [-n ifaceaddr] ,-g [inetaddr] [-n ifaceaddr] ,  -d inetaddr [ifaceaddr] ,-s inetaddr etheraddr [ifaceaddr] ]
      
      -a [inetaddr] [-n ifaceaddr] 
      -a不带参则显示所有接口的当前ARP缓存表。要显示指定IP地址的ARP缓存项,
    请使用带有inetaddr 参数的“arp -a” 此处的inetaddr 代表指定的IP 地址。要显示指定接口的ARP缓存表,请使用“-n ifaceaddr” 
    参数,此处的ifaceaddr 代表分配给指定接口的IP 地址。-N 参数区分大小写。
      
       -g [inetaddr] [-n ifaceaddr] 与-a 相同。
      
       -d inetaddr [ifaceaddr] 删除指定的IP 地址项,此处的inetaddr 代表IP 地址。对于指定的接口,要删除表中的某项,请使用ifaceaddr
    参数,此处的ifaceaddr 代表分配给该接口的IP地址。要删除所有项,请使用星号(*) 通配符代替inetaddr。
      
       -s inetaddr etheraddr [ifaceaddr] 向ARP 缓存添加可将IP 地址inetaddr 解析成物理地址etheraddr 的静态项。要向指定接口的表添加
    静态ARP 缓存项,请使用ifaceaddr 参数,此处的ifaceaddr 代表分配给该接口的IP地址。eg:arp -s 10.110.11.1 00-1a-a9-bf-26-43
    注意:inetaddr 和ifaceaddr 的IP 地址用带圆点的十进制记数法表示。物理地址Etheraddr由六个字节组成,这些字节用十六进制记数法表示并且用连字符隔开( 比如,00-AA-00-4F-2A-9C)。只有当TCP/IP 协议在网络连接中安装为网络适配器属性的组件时,该命令才可用。
       
       最后分享下今天利用arp干的一些事儿(寝室几个,看到了一定要冷静,千万不要骂我。我已经知道错了。):将自己的MAC 伪造成网关的MAC。其他人就上不了网了。
        已知默认网关是:10.110.11.1  首先,用"arp -a 10.110.11.1"命令查询网关的MAC地址,然后将自己的MAC改成网关的MAC,最后将自己的IP改成网关的IP即可。操作完成后,只要自己开着电脑,连着网线。别的PC就上不了网了。
      
       艾玛,第一次自己发日志,好紧张的说。
    展开全文
  • 根据IP获取对方机器的操作系统方案

    千次阅读 2017-06-26 21:11:10
    ACK=S++说明返回包的ACK值必须为初始化序列号1。Flags=AS说明返回包的ACK和SYN标记位必须被设置。Ops=MNWNNT说明返回包的TCP选项及其顺序必须为: > T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=) ...
  • 获取ip: value=socket.getaddrinfo(socket.gethostname(),None)#socket.gethostname()获取主机名 socket.getaddrinfo()获取ip for i in value: ip=i[4][0] if ip .find('192.')==0: print ip 获取某个硬盘的...
  • 如果一个主机绑定有多个 IP地址,那么在被动响应和主动发起连接两种方式中,源 IP 地址的选择机制肯定是有所差异的。   主机在接收外部数据包,并发送响应数据包时,响应源地址显然就是客户端请求的地址,这是...
  • IPGUARD卸载客户端方法

    千次阅读 2019-10-09 10:45:56
    卸载服务器和控制台 首先关闭IP-guard服务器和控制台等应用程序,然后选择 “开始”菜单的“所有程序->IP-guard V3->卸载IP-guard V3”进行卸载,也可以选择在“控制面板->添加/删除程序”中选择IP-guard3进行卸载...
  • IP-Guard功能介绍

    千次阅读 2019-01-28 10:23:28
    IP-guard基于系统管理思想和安全实践经验,全面考虑可能造成信息破坏及外泄的各个方面,保护企业信息不被人为外泄、非法盗取、恶意篡改,帮助企业对信息安全进行系统规划及管理。IP-guard 通过灵活有力的管理,在...
  • C#中如何得到机器IP地址

    千次阅读 2007-03-24 14:38:00
    如何使用DNS类并得到机器IP地址的技巧 介绍 这篇文章并不是技术纵览或大型讨论,而更像是关于如何得到IP地址或主机名称的技巧集锦。在 Win32 API编程中你可以使用NetWork API,在.NET平台中也是类似的。唯一的不同...
  • 前端获取内网IP

    千次阅读 2019-05-15 02:25:23
    前端获取内网IP: 定义函数: //获取内网ip getIPs(){ let _this = this; var RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection...
  • Note: 此文档是很老的windows server的界面,不具有太大价值,但是里面讲解了很多其他的禁用或者放行ip的方法,笔者没有尝试过,所以记录在此以后验证更新本文档。 前言: 使用windows server的防火墙配置inbound ...
  • IP协议详解

    万次阅读 多人点赞 2018-09-09 11:14:41
    IP协议是TCP/IP协议族的核心协议,其主要包含两个方面: ...IP数据报的路由和转发发生在除目标机器之外的所有主机和路由器上。它们决定数据报是否应该转发以及如何转发。 一、IP服务的特点  IP协议是TCP/IP协议族...
  • centos批量添加多个IP地址

    千次阅读 2018-10-25 00:52:06
    在/etc/sysconfig/network-scripts/中新建文件ifcfg-eth0-range0   vi /etc/sysconfig/network-scripts/ifcfg-eth0-range0   输入以下文件内容格式: ...IPADDR_START=起始IP地址 IPADDR_END...
  • 在我们打开注册中心的web界面的时候,是可以看到现在连接注册中的服务的,但是显示的信息缺失机器名称端口的形式,通常IP的形式能更好的理解,所以我们都希望如下图显示。 设置如下: eureka: instance: #...
  • Python爬虫、反爬虫和反反爬虫

    千次阅读 多人点赞 2018-05-03 20:02:31
    只能硬着头皮和他继续死磕,直到一方因为机器成本与人力成本问题放弃。 3 为什么需要反爬虫? l 公司的重要资源被批量爬取,丧失竞争力。 l 爬虫占总PV比例太高,因为高访问量浪费了太多钱。 l 爬虫拖垮了站点,...
  • 一、背景 一大早来公司,登录那台暴露在外网的服务器,登录成功的时候,看到160000+次登录失败的记录,看到这个我和我的小...1、last看一下是否有异常ip及账户登录记录. [root@DCGH ~]# last -100 ivandu pts...
  • 雪花算法中机器id保证全局唯一

    千次阅读 2019-03-09 12:52:02
    雪花算法中机器id保证全局唯一 关于分布式id的生成系统, 美团技术团队之前已经有写过一篇相关的文章, 详见 Leaf——美团点评分布式ID生成系统 通常在生产中会用Twitter开源的雪花算法来生成分布式主键 雪花算法...
  • 测试IP和端口是否通

    千次阅读 2019-09-24 22:35:37
    1 将自己IP和端口分别输入以下两个网站的测试栏中 国内测试 http://tool.chinaz.com/port 国外测试 https://www.yougetsignal.com/tools/open-ports/ 2 总结 如果国内显示开放,那么是正常情况。 如果国内的显示关闭...
  • 查看服务器是否可以链接,可以直接使用域名,如果有收发包则说明服务器正常工作 ping xxx.xxx.xxx.xxx ... 测试端口是否放通,同样可以输入域名,如有返回值则说明端口是放通的,如果返回值不是success可能是因为端口...
  • Linux下子接口IP,Ping指定源IP

    千次阅读 2014-11-27 15:04:24
    Linux下子接口IP,Ping指定源IP  事情起因是有台Linux服务器到某一网络设备近期会经常性的出现ping丢包。  但别的机器上不丢。为了确认在网络设备上对那服务器的源IP做了限制,为了进行测试,在...
  • jenkins构建之添加新的远程构建目标ip
  • 这篇文章将介绍基于机器学习的恶意代码检测技术,主要参考郑师兄的视频总结,包括机器学习概述与算法举例、基于机器学习方法的恶意代码检测、机器学习算法在工业界的应用。同时,我再结合自己的经验进行扩充,详细...
  • 准备三个机器IP地址信息如下: host1: 192.168.2.206 host2: 192.168.2.205 hots3: 192.168.2.177 安装 keepalived 在两台机器上分别安装 keepalived $ sudo yum install -y keepalived 1 配置 keepaliv....
  • TCP/IP,TCP,UDP,IP,Socket 概述 什么是 TCP/IP? TCP,UDP 有什么区别? 什么是 Socket? 网上这方面的资料有很多,但都很琐碎,没有系统化,要么看完很快就忘记了,要么就是看完迷迷糊糊似懂非懂,下面...
  • 内网IP段分类 判断ip是否是内网ip

    千次阅读 2020-01-03 14:44:53
    但是在IPv4地址协议中预留了3个IP地址段,作为私有地址,供组织机构内部使用。 这三个地址段分别位于A、B、C三类地址内:A类地址:10.0.0.0--10.255.255.255 B类地址:172.16.0.0--172.31.255.255 C类地址:192....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 202,461
精华内容 80,984
关键字:

机器加ip