跳转至

第二期:调用某安全工具指纹的识别扫描

🎯 作业目标

  • 在第一期作业的基础上,利用提取出的 某安全工具 指纹,编写一个可以识别目标网站指纹的扫描工具。

📖 作业背景

拥有指纹数据只是第一步,真正的价值在于应用这些数据。本期作业的目标是将第一期提取的指纹库用起来,实现一个简单的被动指纹识别扫描器。

📝 作业要求

  1. 加载指纹库

    • 编写代码,读取并解析第一期作业中提取出的 某安全工具 指纹数据。
    • 将指纹数据加载到内存中,构建一个高效的数据结构以便于快速查询(如 mapdict)。
  2. 实现扫描逻辑

    • 编写一个函数或类,输入一个目标 URL。
    • 该函数需要请求目标 URL,获取其响应内容(HTML, Headers 等)。
    • 遍历内存中的指纹库,将响应内容与指纹规则进行匹配。
  3. 指纹匹配规则

    • 你需要根据 某安全工具 指纹的结构,实现相应的匹配逻辑。常见的匹配方式包括:
      • 关键字匹配:在 HTML 源码中查找特定的字符串。
      • Header 匹配:检查响应头中是否存在特定的 Header 或其值。
      • ICO 文件哈希匹配:请求网站的 favicon.ico 文件,计算其哈希值并与指纹库中的哈希进行比对。
  4. 输出识别结果

    • 如果匹配成功,程序应输出识别到的指纹名称(如 "jQuery", "Apache", "Shiro" 等)。
    • 支持同时识别出多个指纹。
  5. 成果展示

    • 提供你的扫描器源代码。
    • 用几个知名网站作为测试目标,展示你的扫描结果。

💡 核心思路与提示

  • 并发处理:如果需要同时扫描多个目标,考虑使用并发来提高效率。
  • HTTP 请求库:使用成熟的 HTTP 请求库(如 requests in Python, http in Go)来处理网络请求,注意处理重定向和超时。
  • 代码复用:良好的代码结构能让你在后续作业中方便地复用这些基础功能。

🔗 参考链接


这个作业将让你对 Web 指纹识别的原理有更深入的理解,并为你后续构建更复杂的扫描器打下基础。