yar229 / WebDavMailRuCloud

WebDAV cloud.mail.ru ...& Yandex.Disk | WebDAV Облако Mail.Ru Сетевой Диск
MIT License
485 stars 58 forks source link

Как узнать хеш файла по версии Mail Ru Cloud? #196

Closed kybyx closed 4 years ago

kybyx commented 4 years ago

Вопрос по команде join #filehash >>join #filehash filesize [/][path]filename Clone cloud.mail.ru file to your account by known hash and size

Я так понимаю этот хеш не обычный SHA1 а модифицированый SHA1, со специями от мейлру кодеров

  1. Есть файл у меня на HDD диске, как посчитать для него MailRu Хеш?
  2. Есть публичная ссылка на файл, как узнать его MailRu Хеш?
  3. Можно увидеть реальный рабочий пример этой команды с конкретным хешем и размером файла?
yar229 commented 4 years ago

Я так понимаю этот хеш не обычный SHA1 а модифицированый SHA1, со специями от мейлру кодеров

Да, так и есть.

  1. Есть файл у меня на HDD диске, как посчитать для него MailRu Хеш?
  2. Есть публичная ссылка на файл, как узнать его MailRu Хеш?

На неделе сделаю отдельный приклад для подсчёта хеша.

  1. Можно увидеть реальный рабочий пример этой команды с конкретным хешем и размером файла?

С предыдущим пунктом

kybyx commented 4 years ago

А как им пользоваться этим прикладом?

yar229 commented 4 years ago

Пока не выкладывал в релизе Но если соберёте сами, то

hasher.exe <filename1> [filename2] [filename...] --protocol WebM1Bin
yar229 commented 4 years ago

В версии 1.12.0.0 выложил утилиту hasher.exe

Hasher.exe usage

  --files            (Group: sources) Filename(s)/wildcard(s) separated by space
  --lists            (Group: sources) Text files with wildcards/filenames separated by space
  --protocol         (Default: WebM1Bin) Cloud protocol to determine hasher
  -r, --recursive    (Default: false) Perform recursive directories scan
  --help             Display this help screen.
  --version          Display version information.
yar229 commented 4 years ago

Вопрос по команде join #filehash >>join #filehash filesize [/][path]filename Clone cloud.mail.ru file to your account by known hash and size

  1. Можно увидеть реальный рабочий пример этой команды с конкретным хешем и размером файла?

Например, мы знаем

Выполняем

>>join #1A793474C05B0B81377A13024CB7ADE89C326E2C 138002 /5/new_picture.jpg

и в облаке появится файл /5/new_picture.jpg

yar229 commented 4 years ago

2. Есть публичная ссылка на файл, как узнать его MailRu Хеш?

Вынесу в отдельную задачу, подумаю как-нибудь

kybyx commented 4 years ago

>>join #1A793474C05B0B81377A13024CB7ADE89C326E2C 138002 /5/new_picture.jpg Спасибо работает, если заранее создана папка 5 :)

kybyx commented 4 years ago

В версии 1.12.0.0 выложил утилиту hasher.exe

Супер! спасибо большое.. Пожелания убрать из вывода пять_пробелов и mrcsha1 одного пробела достаточно и заменить абсолютное имя на относительное что бы при запуске hasher --files С:\files\to\* вместо С:\files\to\SamplesImages\yeld-harvestering.jpg выводилось /SamplesImages/yeld-harvestering.jpg тогда в батнике парсящем вывод будет проще формировать строки типа >>join #23D43740AEAB609A71E5A55911F0BB1F415A589F 1175866 /SamplesImages/yeld-harvestering.jpg

yar229 commented 4 years ago

Пожелания убрать из вывода пять_пробелов

Это не пробелы, выводится tab. Заменять не стоит, поскольку, например, в пути к файлу могут быть пробелы

и mrcsha1

Тоже убирать не стоит, поскольку для облака может быть нужен не один хэш, например, для Яндекс.Диска

Возможно, как-нибудь сделаю возможность настраивать формат вывода в командной строке ключами.

yar229 commented 4 years ago

и заменить абсолютное имя на относительное

в командной строке может быть указано сразу несколько файлов/масок из разных каталогов, поэтому при выводе относительного пути будет непонятно, какой именно файл.

kybyx commented 4 years ago

в командной строке может быть указано сразу несколько файлов/масок из разных каталогов, поэтому при выводе относительного пути будет непонятно, какой именно файл.

ок

Тоже убирать не стоит, поскольку для облака может быть нужен не один хэш, например, для Яндекс.Диска

Тогда я нашёл багу ибо не работает если указать протокол яндекса :) C:\progz\WebDAVCloudMailRu\1.12.1.2\Hasher.exe --protocol YadWeb --files C:\temp\bookz\book.pdf

Необработанное исключение: System.AggregateException: Произошла одна или несколько ошибок. ---> System.Security.Authenti
cation.AuthenticationException: YadAuthLoginRequest error
   в YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebAuth.<MakeLogin>d__3.MoveNext()
   --- Конец трассировки внутреннего стека исключений ---
   в System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   в YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.<>c__DisplayClass4_0.<.ctor>b__0(YadWebAuth auth)
   в System.Lazy`1.CreateValue()
   в System.Lazy`1.LazyInitValue()
   в YaR.Clouds.Common.Cached`1.RefreshValueIfNeeded()
   в YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo..ctor(IWebProxy proxy, IBasicCredentials creds)
   в YaR.Clouds.Base.Repos.RepoFabric.Create()
   в Hasher.Program.<>c.<Main>b__0_0(CommandLineOptions options)
   в Hasher.Program.Main(String[] args)

Вообще не знал что у яндекса есть свой хеш. По хешу яндекса тоже можно джоинить файлы?

yar229 commented 4 years ago

Вообще не знал что у яндекса есть свой хеш. По хешу яндекса тоже можно джоинить файлы?

Он sha1 и (кажется) md5 считает. Вероятно, можно, не разбирался с этим.