Выбрать главу

Это вопрос тем более значимый, что штрих-код действительно содержит в себе тайный знак, сокрытый от непосвященных – это последняя его цифра. Она служит своего рода «паролем», который мешает подделать штрих-код и написать в нем цифры в произвольном порядке. Все цифры штрих-кода по определенным правилам должны быть вовлечены в некоторые арифметические операции с ними – чтобы в сумме получилась последняя из цифр. Но если разделительные линии компьютер читает как шестерки, то в этом случае у него никак не может получиться та же итоговая сумма, которая выходит, если в него последовательность цифр загружается вручную – кассиршей, не учитывающей «шестерки».

Второй вопрос, на который штрихофобы не дают ответа – это вопрос о том, зачем вообще нужны пробелы до начала первого штриха знака и после окончания последнего штриха[212]. Если они ничего не значат (а только при их наличии разделительные штрихи тождественны шестеркам), то отчего же все цифры кодируются с помощью именно 7 модулей и зачем тогда нужны крайние пробелы? Почему тогда разнится число пробелов между последним штрихом, которым кончается одна цифра и первым штрихом, с которого начинается следующая цифра штрих-кода? Почему число пробелов между цифрами разное, если число этих пробелов ничего не значит? А именно это тезис – о не-значимости пробелов лежит в основе экспертиз, находящих число зверя в штрих-коде. И на этот вопрос я пока не слышал ответа… А именно этот тезис о не-значимости пробелов лежит в основе экспертиз, находящих число 666 в штрих-коде.

Вот и Алексей Ипатов опубликовал только вывод из своей «экспертизы», но не опубликовал саму экспертизу, то есть те пути, коими он пришел к своим выводам: в ключевом пункте о наличии сатанинского числа в штрих-коде он без всяких доказательств просто повторил домысел других «наших экспертов» из «Русского вестника» о том, что «количество пробелов не существенно»[213].

Здесь начинает протестовать мое богословское воспитание. Ведь если по такой методе обращаться с Евангелием – это верный путь к ереси. Если автор некоего текста (штрих-код это тоже текст, правда, предназначенный для компьютерного глаза, а не человеческого) счел нужным что-то в него вставить, а интерпретатор по своему вкусу считает, что этот авторский замысел был излишним и что без этих «частностей» можно обойтись, то такой читатель явно вычитывает из текста совсем не то, что в него вкладывал автор. В богословии такое обращение с первоисточником ведет к ереси. В науке – к ошибке.

А ведь опровергается это утверждение просто: достаточно взять какой-нибудь уже изготовленный штрих-код, о котором известно, какая именно последовательность арабских цифр в нем закодирована, и затем «ужать» этот штрих-код, удалив «лишние» пробелы между штрихами, о которых предполагается, что они не несут никакой информационной нагрузки. Например, согласно ГОСТу цифра шесть передается с помощью 7 знаков: 1010000. По мнению Ипатова, компьютеру для распознавания шестерки достаточно первых трех знаков (101; штрих-пробел-штрих). Четыре последующих пробела (0000) информации не несут и оказываются лишними. Хорошо, сотрите эти пробелы, оставьте лишь один (чтобы первый штрих следующей цифры не слился с последним штрихом предыдущей). Проведите эту операцию ужатия по всему штрих-коду, со всеми цифрами (в зависимости от серии удаляя лишние пробелы, оказавшиеся до начала первого штриха или же после окончания последнего штриха из группы, обозначающей каждую отдельную цифру). И дайте сканеру прочитать переделанный вами штрих-код. Что вы получите? – Ничего. Это значит, что для компьютера все-таки важно количество пробелов между группами штрихов.

Провести такой эксперимент может каждый владелец компьютера, принтера и сканера.

Операция первая: пойти в ближайший супермаркет, в котором кассовые рассчеты совершаются с помощью ручного сканера кассирши. Купите какой-либо продукт. Сохраните его этикетку со штрих-кодом и принесите ее домой.

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

Операция третья: Пользуясь таблицей ГОСТА ЕАN[214] определите границы между комбинациями штрихов и пробелов, обозначающих подписанные снизу под кодом арабские цифры. Уберите лишние, с точки зрения Ипатова, пробелы. То есть: те пробелы, которые находятся внутри комбинации двух штрихов, обозначающих одну цифру, не трогайте, а вот те пробелы, которые предшествуют этой комбинации штрихов или следуют за ней – сотрите на экране вашего компьютера. Например, в цифре 5 (серии А) – 0110001 – сотрите первый пробел и оставьте все остальные. А у той же цифры в серии С – 1001110 – сотрите последний пробел, оставив все срединные.

Операция четыре: распечатайте полученную вами картинку.

Операция пять: возьмите исходную этикетку и ту, которую вы «поправили» и отнесите в тот же магазин попросите кассиршу просканировать обе бумажки…

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

Наконец, если по догадке «наших специалистов» ненужным является центральный знак-ограничитель (мол, он туда вставлен лишь для того, чтобы шестерок было именно три), то попробуйте удалить и его. И снова посмотрите на результат…

Приходила ли в голову Ипатова мысль о необходимости такого проверочного эксперимента с вручную исправленным штрих-кодом? – Да. Вот фрагмент из его экспертизы: «Крайние ограничители в штрих-коде являются необходимыми, т. к. по ним определяется единичная ширина элемента. Центральный ограничитель не является необходимым. Подтверждением этому может служить нижеприводимый распознаваемый программой „вручную исправленный“ штрих-код. В данном штриховом коде к центральному ограничителю справа и слева добавлено по дополнительному пробелу. Аналогичное добавление пробелов после крайних ограничителей приводит к сбою в считывании кода».

Как видим, даже добавление пробела приводит «к сбою в считывании кода». Хотя казалось бы это добавление пустоты… Если же такое добавление после окончания штрих-кода («после крайних ограничителей») приводит к сбою – то на каком основании Ипатов полагает, будто ликвидация пробелов в самом штрих-коде никак на результат распознавания не влияет? Так провел ли Ипатов соответствующий эксперимент? – Нет.

Не проведя решающего проверочного эксперимента, не оповестив суд о наличии иных точек зрения у программистов[215], лично не принадлежа к кругу программистов-компютерщиков, Ипатов встал на путь банального запугивания…

Кроме того, его очевидная ошибка в том, что с неинформационными, вспомогательными символами он решил обращаться как с информационными. И это несмотря на то, что стандарт предлагает две разные таблицы для их распознавания. Это означает, что сама программа работает со служебными символами иначе, чем с информационными. Впрочем, этот раздел есть только в европейском стандарте и отчего-то опущен в российском ГОСТе. Из европейского же стандарта видно, что для распознавания цифры программа учитывает два параметра (Е1 и Е2); для распознавания ограничительных крайних символов только один параметр (Е1); а для работы с центральным знаком-разграничителем она использует, напротив, целых четыре замера (Е1, Е2, Е3, Е4). Соответственно, для них используется другая таблица (5.1.1.2-2), чем та, которая используется для распознавания цифр (5.1.2-2).