huaguoshanhouzi 发表于 2023-8-11 15:23

比较IP和域名的小工具

本帖最后由 huaguoshanhouzi 于 2023-8-11 15:40 编辑

在某些时候特别需要一个工具来帮助我处理大量的IOC识别工作,网上找了很多地方都没找到,要么就是设备上固定的,所有就简单写了个小工具。感觉其中还有很多可以优化的地方,所以他分享出来,希望可以群策群力继续优化。需要的朋友请自取。
def checkIoc():#IOC指标检查模块,被检查对象格式txt,ioc指标格式xlsx# t.yesware.com
    path='./ioc'
    iocs=[]
    print('IOC指标加载中...')
    for f in os.listdir(path):
      if f.endswith('.xlsx'):#加载ioc指标
            filepaths=os.path.join(path,f)
            iocfile=pd.read_excel(filepaths)
            ioc=iocfile.iloc[:,0].tolist()
            for i in ioc:
                iocs.append(i)
    iocs=list(set(iocs))#去重
    ioc_num=[]
    ioc_letter=[]
    for i in iocs:#ioc指标分类
      if is_number(i[-1:]):
            ioc_num.append(i)
      else:
            ioc_letter.append(i)
    #获取待检查文件
    print('被检查文件加载中...')
    ipfilepath='./maybeioc'
    ip=[]
    for f in os.listdir(ipfilepath):# 遍历文件目录
      fip=os.path.join(ipfilepath,f)
      if f.endswith('.xlsx'):#判断xlsx文件格式
            fl=pd.read_excel(fip)#读取xlsx文件
            ip=fl.iloc[:,0].tolist()
    x=''
    yesIoc=[]
    for j in ip:#比对ioc,时间复杂度n^2,若有条件可以改进
      if is_number(j[-1:]):#分流使用域名还是IP比对
            for k in ioc_num:#
                if j==k:
                  yesIoc.append(j)
                  x=True
      else:
            for k in ioc_letter:
                if j==k:
                  yesIoc.append(j)
                  x=True
    if x!=True:
      print('未找到对应IOC')
    else:
      print('比对到可疑IOC,信息如下')
      for iox in yesIoc: #循环打印
            print(iox)
def is_number(s):
    try:
      float(s)
      return True
    except ValueError:
      return False
这个小工具需要用到的其他条件如下:
在工具当前目录下需要有两个文件夹ioc和maybeioc
文件夹中的需要使用的文件都是.xlsx后缀。并且使用的参数需要放在第一列才能被检测到。两个文件夹文件格式都一样。另外欢迎大家一起探索更加高效的算法或者方式。本人第一次发帖,有不对的地方欢迎指正。谢谢
页: [1]
查看完整版本: 比较IP和域名的小工具