有时候在做扫描软件的时候可能需要给定ip段,然后扫描该ip段内的所所有ip,收藏一下,没准哪天用到了。
代码很简单,就简单说一下思路吧:
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#codint:utf8 # 生成下一次循环的边界条件 def get_side(pos, now): global begin, end global first, last # find_side = lambda begin, end, pos, fisrt, last, now: \ (pos == first[now] and begin[now + 1] or 1, pos == last[now] and end[now + 1] or 255) first[now + 1], last[now + 1] = find_side(begin, end, pos, first, last, now) # print first return range(first[now + 1], last[now + 1] + 1) def gen_ip(ip): #参数ip为ip段如:x.x.0.1-x.x.0.2 # ip段范围 global begin, end # 临时列表,存储边界条件 global first, last sides = ip.split('-') begin = map(lambda x: int(x), sides[0].split('.')) end = map(lambda x: int(x), sides[1].split('.')) first[0] = begin[0] last[0] = end[0] ip_str = [] #存储ip列表 for pos_one in range(begin[0], end[0] + 1): for pos_two in get_side(pos_one, 0): for pos_three in get_side(pos_two, 1): for pos_four in get_side(pos_three, 2): str = "%d.%d.%d.%d" % (pos_one, pos_two, pos_three, pos_four) ip_str.append(str) return ip_str if __name__ == '__main__': #ip段范围 global begin, end # 临时列表,存储边界条件 global first, last, ips first = ["", "", "", ""] last = ["", "", "", ""] ips = gen_ip("120.76.0.0-120.79.255.255") print ips |