...или как я сделал протокол связи через свет с точностью 99.2 %

Когда мы говорим “оплата телефоном”, в голове сразу всплывает NFC или QR.

А что, если экран и фонарик сами могут обмениваться данными?

Без радиоволн, без Wi-Fi, без сети вообще.

Так появился Lightprint — протокол, который передаёт данные светом, а камера принимает их и распознаёт как уникальный “отпечаток”.

И всё это работает прямо в браузере, на чистом JavaScript.

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

Lightprint — это Visible Data Communication (VDC):

  • экран или фонарик излучает модулированный свет,

  • камера его ловит и анализирует временной профиль яркости.

? 1. Режим Flicker (экран) — передача данных

Экран мигает цветами по схеме CS4 (Color Sequence 4).

Каждый кадр кодирует 2 бита информации — в виде цвета:

? Красный 01

? Зелёный 10

? Синий 11

⚫ Чёрный 00

Передаётся пакет формата:

HEADER + LENGTH + DATA + CRC8

? 2. Режим Stable (фонарик) — аутентификация по свету

Здесь ничего не мигает.

Фонарик светит стабильным белым светом, а LightprintEngine анализирует микропульсации (PWM) — невидимые глазу колебания, которые уникальны для каждого устройства.

Камера фиксирует эти микровибрации яркости и строит временной профиль.

Если профиль совпадает с эталонным шаблоном (через корреляцию Пирсона и DTW) —система считает, что источник света подлинный.

Так телефон можно аутентифицировать по фонарику — это как “световой отпечаток пальца”.


⚙️ Внутренности движка

LightprintEngine делает всё это на лету:

извлекает яркость (ROI);

фильтрует шум (EMA, high/low-pass);

считает стандартное отклонение, корреляцию;

вычисляет DTW для устойчивости к растяжению сигнала;

проверяет стабильность (SATURATION_THRESHOLD, UNDERSATURATION_THRESHOLD);

автоматически определяет режим Flicker или Stable.

? Почему это работает

Каждый источник света (экран, фонарик, лампа)

имеет свой цифровой почерк — из-за особенностей PWM-драйвера, частоты и шума.

Камера улавливает этот “почерк” — временную сигнатуру света.

Алгоритм сравнивает сигнал с базой и определяет:

“Это тот же источник или подделка"

? Результаты тестов

Точность распознавания 99.2 %

Время отклика ~50 мс

FPS приёма 30 fps

Скорость передачи (экран) ~30 бит/с

Скорость аутентификации (фонарик) < 0.5 с

Интернет: ❌ Не требуется

Bluetooth / NFC: ❌ Не используется

За развитием протокола можно следить в telegram канале

Комментарии (13)


  1. sic
    30.10.2025 17:24

    У Вас из черновиков вывалилось.


  1. kenomimi
    30.10.2025 17:24

    LiFi сто лет как существует и весь перепатентован вдоль и поперек во всех своих проявлениях. Так что ничего нового, увы.


    1. Flayt_334 Автор
      30.10.2025 17:24

      Li-fi требует аппаратной поддержки, ligthprint в отличие от него, программный протокол, работающий в web, это удобно, кроме того протокол работает на уровне визуальной яркости / цвета — через ШИМ, мерцание или цветовую модуляцию


  1. arx3889
    30.10.2025 17:24

    Каждый источник света (экран, фонарик, лампа)
    имеет свой цифровой почерк — из-за особенностей PWM-драйвера, частоты и шума.
    Камера улавливает этот “почерк” — временную сигнатуру света.

    Вы считаете, что произвольная камера будет способна это улавливать?
    И не всегда используется ШИМ чтобы чем-то светить (к счастью).


    1. Flayt_334 Автор
      30.10.2025 17:24

      Даже если экран не настолько ШИМ, он всё равно излучает свет с небольшими колебаниями —

      Lightprint умеет анализировать эти колебания и узнавать источник по характеру свечения

      Со временем оказывается, что даже два одинаковых телефона (одна модель, один уровень яркости) дают чуть разный «почерк» свечения — из-за погрешностей драйверов, сенсоров, матриц. Именно это делает возможной аутентификацию по свету, а не просто по коду или картинки


      1. sic
        30.10.2025 17:24

        Теперь спросите у LLM не почему это возможно (хоть и с некоторыми оговорками), а зачем это нужно, когда современный смартфон и так буквально напичкан средствами аутентификации с 100% надёжностью.

        И второй вопрос, ну это уже больше ради развлечения, а что если смартфон ну немного так чуть чуть искупается, или со стола упадёт, и профили шим чуть чуть изменятся?


      1. abutorin
        30.10.2025 17:24

        А потом в один момент из-за погрешности ваш монитор или телефон начинает мерцать "по другому" и все, приехали.


      1. saege5b
        30.10.2025 17:24

        ШИМ может меняться от уровня выставленной яркости.

        А ещё есть профили энергосбережения, экологические профили, профили здоровья...


    1. Flayt_334 Автор
      30.10.2025 17:24

      Естественно камера не идеальна, в обычных условиях она может выдавать не настолько отличный результат но можно это откалибровать, потенциал есть для развития


      1. arx3889
        30.10.2025 17:24

        Ладно. Намек No. 2 и последний: сколько кадров за единицу времени вы можете получить с дефолтной вебки или камеры смартфона в своё ПО для анализа?


  1. inkelyad
    30.10.2025 17:24

    А теперь то же самое, но на звуке, pls.
    Писк разных БП, шум за окном, можно даже попросить пользователя к собственной тушке микрофон приложить, чтобы его сердце услышать, зубами поскрипеть тоже в микрофон и так далее и тому подобное.
    </s>

    Было бы гораздо более интересно (как статья - практическая полезность была бы столь же под большим вопросом.), если бы сюда еще прилагался рассказ 'как сделать железку-авторизатор' на этом принципе. Которая не случайными шумами, а вполне осмысленно чем-то мигает или, как я выше предложил, пищщит.


  1. shasoftZ
    30.10.2025 17:24

    А чем это лучше QR-кода?


  1. anonymous
    30.10.2025 17:24