Найти тему
Просто о сложном

Как понять содержимое QR-кода без телефона

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

Для тех кто не видел этот выпуск:

Немного истории

Впервые QR код был представлен японской компанией Denso-Wave в 1994 году в ответ на нехватку места для хранения информации в простых штрих-кодов. Серьезным преимуществом новой технологии была возможность быстрого и точного распознавания информации. Это позволило QR коду почти полностью вытеснить ранее известные технологии.

Максимальное количество символов, которые помещаются в один QR-код:

  • цифры десятичной системы счисления — 7089;
  • цифры десятичной системы счисления и буквы (латиница) — 4296;
  • байты — 2953 (следовательно, около 2953 букв кириллицы в кодировке windows-1251 или около 1450 букв кириллицы в utf-8);

Развитие технологии

Данная технология развивается до сих пор. С момента её возникновения появилось несколько версий QR кодов. Последние версии позволяют хранить до 1264 символов ASCII текста (Википедия)

Пример такого кода:

Расшифровка QR-кода своими руками

Абсолютно на каждом QR коде присутствуют 3 области по которым происходит определение положения, т.е определяются стороны кода.

-2

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

-3

Для уменьшения количества ошибок на каждый QR код содержащий закодированную информацию накладывается так называемая "маска"

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

Определяем какую маску нам необходимо использовать:

-4

Вот так выглядит пустая маска без всего:

-5

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

-6

Наносим маску:

-7

Маска работает по следующему принципу: если в месте где наносится маска находилась закрашенная область она превращается в не закрашенную:

-8

А если область где наноситься маска была не закрашена, то эта область подвергается закрашиванию:

-9

После того как мы получили "незамаскированный" код, обратим внимание на выделенные области:

-10

Нижняя область сообщает нам о кодировке которая используется в нашем QR коде, а вторая о количестве символов. (В нашем случае нижнее значение - 4, а верхнее 10, т.е. мы имеем дело с кодировкой ASCII содержащей 10 Символов)

-11

Как происходит перемещение по QR коду при большем количестве символов:

-12
-13

Так происходит подсчет закодированной информации:

-14

Соотносим значение каждого символа с таблицей ASCII:

-15

В результате получаем слово Robomatics

Несмотря на то, что ручной метод расшифровки достаточно трудоёмкий, я надеюсь это вам как-либо поможет.

Надеюсь вам понравилось, делитесь этой информацией с друзьями, ставьте пальцы вверх и подписывайтесь, впереди еще много интересного!