吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3605|回复: 10
收起左侧

[Python 转载] 【Python】IP地址段枚举

[复制链接]
euhrat1ca 发表于 2018-12-14 11:48

手撸了一个根据ip段枚举ip地址的功能,配合搜集到的ip段将想要的ip先列出来,目前只支持192.168.1.1-193.168.1.1这样的方式,类似于192.168-190.1.1-125和192.168.1.1/20这样的后期慢慢写

#coding=utf-8
''''''
import re
import nmap

def EnumerateIp(StartIp,EndIp):
    '''枚举Ip,目前只支持192.168.1.1-193.168.1.1这样的方式'''
    if IpCheck(StartIp) == 'Yes' and IpCheck(EndIp) == 'Yes':
        StartIpValue = IpToDecimal(StartIp)
        EndIpValue = IpToDecimal(EndIp)
        if EndIpValue >= StartIpValue:
            for ip in range(StartIpValue, EndIpValue+1):
                print(DecimalToIp(ip))
        else:
            for ip in range(EndIpValue, StartIpValue+1):
                print(DecimalToIp(ip))

def DecimalToIp(ip):
    '''将十进制转换为ip'''
    IpValue = str((((ip//256)//256)//256))+'.'+str(((ip//256)//256)%256)+'.'+str((ip//256)%256)+'.'+str(ip%256)
    return IpValue

def IpToDecimal(hostIp):
    '''将ip返回为十进制'''
    IpList = hostIp.split('.')
    IpValueA = int(IpList[0])
    IpValueB = int(IpList[1])
    IpValueC = int(IpList[2])
    IpValueD = int(IpList[3])
    return((((IpValueA*256+IpValueB)*256)+IpValueC)*256+IpValueD)

def IpCheck(hostIp):
    '''以.号分割,分成4份,每一份有1-3位,组成为0-9的数字,且数字大于等于0小于等于255'''
    try:
        pat = re.compile(r'([0-9]{1,3})\.')
        r = re.findall(pat,hostIp+".")
        if len(r)==4 and len([x for x in r if int(x)>=0 and int(x)<=255])==4:
            return('Yes')
    except Exception as identifier:
        return(identifier)

if __name__ == "__main__":
    StartIp = '202.38.135.0'
    EndIp = '202.38.134.0'
    EnumerateIp(StartIp,EndIp)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| euhrat1ca 发表于 2018-12-14 11:49
首次发帖子·,自己顶自己
Simonl 发表于 2018-12-14 11:57
aaa5838769 发表于 2018-12-14 12:02
x29296 发表于 2018-12-14 12:08
这种注释看着不错,。颜色分明
YAO21 发表于 2018-12-14 12:13
感谢分享
付国兵123 发表于 2018-12-14 12:39
不会用,这个查完可以保存TXT文件吗
风之伤 发表于 2018-12-14 17:24
#define IpMin(ip,mask)        ((ip>>(32-mask))<<(32-mask))
#define        IpMax(ip,mask)        (((ip>>(32-mask))<<(32-mask))|((((DWORD)(((int)(pow(2.0, (double)(32 - mask)) - 1)) << mask))) >> mask))
 楼主| euhrat1ca 发表于 2018-12-18 17:07
风之伤 发表于 2018-12-14 17:24
#define IpMin(ip,mask)        ((ip>>(32-mask))(32-mask))

原谅我真的没想到
oneofzero 发表于 2018-12-19 16:50
多谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 03:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表