Finger_fofa_api无法使用问题

文章讲述了FofaAPI的规则变化,不再需要传入邮箱且对邮箱进行了加密。给出了代码示例,说明如何在Python脚本中适应新的API要求,包括检查邮箱和处理查询接口的变化。
部署运行你感兴趣的模型镜像

Finger_fofa_api无法使用问题

原因

fofa的api规则改变,不需要传邮箱,并且把邮箱加密了

image-20240105100217092

查询接口也不需要传邮箱,所以改下代码就行

image-20240105100256069

解决

check函数一直在判断邮箱删了就行,可以判断这个category = “user”

也删除了查询接口的邮箱

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author = EASY
import json
import base64
import random
import requests
from urllib.parse import quote
from config.data import logging,Urls,Ips
from config.config import Fofa_key,Fofa_email,user_agents,Fofa_Size


class Fofa:
    def __init__(self):
        #self.email = Fofa_email
        self.key = Fofa_key
        self.size = Fofa_Size
        self.headers = {
            "User-Agent": random.choice(user_agents)
        }
        if self.check():
            if Ips.ip:
                for ip in Ips.ip:
                    ip = "ip={}".format(ip)
                    self.run(ip)
            else:
                try:
                    logging.info("[FOFA Example]domain=example.com\n")
                    while 1:
                        keyword = input("请输入查询关键词:").strip()
                        size = input("请输入查询的数量(默认100):").strip()
                        self.size = int(size) if size else 100
                        if keyword == "":
                            logging.error("\n关键字不能为空!")
                        else:
                            break
                    self.run(keyword)
                except KeyboardInterrupt:
                    logging.error("\n用户取消输入!直接退出。")
                    exit(0)
        else:
            logging.error("fofa api不可用,请检查配置是否正确!")

    def run(self,keyword):
        logging.info("正在调用fofa进行收集资产。。。。")
        logging.info("查询关键词为:{0},查询数量为:{1}".format(keyword,self.size))
        keyword = quote(str(base64.b64encode(keyword.encode()), encoding='utf-8'))
        url = "https://fofa.info/api/v1/search/all?key={0}&qbase64={1}&full=false&fields=protocol,host&size={2}".format(self.key, keyword, self.size)
        try:
            response = requests.get(url,timeout=10,headers = self.headers )
            datas = json.loads(response.text)
            if "results" in datas.keys():
                for data in datas["results"]:
                    _url = ""
                    if "http" in data[1] or "https" in data[1]:
                        _url = data[1]
                    elif "http" == data[0] or "https" == data[0]:
                        _url = "{0}://{1}".format(data[0], data[1])
                    elif "" == data[0]:
                        _url = "{0}://{1}".format("http", data[1])
                    if _url:
                        logging.info(_url)
                        Urls.url.append(_url)
        except requests.exceptions.ReadTimeout:
            logging.error("请求超时")
        except requests.exceptions.ConnectionError:
            logging.error("网络超时")
        except json.decoder.JSONDecodeError:
            logging.error("获取失败,请重试")
        except:
            logging.error("获取失败")
            pass

    def check(self):
        try:
            category = "user"
            if self.key:
                auth_url = "https://fofa.info/api/v1/info/my?key={0}".format(self.key)
                response = requests.get(auth_url, timeout=10, headers=self.headers)
                if category in response.text:
                    return True
                else:
                    return False
            else:
                return False
        except:
            return False

最后

这项目作者不更新了吗(-.-)

最后放个图

c0dd2053b27e4957af8aedd5fe3ca485

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

指纹解锁过程中,`finger_down`和`finger_up`事件的上报机制是驱动层与上层应用协同工作的关键部分。在硬件层面,当用户的指纹接触到指纹传感器时,传感器会检测到压力变化并生成相应的信号。这一信号会被指纹模块的驱动程序捕获,并转化为标准的输入事件上报给操作系统。 在Linux内核中,指纹设备通常被实现为一个输入设备(`input device`),通过`input_report_key()`或者`input_report_abs()`函数来上报事件。对于指纹解锁场景,`finger_down`事件通常表示手指按下,而`finger_up`事件表示手指离开。这些事件通过`EV_KEY`或`EV_ABS`类型的输入事件进行上报。 例如,驱动中可能包含如下代码片段用于上报`finger_down`事件: ```c input_report_key(data->input_dev, BTN_FINGER_DOWN, 1); input_sync(data->input_dev); ``` 当手指离开传感器时,驱动程序会发送`finger_up`事件: ```c input_report_key(data->input_dev, BTN_FINGER_DOWN, 0); input_sync(data->input_dev); ``` 在用户空间,Android系统通过`InputManagerService`来监听这些输入事件。一旦检测到`finger_down`事件,系统会触发指纹认证流程,向TrustZone端的指纹TA发起图像采集和模板对比操作,这一过程的耗时业内标准约为200ms左右[^1]。 为了处理这些事件,驱动程序需要注册一个`input_dev`结构体,并且初始化相关的事件类型和支持的按键码。此外,还需要配置中断处理函数来响应硬件状态的变化,从而及时上报`finger_down`和`finger_up`事件。 在实际开发中,开发者需要注意以下几点: - 确保驱动正确地注册了输入设备,并且设置了正确的事件类型和按键码。 - 在硬件中断处理函数中,及时上报`finger_down`和`finger_up`事件。 - 对于触摸屏相关的指纹传感器,还需要考虑与触摸屏驱动的协调,避免事件冲突。 驱动层的实现细节会根据具体的硬件平台有所不同,但总体上报机制遵循上述描述的基本模式。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值