Как расшифровать qr код

Расшифровать qr code поможет смартфон со специальным приложением. Стоит навести на код камеру телефона — и на экране появится содержимое двумерного баркода. Если это адрес сайта, его откроет браузер, текстовая информация выведется на экран, а электронная визитка пополнит телефонную книгу новым контактом. Но можно воспользоваться и иными методами расшифровки qr кодов.


расшифровка qr код

Расшифровка qr кодов онлайн

Бесплатные онлайн-сервисы расшифруют QR-код за пару секунд, если выполнить несложную последовательность действий:

1. Вставить в загрузочное окошко QR-код или ссылку кода;

2. Нажать «Отправить».

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

Как расшифровать qr code вручную?

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

  • Числовой (используются только цифры от 0 до 9);
  • Альфачисловой (используются цифры от 0 до 9, английские буквы A-Z, спецсимволы пробел,$ % * + – / :);
  • Битовый;
  • Способ Кайндзи, при котором файлы упаковываются в 13 бит. Применяется для кодирования китайских и японских иероглифов.

Информация в коде расположена не хаотично, а разбивается на 4 блока:

  • Область детектирования (преобразовывающий модуль) — большие квадраты по углам кода; внутри каждого квадрата расположен черный квадрат меньшего размера. В этой области не содержится данных, представляющих интерес при расшифровке.
  • Системная информация — 4 полосы данных — сбоку, справа и снизу от блоков детектирования; занимает 15 бит, из них 5 бит — полезная информация, 10 бит — корректирующий код, который активируется при ошибочном прочтении данных программой или при повреждении основного кода, например, зачеркивании или затирании. Системные данные дублируются; это помогает избежать ошибок при считывании кода.
  • Сведения о версии кода. Всего версий 40. Чем выше версия, тем большее количество данных в ней зашифровано, и тем сложнее расшифровать код без применения технических средств. Увеличение количества данных ведет к  более плотному заполнению пространства между преобразовывающими модулями.
  • Непосредственно данные.

Алгоритм расшифровки QR-кода программой таков:

1. Распознавание черных и белых областей;

2. Декодирование формата данных;

3. Определение версии кода;

4. Использование маски;

5. Извлечение данных;

6. Извлечение корректирующих кодов;

7. Декодирование данных;

8. Корректировка;

9. Выход.

При расшифровке QR-кода вручную пункты 1, 3, 6, 8, 9 исключаются, остается лишь 4 пункта:

  1. Декодирование формата данных;
  2. Использование маски;
  3. Извлечение данных;
  4. Декодирование данных;

Приступаем к расшифровке.

1. Нас интересуют 5 бит информации, зашифрованной в системных данных. Это строка под верхним левым преобразовывающим модулем. Данные из нее записываем в двоичной системе, обозначая пустую область как 0, а заполненную — как 1. Получится строка из пяти цифр, например, 10111.

2. Используем статическую маску для системной информации. Маска — еще один способ защиты данных; представляет собой числовую последовательность 101010000010010. Поскольку мы используем только 5 бит информации, то сокращаем маску до первых пяти цифр: 10101.

3. Применяем логическую операцию «исключающее ИЛИ» (xor). Результатом действия будет единица при нечетном числе складываемых битов, и 0 при четном. В примере это выглядит так:

       10111

       10101 (маска)

Xor :00010

4. В полученной строке данных первые 2 цифры показывают уровень коррекции ошибок. В QR-кодах таких уровней 4; их отличия — в объеме информации, которая восстанавливается при повреждении кода:

  • L (01) Low (Слабый) — 7%;
  • M (00) Medium (Средний) — 15%;
  • Q (11) Quartile (Нормальный) —25%;
  • H (10) High (Высокий) — 30%.

В рассматриваемом примере средний уровень коррекции — M (00), то есть при повреждении кода скорректировать можно до 15% ошибок.

По оставшимся трем цифрам (011) определяется тип маски — один из восьми возможных:

000

(i + j) mod 2 = 0

001

i mod 2 = 0

010

j mod 3 = 0

011

(i + j) mod 3 = 0

100

((i div 2) + (j div 3)) mod 2 = 0

101

(i j) mod 2 + (i j) mod 3 = 0

110

((i j) mod 2 + (i j) mod 3) mod 2 = 0

111

((i+j) mod 2 + (i j) mod 3) mod 2 = 0

 6. Для определения типа данных с помощью двоичной системы читаем 4-биттный заголовок, расположенный в правом нижнем углу, в прямоугольнике 2-12. Информация считывается змейкой сверху вниз, справа налево. Для прочтения заголовка декодируем область 4-4. Результатом станет четырехзначное число, например, 0100.

Возможные режимы:

ECI

0111

Числовые

0001

Буквенно-числовые

0010

8-битный (байтный)

0100

Kanji

1000

Структурированное дополнение

0011

FNC1

0101 (1-я позиция)

1001 (2-я позиция)

7. Снова применяем маску. Но в этот раз она будет для каждого типа своя. 8-биттному типу данных соответствует маска 0000. После проведения вычислений посредством оператора XOR получаем результат:

0100 — индикатор режима

0000 — маска

0100 — 8-биттный режим

8. Осталось прочитать данные. Они записаны в уже рассмотренной нами области 2-12. Читая змейкой справа налево и снизу вверх, переводим в двоичный код строки с 3-ю по 12-ю (первые 2 строки отводится под заголовок данных). На полученный 20-значный цифровой ряд воздействуем оператором XOR. 8-биттному типу данных соответствует маска

0000 0000 0000 0000 0000.

Режим чтения определяем по таблице:

Числовые

10 бит / 4 бита

Буквенно-числовые

9 бит

8-битный (байтный)

8 бит

 Поскольку мы работаем с 8-биттным типом данных, то для него важны первые 8 цифр полученного кода, которые переводим в десятичную систему. Итоговое число — это количество пакетов данных. Число пакетов, равное единице, обозначает один зашифрованный символ. Для его расшифровки переводим из двоичной системы следующие 4 цифры оставшегося ряда.

Если число пакетов больше единицы, продолжаем расшифровку, перейдя к чтению следующего столбца. Для перевода 8-биттных данных пригодится таблица кодировки ASCII.

Надеемся, что данная статья помогла найти ответ на вопрос «как расшифровать штрих код и qr код».