22 октября, понедельник 03:54
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Автоматизация УФЭБС. Шаг первый (Разбор конвертора ЭЦП (КА)) готовое решение.

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Автоматизация УФЭБС. Шаг первый (Разбор конвертора ЭЦП (КА)) готовое решение.

    Есть готовое решение того, что описано на стр. 53 приложения 5 подсистемы "Учетно-операционные работы". Файл тут!

  • #2
    Стоит заметить, что внутри архива только .exe (Для тех кто не рискнет крутить на ответственной задаче с доступом к криптографии бинарник "из интернета")

    Комментарий


    • #3
      Сообщение от artn
      Стоит заметить, что внутри архива только .exe (Для тех кто не рискнет крутить на ответственной задаче с доступом к криптографии бинарник "из интернета")
      А Вы ожидали там исходники увидитесь ? Судя по количеству желающих скачать, исходники за просто так не стоит отдавать. На самом деле задача тривиальная, хотел выполнить в консольном исполнении, или в виде dll, но TXMLDocument в таких исполнениях на отрез отказывается работать.

      Комментарий


      • #4
        Ага, сорцы
        А с желающими как-то странно просмотров темы меньше сотни (сейчас), а файл скачен какое-то бешенное количество раз.

        Комментарий


        • #5
          Хотелось посмотреть, как Вы подпись проверяете

          Комментарий


          • #6
            Сообщение от artn
            Хотелось посмотреть, как Вы подпись проверяете
            Простой вариант:

            Проверка подписи:
            mag.exe c файл.xml>

            Удаление подписи:
            mag.exe r файл.xml>

            Сложный вариант:

            Создайте файл chSign.cmd (надеюсь у Вас не Win 98) и поместите в него ниже следующее:

            Код:
            @ECHO OFF
            
            for %%I in (%0) do SET PN=%%~nxI
            for %%I in (%0) do SET PNEX=%%~fI
            
            setlocal
            
            SET WKDIR=.
            REM Путь к файлам СКЗИ "МагПро 4.0".
            SET MAGPRO=.
            REM Можно указать и MAG_WIN.EXE (в моём случаи я переименовал MAG_WIN.EXE в MAG.EXE т.к. Конва вызывает MAG.EXE).
            SET MAGEXE=MAG.EXE
            REM Хеш-вектор %MAGEXE% (в моём случаи MAG_WIN.EXE).
            SET MAGHESH=1939852FF15D9933F39041F1197DC34CF12BAA09C8BC6B02CA8652FCFBA17496
            REM За сколько дней до завершения времени действия сертификатов, выдавать об этом сообщение.
            SET EXPIRESF=12
            
            SET LOG=%PNEX%.log
            SET EXELOG=%PNEX%.exe.log
            SET ERRLOG=%PNEX%_err.log
            
            call :echoM Начато выполнение пакетного файла.
            call :echoM
            call :echoM Компьютер    : %COMPUTERNAME%
            call :echoM Пользователь : %USERNAME%
            call :echoM Пакетный файл: %PNEX%
            
            call :main
            
            goto end
            
            :main
            
              call :chKey
              call :ChMagPro
            
              for %%I in (*.EPD,*.ESID,*.BRAK) do (
            
                call :echoM
                call :echoM Обработка файла %%~I
            
                call :echoM
                call :echoM Разбор конверта ЭЦП
            
                call :Execute EPDToXML.exe %%~I %%~nI.XML
            
                if EXIST %%~nI.XML (
                  call :echoM Операция выполнена успешно.
            
                  call :MagProSign %%~nI.XML
                )
              )
            
            goto :eof
            
            :MagProCript
            
              call :echoM
              call :echoM Расшифрование документа %1
            
              call :Execute %MAGPRO%\%MAGEXE% d %1 -Ln%MAGPRO%\MAG.LOG
            
              if errorlevel 1 (
                echo call magerr.cmd %errorlevel% %1
              ) else call :echoM Операция выполнена успешно.
            
            goto :eof
            
            :MagProSign
            
              call :echoM
              call :echoM Проверка подписи под документом %1
            
              REM call :Execute %MAGPRO%\%MAGEXE% c %1 -d77.mci.00000000.*.adm -Ln%MAGPRO%\MAG.LOG
              call :Execute %MAGPRO%\%MAGEXE% c %1
            
              if errorlevel 1 (
                echo call magerr.cmd %errorlevel% %1
              ) else call :echoM Операция выполнена успешно.
            
              call :echoM
              call :echoM Удаление подписей из документа.
            
              call :Execute %MAGPRO%\%MAGEXE% r %1 -Ln%MAGPRO%\MAG.LOG
            
              if errorlevel 1 (
                echo call magerr.cmd %errorlevel% %1
              ) else call :echoM Операция выполнена успешно.
            
            goto :eof
            
            :ChMagPro
            
              if NOT EXIST %WKDIR% MD %WKDIR%
            
              call :echoM
              call :echoM Самотестирование криптографических функций.
            
              for /F "skip=3 tokens=1,2,3,4,5" %%i in ('%MAGPRO%\%MAGEXE% t -Ln%MAGPRO%\MAG.LOG') do (
                call :echoM %%k %%l %%m
                if NOT +%%m == +успешно. (
                  call :echoM
                  call :echoW Неудачное самотестирование криптографических функций 
                  goto cancel
                )
              )
            
              call :echoM
              call :echoM Проверка Хеш-вектора %MAGEXE%.
            
              for /F "skip=2" %%i in ('%MAGPRO%\calchash.com %MAGPRO%\%MAGEXE%') do (
              
                if NOT +%MAGHESH% == + (
                  if +%%i == +%MAGHESH% (
                    call :echoM Хеш-вектор %MAGEXE% верен.
                  ) else (
                    call :echoW Не верный Хеш-вектор %MAGEXE%.
                    goto cancel
                  )
                ) else (
                  call :echoM
                  call :echoW Не задан Хеш-вектор %MAGEXE%.
                )
              )
            
            goto :eof
            
            :chKey
            
              if NOT EXIST %KEYDRV%\MASTERK.DAT (
            
                echo [M]
            
                if "%KEYDRV%" == "A:" (
                  echo [M] В дисковооде A: не найден файл с "ключами".
                  echo [M] Вставьте дискету, и нажмите "Y" или "Q" для выхода.
                ) else (
                  echo [M] В устройстве %KEYDRV% не найден файл с "ключами".
                  echo [M] Подготовьте устройство %KEYDRV%, и нажмите "Y" или "Q" для выхода.
                )
            
                REM choice.exe [Q] Продолжить? /c:YQ
            
                REM if errorlevel 2 goto cancel
                REM if errorlevel 1 goto chKey
              )
            
              call :echoM
              call :echoM Начало проверки времени действия сертификатов.
            
              call :Execute %MAGPRO%\week.exe %WKDIR%\EXPIRESF.SPR -W%EXPIRESF% -L-
            
              for %%I in (%WKDIR%\EXPIRESF.SPR) do (
                if /I %%~zI GTR 0 (
                  for /F "tokens=1,2 delims=; " %%i in (%WKDIR%\EXPIRESF.SPR) do (
                   call :echoW У абонента с адресом %%i истекает срок действия ключей.
                   call :echoW Период действия ключей истекает через %%j дней.
                   REM choice.exe /c:Y /t:Y,%DELAY% [Q] Информация принята к расмотрению?
                  )
                )
              )
            
            goto :eof
            
            :Execute
            
              echo [U] %COMPUTERNAME% ^| %USERNAME% >> %EXELOG%
              echo [T] %TIME:~0,8% >> %EXELOG%
              echo [M] %PN% >> %EXELOG%
              echo [C] %CD%\%* >> %EXELOG%
              echo. >> %EXELOG%
            
              %* 1>> %EXELOG% 2>> %ERRLOG%
            
              echo. >> %EXELOG%
              echo ------------------------------------------------------------------------------ >> %EXELOG%
            
            goto :eof
            
            :echoM
            
              if +%1 == +- (
                echo [-] ────────────────────────────────────────────────────────────────────────── 1> con
                echo [-] ────────────────────────────────────────────────────────────────────────── 1>> %LOG%
                goto :eof
              ) 
            
              echo [M] %* 1> con
              echo [M] %* 1>> %LOG%
            
            goto :eof
            
            :echoW
            
              echo [W] ВНИМАНИЕ: %* 1> con
              echo [W] ВНИМАНИЕ: %* 1>> %LOG%
            
              REM call :netsend "%ADMSEND%" "%PN% - ВНИМАНИЕ: %*"
            
            goto :eof
            
            :echoE
            
              echo [E] ОШИБКА: %* 1> con
              echo [E] ОШИБКА: %* 1>> %LOG%
            
              REM call :netsend "%ADMSEND%" "%PN% - ОШИБКА: %*"
            
            goto :eof
            
            :end
            
            :eof
            
              call :echoM
              call :echoM Завершено выполнение пакетного файла.
            
            :exit
            
              endlocal
            
              goto :eof
            Настройте пути, или запустите прямо там где mag.exe предварительно скопируйте нужные *.EPD, *.ESID, а также EPDToXML.exe.

            Удачи!

            Комментарий


            • #7
              Правильно ли я понял общую схему? Вы достаете из конверта XML документ пакет и подпись. Прикрепляете к документу подпись. Отдаете это mag'у через файл и вызов мага посредстом командной строки. Он подпись проверяет и снова отрезает.

              А конва дергает проверку подписи через вызов фукций mag'а, передавая данные через память. В файл она выводит просто документ из конверта.

              Комментарий


              • #8
                Бр… а причем, здесь Конва!? Конвой мы пользуемся при отправке документов в МЦИ, а данная схема имеет обратное действие, т.е. обработку полученного файла из МЦИ.

                Подробно:
                Из МЦИ приходит DVC (зашифрованный ZIP) файл в котором, после дешифрации средствами МагПро и разархивирования Вы получаете файл(ы) с расширением EPD, ESID и BRAK если были ошибки. Но если Вы думаете, что на этом всё закончилось, то Вы ошибаетесь. Заглянем в приложение 5 подсистемы "Учетно-операционные работы" стр. 13
                Файл ВВВВВВВВВ>_СССССССССССССССССССС>_SO>V>.ЕPD содержит пакет ЭПД, в который входят следующие группы документов:
                (далее идет описание)
                Файл ВВВВВВВВВ>_ССССССССССССССССССС>V>.ESID содержит пакет ЭСИД, в который входят следующие группы документов:
                (далее идет описание)
                И вроде всё понятно, но когда мы доходим до 52-й страницы возникает вопрос кто такой конверт ЭЦП (КА) и причем здесь Base64!? Ответ на этот вопрос был получен после изучения самих файлов EPD (ESID, BRAK) вот они то и есть те самые конверты ЭЦП (КА) в которых находится пакеты ЭПД и ЭСИД в кодировке Base64. О как! Далее возник вопрос как это извлечь и при этом не пойти в разрез с установленными правилами приложения 5. Ответ на странице 56:

                Правила проверки ЭЦП (КА)
                Процесс проверки ЭЦП (КА) на XML-документе состоит из следующих этапов:
                1) Получение XML-документа, содержащего пакет ЭД, защищенный ЭЦП (КА).
                2) Выделение значения ЭЦП (КА) из элемента sig:MACValue.
                3) Раскодирование значения ЭЦП (КА), выделенного на предыдущем этапе, по алгоритму Base64.
                4) Выделение пакета ЭД, защищенного ЭЦП (КА), из элемента sen:Object.
                5) Раскодирование пакета ЭД, выделенного на предыдущем этапе, по алгоритму Base64.
                6) Проверка ЭЦП (КА): вызов функции СКЗИ по проверке ЭЦП (КА) с передачей ей массивов байтов, полученных на этапах, описанных в перечислениях 5) и 3).
                Вот именно это и делает EPDToXML.exe за исключением пункта 6-ть.

                Спасибо за внимание!

                Комментарий


                • #9
                  Бр… а причем, здесь Конва!? Конвой мы пользуемся при отправке документов в МЦИ
                  Желающие могут пользоваться konva_w для извлечения пакета и проверки подписи.

                  Можно я повторю вопрос? Вы сливаете результат 5) и 3) и передаете это в mag эмулируя 6)? Или результат программы чистый 5) и как тогда работает mag.exe c файл.xml>?

                  Комментарий


                  • #10
                    На выходе получается подписанный цифровой подписью xml файл, для дальнейшей с ним работой нужно проверить и удалить подпись.

                    Комментарий


                    • #11
                      При использовании для разбора выписок конвы нужно всего 2 cmd файла. И ВСЕ ! Вот они:

                      Комментарий


                      • #12
                        Да по ходу косяк вышел. В первых версиях конвы не было пункта "Обработка РПП", а после обновления я даже и не запускал её. У меня она вызывает рвотный рефлекс я конечно много видел бездарного софта, но этот превзошел все мои самые наихудшие ожидания. По ходу и тему можно закрыть, за ненадобностью, но от идеи описать весь цикл обработки их пакетов я не отказываюсь, желающих присоединится, прошу писать на мыло.

                        Комментарий

                        Пользователи, просматривающие эту тему

                        Свернуть

                        Присутствует 1. Участников: 0, гостей: 1.

                        Обработка...
                        X