Переполнение буфера коммуникационного порта 999 viki print

Переполнение буфера коммуникационного порта 999 viki print

Данная инструкция актуальна для Вики Принт, подключенных к ПК или Вики Микро. Для диагностики проблемы при работе Вики Принт с Классик обратитесь по почте к специалистам технической поддержки.

Для тестирования работы используется утилита Fito. Проверьте, что бы у вас стояла актуальная версия.

Шаг 1 . Проверьте, установлена ли служба ComProxy

Если вы работаете без службы ComProxy (например, в автономном режиме) — переходите к шагу 3 .

Если Вики Принт работает в связке с Вики Микро, Дримкас Старт или в режиме передачи данных в ОФД, то в списке служб компьютера должна быть служба ComProxy. Если её там нет, значит, служба не установлена.

Шаг 2 . Проверьте, работает ли служба корректно

Запустите утилиту Fito → «Функции» → «Параметры связи». В параметре «Порт» укажите порт для работы с кассовыми программами.

Перейдите на компьютере по пути C:ComProxyWindows и текстовым редактором откройте ComProxy.ini. Если у вас последняя версия службы, ищите cash_virtual_port_out, если предыдущая версия (1.2.1), то pos_port.

Шаг 3 . Проверьте связь на физическом порту

Остановите службу ComProxy (правой кнопкой по службе → «Остановить»).

Запустите Fito → «Функции» → «Параметры связи». В параметре «Порт» укажите физический порт ККТ. Его номер вы можете посмотреть в Диспетчере устройств.

Если устройство STMiroelectronics Virtual COM port (COMX) отсутствует — значит с Вики Принт нет связи (проверьте питание на ККТ и usb кабель). Если же рядом стоит желтый восклицательный знак — драйвер не установлен. Драйвер можно найти и скачать со страницы загрузок.

Если подключение прошло успешно, без ошибок — значит, служба ComProxy работает некорректно и требует переустановки.

Если же ошибка осталась, то есть какая-то аппаратная проблема со связью Fito и ККТ. Следуйте инструкции дальше.

Шаг 3.1 Включен?
Вики Принт включен. На Вики Принт должна гореть лампочка питания.

Шаг 3.2 Шлейфы исправны?
проверьте и замените на 100% рабочие шлейфы к фискльной плате (остановите службу ComProxy и проверьте, будет ли Fito без ошибок соединяться к ККТ по физическому порту. Если да, включите службу и пройдите шаг 1 еще раз)

Шаг 3.3 Фискальная плата исправна?
протестируйте работу с другой, 100% рабочей фискальной платой (остановите службу ComProxy и проверьте, будет ли Fito без ошибок соединяться к ККТ по физическому порту. Если да, включите службу и пройдите шаг 1 еще раз).

Если при остановленной службе и 100% рабочей фискальной платой Fito по COMX связи всё равно нет — напишите в техническую поддержку.

Бродя по многочисленным форумам, смотря рассылки и т.д. Я наткнулся на один очень частный вопрос. Звучит он примерно так: "Я не пойму технику переполнения буфера, объясните, пожалуйста!". В данном материале я бы хотел рассмотреть технику полностью. Весь материал будет рассчитан для ОС Linux. Я постараюсь затронуть тему локального и удаленного переполнения буфера. Постараюсь внятно объяснить все. Я думаю, этот материал будет понятен даже новичку.

Итак, пора приступить к изучению.

Переполнение буфера это, пожалуй, самая распространенная ошибка как в больших приложениях, так и в маленьких утилитах. Впервые техника переполнения буфера была предпринята в нашумевшем черве конца 80-х годов — черве Роберта Морриса. С тех пор, данная уязвимость стала такой популярной, что на данный момент число эксплоитов, которые написаны на основе данной уязвимости, перевалило уже за отметку более 2-х тысяч. Из всех уязвимостей, которые на данный момент известны миру, переполнение буфера занимает 1-ое место. Ежедневно обнаруживается огромное количество ошибок на основе переполнения буфера. Для примера, подпишитесь на рассылку новостей bugtraq, и составьте процентное соотношение обнаруженных уязвимостей. У меня вышло примерно 35-40 % уязвимостей основанных на переполнении буфера. А ведь это только публичные данные! Представьте, что находится в закрытых источниках, там примерно такое же соотношение.

Что-то я уж заговорился 🙂 Давайте перейдем к обсуждение данной ошибки.

Скажу, что для изучения данного материала, у Вас должны быть хотя бы начальные знания языка Си под Linux. Для дальнейшей работы нам понадобятся следующие инструменты: gcc, gdb, gedit (но можно и другой редактор).

Теперь перейдем к непосредственному объяснению техники переполнения. Допустим, Вы написали утилиту, которая принимает входную строку (первый аргумент). Далее она вызывает системный вызов утилиты "ls" и ищет файл/директорию. В случае если файл/директория найдены, то программа оповещает пользователя о том, что такой файл/директория существуют в системе. Давайте посмотрим на пример такой программки.

Давайте откомпилируем программу и попытаемся запустить: Итак, программа не нашла файла/директории в текущем каталоге. Теперь попробуем создать файл в текущем каталоге.

Так, мы создали файл с помощью стандартной утилиты touch в системе Linux, и программа оповестила нас о том, что такой файл существует в системе. Вроде ничего подозрительного и нет. Никакого переполнения нет в системе. Согласен, программе ведет себя вполне стандартно. Теперь давайте попробуем ввести название файла более 267 символов. Потом объясню, почему именно более 267 символов. Итак:

Опа. Что мы видим 🙂 Сейчас мы использовали синтаксис языка perl. Строка `perl -e ‘print "A"x268’` говорит о том, что в качестве первого аргумента будет значение "A" общей суммой символов равной 268. Т.е. программа в качестве первого аргумента получит такое: A = 268 символам. Идем далее. Программа ничего нам не вывела, а выскочило странное сообщение "Segmentation fault (core dumped)". Чтобы оно могло значить. А значит оно одно. Наша программа повела себя нестандартно и что-то там произошло. А что именно я попытаюсь сейчас объяснить. В системе Unix (как и в Win32) для хранения данных используется "стек". Именно в нем хранятся различные значения переменных (да и они сами там хранятся) в момент запуска программы. После закрытия программы все данные выгружаются из "стека". Стек можно сравнить со складом 🙂 Конечно это довольно грубое объяснение, но все же. Так вот, в нашей программе мы используем несколько буферов. А именно буфер для хранения значения переменной "filename" и буфер переменной "cmd". Буфер "cmd" нас не интересует. А вот буфер переменной "filename" нам более интересен. А все потому, что именно данная переменная используется как имя файла/директории, истоки которого берутся из первого входного аргумента при запуске программы. Копирование строки происходит путем стандартной в языке Си функции strcpy(); Синтаксис ее таков:

Так вот строка в коде:

Говорит о том, что в переменную filename нужно копировать первый входной аргумент программы. Но взглянем выше, и мы увидим следующее: Вышеприведенная строка является объявлением переменной filename как типа char (символьного), который состоит из 255 массивов. То есть данная переменная имеет входной буфер на 255 символов. Получается, мы туда можем поместить 255 символов из входного аргумента нашей программы. Итак. Я думаю, вы уже догадались о том странном сообщении. Если нет, то оно значит то, что мы ввели более 255 символов во входной буфер, и программа вызвала ошибку т.к. размер, введенный в аргументе, превышает отведенный размер буфера переменной. Именно это и называется переполнение буфера. А теперь попробуйте сформулировать определение.

Переполнение буфера — это буфер, значение которого определяется ранее в программе и в последующий момент выходит за рамки определяемости (т.е. переполняется). Несколько запутанно и некорректно. Но каждый может для себя составить определение этому словосочетанию 🙂 Для меня же понятнее мое определение.

Читайте также:  Восстановление windows 10 на другой диск

Двигаемся дальше. Я думаю все линуксоиды знают очень хорошую и нужную утилиту gdb. Это утилита является встроенным отладчиком в системах Unix. gdb расшифровывается как GNU Debugger. Теперь давайте запустим нашу утилиту в этом отладчике и попробуем ввести длинное имя файла/директории.

Итак, мы ввели 1000 символов "A" в первый аргумент программы. И что мы видим? Программа приняла 1000 символов "A" и попыталась осуществить поиск. Но не тут то было 🙂 Буфер переменной-файла равен всего 255 символов. И поэтому произошло переполнение. Строка 0x41414141 in ?? () говорит о том, что наша утилита попыталась обратится по адресу 0x41414141, но там ничего и нет 🙂 Почему именно 0x41414141, так это потому что значение "A" в шестнадцаричном hex формате равно 41. А адрес у нас состоит из 8 символов. Поэтому последние четыре символа "A" будут адресом, к которому после переполнения обратится наша программа. Для более детального закрепления давайте рассмотрим следующий пример. Как я говорил ранее для переполнения нам нужно более 268 символов. Смотрим пример:

И что мы видим 🙂 А видим мы следующие. Для переполнения буфера нам нужно 268 символов. Это значение, при котором буфер полностью заполняется до краев :). Т.е. в вышеприведенном примере мы записали 268 символов "A" и четыре символа "B". Получается, что буфер заполняется до краев значением "A", а далее мы указываем по какому адресу ему следует обращаться после переполнение. Мы указываем ему 4 символа "B", поэтому строка 0x42424242 in ?? () означает что после полного переполнения адрес по которому обратится функция будет указывать на адрес "B" в шестнадцаричном -hex формате. А теперь взглянем на следующий пример:

Взглянем на адрес, по которому после переполнения обращается функция. Он равен: 0x41424242. А теперь взглянем на запуск программы:

В аргументе присутствуют 268 символов "A" и адрес равный BBBA. А теперь переведите его в hex формат. У меня получилось вот что: 0x42424241, а у компьютера вот: 0x41424242. Из этого можно судить, что компьютер читает значения как арабы или китайцы. Т.е. справа налево. Ну и конечно сверху вниз. Поэтому в системе Unix (да и в Win32) стек растет сверху вниз. Получается, что самый большой адрес будет наверху, а далее стек будет убывать. Примерный вариант стека в стандартной программе таков: Т.е. в случае с нашим переполнением программа себя ведет в стеке так: Идут данные. Если все в порядке, то программа обычно завершает свою работу и выгружается из стека. В случае переполнения ДАННЫЕ превышают норму и уже АДРЕС будет указывать не на выход из функции ( в нашем случает это return в main() ), а на что-то другое ( в нашем случае это последние 4 символа в аргументе. )

Давайте взглянем на следующее. Я думаю, вы еще не закрыли gdb. Введите следующую команду. Мы видим регистры слева, а справа их значения. Помните, я Вам говорил, что для переполнения нужно ввести 268 символов, а не 255 как определено. Теперь взгляните на это: Так вот 268 символов это и есть переполнение при котором значение регистра ebp затирается на значение входного аргумента в hex формате ( в нашем случае на "A" в hex формате ).

Т.е. попробуйте ввести такое в нашу утилиту: Мы видим, что программа завершилась нормально без каких-либо ошибок и переполнений. Взглянем на значения регистров: А их и нет 🙂 Программа завершилась нормально и выгрузилась из памяти.

А попробуйте ввести такое значение: Видно что программа завершилась с ошибкой и в качестве адреса по которому она обратится (адресом возврата) является сама функция main() из библиотеки libc. И поэтому для того чтобы указать свой адрес мы использовали 4 дополнительных символа. Они переводились в hex формат и указывали на адрес возврата. При просмотре регистров мы увидим, что регистр ebp затерся значение "A" в hex. Теперь давайте взглянем на другой регистр. Название ему EIP. eip 0x41424242 0x41424242

Мы видим, что его адрес перезаписался на тот адрес, который мы указали. Т.е. на BBBA в hex формате. Я теперь хочу немного отклониться и рассказать вам об этих самых регистрах процессора.

Вообще регистры это некое подобие строителей внутри процессора. Они как бы получают данные и складывают их в компьютере. Т.е. в случае со строителями они строят дом/гараж и т.д. Они получают данные и складывают их, а далее некая программа пытается прочесть информацию из этих регистров. Количество регистров в архитектуре процессора x86 большое. И с каждым разом все увеличивается и увеличивается. Они бывают как 16-ти разрядные, так и 32-х. Сейчас я хочу рассказать более детально об основных регистрах процесорра.

регистр EIP — это регистр содержит в себе адрес функции, на который должна перепрыгнуть программа в какое-либо действие. В нашем случае адрес eip был равен BBBA = 0x41424242. А что расположено по этому адресу? А ничего. В дальнейшем мы разберем эту тему.

регистр ESP — это регистр, с помощью которого можно бегать по стеку. Т.е. обращаться к какому либо адресу в стеке.

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

Думаю, вы уже наглотались теории по самые уши 🙂 Ну ничего осталось совсем чуть-чуть. Я сейчас постараюсь максимально внятно объяснить процесс переполнения, а далее нам останется только осуществить все на практике. И мы уже будем на коне! Итак, поехали.

Процесс переполнения происходит следующим образом:

Вы определяете размер буфера и его крайний край 🙂 (т.е. значение при котором регистр ebp затрется). Далее. Подготавливаете "мусорный буфер". Мусорный буфер — это данные, которые просто заполнят стек ненужной информацией для переполнения буфера. Далее Вы наглядно это увидите. Потом мы копируем шеллкод в буфер. О том, что такое шеллкод я Вам сейчас поведаю. Шеллкод — это некий код, переведенный в машинные инструкции. Почему именно "шеллкод", так это, потому что часто после его исполнения на компьютере предоставляется доступ к оболочке Unix (т.е. к shell-оболочке). Шеллкод может быть локальным и удаленным.

Локальный шеллкод — это код для локальных программ, которые исполняются на локальной машите. Т.е. пользователь работает за компьютером, в котором имеется уязвимая программа. После эксплуатации, которой, пользователю сразу представятся права уязвимой программы. Т.е. допустим, программа запущена с правами супер-пользователя (root), а у пользователя допустим права games (игровые). Когда пользователь (атакующий) успешно проэксплуатирует программу, у него появятся права супер-пользователя в локальной машине.

Удаленный шеллкод — это код для удаленных демонов (программ серверов). Т.е. например Вы обнаружили уязвимость в каком либо сервере. При подключении на который, передается длинная строка, а далее сервер завершает работу с ошибкой переполнения буфера. В данном случае пользователь не имеет прав на удаленной машине. Поэтому, написав эксплоит, который бы переполнял буфер и исполнял удаленный шеллкод с правами запущенного сервера. Часто удаленные шеллкоды после исполнения открывают на удаленной машине порт, после подключения на который, предоставляется командная строка (шелл) с правами запущенного сервера.

Итак, с шеллкодом мы разобрались. Двигаемся далее. После копирования шеллкода в буфер, мы должны указать адрес нашего шеллкода, чтобы после переполнения, уязвимая программа обращалась на инструкцию заданную в шеллкоде. То бишь на инструкцию появления командной строки. Если все это представить в уме, то это примерно высветится так: Для того, чтобы узнать адрес возврата на инструкцию (шеллкод у нас) мы будем использовать отладчик gdb. Для размещения в правильном направлении нам понадобится метод "тык". 🙂 Т.е. опять же мы узнаем "край буфера" путем перебора. В нашей утилите он равен 268 символам. Т.е. как было ранее показано наш адрес будет располагаться в радиусе 4-х символов переведенных в формат hex :). В нашем случае нам нужно разместить наш адрес по следующим параметрам: 268+4 = 268+1(269)+1(270)+1(271)+1(272). Наш адрес ляжет в радиус 268 — 272. Получается как раз 4 символа (байта) и 8 (4 символа в hex) байт в качестве указания адреса на который будет передано управление после переполнения.

Читайте также:  Топ 10 игр на компьютер 2018

Итак, думаю довольно сухомятки. Пора приступить к реалиям. Для начала давайте снова запустим нашу программу в отладчике gdb. Происходит переполнение. Вспомните регистр ESP. Давайте взглянем внутрь него: Внимание. В вашей системе может быть по-другому. Итак, что мы видим. А видим мы следующее. Слева у нас как раз те адреса возврата на данные, которые расположены справа. То бишь на данные символов "A". Из этого может следовать, что после переполнения наша уязвимая утилита обращается по одному из этих адресов, в которых имеется значение "A". На ум сразу приходит, что после того как шеллкод будет расположен, он успешно должен исполниться, после того как мы успешно засунем адрес возврата на наш код.

Итак, пора всю нашу занудную теорию перенести в практические действия. Сейчас я приведу код эксплуататора для нашей утилиты, и мы подробно разберем его. В качестве адреса я взял один из вышеприведенных адресов, значение у которого 0x41414141. Итак, давайте испробуем наш код. Работаем безупречно 🙂 Все, что и требовалось доказать. Теперь я попытаюсь все в коде Вам разъяснить. Итак, шеллкод написан мной. Я считаю его одним из маленьких локальных шеллкодов для Linux. В нем есть функция setuid(0);. В начале мы объявляем переменные. Переменную RET, для того чтобы в ней хранить наш адрес. Далее идет переменная-индекс. Она нужна для запуска цикла добавления адреса на наш шеллкод. Следующая переменная "buf", нужна для того, чтобы полностью подготовить наш код. Вида . Переменная "p" — это указатель на наш буфер данных. Она нужна для того, чтобы посимвольно добавить адрес возврата на код. Итак, далее идет уже код. В первой строке кода мы присваиваем переменной RET адрес на наш код. Далее переменной "p" указываем на то, что она теперь стаем указателем на наш буфер. Потом мы заполняем наш буфер "мусором" для того чтобы переполнить буфер данными, а далее положить шеллкод после "мусора". Далее идет цикл for (. ). В нем мы, как уже было сказано, добавляем адрес с "краев" на 4 байта вперед для того, чтобы адрес поместился полностью. Следующая строка говорит нам о том, что бы запускаем нашу утилиту с заполненным буфером в качестве первого входного аргумента. Вот в принципе и все! 🙂

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

ПЕРЕПОЛНЕНИЕ БУФЕРА ЧЕРЕЗ "ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ".

Я думаю, многие знают, что такое Переменная Окружения. Если нет, то переменные окружения это некие хранилища информации :). Они используются для того, чтобы хранить какую либо информацию. Но очень часто при написании больших программ, программисты допускают ошибки переполнения буфера при передачи этих самых данных через эти самые переменные ; -). Давайте рассмотрим пример написания такой программки. Итак, выше показан пример такой программы, которая берет из переменной окружения "SOMEDATA", с помощью функции getenv(), ее значение и копирует в буфер с использованием функции sprintf(); Синтаксис ее таков:

sprintf(буфер_куда_копировать, формат_копирования, откуда_копировать_данные);

Скажу лишь то, что параметр "формат_копирования", может быть отпущен, но в этом случае возникает другая ошибка программирования. Название ей Ошибки При форматировании Строк. Но об этом читайте в других источниках.

Синтаксис функции getenv() таков:

Итак, мы рассмотрели пример уязвимой программы. Напишем пример программы, которая покажет нам, как переполняется в этом случае буфер. Но сначала откомпилируйте эту программу. Ну я думаю Вам все должно быть ясно. Единственное скажу про синтаксис функции setenv(). Он таков:

setenv(имя_переменной_окружения, значение, значение_перезаписи — 1 да, 0 — нет);

Все. Откомпилируйте программу. Как видно наша уязвимая программа вызвала переполнение. Для того чтобы посмотреть подробности, скажу, что после переполнения в текущей директории должен создаться файл "core". В нем имеется информация о переполнении. Поищите его. Далее его нужно просмотреть через gdb: Вот. Возглянем на регистр ESP для того чтобы вычеслить адрес возврата на шеллкод. Так. Пора писать эксплоит. По сути, он ничем не отличается от предыдушего, только функциями. Ну, я думаю, ничего сложного нет, чтобы разобраться с этим кодом. Скажу лишь то, что т.к. адрес буфера уязвимой программы маленький, я расположил адрес в диапазоне от 0 до 500. Он все равно правильно будет расположен. Так теперь давайте откомпилируем эксплоит и запустим. Вот и все, что требовалось доказать :). Переходим к удаленному переполнению буфера.

УДАЛЕННОЕ ПЕРЕПОЛНЕНИЕ БУФЕРА.

Я думаю, многие видели в security рассылках сообщение об очередной ошибке в каком-либо демоне. И в advisory написано, например, что тип атаки является "Удаленным" (Remote). Вначале статьи мы описали принцип локального переполнения. Сейчас я хочу показать Вам пример удаленного переполнения. Мы напишем уязвимый демон. А далее напишем для него эксплоит. Итак, рассмотрим пример уязвимого сервера. Итак, выше приведен листинг простенького сервера. Давайте откомпилируем его и попытаемся запустить. Демон слушает 2278 порт. Попробуем соединиться с этим портом. Работает отлично. Я думаю, Вы уже заметили ошибку переполнения в сервере. Т.е. если серверу передать слишком длинную строку, то он завершится с ошибкой. Давайте рассмотрим пример программу, которую в простонародье принято считать DOS-утилита. Давайте испробуем программу. Не закрывайте сервер. Взглянем на окно сервера. Вот и переполнение! Взглянем на значение регистра ESP. Так вот. Произошло настоящее переполнение. Хочу предупредить, что для того чтобы правильно выбрать адрес на шеллкод не стоит брать адреса верхние и нижние. Нужно взять адреса средние. Настало время написать эксплоит. Давайте протестируем эксплоит. Опа. Работает! Вот в принципе и все. Вообще переполнение удаленное и локальное мало чем отличается.

В этом материале я постарался рассказать очень подробно тему переполнения. Я думаю, она очень понятна даже для человека, который вообще не знал об этой уязвимости. В заключении хотелось бы также отметить то, что я разработал утилиту, которая генерирует эксплоит автоматически. Скачать ее вы можете на сайте http://unl0ck.info. На данный момент это версия 0.3. В будущем планируется добавить новые возможности.

Хотелось бы поблагодарить следующих людей: stine, cr0n, f00n, nekd0, forsyte, eitr0n, msm, mssunny. Без этих людей жизнь в Сети была бы однообразна.

По поводу каких-либо вопросов пишите на darkeagle@list.ru http://unl0ck.info

P.S. Все примеры программ в статье Вы можете скачать http://www.unl0ck.info/boft.tgz

Читайте также:  Samsung sm t211 4pda

Подписывайтесь на каналы "SecurityLab" в Telegram и Яндекс.Дзен, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.

Материалы для скачивания:

Установка emulyator-com-porta-dlya-podklyucheniya-viki-print-cherez-usb-windows

1. Запустите установщик emulyator-com-porta-dlya-podklyucheniya-viki-print-cherez-usb-windows и следуйте инструкциям установщика.

2. Зайдите в папку с эмулятором (C:Program FilesSTMicroelectronicsSoftwareVirtual comport driverWin8) и запустите установщик, в соответствии Вашей операционной системе. Следуйте инструкциям установщика.

Установка службы транспорта ComProxy

Так как онлайн-касса Вики Принт не имеет собственного сетевого интерфейса, для передачи данных оператору фискальных данных Вики Принт использует каналы связи кассового ПК. Механизм передачи данных реализован при помощи стандартной службы операционной системы разработки компании Дримкас под названием ComProxy.

Дистрибутив поставляется в виде zip-архива. Для установки службы выполните по шагам:

  • Скопировать папку с дистрибутивом (ComProxyWindows) в папку C:Distrib
  • Выполнить в командной строке команду:

C:DistribComProxyWindowsinstall.cmd C:ComProxyWindows COMX COMY COMZ

COMX — порт к которому физически подключен ФР (посмотреть можно в диспетчере устройств, проверить доступность устройства на этом порту с помощью утилиты Fito)

COMY — виртуальный порт com0com (можно установить любое значение, предварительно убедившись, что этот порт не занят другим устройством)

COMZ — порт с которым будет работать кассовая программа и утилита Fito после установки службы (можно установить любое значение, предварительно убедившись, что этот порт не занят другим устройством)

В нашем примере Вики Принт подключен к порту COM7; порты COM8 и COM9 не заняты другими устройствами, можем использовать их для службы ComProxy:

Поэтому команда будет выглядеть следующим образом:

  • Служба будет установлена в C:ComProxyWindows
  • При необходимости после установки можно изменить порты в файле C:ComProxyWindowsComProxy.ini где:
  • physical_port — порт к которому физически подключен ФР
  • virtual_port — виртуальный порт com0com
  • pos_port — порт с которым будет работать кассовая программа

Пояснения: Служба ComProxy для передачи данных от регистратора в ОФД создает дополнительные виртуальные Com-порты. Когда служба ComProxy работает, общение кассовых программ и сервисных утилит с регистратором осуществляется через виртуальные Com-порты, созданные службой транспорта ComProxy.

После установки службы ComProxy проверьте, что служба транспорта появилась в списке служб операционной системы и выполняется.

Работа с Сервисной утилитой Fito

Запустите утилиту Fito, перейдите в меню “Функции”-“Параметры связи”. Проверьте корректность установки следующих параметров:

  • Порт — COM-порт, который был назначен как COMZ при установке службы ComProxy (в нашем примере COM9)
  • Скорость — 57600 (установлено по умолчанию, не изменяем)
  • Использовать линию CTS — пункт не активирован (установлено по умолчанию, не изменяем)
  • Пароль на связь — PIRI (установлено по умолчанию, не изменяем)

Для применения изменений нажмите кнопку «Установить».

Чтобы убедиться в корректности установленных параметров, нажмите кнопку «Статус»:

Если все параметры установлены корректно — появится окно статуса без дополнительных сообщений об ошибках:

Если появляются сообщения об ошибках — перезагрузите устройство, проверьте соединение COM/USB кабеля от устройства к компьютеру, убедитесь что служба ComProxy запущена, повторно проверьте корректность указания параметров.

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

1. Программирование настроек сети

Этот пункт можно пропустить, если ККТ регистрируется в автономном режиме, без подключения к Оператору Фискальных Данных.

Данные подключения (IP-адрес, маска подсети, IP-адрес шлюза, IP-адрес DNS) необходимо брать из текущего состояния подключения к сети Интернет системного блока, с помощью которого мы работаем с ККТ.

URL ОФД-сервера — URL или IP-адрес сервера ОФД (можно уточнить у Оператора Фискальных Данных, с которым заключен договор)

Порт ОФД-сервера — порт сервера ОФД (можно уточнить у Оператора Фискальных Данных, с которым заключен договор)

Название ОФД-сервера — наименование ОФД в свободной форме, можно продублировать URL сервера

Таймер ФН — 30 (установлено по умолчанию, не меняем без необходимости)

Таймер С — 60 (установлено по умолчанию, не меняем без необходимости)

После ввода всех параметров нажимаем «Установить» и переходим к следующему пункту.

2. Регистрация кассы (Если касса уже зарегистрирована, данный пункт пропускаем)

После ввода настроек переходим на вкладку Сервис — Регистрация/снятие с учета — Регистрация/перерегистрация с заменой ФН

  • Наименование пользователя — наименование организации
  • Адрес расчетов — адрес организации первой строкой и почтовый индекс второй строкой
  • ИНН владельца — ИНН организации-владельца кассы
  • Регистрационный номер — ввести значение регистрационного номера ККТ, полученное из ФНС в Кабинете контрольно-кассовой техники. Номер должен содержать 16 знаков без пробелов
  • ИНН ОФД — необходимо указать ИНН Оператора Фискальных данных, с которым у владельца ККТ заключен договор на обслуживание (ровно 10 цифр без дополнительных пробелов или нулей). Не заполнять в случае регистрации в автономном режиме
  • Кассир — ввести фамилию и инициалы регистрирующего (эти ФИО будут указаны в чеке регистрации. В дальнейшем на чеках продажи будет выводится тот кассир, которого на Вики Принт будет отправлять кассовое ПО. ФИО, которые вы введете в этом поле, нигде, кроме чека регистрации, не будут фиксироваться)
  • Система налогообложения — выбрать систему налогообложения организации-владельца кассы
  • Режим работы — при необходимости выбрать режим работы фискального накопителя:
  • шифрование – подразумевает кодирование всех данных ФН. При возникновении ошибок, понять причину их возникновения будет не возможно. Не устанавливать без необходимости.
  • автономный режим – при использовании ККТ в режиме, не предусматривающем обязательной передачи фискальных документов в налоговые органы в электронной форме через оператора фискальных данных (в заявлении, поданном в ФНС должен так же быть выбран режим режим, не предусматривающий передачи фискальных данных)
  • автоматический режим – на данный момент не может использоваться в Вики Принт. Применяется для аппаратов, не предусматривающих участие кассира в режиме продажи (паркоматы, вендинговые аппараты)
  • применение в сфере услуг – для организаций, предоставляющих услуги
  • режим БСО (бланков строгой отчетности) – на данный момент не может использоваться в Вики Принт. Применяется для организаций, предоставляющих услуги населению
  • применение в Интернет – режим работы для ККТ, осуществляющих продажи удаленным способом через Интернет (могут работать без печати бумажного чека)

Еще раз тщательно проверить корректность данных Регистрационного номера и ИНН. Если данные после регистрации окажутся не верными, ФН подлежит замене и ККТ необходимо будет перерегистрировать.

После повторной проверки всех введенных данных нажать кнопку” Выполнить”.

Fito выдаст окно, в котором необходимо подтвердить завершение регистрации кассы:


После повторной проверки корректности введенных данных и нажатия кнопки «Да» касса распечатает два отчёта о регистрации:

Для завершения регистрации передайте ФНС отчет о регистрации. Если регистрация проводится через личный кабинет на сайте ФНС, то для завершения регистрации на нем следует заполнить форму завершения регистрации и указать данные с чека регистрации: точную дату и время, номер фискального документа (ФД №) и фискальный признак документа (ФПД или ФД).

3. Теперь устанавливаем приложение Subtotal, следуя инструкциям установщика:

4. После запуска приложения Subtotal, открываем «Настройки» и выбираем раздел «ККМ»:

5. Выбираем «подключить фискальный регистратор» и вводим главный логин и пароль от Subtotal, выбираем магазин и точку продаж:

6. В заключительной настройке, указываете драйвер Viki Print, коды оплат «0» и «1». Далее нажимаете на синюю шестеренку и указываете номер COM-порта также, как и в утилите Fito 2.1.2:

13. Нажимаете «Finish» и «ok», приложение перезагрузится – на этом настройка завершена.

Ссылка на основную публикацию
Ошибки работы в фотошопе
Для большинства из нас работа в Photoshop CC является такой важной особенностью в жизни, что многое из того, что мы...
Обороты между субконто 1с
Дата публикации 05.08.2019 Использован релиз 3.0.71 В "1С:Бухгалтерии 8" (ред. 3.0) для анализа данных по номенклатуре в разрезе контрагентов используется...
Оборудование каналов передачи данных
1. Характеристики и типы каналов передачи данных Применяемые в вычислительных сетях каналы передачи данных классифицируются по ряду признаков. Во-первых, по...
Ошибочно пробит чек без ндс что делать
Об актуальных изменениях в КС узнаете, став участником программы, разработанной совместно с ЗАО "Сбербанк-АСТ". Слушателям, успешно освоившим программу выдаются удостоверения...
Adblock detector