Грубо говоря программа, которая выдаёт шестизначный код, который нужно ввести при подтверждении доступа в GitHub. Программа пишется в несколько строчек на Питоне, никакие прилодения на смартфоне не требуются.
Что-то никто тут свой велосипед в несколько строчек не показал.
Вот такое у меня получилось. Проверил, работает.
CREATE OR REPLACE FUNCTION public.topt(p_key text)
RETURNS text
LANGUAGE plpgsql
AS $function$
DECLARE
v_hmac bytea;
v_offset int;
v_res int4;
BEGIN
v_hmac :=
hmac(
/* получаем текущий номер 30 секундного отрезка
* в 16ричном виде, строкой на 16 символов */
format(
'\x%s'
,lpad(
to_hex(
floor(extract(epoch FROM now()) / 30)::int
), 16, '0'
)
)::bytea,
/* декодируем входной секретный ключ по base32 */
util_base32_decode(p_key),
/* и хмакаем всё это по алгоритму sha1 */
'sha1'
)
;
/* такая вот магия определения смещения начала нужных 4х байтов
* видимо надо взять значение последних 4 битов от HMAC */
v_offset := get_byte(v_hmac, length(v_hmac) - 1) & 0x0F;
/* теперь собираем в int4 нужные 4 байта от смещения
* а у первого байта сбрасываем старший бит */
v_res :=
((get_byte(v_hmac, 0 + v_offset) << 24) & 0x7F000000)
|
(get_byte(v_hmac, 1 + v_offset) << 16)
|
(get_byte(v_hmac, 2 + v_offset) << 8)
|
(get_byte(v_hmac, 3 + v_offset))
;
/* возвращаем остаток от деления на 1 000 000
* дополнив слева нулями до 6 символов */
RETURN lpad((v_res % 1000000)::text, 6, '0');
END;
$function$
;
Кто не умеет в велосипеды - те просто пользователЯ :P
С другой, почитай про дуршлаг под названием SS7 (и последующие). Это всё равно, что логиниться через HTTP (без S).
TL;DR: сниффинг – как 2 пальца об асфальт. Отправка SMS, без ведома получателя – как 2 пальца об асфальт. Получение/перенаправление SMS, без ведома получателя – как 2 пальца об асфальт.
Ну, не знаю. Банк вон списывает у меня с карты 100 000 настоящих рублей по СМС, не морщится.
-------
На самом деле только сейчас дошло, что это может быть связано с хранением персональных данных на территории РФ. Т.е., вероятно, это вовсе не GitHub выделывается, а наоборот.
А потом люди удивляются откуда столько спам звонков повылазило. И это не говоря про то что смс идёт по несколько минут, иногда не приходит вообще и стоит конских денег для сервиса (смс в Россию у многих провайдеров сейчас по 50 центов).