小言_互联网的博客

Python网段转IP,批量处理

362人阅读  评论(0)

笔者要做的是利用Angry IP Scanner对IP进行扫描。可是得到的不是IP,而是网段。笔者说的网段还不是*.*.*.*/X这种格式的,而是1.0.1.0,1.0.3.255这样的。所以就不能用Python自带的IIPY模块。以下是得到的数据和笔者最终的转化成果(部分):


1.0.1.0,1.0.3.255
1.0.8.0,1.0.15.255
1.0.32.0,1.0.63.255
1.1.0.0,1.1.0.255
1.1.2.0,1.1.7.255
1.1.8.0,1.1.8.255
1.1.9.0,1.1.63.255
1.2.0.0,1.2.1.255


1.0.1.0
1.0.1.1
1.0.1.2
1.0.1.3
1.0.1.4
1.0.1.5
1.0.1.6
1.0.1.7
1.0.1.8


笔者先对得到的7个TXT文件循环处理,将每个文件的网段转化为IP,并分为100份。因为不分为100份的话文件太大了,不利用笔者利用。以下是各个函数:

一、将IP地址与数字相互转化。这样做的目的是将网段的起始地址转化为数字后加1就是下一个地址。

import os

all_ip = {}
fpWriteIP = ''

#将字符串形式的ip地址转成整数类型。
def ipToLong(ip_str):
    #print map(int,ip_str.split('.'))
    ip_long = 0
    for index,value in enumerate(reversed([int(x) for x in ip_str.split('.')])):
        ip_long += value<<(8*index)
    return ip_long

#将ip的整数类型转成ip字符串类型
def longToIp(ip_long):
    ip_list = []
    i_1 = ip_long>>24
    i_2 = (ip_long & 0X00FFFFFF)>>16
    i_3 = (ip_long & 0X0000FFFF)>>8
    i_4 = (ip_long & 0X000000FF)
    ip_list.append(i_1)
    ip_list.append(i_2)
    ip_list.append(i_3)
    ip_list.append(i_4)
    ip_str = r'.'.join(map(str,ip_list))
    return ip_str

二、将IP段转化为IP,并写入全局变量的文件中。

#将IP范围段转化为IP输出
def rangToSpecificIP(start,end):
    for intIP in range(ipToLong(start),ipToLong(end)+1):
        fpWriteIP.write(longToIp(intIP)+'\n')

三、将网段分为100个部分。

#将当前文件的网段分为100个部分
def splitAllIP(urlIp):
    fp1 = open(urlIp,'r')    
    for i in range(100):
        all_ip[i] = []
    i = 0
    for line in fp1:
        all_ip[int(i/2000)].append(line.replace('\n',''))
        i = i+1

四、主函数。7个文件循环处理

#主函数
if __name__ == '__main__':
    for j in range(2,7):
        splitAllIP('./all_'+str(j)+'/all_'+str(j)+'.txt')
        i = 0
        for ipRangeSub in all_ip:
            fpWriteIP = open('./all_'+str(j)+'/ipSpecific'+str(i+1)+'.txt', 'w')
            for lineRange in all_ip[ipRangeSub]:
                rangToSpecificIP(lineRange.split(',')[0],lineRange.split(',')[1])
            i = i + 1
        fpWriteIP.close()

 


转载:https://blog.csdn.net/m0_37872090/article/details/101027191
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场