这里有个pyton脚本
"import json
import base64
import random
import string
# 前5个现有元素
existing_elements = [
{
"credentialId": "_FeevXSXl7MUhmYJkb-WWlDtjQM",
"type": "passkey",
"userHandle": "R09PR0xFX0FDQ09VTlQ6MTA3NDg1ODY3NTc3Njk3OTc1Nzg5",
"rpId": "google.com",
"userDisplayName": "satest.digitallegacy@gmail.com",
"username": "satest.digitallegacy@gmail.com",
"key": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghKXSg5AcKAUPxwQrT1ZJM_-E_lpm27V0IpNk-UQbrEahRANCAAQvRIQLhz8ZFP4imXZ541LRugO2yq5nj_Fc8GCQK80xVvgwWODluZCjhTcZD8CS8v7lcj_Tsk4V4rp3pATyCV3o",
"fido2Extensions": {
"hmacCredentials": {
"algorithm": "hmac-sha256",
"credWithUV": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI",
"credWithoutUV": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI"
}
}
},
{
"key": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg6oVr0j_PDD6mgx2tqY3jrPfC0zxIH0Ht_uZspv_So3qhRANCAAQq0bJjyNY0951HThAf-u78OXwMsX9FuQpv_vgWkUMkTpFLXhNYhFtwWr_-BdLF8dUk0dA4TTlUGWENKqrdOYgW",
"rpId": "amazon.com",
"userHandle": "NWFiZTMzOWY2NDhmZDlhYTljODExOWVhYzcxMTcwYmI5ZDI4N2ExOTJjMWMxYTA4ZTk3OGIwOTQ3MGFkZDcxYg",
"credentialId": "unyChD2qKjHM6xQQvuQa7j0JR9Y",
"type": "passkey",
"username": "spass4885@gmail.com",
"userDisplayName": "spass4885@gmail.com",
"fido2Extensions": {
"payments": False,
"hmacCredentials": {
"algorithm": "hmac-sha256",
"credWithUV": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI",
"credWithoutUV": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI"
}
}
},
{
"type": "passkey",
"userHandle": "Zzp1PnLudZrEktqb7EMiv8ifN8h8s8pTMoaPOSmtrLA",
"username": "spass4885@gmail.com",
"rpId": "www.kayak.co.kr",
"key": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgn0YLESok5SBInuxOOuCYJviTLcAoMvzsZmjs3TLb2G2hRANCAAQMFqddBsG-F3TSUw821D2QlHpCDMEpR8YAizVfufW38Q7BQ6arbHfQWzjIBkztZaZmn5CW-_SPZ1jE5OGTaoX_",
"userDisplayName": "spass4885@gmail.com",
"credentialId": "fy1QKomTKU3QhdN06z2Wr0qoO1M",
"fido2Extensions": {
"payments": False,
"credBlob": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI",
"hmacCredentials": {
"algorithm": "hmac-sha256",
"credWithUV": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI",
"credWithoutUV": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI"
}
}
},
{
"type": "passkey",
"userHandle": "7c4de3a9-e506-4a73-2d9c-ae088c3dfeb7",
"username": "spass4885@gmail.com",
"rpId": "uber.com",
"key": "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg6XOlY4hGod0tf0GSCOUcPYrx-MMJ9W01Mlj_lrV8kD6hRANCAARMQJe5IYo0NbRaaUC0cHIcWjq5Mgti53kJMHaUkXVhTXzQAMFq2NGDWtYo5nZGxtwYrhZNiHBliUzDCLX7RYrh",
"userDisplayName": "spass4885@gmail.com",
"credentialId": "hdw7kb0aeHZT595ubfj4En5-5oM",
"fido2Extensions": {
"payments": False,
"credBlob": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI",
"largeBlob": {
"uncompressedSize": 32,
"data": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI"
},
"hmacCredentials": {
"algorithm": "hmac-sha256",
"credWithUV": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI",
"credWithoutUV": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI"
}
}
},
{
"credentialId": "unyChD2qKjHM6xQQvuQa7j0JR9Y",
"key": "eyJrZXkiOiJNSUdIQWdFQU1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhCRzB3YXdJQkFRUWc2b1ZyMGpfUERENm1neDJ0cVkzanJQZkMwenhJSDBIdF91WnNwdl9TbzNxaFJBTkNBQVFxMGJKanlOWTA5NTFIVGhBZi11NzhPWHdNc1g5RnVRcHZfdmdXa1VNa1RwRkxYaE5ZaEZ0d1dyXy1CZExGOGRVazBkQTRUVGxVR1dFTktxcmRPWWdXIn0",
"rpId": "amazon.com",
"type": "passkey",
"userDisplayName": "spass4885@gmail.com",
"userHandle": "NWFiZTMzOWY2NDhmZDlhYTljODExOWVhYzcxMTcwYmI5ZDI4N2ExOTJjMWMxYTA4ZTk3OGIwOTQ3MGFkZDcxYg",
"username": "spass4885@gmail.com"
}
]
# 常见的rpId域名
rp_ids = [
"google.com", "amazon.com", "facebook.com", "apple.com", "microsoft.com",
"github.com", "twitter.com", "linkedin.com", "instagram.com", "netflix.com",
"spotify.com", "paypal.com", "ebay.com", "reddit.com", "dropbox.com",
"salesforce.com", "adobe.com", "slack.com", "zoom.us", "uber.com",
"airbnb.com", "booking.com", "expedia.com", "kayak.com", "stackoverflow.com"
]
# 生成随机字符串的函数
def random_string(length):
return "".join(random.choices(string.ascii_letters + string.digits, k=length))
# 生成随机Base64编码的字符串
def random_base64(length):
return base64.urlsafe_b64encode(random_string(length).encode()).decode().rstrip("=")
# 生成模拟的密钥数据
def generate_key():
return "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg" + random_base64(32) + "hRANCAAQ" + random_base64(40)
# 生成模拟的用户句柄
def generate_user_handle():
return base64.urlsafe_b64encode(random_string(40).encode()).decode().rstrip("=")
# 生成模拟的凭证ID
def generate_credential_id():
return random_base64(20)
# 生成模拟的扩展数据
def generate_hmac_credentials():
return {
"algorithm": "hmac-sha256",
"credWithUV": random_base64(32),
"credWithoutUV": random_base64(32)
}
# 生成新的元素
new_elements = []
for i in range(1000):
element = {
"credentialId": generate_credential_id(),
"type": "passkey",
"userHandle": generate_user_handle(),
"rpId": random.choice(rp_ids),
"userDisplayName": f"user{i}@example.com",
"username": f"user{i}@example.com",
"key": generate_key()
}
# 随机添加扩展字段
if random.random() < 0.7: # 70%概率添加fido2Extensions
element["fido2Extensions"] = {
"hmacCredentials": generate_hmac_credentials()
}
# 随机添加其他扩展字段
if random.random() < 0.3: # 30%概率添加payments
element["fido2Extensions"]["payments"] = random.choice([True, False])
if random.random() < 0.4: # 40%概率添加credBlob
element["fido2Extensions"]["credBlob"] = random_base64(32)
if random.random() < 0.2: # 20%概率添加largeBlob
element["fido2Extensions"]["largeBlob"] = {
"uncompressedSize": random.choice([32, 64, 128]),
"data": random_base64(32)
}
new_elements.append(element)
# 合并现有元素和新元素
all_elements = existing_elements + new_elements
# 输出结果
print(json.dumps(all_elements, indent=2))
" 帮我修改一下把all_elements写入到文件里面