added dotenv, and added code to update common mailserver contract directrly to keyfinder fn

This commit is contained in:
Divide-By-0
2023-11-06 13:31:05 +03:00
parent c62bf34813
commit 941ab0f828
4 changed files with 257 additions and 9 deletions

View File

@@ -23,5 +23,8 @@
"ts-jest": "^29.1.0",
"ts-node": "^10.9.1",
"typescript": "^5.2.2"
},
"dependencies": {
"dotenv": "^16.3.1"
}
}

View 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

View File

@@ -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);

View File

@@ -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