Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Файл md5 как создать


Хэш-функция MD5 / Песочница / Хабр

Много на просторах интернета, в том числе на хабре, написано о различный хэш-функциях, однако, в данном топике я дам свой взгляд на алгоритм и реализацию MD5.
Что такое хэш-функция и чем её едят?

Хэш-функция предназначена для свертки входного массива любого размера в битовую строку, для MD5 длина выходной строки равна 128 битам. Для чего это нужно? К примеру у вас есть два массива, а вам необходимо быстро сравнить их на равенство, то хэш-функция может сделать это за вас, если у двух массивов хэши разные, то массивы гарантировано разные, а в случае равенства хэшей — массивы скорее всего равны.
Однако чаще всего хэш-функции используются для проверки уникальности пароля, файла, строки и тд. К примеру, скачивая файл из интернета, вы часто видите рядом с ним строку вида b10a8db164e0754105b7a99be72e3fe5 — это и есть хэш, прогнав этот файл через алгоритм MD5 вы получите такую строку, и, если хэши равны, можно с большой вероятностью утверждать что этот файл действительно подлинный (конечно с некоторыми оговорками, о которых расскажу далее).
Конкретнее о MD5

Не буду углубляться в историю создания, об этом можно почитать в википедии, однако отмечу что алгоритм был создан профессором Р. Риверстом в 1991 году на основе алгоритма md4. Описан этот алгоритм в RFC 1321
Алгоритм состоит из пяти шагов:
1)Append Padding Bits
В исходную строку дописывают единичный байт 0х80, а затем дописывают нулевые биты, до тех пор, пока длина сообщения не будет сравнима с 448 по модулю 512. То есть дописываем нули до тех пор, пока длина нового сообщения не будет равна [длина] = (512*N+448),
где N — любое натуральное число, такое, что это выражение будет наиболее близко к длине блока.
2)Append Length
Далее в сообщение дописывается 64-битное представление длины исходного сообщения.
3)Initialize MD Buffer
На этом шаге инициализируется буффер
word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10
Как можно заметить буффер состоит из четырех констант, предназначенный для сбора хэша.
4)Process Message in 16-Word Blocks
На четвертом шаге в первую очередь определяется 4 вспомогательные логические функции, которые преобразуют входные 32-битные слова, в, как ни странно, в 32-битные выходные.
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
Также на этом шаге реализуется так называемый «белый шум» — усиление алгоритма, состоящее 64 элементного массива, содержащего псевдослучайные числа, зависимые от синуса числа i:
T[i]=4,294,967,296*abs(sin(i))
Далее начинается «магия». Копируем каждый 16-битный блок в массив X[16] и производим манипуляции:
AA = A
BB = B
CC = C
DD = D
Затем происходят «чудесные» преобразования-раунды, которых всего будет 4. Каждый раунд состоит из 16 элементарных преобразований, которые в общем виде можно представить в виде [abcd k s i], которое, в свою очередь, можно представить как A = B + ((A + F(B,C,D) + X[k] + T[i])
A, B, C, D — регистры
F(B,C,D) — одна из логических функций
X[k] — k-тый элемент 16-битного блока.
T[i] — i-тый элемент таблицы «белого шума»

Приводить все раунды не имеет смысла, все их можно посмотреть тут
Ну и в конце суммируем результаты вычислений:
A = A + AA
B = B + BB
C = C + CC
D = D + DD
5) Output
Выводя побайтово буффер ABCD начиная с A и заканчивая D получим наш хэш.
Надежность

Существует мнение что взломать хэш MD5 невозможно, однако это неправда, существует множество программ подбирающих исходное слово на основе хэша. Абсолютное большинство из них осуществляет перебор по словарю, однако существуют такие методы как RainbowCrack, он основан на генерировании множества хэшей из набора символов, чтобы по получившейся базе производить поиск хэша.
Также у MD5, как у любой хэш-функции, существует такое понятие как коллизии — это получение одинаковых хэшей для разных исходных строк. В 1996 году Ганс Доббертин нашёл псевдоколлизии в MD5, используя определённый инициализирующий буффер (ABCD). Также в 2004 году китайские исследователи Ван Сяоюнь, Фен Дэнгуо, Лай Сюэцзя и Юй Хунбо объявили об обнаруженной ими уязвимости в алгоритме, позволяющей за небольшое время (1 час на кластере IBM p690) находить коллизии. Однако в 2006 году чешский исследователь Властимил Клима опубликовал алгоритм, позволяющий находить коллизии на обычном компьютере с любым начальным вектором (A,B,C,D) при помощи метода, названного им «туннелирование».

Прилагаю собственный пример реализации функции на C#:
md5.rar

Создать и расшифровать md5 online


MD5 - это алгоритм, позволяющий получить своего рода "отпечаток" исходной строки. Он спроектирован таким образом, чтобы из получившегося отпечатка нельзя было восстановить исходную строку (т.е. зашифровать можно, а расшифровать нет). Алгоритм широко используется при авторизации. Например, сайт может хранить и сравнивать только отпечатки паролей, но не сами пароли в открытом виде. Таким образом, в случае, если злоумышленник украдет базу данных сайта - он не сможет узнать исходный пароль.

В настоящее время MD5 считается устаревшим алгоритмом, т.к. он сравнительно ненадежен.

Раскодировать md5

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

Однако, можно попробовать воспользоваться одним из сервисов, хранящих заранее посчитанные сообщения. Возможно, в одном из них вы найдете сообщение для своего хеша:

Это интересно:

Пароли и логины владельцев Firefox выложили в общий доступ Автор md5crypt просит больше не пользоваться его скремблером Конец алгоритма MD5

Добавляем вычисление SHA-1 и MD5 хешей в контекстное меню файлов / Хабр

Доброго времени суток!
Как часто вы проверяете скачиваемые файлы на равенство хеш-сумм? Я — никогда. Но сегодня я почему-то решил порвать с этой порочной практикой и сделать свою жизнь более безопасной.
Согласитесь, основная причина не сравнивать хеш-сумму файла — это лень. Нужно искать какую-нибудь программу, запускать ее, натравливать на файл, и это просто уйма действий. Как можно упростить эту процедуру? Я не придумал ничего лучше, чем добавить в контекстное меню файла опцию «Посчитать хеш». Интересующимся предлагаю краткую инструкцию.

1. Установка программы

Берем отсюда File Checksum Integrity Verifier utility — консольную утилиту для вычисления и сравнения хешей MD5 и SHA-1 от Microsoft. Там же можно прочитать, что это за зверь и с чем его едят. Скачанный файл Windows-KB841290-x86-ENU.exe можно открыть как zip архив и увидеть, что он содержит два файла: собственно fciv.exe и ReadMe.txt, содержащий справку к утилите. Файл ReadMe нас не интересует, а fciv.exe нужно поместить в одну из директорий, прописанных в переменной PATH, дабы вызывать ее из командной строки без указания полного пути. Я поместил в system32. Проверить, что утилита работает, можно, натравив ее из командной строки на любой файл:

fciv -md5 C:\test.dat — для вычисления MD5
fciv -sha1 C:\test.dat — для вычисления SHA-1

2. Создание элемента контекстного меню

Для расширения контекстного меню файлов нужно будет немного подшаманить в реестре.
Запускаем regedit.exe, идем в HKEY_CLASSES_ROOT\* — это раздел, отвечающий за контекстное меню всех типов файлов. В разделе shell создаем подраздел с любым именем (у меня это fciv_md5). В параметре по умолчанию прописываем желаемое название пункта меню (напрмер, Compute MD5). У созданного подраздела (fciv_md5) создаем еще один подраздел с именем command, и у него в параметре по умолчанию прописываем магическую строчку:

cmd.exe /k fciv -md5 "%1"

Строка предписывает запустить cmd.exe с командой fciv -md5 "%1" и отобразить результат.
Для добавления пункта для вычисления SHA-1 проделываем ту же последовательность действий, меняя лишь названия. Команда в этом случае выглядит так:

cmd.exe /k fciv -sha1 "%1"

Должно получиться что-то вроде этого:

Все вышеперечисленное одним файлом:

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\fciv_md5] @="Compute MD5" [HKEY_CLASSES_ROOT\*\shell\fciv_md5\command] @="cmd.exe /k fciv -md5 \"%1\"" [HKEY_CLASSES_ROOT\*\shell\fciv_sha] @="Compute SHA" [HKEY_CLASSES_ROOT\*\shell\fciv_sha\command] @="cmd.exe /k fciv -sha1 \"%1\"" 

3. Вычисляем SHA-1 хеш двумя кликами мыши:

Раз:

Два:

Всем добра и совпадающих хешей!

UPD. Как подсказывает navion в первом комментарии, можно обойтись без установки FCIV и использовать встроенную утилиту CertUtil. В таком случае п.1 становится неактуальным, а команда в regedit меняется на:
для MD5: cmd.exe /k CertUtil -hashfile "%1" MD5
для SHA1: cmd.exe /k CertUtil -hashfile "%1" SHA1,
и, кроме того, появляется возможность вычислять SHA256 хеш: cmd.exe /k CertUtil -hashfile "%1" SHA256

Чем открыть MD5

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

Способы открытия

Рассмотрим программы, которые открывают такой формат.

Способ 1: MD5Summer

Начинает обзор MD5Summer, целью которой является создание и проверка хеша MD5 файлов.

Загрузить MD5Summer с официального сайта

  1. Запускаем софт и выбираем папку, где находится MD5 файл. Затем щелкаем на «Verify sums».
  2. В результате откроется окно эксплорера, в котором обозначаем исходный объект и нажимаем «Открыть».
  3. Выполняется процедура верификации, по завершению которой жмем «Close».

Способ 2: Md5Checker

Md5Checker – очередное решение для взаимодействия с рассматриваемым расширением.

Загрузить Md5Checker с официального сайта

  1. Запускаем программу и жмем кнопку «Add» на ее панели.
  2. В окне каталога выбираем исходный объект и нажимаем «Открыть».
  3. Файл добавляется и далее можно проводить действия по проверке контрольных сумм.

Способ 3: MD5 Checksum Verifier

MD5 Checksum Verifier – утилита для сверки контрольных сумм дистрибутивов.

Загрузить MD5 Checksum Verifier с официального сайта

  1. После запуска софта переходим ко вкладке «Verify check file» и щелкаем по значку с многоточием в поле «Check file».
  2. Открывается Проводник, в котором перемещаемся к необходимой папке, выделяем файл и жмем «Открыть».
  3. Для сверки нажимаем на кнопку «Verify check file». Для выхода из программы надо щелкнуть «Exit».

Способ 4: Smart Projects ISOBuster

Smart Projects ISOBuster предназначен для восстановления данных с поврежденных оптических дисков любого типа и работы с образами. В нем также имеется поддержка MD5.

Загрузить Smart Projects ISOBuster с официального сайта

  1. Сначала загружаем подготовленный образ диска в программу. Для этого выбираем пункт «Открыть файл-образ» в «Файл».
  2. Осуществляем переход в каталог с образом, обозначаем его и жмем «Открыть».
  3. Потом жмем по надписи «CD» в левой части интерфейса правой кнопкой мыши и выбираем пункт «Проверить этот образ с помощью контрольного файла MD5» в появившемся меню «Файл с контрольной суммой MD5».
  4. В открывшемся окне отыскиваем файл контрольной суммы загруженного образа, обозначаем его и жмем «Открыть».
  5. Начинается процесс проверки суммы MD5.
  6. По завершении процедуры выводится сообщение «Контрольная сумма образа совпадает».

Способ 5: Блокнот

Просмотр содержимого MD5 файла можно посмотреть стандартным приложением Windows Блокнотом.

  1. Запускаем текстовый редактор и нажимаем «Открыть» в меню «Файл».
  2. Открывается окно обозревателя, где двигаемся в нужную директорию, а затем выделяем искомый файл, предварительно выбрав в нижней правой части окна пункт «Все файлы» из выпадающего списка, и кликаем «Открыть».
  3. Открывается содержимое указанного файла, где можно увидеть значение контрольной суммы.

Все рассмотренные приложения открывают формат MD5. MD5Summer, Md5Checker, MD5 Checksum Verifier работают только с рассматриваемым расширением, а Smart Projects ISOBuster может также создавать образы оптических дисков. Для того, чтобы посмотреть содержимое файла достаточно открыть его в Блокноте.

Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ

Как получить tar-файл CWM Recovery для прошивки через ODIN


Как получить tar-файл CWM Recovery для прошивки через ODIN. Многие пользователи Android, а точней обладатели смартфонов и планшетов Samsung, не знают как создать из готово файла IMG файла,  обновление для прошивки подходящего для прошивки в Odin.

Многие обновления или прошивки Samsung уже можно прошить в Odin так как они упакованы в TAR или TAR.MD5 файлы, но далеко не все обновления представлены в таком виде (например CWM RECOVERY, выкладываются в формате NAME.IMG) и их необходимо подготовить для прошивки.

Как получить tar-файл CWM Recovery для прошивки через ODIN?

Способ 1 из 2

Предположим у Вас уже есть файл в формате  IMG.

1. Скачайте и установите архиватор 7zip (бесплатный).

2. Переименуйте свой IMG файл чтобы имел идентичное название, с разделом на смартфоне

Например: файл название 12133CWM_recovery.img должен выглядеть как recovery.img

3. Запустите 7zip и упакуйте файл с такими параметрами ( формат архива - tar, уровень сжатия - без сжатия)

4. Теперь можете приступить к прошивки с помощью Odin

Способ 2 из 2

Данный способ создает 100% годные файлы для прошивки! Для этого вам понадобится программа TAR_MD5_PACKAGER

Как создавать tar.md5?

1. Файл формата IMG переместить в папку parts

2. Запустить файл TAR.MD5_PACKAGER.bat

3. Нажать в консольной программе  кнопку 1 и после Y

4. Забрать готовый файл прошивки в папке packaged

Теперь можете начинать прошивку в Odin!


 

Бэкап / копия контрольной суммы (файл md5). Нужно ли? — Хабр Q&A

Я параноик целостности данных и почти на каждый важный файл создаю md5. Когда копирую через total commander выбираю чтобы копировалось с проверкой контрольной суммы. А когда делаю бэкап файлов, обязательно в том или ином ПО выбираю проверку после создания бэкапа. После этого создаю md5 на этот бэкап и ещё делаю копию файла md5.

md5 делаю для того чтобы если что-то испортится в бэкапе, то можно было это понять, а не думать почему возникают ошибки...

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

Я ещё подумал, может на всякий случай делать ещё одну копию md5 и тогда их будет 3 шт на один файл... но мне кажется это уже слишком. Ещё можно на одном диске сделать бэкап бэкапа...но мне кажется, что это уже смешно.

Как вы думаете, нужно ли так сильно заморачиваться с контрольными суммами и делать их бэкапы?

О MD5summer

О MD5summer

Документация
Генератор сумм Windows MD5.

Лучший способ ответить на этот вопрос - объяснить, что делает md5summer. и как он это делает. Я попытаюсь сделать это в F.A.Q. стиль.

Что такое сумма MD5?

Сумма MD5 - это вычисленный «хэш» потока данных. В случае md5summer этот поток является содержимым файла.
По сути, md5summer берет файл произвольной длины и сокращает его. до 128-битного отпечатка пальца.Этот отпечаток крайне маловероятно то же самое для любого другого файла и изменится, если содержимое файла изменится даже крохотным кусочком.

Как они используются в MD5summer?

md5summer использует эти хэши для сравнения файла до и после операции. Например, вы можете проверить, были ли файлы на компакт-диске записаны без ошибка, или что ISO, который вы только что загрузили, в порядке. Возможно, ты просто хочешь увидеть какие файлы были изменены с прошлого месяца или проверьте критические исполняемые файлы не были затронуты вирусом.
Какой бы ни была причина, md5summer создан для сравнения файлов.

Как создать файл .md5?

Сначала выберите подходящую корневую папку, нажмите «Создать», затем выберите файлы, которые вы хотите добавить в md5sum (как добавить файлы), затем щелкните ОК. Md5summer создаст md5-хэши каждого из выбранных файлы, сообщая обо всех обнаруженных ошибках, и просят вас сохранить результат, когда это полно.
Вы можете приостановить md5summer в любой момент, нажав Отмена, а затем возобновить нажав Перезагрузить.Помните, что при отмене в середине большого файла перезапуск начнется с начала этого файла, а не с того места, где вы его отменили.
Вы можете сохранять результат столько раз, сколько хотите, нажав кнопку Сохранить при создании. окно.

Как проверить файл .md5?

Опять же, выберите соответствующую корневую папку, нажмите "Подтвердить", затем выберите файл .md5, который хотите проверить. Md5summer сравнит md5sum каждого файла и сообщите результат.Когда это будет сделано, вы можете сохранить результат в текстовый файл, нажав Сохранить.

Что это за "корневая папка"?

md5summer сохраняет свой вывод таким образом, чтобы его можно было переносить и совместим с GNU md5sum.
Файл .md5 выглядит так:

 81da4fd248fe4dd0b3e7bbfa4310d508 * Программные файлы / arcldr.exe 1fb958e5c82d04361edf45cbb0b1c831 * Программные файлы / Аксессуары / MSPAINT.EXE 

Первая часть каждой строки - это хэш, представленный в шестнадцатеричном формате.Пространство и звездочка (*) отделяет это от пути и имени файла. Вы заметите что начало пути отсутствует, в данном случае "c: \". Этот является частью корневой папки. Мы можем заменить любую корневую папку, чтобы сделать правильный путь. Допустим, я записываю эти файлы на компакт-диск. Когда я проверяю компакт-диск, путь изменится на d: \ Program ... поэтому я установил корневую папку на "d: \".

При создании файла .md5 обычно выбирается самая глубокая папка, содержит все файлы, которые я хочу добавить в md5sum.В приведенном выше примере я должен установить мою корневую папку в "c: \ program files \", новый выходной файл будет выглядеть как это:

 81da4fd248fe4dd0b3e7bbfa4310d508 * arcldr.exe 1fb958e5c82d04361edf45cbb0b1c831 * Принадлежности / MSPAINT.EXE 

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

Например, если я перенес этот файл на компьютер друзей, в папку с именем "h: \ backups \ программные файлы Lukes \".Затем, чтобы проверить файлы, я бы выбрал это как корневая папка, чтобы он проверял "h: \ backups \ Lukes program files \ arcldr.exe" и "h: \ backups \ Lukes program files \ Accessories \ MSPAINT.EXE"

Как выбрать файлы для md5sum?

В диалоге выбора файла 2 панели и 6 кнопок:

  • Панель содержимого папки (вверху слева): отображает содержимое текущего папка. Двойной щелчок по файлу добавит его в список, двойной щелчок по папке сойдет в нее.Чтобы вернуться вверх по дереву папок, нажмите верхний элемент "..". Вы не сможете подняться выше корня папка.
  • Панель скомпилированного списка (вверху справа): показывает список выбранных файлов. В настоящее время вы не можете удалить файлы из этого списка, но он находится в списке дел.
  • Кнопка «Выбрать все»: выбирает все файлы и папки в содержимом папки. панель.
  • Кнопка «Очистить список»: очищает список.
  • Кнопка «Добавить»: добавляет любые файлы, выбранные на панели содержимого, выбранные папки. добавить свое содержимое (хотя вложенные папки не включены).
  • Кнопка «Добавить рекурсивно»: добавляет любые выбранные файлы и добавляет выбранные папки. все содержимое (вложенные папки, вложенные папки вложенных папок и т. д.).
  • OK: начать генерацию md5sum в списке.
  • Отмена: вернуться в окно выбора корневой папки.
.

windows - Bat-файл для генерации контрольной суммы MD5 только для файла

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с сотрудниками
.

Compute MD5 или SHA-1 криптографические хеш-значения - Windows Client

  • 2 минуты на чтение

В этой статье

В этой статье описывается, как и почему вы можете использовать криптографические хеш-значения MD5 или SHA-1 для проверки того, какой файл вы установили на свой компьютер.

Исходная версия продукта: Windows 10 - все выпуски
Оригинальный номер в базе знаний: 889768

Сводка

Когда вы применяете алгоритм хеширования к произвольному объему данных, например к двоичному файлу, результатом является хэш или дайджест сообщения. Этот хеш имеет фиксированный размер. MD5 - это алгоритм хеширования, который создает 128-битное хеш-значение. SHA-1 - это алгоритм хеширования, который создает 160-битное хеш-значение.

Использование FCIV для вычисления криптографических хэш-значений MD5 или SHA-1

Вы можете использовать утилиту File Checksum Integrity Verifier (FCIV) для вычисления криптографических хеш-значений файла MD5 или SHA-1.Для получения дополнительных сведений об утилите проверки целостности контрольной суммы файлов (FCIV) щелкните следующий номер статьи в базе знаний Microsoft:

Наличие и описание утилиты File Checksum Integrity Verifier

Чтобы вычислить хеш-значения MD5 и SHA-1 для файла, введите в командной строке следующую команду:

  FCIV -md5 -sha1 путь \ filename.ext  

Например, чтобы вычислить хеш-значения MD5 и SHA-1 для файла Shdocvw.dll в папке % Systemroot% \ System32 , введите следующую команду:

  FCIV -md5 -sha1 c: \ windows \ system32 \ shdocvw.dll  
.

Compute MD5 или SHA-1 криптографические хеш-значения - Windows Client

  • 2 минуты на чтение

В этой статье

В этой статье описывается, как и почему вы можете использовать криптографические хеш-значения MD5 или SHA-1 для проверки того, какой файл вы установили на свой компьютер.

Исходная версия продукта: Windows 10 - все выпуски
Оригинальный номер в базе знаний: 889768

Сводка

Когда вы применяете алгоритм хеширования к произвольному объему данных, например к двоичному файлу, результатом является хэш или дайджест сообщения. Этот хеш имеет фиксированный размер. MD5 - это алгоритм хеширования, который создает 128-битное хеш-значение. SHA-1 - это алгоритм хеширования, который создает 160-битное хеш-значение.

Использование FCIV для вычисления криптографических хэш-значений MD5 или SHA-1

Вы можете использовать утилиту File Checksum Integrity Verifier (FCIV) для вычисления криптографических хеш-значений файла MD5 или SHA-1.Для получения дополнительных сведений об утилите проверки целостности контрольной суммы файлов (FCIV) щелкните следующий номер статьи в базе знаний Microsoft:

Наличие и описание утилиты File Checksum Integrity Verifier

Чтобы вычислить хеш-значения MD5 и SHA-1 для файла, введите в командной строке следующую команду:

  FCIV -md5 -sha1 путь \ filename.ext  

Например, чтобы вычислить хеш-значения MD5 и SHA-1 для файла Shdocvw.dll в папке % Systemroot% \ System32 , введите следующую команду:

  FCIV -md5 -sha1 c: \ windows \ system32 \ shdocvw.dll  
.

Как создать контрольную сумму MD5 для файлов tar в maven

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

php - Как сделать md5_file () быстрее?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

Смотрите также