找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 504|回复: 2

统计Excel中的IP段出现个数

[复制链接]

93

主题

29

回帖

546

积分

高级会员

积分
546
发表于 2025-4-12 16:05:04 | 显示全部楼层 |阅读模式


整理一个IP中前3位,次数超过3次,则默认是IP段过来攻击。
1、准备工作
  要人手做,准备一个EXCEL表格,把整理好的IP放进去,去重排序好:
2、脚本思路:
很容易发现这些IP,以“.” 为分隔符,每一段不一定为3位,所以一开始要补前导0,
因为我们需要拿IP前三段进行统计(变量:newip),超过3次,则认为是IP段过来攻击。
超过3次:用的是字符串的比较,两个for循环,cnt计数器是为了优化的,表示下一次循环移动的下标位置
用python的集合去输出结果,是为了去除最终结果的重复项,因为
if cnt >= 3:   这里是有bug的,会多次写入

  1. # -*- coding: utf-8 -*-
  2. # @Time : 2022/8/7 21:22
  3. # @File : IP.py

  4. import netaddr
  5. import sys
  6. import xlrd
  7. book = xlrd.open_workbook("test.xls")  # 获取工作簿对象

  8. table = book.sheet_by_index(0)
  9. rows = table.nrows

  10. arr = []
  11. for i in range(rows):
  12.     ip = table.cell_value(i,0)

  13.     tip1 = str(ip.split('.')[0])
  14.     #不够3位,补前导0
  15.     ip1 = tip1.zfill(3)

  16.     tip2 = str(ip.split('.')[1])
  17.     ip2 = tip2.zfill(3)

  18.     tip3 = str(ip.split('.')[2])
  19.     ip3 = tip3.zfill(3)

  20.     # newip = print('%s.%s.%s' % (str(ip1), str(ip2), str(ip3)))
  21.     ## 拿到ip前三段,最后1段假设为0,方便后面去除前导0
  22.     newip = str(ip1) + '.' + str(ip2) + '.' + str(ip3)
  23.     # print(newip)
  24.     arr.append(newip)

  25. # for i in range(rows):
  26. #     print(arr[i])


  27. # 计数器:cnt
  28. # 集合保存最终结果
  29. result = set()
  30. for i in range(rows):
  31.     cnt = 1
  32.     for j in range(i+1, rows):
  33.         while 1:
  34.             if j >= rows:
  35.                 break;
  36.             if arr[i] == arr[j]:
  37.                 cnt = cnt + 1
  38.                 j = j + 1
  39.             else:
  40.                 break;

  41.         if cnt >= 3:
  42.             aa = arr[i] + '.' + '000'      #IP最后一段默认补0,方便后面去除前导0
  43.             #去除前导0
  44.             no_zero_ip = netaddr.IPAddress(aa, flags=netaddr.ZEROFILL).ipv4()
  45.             bb = str(no_zero_ip) + '/' + '24'
  46.             result.add(bb)
  47.           #  print(arr[i])
  48.             i = cnt + i - 1;
  49.             break;
  50. sortres = sorted(result)
  51. for item in sortres:
  52.     print(item, end='\n')
复制代码



最后输出结果是这样的:
G:\IP\aliyun>python IP.py


1.92.195.0/24
1.92.196.0/24
106.55.200.0/24
106.8.130.0/24
106.8.131.0/24
106.8.136.0/24
106.8.137.0/24
106.8.138.0/24
106.8.139.0/24
110.249.201.0/24
110.249.202.0/24
111.206.206.0/24
111.221.214.0/24
111.225.148.0/24
111.225.149.0/24
113.215.188.0/24
113.215.189.0/24
113.45.167.0/24
114.119.128.0/24
114.119.129.0/24
114.119.130.0/24
114.119.131.0/24
114.119.133.0/24
114.119.134.0/24
114.119.135.0/24
114.119.136.0/24
114.119.137.0/24
114.119.140.0/24
114.119.141.0/24
114.119.145.0/24
114.119.147.0/24
114.119.148.0/24
114.119.149.0/24
114.119.150.0/24
114.119.153.0/24
114.119.154.0/24
114.119.156.0/24
114.119.157.0/24
114.119.158.0/24
114.119.159.0/24
114.250.41.0/24
114.250.43.0/24
114.250.48.0/24
114.251.196.0/24
115.45.42.0/24
116.132.136.0/24
116.132.138.0/24
116.132.216.0/24
116.132.217.0/24
116.132.218.0/24
116.132.219.0/24
116.132.223.0/24
116.132.236.0/24
116.132.252.0/24
116.132.254.0/24
116.132.255.0/24
116.179.32.0/24
116.179.33.0/24
116.179.37.0/24
116.204.105.0/24
116.204.108.0/24
116.204.69.0/24
116.204.97.0/24
116.76.208.0/24
116.76.38.0/24
121.237.36.0/24
121.37.105.0/24
121.37.106.0/24
121.37.107.0/24
121.37.96.0/24
122.192.32.0/24
123.160.223.0/24
123.182.48.0/24
123.182.49.0/24
123.182.50.0/24
123.182.51.0/24
123.183.235.0/24
123.189.113.0/24
123.6.49.0/24
124.239.12.0/24
14.155.182.0/24
14.155.224.0/24
14.155.225.0/24
14.155.226.0/24
14.155.227.0/24
14.155.232.0/24
153.3.241.0/24
154.81.156.0/24
154.83.103.0/24
157.55.39.0/24
180.101.52.0/24
185.191.171.0/24
185.213.245.0/24
185.90.60.0/24
192.178.6.0/24
195.191.219.0/24
207.46.13.0/24
213.180.203.0/24
216.244.66.0/24
217.113.194.0/24
220.181.108.0/24
220.181.51.0/24
27.115.124.0/24
3.141.46.0/24
36.155.132.0/24
40.77.167.0/24
47.128.114.0/24
47.128.115.0/24
47.128.118.0/24
47.128.119.0/24
47.128.120.0/24
47.128.121.0/24
47.128.122.0/24
47.128.123.0/24
47.128.124.0/24
47.128.125.0/24
47.128.126.0/24
47.128.127.0/24
47.128.18.0/24
47.128.19.0/24
47.128.20.0/24
47.128.21.0/24
47.128.22.0/24
47.128.23.0/24
47.128.27.0/24
47.128.28.0/24
47.128.29.0/24
47.128.30.0/24
47.128.32.0/24
47.128.34.0/24
47.128.36.0/24
47.128.37.0/24
47.128.38.0/24
47.128.40.0/24
47.128.41.0/24
47.128.42.0/24
47.128.45.0/24
47.128.46.0/24
47.128.47.0/24
47.128.48.0/24
47.128.50.0/24
47.128.51.0/24
47.128.52.0/24
47.128.53.0/24
47.128.54.0/24
47.128.55.0/24
47.128.56.0/24
47.128.57.0/24
47.128.58.0/24
47.128.59.0/24
47.128.60.0/24
47.128.62.0/24
47.128.63.0/24
47.128.96.0/24
47.128.97.0/24
47.128.98.0/24
47.128.99.0/24
47.79.121.0/24
47.79.122.0/24
47.79.123.0/24
47.79.2.0/24
47.79.3.0/24
47.79.5.0/24
47.79.6.0/24
47.79.7.0/24
47.79.98.0/24
47.82.10.0/24
47.82.11.0/24
51.222.253.0/24
51.8.102.0/24
52.167.144.0/24
52.80.179.0/24
54.223.31.0/24
54.36.148.0/24
54.36.149.0/24
57.141.2.0/24
59.82.21.0/24
66.249.66.0/24
66.249.68.0/24
66.249.69.0/24
66.249.70.0/24
66.249.72.0/24
66.249.73.0/24
66.249.75.0/24
66.249.77.0/24
66.249.79.0/24
66.249.92.0/24
69.171.249.0/24
74.125.150.0/24
85.208.96.0/24
85.208.98.0/24
87.250.224.0/24
95.108.213.0/24

-----------------------
-注意:

xlrd1.2.0之后的版本不支持xlsx格式,支持xls格式。解决办法:
方案一::
卸载新版本
  1. pip uninstall xlrd
复制代码
(或者更早版本)

方案二:
将xlrd用到的excel版本格式修改为xls(保险起见,另存为xls格式)

回复

使用道具 举报

93

主题

29

回帖

546

积分

高级会员

积分
546
 楼主| 发表于 2025-4-12 16:06:20 | 显示全部楼层
回复

使用道具 举报

93

主题

29

回帖

546

积分

高级会员

积分
546
 楼主| 发表于 2025-4-12 16:12:15 | 显示全部楼层
注意安装Python 支持模块:
pip install netaddr
pip install xlrd
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


QQ|Archiver|手机版|小黑屋|Bluetooth-UWB 联盟论坛 ( 京ICP备19003900号-5 )

GMT+8, 2025-12-5 04:36 , Processed in 0.014745 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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