Программа RHash - вычислитель хэш сумм
На страницу 1, 2, 3 ... 11, 12, 13  След.
 
Начать новую тему   Ответить на тему    Список разделов форума АНИМЕГОРОДКА -> Техническая часть
Предыдущая тема :: Следующая тема  
Автор Сообщение
Aleksey



Зарегистрирован: 17.03.2003
Сообщений: 1371
Откуда: Перцк

Сообщение Добавлено: Вс 2005-08-14@11:42    Заголовок сообщения: Программа RHash - вычислитель хэш сумм Ответ

Консольная программа GetHash способна вычислять CRC32, MD5, SHA1 и eDonkey хэш суммы файла одновременно. Результат сохраняется либо в одном из предопределённых форматов (SFV-подобный, BSD-MD5-подобный), либо в заданном пользователем формате.

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

GetHash написана на чистом C, занимает мало места (<20Kb), и компилируется, под Windows, Linux и BSD.

Примечание: позднее программа была переименована в RHash.
_________________
Теперь я умею читать ваши мысли, теперь я могу проходить сквозь стены!
А завтра, когда меня станет больше, я выйду отсюда и всем отомщу!
Вернуться к началу
Профиль ЛС Сайт
Aleksey



Зарегистрирован: 17.03.2003
Сообщений: 1371
Откуда: Перцк

Сообщение Добавлено: Пт 2005-09-02@23:18    Заголовок сообщения: Ответ

Новая версия GetHash v0.6!

Изменения:
- Исправлен баг: файлы в Windows открывались не в бинарном режиме, отчего суммы считались неверно.
- В Makefile добавлена цель 'make test' (специально для Avallac'а ^___~ ), чтобы любой мог проверить корректно ли работает программа на его железе/операционке.

[ Скачать ]
_________________
Теперь я умею читать ваши мысли, теперь я могу проходить сквозь стены!
А завтра, когда меня станет больше, я выйду отсюда и всем отомщу!
Вернуться к началу
Профиль ЛС Сайт
Aleksey



Зарегистрирован: 17.03.2003
Сообщений: 1371
Откуда: Перцк

Сообщение Добавлено: Сб 2006-01-14@19:27    Заголовок сообщения: Ответ

Тихо и незаметно вышла версия GetHash 0.7.

Изменения:
- добавленна опция --recursive для вычисления сумм ко всем файлам из заданного дерева директорий
- добавленна опция --ed2k-link для генерации и вывода списка eDonkey линков
- исправлен вывод в sfv формате
- версия для Linux теперь содержит manpage
_________________
Теперь я умею читать ваши мысли, теперь я могу проходить сквозь стены!
А завтра, когда меня станет больше, я выйду отсюда и всем отомщу!
Вернуться к началу
Профиль ЛС Сайт
Лэн



Зарегистрирован: 21.04.2003
Сообщений: 2159
Откуда: hanet/nsunet ftp://10.168.132.81/

Сообщение Добавлено: Сб 2006-01-14@21:16    Заголовок сообщения: Ответ

Такая мелкая трабла в вин32. Если имя файла локализовано, то в выводе на консоль может использоваться кодовая страница, отличная от той, в которой подаются имена файлов и прочее (например, для русского языка, 866-я и 1251-я соответственно). Выглядит это так:

L:\Video>gethash --simple "(Пальчиков Е.И.) жидкий азот, опасно, не повторять!.asf"
(╧ры№ўшъют ┼.╚.) цшфъшщ рчюЄ, юярёэю, эх яютЄюЁ Є№!.asf cee694b3 417c4a2cddedd379e4b7ea0a9d2c4909 da8c7fc7d50665c701732179a1c6fb0261da464a 6d226ef9dd5b26e470b49e69af991bbf


По идее стоит преобразовывать строки перед выводом с помощью библиотечной функции WinApi AnsiToOEM. С другой стороны, если вывод перенаправить в файл, то по хорошему должно писаться не в ОЕМной кодировке... Можно ли узнать средствами Win32, перенаправлен ли вывод?

Убрал таг "[code]", чтоб избавиться от полосы прокрутки снизу /Aleksey
_________________
Terebi anime o miru toki wa, kanarazu hankachi o youi-shite oite kudasai ne
Вернуться к началу
Профиль ЛС E-mail Сайт
Centaur



Зарегистрирован: 29.03.2003
Сообщений: 1277
Откуда: HNet 10.168.60.21

Сообщение Добавлено: Сб 2006-01-14@21:22    Заголовок сообщения: Ответ

IMHO консольное приложение независимо от того, перенаправлен вывод или нет, должно выводить в OEM’е. И если это не случается само по себе, то нужно сказать SetFileApisToOEM().

Либо, как вариант, нужно переводить всё на Unicode. Но это ещё не устоявшаяся практика.
_________________
jabber: yurivkhan gmail com
Вернуться к началу
Профиль ЛС
Aleksey



Зарегистрирован: 17.03.2003
Сообщений: 1371
Откуда: Перцк

Сообщение Добавлено: Сб 2006-01-14@21:31    Заголовок сообщения: Ответ

Лэн писал(а):
Можно ли узнать средствами Win32, перенаправлен ли вывод?
Из MSDN:
int _isatty( int handle );

_isatty returns a nonzero value if the descriptor is associated with a character device. Otherwise, _isatty returns 0.

Код:
/* ISATTY.C: This program checks to see whether
 * stdout has been redirected to a file.
 */

#include <stdio.h>
#include <io.h>

void main( void )
{
   if( _isatty( _fileno( stdout ) ) )
      printf( "stdout has not been redirected to a file\n" );
   else
      printf( "stdout has been redirected to a file\n");
}

_________________
Теперь я умею читать ваши мысли, теперь я могу проходить сквозь стены!
А завтра, когда меня станет больше, я выйду отсюда и всем отомщу!


Последний раз редактировалось: Aleksey (Сб 2006-01-14@22:40), всего редактировалось 1 раз
Вернуться к началу
Профиль ЛС Сайт
Aleksey



Зарегистрирован: 17.03.2003
Сообщений: 1371
Откуда: Перцк

Сообщение Добавлено: Сб 2006-01-14@23:03    Заголовок сообщения: Ответ

Centaur писал(а):
IMHO консольное приложение независимо от того, перенаправлен вывод или нет, должно выводить в OEM’е. И если это не случается само по себе, то нужно сказать SetFileApisToOEM().
Если подумать, вывод консольного приложения может быть перенаправлен на вход другому, например, sort или grep, и выводить тогда действительно нужно в DOS'овской кодировке. Жалко, что в виндовых прогах файлы с суммами читаться не будут. Может наплевать на grep и sort и в файлы таки в виндовой сохранять?
_________________
Теперь я умею читать ваши мысли, теперь я могу проходить сквозь стены!
А завтра, когда меня станет больше, я выйду отсюда и всем отомщу!
Вернуться к началу
Профиль ЛС Сайт
Лэн



Зарегистрирован: 21.04.2003
Сообщений: 2159
Откуда: hanet/nsunet ftp://10.168.132.81/

Сообщение Добавлено: Вс 2006-01-15@01:07    Заголовок сообщения: Ответ

Может, сохранение в файл сделать отдельным ключиком, а не только перенаправлением вывода? И, мне кажется, если с этим ключиком, то пусть по умолчанию выводит в формате, полезном при записи в файл (.sfv там, например), а, если без этого ключика (то есть пользователь хочет посмотреть на цифры, а не сохранить, например, для визуального сравнения с цифрой в имени файла), то пусть по умолчанию выводит в более юзер-френдли формате. По меньшей мере, чтобы перед каждой суммой писалось, что это за сумма - CRC32, MD5, etc. А то так уйма цифр без объяснений сходу пугает :)
_________________
Terebi anime o miru toki wa, kanarazu hankachi o youi-shite oite kudasai ne
Вернуться к началу
Профиль ЛС E-mail Сайт
Aleksey



Зарегистрирован: 17.03.2003
Сообщений: 1371
Откуда: Перцк

Сообщение Добавлено: Вс 2006-01-15@12:21    Заголовок сообщения: Ответ

Лэн писал(а):
Может, сохранение в файл сделать отдельным ключиком, а не только перенаправлением вывода?
В linux/*bsd проблем с консольной кодировкой нет, и там такой ключ лишний. Не очень хочется чтоб windows версия отличалась linux'овой.

Лэн писал(а):
И, мне кажется, если с этим ключиком, то пусть по умолчанию выводит в формате, полезном при записи в файл (.sfv там, например)
Лучше сделать так: если программу переименовать, так чтобы её имя содержало sfv, то это будет срабатывать как опции "--crc32 --sfv" (т.е. вывод в обычном sfv формате).

Лэн писал(а):
По меньшей мере, чтобы перед каждой суммой писалось, что это за сумма - CRC32, MD5, etc. А то так уйма цифр без объяснений сходу пугает :)
Вместо этого опцией --printf можно настраивать вывод. Например, команда gethash --printf="%p crc:%C md5:%M sha1:%H ed2k:%E\n" * выдаёт:
test.txt crc:EF29F34C md5:313C6A0ECEB342331165DD0E72FBF84B sha1:F04C8DEEAF2CE9A52082DAA795C3872759674147 ed2k:E48CD1F090AC73876CA6BC7CCC5E8213
_________________
Теперь я умею читать ваши мысли, теперь я могу проходить сквозь стены!
А завтра, когда меня станет больше, я выйду отсюда и всем отомщу!
Вернуться к началу
Профиль ЛС Сайт
Сифси



Зарегистрирован: 24.03.2003
Сообщений: 1901

Сообщение Добавлено: Вс 2006-01-15@14:52    Заголовок сообщения: Ответ

Цитата:
Лучше сделать так: если программу переименовать, так чтобы её имя содержало sfv, то это будет срабатывать как опции "--crc32 --sfv" (т.е. вывод в обычном sfv формате).
Никогда с подобными извращениями не встречался, чтобы программа работала по-разному в зависимости от названия исполняемого файла. *.bat-файлы должны решать эту проблему.
_________________
Never going to get to France.
Mary, Queen of Chance, will they find you?
Never going to get to France.
Could a new romance ever bind you?
Вернуться к началу
Профиль ЛС E-mail
Centaur



Зарегистрирован: 29.03.2003
Сообщений: 1277
Откуда: HNet 10.168.60.21

Сообщение Добавлено: Вс 2006-01-15@16:54    Заголовок сообщения: Ответ

Это известный pattern в Un*x-like операционках. Пишется исполняемый файл, у которого общая разбиралка командной строки и общие функции, а потом на него делают тучу хардлинков — bzip2, bunzip2, and bz2cat, например.
_________________
jabber: yurivkhan gmail com
Вернуться к началу
Профиль ЛС
Сифси



Зарегистрирован: 24.03.2003
Сообщений: 1901

Сообщение Добавлено: Вс 2006-01-15@17:02    Заголовок сообщения: Ответ

Ясно. :-)
_________________
Never going to get to France.
Mary, Queen of Chance, will they find you?
Never going to get to France.
Could a new romance ever bind you?
Вернуться к началу
Профиль ЛС E-mail
Aleksey



Зарегистрирован: 17.03.2003
Сообщений: 1371
Откуда: Перцк

Сообщение Добавлено: Пн 2006-01-23@10:13    Заголовок сообщения: Ответ

Пока все флеймят ;), вышла очередная версия программы GetHash 0.8!

Добавления:
- добавлен ключ --check (или -c) для провеки sfv файлов
- в Windows версии вывод теперь происходит в консольной (DOS'овской) кодировке, для вывода в ANSI кодировке CP1251 добавлен ключ --ansi
- в Windows версию добавлена документация (man-page в html) и примеры использования в виде *.bat файлов
- имя программы теперь проверяется на наличие подстрок sfv,md5,sha1,ed2k для установки дефолтных опций
- исправлено компилирование под FreeBSD на AMD64

Большое спасибо Centaur'у, Лэну, Сифси и Avallac'у за инспирацию идей по улучшению! ^___^
_________________
Теперь я умею читать ваши мысли, теперь я могу проходить сквозь стены!
А завтра, когда меня станет больше, я выйду отсюда и всем отомщу!
Вернуться к началу
Профиль ЛС Сайт
Александр



Зарегистрирован: 25.03.2003
Сообщений: 2780
Откуда: 10.3.120.102

Сообщение Добавлено: Пн 2006-01-23@10:38    Заголовок сообщения: Ответ

Иногда нужно посчитать CRC для имеющейся части какого-нить сериала. Через некоторое время выйдут новые серии и хочется дополнить sfv-файл контрольными суммами для этих серий. Можно научить программу не пересчитывать заново контрольные суммы для тех файлов, которые в sfv-шке уже записаны, а считать CRC только для новых файлов?
Вернуться к началу
Профиль ЛС
Aleksey



Зарегистрирован: 17.03.2003
Сообщений: 1371
Откуда: Перцк

Сообщение Добавлено: Пн 2006-01-23@14:24    Заголовок сообщения: Ответ

Конечно можно, только это не очень быстро, учитывая что программа пишется на C. ;)
_________________
Теперь я умею читать ваши мысли, теперь я могу проходить сквозь стены!
А завтра, когда меня станет больше, я выйду отсюда и всем отомщу!
Вернуться к началу
Профиль ЛС Сайт
Показать сообщения:   
Начать новую тему   Ответить на тему    Список разделов форума АНИМЕГОРОДКА -> Техническая часть Часовой пояс: GMT + 6
На страницу 1, 2, 3 ... 11, 12, 13  След.
Страница 1 из 13

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB
Appalachia Theme © 2002 Droshi's Island