LINUX.ORG.RU

Представлен открытый проект Decimen Optical Transfer для передачи файлов через QR-коды

 , , ,


3

2

Разработчик BashAlarmist (Evan Crawley) представил открытый проект под названием Decimen Optical Transfer.

Это решение предназначено для передачи файлов между двумя устройствами с использованием только экрана и камеры через QR-коды с помощью кодов преобразования Луби — первой практической реализации фонтанного кодирования. Исходный код проекта написан на TypeScript и HTML и опубликован на GitHub под лицензией MIT.

Отправляемый файл разбивается на сотни мелких фрагментов (пакетов). Затем для каждого пакета генерируется свой QR-код, который кодирует данные и воссоздаёт их. Принимающее устройство сканирует поток QR-кодов через камеру и собирает файл обратно.

Благодаря фонтанному кодированию камере не нужно ловить каждый кадр по порядку: если камера пропустила пару QR-кодов, файл всë равно соберëтся воедино без битых байтов.

>>> Live-версия

★★

Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 6)

А ведь найдется инвестор и купит «технологию». Кому-то прикол, кому-то строчка в портфеле инвестиций.

tlx ★★★★★
()
Ответ на: комментарий от ptah_alexs

ну тогда не удалось бы использовать готовые библиотеки для работы с QR-кодами.
А QR-коды как и баркоды создавались по-видимому с расчетом на возможность монохромной печати.

Интересно, какую скорость можно получить если мигать например через caps/scroll/num lock :-)

MirandaUser2 ★★
()
Ответ на: комментарий от MirandaUser2

Как минимум существуют JAB Code и Microsoft Tag (wikipedia.org).

Интересно, какую скорость можно получить если мигать например через caps/scroll/num lock

3-9 бод я думаю.

ptah_alexs ★★★★★
()
Последнее исправление: ptah_alexs (всего исправлений: 1)

Не, я понимаю раньше через ИК-порт неудобно было перегонять - чуть подвинешь и всё, перекачка оборвалась. Но сейчас-то что? Не уж то по блюпупу или вифию нельзя файлы перегнать. Сейчас вообще все как-то больше через мессенджеры файлы пересылают.

А это зачем?

bbc69
()
Ответ на: комментарий от bbc69

Это канал передачи без контроля со стороны третьих лиц.

Irma ★★★★
()
Последнее исправление: Irma (всего исправлений: 1)

Круто! Нужно добавить распечатку QR на принтере, чтобы пересылать открытки почтой.

открытый проект

Открыточный проект!

dataman ★★★★★
()

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

Tigger ★★★★★
()

если камера пропустила пару QR-кодов, файл всë равно соберëтся воедино без битых байтов

Магия какая-то. Как?!

Gonzo ★★★★★
()
Ответ на: комментарий от Gonzo

судя по описанию этого фонтанного кодирования в википедии, оно создает на основе входных данных (фиксированного размера X) хитрую бесконечную последовательность, из которой можно взять несколько кусков (не обязательно последовательных) суммарного размера X+малый_процент и восстановить исходные данные с высокой вероятностью.
Применяется например для рассылки файлов в сетях цифрового ТВ.

MirandaUser2 ★★
()
Последнее исправление: MirandaUser2 (всего исправлений: 1)

В коде применяется фонтанное кодирование

А точнее https://en.wikipedia.org/wiki/Luby_transform_code:

In computer science, Luby transform codes (LT codes) are the first class of practical fountain codes that are near-optimal erasure correcting codes. They were invented by Michael Luby in 1998 and published in 2002.[1] Like some other fountain codes, LT codes depend on sparse bipartite graphs to trade reception overhead for encoding and decoding speed. The distinguishing characteristic of LT codes is in employing a particularly simple algorithm based on the exclusive or operation ( ⊕) to encode and decode the message.

dataman ★★★★★
()

Уж не знаю, но камеры есть далеко не везде, например на старых ноутбуках и на большинстве ПК, нет камер, их надо блин покупать, либо подключать телефон как камеру. Так что это просто для телефонов сделали, аля shareit и так далее.

REDDERa
()
Последнее исправление: REDDERa (всего исправлений: 1)
Ответ на: комментарий от bbc69

Показать, что не перевелись кулхацкеры на земле родимой)

REDDERa
()

Кстати через qr-коды даже «взламывать» можно. Почему-то когда человек открывают qr-code на том же android’е у него отключается страх, ведь чаще всего он увидел его локально и плюс это же не апк напрямую ставить просят. Хз как это социальная инженерия работает, что qr доверяют больше, возможно это с ковида включилось в людях. Но как метод передачи данных типо краткой био со ссылками на анкету это еще окей, но что-то больше прям очень плохо. Помню какое-то время вообще Mini CD в виде визиток еще пользовались популярностью.

anonymous_sama ★★★★★
()

Тоже хотел такое сделать, но дальше хотелки дело не пошло. Про фонтанное кодирование я не слыхал. В моем представлении я думал делать автоматическое перелистывание qr-кодов и возможность ручного возврата к пропущенным кодам.

Юз-кейс который меня интересовал это хранение холодного криптокошелька. Т.е. покупается айфон, переводится в airplane режим (опционально можно вообще радиомодуль оторвать, если умений хватит), на нем генерируется ключ. Далее на другом айфоне генерируется транзакция и через qr-коды передается на первый, на первом она подписывается и через тот же механизм передаётся обратно на второй где уже и уходит в интернет.

Почему не радиоканал? Очень просто. Экран и камеру легко защитить простым чехлом из тряпочки. Я прекрасно вижу, куда направлена камера. И чуть менее прекрасно, но всё же легко могу защитить изображение на экране, например запершись в ванной. А радиоволны я совсем не контролирую. Что там куда улетает, откуда прилетает - понятия не имею. Как там эти радиоволны обрабатываются - а они ведь постоянно обрабатываются - это тоже всё вне контроля.

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

vbr ★★★★★
()
Ответ на: комментарий от REDDERa

Если нет камеры, всё ещё можно передавать данные в одном направлении, экран-то везде есть. Тоже может быть полезно.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от bbc69

Сейчас вообще все как-то больше через мессенджеры файлы пересылают.

Передача файлов между яблофоном и андроидом когда инет заблокирован…

zanac1
()
Ответ на: комментарий от vbr

Эээээ…а почему бы не использовать что-то вроде нуль-модемного typeC-лайтинг? Или лайтинг-лайтинг? Или (о, б-же) лайтинг-типА?

DzenPython
()

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

Но напомнило извращения с ИК-портом на сименсе, когда передавал jar’ы с играми и убитые .3gp

DzenPython
()
Ответ на: комментарий от zanac1

Я не знаю, как дела у яблочников, но когда мне понадобилось перебросить файлы с компа на планшет, то, чтобы не пердолиться с проводами, открыл для себя варпинатор. И был очень доволен.

Для телефонов по любому есть что-то, что поможет перекинуть файлы ещё проще. Первое, что приходит в голову, блютуз. Скорость там не Ахти была, но кмк больше, чем картинки чёрно-белые менять.

bbc69
()

Но ведь такие программы (обмен через qr) больше 10-и лет существуют...

atrus ★★★★★
()
Ответ на: комментарий от Gonzo

Наверное скользящее окно данных, в одном блоке данных передаётся данных в 4 раза больше чем передающихся текущих данных, которые включают в себя последние 3 копии данных, типа надо передать пакеты данных a,b,c,d размером N, Один QR код всегда содержит N*4 данных вписанных в 2x2 табличку

  qr1    qr2    qr3   qr4     qr5    qr6    qr7    qr8   qr9
[0][0] [a][0] [b][a] [c][b] [d][c] [0][c] [0][0] [0][0] [0][0]
[0][0] [0][0] [0][0] [a][0] [b][a] [b][a] [c][a] [0][c] [0][0]

Криво и не правильно нарисовал, но суть наверное понятна. В текущем блоке данных у тебя текущие данные и часть предыдущих, такая что всегда содержит три предыдущих блока данных.

Ну может не прям так, но там наверное что-то похожее.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от bbc69

А это зачем?

Файлы можно передавать оффлайн и без присутствия на месте отправителя. Распечатать набор QR-кодов и расклеить по местности. Так можно передавать файлы, которые нежелательно передавать онлайн или оффлайн, но с присутствием. То есть тотальная анонимность и ничего с этим не поделаешь, если только не поймать расклейщиков.

mshewzov ★★★★
()
Ответ на: комментарий от mshewzov

Файлы можно передавать оффлайн и без присутствия на месте отправителя. Распечатать набор QR-кодов и расклеить по местности.

Почему нельзя просто оставить флешку, вместо того чтобы расклеивать целый день 100500 листовок? Решение в поисках проблемы.

Gary ★★★★★
()
Ответ на: комментарий от Gary

Почему нельзя просто оставить флешку, вместо того чтобы расклеивать целый день 100500 листовок? Решение в поисках проблемы.

Не знаю. Может потому что можно сделать и так, и эдак? Если бы можно было всё делать на флэшках, то не было бы HDD, SSD, карт памяти, лазерных дисков и других технологий хранения информации, передачи данных и так далее.

Больше вариантов - конкуренция. А конкуренция - это всегда хорошо.

mshewzov ★★★★
()
Ответ на: комментарий от mshewzov

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

Лекарство есть, осталось придумать болезнь

DzenPython
()

Лет 10 назад что-то консольное мне печатало больше двух мегабайт на две стороны листа А4 qr-кодами. Чисто ради этого купил тогда принтер с оптическим честными 1200 dpi.

P.S. Обратно через сканер читалось, несмотря на сделанные сгибы и некоторые умышленные повреждения бумаги.

Stage1 ★★
()
Последнее исправление: Stage1 (всего исправлений: 1)

я так понимаю, в следующем релизе будет передача очень больших файлов за счет проигрывания видео с qr кодами?

gagarin0
()

Передача данных со скоростью света.

Lucky ★★
()

Большинство петросянов в каментах не поняли, что эта программа для передачи данных в особых условиях, когда нормальные каналы не доступны. Irma правильно отметила, что это

Это канал передачи без контроля со стороны третьих лиц.

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

Пример, конечно, вымышленный. В серьёзных помещениях на окнах мутная плёнка, либо вообще окон нет, но как-то так.

Camel ★★★★★
()
Ответ на: комментарий от Camel

мутная плёнка

Наверняка можно моргать экраном, передавая информацию какой-нибудь частотной модуляцией. Нет, это небезопасно. Только клетка фарадея в подвале. С тремя ФСОшниками на входе.

vbr ★★★★★
()
Ответ на: комментарий от DzenPython

Это нарушает принцип воздушного зазора (airgap). USB это очень опасно.

Да и вообще почти уверен, что приложение на айфоне к такому доступа иметь не может. И даже уверен, что два айфона через lightning соединить невозможно.

vbr ★★★★★
()
Ответ на: комментарий от DzenPython

И первый же постовой возьмёт за ж…

Может быть. Кто знает. Я вообще все это к тому писал, что идея в принципе интересная и применение она явно найдёт. Проще ведь говорить «зачем», чем порадоваться ещё одному способу передать данные.

Вообще, по моим наблюдениям слово «зачем» в топе ЛОРа вместе со словом «не нужно».

mshewzov ★★★★
()
Ответ на: комментарий от MirandaUser2

Интересно, какую скорость можно получить если мигать например через caps/scroll/num lock :-)

… - - - …

dimgel ★★★★★
()
Ответ на: комментарий от Gonzo

uucode если мне не изменяет память такое умел ещё во времена когда фотографировать можно было только на фотоаппарат. :)

ssh2 ★★★★★
()

На фоне современного состояния задачи «передать файл» может быть актуальным. Но боюсь железки вроде моего смартфона не вытянут 37фпс*960х1280

kirill_rrr ★★★★★
()
Ответ на: комментарий от bbc69

А это потому что блютуз выше старых редакций так и не заработал и файлы больше 5-10Мб почти наверняка не будут переданы. А вайфай... Удвчи что то передать не имея роутера и сервера. По итогу на смартфонах может гарантированно и понятно пользователю сработать только конечное клиентское приложение. и qr-кодами может быть не худший вариант. Уж точно лучше чем через мессенджеры, которые свелись либо к танцу с бубнами либо к танцу с бубнами без результата.

kirill_rrr ★★★★★
()
Ответ на: комментарий от REDDERa

Настолько старые ноутбуки по процессору и оперативке не вывезут. на 1,3Мпикс могут рассчитывать все.

kirill_rrr ★★★★★
()
Ответ на: комментарий от bbc69

варпинатор

Пишут что он завязан на автоматическое обнаружение устройств в сети. Обычно это не работает, а если имеется некоторая безопастность - точно не работает. И совершенно безнадёжно если речь идёт об андроидах актуальных редакций - там зарублено всё что можно.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

А это потому что блютуз выше старых редакций так и не заработал и файлы больше 5-10Мб почти наверняка не будут переданы

Т. Е. Сделать приложение, которое разбивает файл на чанки (как это сделано в оффтопике) и потом его собирает - этот какая-то фантастика для современного инженера?

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

bbc69
()
Ответ на: комментарий от kirill_rrr

Там он по отдельному своему порту посылает пакеты. Имеет SSL. Своих признает, только если совпадает кодовое слово из настроек. Для домашней сети самое то, просто для двух рандомных телефонов не очень. Я предположил, что для такого есть более подходящее решение.

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

bbc69
()
Последнее исправление: bbc69 (всего исправлений: 1)
Ответ на: комментарий от dataman

голубиная почта же! Классика, зафиксированная в RFC 1149

Evgueni ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.