转载链接:https://blog.csdn.net/u013042248/article/details/53165508

0x01 代码思路:

利用二进制遍历:

1.将IP地址分割,每一块转换为8位二进制代码

2.将32位二进制代码转化为十进制,结束地址的十进制减去开地址的十进制,就可以得到之间的IP个数

3.从开始地址起,对其十进制数依次加一,再将其转化为二进制,即可得到之间某一IP的二进制代码

4.将这一IP的二进制按8位分割,每8位转化为一个十进制数,加上”.”,即可得到最终的IP

0x02 代码清单:

import os,sys

base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]

#十进制0~255转化为二进制,补0到8位
def dec2bin80(string_num):
num = int(string_num)
mid = []
while True:
if num == 0: break
num,rem = divmod(num, 2)
mid.append(base[rem]) result = ''.join([str(x) for x in mid[::-1]])
length = len(result)
if length < 8:
result = '' * (8 - length) + result
return result #十进制0~255转化为二进制,补0到32位
def dec2bin320(string_num):
num = int(string_num)
mid = []
while True:
if num == 0: break
num,rem = divmod(num, 2)
mid.append(base[rem]) result = ''.join([str(x) for x in mid[::-1]])
length = len(result)
if length < 32:
result = '' * (32 - length) + result
return result #十进制0~255转化为二进制,不补零
def dec2bin(string_num):
num = int(string_num)
mid = []
while True:
if num == 0: break
num,rem = divmod(num, 2)
mid.append(base[rem]) return ''.join([str(x) for x in mid[::-1]]) #二进制转换为十进制
def bin2dec(string_num):
return str(int(string_num, 2)) #ip列表生成
def iplist(string_startip,string_endip): #分割IP,然后将其转化为8位的二进制代码
start = string_startip.split('.')
start_a = dec2bin80(start[0])
start_b = dec2bin80(start[1])
start_c = dec2bin80(start[2])
start_d = dec2bin80(start[3])
start_bin = start_a + start_b + start_c + start_d
#将二进制代码转化为十进制
start_dec = bin2dec(start_bin) end = string_endip.split('.')
end_a = dec2bin80(end[0])
end_b = dec2bin80(end[1])
end_c = dec2bin80(end[2])
end_d = dec2bin80(end[3])
end_bin = end_a + end_b + end_c + end_d
#将二进制代码转化为十进制
end_dec = bin2dec(end_bin) #十进制相减,获取两个IP之间有多少个IP
count = int(end_dec) - int(start_dec) #生成IP列表
for i in range(0,count + 1):
#将十进制IP加一,再转化为二进制(32位补齐)
plusone_dec = int(start_dec) + i
plusone_dec = str(plusone_dec)
address_bin = dec2bin320(plusone_dec)
#分割IP,转化为十进制
address_a = bin2dec(address_bin[0:8])
address_b = bin2dec(address_bin[8:16])
address_c = bin2dec(address_bin[16:24])
address_d = bin2dec(address_bin[24:32])
address = address_a + '.'+ address_b +'.'+ address_c +'.'+ address_d
print address iplist('2.168.255.254','2.169.1.10')

最新文章

  1. JavaScript 中的数据类型
  2. Python标准模块--os
  3. erlang服务器启动,有情况会报,enif_send: env==NULL no ono-SMP VMAborted 的错误报告?
  4. javascript 不响应可能是引用外部javascript时,引用顺序不对。
  5. iOS开发之应用内检测手机锁屏,解锁状态
  6. PHP文件处理类
  7. 关于Android 构建
  8. this和super关键字
  9. .net 的生成操作
  10. 查看Linux主机CPU及内存信息
  11. WinForm窗体的托盘最小化实现代码
  12. 非注解SpringMVC
  13. Android测试流量的几种方法
  14. Libgdx 1.6.0发布,跨平台游戏开发框架
  15. poj 1321 棋盘问题 (DFS深度优先搜索)
  16. ORA-4031 错误故障排除与诊断[视频] (Doc ID 2016002.1)
  17. java基础学习2
  18. 编写一个供浏览器端使用的NPM包
  19. django-用户验证系统
  20. 让MySql支持表情符号(MySQL中4字节utf8字符保存方法)

热门文章

  1. web框架开发-Django模型层(2)-多表操作
  2. DeeplabV3+ 训练自己的遥感数据
  3. Strem_01
  4. js 对日期处理
  5. 基于 WebGL 的 HTML5 楼宇自控 3D 可视化监控
  6. 基于 HTML5 结合互联网+ 的 3D 隧道
  7. Logstash filter 插件之 grok
  8. 谈谈java做登录那些事(一 分析)
  9. Zabbix 3.0的前端默认在Centos 6上不支持
  10. vertical-align和text-align属性实现垂直水平居中