当前位置: 首页 > 面试题库 >

如何以编程方式计算Chrome扩展程序ID?

康秋月
2023-03-14
问题内容

我正在建立一个自动化的过程来产生扩展。是否存在直接计算扩展名ID并完全绕过与浏览器交互的代码示例?

(我在下面回答我自己的问题。)


问题答案:

我只能找到有关Ruby片段的相关文章,并且仅在IA中可用:http
://web.archive.org/web/20120606044635/http:
//supercollider.dk/2010/01/calculating-
chrome扩展名来自您的私钥233


重要提示:

  1. 这取决于DER编码的公共密钥(原始二进制文件),而不取决于PEM编码的密钥(通过对DER密钥进行base64编码生成的漂亮ASCII)。
  2. 扩展ID为base-16,但使用[ap](称为“ mpdecimal”)而不是[0-9a-f]进行编码。

使用PEM编码的公钥,请执行以下步骤:

  1. 如果您的PEM格式的公钥仍然具有页眉和页脚并且被分成多行,请手动对其进行重新格式化,以使您拥有一个不包含页眉和页脚的单个字符串,并一起运行,以便密钥换行到下一个。
  2. Base64解码公钥以呈现DER格式的公钥。
  3. 生成DER格式密钥的SHA256十六进制摘要。
  4. 取哈希的前32个字节。您将不需要其余的。
  5. 对于每个字符,将其转换为10为底,并为’a’添加ASCII码。

以下是执行此操作的Python例程:

import hashlib
from base64 import b64decode

def build_id(pub_key_pem):
    pub_key_der = b64decode(pub_key_pem)
    sha = hashlib.sha256(pub_key_der).hexdigest()
    prefix = sha[:32]

    reencoded = ""
    ord_a = ord('a')
    for old_char in prefix:
        code = int(old_char, 16)
        new_char = chr(ord_a + code)

        reencoded += new_char

    return reencoded

def main():
    pub_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjvF5pjuK8gRaw/2LoRYi37QqRd48B/FeO9yFtT6ueY84z/u0NrJ/xbPFc9OCGBi8RKIblVvcbY0ySGqdmp0QsUr/oXN0b06GL4iB8rMhlO082HhMzrClV8OKRJ+eJNhNBl8viwmtJs3MN0x9ljA4HQLaAPBA9a14IUKLjP0pWuwIDAQAB'

    id_ = build_id(pub_key)
    print(id_)

if __name__ == '__main__':
    main()

非常欢迎您针对现有扩展名及其ID进行测试。要检索其PEM格式的公钥:

  1. 转到Chrome中现有扩展程序的列表。抓住扩展ID之一。
  2. 查找托管扩展的目录。在我的Windows 7框中,它是:C:\ Users <用户名> \ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Extensions <扩展名>
  3. 从“ key”下的manifest.json文件中获取公共密钥。由于密钥已经准备好进行base64解码,因此可以跳过该过程的步骤(1)。

该示例中的公共密钥来自“ Chrome阅读器”扩展名。它的扩展名是“ lojpenhmoajbiciapkjkiekmobleogjc”。

也可以看看:

  1. Google Chrome-字母数字哈希标识扩展名
  2. http://blog.roomanna.com/12-14-2010/getting-an-extenshtml" target="_blank">ions-id


 类似资料:
  • 问题内容: 我想创建一个Google Chrome扩展程序。具体来说,我想制作一个打包的应用程序,而不是一个托管的应用程序。我认为这限制了我使用JavaScript(和HTML / CSS)是否正确? 我的问题是我需要做一些复杂的数学运算(奇异值分解,因子分析),并且我不想在javascript中为此编写算法。Python已经有了我需要的功能的库(SciPy),但是我找不到任何可以使用python

  • 使用故事板非常简单。您只需将操作拖到“退出”。但是我应该如何从我的代码中调用它呢?

  • 问题内容: 您好,我尝试使用python使用Selenium安装Chrome扩展程序,我尝试使用ChromeDriver-WebDriver for Chrome 但这不起作用,这是我的代码: 这是我得到的错误: 我尝试用其他3种不同的方式进行此操作,实际上在Stack Overflow中有一个类似的问题,其答案已被弃用,如果再次找到它,我将在此处编写链接。 问题答案: 要使用的python客户端

  • Flarum 是简约的,同时也是高度可扩展的。实际上,Flarum 附带的大部分功能都是扩展程序。 这种方法使得 Flarum 具有极高的可定制性。您可以禁用任何您不需要的功能,并安装其他扩展,打造更适合您的社区。 如果您想了解更多关于 Flarum 的理念,我们在核心中包含了哪些功能,或者您想制作自己的扩展,请查看我们的 扩展文档。 本文将重点讨论从论坛管理员的角度管理扩展。 Flarum 有一

  • 问题内容: 我正在创建一个扩展程序,它将从网站上下载mp3文件。我正在尝试通过创建带有指向mp3文件的链接的新标签来实现此目的,但是chrome会继续在播放器中打开它而不是下载它。有什么方法可以创建一个弹出窗口,要求用户“另存为”文件? 问题答案: 快进了3年,现在GoogleChrome提供了API(自Chrome31起)。 在清单中声明许可后,可以通过以下调用启动下载: 如果要在脚本中生成文件

  • 问题内容: 我正在尝试从弹出窗口访问activeTab DOM内容。这是我的清单: 我真的很困惑,背景脚本(持久性事件页:false)还是content_scripts是可行的方法。我已经阅读了所有文档和其他SO帖子,但对我来说仍然没有意义。 有人可以解释为什么我可能会用另一个。 这是我一直在尝试的background.js: 我只是从弹出控制台执行此操作: 我越来越: 更新: content.j

  • 问题内容: 我知道如何在Selenium Webdriver中加载Chrome扩展程序。但是我没有看到任何描述如何从Selenium 运行 chrome扩展的帖子/博客。 我需要明确地使chrome扩展程序运行/使其从selenium中执行其功能。例如,我想使用带有Selenium Webdriver的扩展程序清除Chrome浏览器的缓存。 我可以先做吗?还是Selenium WebDriver仅

  • 问题内容: 我的Chrome扩展程序有小问题。 我只想从另一台服务器获取JSON数组。但是清单2不允许我这样做。我尝试指定,但是JSON数组存储在没有SSL证书的服务器上。 那么,不使用清单1怎么办? 问题答案: 该CSP不能引起你所描述的问题。您很有可能使用的是JSONP而不是纯JSON。JSONP在Chrome中不起作用,因为JSONP通过在文档中插入标签而起作用,该标签的属性设置为Web服务