拡張機能を生成する自動プロセスを構築しています。拡張機能 ID を直接計算し、ブラウザとの対話を完全にバイパスするコード例はありますか?
(私は以下の私自身の質問に答えています。)
拡張機能を生成する自動プロセスを構築しています。拡張機能 ID を直接計算し、ブラウザとの対話を完全にバイパスするコード例はありますか?
(私は以下の私自身の質問に答えています。)
私は Ruby の断片を含む関連記事しか見つけることができませんでした。これは IA でのみ利用可能です: http://web.archive.org/web/20120606044635/http://supercollider.dk/2010/01/calculating- chrome-extension-id-from-your-private-key-233
知っておくべき重要事項:
PEM でエンコードされた公開鍵を使用して、次の手順に従います。
以下は、これを行うための 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 形式の公開鍵を取得するには:
この例の公開鍵は、「Chrome Reader」拡張機能からのものです。その拡張 ID は「lojpenhmoajbiciapkjkiekmobleogjc」です。
以下も参照してください。
chrome は秘密の .pem キーのみを生成するため、python を使用して .crx ファイルから公開キーを取得するための便利で簡単な方法です。公開鍵は、実際には .crx ファイルに保存されます。
これは、 http: //developer.chrome.com/extensions/crx.html にある .crx ファイルの形式に基づいています。
import struct
import hashlib
import string
def get_pub_key_from_crx(crx_file):
with open(crx_file, 'rb') as f:
data = f.read()
header = struct.unpack('<4sIII', data[:16])
pubkey = struct.unpack('<%ds' % header[2], data[16:16+header[2]])[0]
return pubkey
def get_extension_id(crx_file):
pubkey = get_pub_key_from_crx(crx_file)
digest = hashlib.sha256(pubkey).hexdigest()
trans = string.maketrans('0123456789abcdef', string.ascii_lowercase[:16])
return string.translate(digest[:32], trans)
if __name__ == '__main__':
import sys
if len(sys.argv) != 2:
print 'usage: %s crx_file' % sys.argv[0]
print get_extension_id(sys.argv[1])
これは「ブラウザーとの対話をバイパスする」ことはできませんが、次のようなコマンドで .crx ファイルを生成する必要があるためです。
chrome.exe --pack-extension=my_extension --pack-extension-key=my_extension.pem