Откат (даунгрейд) прошивки на материнских платах ASUS 100-й серии

Здесь рассматривается только «программный» откат (без применения программатора).

Откат с версий 1xxx и 2xxx

Откат производится с помощью утилиты FPT из пакета Intel CSME System Tools 11:

FPTW64.exe -BIOS -F filename.rom

Если прошивка в формате CAP, нужно предварительно обрезать капсулу: открыть файл в UEFITool, встать на самое начало «AMI Aptio Capsule», и по нажатию правой кнопки мыши выбрать «Extract body».

Откат с версий 3xxx

Откат с версий 3xxx требует больших усилий. Происходит это по нескольким причинам:

  • начиная с версий 3xxx, в прошивку интегрирован бинарник Intel ME более высокой версии (11.6—11.7 против 11.0)
  • регион ME заблокирован на запись, при откате через утилиту FPT версия ME не понижается
  • в прошивках 1xxx—2xxx имеется специальный модуль, который при обнаружении слишком «высокой» версии ME прерывает процедуру запуска и вызывает встроенную утилиту обновления прошивки (EZ Flash). Эта утилита точно также не может понизить версию ME (регион заблокирован на запись), поэтому пользователь вынужден либо при каждом запуске обходить этот запрос, нажимая клавишу Esc, либо вернуться на прошивку 3xxx

Тем не менее, откат возможен. Для этого потребуется любой серийный (не инженерный) процессор Intel под сокет 1151 (поколения Skylake и Kaby Lake):

  1. Если уже производилась неудачная попытка отката через утилиту FPT и материнская плата находится в описанном выше состоянии «вечный запрос обновления при запуске», нужно скачать с официального сайта ASUS прошивку версии 3xxx, обновиться и убедиться, что при запуске плата больше не просит обновление прошивки.

  2. Скачайте подготовленный архив и распакуйте его куда-нибудь. Скачайте файл прошивки с официального сайта ASUS. Версия прошивки должна совпадать с той версией, которая в данный момент прошита в плату (это важно). Поместите скачанный файл в формате CAP рядом с AMISetup_IFR.bat. Перетащите его на AMISetup_IFR.bat и дождитесь окончания работы программы. Откройте появившийся setup_extr.txt в текстовом редакторе.

  3. Отыщите поиском блок «Me FW Image Re-Flash». Он будет выглядеть приблизительно так:
    One Of: Me FW Image Re-Flash, VarStoreInfo (VarOffset/VarName): 0x68B, VarStore: 0x1
     One Of Option: Disabled, Value (8 bit): 0x0 (default) {09 07 04 00 10
    

    Необходимые параметры: VarOffset и состояние по умолчанию (default). В нашем примере это 0x68B и 0x0. Это означает «значение настройки Me FW Image Re-Flash в NVRAM располагается по смещению 0x68B, по умолчанию возможность перезаписи Intel ME отключена».

  4. Отыщите поиском блок «BIOS Lock». Он будет выглядеть приблизительно так:
    One Of: BIOS Lock, VarStoreInfo (VarOffset/VarName): 0x8A7, VarStore: 0x1
     Default: DefaultId: 0x0, Value (8 bit): 0x1 {5B 06 00 00 00 01}
     One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
     One Of Option: Enabled, Value (8 bit): 0x1 {09 07 03 00 00 00 01}
    

    Аналогично предыдущему, нужные параметры: 0x8A7 и 0x1. Это означает, что блокировка региона BIOS от перезаписи включена.

  5. Таким образом, чтобы иметь возможность откатить версию BIOS и ME, необходимо разрешить перезапись региона ME (поменять по смещению 0x68B значение 0x0 на 0x1), а также снять блокировку региона BIOS (поменять по смещению 0x8A7 значение 0x1 на 0x0). Запишите это на листке бумаги.

  6. Отформатируйте USB-накопитель (флешку) в файловую систему FAT32 и переместите папку «efi» из архива на флешку. Таким образом, должна получиться структура каталогов флешка/efi/boot/bootx64.efi

  7. Перезагрузите ПК, войдите в настройки BIOS (нажимая клавишу Del) и отключите Secure Boot (выставив ему значение «Other OS» или «Disabled»).

  8. Перезагрузите ПК, нажимая при загрузке клавишу F8, чтобы вызвать меню загрузки. Выберите флешку, чтобы загрузиться с неё. Вы попадёте в командную строку EFI Shell.

  9. Введите следующие команды:
    setup_var 0x68B 0x01
    

    Enter

    setup_var 0x8A7 0x00
    

    Enter

Все значения взяты из п.5. Не забудьте, что у вас они будут другими.

  1. Нажатием Ctrl+Alt+Delete перезагрузите ПК и сразу войдите в настройки BIOS (нажимая клавишу Del). Нажмите клавишу F7 для перехода в расширенный режим настроек (или перейдите каким-либо иным способом) и убедитесь, что значение параметра «ME FW Version» (на первой, информационной, странице настроек) равно 0.0.0.0. Это будет свидетельствовать о том, что регион ME успешно разблокирован на запись.

  2. Выйдите из настроек BIOS, нажимая клавишу Esc (выход без сохранения изменений, это важно). Начнёт загружаться операционная система. Важно не перезагружать ПК, так как при перезагрузке все разблокированные регионы заблокируются обратно и вам придётся снова загружаться с флешки.

  3. Выполните откат прошивки на желаемую версию (2xxx или 1xxx). Откат производится с помощью утилиты FPT из пакета Intel CSME System Tools 11:

    FPTW64.exe -F filename.rom
    

    Если прошивка в формате CAP, нужно предварительно обрезать капсулу: открыть файл в UEFITool, встать на самое начало «AMI Aptio Capsule», и по нажатию правой кнопки мыши выбрать «Extract body».

Read More

Маркировка сигарет. Хотели как лучше, а получилось как всегда

Это копия оригинальной версии поста https://habr.com/post/510996/, который был значительно сокращён по просьбе ЦРПТ.

Этот лозунг лучше всего подходит для внедряемого в России проекта маркировки.

Сразу договоримся, что я не буду писать о банальных вещах, о которых рассказывают на всякого рода конференциях, официально проводимых ЦРПТ, производителями ККМ или операторами ЭДО. Об этом вы и сами можете посмотреть на сайте Честный знак.

На всех форумах говорят одну и ту же мантру: «Внедрение маркировки проходит легко и сама маркировка защитит покупателя от контрафакта».

Но это, мягко говоря, неправда.

Я расскажу о том, о чем вам никогда не расскажут на официальных мероприятиях. О проблемах, возникающих при внедрении маркировки.

Введение

Я работаю руководителем отдела ИТ и отвечаю за внедрение маркировки в учётных системах 1С в группе табачных компаний (от производителя до розничной торговли).

Сегодня я хочу поделиться опытом моей команды и особенностями внедрения маркировки сигарет.

Всё, что я буду писать ниже, относится только к табачной продукции. Опыта для обувной продукции у меня нет, но, возможно, там аналогичные проблемы.

Для дальнейшего понимания вас нужно погрузить в некоторую техническую часть

Маркированными являются те сигареты, на потребительской упаковке которой нанесён код в соответствии с требованиями оператора (эмитента) кодов маркировки.

Надо помнить, что в течение переходного периода для производителей (2018—07.2019) состав маркировки менялся. Производители сигарет совместно с оператором ЦРПТ пытались найти приемлемые решения. Выявляли ошибки работы оборудования, как при нанесении маркировки, так и при их регистрации в самом ЦРПТ. В это время производилась наладка оборудования, выявлялись ошибки в программных средствах производителя при бесконечно меняющихся правилах от ЦРПТ. Исправлялись ошибки в работе СУЗ от ЦРПТ, которых тоже было много.

Давайте быстро разберём строение кода маркировки сигарет, действующего сегодня.
Для кодирования серийного номера сигарет, МРЦ (максимальная розничная цена) используется 80 символов:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>?

Алгоритм кодирования-декодирования МРЦ основан на переводе размера МРЦ в копейках в 80-чную систему счисления, используя следующий алфавит:
Алфавит

Кодирование

  1. МРЦ преобразуем в копейки, например
  2. Находим целую часть и остаток от деления МРЦ на основание системы счисления (в нашем случае – 80)
  3. Берём символ из алфавита по индексу, равному остатку и записываем его в начало результирующей строки
  4. Повторяем шаги 2 и 3 пока целая часть не окажется равной 0
  5. Дополняем результирующую строку до 4 символов слева символом по индексу 0 из алфавита (“A”)

Пусть МРЦ = 146р30к, тогда МРЦ в копейках = 14630к
Результирующая строка изначально пустая.

  1. Находим целое и остаток от деления 14630 на 80: 182 и 70
  2. Находим символ по индексу 70 в алфавите и добавляем его в начало результирующей строки: “.”
  3. Целое от деления больше 0, поэтому находим новые целое и остаток от деления 182 на 80: 2 и 22
  4. Находим символ по индексу 22 в алфавите и добавляем его в начало результирующей строки: “W.”
  5. Целое от деления больше 0, поэтому находим новые целое и остаток от деления 2 на 80: 0 и 2
  6. Находим символ по индексу 2 в алфавите и добавляем его в начало результирующей строки: “CW.”
  7. Целое равно 0, поэтому дополняем результирующую строку слева нулевым символом: “ACW.”

Декодирование

  1. Для каждого символа из закодированного представления МРЦ повторяем следующие шаги
  2. Возводим длину алфавита, равную 80, в степень, равную позиции текущего символа МРЦ, считая с конца строки и начиная с 0, и умножаем на индекс текущего символа в алфавите
  3. Прибавляем полученное значение к результирующему

Пусть закодированное значение МРЦ равно “ACW.”
Результирующее значение изначально равно 0.

  1. Берём первый символ МРЦ: “A”
  2. Индекс символа “A”: 0
  3. Возводим 80 в степень 3 (позиция текущего символа, считая от конца строки из 4 символов) и умножаем на 0, получаем 0
  4. Прибавляем 0 к результирующему значению строке: 0
  5. Берём второй символ МРЦ: “C”
  6. Индекс символа “C”: 2
  7. Возводим 80 в степень 2 и умножаем на 2, получаем 12800
  8. Прибавляем 12800 к результирующей строке: 12800
  9. Берём третий символ МРЦ: “W”
  10. Индекс символа “W”: 22
  11. Возводим 80 в степень 1 и умножаем на 22, получаем 1760
  12. Прибавляем 1760 к результирующему значению: 14560
  13. Берём четвёртый символ МРЦ: “.”
  14. Индекс символа “.”: 70
  15. Возводим 80 в степень 0 и умножаем на 70, получаем 70
  16. Прибавляем 70 к результирующему значению: 14630
  17. Итоговое значение МРЦ = 14360к или 146р30к

Поскольку на практике МРЦ (максимальная розничная цена) округляется до рублей и имеет диапазон от 60 до 500 рублей, можно сделать вывод: МРЦ в 80-ричной кодировке всегда начинается с “A”, а заканчивается на один из четырёх символов “A”,“U”,“o”,“8”. Можно использовать это для проверки валидности МРЦ в коде маркировки пачки.

Таблица кодирования МРЦ:
Таблица кодирования МРЦ

Рассмотрим маркировку на примере сигарет с фильтром «T&W» ОРИДЖИНАЛ КОМПАКТ МРЦ 106

Вот как выглядит маркировка на пачках и блоках:
Маркировка на пачках и блоках Извините, я не нашёл блок с МРЦ 106, для фото брал 115.

Маркировка пачки:

Маркировка пачки

0461003014152700000HdAB0oOnE1

Строка длиной 29 символов, содержит:

  • GTIN-14 (14 цифровых символов). Содержит лидирующие “0” и EAN-13 код для единицы измерения «пачка» прижаты к правому краю. Аналогичен обычному EAN-13, нанесённому на пачке.
  • Серийный номер (7 символов). Идентификационный код, сгенерированный оператором эмиссии из набора 80 символов. Задумывался он как уникальный для указанного EAN.
  • МРЦ (4 символа). Максимальная розничная цена, указанная в копейках в 80-ричном исчислении.
  • Криптохвост (4 символа). Код создаётся на производстве в «чёрном ящике» при запросе очередного пула кодов у оператора эмиссии маркировки. Его запрещено накапливать в базах данных и передавать третьим лицам. На мой взгляд, это требование — самая большая ошибка ЦРПТ, потом вы поймёте, почему я так считаю.

Маркировка блоков:

Маркировка блока

(01)04610030141534(21)00000!&<FNC1>(8005)106000<FNC1>(93)yikZ

Строка длиной не менее 41 символов и содержит код в формате GS1. Скобочки добавлены для наглядности. Содержит символы GS1

  • (01) GTIN-14 (14 цифровых символов). Содержит лидирующие “0” и EAN-13 код для единицы измерения «блок». Аналогичен обычному EAN-13 нанесённому на блоке.
  • (21) Серийный номер (7 символов). Идентификационный код, сгенерированный производителем из набора 80 символов. Задумывался как уникальный для указанного GTIN-14.
  • (8005) МРЦ (6 цифровых символов). Максимальная розничная цена, указанная цифрами в копейках для блока. В нашем примере 1060.00 рублей для блока (106 для пачки)
  • (93) Криптохвост (4 символа). Код создаётся на производстве в «чёрном ящике» при запросе очередного пула кодов у оператора эмиссии маркировки. Его запрещено накапливать в базах данных и передавать третьим лицам.

В код могут быть включены дополнительные данные, но первыми должны идти коды 01 и 21.

Маркировка коробов:

Маркировка короба

(01)14610030141524 (21)0011986(8005)106000(37)50

Строка длиной не менее 25 символов. Содержит обязательные коды 01 и 21 в формате GS1. Каждый производитель сам определяет состав кода маркировки для транспортной упаковки. Не имеет криптохвоста. Может быть нанесён как GS-1 DataMatrix код.

Часто производители дублируют GS-1 (CODE-128) и GS-1 DataMatrix, вот пример:

Дублирование кодов

Другие производителя иногда не указывают МРЦ, а некоторые добавляют элемент 240 для указания внутреннего кода номенклатуры производителя.

Разберём наш пример кода маркировки транспортной упаковки «короб»:

  • (01) GTIN-14 (14 цифровых символов). Содержит IFT-14 код для единицы измерения «короб». Аналогичен обычному IFT-14, нанесённому на коробе в чёрной рамке.
  • (21) Серийный номер (7 цифр). Идентификационный код, сгенерированный производителем и обеспечивающий неповторимость в рамках одного IFT-14 кода.
  • (8005) МРЦ юнита (6 цифровых символов). Максимальная розничная цена, указанная в копейках для вложенного юнита – «блока».
  • (37) Количество вложенных юнитов (2 и более цифровых символов). Количество вложенных в короб блоков сигарет.

В код могут быть включены дополнительные данные, но первыми должны идти коды 01 и 21.

Маркировка паллет:

Маркировка паллеты

(00)946100301410004634

Строка длиной 20 символов. Содержит префикс 00 и обязательный логистический код паллеты (контейнера) SSCC.

На всех упаковках, кроме пачек, наносится как машиночитаемый код, так и его человекочитаемый эквивалент. Это позволяет набрать код маркировки вручную, если по какой-то причине код не сканируется сканером.

Агрегации и дезагрегации.

В маркировке от ЦРПТ заложены такие возможности как агрегация и дезагрегация упаковок. До недавнего времени агрегация производилась только на заводе изготовителе. С завода информация передаётся в ЦРПТ. Не только о нанесённых кодах маркировки, но и об её агрегации. JSON файл, передаваемый с завода в СУЗ ЦРПТ, содержит структуру, в которой нельзя отправить данные о маркировке без данных о заводской агрегации. На заводе, агрегация блоков/коробов/паллет производится при повторном сканировании маркировки с каждого вложенного элемента и кодов упаковки. Этим обеспечивается проверка читаемости кода и гарантия соответствия кодов, входящих в состав упаковки, коду самой упаковки. Поэтому старайтесь сохранять заводскую упаковку до последнего момента. Вскрыв заводскую коробку, уже нельзя гарантировать, что все блоки относятся именно к этому коробу. Привет всем торговым сетям, которые проверяют вложенные блоки и вскрывают короба для этого ;)

Недавно функция агрегации сигарет появилась в API для торговых организаций. Видим большую перспективу здесь для отгрузки паллетами с логистических складов.

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

Теперь разберём проблемы, с которыми мы столкнулись при внедрении прослеживаемости движения сигарет

Криптохвост на сигаретах никому не нужен и нигде не проверяется

Некто Резав Юсупов писал:

… фабрика наносит код, который генерирует единая система, а защищает его криптография, поэтому подделать или скопировать его невозможно… То есть система замкнутая и ни у кого нет возможности на каком-либо этапе добавить в партию нелегальный товар.

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

Нет, наверное, можно проверить криптохвост, пока сохранена сама упаковка у покупателя, но при продаже, узнать та ли конкретная упаковка продавалась или другая с подменным криптохвостом невозможно. Злоумышленнику все, что нужно, это попасть на существующий в природе серийный номер (благо он нумеруется по порядку у всех, кроме как у ФилипМорис)

Ниже пример:

Обратите внимание на последние четыре символа — это для теста подменённый криптохвост.

Проверка кода

Когда мы эту картинку показали ЦРПТ, они признались, что у них нет технической возможности проверять криптохвосты. Более того, у них нет информации о том, по какому алгоритму генерируются криптохвосты. И, что они сделали после нашего обращения? Они обновили приложение «Честный знак» и теперь обрезают криптохвосты и не показывают его на экране. Наверное, чтобы никто не мог тыкать их носом. Но мы-то снимок экрана сохранили :)

К чему приводит отказ от проверки криптохвостов ЦРПТ?

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

В частности, в ККМ и оператору ЭДО через УПД передаётся только первые 21 символ кода маркировки с пачек или 25 символов с блоков сигарет. И даже если вы каким-то чудом отправите более длинную строку, в ЦРПТ поступят исключительно первые 21/25 символов на выбытие сигарет или смены собственника.

Вы можете самостоятельно провести эксперимент: сосканируйте код с пачки сигарет в notepad, замените криптохвост (последние 4 символа) на любые другие 4 символа и из полученного результата обратно сгенерируйте DataMatrix. Программа для проверки подлинности продукции «Честный знак» покажет, что этот код подлинный.

Другими словами, никто в цепочке от предпринимателя до оператора ЦРПТ, не проверяет соответствие серийного номера пачки сигарет его криптохвосту. Я даже больше скажу, ЦРПТ не проверяет даже соответствие серийного номера к указанному МРЦ в коде. Программа честный знак показывает размер МРЦ, динамически рассчитывая его из кода, ограничивая верхнюю и нижнюю планку, после которой МРЦ просто не выводится.

Вы можете сказать: «Ну и что, ну не проверяет криптохвост, нам же лучше». А вот и не лучше! Сейчас объясню почему в следующем пункте с проблемами.

Бесконтрольная дезагрегация транспортных упаковок

Впервые мы столкнулись с этой проблемой, когда ЦРПТ стал отказывать в отражении смены собственников по некоторым нашим ЭУПД. Это было еще в 2019 году, когда использовать ЭДО обязаны были только производители и первые покупатели.

Причина отказа — дезагрегация транспортной упаковки (короба).

На каждый такой случай ЦРПТ писал: «короб дезагрегирован, потому что из короба была продана одна пачка или блок».

ЦРПТ обвинял всех, кроме себя. Мы тоже полагали, что это внутренний пересорт. Но однажды подвернулся случай. В день, когда мы узнали об очередной такой дезагрегации, дезагрегированный короб ещё не покинул наш склад. Конечно, мы его тут же вскрыли и увидели, что пачка, которая по данным ЦРПТ была выведена из оборота через розницу, лежит целая и нетронутая в коробке.

Посмотрели в личном кабинете, кто и когда продал эту пачку. Договорились с розничным продавцом и получили все его логи из POS систем по нашим сигаретам.

Увидели, что была продажа пачки сигарет с совпадающим серийным номером, но с совершенно кривым МРЦ и другим криптохвостом. Связались с производителем POS, а он пояснил, что у этих продавцов 2D сканеры воткнуты «в разрыв клавиатуры» и на результат их сканирования влияют: текущий вид OS (там был линукс), кодировка раскладки клавиатуры, CapsLock и SHIFT.

Соответственно, код маркировки, приведённый в примере выше, 0461003014152700000HdAB0oOnE1 при включённом CapsLock превращается в 0461003014152700000hDab0OoNe1. Вспоминаем, что ЦРПТ не смотрит и не проверяет МРЦ и криптохвост. В результате получаем 0461003014152700000hD. А такая пачка есть, но в другом коробе. Кстати, если включена русская раскладка и в серийном номере нет букв, то можно попасть на подмену знака препинания с (01)04610030141534(21)00001.6 на (01)04610030141534(21)00001?6 и так далее.

Если ЦРПТ находил похожий серийный номер сигарет и вне зависимости от того, кто собственник, он проводил выбытие этой пачки/блока, попутно дезагрегировав все вышестоящие упаковки.

Когда стал доступен TrueAPI мы провели инвентаризацию на складах, и обнаружили еще не проданных от производителя, но уже дезагрегированных 63 короба на одном центральном складе и 23 короба на другом центральном складе.

И, отгружая через неделю из проверенных остатков, мы вдруг обнаруживаем, что появились ещё несколько дезагрегированных коробов по той же причине.

Пример такой дезагрегации
При просмотре состава дезагрегированного блока видно, что одна пачка продана неким индивидуальным предпринимателем, несмотря на то что все остальные пачки этого блока ещё не проданы от производителя ООО «УСМ»

Просмотр состава дезагрегированного блока

По этому поводу мы написали в ЦРПТ официальную заявку. Более того, мы поднимали этот вопрос на собрании совместно с другими производителями и министром промышленности. Заявленная проблема была занесена в протокол собрания, но так и не была решена до сих пор. Любой участник оборота может продать ваши сигареты, просто случайно попав на ваш серийный номер.

Последнее заявление, которое мы получили от ЦРПТ примерно такое:

мы разработали систему маркировки для гос.органов, в которой у нас самих нет технической возможности проверять валидность эмитируемых нами кодов маркировки. Мы опознаем сигареты и отражаем их движение ориентируясь исключительно на серийные номера.

Трудно представить, как такая маркировка будет применяться на лекарствах?!?

И даже, если мы будем проверять статусы маркировки перед каждой отгрузкой, а мы это уже делаем, нет гарантии того, что пока машина едет до покупателя, все короба останутся недезагрегированными на момент приёмки.

Я уже молчу о том, что при продаже в рознице у вас будут пачки, которые по данным ЦРПТ уже выведены из оборота кем-то другим.

Напоминаю, что ЦРПТ говорит:

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

Рекомендации ЦРПТ проверять статус и собственника маркированного товара перед подписанием документов о покупке или продаже

Действительно, с появлением TRUE_API.pdf, у участников оборота появилась возможность получить данные о кодах маркировки, их вложенность в агрегаты, текущих собственниках и др. информацию.

Многие сети решили с помощью данного API внедрить проверку собственника перед покупкой и сделали это одним из условий договоров.

Да что там греха таить, некоторые производители ККМ и операторы ЭДО решили обезопасить своих клиентов, и не дают им продавать или подписывать документы, пока данные о собственнике маркированного товара не будут соответствовать участникам сделки. Не будем во всех тыкать пальцем, но хочу передать привет особенно компании 1С, СБИС и АТОЛ.

ЭДО

Как всегда хорошие задумки этих компаний разбиваются об айсберг действительности.

Особо пытливые умы могут проверить на примере:

Пример

Верхняя пачка в приложении «Честный знак» не проходит проверку (слева), а нижняя проходит (справа):

Проверка кода

Чтобы не дезинформировать потребителей в ЦРПТ обещали исправить своё приложение уже на следующей неделе. Но вот когда они поправят ГИС МТ для предпринимателей?

Что касается проверки информации о текущем собственнике, в реальности, дела обстоят так: сегодня, когда я пишу эту статью 26.06.2020, в ЦРПТ отражена смена собственников только до 15.06.2020. Ни один документ после 15.06.2020 ещё не отражён в базе данных ЦРПТ. У нас были случаи, когда ЭУПД появлялась в личном кабинете ЦРПТ спустя месяц, и только после обращения в службу поддержки ЦРПТ.

Как это обычно происходит. Мы видим, что наши документы не появляются в ЦРПТ слишком долго (более недели). Пишем в поддержку ЦРПТ обращение. Поддержка ЦРПТ пишет, что они не получали наших ЭУПД. Пишем оператору ЭДО. Оператор ЭДО пишет, что все ЭУПД давно направлены в ЦРПТ. Вот так и бегаем от одних к другим.

А покупатели, наслушавшись невыполнимых рекомендаций ЦРПТ об обязательной проверке, бегают и мучают нас вопросами: «Почему у меня не отразилось в личном кабинете?», «Почему ваши сигареты не проходит проверку в ЭДО?», «Почему ККМ не даёт продать ваши сигареты?»

На практике за один день собственник может смениться несколько раз (производитель-первый покупатель-торговая сеть).

И не забываем, что маркированные сигареты вы могли совершенно законно приобрести на бумажном носителе до 01.07.2020. Но их собственник в ГИС МТ будет отражён неверно.

Помножим проблему несвоевременного отражения в ЦРПТ информации о смене собственников на проблему о бесконтрольной дезагрегации и получим недостоверность данных, отражённых в ГИС МТ.

Подытожим. Внедрение проверки статусов и собственников при приёмке товаров и при продаже товаров пока даёт лишь головную боль участникам оборота, а не защищает вас от штрафов.

Информация о коде маркировки

Проверка кода

Согласие на передачу информации в ГИС МТ третьим лицам

ЦРПТ ввёл сбор «согласия» тогда, когда мы продемонстрировали в поддержку ЦРПТ, как можно по кодам маркировки смотреть всю историю движения сигарет, в том числе, не принадлежавших нам, и скачивать все ЭУПД по всей цепочке продаж с вложенными кодами маркировки и ценами.

Например: нашли на улице пачку от ФИЛИП МОРРИС и по коду маркировки пачки, используя специальный GET запрос, скачали для этой пачки цепочку всех продаж в виде документов УПД -XML. В этих УПД видим цены и коды маркировки. По каждому коду смотрим дальнейшее движение… и так по кругу.

Вы не представляете, какое было желание продать все блоки конкурента по цене 0.01 коп. Это бы привело к выводу из оборота и дезагрегации всех заводских коробов конкурента. Однако удержались и написали об этой уязвимости в поддержку ЦРПТ.

Как исправили эту уязвимость в ЦРПТ? Придумали брать согласие от поставщиков на передачу данных своим покупателям. Даёшь согласие, снимаешь с ЦРПТ ответственность за утечку информации.

И в чем проблема? Да в том, что ЦРПТ, приучив всех участников рынка сигарет пользоваться TrueAPI, вдруг объявляет, что будет закрывать доступ к данным, если поставщик маркированной продукции не будет давать «согласие на предоставление данных из ГИС МТ». Соответственно все сети поголовно стали требовать от своих поставщиков такого «согласия». Но давая его, поставщик дарит покупателю возможность в личном кабинете скачать все свои ЭУПД и смотреть, по каким ценам он покупает или продаёт сигареты конкурентам.

Мы уже написали об этой уязвимости в поддержку ЦРПТ, ждём их реакции.

Ниже приведён пример копии экрана из личного кабинета покупателя, отражённого заштрихованного в самой последней строке внизу. Как видите, он может просматривать ЭУПД вышестоящих участников в цепочке продаж.

Личный кабинет покупателя 1

Скачивать их и смотреть цены.

Личный кабинет покупателя 2

P.S.: В день, когда я закончил писать статью, ЦРПТ временно сделал запрет на скачивание всех документов и теперь показывает заглушку вместо списка документов.

ЭДО, материальная ответственность и COVID-19

Для запуска ЭДО, все участники оборота должны иметь цифровую квалифицированную подпись для подписания ЭУПД. На каждом собрании (семинаре) от ЦРПТ нам заявляют, что практически все предприниматели и организации уже имеют такой ключ ЭЦП, полученный на директора компании или на индивидуального предпринимателя. Также заявляется, что ЭДО позволит избавиться от лишних бумаг.

Про бумаги мы сразу скажем: для перевозки сигарет автотранспортом все ещё нужны бумажные ТТН. Но я не об этом.

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

Сегодня есть два нормальных решения:

  • дублировать все ЭУПД на бумажном носителе и брать подписи с кладовщиков и продавцов или вводить у себя бумажную-ордерную систему;
  • получать квалифицированную подпись непосредственно на материально ответственных лиц (рекомендуется ЦРПТ).

Мы применяем первый вариант, так как он единственно рабочий.

В варианте, где всё подписывается директорской подписью есть проблемы: сложно доказать отсутствие фиктивности сделок перед налоговой инспекцией. Например, когда документы подписываются директорской цифровой подписью, а тот при этом он находился за границей.

И при такой схеме есть риск остановить все продажи, если вдруг подпись директора перестанет действовать. Дело в том, что новую ЭЦП не так быстро зарегистрировать, как показывают на презентациях. Например , если директор уволится или погибнет, со дня увольнения его подпись нельзя использовать без доверенности, а пока проведут собрание и назначат нового директора и пока налоговая зарегистрирует этого нового директора пройдёт 15 дней минимум.

Для другого варианта, нужно отправить всех материально ответственных лиц за квалифицированной электронной подписью. Каждая бабушка — продавец, из каждого магазина с сигаретами, должна ехать в период пандемии в город за ЭЦП? Минпромторг вы в своём уме?

Сейчас мы склоняемся к гибридному варианту, когда будет и на бумаге, и электронных подписей будет несколько — генерального директора и нескольких региональных руководителей.

Корректировочный ЭУКД

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

Потому что коды маркировки там нужно указывать особым способом и вперемешку.

Да и заявленное ЦРПТ ранее уведомление об уточнении счёт-фактуры также не стандартизировано, и все претензии в нем пишут просто текстом, кто во что горазд.

Лучшее решение сегодня — не подписывать покупателем входящий ЭУПД, если есть претензии. А выслать ТОРГ-2 и коды маркировки поставщику, которые нужно убрать или добавить в УПД. На основании их поставщик аннулирует ЭУПД и выпишет новый, уже правильный. Но если покупатель успел продать дальше или дезагрегировать транспортные упаковки, ваша дорога только одна, через ЭУКД.

Учитывайте всегда, что могут быть ошибки в указании МРЦ в кодах маркировки

В код маркировки встроен параметр «МРЦ» и первое что приходит в голову разработчикам POS систем — будет классно, если POS система сама будет определять цену, по которой нужно продавать сигареты в рознице.

Так делают, например, кассы «ЭВАТОР».

Не буду расписывать — вот примеры:

Пример 1

Пример 2

Нам известна пока только одна POS система, которая правильно работает с такими ошибками.

Непечатаемые символы в маркировке

Позвонил клиент с жалобой, что 1С не пропускает наш код маркировки, так как он имеет нестандартные символы… сразу вспомнил о ещё одной проблеме. Раз клиент не может загрузить такую маркировку в 1С, то видать компания 1С не в курсе.

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>? это не все символы, используемые в маркировке. При выдаче кодов маркировки оператором эмиссии — ЦРПТ, коды могут содержат непечатаемые символы в криптохвосте.

Когда мы с этим столкнулись в начале 2020 года, мы добавили новый алгоритм в оборудование, работающее на производстве с СУЗ. Теперь мы получаем гораздо больший пул кодов, чем нам нужно для производства, и отбрасываем те коды, которые имеют непечатаемые символы, чтобы защитить наших покупателей.

Конечно, это произошло не сразу и мы успели выпустить много продукции с такими криптохвостами. Такая продукция все еще ходит в обороте. Как решают этот вопрос другие производители мы не знаем.

Мифы о маркировке, которые мне приходится каждый день развеивать

если сигареты куплены по бумажному УПД, то 01.07.2020 придётся их все сканировать и подавать остатки в ЦРПТ;

Это делать не нужно. Данные о маркировке уже есть в ЦРПТ от производителя, а новый собственник будет указан при следующей реализации.

покупатель обязан сканировать маркировку при приёмке табачных изделий;

Создаёт электронное УПД и прикрепляет к нему маркировку только поставщик. Покупатель может лишь подписать или не подписать документ в ЭДО. Желание сканировать товары при приходе — это личное желание покупателя свериться с поставщиком.

поскольку немаркированные сигареты с 01.07.2020 уже нельзя продавать, то их можно только выбросить (утилизировать);

До 01.12.2020 можно самостоятельно маркировать и наклеить стикеры с маркировкой на продукцию. Ждём информацию от ЦРПТ, как это сделать.

в каждом УПД содержится информация обо всех вложенных пачках сигарет (информация об агрегации);

В УПД содержится только тот код маркировки, в котором производится отгрузка. В коробах — значит код короба, в блоках — код блока. Информации о вложенности нет. Отсюда и проблема во многих учётных системах, которые пытаются проверить на совпадение EAN в коде маркировке и ЕАН внесённый в 1С (как правило вносят ЕАН только для пачек и проверка не работает).

если Честный знак показывает, что такой пачки в ГИС МТ не числится или такой блок уже дезагрегирован, то продать эту пачку будет невозможно;

Система маркировки от ЦРПТ является уведомительной системой, а не как в ЕГАИС — разрешительной. Задача покупателя, в соответствии с законом, оформить ЭУПД через своего оператора ЭДО, приложить к нему отгружаемые коды маркировки и подписать документ своим ЭЦП. Никакой проверки, ни поставщик и ни покупатель не обязаны проводить. Сегодня все проверки, это проверки, придуманные производителями ПО POS систем или 1С или операторами ЭДО, основанных на! РЕКОМЕНДАЦИЯХ!.. Участник оборота так же не обязаны проверять работу ЦРПТ и следить за тем, что они у себя отражали все правильно. Следует отметить, что в личном кабинете ЦРПТ, проблемные ЭУПД имеют значок «x», но привлечь к ответственности за это невозможно, так как нельзя доказать — это неверные коды или ошибка в ЦРПТ.

ЦРПТ ведёт остатки табачной продукции за каждым предприятием также, как ЕГАИС;

Учёт построен по-другому. Есть реестр всех эмитированных кодов маркировки. Для каждого кода маркировки, при появлении более позднего документа, устанавливается новый статус и новый владелец. (Аналог периодического регистра сведений в 1С). Легко можно пропустить несколько участников оборота и закончить выбытием в ККМ. Сами коды маркировки заказывают и вводят в оборот производители. Сейчас будут еще и те, кто будет маркировать не маркированные сигареты. Именно по причине, что остатки не проверяются возможна ситуация, когда сторонний розничный продавец продаёт сигареты, которые на самом деле ему не принадлежат, а лежат на вашем складе.

продать в розницу один и тот же код маркировки много раз невозможно;

Можно, если вы не используете такую POS систему, которая сохраняет проданную маркировку и/или проверяют её через ГИС МТ на предмет выбытия. Все запреты — это желание производителей ПО для POS помочь как-то своим клиентам «не залететь на штрафы». Таких запретов, как в ЕГАИС, нет. Могу привести свои случаи: POS система накапливает выбывшие коды и не даёт их продавать повторно. Если дело доходит до пачки с уже выбывшем кодом, продавцы просто меняются проблемными пачками с продавцами из другого магазина. А если включить контроль по ГИС МТ, то в нем информация меняется с большим запозданием и это тоже не решение.

код маркировки не проходит проверку в Честном знаке, потому что он является контрафактным;

Читайте статью, и поймёте, что если что то не отражается в ГИС МТ — это ещё не значит что продукция плохая. На практике, это почти всегда сбои в ЦРПТ.

на коробах/паллетах коды маркировки должны быть в виде datamatrix, как на блоках и пачках;

Читайте правила нанесения маркировки. Любая маркировка на заводе проходит согласование с ЦРПТ. Если завод её наносит на упаковку, значит она нанесена в соответствии с законом. На коробах маркировка может быть нанесена как при помощи GS-1 CODE128 так и при помощи GS-1 DataMatrix. Содержание кодов одинаково.

можно использовать бесплатный ЭДО Лайт от ЦРПТ для оптовой торговли с другими операторами, настроив роуминг (пока это неправда);

Пока это только реклама. Ещё ни один клиент не смог настроить роуминг с ЭДО Лайт. Надеемся что скоро изменится ситуация.

На остальные вопросы буду отвечать в комментариях.

Для тех кто дочитал до конца подарок:
XML. Образец ЭУПД от Мегаполис.
XML. Образец ЭУПД c разными видами упаковок.
XML. Образец уведомления об уточнении счёт-фактуры.

Read More

Освобождение месенджера?

Это копия ныне удалённого поста https://valerykomarov.blogspot.com/2020/06/blog-post_19.html

Карикатура

Пресс-релиз на сайте Роскомнадзора вызвал не только шум в прессе, но и серьезные вопросы к легитимности принятых решений

Позитивно оцениваем высказанную основателем Телеграмм готовность противодействовать терроризму и экстремизму.
По согласованию с Генеральной прокуратурой РФ Роскомнадзор снимает требования по ограничению доступа к мессенджеру Телеграмм.

https://rkn.gov.ru/news/rsoc/news73050.htm

Возникает вопрос: а причем здесь Генпрокуратура?
Ответ:

Требование Генпрокуратуры, лист 1 Требование Генпрокуратуры, лист 2

На основании этого требования РКН осуществлял блокировку доступа к телеграм. Были обращения в суды от пострадавших организаций https://zona.media/online/2018/08/06/rkn-ip.
Обращаю внимание, что Генпрокуратура не требовала заблокировать доступ к месенджеру полностью, речь в Требованиях идет о конкретных ресурсах.
В возражениях надзорное ведомство подчеркивает, что в этом решении шла речь об ограничении доступа к семи аккаунтам мессенджера, которые пропагандируют деятельность нескольких запрещенных в России организаций на территории Сирии, а также к четырем сервисам, позволяющим обходить блокировки.

А чем же обоснована блокировка работы самого месенджера на территории России?
Ответ: решением суда № 02-1779/2018, карточка дела - https://mos-gorsud.ru/rs/taganskij/services/cases/civil/details/2cc72aea-39e7-4f8e-adc9-37d170966efa?caseFinalRangeDateFrom=13.04.2018&caseFinalRangeDateTo=13.04.2018&formType=fullForm.

И Генеральная прокуратура там никак не задействована.

История вопроса.
14 апреля 2017 года, посредством почтовой связи, а также на адрес электронной почты Telegram Messenger Limited Liability Partnership, содержащихся в реестровой записи № 90-РР, Федеральной службой безопасности Российской Федерации был направлен запрос о предоставлении Telegram Messenger Limited Liability Partnership в Управление ФСБ России информации, необходимой для декодирования электронных сообщений пользователей сети «Интернет», со сроком исполнения до 19.07.2017 года.

Информация не предоставлена.

Постановлением мирового судьи судебного участка № 383 Мещанского района города Москвы от 16 октября 2017 года Telegram Messenger Limited Liability Partnership признано виновным в совершении административного правонарушения, предусмотренного ч. 2.1 ст. 13.31 КоАП РФ, предусматривающей административную ответственность за неисполнение организатором распространения информации в сети “Интернет” обязанности предоставлять в федеральный орган исполнительной власти в области обеспечения безопасности информацию, необходимую для декодирования принимаемых, передаваемых, доставляемых и (или) обрабатываемых электронных сообщений, и ему назначено административное наказание в виде административного штрафа в размере 800 000 руб.

Информации об уплате штрафа нет.

20 марта 2018 года Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций в адрес Telegram Messenger Limited Liability Partnership были направлены уведомления на русском и английском языках о неисполнении установленных обязанностей, в котором последнему был предоставлен срок 15 дней с момента получения уведомления для исполнения обязанности, предусмотренной ч. 4.1 ст. 10.1 Федерального закона от 27 июля 2006 года № 149-ФЗ «Об информации, информационных технологиях и о защите информации».

Телеграм дал официальный ответ - отсутствует техническая возможность выполнить требования РКН.

Обращение РКН в суд с заявлением об ограничении на территории Российской Федерации доступа к информационным ресурсам, функционирование которых обеспечивается Telegram Messenger Limited Liability Partnership, указывая в обоснование требований, что в нарушение норм действующего законодательства, в частности ч. 4.1 ст. 10.1 Федерального закона от 27 июля 2006 года № 149-ФЗ «Об информации, информационных технологиях и о защите информации» Telegram Messenger Limited Liability Partnership не исполнена обязанность по предоставлению в Федеральную службу безопасности Российской Федерации информации, необходимой для декодирования принимаемых, передаваемых, доставляемых и (или) обрабатываемых электронных сообщений, что является основанием для применения в отношении Telegram Messenger Limited Liability Partnership ч. 2 ст. 15.4 Федерального закона от 27 июля 2006 года № 149-ФЗ «Об информации, информационных технологиях и о защите информации», предусматривающей возможность ограничения доступа к информационным системам и программам для электронных вычислительных машин, которые предназначены и используются для приема, передачи, доставки и обработки электронных сообщений пользователей сети “Интернет” и функционирование которых обеспечивается данным организатором, до исполнения таких обязанностей.

Вынесено решение суда:
Установить на территории Российской Федерации ограничение доступа к информационным системам и (или) программам для электронных вычислительных машин, которые предназначены и (или) используются для приема, передачи, доставки и (или) обработки электронных сообщений пользователей сети «Интернет» и функционирование которых обеспечивается Telegram Messenger Limited Liability Partnership, до исполнения указанным организатором распространения информации в сети «Интернет» обязанности по представлению в федеральный орган исполнительной власти в области обеспечения безопасности информации, необходимой для декодирования принимаемых, передаваемых, доставляемых и (или) обрабатываемых электронных сообщений.
Обязать Федеральную службу по надзору в сфере связи, информационных технологий и массовых коммуникаций принять меры по ограничению доступа на территории Российской Федерации к информационным системам и (или) программам для электронных вычислительных машин, которые предназначены и (или) используются для приема, передачи, доставки и (или) обработки электронных сообщений пользователей сети «Интернет» и функционирование которых обеспечивается Telegram Messenger Limited Liability Partnership, до исполнение указанным организатором распространения информации в сети «Интернет» обязанности по представлению в федеральный орган исполнительной власти в области обеспечения безопасности информации, необходимой для декодирования принимаемых, передаваемых, доставляемых и (или) обрабатываемых электронных сообщений.
Обязать Федеральную службу по надзору в сфере связи, информационных технологий и массовых коммуникаций и иных лиц прекратить создание технических условий для приема, передачи, доставки и (или) обработки электронных сообщений пользователей сети «Интернет», распространяемых посредством информационных систем и (или) программ для электронных вычислительных машин, функционирование которых обеспечивает Telegram Messenger Limited Liability Partnership, в том числе путем ограничения доступа к указанным информационным системам и (или) программам для электронных вычислительных машин, до исполнения указанным организатором распространения информации в сети «Интернет» установленной обязанности по представлению в федеральный орган исполнительной власти в области обеспечения безопасности информации, необходимой для декодирования принимаемых, передаваемых, доставляемых и (или) обрабатываемых электронных сообщений.

Ответ пресс-службы суда на запрос СМИ: решение суда в силе и не отменено.

Вывод: блокировка осуществлялась по заявлению РКН на основании уведомления ФСБ о неисполнении ОРИ своих обязанностей, установленных 149-ФЗ.
Перед этим ОРИ был оштрафован по решению другого суда.
РКН обязан блокировать, а не на свое усмотрение это делать. Суд обязал РКН, а не дал право.
Условие снятие блокировки - передача информации в ФСБ.

Итог: судя по тексту пресс-релиза РКН и суда, речь может идти исключительно о снятии блокировки конкретных ресурсов в телеграмме, заблокированных по требованию Генпрокуратуры ранее.
Если же речь идет о снятии полной блокировки на территории России, то такое решение РКН должен быть согласовано с ФСБ, а не с Генпрокуратурой.
Так как такой информации не опубликовано, а вариант согласования Генпрокурором неисполнения РКН судебного решения выглядит сомнительным, то телеграм на территории страны продолжает быть запрещенным!

Дополнение: Ответ на обращение

Read More

How to get into the service menu Acer Nitro VG271P

  1. turn off the monitor (by pressing button 1)
  2. press and hold buttons 2 and 3
  3. press and hold button 1 (do not release buttons 2,3)
  4. press button 4 once (do not release buttons 1,2,3)
  5. wait until the screen turns on then release button 1
  6. after the service menu appears on the screen, release all remaining buttons (2,3)

You can use the joystick to navigate the service menu.

Buttons layout

Read More

How to start Windows Twitch app minimized

Simple AutoHotkey script:

Run, %APPDATA%\Twitch\Bin\Twitch.exe	;path to Twitch binary
FindAndClose:
if WinExist("ahk_class Chrome_WidgetWin_1") {
	WinClose
	Exit
}
Goto, FindAndClose

Save to text file, compile to exe with Ahk2Exe compiler and put to autorun folder (type %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup into Explorer address bar). Don’t forget to disable autostart in Twitch settings. Also you need to enable “When I Close the App: Hide Twich” option.

Read More