僵尸机的条件:

1.足够闲置,不与其他机器进行通讯

2.IPID必须是递增的,不然无法判断端口是否开放

本实验僵尸机选择的是Windows2003

from scapy.all import *
import optparse

def is_zombie(target,zombie):
    pktz=IP(dst=zombie)/TCP(flags='SA')
    pktt=IP(src=zombie,dst=target)/TCP(flags='S')
    res1=sr1(pktz,timeout=1,verbose=0)
    send(pktt,verbose=0)
    res2=sr1(pktz,timeout=1,verbose=0)
    try:
        if res2[IP].id-2==res1[IP].id:
            print('It is a zombie.')
            return 1
        else:
            print('It isn\'t a zombie.')
            return 0
    except:
        print('It isn\'t a zombie.')

def scan(target,zombie,port):
    pktz=IP(dst=zombie)/TCP(flags='SA',dport=int(port))
    pktt=IP(src=zombie,dst=target)/TCP(flags='S',dport=int(port))
    start=sr1(pktz,timeout=1,verbose=0)
    send(pktt,verbose=0)
    end=sr1(pktz,timeout=1,verbose=0)
    if end[IP].id-2==start[IP].id:
        print(port,' is online')

def main():
    parser=optparse.OptionParser("%prog "+'-t <target> -z <zombie> -p <port>')
    parser.add_option('-t',dest='target',type='string',help='Target')
    parser.add_option('-z',dest='zombie',type='string',help='Zombie')
    parser.add_option('-p',dest='port',type='string',help='Port(eg:22,80    or  1-100)')
    (options,args)=parser.parse_args()
    target=options.target
    zombie=options.zombie
    if(target==None) or (zombie==None):
        print('Please input target(-t) and zombie(-z)!')
        exit(0)
    res=is_zombie(target,zombie)
    if res==1:
        if(',' in options.port):
            ports=str(options.port).split(',')
            if ports[0]==None:
                print('Please input port(-p)!')
                exit(0)
            for port in ports:
                scan(target,zombie,port)
        elif('-' in options.port):
            ports=str(options.port).split('-')
            if ports[0]==None:
                print('Please input port(-p)!')
                exit(0)
            for port in range(int(ports[0]),int(ports[1])):
                scan(target,zombie,port)
    else:
        pass

if __name__=='__main__':
    main()

使用说明

程序开始

github:https://github.com/zmqq/pytools/tree/master/zombiescan

 

Python3 小工具-僵尸扫描的更多相关文章

  1. Python3 小工具-UDP扫描

    from scapy.all import * import optparse import threading def scan(target,port): pkt=IP(dst=target)/U ...

  2. Python3 小工具-ICMP扫描

    from scapy.all import * import optparse import threading import os def scan(ipt): pkt=IP(dst=ipt)/IC ...

  3. Python3 小工具-ARP扫描

    from scapy.all import * import optparse import threading import os def scan(ipt): pkt=Ether(dst='ff: ...

  4. python3 小工具

    扫描IP的端口是否开放:Porttest.py # -*- coding: utf-8 -*- import sys import os import socket #扫描 def scanport( ...

  5. ip地址查询python3小工具_V0.0.1

    看到同事在一个一个IP地址的百度来确认导出表格中的ip地址所对应的现实世界的地址是否正确,决定给自己新开一个坑.做一个查询ip“地址”的python小工具,读取Excel表格,在表格中的后续列输出尽可 ...

  6. Python3 小工具-TCP半连接扫描

    from scapy.all import * import optparse import threading def scan(ip,port): pkt=IP(dst=ip)/TCP(dport ...

  7. Python3 小工具-UDP发现

    from scapy.all import * import optparse import threading import os def scan(ip): pkt=IP(dst=ip)/UDP( ...

  8. Python3 小工具-TCP发现

    from scapy.all import * import optparse import threading import os def scan(ip): pkt=IP(dst=ip)/TCP( ...

  9. Python3 小工具-MAC泛洪

    from scapy.all import * import optparse def attack(interface): pkt=Ether(src=RandMAC(),dst=RandMAC() ...

随机推荐

  1. asp.net mvc5 step by step(三)—— Entity Framework Database First

    一.先建数据库. 打开,SQL Server Management 新建数据库Employee 并新建表 /****** Object: Table [dbo].[t_Employee] Script ...

  2. windows下labelme的安装

    1.安装Anaconda 2.进入Anaconda文件夹下 3.输入conda create --name=labelme python=3.5 4.输入activate labelme 然后建立的l ...

  3. shell脚本实现目录的“5S”作业

    shell,又称为命令解释器.首先它是一个软件,有很多个版本,现在最流行的为bash,它作为用户和内核沟通的中间桥梁,在系统中起着举足轻重的作用 shell脚本,是一个以.sh结尾的文件,里面是诸如l ...

  4. H3C Telnet 配置-01

    Telnet 配置管理方法是网络工程师和网络管理员使用最广泛的一种设备访问控制方法,它通过局域网或广域网实现本地或远程的访问控制,但是它的实验必须要求首先对设备进行初始化配置,否则用户无法正常登录和访 ...

  5. Java OOP——第六章 框架集合

    1.集合框架包含的主要内容及彼此之间的关系: 图1:   集合框架:是为了表示和操作集合而统一规定的一种统一的标准体系结构.               包含三大块的内容:对外的接口.接口的是实现和对 ...

  6. 慎使用sql的enum字段类型

    在sql的优化中,会有同学提到一点:使用enum字段类型,代替其他tinyint等类型.以前这也是不少人喜欢优化的,但是现在细想,是非常不合理的. 优点: 1.可以设置区间范围,比如设置性别:1男2女 ...

  7. Hadoop核心架构(1)

    在大数据的发展过程中,出现了一批专门应用与大数据的处理分析工具,如Hadoop,Hbase,Hive,Spark等,我们先从最基础的Hadoop开始进行介绍 Hadoop是apache基金会下所开发的 ...

  8. [HDU6315]Naive Operations(线段树+树状数组)

    构造一个序列B[i]=-b[i],建一颗线段树,维护区间max, 每次区间加后再询问该区间最大值,如果为0就在树状数组中对应的值+1(该操作可能进行多次) 答案在树状数组中找 其实只用一颗线段树也是可 ...

  9. Java设计模式(7)——结构型模式之适配器模式(Adapter)

    一.概述 概念 其实,举个生活中的例子的话,适配器模式可以类比转接头,比如typeC和USB的转接头,把原本只能接typeC的接口,拓展为可以接普通USB:这里的转接头一方面需要查在typeC上,一方 ...

  10. 成都Uber优步司机奖励政策(1月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...