Перейти к содержимому раздела
Валидата
Форум компании
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 2015-11-20 12:27:27 (2015-11-20 12:42:24 отредактировано serg_ural)
- serg_ural
- Member
- Неактивен
- Зарегистрирован: 2007-11-27
- Сообщений: 49
Тема: Сигнатура 5, hashfile.exe
Добрый день!
Получили из центра тиражирования носители с новой версией Сигнатуры. При попытке проверить целостность дистрибутива (запуске программы hashfile.exe) выдается сообщение:
«Не удается выполнить указанную программу»
Подозреваю, что не хватает каких-то библиотек. В документации на утилиту требований к программному обеспечению и железу не нашел.
Для версии 3.6 утилита успешно запускается.
ПЭВМ P4 3 ГГц, озу 1.5 ГБайт, Windows XP SP3.
2 Ответ от ant 2015-11-20 14:44:57
- ant
- Administrator
- Неактивен
- Откуда: Москва
- Зарегистрирован: 2007-02-02
- Сообщений: 335
Re: Сигнатура 5, hashfile.exe
Добрый день.
Спасибо за сообщение.
Целостность можно проверить утилитой из 3.6.
О данной проблеме необходимо сообщить в центр тиражирования. Мы со своей стороны проверим условия возникновения данной ситуации.
3 Ответ от ant 2015-11-20 14:59:00
- ant
- Administrator
- Неактивен
- Откуда: Москва
- Зарегистрирован: 2007-02-02
- Сообщений: 335
Re: Сигнатура 5, hashfile.exe
Необходимо установить vcredist_x86.exe из каталога 00108-01 12 08 (где расположен дистрибутив hdtest).
4 Ответ от Erik 2016-01-28 00:26:41
- Erik
- New member
- Неактивен
- Зарегистрирован: 2016-01-27
- Сообщений: 6
Re: Сигнатура 5, hashfile.exe
В ВАМБ.00107-01.93.02 указаны 5 модулей *80.dll, которые входят в перечни модулей АПК «Сигнатура-Клиент» и «Сигнатура-сертификат» и подлежат контролю целостности в системном каталоге Windows.
Но этих модулей нет после инсталляции в каталоге Windowssystem32, а инсталлируются они в разные подкаталоги каталога WindowsWinSxS.
Вопрос: контроль целостности на эти модули делать или нет, если они не в system32 ?
Почему этих модулей, входящих в состав этих двух АПК, и zlib1.dll нет в перечне утилиты skzi_info ? Было бы удобнее формировать файлы для расчета целостности СКАД.
5 Ответ от alart 2016-01-29 11:48:58
- alart
- Administrator
- Неактивен
- Откуда: Москва
- Зарегистрирован: 2011-07-28
- Сообщений: 287
Re: Сигнатура 5, hashfile.exe
Добрый день!
Контролировать целостность этих модулей нужно. Для создания списка можно запустить в командной строке в директории Windows команду
dir mfc80.dll,atl80.dll,msvcm80.dll,msvcp80.dll,msvcr80.dll /S /B > list.txt
Утилита skzi_info не предназначена для формирования списка файлов для расчета целостности.
6 Ответ от Erik 2016-01-31 19:05:51 (2016-01-31 19:08:07 отредактировано Erik)
- Erik
- New member
- Неактивен
- Зарегистрирован: 2016-01-27
- Сообщений: 6
Re: Сигнатура 5, hashfile.exe
Добрый день.
Будет ли достаточно поставить на КЦ модули (mfc80.dll,atl80.dll,msvcm80.dll,msvcp80.dll,msvcr80.dll), установленные со СКАД (смотрим по дате создания подкаталогов), а не все копииверсии с такими же именами, установленные с другим ПО в другие подкаталоги?
7 Ответ от alart 2016-02-01 13:06:54
- alart
- Administrator
- Неактивен
- Откуда: Москва
- Зарегистрирован: 2011-07-28
- Сообщений: 287
Re: Сигнатура 5, hashfile.exe
Да, достаточно контролировать целостность только тех модулей, которые устанавливаются со СКАД Сигнатура.
Сообщений 7
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
См. также
#include <Crypt.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
Local $bAlgorithm = $CALG_SHA1
GUICreate(«Hash File», 425, 70)
Local $iInput = GUICtrlCreateInput(@ScriptFullPath, 5, 5, 200, 20)
Local $iBrowse = GUICtrlCreateButton(«…», 210, 5, 35, 20)
Local $iCombo = GUICtrlCreateCombo(«», 250, 5, 100, 20, $CBS_DROPDOWNLIST)
GUICtrlSetData(-1, «MD2|MD4|MD5|SHA1», «SHA1»)
Local $iCalculate = GUICtrlCreateButton(«Calculate», 355, 40, 65, 25)
Local $iHashLabel = GUICtrlCreateLabel(«Hash Digest», 5, 50, 350, 25)
GUISetState(@SW_SHOW)
_Crypt_Startup() ; To optimize performance start the crypt library.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $iBrowse
Local $sFilePath = FileOpenDialog(«Open a file», «», «All files (*.*)») ; Select a file to find the hash.
If @error Then
ContinueLoop
EndIf
GUICtrlSetData($iInput, $sFilePath) ; Set the inputbox with the filepath.
GUICtrlSetData($iHashLabel, «Hash Digest») ; Reset the hash digest label.
Case $iCombo ; Check when the combobox is selected and retrieve the correct algorithm.
Switch GUICtrlRead($iCombo) ; Read the combobox selection.
Case «MD2»
$bAlgorithm = $CALG_MD2
Case «MD4»
$bAlgorithm = $CALG_MD4
Case «MD5»
$bAlgorithm = $CALG_MD5
Case «SHA1»
$bAlgorithm = $CALG_SHA1
EndSwitch
Case $iCalculate
Local $sRead = GUICtrlRead($iInput)
If StringStripWS($sRead, 8) <> «» And FileExists($sRead) Then ; Check there is a file available to find the hash digest
Local $bHash = _Crypt_HashFile($sRead, $bAlgorithm) ; Create a hash of the file.
GUICtrlSetData($iHashLabel, $bHash) ; Set the hash digest label with the hash data.
EndIf
EndSwitch
WEnd
_Crypt_Shutdown() ; Shutdown the crypt library.
Kex 16.03.2006 19:54
Пытаюсь сделать антифлуд для гостевухи. Использую хэшфайл. При повторном открытии выводит ошибку «apr_sdbm_open(shared) error: Unknown error (-1)». Я уже читал про такое на форуме, мне очень интересно, как сделать чтоб заработало? Неужели это неисправимый лаг? И, если это так, можно ли реализовать антифлуд другими способами (не через бд)?
- hashfile выдаёт ошибку, Kex 16.03.2006 19:54
- Ответ, Kex 17.03.2006 01:33
- Ответ, Misha v.3 [M] 16.03.2006 20:06 / 16.03.2006 20:06
- Ответ, Kex 16.03.2006 20:32
- судя по ответам в форуме похоже что все таки это повторное открытие., Misha v.3 [M] 16.03.2006 20:59
- Sad but true., redactor [M] 18.03.2006 14:42
- кто сумеет воспроизвести, Александр Петросян (PAF) [M] 19.03.2006 20:43
- Ответ, АЕМ 01.10.2007 16:51
- забавно цитируете, Александр Петросян (PAF) [M] 01.10.2007 22:03 / 01.10.2007 22:03
- Ответ, АЕМ 02.10.2007 19:13
- Ответ, АЕМ 02.10.2007 19:12
- имелось в виду, что bug.html слать мне., Misha v.3 [M] 02.10.2007 19:36
- Re: имелось в виду, что bug.html слать мне. :-), АЕМ 05.10.2007 16:52
- имелось в виду, что bug.html слать мне., Misha v.3 [M] 02.10.2007 19:36
- забавно цитируете, Александр Петросян (PAF) [M] 01.10.2007 22:03 / 01.10.2007 22:03
- Ответ, АЕМ 01.10.2007 16:51
- кто сумеет воспроизвести, Александр Петросян (PAF) [M] 19.03.2006 20:43
- пример не работает — ни класс, ни просто код :(, Kex 16.03.2006 21:54
- Если нужно без БД, G_Z [M] 16.03.2006 22:13
- то-же самое можно хранить в SQL табличке (-), Misha v.3 [M] 16.03.2006 21:56
- Sad but true., redactor [M] 18.03.2006 14:42
- судя по ответам в форуме похоже что все таки это повторное открытие., Misha v.3 [M] 16.03.2006 20:59
- Ответ, Kex 16.03.2006 20:32
-
ksu_ant
New Member
- Публикаций:
-
0
- Регистрация:
- 28 сен 2005
- Сообщения:
- 273
Здравствуйте!
Возникла необходимость мониторить запуск файлов в системе. Сделал SDT перехваты. Нужно контролировать неизменность файлов. Для этого попытался считать хэш (функции рабочие).-
NTSTATUS HashFile(CHAR *hash,UNICODE_STRING *fname)
-
FILE_STANDARD_INFORMATION fsi;
-
InitializeObjectAttributes (&oa, fname, OBJ_CASE_INSENSITIVE , NULL, NULL);
-
status = ZwCreateFile(&SourceFileHandle, FILE_READ_DATA, &oa, &iosb, 0, FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0);
-
if (status==STATUS_SUCCESS)
-
status=ZwQueryInformationFile(SourceFileHandle,&iosb,&fsi,sizeof(fsi),FileStandardInformation);
-
if (status==STATUS_SUCCESS)
-
memset(&Buffer, 0, sizeof(Buffer));
-
status = ZwReadFile(SourceFileHandle, NULL, NULL, NULL, &iosb, &Buffer, BufferSize, NULL, NULL);
-
if (status == STATUS_SUCCESS)
-
sha256_write(&shctx, &Buffer[0],iosb.Information);
-
} while ( NT_SUCCESS(status) );
-
memcpy(dest, &shctx.sha_out, 32);
-
ZwClose(SourceFileHandle);
Также — строка пишется в файл:
-
void WriteDataToLog(CHAR *LogStr)
-
ZwWriteFile (hLogFile, 0, NULL, NULL, &iosb,s, strlen(s), NULL, NULL);
Но, видимо из-за частых операций работы с файлами — возникает BSOD (думаю, что происходят несколько попыток открытия и чтения одного файла).
Дамп:-
*******************************************************************************
-
*******************************************************************************
-
UNEXPECTED_KERNEL_MODE_TRAP (7f)
-
This means a trap occurred in kernel mode, and it’s a trap of a kind
-
that the kernel isn’t allowed to have/catch (bound trap) or that
-
is always instant death (double fault). The first number in the
-
bugcheck params is the number of the trap (8 = double fault, etc)
-
Consult an Intel x86 family manual to learn more about what these
-
traps are. Here is a *portion* of those codes:
-
use .tss on the part before the colon, then kv.
-
Else if kv shows a trapframe
-
.trap on the appropriate frame will show where the trap was taken
-
(on x86, this will be the ebp that goes with the procedure KiTrap)
-
kb will then show the corrected stack.
-
Arg1: 00000008, EXCEPTION_DOUBLE_FAULT
-
***** Kernel symbols are WRONG. Please fix symbols to do analysis.
-
FAULTING_MODULE: 804d0000 nt
-
DEBUG_FLR_IMAGE_TIMESTAMP: 3b7de38f
-
DEFAULT_BUCKET_ID: DRIVER_FAULT
-
LAST_CONTROL_TRANSFER: from 804d6b8f to 804fc1bb
-
WARNING: Stack unwind information not available. Following frames may be wrong.
-
80539160 804d6b8f 0000007f 00000008 80042000 nt!KeBugCheckEx+0x19
-
00000000 00000000 00000000 00000000 00000000 nt!Kei386EoiHelper+0x14d5
-
STACK_COMMAND: .bugcheck ; kb
-
FOLLOWUP_NAME: MachineOwner
Кто сможет помочь разобраться? Буду благодарен.
-
wasm_test
wasm test user
- Публикаций:
-
0
- Регистрация:
- 24 ноя 2006
- Сообщения:
- 5.582
у тебя процессор летит к еб..ням (double fault), какие там доступы
-
ksu_ant
New Member
- Публикаций:
-
0
- Регистрация:
- 28 сен 2005
- Сообщения:
- 273
Вот непонятно, из-за чего это… Если нет файловых операций — все работает. А нельзя ли проверить — открыт ли уже файл с помощью функций ZwCreateFile/ZwOpenFile, чтобы не открывать его повторно? Что-то я читал про синхронный и асинхронный режимы чтения в ядре — не совсем понял. Кто этим пользовался?
-
tchunya
New Member
- Публикаций:
-
0
- Регистрация:
- 13 ноя 2008
- Сообщения:
- 29
Чего перехватываем-то? Zw/NtCreateFile? Защита от рекурсивного вызова перехваченной функции есть?
-
slesh
New Member
- Публикаций:
-
0
- Регистрация:
- 6 фев 2009
- Сообщения:
- 214
Нуда, как сказал tchunya возможно ты из хука вызываешь похуканную функцию в твоем случае ZwCreateFile
и попадаешь опять же на хук и опять всё повторяется.Как вариант можно сделать проще:
1) В хуке ZwCreateFile вызывать оригинальный адрес функции, чтобы файл открылся. Затем смотреть на права доступа на открытие. в твоем случае должны быть хотя бы права на чтение.
2) Далее ты юзаешь полученный хендл для вычисления хеша файла
3) Далее ставишь позицию указателя опять на начало файла.
4) Принимаешь правильное действие в зависимости от полученного хеша и оригинального.
5) возвращаешь результат (хендл)3 и 4 пункт могут поменяться местами, в зависимости от того что ты делаешь при проверке.
-
wasm_test
wasm test user
- Публикаций:
-
0
- Регистрация:
- 24 ноя 2006
- Сообщения:
- 5.582
slesh
Zw* вообще хукаьт не надо. хукать надо Nt*. разумеется, с защитой от рекурсивного вызова хука. -
slesh
New Member
- Публикаций:
-
0
- Регистрация:
- 6 фев 2009
- Сообщения:
- 214
2 Great тупанул, ну я и имею в виду Nt* которая в SDT
-
А чем простые нотификаторы не устраивают вроди PsSetCreateProcessNotifyRoutine, PsSetLoadImageNotifyRoutine?
-
wasm_test
wasm test user
- Публикаций:
-
0
- Регистрация:
- 24 ноя 2006
- Сообщения:
- 5.582
Очевидно, он хочет иметь возможность _запрещать_ старт процесса при определенных условиях, а нотификаторы на то и нотификаторы — позволяют узнать о свершившемся факте и только.
-
x64
New Member
- Публикаций:
-
0
- Регистрация:
- 29 июл 2008
- Сообщения:
- 1.370
- Адрес:
- Россия
Не совсем так. Во-первых, в нотификаторе о загрузке образа имеется возможность пропатчить образ так, чтобы его точка входа не была выполнена. Во-вторых, колбеки файловых фильтров совершенно легально позволяют запрещать создание исполняемых секций. Ну и, в конце концов, колбек на процессы в Vista SP1 и выше позволяет запрещать непосредственно создание процессов легко и непринуждённо.
-
wasm_test
wasm test user
- Публикаций:
-
0
- Регистрация:
- 24 ноя 2006
- Сообщения:
- 5.582
x64
Патчить — это как-то криво, согласисьФайловые фильтры это да, но я про нотификаторы PsSetXXXNotifyRoutine говорил. И не только для Vista+, а для всех)
-
Вобще наверное рулит:
1. нотификаторы от PsSetXXXNotifyRoutine
2. перехват в SSDT
3. файловые фильтрычем собственно аверы и владеют
-
ksu_ant
New Member
- Публикаций:
-
0
- Регистрация:
- 28 сен 2005
- Сообщения:
- 273
tchunya slesh
Именно их.
Нет, так как писал не я и я теперь разбираюсь в проблеме. Я тоже подумал про рекурсивный вызов, спасибо за идеи, буду пробовать.Great
Точно, это тоже надо.
Всем большое спасибо, Вы подтвердили мои догадки — теперь мне проще будет думать, так как проблема локализована — буду пробовать.
Вычислить хеш-сумму файла в Windows 10 можно с помощью встроенной утилиты certutil с параметром -hashfile. Команда позволяет создать и отобразить криптографический хэш файла.
Синтаксис:
CertUtil [Параметры] -hashfile InFile [HashAlgorithm]
Справку по работе с хеш-суммами можно запросить командой:
certutil -hashfile -?
Хэш-алгоритмы:
- MD2
- MD4
- MD5
- SHA1
- SHA256
- SHA384
- SHA512
Пример:
certutil -hashfile "C:distribWindows10Upgrade24074.exe" MD5
Вывести только хэш:
certutil -hashfile "C:distribWindows10Upgrade24074.exe" MD5 | findstr ^[0-9a-f]$
Хеш-суммы в контекстном меню Windows
Если лень возиться с командной строкой, можно добавить вычисление хеш-сумм в контекстное меню Windows.
Хеш-суммы в контекстном меню Windows (MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512)
Зажимаем Shift и кликаем правой кнопкой мыши на файл, результат выглядит так:
В контекстном меню появляется пункт «Хеш-сумма файла». При наведении отображается список поддерживаемых алгоритмов. Выбираем алгоритм, открывается командная строка с вычисленной хеш-суммой:
dragalur 0 / 0 / 0 Регистрация: 12.11.2019 Сообщений: 8 |
||||
1 |
||||
NASM Открытие файла на чтение завершается ошибкой22.02.2020, 17:41. Показов 2012. Ответов 10 Метки assembler, linux, sasm (Все метки)
Нужно открыть текстовый файл для чтения, компилирует нормально при запуске завершается с ошибкой.
__________________ 0 |
ФедосеевПавел Модератор 8276 / 4180 / 1595 Регистрация: 01.02.2015 Сообщений: 12,987 Записей в блоге: 3 |
||||
22.02.2020, 17:59 |
2 |
|||
А вы уверены, что выставляя режим открытия
открываете файл на чтение? Добавлено через 1 минуту 0 |
dragalur 0 / 0 / 0 Регистрация: 12.11.2019 Сообщений: 8 |
||||
22.02.2020, 18:16 [ТС] |
3 |
|||
Режим вроде как изменил,проверку не знаю как делать если скинете код буду благодарен.
0 |
ФедосеевПавел Модератор 8276 / 4180 / 1595 Регистрация: 01.02.2015 Сообщений: 12,987 Записей в блоге: 3 |
||||||||
22.02.2020, 18:46 |
4 |
|||||||
Не по теме: Я совсем не умею программировать под Linux. Только в общих чертах представляю. После изменения режима — каков результат? Проверка успеха открытия файла — думаю, что есть смысл читать описание функции открытия файла. Как-то же такое должно быть возможно. Для аналогичной функции Кликните здесь для просмотра всего текста
— в Windows описатель (дескриптор) файла при ошибке равен какой-то известной константе INVALID_HANDLE_VALUE Кликните здесь для просмотра всего текста
— в Linux — я не знаю 0 |
Прощай, Мир! 1672 / 829 / 253 Регистрация: 26.05.2012 Сообщений: 3,057 |
|
22.02.2020, 18:52 |
5 |
O_APPEND equ 2000o могу ошибаться, но что это за цифро-буквенная комбинация значит 2000o.. 0 |
politoto Модератор 1762 / 866 / 156 Регистрация: 23.07.2018 Сообщений: 2,927 Записей в блоге: 3 |
||||||||||||
22.02.2020, 19:17 |
6 |
|||||||||||
при запуске завершается с ошибкой. У каждой ошибки, кроме автора, есть адрес, имя и другие атрибуты. Код [0804808b] open(0x74786574, O_RDWR) = -1 EFAULT (Bad address) [080480a7] read(-14, 0x2, 200) = -1 EBADF (Bad file descriptor) [080480b0] --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xfffffff7} --- [????????] +++ killed by SIGSEGV (core dumped) +++ И что Вы пытались сделать? Для чего
в 19-й строчке, и для чего в 26-й? dragalur!
или
Для i386 можно подсмотреть в Linux Syscall Reference 0 |
Модератор 8276 / 4180 / 1595 Регистрация: 01.02.2015 Сообщений: 12,987 Записей в блоге: 3 |
|
22.02.2020, 19:31 |
7 |
Описание open open, creat — открывают и, по возможности, создают файл или устройство СИНТАКСИС int open(const char *pathname, int flags); ОПИСАНИЕ Если системный вызов завершается успешно, возвращенный файловый описатель является наименьшим описателем , который еще не открыт процессом. open и creat возвращают новый описатель файла или -1 в случае ошибки (в этом случае значение переменной errno устанавливается должным образом). Заметьте, что open может открывать файлы устройств, но creat не может создавать их, поэтому используйте для создания функцию mknod(2). Значения констант O_APPEND, O_RDONLY и других — не смог найти быстрым поиском по сети и пакету nasmx. 0 |
politoto Модератор 1762 / 866 / 156 Регистрация: 23.07.2018 Сообщений: 2,927 Записей в блоге: 3 |
||||
22.02.2020, 19:56 |
8 |
|||
если восьмеричная система счисления, то почему именно она взята?? Это вопрос к авторам
Код 02 02000 0 |
dragalur 0 / 0 / 0 Регистрация: 12.11.2019 Сообщений: 8 |
||||
22.02.2020, 20:05 [ТС] |
9 |
|||
Внесу поправки и коментарии в код. Пишу в SASM. Нужно открыть файл и вывести его текст в консоль.При запуске программа завершается аварийно , что SASM не нравится он увы не показывает.Код написан по примеру из методички лабораторной работы. Познание линукса и ассемблера у меня не велики.
Миниатюры
0 |
Модератор 8276 / 4180 / 1595 Регистрация: 01.02.2015 Сообщений: 12,987 Записей в блоге: 3 |
|
22.02.2020, 20:34 |
10 |
Выполните по шагам. Увидите и дескриптор открытого файла (т.е. он вообще открылся или не найден) Кроме того — куда вы читаете из файла? Вы не завершаете программу передачей управления операционке. 1 |
Модератор 1762 / 866 / 156 Регистрация: 23.07.2018 Сообщений: 2,927 Записей в блоге: 3 |
|
23.02.2020, 08:49 |
11 |
Можно ещё почитать прикреплённую тему в нашем подразделе 0 |
Здравствуйте. Не могу понять. Простой код :
with open('textfile_2.txt', 'tw', encoding='utf-8') as f1:
f1.write("Привет русский текст")
f1.read()
Вылезает ошибка:
Traceback (most recent call last):
File "Диск:/Lessons/python-projects/book1/files/ИМЯ ФАЙЛА.py", line 69, in <module>
f1.read()
io.UnsupportedOperation: not readable
-
Вопрос заданболее двух лет назад
-
598 просмотров
Установите режим открытия файла на чтение
Пригласить эксперта
Меня несколько смущает, что Вы открываете флаг на запись ‘w’, а потом на нем же пытаетесь что-то прочитать. Тут выходов два — или переоткрывайте файл на чтение-запись, либо откажитесь от одной из операций.
PS: немного подумав, мне пришла в голову идея, что Вы перепечатываете какой-то листинг. И там режим не ‘tw’, а ‘rw’ (t и r — соседние буквы в раскладке). А ‘rw’ — это как раз режим «чтение-запись».
Спасибо. Сам себя замудрил. Все заработало.
with open(‘text_1’, ‘r’, encoding=’utf-8′) as f1:
print(f1.read())
или
f = open(‘text_1′, encoding=’utf-8’)
print(f.read())
f.close()
-
Показать ещё
Загружается…
28 янв. 2023, в 22:48
500 руб./за проект
28 янв. 2023, в 20:58
30000 руб./за проект
28 янв. 2023, в 20:46
50000 руб./за проект
Минуточку внимания
Мне нужно сгенерировать файл с тегами hashfile из списка файлов, сгенерированных в одном и том же командном файле. Вот код, который у меня есть до сих пор:
@echo off
setlocal enabledelayedexpansion:: Set the variables for this script.
set testfolder=c:testtest folder
set listfile=c:testoutputfile list.txt
set hashfile=c:testoutputhashes.txt:: Delete any of the files that were created the last time this script was ran.
del "%hashfile%"
del "%listfile%"
cls:: Generate a file with a list of all of the files (with path) in designated folder and subdirectories.
:: Directory and subdirectory names are not included in the list. Only files.
dir /s /b /a-d "%testfolder%" > "%listfile%":: Assign each line of the file above to its own variable.
set counter=1
for /f "usebackq delims=" %%x in ("%listfile%") do (
set "line_!counter!=%%x"
set /a counter+=1
):: Count the number of lines in the above file to use as a reference point.
set /a numlines=counter - 1
:: Generate an MD5 hash for each variable and write it to a file with a blank space between each.
for /l %%x in (1,1,%numlines%) do (
certutil -hashfile "!line_%%x!" MD5 >> "%hashfile%"
echo( >> "%hashfile%"
)
eof
Для большинства файлов, для которых я генерирую хэш файл, я получаю что-то вроде:
MD5 hash of file c:testtest folderCitrix 2.bmp:
31 34 d6 04 cd b0 4b ef a7 63 c3 e9 ae a8 3d 01
CertUtil: -hashfile command completed successfully.
Но бывают случаи, когда я получаю ошибку, например:
CertUtil: -hashfile command FAILED: 0x800703ee (WIN32: 1006)
CertUtil: The volume for a file has been externally altered so that the opened file is no longer valid.
Почему некоторые файлы должны давать эту ошибку? Как я могу удалить любую строку, которая начинается с CertUtil: поэтому у меня нет лишних строк или есть способ записать только первые две строки команды CertUtil в файл. После того, как %hashfile%
находится в его окончательной форме, я хочу запустить certutil -hashfile "%hashfile% MD5
и присвоить только хэш-код переменной. Каков синтаксис для этого?
Перейти к содержимому раздела
Валидата
Форум компании
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 2015-11-20 12:27:27 (2015-11-20 12:42:24 отредактировано serg_ural)
- serg_ural
- Member
- Неактивен
- Зарегистрирован: 2007-11-27
- Сообщений: 50
Тема: Сигнатура 5, hashfile.exe
Добрый день!
Получили из центра тиражирования носители с новой версией Сигнатуры. При попытке проверить целостность дистрибутива (запуске программы hashfile.exe) выдается сообщение:
«Не удается выполнить указанную программу»
Подозреваю, что не хватает каких-то библиотек. В документации на утилиту требований к программному обеспечению и железу не нашел.
Для версии 3.6 утилита успешно запускается.
ПЭВМ P4 3 ГГц, озу 1.5 ГБайт, Windows XP SP3.
2 Ответ от ant 2015-11-20 14:44:57
- ant
- Administrator
- Неактивен
- Откуда: Москва
- Зарегистрирован: 2007-02-02
- Сообщений: 342
Re: Сигнатура 5, hashfile.exe
Добрый день.
Спасибо за сообщение.
Целостность можно проверить утилитой из 3.6.
О данной проблеме необходимо сообщить в центр тиражирования. Мы со своей стороны проверим условия возникновения данной ситуации.
3 Ответ от ant 2015-11-20 14:59:00
- ant
- Administrator
- Неактивен
- Откуда: Москва
- Зарегистрирован: 2007-02-02
- Сообщений: 342
Re: Сигнатура 5, hashfile.exe
Необходимо установить vcredist_x86.exe из каталога 00108-01 12 08 (где расположен дистрибутив hdtest).
4 Ответ от Erik 2016-01-28 00:26:41
- Erik
- New member
- Неактивен
- Зарегистрирован: 2016-01-27
- Сообщений: 6
Re: Сигнатура 5, hashfile.exe
В ВАМБ.00107-01.93.02 указаны 5 модулей *80.dll, которые входят в перечни модулей АПК «Сигнатура-Клиент» и «Сигнатура-сертификат» и подлежат контролю целостности в системном каталоге Windows.
Но этих модулей нет после инсталляции в каталоге Windowssystem32, а инсталлируются они в разные подкаталоги каталога WindowsWinSxS.
Вопрос: контроль целостности на эти модули делать или нет, если они не в system32 ?
Почему этих модулей, входящих в состав этих двух АПК, и zlib1.dll нет в перечне утилиты skzi_info ? Было бы удобнее формировать файлы для расчета целостности СКАД.
5 Ответ от alart 2016-01-29 11:48:58
- alart
- Administrator
- Неактивен
- Откуда: Москва
- Зарегистрирован: 2011-07-28
- Сообщений: 287
Re: Сигнатура 5, hashfile.exe
Добрый день!
Контролировать целостность этих модулей нужно. Для создания списка можно запустить в командной строке в директории Windows команду
dir mfc80.dll,atl80.dll,msvcm80.dll,msvcp80.dll,msvcr80.dll /S /B > list.txt
Утилита skzi_info не предназначена для формирования списка файлов для расчета целостности.
6 Ответ от Erik 2016-01-31 19:05:51 (2016-01-31 19:08:07 отредактировано Erik)
- Erik
- New member
- Неактивен
- Зарегистрирован: 2016-01-27
- Сообщений: 6
Re: Сигнатура 5, hashfile.exe
Добрый день.
Будет ли достаточно поставить на КЦ модули (mfc80.dll,atl80.dll,msvcm80.dll,msvcp80.dll,msvcr80.dll), установленные со СКАД (смотрим по дате создания подкаталогов), а не все копииверсии с такими же именами, установленные с другим ПО в другие подкаталоги?
7 Ответ от alart 2016-02-01 13:06:54
- alart
- Administrator
- Неактивен
- Откуда: Москва
- Зарегистрирован: 2011-07-28
- Сообщений: 287
Re: Сигнатура 5, hashfile.exe
Да, достаточно контролировать целостность только тех модулей, которые устанавливаются со СКАД Сигнатура.
Сообщений 7
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
I noticed a strange behavior of the function ReadFile: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365467(v=vs.85).aspx
In some cases, ReadFile will fail with code 998 ERROR_NOACCESS
I tested with different buffer sizes for reading, the behavior changes.
It seems that the last ReadFile will fails only when there is a buffer larger than the remaining bytes to read, if the program was launched with a command longer than a certain size.
This is when it is compiled with /MTd otherwise, it always fails.
If it is the first ReadFile that is larger than the size of the file, it will not fail.
You can find the code below.
It only does this kind of behavior when I am on the disk created with subst w: c:work
When I launch the command from W: disk it fails, when launched from C: it works, even if the exe is on W: and also if I try to write on W:
Does someone know what is happening ?
When increasing the malloc size by the size of the buffer, it works. My guess is that ReadFile sometimes writes more than it needs to depending on many things, thus overflowing the buffer.
Tested on Window 7 Professional Service Pack 1 64 bits
With Visual Studio 2013 Community
user32.dll is 1,009,152 bytes
certUtil -hashfile «C:WindowsSystem32user32.dll»
SHA1 hash of file C:WindowsSystem32user32.dll:
35 49 41 91 2c e6 47 13 8e 48 02 f9 ac c3 df bc 80 c1 be 96
CertUtil: -hashfile command completed successfully.
kernel32.dll 1,163,264 bytes
certUtil -hashfile «C:WindowsSystem32kernel32.dll»
SHA1 hash of file C:WindowsSystem32kernel32.dll:
8a b7 90 d3 de cc 1e 2e 36 45 88 0d c8 ec df 61 75 97 bb 78
CertUtil: -hashfile command completed successfully.
Init cl with : «c:Program Files (x86)Microsoft Visual Studio 12.0VCvcvarsall.bat» x64
Build with command : cl test.cpp /MTd
Launch with command : test.exe ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
Launch with command : test.exe tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
Rename test.exe to test2.exe and
Launch with command : test2.exe tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
FAILS ERROR_NOACCESS (with a command of 94 characters or more)
Launch with command : test.exe tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
Launch with command : test.exe
SUCCEEDS (with a command of 93 characters or less)
Build with command : cl test.cpp
Launch with command : test.exe
FAILS ERROR_NOACCESS
#include <windows.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char** argv) { char* filename = "test.txt"; { // NOTE: Creating a 80 KiloBytes file // Changing the size of the file also changes the behavior HANDLE createdFile = CreateFileA(filename, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (createdFile == INVALID_HANDLE_VALUE) return 1; char buffer[1024]; DWORD written; memset(buffer, 't', sizeof(buffer)); for (int i = 0; i < 50; ++i) WriteFile(createdFile, buffer, sizeof(buffer), &written, 0); CloseHandle(createdFile); } HANDLE file = CreateFileA(filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (file == INVALID_HANDLE_VALUE) return 1; DWORD fileSize = GetFileSize(file, 0); // NOTE: Reading the file by chunks of 4 KiloBytes. // Will work with smaller sizes (in some cases) // Or buffer sizes bigger than the size of the file. DWORD bufferSize = 4 * 1024; char* buffer = (char*)malloc(fileSize); // Increasing the size will also fix it char* writeat = buffer; DWORD readBytes = 0; DWORD totalRead = 0; BOOL readSuccess = false; //bufferSize = fileSize + 1024; // Reading the entire file at once works while (ReadFile(file, writeat, bufferSize, &readBytes, 0)) { writeat += readBytes; // If this line is commented, all the ReadFile works totalRead += readBytes; if (readBytes == 0) { readSuccess = true; break; } //if (fileSize - totalRead < bufferSize) // When those 2 lines are commented the last ReadFile does not work //bufferSize = fileSize - totalRead; // If they are not commented, all the ReadFile works } DWORD err = GetLastError(); fprintf(stderr, "ERROR = %un", err); // 998 ERROR_NOACCESS CloseHandle(file); if (!readSuccess) fprintf(stderr, "FAILED !!!!!!n"); else fprintf(stderr, "SUCCESS !!n"); return 0; }
-
Edited by
Sunday, July 2, 2017 6:25 PM
grammar correction
G_Z 06.11.2004 03:22
Наблюдаю проблему с hashfile::open.
При попытке открыть/создать хэшфайл из/в несуществующ(ем/ий) каталог(е) получаю ошибку:
apr_sdbm_open(shared) error: Bad file descriptor (9)open
С открыть — ладно, понятно, что нечего в данном случае открывать.
Но смотрим доку, где написано:
^hashfile::open[имя файла]
Открывает имеющийся на диске файл или создает новый.
При этом при сохранении файла в несуществующий каталог обычна практика создания оного.
Ошибка, или недопонимание?
Версия Парсера 3,1,3.
- Закавыка с hashfile::open, G_Z [M] 06.11.2004 03:22
- Ответ, Sikoz 06.11.2004 08:27
- Спасибо. Ждёмс. (-), G_Z [M] 06.11.2004 13:50
- done, CVS|HEAD (-), Александр Петросян (PAF) [M] 23.12.2004 18:01
- Спасибо. Ждёмс. (-), G_Z [M] 06.11.2004 13:50
- Ответ, Sikoz 06.11.2004 08:27
Вы сталкиваетесь с ошибкой контрольной суммы при попытке извлечь файл RAR с помощью WinRAR? WinRAR — это популярный файловый архиватор для Windows с некоторыми замечательными функциями и инструментами. Он позволяет извлекать файлы RAR и ZIP на ПК. Однако некоторые пользователи жалуются, что не могут извлечь архив RAR из-за ошибки контрольной суммы.
Эта ошибка может быть результатом различных факторов. Вот некоторые из возможных причин:
- В большинстве случаев это происходит, если архив RAR, который вы хотите извлечь, поврежден или поврежден.
- Это также может произойти, если загрузка файла архива была прервана из-за слабого интернет-соединения.
- Другой потенциальной причиной этой ошибки является вмешательство вашего антивируса, который в конечном итоге прерывает процесс извлечения RAR.
- Если у вас недостаточно свободного места на диске, вы, вероятно, столкнетесь с этой ошибкой.
- Эта ошибка также может быть результатом поврежденных секторов на жестком диске.
- Неправильная установка приложения WinRAR также может вызвать эту ошибку.
Теперь, если вы также столкнулись с той же ошибкой, этот пост будет вам интересен. Здесь мы собираемся обсудить рабочие исправления, которые помогут вам избавиться от ошибки контрольной суммы в WinRAR. Итак, давайте проверим.
Если вы получаете сообщение об ошибке контрольной суммы при извлечении архива с помощью WinRAR, вы можете использовать следующие методы для исправления ошибки:
- Используйте опцию Сохранить поврежденные файлы.
- Архив ремонта.
- Повторно загрузите проблемный файл RAR.
- Временно отключите антивирус.
- Освободите немного места на диске.
- Исправьте поврежденные сектора на жестком диске.
- Удалите и переустановите WinRAR.
- Используйте альтернативу WinRAR.
1]Используйте параметр «Сохранить сломанные файлы».
WinRAR предоставляет специальную опцию, позволяющую извлечь поврежденный файл RAR. Эта опция называется «Сохранить поврежденные файлы». Итак, если ошибка возникает из-за того, что ваш архив сломан или поврежден, вы можете включить эту функцию и извлечь поврежденный файл RAR. Для этого вам просто нужно настроить параметры WinRAR. Вот шаги для извлечения поврежденного архива с помощью WinRAR:
- Во-первых, перейдите к файлу архива ZIP или RAR, который вы хотите извлечь, и щелкните его правой кнопкой мыши.
- Теперь в появившемся контекстном меню выберите опцию Извлечь файлы.
- Затем в открывшемся окне установите флажок «Сохранить поврежденные файлы» в разделе «Разное».
- Наконец, выберите место извлечения, нажмите кнопку ОК и посмотрите, исправлена ли ошибка или нет.
Если это не устранит ошибку для вас, мы рекомендуем использовать следующее исправление.
2]Восстановить архив
WinRAR также предлагает специальную функцию для восстановления поврежденного файла архива RAR. Таким образом, вы можете использовать его для восстановления файла RAR, а затем извлечь его, чтобы проверить, исправлена ли ошибка. Чтобы восстановить поврежденный файл архива, выполните следующие действия:
- Сначала щелкните правой кнопкой мыши поврежденный файл архива и выберите параметр «Открыть с помощью WinRAR».
- Теперь перейдите в меню «Инструменты» и выберите параметр «Восстановить архив».
- После этого выберите место вывода для сохранения фиксированного архива RAR или ZIP и нажмите кнопку ОК, чтобы начать восстановление архива.
- Когда процесс завершится, посмотрите, сможете ли вы распаковать архив без ошибки контрольной суммы.
Есть несколько бесплатных сторонних программ, которые позволяют восстанавливать архивы RAR. Вы можете использовать это бесплатное настольное приложение под названием Восстановление DataNumen RAR. Просто скачайте и установите его с официального сайта, а затем запустите. После этого перейдите на вкладку «Восстановить» и выберите исходный файл RAR, который вы хотите восстановить. Затем вы можете выбрать место назначения и нажать кнопку «Начать восстановление», чтобы начать процесс. Он даже позволяет вам восстановить сразу несколько поврежденных файлов RAR.
Чтение: Архив либо в неизвестном формате, либо поврежден.
3]Повторно загрузите проблемный файл RAR.
Эта ошибка может быть вызвана неполной или неправильной загрузкой исходного файла RAR. Или также может быть так, что в процессе извлечения были прерывания, и поэтому вы продолжаете получать эту ошибку. Следовательно, если сценарий применим, вы можете снова загрузить файл RAR в другую папку в вашей системе. Прежде чем сделать это, убедитесь, что ваше интернет-соединение стабильно и нет проблем с сетевым подключением. После того, как вы загрузили файл, извлеките его и посмотрите, устранена ли ошибка или нет.
4]Временно отключите антивирус
Возможно, вы имеете дело с этой ошибкой из-за вмешательства вашего антивируса. Иногда ваш сверхзащитный антивирусный пакет анализирует процесс или программу как потенциальную угрозу из-за ложного срабатывания. В результате процесс прерывается, и вы сталкиваетесь с такими ошибками. Так что, если это так, вы можете отключить антивирус на некоторое время, а затем попробовать распаковать файл RAR или ZIP. Посмотрите, устранена ли проблема. Если да, вы можете быть уверены, что ошибка контрольной суммы при использовании WinRAR была вызвана вашим антивирусом.
Не забудьте включить антивирусную защиту после успешного извлечения архива.
5]Освободите место на диске
Вам также необходимо убедиться, что на вашем диске достаточно свободного места для извлечения содержимого архива RAR. Эта ошибка может быть вызвана нехваткой места на диске. Следовательно, если сценарий применим, вы можете освободить место в своей системе для извлечения файлов из вашего архива.
Чтобы освободить место на диске, вы можете попробовать очистить временные и другие файлы кеша с помощью инструмента очистки диска Windows. Кроме того, отсканируйте дубликаты файлов в вашей системе и очистите их, чтобы освободить место. Кроме того, вы также можете удалить неиспользуемые файлы из вашей системы.
См. Слишком длинный путь. Ошибка 0x80010135 при извлечении zip-файла.
6]Исправить поврежденные сектора на жестком диске
Также может быть так, что ошибка возникает из-за поврежденных секторов на жестком диске. Итак, в этом случае восстановите поврежденные сектора на жестком диске и проверьте, можете ли вы распаковать архив без этой ошибки. Вы можете использовать средство проверки ошибок диска Windows CHKDSK, чтобы исправить поврежденные сектора на жестком диске. Вот как это использовать:
7]Удалите и переустановите WinRAR.
Если ни одно из приведенных выше решений вам не помогло, попробуйте удалить, а затем переустановить приложение WinRAR. Ошибка может быть вызвана поврежденной или неполной установкой самого приложения. Следовательно, вы можете удалить текущую копию WinRAR, которая повреждена, а затем установить новую копию приложения, чтобы избавиться от ошибки.
Чтобы удалить WinRAR, вы можете открыть приложение «Настройки» с помощью Win+I, а затем перейти на вкладку «Приложения». После этого нажмите «Установленные приложения» и найдите WinRAR в списке установленных приложений. Затем нажмите кнопку меню с тремя точками, затем выберите параметр «Удалить», а затем следуйте инструкциям для завершения процесса. После удаления приложения перезагрузите компьютер и загрузите последнюю версию WinRAR с официального сайта. Теперь вы можете установить его на свой компьютер, а затем проверить, можете ли вы извлечь архив RAR без ошибки контрольной суммы.
Читать: Windows не может завершить ошибку извлечения в Windows
8]Используйте альтернативу WinRAR
Если проблема не устранена, вы можете использовать альтернативу WinRAR для извлечения файла RAR. Существует множество бесплатных экстракторов архивов, которые позволяют извлекать архивы RAR. Итак, если WinRAR не работает, вы можете использовать бесплатное программное обеспечение, такое как 7-Zip, Extract Now и PeaZip. Также доступны некоторые бесплатные приложения Microsoft Store, которые можно использовать для извлечения файлов RAR.
Как вручную проверить контрольную сумму?
Чтобы проверить контрольную сумму файла, вы можете использовать встроенный в Windows инструмент командной строки под названием Windows Certutil. Вы можете просто открыть приложение командной строки, а затем ввести команду MD5 certutil -hashfile path-to-your-file, чтобы проверить контрольную сумму файла. Кроме того, вы также можете использовать любой из этих сторонних инструментов проверки целостности файлов для того же.
Как решить проблему с контрольной суммой CMOS?
Чтобы исправить ошибку контрольной суммы CMOS, вы можете попробовать сбросить настройки BIOS по умолчанию или обновить BIOS. Кроме того, проверьте батарею CMOS и при необходимости замените или замените ее. Кроме того, вы также можете выполнить автоматическое восстановление, чтобы исправить проблемы с компьютером, которые могут вызывать эту ошибку.