euhrat1ca 发表于 2018-12-14 11:48

【Python】IP地址段枚举

手撸了一个根据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)
    IpValueB = int(IpList)
    IpValueC = int(IpList)
    IpValueD = int(IpList)
    return((((IpValueA*256+IpValueB)*256)+IpValueC)*256+IpValueD)

def IpCheck(hostIp):
    '''以.号分割,分成4份,每一份有1-3位,组成为0-9的数字,且数字大于等于0小于等于255'''
    try:
      pat = re.compile(r'({1,3})\.')
      r = re.findall(pat,hostIp+".")
      if len(r)==4 and len()==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

多谢楼主分享
页: [1] 2
查看完整版本: 【Python】IP地址段枚举