| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
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 |
|
| Вернуться к началу |
|
 |
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 |
|
| Вернуться к началу |
|
 |
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? |
|
| Вернуться к началу |
|
 |
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? |
|
| Вернуться к началу |
|
 |
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.  _________________ Теперь я умею читать ваши мысли, теперь я могу проходить сквозь стены!
А завтра, когда меня станет больше, я выйду отсюда и всем отомщу! |
|
| Вернуться к началу |
|
 |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|