Что такое QR-код и как правильно им пользоваться? Как расшифровать секретный код Расшифровка qr.
Сегодня очень часто для маркировки различной информации используется QR код. Он представляет собой двухмерный штрих-код, состоящий из черных и белых квадратов. Каждый квадрат является 1 (или 0) битом информации. Такой код легко расшифровать с помощью смартфона со специальным приложением. Однако в некоторых случаях прочитать QR код можно и вручную.
В первую очередь, для того чтобы приступать к штурму кода, необходимо разобраться, каким именно образом происходит шифрование. Существуют несколько типов кодирования данных:
- числовой (цифры 0-9);
- альфачисловой (цифры 0-9, буквы A-Z, спецсимволы: пробел,$ % * + — / :);
- битовый;
- Кандзи (файлы упаковываются в 13 бит);
Как расшифровать QR код?
Вся информация в коде разбивается на блоки. Их можно условно разделить на 4 типа:
- область детектирования, то есть преобразовывающий модуль (расположенные по углам кода большие отчетливые квадраты, внутри которых находится еще один черный квадрат). Эта область не несет полезной информации с точки зрения расшифровки данных;
- системная информация. Она представляет собой две полосы данных, которые дублируются по 2 раза (итого 4 полосы, расположенных сбоку, справа и снизу от блоков детектирования);
- информация о версии кода. От версии кода зависит максимальное количество данных, которое можно зашифровать. Чем выше версия, тем сложнее данные расшифровать вручную. Иногда это просто не целесообразно. С повышением версии, количество блоков в коде будет больше. То есть между преобразовывающими модулями по краям пространство будет заполнено плотнее;
- непосредственно данные.
Шаг 1.
Интерес, с точки зрения расшифровки информации, представляет только одна строка системного кода. Она находится сразу под левым верхним преобразовывающим модулем. Тут находится 5 бит информации.
Теперь нужно вспомнить двоичную систему счисления и записать данные в этой строке. Итак, смотрим на строку (строка заканчивается под левым верхним преобразовывающим модулем) и записываем 0 на пустом месте и 1 на заполненном. Нас интересуют только первые 5 бит информации. Таким образом, получаем строку из 5 цифр (например 10111).
Шаг 2.
Теперь применяем маску к системной информации. Маска — это дополнительный способ защиты информации. Она имеет вид: 101010000010010. Поскольку мы работаем только с 5 битами информации, то и маску сокращаем соответственно. Оставляем первые 5 цифр и получаем 10101. Теперь к нашим 5 битам применяем маску с помощью операции исключающего или (XOR).
Например: 10111 XOR 10101 = 00010
Полученную строку с данными стоит разделить на 2 части. Первые 2 цифры — это уровень коррекции ошибок. В таблице ниже можно ознакомится с их типами.
где i — строка, j—раздел.
Шаг 3.
Переходим к заголовку данных в коде. Заголовок находится в правом нижнем углу. Мысленно выделяем прямоугольник 2×12, который располагается с краю справа и направлен вверх. Запомним его расположение, он нам понадобится при непосредственном чтении данных.
Теперь определяем режим данных. Для этого опять используем двоичную систему. Опускаемся к основанию нашего воображаемого прямоугольника и записываем 0 в белых и 1 в черных клетках, двигаясь змейкой снизу вверх, справа налево. Для заголовка нам достаточно обработать область 4×4. Получаем строку из 4 цифр.
Например: 0100
Список возможных режимов приведен ниже:
Итак, данная в примере строка с цифрами соответствует данным из 8 битов. Независимо от получившегося типа данных, к ним нужно опять применить маску. Маска в данном случае будет для каждого типа своя. Например, для 8-битного типа данных она будет 0000, для численного - 0110. Вычислять маску можно по приведенным выше формулам.
Опять применяем к вычисленным данным маску с помощью оператора XOR.
Например 0100 XOR 0000 = 0100
Шаг 4.
Приступаем к чтению данных. Данные записаны в нашей прямоугольной области 2×12, начиная с 3-й строки (первые 2 строки- заголовок данных). Строки мы читаем снизу вверх. Итак, переводим в двоичный код всю оставшуюся область прямоугольника. Двигаемся змейкой справа налево. Получаем ряд из 20 цифр. Применяем маску с помощью оператора XOR. Для 8-битного типа данных полная маска будет 0000 0000 0000 0000 0000, для численного- 0001 1000 0110 0001 1000. (Вычисляем маску по приведенным выше формулам).
Теперь определяем режим чтения данных по таблице, приведенной ниже:
Это значит, что для 8-битного типа данных мы отделим первые 8 цифр, а для числового, например, 10. Получившийся ряд цифр переводим в десятичную систему. Получившееся число — количество пакетов данных. Если получаем 1 — это значит, что зашифрован 1 символ. Расшифровать его можно, переведя из двоичной системы следующие 4 цифры в оставшемся ряду.
Если полученное число пакетов больше, чем 1, то приступаем к дальнейшей расшифровке. Для этого переходим к чтению следующего столбца. Мысленно выделяем область 2×12 слева от первого выделенного прямоугольника. Переводим его в двоичный код, используя тот же принцип «змейки». К получившемуся ряду цифр применяем маску, вычисленную с помощью приведенных выше формул, с помощью оператора XOR. Далее для расшифровки ряда цифр делим его на группу из 8, 9 или 10 цифр (ряд читать справа налево), в зависимости от режима чтения (таблица представлена выше). Переводим каждую группу из двоичной системы. Для численных значений используем перевод в десятичную систему. Для перевод 8-битных данный используем таблицу кодировки ASCII.
В конце 90-х годов прошлого столетия Японию захватила волна моды на штрих-коды. Информации,зашифрованной в обычном штрихе перестало хватать — так на свет появился его более продвинутый последователь — двумерный штрих-код или QR-код. Период его расцвета пришёл на 2000-е годы, когда его «лепили» везде где можно и нельзя.
Сейчас, конечно, мода на это значительно спала, но, тем не менее, используют его часто. Но если на телефонах и планшетах со сканированием и распознаванием КюАр кода проблем нет, то с компьютерами и ноутбуками все несколько сложнее.
Есть несколько способов сканировать QR код на компьютере чтобы прочитать его. Я расскажу о каждом из них, а Вы уже выберите тот, который будет удобнее использовать в Вашем случае.
1. QR код-сканер онлайн
Самый простой способ расшифровать QR на компьютере либо ноутбуке, не требующий установки программ, библиотек и т.п. Нужен лишь доступ в Интернет чтобы зайти на сайт decodeit.ru. Этот простой и в то же время функциональный ресурс позволяет делать на ПК все необходимые операции — прочитать и расшифровать КюАр-код, подсунув файл с его изображением.
Здесь Вы так же сможет создать свой двумерный штрих-код. Для этого необходимо всего лишь ввести ссылку или текст в поле «Создать QR код Онлайн» и нажать кнопку «Отправить». На экране появится изображение, которое надо будет сохранить на компьютер и переслать адресату.
2. Программа для чтения QR кодов
Ещё один отличный способ прочитать двумерный штрих-код на компьютере и распознать его — это бесплатная программа CodeTwo QR Code Desktop Reader. Единственное ограничение — она способна прочитать не все коды — есть и те, которые ей не под силу.
Утилита требует установки в систему, после чего автоматически запустится.
Далее надо открыть файл с с QR-кодом или зайти на страничку в Интернете, откуда его надо сканировать. Снова переходим к приложению и нажимаем на кнопку «From screen».Теперь надо мышью выделить КюАр рамкой, после чего отпустить кнопку. Теперь программа сама расшифрует его,прочитает его и выдаст результат.
- Tutorial
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.
В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.
Иллюстраций: 14, символов: 8 510.
Для тех, кто не в курсе что такое QR код , есть в английской Wikipedia. Также можно почитать тематический блог на Хабре и несколько хороших статей по смежной тематике, которые можно найти поиском .
Решение задачи непосредственного чтения информации с QR-картинки рассмотрим на примере двух кодов. Информация была закодирована в online-генераторе QR Coder.ru .
Чтобы понять, как извлечь данные из кода, нужно разобраться в алгоритме. Существует несколько стандартов в семействе QR кодов, с их базовыми принципами можно ознакомиться в спецификациях. Кратко поясню: данные, которые необходимо закодировать, разбиваются на блоки в зависимости от режима кодирования. К разбитым по блокам данным прибавляется заголовок, указывающий на режим и количество блоков. Существуют и такие режимы, в которых используется более сложная структура размещения информации. Данные режимы рассматривать не будем ввиду того, что извлекать вручную из них информацию нецелесообразно. Однако, основываясь на тех принципах, которые описаны ниже, можно адаптироваться и к этим режимам.
На случай некорректного чтения данных, в QR применяются специальные коды, которые способны исправить недочёты при чтении. Это так называемые коды Рида-Соломона . Принцип вычисления кодов, а также исправление ошибок в блоках информации рассматривать не будем, это тема отдельной статьи. Корректирующие ошибки коды Рида-Соломона (RS) записываются после всех информационных данных. Это очень упрощает задачу непосредственного чтения информации: можно просто считать данные, не трогая коды. Как показывает практика, обычно бОльшую часть QR -матрицы занимают корректирующие RS-коды.
По стандарту, данные с RS-кодами перед записью в картинку «перемешиваются». Для этих целей используют специальные маски. Существует 8 алгоритмов, среди которых выбирается наилучший. Критерии выбора основаны на системе штрафов, о которых можно также почитать в спецификации.
«Перемешанные» данные записываются в особой последовательности на шаблонную картинку, куда добавляется техническая информация для декодирующих устройств. Исходя из описанного алгоритма, можно выделить схему извлечения данных из QR кода:
Здесь зелёным фломастером подчёркнуты пункты, которые нужно будет выполнить при непосредственном чтении кода. Остальные пункты можно опустить ввиду того, что считывание производит человек.
Шаг 0. QR код
Взглянув на картинки, можно заметить несколько отчётливых областей. Эти области используются для детектирования QR кода. Эти данные не представляют интереса с точки зрения записанной информации, но их нужно вычеркнуть или просто запомнить их расположение, чтобы они не мешали. Всё остальное поле кода несёт уже полезную информацию. Её можно разбить на две части: системная информация и данные. Также существует информация о версии кода. От версии кода зависит максимальный объём данных, которые могут быть записаны в код. При повышении версии – добавляются специальные блоки, например как здесь:
По ним можно сориентироваться и понять какая версия QR перед вами. Коды высоких версий обычно также нецелесообразно считывать вручную.
Размещение системной информации показано на рисунке:
Системная информация дублируется, что позволяет значительно понизить вероятность возникновения ошибок при детектировании кода и считывании. Системная информация – это 15 бит данных, среди которых первые 5 - это полезная информация, а остальные 10 - это BCH (15,5) код, который позволяет исправлять ошибки в системных данных. К классу BCH кодов относят и RS коды. Обратите внимание, что на рисунке две полоски по 15 бит не пересекаются.
Шаг 1. Чтение 5 бит системной информации
Как уже говорилось, интерес представляют только первые 5 бит. Из которых 2 бита показывают уровень коррекции ошибок, а остальные 3 бита показывают какая маска из доступных 8 применяется к данным. В рассматриваемых QR кодах системная информация содержит:Шаг 2. Маска для системной информации
Кроме уже озвученных схем зашиты системной информации, вдобавок, используется статическая маска, которая применяется к любой системной информации. Она имеет вид: 101010000010010 . Так как имеет интерес только первые 5 бит, то маску можно сократить и легко запомнить: 10101 (десять - сто один). После применения операции «исключающего или» (xor) получаем информацию.Возможные уровни коррекции ошибок:
L | 01 |
M | 00 |
Q | 11 |
H | 10 |
Возможные маски:
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 |
Шаг 3. Чтение заголовка данных
Чтобы понять с какими данными предстоит иметь дело, необходимо изначально прочитать 4-х битный заголовок, который содержит в себе информацию о режиме. Специфика чтения данных изображена на картинке:Список возможных режимов:
P.S. Соблюдайте правила ресурса и условия Creative Commons Attribution 3.0 Unported (CC BY 3.0)
P.P.S. Если ошибся блогом, то подскажите куда - перенесу.
Теги: Добавить метки
В прошлом остались те времена, когда на наших товарах не было штрих-кодов. Сейчас они есть практически везде. Но для многих из нас они так и остаются набором цифр и полосок. А ведь штрих-код - это закодированная информация о товаре. И иногда бывает, ой, как полезно уметь её расшифровывать. interesbook.ru ! подготовил для тебя информацию о том, как разбираться в штрих-кодах. Такое обязательно пригодится!
Штрих-код - изображение, которое наносится с целью автоматизации учета информации о товарах, позволяющей их идентифицировать, а также уменьшить время на обработку данных. Его ставят на транспортную и потребительскую упаковку.В нашей стране самыми распространенными штриховыми кодами являются JEAN-13 из 13 цифр и EAN-8 из 8 цифр.
Код EAN-13 представлен на рис. 11.25.
Код страны местонахождения банка данных о штрихкоде указывается двумя или тремя цифрами. Коды некоторых стран представлены в табл. 11.1.
Рис. 11.25. Расшифровка штрих-кода EAN-13:
- код страны местонахождения банка данных о штрих-коде;
- код изготовителя;
- код товара;
- контрольное число.
Принцип штрихового кодирования
Принцип штрихового кодирования - кодирование алфавитно-цифровых символов в виде чередования черных и светлых полос различной ширины (штрихов и пробелов), считывание с помощью сканирующего устройства, которое расшифровывает коды и передает информацию на ЭВМ. ШК - одно из наиболее распространенных средств автоматической идентификации. Расшифровка кодов осуществляется сканирующими устройствами. Коды Европейской ассоциации товарной нумерации (EAN) состоят из 13 цифр (иногда - из 8 для малых размеров упаковки).Первые 2 (3) цифры означают код страны-изготовителя (Великобритания - 50, Испания - 84, Германия - 400-440, Россия - 460-469, Китай - 690, Беларусь - 481).
Следующие пять цифр (3-5 или 3-7) - код предприятия-изготовителя присваивает централизованно национальный орган страны конкретной организации-изготовителю.
Следующие пять (6-7 или 8-12) - код товара, присваивается организацией-изготовителем или продавцом самостоятельно в виде регистрационного номера в пределах своего предприятия. В этих цифрах изготовитель может закодировать необходимые для идентификации данные: наименование, сорт, артикул, цвет, массу, размер и др.
Последняя цифра - контрольная, предназначенная для считывания штрих-кода сканером по алгоритму EAN. Контрольное число находят путем определенной последовательности арифметических действий.
За единицу ширины штриха принимается модуль - самый узкий штрих или пробел шириной 0,33 мм. Каждая цифра кодируется семью модулями, которые сгруппированы в два штриха и два пробела. Например, цифра 4 представлена как 1011100. Ширина штрихов и пробелов - от одного до трех модулей.
Информацию о коде несут также ширина штрихов, пробелов и их сочетание. Номинальный размер символа EAN-13 от первого до последнего штриха - 31,35 мм. Вокруг кода должно быть пустое пространство, так что номинальная ширина составляет 37,29 мм. В начале и конце ШК помещены удлиненные краевые штрихи, указывающие на начало и конец сканирования.
Функции штрих-кода
Штрих-код в отличие от многих информационных знаков выполняет не только общие функции информационного и идентифицирующего характера, но и ряд дополнительных функций :- автоматизированная идентификация товаров с помощью машиносчитывающих устройств;
- автоматизированный контроль и учет товарных запасов;
- оперативное управление процессом товародвижения: отгрузкой, транспортировкой и складированием товаров;
- повышение скорости и культуры обслуживания покупателей;
- информационное обеспечение маркетинговых исследований.
Проверка штрих-кода
Последняя цифра - контрольное число, которое может быть посчитано, а правильность его нанесения проверена по следующему алгоритму:1. Присваивают цифрам в штриховом коле места с 1-го ло 12-го, исключая контрольную цифру (рис. 11.26);
Рис. 11.26. Присвоение места с 1-го до 12-го в штрих-коде
2. Складывают цифры, находящиеся на четных местах, и полученную сумму умножают на 3. Например: 6 + 7 + 0 + 5 + 0 + + 1 = 19; 19×3 = 57;
3. Складывают цифры, находящиеся на нечетных местах. Например: 4+0+0+9+2+0= 15;
4. Складывают результаты, полученные в п. 2 и п. 3, и получают двух- или трехзначное число. Например: 15 +97 =112;
5. Оставляют у полученной итоговой суммы лишь число, находящееся на последнем месте. Например: 2;
6. Вычитают из 10 полученное число. Полученная разность и есть контрольное число, которое должно совпадать с тем, что указано в штриховом коде. Например: 10 - 2 = 8.
Код EAN-8 представлен на рис. 11.27.
Рис. 11.27. Расшифровка штрих-кода EAN-8:
- код страны;
- код изготовителя;
- контрольное число.
Коды стран местонахождения баз данных о штрихкоде
Штрих-код | Страна | Штрих-код | Страна | Штрих-код | Страна |
00-09 | США и Канада | 54 | Бельгия и Люксембург | 779 | Аргентина |
30-37 | Франция | 560 | Португалия | 780 | Чили |
380 | Болгария | 569 | Исландия | 786 | Эквадор |
383 | Словения | 57 | Дания | 789 | Бразилия |
385 | Хорватия | 590 | Польша | 80-83 | Италия |
400-440 | Германия | 599 | Венгрия | 84 | Испания |
460-469 | Россия и СНГ | 600-601 | ЮАР | 850 | Куба |
471 | Тайвань | 611 | Марокко | 858 | Словакия |
474 | Эстония | 613 | Алжир | 859 | Чехия |
475 | Латвия | 619 | Тунис | 860 | Югославия |
477 | Литва | 94 | Новая Зеландия | 869 | Турция |
482 | Украина | 64 | Финляндия | 87 | Нидерланды |
484 | Молдова | 690 | КНР | 880 | Южная Корея |
489 | Гонконг | 70 | Норвегия | 885 | Таиланд |
45 и 49 | Япония | 729 | Израиль | 888 | Сингапур |
50 | Великобритания | 73 | Швеция | 890 | Индия |
520 | Греиия | 750 | Мексика | 893 | Вьетнам |
529 | Кипр | 759 | Венесуэла | 90-91 | Австрия |
535 | Мальта | 76 | Швейцария | 93 | Австралия |
539 | Ирландия | 770 | Колумбия | 955 | Малайзия |
Считывание штрих-кода
Для считывания штрих-кода применяют:- стационарные и портативные лазерные сканеры , позволяющие считывать штрих-код на различных расстояниях от товара - от 60 см до 5-6 м;
- кассовые сканеры, оснащенные системами считывания ШК: оптические контактные считыватели в виде ручек, карандашей, лазерных пистолетов и т.д.
Кассовый сканер D-500 предназначен для применения в кассовых аппаратах супермаркетов. Быстрое считывание кода на расстоянии при произвольной ориентации этикетки достигается многолучевым сканированием, что обеспечивает высокую производительность обслуживания покупателей. Встроенный декодер настраивается на все известные системы кодирования товаров. Из-за высокой стоимости применение этого устройства экономически целесообразно только в крупных магазинах с большим потоком покупателей и товарооборотом.
Сканирующее устройство передает информацию о реализации конкретного товара на ЭВМ, где хранится информация о запасах его в торговом зале и на складе. Если запас меньше допустимых нормативов, то через средства электронной связи передается сигнал о необходимости пополнения товара на складе. Сканеры, установленные на складе, осуществляют автоматизированную идентификацию необходимого товара, и с помощью специальных устройств товар транспортируется в торговый зал.
Штрих-код позволяет распознавать информационную фальсификацию, сопровождающую обычно другие виды подделок.
Штрих-код наносится на транспортную или потребительскую упаковку многих импортных и отечественных товаров типографским способом или с помощью этикетки или ярлыка, которые приклеиваются. Штриховой код должен наноситься на заднюю стенку упаковки в правом нижнем углу на расстоянии не менее 20 мм от краев. Допускается нанесение на боковую стенку упаковки, на этикетку в правом нижнем углу. На мягких упаковках выбирают место, где штрихи будут параллельны дну упаковки. Штрих-код не должен размешаться там, где уже есть другие элементы маркировки (текст, рисунки, перфорация).
Поделитесь этим материалом со своими друзьями, пожалуйста, как нам кажется, им будет тоже интересно узнать что-то новое о мире вокруг нас.