Hashfile exe ошибка 1006

Перейти к содержимому раздела

Валидата

Форум компании

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Страницы 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
          • пример не работает — ни класс, ни просто код :(, Kex 16.03.2006 21:54
            • Если нужно без БД, G_Z [M] 16.03.2006 22:13
            • то-же самое можно хранить в SQL табличке (-), Misha v.3 [M] 16.03.2006 21:56
  1. ksu_ant

    New Member

    Публикаций:

    0

    Регистрация:
    28 сен 2005
    Сообщения:
    273

    Здравствуйте!
    Возникла необходимость мониторить запуск файлов в системе. Сделал SDT перехваты. Нужно контролировать неизменность файлов. Для этого попытался считать хэш (функции рабочие).

    1. NTSTATUS HashFile(CHAR *hash,UNICODE_STRING *fname)

    2.     FILE_STANDARD_INFORMATION fsi;

    3.     InitializeObjectAttributes (&oa, fname, OBJ_CASE_INSENSITIVE , NULL, NULL);

    4.     status = ZwCreateFile(&SourceFileHandle, FILE_READ_DATA, &oa, &iosb, 0, FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0);

    5.     if (status==STATUS_SUCCESS)

    6.         status=ZwQueryInformationFile(SourceFileHandle,&iosb,&fsi,sizeof(fsi),FileStandardInformation);

    7.         if (status==STATUS_SUCCESS)

    8.                 memset(&Buffer, 0, sizeof(Buffer));

    9.                 status = ZwReadFile(SourceFileHandle, NULL, NULL, NULL, &iosb, &Buffer, BufferSize, NULL, NULL);

    10.                 if (status == STATUS_SUCCESS)

    11.                     sha256_write(&shctx, &Buffer[0],iosb.Information);

    12.             } while ( NT_SUCCESS(status) );

    13.             memcpy(dest, &shctx.sha_out, 32);

    14.         ZwClose(SourceFileHandle);

    Также — строка пишется в файл:

    1. void WriteDataToLog(CHAR *LogStr)

    2.         ZwWriteFile (hLogFile, 0, NULL, NULL, &iosb,s, strlen(s), NULL, NULL);

    Но, видимо из-за частых операций работы с файлами — возникает BSOD (думаю, что происходят несколько попыток открытия и чтения одного файла).
    Дамп:

    1. *******************************************************************************

    2. *******************************************************************************

    3. UNEXPECTED_KERNEL_MODE_TRAP (7f)

    4. This means a trap occurred in kernel mode, and it’s a trap of a kind

    5. that the kernel isn’t allowed to have/catch (bound trap) or that

    6. is always instant death (double fault).  The first number in the

    7. bugcheck params is the number of the trap (8 = double fault, etc)

    8. Consult an Intel x86 family manual to learn more about what these

    9. traps are. Here is a *portion* of those codes:

    10.         use .tss on the part before the colon, then kv.

    11. Else if kv shows a trapframe

    12.         .trap on the appropriate frame will show where the trap was taken

    13.         (on x86, this will be the ebp that goes with the procedure KiTrap)

    14. kb will then show the corrected stack.

    15. Arg1: 00000008, EXCEPTION_DOUBLE_FAULT

    16. ***** Kernel symbols are WRONG. Please fix symbols to do analysis.

    17. FAULTING_MODULE: 804d0000 nt

    18. DEBUG_FLR_IMAGE_TIMESTAMP:  3b7de38f

    19. DEFAULT_BUCKET_ID:  DRIVER_FAULT

    20. LAST_CONTROL_TRANSFER:  from 804d6b8f to 804fc1bb

    21. WARNING: Stack unwind information not available. Following frames may be wrong.

    22. 80539160 804d6b8f 0000007f 00000008 80042000 nt!KeBugCheckEx+0x19

    23. 00000000 00000000 00000000 00000000 00000000 nt!Kei386EoiHelper+0x14d5

    24. STACK_COMMAND:  .bugcheck ; kb

    25. FOLLOWUP_NAME:  MachineOwner

    Кто сможет помочь разобраться? Буду благодарен.

  2. wasm_test

    wasm test user

    Публикаций:

    0

    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582

    у тебя процессор летит к еб..ням (double fault), какие там доступы :lol:

  3. ksu_ant

    New Member

    Публикаций:

    0

    Регистрация:
    28 сен 2005
    Сообщения:
    273

    Вот непонятно, из-за чего это… Если нет файловых операций — все работает. А нельзя ли проверить — открыт ли уже файл с помощью функций ZwCreateFile/ZwOpenFile, чтобы не открывать его повторно? Что-то я читал про синхронный и асинхронный режимы чтения в ядре — не совсем понял. Кто этим пользовался?

  4. tchunya

    New Member

    Публикаций:

    0

    Регистрация:
    13 ноя 2008
    Сообщения:
    29

    Чего перехватываем-то? Zw/NtCreateFile? Защита от рекурсивного вызова перехваченной функции есть?

  5. slesh

    New Member

    Публикаций:

    0

    Регистрация:
    6 фев 2009
    Сообщения:
    214

    Нуда, как сказал tchunya возможно ты из хука вызываешь похуканную функцию в твоем случае ZwCreateFile
    и попадаешь опять же на хук и опять всё повторяется.

    Как вариант можно сделать проще:
    1) В хуке ZwCreateFile вызывать оригинальный адрес функции, чтобы файл открылся. Затем смотреть на права доступа на открытие. в твоем случае должны быть хотя бы права на чтение.
    2) Далее ты юзаешь полученный хендл для вычисления хеша файла
    3) Далее ставишь позицию указателя опять на начало файла.
    4) Принимаешь правильное действие в зависимости от полученного хеша и оригинального.
    5) возвращаешь результат (хендл)

    3 и 4 пункт могут поменяться местами, в зависимости от того что ты делаешь при проверке.

  6. wasm_test

    wasm test user

    Публикаций:

    0

    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582

    slesh
    Zw* вообще хукаьт не надо. хукать надо Nt*. разумеется, с защитой от рекурсивного вызова хука.

  7. slesh

    New Member

    Публикаций:

    0

    Регистрация:
    6 фев 2009
    Сообщения:
    214

    2 Great тупанул, ну я и имею в виду Nt* которая в SDT

  8. А чем простые нотификаторы не устраивают вроди PsSetCreateProcessNotifyRoutine, PsSetLoadImageNotifyRoutine?

  9. wasm_test

    wasm test user

    Публикаций:

    0

    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582

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

  10. x64

    New Member

    Публикаций:

    0

    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия

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

  11. wasm_test

    wasm test user

    Публикаций:

    0

    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582

    x64
    Патчить — это как-то криво, согласись :) Файловые фильтры это да, но я про нотификаторы PsSetXXXNotifyRoutine говорил. И не только для Vista+, а для всех)

  12. Вобще наверное рулит:
    1. нотификаторы от PsSetXXXNotifyRoutine
    2. перехват в SSDT
    3. файловые фильтры

    чем собственно аверы и владеют

  13. ksu_ant

    New Member

    Публикаций:

    0

    Регистрация:
    28 сен 2005
    Сообщения:
    273

    tchunya slesh
    Именно их.
    Нет, так как писал не я и я теперь разбираюсь в проблеме. Я тоже подумал про рекурсивный вызов, спасибо за идеи, буду пробовать.

    Great
    Точно, это тоже надо.
    Всем большое спасибо, Вы подтвердили мои догадки — теперь мне проще будет думать, так как проблема локализована — буду пробовать.

Profile picture for user Олег

Windows Terminal cmd

Вычислить хеш-сумму файла в Windows 10 можно с помощью встроенной утилиты certutil с параметром -hashfile. Команда позволяет создать и отобразить криптографический хэш файла.

Синтаксис:

CertUtil [Параметры] -hashfile InFile [HashAlgorithm]

Справку по работе с хеш-суммами можно запросить командой:

certutil -hashfile -?

hash

Хэш-алгоритмы:

  • MD2
  • MD4
  • MD5
  • SHA1
  • SHA256
  • SHA384
  • SHA512

Пример:

certutil -hashfile "C:distribWindows10Upgrade24074.exe" MD5

hash

Вывести только хэш:

certutil -hashfile "C:distribWindows10Upgrade24074.exe" MD5 | findstr ^[0-9a-f]$

hash

Хеш-суммы в контекстном меню Windows

Если лень возиться с командной строкой, можно добавить вычисление хеш-сумм в контекстное меню Windows.

Хеш-суммы в контекстном меню Windows (MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512)

Зажимаем Shift и кликаем правой кнопкой мыши на файл, результат выглядит так:

hash

В контекстном меню появляется пункт «Хеш-сумма файла». При наведении отображается список поддерживаемых алгоритмов. Выбираем алгоритм, открывается командная строка с вычисленной хеш-суммой:

hash

dragalur

0 / 0 / 0

Регистрация: 12.11.2019

Сообщений: 8

1

NASM

Открытие файла на чтение завершается ошибкой

22.02.2020, 17:41. Показов 2012. Ответов 10

Метки assembler, linux, sasm (Все метки)


Нужно открыть текстовый файл для чтения, компилирует нормально при запуске завершается с ошибкой.
Как исправить?

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
%include "io.inc"
 
section .data
file db "text.txt",0
O_APPEND equ 2000o
 
section .bss
descriptor resb 4
 
section .start
global CMAIN
CMAIN:
 
mov eax,5 
mov ebx,file 
mov ecx,2 
mov edx,O_APPEND
int 0x80   
mov [descriptor],eax
 
mov eax,3     
mov ebx,[descriptor] 
mov ecx,2
mov edx,200 
int 0x80 
 
mov eax,6   
mov ebx,[descriptor]   
int 0x80

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

ФедосеевПавел

Модератор

Эксперт по электронике

8276 / 4180 / 1595

Регистрация: 01.02.2015

Сообщений: 12,987

Записей в блоге: 3

22.02.2020, 17:59

2

А вы уверены, что выставляя режим открытия

Assembler
17
mov edx,O_APPEND

открываете файл на чтение?

Добавлено через 1 минуту
И почему после открытия файла не проверяете успешность этого открытия, а переходите к обработке файла?

0

dragalur

0 / 0 / 0

Регистрация: 12.11.2019

Сообщений: 8

22.02.2020, 18:16

 [ТС]

3

Режим вроде как изменил,проверку не знаю как делать если скинете код буду благодарен.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
%include "io.inc"
 
section .data
file db "text.txt",0
 
O_RDONLY equ 0
O_WRONLY equ 1
O_RDWR equ 2
O_APPEND equ 2000o
 
section .bss
descriptor resb 4
section .start
global CMAIN
CMAIN:
 
mov eax,5 
mov ebx,file 
mov ecx,2 
mov edx,O_RDONLY
int 0x80   
mov [descriptor],eax
 
mov eax,3     
mov ebx,[descriptor] 
mov ecx,2
mov edx,200 
int 0x80 
 
mov eax,6   
mov ebx,[descriptor]   
int 0x80

0

ФедосеевПавел

Модератор

Эксперт по электронике

8276 / 4180 / 1595

Регистрация: 01.02.2015

Сообщений: 12,987

Записей в блоге: 3

22.02.2020, 18:46

4

Не по теме:

Я совсем не умею программировать под Linux. Только в общих чертах представляю.

После изменения режима — каков результат?

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

Для аналогичной функции
— в DOS результат передаётся через флаг переноса

Кликните здесь для просмотра всего текста

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
        ;1.     открытие исходного файла (функция 3DH);
        mov     ah,     3Dh
        mov     al,     00h             ;открыть для чтения
        lea     dx,     InFileName
        int     21h
        jnc     @@InFileOpenOk ;если открыли - запомнить описатель и обработать файл
        mov     ah,     09h       ;если ошибка - вывести сообщение об ошибке
        lea     dx,     [errFileOpen]
        int     21h
        jmp     @@Exit
@@InFileOpenOk:
        mov     InFileHandler,  ax

— в Windows описатель (дескриптор) файла при ошибке равен какой-то известной константе INVALID_HANDLE_VALUE

Кликните здесь для просмотра всего текста

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        ;открытие файла на чтение
        mov     [hFile],        INVALID_HANDLE_VALUE
        invoke  CreateFile,
                        ADDR aszFileName,      ;file name
                        GENERIC_READ,          ;open for reading
                        0,                     ;do not share
                        NULL,                  ;default security (no security)
                        OPEN_EXISTING,         ;existing file only
                        FILE_ATTRIBUTE_NORMAL, ;normal file
                        NULL                    ;no attr. template
        mov     [hFile],        eax
        cmp     eax,    INVALID_HANDLE_VALUE
        jne     @@ReadFromFile
        invoke  WriteConsole, hConsoleOutput, ADDR aszErrorFileOpen,
                LENGTHOF aszErrorFileOpen - 1, ADDR BufLen, NULL
        jmp     @@CloseFile
        ;чтение файла и вывод на экран
@@ReadFromFile:

— в Linux — я не знаю

0

Прощай, Мир!

1672 / 829 / 253

Регистрация: 26.05.2012

Сообщений: 3,057

22.02.2020, 18:52

5

Цитата
Сообщение от dragalur
Посмотреть сообщение

O_APPEND equ 2000o

могу ошибаться, но что это за цифро-буквенная комбинация значит 2000o..
если восьмеричная система счисления, то почему именно она взята??

0

politoto

Модератор

1762 / 866 / 156

Регистрация: 23.07.2018

Сообщений: 2,927

Записей в блоге: 3

22.02.2020, 19:17

6

Цитата
Сообщение от dragalur
Посмотреть сообщение

при запуске завершается с ошибкой.

У каждой ошибки, кроме автора, есть адрес, имя и другие атрибуты.

Код

[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) +++

И что Вы пытались сделать?
Открыть файл, считать из него что-то?
Куда считать?

Для чего

Assembler
1
mov ecx,2

в 19-й строчке, и для чего в 26-й?

dragalur!
Почитать в общих чертах о распределении параметров системных вызовов linux по регистрам Вы можете,
выдав в терминале команду

Bash
1
man syscall

или

Bash
1
info syscall

Для i386 можно подсмотреть в Linux Syscall Reference
https://syscalls.kernelgrok.com/

0

Модератор

Эксперт по электронике

8276 / 4180 / 1595

Регистрация: 01.02.2015

Сообщений: 12,987

Записей в блоге: 3

22.02.2020, 19:31

7

Описание open
http://linuxdoc.ru/open-creat.html
http://syscalls.kernelgrok.com/

open, creat — открывают и, по возможности, создают файл или устройство
НАЗВАНИЕ
open, creat — открывают и, по возможности, создают файл
или устройство

СИНТАКСИС
#include
#include
#include

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);

ОПИСАНИЕ
Вызов open() используется, чтобы преобразовать путь к файлу в описатель файла (небольшое неотрицательно целое число, которое используется с вызовами read, write и т.п. при последующем вводе-выводе).

Если системный вызов завершается успешно, возвращенный файловый описатель является наименьшим описателем

, который еще не открыт процессом.
………………….
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

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

Цитата
Сообщение от proc3nt
Посмотреть сообщение

если восьмеричная система счисления, то почему именно она взята??

Это вопрос к авторам <fcntl.h>

Bash
1
2
3
4
5
6
cpp << end | tail -2
#include <fcntl.h>
O_RDWR
O_APPEND
 
end

Код

02
02000

0

dragalur

0 / 0 / 0

Регистрация: 12.11.2019

Сообщений: 8

22.02.2020, 20:05

 [ТС]

9

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

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
%include "io.inc"
section .data
file db "text.txt"
O_RDONLY equ 0
O_WRONLY equ 1
O_RDWR equ 2
O_CREAT equ 100o ;создание файла, если его нет
O_TRUNC equ 1000o ;очистка файла
O_APPEND equ 2000o ;добавление в конец файла
section .bss
descriptor resb 4 ;переменная для хранения дескриптора файла
section .start
global CMAIN
CMAIN:
mov eax,5
mov ebx,file
mov ecx, O_CREAT | O_TRUNC | O_RDONLY  ;режим доступа к файлу
mov edx, 2                             ;право доступа к файлу
int 80h                                ;открытие файла для записи
mov [descriptor],eax                   ;сохранения дескриптора файла
 
mov eax,3     ;чтение из файла
mov ebx,[descriptor] 
mov ecx,O_RDONLY  ;только для чтения
mov edx,200
int 0x80
 
mov eax,6
mov ebx,[descriptor]
int 80h      ;закрытие файла

Миниатюры

Открытие файла на чтение завершается ошибкой
 

0

Модератор

Эксперт по электронике

8276 / 4180 / 1595

Регистрация: 01.02.2015

Сообщений: 12,987

Записей в блоге: 3

22.02.2020, 20:34

10

Выполните по шагам. Увидите и дескриптор открытого файла (т.е. он вообще открылся или не найден)

Кроме того — куда вы читаете из файла?
Прочтите перечень параметров для каждой из функций в справке
http://syscalls.kernelgrok.com/
Вы не те параметры даёте функции чтения — read.

Вы не завершаете программу передачей управления операционке.

1

Модератор

1762 / 866 / 156

Регистрация: 23.07.2018

Сообщений: 2,927

Записей в блоге: 3

23.02.2020, 08:49

11

Можно ещё почитать прикреплённую тему в нашем подразделе
Системные вызовы в Linux

0

SegunPosad

Здравствуйте. Не могу понять. Простой код :

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 и присвоить только хэш-код переменной. Каков синтаксис для этого?

Мне нужно сгенерировать файл с тегами 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 и присвоить только хэш-код переменной. Каков синтаксис для этого?

IMO the count step in your batch is simpler to accomplish with a find /v /N «»

for /f "tokens=3 delims=: " %%A in (
  'find /V /N /C "" %listfile%'
) Do set NumLines=%%A

But sincs the list and the hashfile are recreated every time the batch is run, the intermediate steps aren’t necessary at all.
This stacked for — if — for will do it in one run:

@echo off
setlocal enabledelayedexpansion

:: Set the variables for this script.
set testfolder=c:testtest folder
set hashfile=c:testoutputmd5-hashes.csv

>%hashfile% (
  echo "File","MD5-hash"
  For /f "delims=" %%A in (
    'dir /s /b /a-d "%testfolder%"'
  ) Do If %%~sA Gtr 0 For /f "delims=" %%B in (
    'certutil -hashfile %%A MD5 ^|findstr /i ^[0-9a-f][0-9a-f].[0-9a-f][0-9a-f].[0-9a-f][0-9a-f]'
  ) Do Echo:"%%~A","%%~B"
)

This partial output happens to reference a tool which may be more suited to this task :-)

> type md5-hashes.csv
"File","MD5-hash"
"c:testmd5hashdeep.exe","23 03 ea 53 52 03 c7 93 05 49 0d 6c 20 be 84 54"
"c:testmd5hashdeep64.exe","66 5c cc 57 a8 4c 56 39 c4 e5 15 16 86 cc 04 32"
"c:testmd5md5deep.exe","23 03 ea 53 52 03 c7 93 05 49 0d 6c 20 be 84 54"
"c:testmd5md5deep64.exe","66 5c cc 57 a8 4c 56 39 c4 e5 15 16 86 cc 04 32"

IMO шаг подсчета в вашем пакете проще выполнить с помощью команды find /v /N «»

for /f "tokens=3 delims=: " %%A in (
  'find /V /N /C "" %listfile%'
) Do set NumLines=%%A

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

@echo off
setlocal enabledelayedexpansion

:: Set the variables for this script.
set testfolder=c:testtest folder
set hashfile=c:testoutputmd5-hashes.csv

>%hashfile% (
  echo "File","MD5-hash"
  For /f "delims=" %%A in (
    'dir /s /b /a-d "%testfolder%"'
  ) Do If %%~sA Gtr 0 For /f "delims=" %%B in (
    'certutil -hashfile %%A MD5 ^|findstr /i ^[0-9a-f][0-9a-f].[0-9a-f][0-9a-f].[0-9a-f][0-9a-f]'
  ) Do Echo:"%%~A","%%~B"
)

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

> type md5-hashes.csv
"File","MD5-hash"
"c:testmd5hashdeep.exe","23 03 ea 53 52 03 c7 93 05 49 0d 6c 20 be 84 54"
"c:testmd5hashdeep64.exe","66 5c cc 57 a8 4c 56 39 c4 e5 15 16 86 cc 04 32"
"c:testmd5md5deep.exe","23 03 ea 53 52 03 c7 93 05 49 0d 6c 20 be 84 54"
"c:testmd5md5deep64.exe","66 5c cc 57 a8 4c 56 39 c4 e5 15 16 86 cc 04 32"

Profile picture for user Олег

Windows Terminal cmd

Вычислить хеш-сумму файла в Windows 10 можно с помощью встроенной утилиты certutil с параметром -hashfile. Команда позволяет создать и отобразить криптографический хэш файла.

Синтаксис:

CertUtil [Параметры] -hashfile InFile [HashAlgorithm]

Справку по работе с хеш-суммами можно запросить командой:

certutil -hashfile -?

hash

Хэш-алгоритмы:

  • MD2
  • MD4
  • MD5
  • SHA1
  • SHA256
  • SHA384
  • SHA512

Пример:

certutil -hashfile "C:distribWindows10Upgrade24074.exe" MD5

hash

Вывести только хэш:

certutil -hashfile "C:distribWindows10Upgrade24074.exe" MD5 | findstr ^[0-9a-f]$

hash

Хеш-суммы в контекстном меню Windows

Если лень возиться с командной строкой, можно добавить вычисление хеш-сумм в контекстное меню Windows.

Хеш-суммы в контекстном меню Windows (MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512)

Зажимаем Shift и кликаем правой кнопкой мыши на файл, результат выглядит так:

hash

В контекстном меню появляется пункт «Хеш-сумма файла». При наведении отображается список поддерживаемых алгоритмов. Выбираем алгоритм, открывается командная строка с вычисленной хеш-суммой:

hash

Понравилась статья? Поделить с друзьями:
  • Hashcat separator unmatched ошибка
  • Hdrezka ошибка загрузки
  • Hdrezka ошибка 403
  • Hdd low level format tool ошибка 1117
  • Hdims13 fe01 ошибка f10