mirror of
https://github.com/zkemail/zk-email-verify.git
synced 2026-01-09 13:38:03 -05:00
added dotenv, and added code to update common mailserver contract directrly to keyfinder fn
This commit is contained in:
@@ -23,5 +23,8 @@
|
||||
"ts-jest": "^29.1.0",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^5.2.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv": "^16.3.1"
|
||||
}
|
||||
}
|
||||
|
||||
222
packages/helpers/src/dkim/domains.txt
Normal file
222
packages/helpers/src/dkim/domains.txt
Normal file
@@ -0,0 +1,222 @@
|
||||
0xparc.org
|
||||
1kx.capital
|
||||
a16z.com
|
||||
a42x.co.jp
|
||||
aeriuslabs.org
|
||||
ahmadafuni.com
|
||||
airdao.io
|
||||
albiona.dev
|
||||
alchemy.com
|
||||
altresear.ch
|
||||
andrew.cmu.edu
|
||||
antalpha.com
|
||||
ante.xyz
|
||||
arabbank.ch
|
||||
archetype.fund
|
||||
arpachain.io
|
||||
arrakis.fi
|
||||
arx.org
|
||||
atomlabs.one
|
||||
auranft.co
|
||||
aztecprotocol.com
|
||||
bankisan.xyz
|
||||
bankless.com
|
||||
berkeley.edu
|
||||
bitexen.com
|
||||
blockchain.capital
|
||||
blockchaincapital.com
|
||||
boun.edu.tr
|
||||
briq.construction
|
||||
btc.mozmail.com
|
||||
canvas.xyz
|
||||
cartridge.gg
|
||||
cedoor.dev
|
||||
ceremonious.xyz
|
||||
chainsafe.io
|
||||
chainway.xyz
|
||||
cherry.vc
|
||||
circularise.com
|
||||
clave.team
|
||||
coinbase.com
|
||||
coinfund.io
|
||||
coinix.capital
|
||||
columbia.edu
|
||||
concorde.studio
|
||||
consensys.net
|
||||
constellationlabs.xyz
|
||||
creatoros.co
|
||||
cyber.fund
|
||||
dalstonlabs.com
|
||||
dba.xyz
|
||||
dcpos.ch
|
||||
deenz.dev
|
||||
defi.sucks
|
||||
deltafund.io
|
||||
dexlabs.xyz
|
||||
dfinity.org
|
||||
di.ku.dk
|
||||
dodoex.io
|
||||
doru.io
|
||||
eclecticqbit.art
|
||||
edenia.com
|
||||
edu.devinci.fr
|
||||
eeckhaut.org
|
||||
essec.edu
|
||||
ethereal.xyz
|
||||
ethereum.foundation
|
||||
ethereum.org
|
||||
europe.com
|
||||
extropy.io
|
||||
figmentcapital.io
|
||||
flamy.dev
|
||||
flyingnobita.com
|
||||
framework.ventures
|
||||
g.ucla.edu
|
||||
galaxy.com
|
||||
garillot.net
|
||||
geometry.xyz
|
||||
gizatech.xyz
|
||||
gmail.com
|
||||
gmu.edu
|
||||
gnosis.io
|
||||
hackachain.io
|
||||
hedgey.finance
|
||||
hey.com
|
||||
hotmail.com
|
||||
hu-berlin.de
|
||||
hudsonjameson.com
|
||||
hyperoracle.io
|
||||
hypersphere.ventures
|
||||
i-globalsociety.com
|
||||
icloud.com
|
||||
iki.fi
|
||||
immutable.com
|
||||
ingonyama.com
|
||||
intrinsictech.xyz
|
||||
inversed.tech
|
||||
iosg.vc
|
||||
ironfish.network
|
||||
ise.tu-berlin.de
|
||||
itu.edu.pk
|
||||
jacque006.com
|
||||
jonashals.me
|
||||
kakarot.org
|
||||
kaleido.io
|
||||
kattis.io
|
||||
kevincharm.com
|
||||
kirastudio.xyz
|
||||
ku.edu.tr
|
||||
lightscale.io
|
||||
limaois.me
|
||||
litprotocol.com
|
||||
live.com
|
||||
m.fudan.edu.cn
|
||||
mach34.space
|
||||
maddevs.io
|
||||
mail.utoronto.ca
|
||||
mainstream.so
|
||||
matterlabs.dev
|
||||
maya-zk.com
|
||||
metavoid.xyz
|
||||
metu.edu.tr
|
||||
mixbytes.io
|
||||
monad.xyz
|
||||
nandyba.fr
|
||||
nethermind.io
|
||||
nibnalin.me
|
||||
nil.foundation
|
||||
nocturnelabs.xyz
|
||||
nodeguardians.io
|
||||
nucypher.com
|
||||
o1labs.org
|
||||
oakgroup.co
|
||||
obol.tech
|
||||
openblocklabs.com
|
||||
openzeppelin.com
|
||||
outlook.com
|
||||
panteracapital.com
|
||||
paribu.com
|
||||
pauldowman.com
|
||||
pfeifferresearch.com
|
||||
piertwo.com
|
||||
pm.me
|
||||
polygon.technology
|
||||
polymorphic.capital
|
||||
polytope.technology
|
||||
postech.ac.kr
|
||||
posteo.net
|
||||
powdrlabs.com
|
||||
primev.xyz
|
||||
proton.me
|
||||
protonmail.com
|
||||
puffer.fi
|
||||
puzzle.online
|
||||
pwn.xyz
|
||||
quantstamp.com
|
||||
reilabs.io
|
||||
risczero.com
|
||||
ryanycw.dev
|
||||
saleel.xyz
|
||||
scroll.io
|
||||
seas.upenn.edu
|
||||
secbit.io
|
||||
seismic.systems
|
||||
semaphore.network
|
||||
semiotic.ai
|
||||
setprotocol.com
|
||||
shamirlabs.org
|
||||
sigmaprime.io
|
||||
sinaxyz.io
|
||||
skiff.com
|
||||
snarkify.io
|
||||
snu.ac.kr
|
||||
solity.org
|
||||
sovlabs.io
|
||||
spacemesh.io
|
||||
stanford.edu
|
||||
starkware.co
|
||||
status.im
|
||||
succinct.xyz
|
||||
sunscreen.tech
|
||||
surfermonkey.io
|
||||
swin.edu.au
|
||||
taceo.io
|
||||
takasbank.com.tr
|
||||
talentprotocol.com
|
||||
tanelabs.com
|
||||
tcry.pt
|
||||
telecom-paris.fr
|
||||
theradius.xyz
|
||||
titanproxy.com
|
||||
token.im
|
||||
tonk.gg
|
||||
trioblockchainlabs.com
|
||||
tum.de
|
||||
tuneinsight.com
|
||||
tuta.io
|
||||
txfusion.io
|
||||
ucm.es
|
||||
ucsb.edu
|
||||
unibas.ch
|
||||
ventral.org
|
||||
veridise.com
|
||||
vest.xyz
|
||||
vhove.com
|
||||
yacademy.dev
|
||||
yahoo.com
|
||||
yale.edu
|
||||
youssefmir.com
|
||||
zellic.io
|
||||
zemse.in
|
||||
zeroknowledge.fm
|
||||
zilm.net
|
||||
zk3.io
|
||||
zkcamp.xyz
|
||||
zkonduit.com
|
||||
zkvalidator.com
|
||||
fireblocks.com
|
||||
setprotocol.com
|
||||
me.com
|
||||
ethereum.org
|
||||
wharton.upenn.edu
|
||||
gmail.com
|
||||
@@ -8,6 +8,8 @@ const network = 'goerli'; // or whatever network you're using
|
||||
const alchemyApiKey = process.env.ALCHEMY_GOERLI_KEY;
|
||||
const infuraApiKey = process.env.INFURA_KEY;
|
||||
const localSecretKey = process.env.PRIVATE_KEY || '0';
|
||||
const mailserver_address = "0x638E55F942cBD6f8cb715e9C6a9d747c6F852196";
|
||||
|
||||
const default_abi = [{
|
||||
"inputs": [
|
||||
{
|
||||
@@ -38,12 +40,13 @@ async function updateMailserverKeys(domain: string, selector: string, contract_a
|
||||
const wallet = new ethers.Wallet(localSecretKey, provider);
|
||||
const contract = new ethers.Contract(contract_address, abi, wallet);
|
||||
|
||||
const publicKeyParts = await formatDkimKey(domain, selector);
|
||||
const publicKeyParts = await formatDkimKey(domain, selector, false);
|
||||
|
||||
if (!publicKeyParts) {
|
||||
console.log('No public key found');
|
||||
return;
|
||||
}
|
||||
|
||||
if (parallel) {
|
||||
let nonce = await provider.getTransactionCount(wallet.address);
|
||||
const txs = publicKeyParts.map(async (part, i) => {
|
||||
@@ -63,7 +66,7 @@ async function updateMailserverKeys(domain: string, selector: string, contract_a
|
||||
}
|
||||
}
|
||||
|
||||
async function testSelector(domain: string, selector: string) {
|
||||
async function testSelector(domain: string, selector: string) {
|
||||
try {
|
||||
const publicKeyParts = await formatDkimKey(domain, selector, false);
|
||||
if (publicKeyParts) {
|
||||
@@ -80,9 +83,10 @@ async function testSelector(domain: string, selector: string) {
|
||||
|
||||
// Filename is a file where each line is a domain
|
||||
// This searches for default selectors like "google" or "default"
|
||||
async function getSelectors(filename: string) {
|
||||
async function getSelectors(filename: string, update_contract = false) {
|
||||
const fs = require('fs');
|
||||
const selectors = ['google', 'default', 'mail', 'smtpapi', 'dkim', 'v1', 'v2', 'v3', 'k1', 'k2', 'k3', 'hs1', 'hs2', 's1', 's2', 's3', '200608', 'sig1', 'sig2', 'sig3', 'selector', 'selector1', 'selector2', '20230601', '20221208', '20210112', 'mindbox', 'bk', 'sm1', 'sm2', 'gmail', '10dkim1', '11dkim1', '12dkim1', 'memdkim', 'm1', 'mx', 'sel1', 'bk', 'scph1220', 'ml', 'pps1', 'scph0819', 'skiff1', 's1024', 'selector1'];
|
||||
// const selectors = ['google']
|
||||
const selectors = ['google', 'default', 'mail', 'smtpapi', 'dkim', '200608', '20230601', '20221208', '20210112', 'v1', 'v2', 'v3', 'k1', 'k2', 'k3', 'hs1', 'hs2', 's1', 's2', 's3', 'sig1', 'sig2', 'sig3', 'selector', 'selector1', 'selector2', 'mindbox', 'bk', 'sm1', 'sm2', 'gmail', '10dkim1', '11dkim1', '12dkim1', 'memdkim', 'm1', 'mx', 'sel1', 'bk', 'scph1220', 'ml', 'pps1', 'scph0819', 'skiff1', 's1024', 'selector1'];
|
||||
|
||||
const data = fs.readFileSync(filename, 'utf8');
|
||||
const domains = data.split('\n');
|
||||
@@ -111,15 +115,26 @@ async function getSelectors(filename: string) {
|
||||
}
|
||||
console.log("Domains with at least one matched selector: ");
|
||||
console.log(Array.from(matchedDomains));
|
||||
|
||||
// Update mailserver contract with found keys
|
||||
if (update_contract) {
|
||||
for (let domain of Object.keys(matchedSelectors)) {
|
||||
console.log(`Domain: ${domain}, Selectors: ${matchedSelectors[domain]}`);
|
||||
for (let selector of matchedSelectors[domain]) {
|
||||
await updateMailserverKeys(domain, selector, mailserver_address, default_abi, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fs.writeFileSync('domain_results.txt', JSON.stringify(Array.from(matchedDomains), null, 2));
|
||||
fs.writeFileSync('selector_results.txt', JSON.stringify(matchedSelectors , null, 2));
|
||||
fs.writeFileSync('selector_results.txt', JSON.stringify(matchedSelectors, null, 2));
|
||||
}
|
||||
|
||||
let domain = process.argv[2] || 'gmail.com';
|
||||
let selector = process.argv[3] || '20230601';
|
||||
domain = 'protonmail.com';
|
||||
selector = 'protonmail3';
|
||||
domain = 'pm.me';
|
||||
selector = 'protonmail3';
|
||||
// updateMailserverKeys(domain, selector, "0xbfc2f7c49f040403eef1dbe8ad089fee87edbf57", default_abi);
|
||||
getSelectors('src/dkim/domains.txt');
|
||||
// domain = 'pm.me';
|
||||
// selector = 'protonmail3';
|
||||
// updateMailserverKeys(domain, selector, mailserver_address, default_abi);
|
||||
getSelectors('src/dkim/domains.txt', true);
|
||||
@@ -7707,6 +7707,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"dotenv@npm:^16.3.1":
|
||||
version: 16.3.1
|
||||
resolution: "dotenv@npm:16.3.1"
|
||||
checksum: 15d75e7279018f4bafd0ee9706593dd14455ddb71b3bcba9c52574460b7ccaf67d5cf8b2c08a5af1a9da6db36c956a04a1192b101ee102a3e0cf8817bbcf3dfd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ds-test@https://github.com/dapphub/ds-test":
|
||||
version: 1.0.0
|
||||
resolution: "ds-test@https://github.com/dapphub/ds-test.git#commit=e282159d5170298eb2455a6c05280ab5a73a4ef0"
|
||||
@@ -14272,6 +14279,7 @@ __metadata:
|
||||
"@babel/preset-typescript": ^7.21.5
|
||||
babel-jest: ^29.5.0
|
||||
babel-preset-jest: ^29.5.0
|
||||
dotenv: ^16.3.1
|
||||
husky: ^8.0.3
|
||||
jest: ^29.5.0
|
||||
ts-jest: ^29.1.0
|
||||
|
||||
Reference in New Issue
Block a user