使用python调用微步在线接口实现自动化查询IP情报

目录

一、微步在线接口说明

二、官方示例

三、自动化查询IP情报信息


一、微步在线接口说明

        针对入站场景的IP进行分析, 能够提供IP的地理位置、ASN信息,通过判定规则精准判别IP是否恶意、风险严重级别、可信度级别;识别威胁类型,如:漏洞利用(exploit)、傀儡机(Zombie)、代理(Proxy)、可疑(Suspicious)等及相关安全事件或团伙标签。

        个人账号可以提供50次/天的权限。

二、官方示例

import requests

url = "https://api.threatbook.cn/v3/scene/ip_reputation"

query = {
  "apikey":"请替换apikey",
  "resource":"159.203.93.255"
}

response = requests.request("GET", url, params=query)

print(response.json())

三、自动化查询IP情报信息

        在做网络安全运营时,经常遇到IP来探测、攻击,除了分析研判该IP的行为外,还需要借助互联网情报中心进行查询该IP的情报,单个IP的查询稍微简单一些,直接登陆情报中心网站查询即可,但是批量查询的时候就需要用到自动化查询程序。

        以下是我根据微步在线的免费API开发的批量查询脚本,不是专业程序员,仅实现功能。 

import requests
from openpyxl import load_workbook
from openpyxl.styles import Font

url = "https://api.threatbook.cn/v3/scene/ip_reputation"

#将字符串转换成列表
def str_to_list(query_ips_str):
    query_ips_list = query_ips_str.split(',')
    return query_ips_list

#将查询的结果写到excel文件中
def write_into_excel(i, query_ip, sec_level, is_malicious, confidence_level, location, judgments):
    #length 查询IP列表的长度
    #sec_level 风险等级
    #is_malicious 是否恶意IP
    #confidence_level 可信度
    #judgments 威胁类型
    #location IP归属地
    #将查询结果记录在excel表中
    file = "file_path"
    wb1 = load_workbook(filename=file)
    ws1 = wb1['Sheet1']
    ws1["A{}".format(i)].value = query_ip
    ws1["B{}".format(i)].value = sec_level
    #如果是高风险IP就标红
    if ws1["B{}".format(i)].value == "high":
        font = Font(bold=True, color='9c0006')
        ws1.cell(row=i, column=2, value="high").font = font
    ws1["C{}".format(i)].value = is_malicious
    ws1["D{}".format(i)].value = confidence_level
    ws1["E{}".format(i)].value = judgments
    ws1["F{}".format(i)].value = location
    wb1.save(filename=file)

#通过接口查询IP相关信息
def get_ip_info(query_ips_list):
    length = len(query_ips_list)
    for i in range(length):
        query_ip = query_ips_list[i]
        query = {
          "apikey":"Your apiKey",
          "resource": query_ip
        }
        response = requests.request("GET", url, params=query)
        get_result = response.json()
        #查风险等级
        sec_level = get_result['data']['{}'.format(query_ip)]['severity']
        #查是否恶意IP
        is_malicious = get_result['data']['{}'.format(query_ip)]['is_malicious']
        #查可信度
        confidence_level = get_result['data']['{}'.format(query_ip)]['confidence_level']
        #查IP归属国家
        country = get_result['data']['{}'.format(query_ip)]['basic']['location']['country']
        #查IP归属省份
        province = get_result['data']['{}'.format(query_ip)]['basic']['location']['province']
        #查IP归属城市
        city = get_result['data']['{}'.format(query_ip)]['basic']['location']['city']
        #将IP归属的国家、省份、城市合并成一个字符串
        location = country + '-' + province + '-' + city
        #查威胁类型
        judgments = get_result['data']['{}'.format(query_ip)]['judgments']
        judgments = str(judgments)
        location = str(location)
        #调用写excel函数将查询结果写到excel表格中
        write_into_excel(i+2, query_ip, sec_level, is_malicious, confidence_level, location, judgments)

if __name__ == '__main__':
    query_ips_str = input("请输入需要查询的IP(1.1.1.1,2.2.2.2): ")
    query_ips_list = str_to_list(query_ips_str)
    get_ip_info(query_ips_list)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

見贤思齊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值