GHunt请求签名算法:解析Google服务认证的核心加密机制

GHunt请求签名算法:解析Google服务认证的核心加密机制

【免费下载链接】GHunt 🕵️‍♂️ Offensive Google framework. 【免费下载链接】GHunt 项目地址: https://gitcode.com/GitHub_Trending/gh/GHunt

认证痛点与解决方案

你是否在开发Google服务集成时遇到过API认证失败?是否对"SAPISIDHASH"和"client_sig"等参数感到困惑?本文将深入解析GHunt框架中实现的Google服务认证加密机制,帮助你理解请求签名的生成原理与应用方法。读完本文,你将能够:

  • 掌握Google服务认证的核心参数作用
  • 理解请求签名算法的实现逻辑
  • 学会在实际场景中应用签名机制

签名算法核心组件

签名密钥存储结构

GHunt将Google服务的签名密钥集中存储在ghunt/knowledge/sig.py文件中,采用字典结构管理不同服务的签名值:

sigs = {
    "com.google.android.play.games": "38918a453d07199354f8b19af05ec6562ced5788",
    "com.google.android.apps.docs": "38918a453d07199354f8b19af05ec6562ced5788",
    "com.android.vending": "38918a453d07199354f8b19af05ec6562ced5788",
    "com.google.android.youtube": "24bb24c05e47e0aefa68a58a766179d9b613a600",
    # 更多服务...
}

这些签名值是Google为不同应用分配的唯一标识符,用于验证请求来源的合法性。

API密钥管理

除签名密钥外,ghunt/knowledge/keys.py文件存储了各Google服务的API密钥信息:

keys = {
    "pantheon": {"key": "AIzaSyCI-zsRP85UVOi0DjtiCwWBwQ1djDy741g", "origin": "https://console.cloud.google.com"},
    "photos": {"key": "AIzaSyAa2odBewW-sPJu3jMORr0aNedh3YlkiQc", "origin": "https://photos.google.com"},
    "apis_explorer": {"key": "AIzaSyAa8yy0GdcGPHdtD083HiGGx_S0vMPScDM", "origin": "https://explorer.apis.google.com"},
    # 更多服务...
}

每个API密钥都与特定的服务域名绑定,确保请求来源的合法性验证。

签名算法实现流程

认证流程概述

GHunt的签名认证流程主要通过ghunt/helpers/auth.py实现,包含以下关键步骤:

mermaid

Android应用认证实现

ghunt/helpers/auth.py中,android_oauth_app函数实现了使用主令牌获取应用特定访问令牌的逻辑:

async def android_oauth_app(as_client: httpx.AsyncClient, master_token: str,
                package_name: str, scopes: List[str]) -> Tuple[str, List[str], int]:
    client_sig = get_package_sig(package_name)  # 获取应用签名
    
    data = {
        "app": package_name,
        "service": f"oauth2:{' '.join(scopes)}",
        "client_sig": client_sig,  # 使用签名密钥
        "Token": master_token
    }
    
    req = await as_client.post("https://android.googleapis.com/auth", data=data)
    # 处理响应...

该函数通过get_package_sig方法从ghunt/knowledge/sig.py中获取对应应用的签名值,确保请求的合法性。

实际应用场景

People API请求示例

ghunt/apis/peoplepa.py中的people_lookup方法展示了签名机制在实际API调用中的应用:

async def people_lookup(self, as_client: httpx.AsyncClient, email: str, params_template="just_gaia_id") -> Tuple[bool, Person]:
    endpoint = EndpointConfig(
        name = inspect.currentframe().f_code.co_name,
        verb = "GET",
        authentication_mode = "sapisidhash",  # 使用SAPISIDHASH认证
        require_key = "photos",  # 指定使用photos API密钥
    )
    
    # Android OAuth配置
    self.api_name = "people"
    self.package_name = "com.google.android.gms"  # 应用包名
    self.scopes = [
        "https://www.googleapis.com/auth/profile.agerange.read",
        "https://www.googleapis.com/auth/contacts",
        # 更多作用域...
    ]
    
    # 加载端点配置并发送请求...

这段代码展示了如何将签名密钥、API密钥和认证模式结合使用,实现对Google People API的安全访问。

签名验证失败的常见原因

  1. 签名密钥不匹配:使用了错误的应用签名值
  2. API密钥与服务不匹配:请求的服务与提供的API密钥不对应
  3. 作用域权限不足:请求的权限超出了令牌的授权范围
  4. 令牌过期:OAuth令牌或主令牌已过期

总结与展望

GHunt框架通过ghunt/knowledge/sig.pyghunt/helpers/auth.py等核心文件,实现了对Google服务认证机制的完整模拟。理解这一签名算法不仅有助于正确使用GHunt框架,也为开发其他Google服务集成工具提供了宝贵参考。

随着Google认证机制的不断更新,签名算法也需要持续演进。GHunt项目将继续跟踪最新的认证变化,为开发者提供稳定可靠的Google服务访问方案。

希望本文能帮助你更好地理解Google服务认证的核心加密机制。如果觉得有价值,请点赞收藏,关注项目更新获取更多技术解析。

【免费下载链接】GHunt 🕵️‍♂️ Offensive Google framework. 【免费下载链接】GHunt 项目地址: https://gitcode.com/GitHub_Trending/gh/GHunt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值