Расшифровать qr code поможет смартфон со специальным приложением. Стоит навести на код камеру телефона — и на экране появится содержимое двумерного баркода. Если это адрес сайта, его откроет браузер, текстовая информация выведется на экран, а электронная визитка пополнит телефонную книгу новым контактом. Но можно воспользоваться и иными методами расшифровки 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. Нас интересуют 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.
Возможные режимы:
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 код».