Skip to content

lukaw3d bookmarklets

Luka Jeran edited this page Jul 13, 2024 · 8 revisions

gen account

javascript:/* use on https://wallet.oasis.io/ */;
reactContainerField = Object.keys(document.querySelector('#root')).find(field=>field.startsWith('__reactContainer'));
store = document.querySelector('#root')[reactContainerField].memoizedState.element.props.store;
function requireUnscrambled(moduleName) {;
  const parcelRequire = Object.entries(window).find(a=>a[0].startsWith('parcelRequire'))[1];
  const scrambledName = Object.values(parcelRequire.modules).flatMap(a=>Object.entries(a[1])).find(a=>a[0]===moduleName)[1];
  return parcelRequire(scrambledName);
};
;
;
store.dispatch({ type: 'network/selectNetwork', payload: 'testnet' });
store.dispatch({
  type: 'wallet/openWalletFromPrivateKey',
  payload: {
    privateKey: requireUnscrambled('app/lib/helpers').uint2hex(requireUnscrambled('app/lib/key').OasisKey.fromPrivateKey(crypto.getRandomValues(new Uint8Array(32)))),
    choosePassword: undefined
  }
});

test account

javascript:/* use on https://wallet.oasis.io/ */;
reactContainerField = Object.keys(document.querySelector('#root')).find(field=>field.startsWith('__reactContainer'));
store = document.querySelector('#root')[reactContainerField].memoizedState.element.props.store;
function requireUnscrambled(moduleName) {;
  const parcelRequire = Object.entries(window).find(a=>a[0].startsWith('parcelRequire'))[1];
  const scrambledName = Object.values(parcelRequire.modules).flatMap(a=>Object.entries(a[1])).find(a=>a[0]===moduleName)[1];
  return parcelRequire(scrambledName);
};
;
;
store.dispatch({ type: 'network/selectNetwork', payload: 'testnet' });
store.dispatch({
  type: 'wallet/walletOpened',
  payload: {
    address: 'oasis1qrtyn2q78jv6plrmexrsrv4dh89wv4n49udtg2km',
    publicKey: '9784e205b14d2a244412d789cb19fe83c7e598669d3e9f9f6709386e6dba2db2',
    privateKey: '<redacted>',
    type: 'private_key',
    balance: { address: 'oasis1qrtyn2q78jv6plrmexrsrv4dh89wv4n49udtg2km', allowances: [], available: '0', delegations: '0', debonding: '0', total: '0' }
  }
});

mainnet account

store.dispatch({
  type: 'wallet/openWalletFromPrivateKey',
  payload: { 
    choosePassword: undefined, 
    privateKey: requireUnscrambled('app/lib/helpers').uint2hex(requireUnscrambled('app/lib/helpers').base64ToUint('<redacted>')),
  },
});

fake ledger acc

store.dispatch({ type: 'network/selectNetwork', payload: 'testnet'});
store.dispatch({type: 'wallet/walletOpened', payload: { type: 'ledger', address: 'oasis1qr022vvn4txuugt4cm9fxc59claplp07xgxnynxs', publicKey: '14cdafbd7818c7427d9908a6762b87bf0bdbf737418625ebc831f8f92392b7c8', path: [44, 474, 0, 0, 0], pathDisplay: "m/44'/474'/0'/0'/0'", balance: {available:'100000000'}}});
store.dispatch({type: 'wallet/selectWallet', payload: 'oasis1qr022vvn4txuugt4cm9fxc59claplp07xgxnynxs'});

gen profile

store.dispatch({ type: 'network/selectNetwork', payload: 'testnet' });
store.dispatch({ type: 'wallet/openWalletFromPrivateKey', payload: {
  privateKey: requireUnscrambled('app/lib/helpers').uint2hex(requireUnscrambled('app/lib/key').OasisKey.fromPrivateKey(crypto.getRandomValues(new Uint8Array(32)))),
  choosePassword: 'test'
}});

spam contacts

store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qzhtdc2pvcqag4zuse3uk7yx8te9ladgas5p2u9n', name: 'tmp1' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qzkf2jvc4myhvskep770k8l9u0rd7n3cduu29tjl', name: 'tmp2' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qr5dkaqswwx2vup65jerml59gt02gfy2l5hn2e22', name: 'tmp3' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qpkctrffj43gfx02zls0enam4ddj7rkr8g50lgxh', name: 'tmp4' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qpun98z2sd8gj45tt38wvwun4j8q8s4e3cuymrkz', name: 'tmp5' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qp0jhhc0jwuhu8z9hm3vgn0r0jr6rhaa8v54398e', name: 'tmp6' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qrf3n9xrd6admmrkjmd6zw97q685avaktcz7a08h', name: 'tmp7' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qrw6nv672xky6rx5tu9nqmw2wwrf7lcrvs2lptp7', name: 'tmp8' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qzm6klfduvnvsj6dxf9dqgtpe73400nyfgz3zsjg', name: 'tmp9' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qzx9v7pe7478ancmprkwk3rpy0rfa6fhnckfkzl7', name: 'tmp10' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qqec3pypepresx28trwfmvhhcaaycy4uvc4z5xze', name: 'tmp11' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qz5ffzqgl8c3h2ggprnu9z8455ry0e0aluwu2e4w', name: 'tmp12' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qqje42v40z497cfmty0n2t8glxvzwtrk0usms7ew', name: 'tmp13' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qqkqkv57mynyxvnw80n6ueq87yhpjeehe5ptzp4q', name: 'tmp14' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qqh65sjr5r9k5pdlzfzl55wdxty7tp7aaq7e3u86', name: 'tmp15' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qrxylluaec7tvfe8ls7j2e9xakcs2ftszsa4x8dj', name: 'tmp16' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qrarhwllh0rdcj5je493nl376573plqzhg8p5842', name: 'tmp17' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qqzttakz0qya6pcg68qzx7aut40s6yfjgqv30y6d', name: 'tmp18' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qzt66rxhj5r5yx70u5qm5jrrdm5th99ctsny0shf', name: 'tmp19' }});
store.dispatch({ type: 'contacts/add', payload: { address: 'oasis1qqqnwv89dvr24zulrgq40cqza4ja4mqmxysxem33', name: 'tmp20' }});

convert to import usb ledger accs

modified = store.getState().importAccounts.accounts.map(a => ({
  ...a,
  type: 'ledger',
  privateKey: undefined,
  path: [44, 474, 0, 0, a.path.at(-1)],
  pathDisplay: a.pathDisplay.replace(`m/44'/474'/`, `m/44'/474'/0'/0'/`),
}));
store.dispatch({ type: 'importAccounts/accountsListed', payload: modified });

migrate v0 profile (emulate ext)

javascript:
if (!(['http://localhost:3000', 'https://wallet.oasis.io', 'https://wallet.stg.oasis.io', 'https://wallet.dev.oasis.io'].includes(location.origin) || location.origin.endsWith('.oasis-wallet.pages.dev'))) throw 'must click while on e.g. https://wallet.dev.oasis.io';
newTab = window.open(location.origin, '_blank');
newTab.chrome = {
  runtime: { id: 'emulate-extension' },
  storage: {
    local: {
      get: (key, cb) => {
        if (key !== 'keyringData') throw 'unsupported';
        cb({
          /* https://github.com/oasisprotocol/oasis-wallet-web/blob/67dcf59426a67399fce33bb904f3570849b404e3/src/utils/__fixtures__/test-inputs.ts#L149-L153 */
          keyringData: JSON.stringify({
            data: '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',
            iv: 'xcB9YTpj5KCDyLxoYt9eqQ==',
            salt: 'A4K7eVgk+QHpGdGRegzeQ2S6bjEjuTa+zupxVdVG8RE=',
          }),
        });
      },
      remove: (key, cb) => {
        /* ignore */
        cb();
      },
    },
  },
};
;
;
setPassword = () => {
  const nativeInputValueSetter = newTab.Object.getOwnPropertyDescriptor(newTab.HTMLInputElement.prototype, 'value').set;
  nativeInputValueSetter.call(newTab.password, 'Abcd1234&');
  newTab.password.dispatchEvent(new Event('input', { bubbles: true }));
};
setTimeout(setPassword, 300);
setTimeout(setPassword, 500);
setTimeout(setPassword, 1000);
setTimeout(setPassword, 2000);
setTimeout(setPassword, 3000);

simulate large numbers

javascript:/* use on https://wallet.oasis.io/account/oasis1qz78ap0456g2rk7j6rmtvasc9v2kjhz2s58qgj90 */;
const origFetch = window.fetch;
window.fetch = async (...args) => {
  if (!args[0].startsWith('https://api.oasisscan.com/')) return origFetch(...args);
  console.log('intercepted fetch', args);
  const response = await origFetch(...args);
  const origJsonStr = await response.text();
  const json = JSON.parse(origJsonStr, (key, value, context) => {
    if (['amount','available','debonding','escrow'].includes(key) && typeof value === 'string' && /\d+(\.\d+)?/.test(value) && Math.random()>0.5) return '300000';
    return value;
  });
  console.log('responded fetch', json);
  return new Response(JSON.stringify(json), response);
};

Explorer bookmarklets

switch to nexus.prd API

javascript:
if (!(['http://localhost:1234', 'https://explorer.oasis.io', 'https://explorer.stg.oasis.io', 'https://explorer.dev.oasis.io'].includes(location.origin) || location.origin.endsWith('.oasis-explorer.pages.dev'))) throw 'must click while on e.g. https://explorer.oasis.io';
newTab = window.open(location.href, '_blank');
origOpen = newTab.XMLHttpRequest.prototype.open;
newTab.XMLHttpRequest.prototype.open = function () {
  arguments[1] = arguments[1]
    .replace('https://nexus.oasis.io/v1/', 'https://nexus.prd.oasis.io/v1/')
    .replace('https://testnet.nexus.oasis.io/v1/', 'https://testnet.nexus.prd.oasis.io/v1/');
  return origOpen.apply(this, arguments);
};