средство проверки возраста в Discord/Twitch/Kick/Snapchat

age автоматически подтверждает вашу учетную запись как взрослую на любом веб-сайте с использованием k-id

сделал ксизева и Дырапривет амплитуды (за предыдущую работу)

как подтвердиться в дискорде

это не имеет значения Если вы находитесь в Великобритании или аналогичном регионе, который в настоящее время имеет доступ к этому, это подтвердит вашу учетную запись для будущего глобального внедрения в марте, а также для текущего. чтобы использовать, просто вставьте этот скрипт в консоль Discord, перейдя в discord.com/приложениенажав F12собираюсь Консоль скопируйте, вставьте и нажмите Enter в следующем скрипте и решите всплывающую капчу (при необходимости введите «разрешить вставку»):

// add a chunk to extract webpack's moduleCache
let webpackRequire = webpackChunkdiscord_app.push([[Symbol()],{},(r) => r]);
// cleanup the chunk we added
webpackChunkdiscord_app.pop();

let modules = webpackRequire.m;
let cache = webpackRequire.c;

// https://github.com/moonlight-mod/moonlight/blob/main/packages/core-extensions/src/spacepack/webpackModules/spacepack.ts
// helper to find a webpack module via code snippet
function findByCode(src) {
  for (const [id, mod] of Object.entries(modules)) {
    if (mod.toString().includes(src)) {
      return cache[id].exports;
    }
  }
}

// helper to find an object by its key
function findObjectFromKey(exports, key) {
  if (!exports) return;
  for (const exportKey in exports) {
    const obj = exports[exportKey];
    if (obj && obj[key]) return obj;
  }
}

// https://github.com/moonlight-mod/moonlight/blob/main/packages/mappings/src/mappings/discord/utils/HTTPUtils.ts
// find the discord api client
const api = findObjectFromKey(
  findByCode('.set("X-Audit-Log-Reason",'),
  "patch",
);

// send a api request to discord /age-verification/verify and then redirect the page to our website
const request = await api.post({
  url: "/age-verification/verify",
  body: { method: 3 },
});
const verificationUrl = request.body.verification_webview_url;
window.location.href = `https://age-verifier.kibty.town/webview?url=${encodeURIComponent(verificationUrl)}`;

(смело читайте код, мы сделали его читабельным и нам нечего скрывать)

он должен перейти по ссылке (или дать ссылку для перехода)после этого вы можете просто подождать, пока страница не сообщит об успехе

поздравляю! ваша учетная запись Discord теперь проверена по возрасту.

как пройти верификацию на других платформах (twitch, Kick, Snapchat,…другие)

перейдите на страницу проверки возраста и выберите «Селфи», оттуда получите URL-адрес qr-кода, вставьте его в это поле ввода и нажмите «Подтвердить».

Read more:  Roblox обещает проверку возраста, поскольку в Австралии надвигается запрет на социальные сети для детей до 16 лет

Как это работает

k-id, поставщик проверки возраста, который использует Discord, не сохраняет и не отправляет ваше лицо на сервер. вместо этого он отправляет кучу метаданных о вашем лице и общих деталях процесса. хотя это полезно для вашей конфиденциальности (ну, учитывая, что некоторые другие провайдеры отправляют на свои серверы настоящие видео вашего лица)это также плохо для них, потому что мы можем просто отправлять метаданные, выглядящие как законные, на их серверы, и у них нет возможности сказать, что это нелегитимно.
хотя раньше это было легко, партнер k-id по проверке лица (faceassure) значительно усложнил эту задачу после верификатор k-id амплитуд был выпущен, (который больше не работает из-за этого.)

После решения Discord сделать требование проверки возраста глобальным, мы решили еще раз изучить его и посмотреть, сможем ли мы обойти новые проверки.

шаг 1: зашифрованная_полезная нагрузка и auth_tag

первое, что мы заметили, что старая реализация не отправляет при сравнении легитимной полезной нагрузки запроса с сгенерированной, это ее отсутствие encrypted_payload, auth_tag, timestamp и iv в теле.

глядя на код, это кажется простым шифром AES-GCM с ключом nonce + timestamp + transaction_idполученное с использованием HKDF (sha256). мы можем легко повторить это, а также создать недостающие параметры в сгенерированном выводе.

шаг 2: данные прогноза

здесь все становится сложнее: даже после идеальной репликации шифрования наша попытка проверки все равно не увенчалась успехом, поэтому они также должны проверять фактическую полезную нагрузку.

после некоторых проб и ошибок мы сузили проверяемую часть до массивов прогнозов, которые outputs, primaryOutputs и raws.

оказывается, оба outputs и primaryOutputs генерируются из raws. по сути, необработанные числа сопоставляются с выходными данными о возрасте, а затем выбросы удаляются с помощью z-показателя (один раз для primaryOutputs и дважды за outputs).

Read more:  Знаки последних отношений в возрасте до возраста мадонны не будут длиться

есть и другие отличия:

  • xScaledShiftAmt и yScaledShiftAmt в предсказаниях не случайны, а могут иметь одно из двух значений
  • проверяется, что имя носителя (камеры) соответствует одному из ваших медиа-устройств в массиве устройств
  • проверяется, соответствуют ли времена завершения состояний временной шкале состояний

после всего этого весь этот код имеет открытый исходный код и доступен, так что вы можете увидеть, как именно мы это делаем.

2026-02-11 22:56:00


1770865495
#средство #проверки #возраста #DiscordTwitchKickSnapchat

По теме

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.