Comments 15
Хорошая работа. Два замечания/совета:
1. Подобные вещи очень желательно наследовать от System.Security.Cryptography.SymmetricAlgorithm и System.Security.Cryptography.ICryptoTransform — тогда вашу реализацию можно будет подсунуть любому другому классу, который работает с симметрическим шифрованием.
2. Выложить это все на GitHub или SourceForge — это полезно для вас, как разработчика, все таки собственный опенсорсный проект, пусть даже и такой маленький — это замечательный «плюс в карму» для любого разработчика.
П.С. К сожалению ссылка на исходник у меня почему-то не работает, поэтому я не могу его посмотреть.
1. Подобные вещи очень желательно наследовать от System.Security.Cryptography.SymmetricAlgorithm и System.Security.Cryptography.ICryptoTransform — тогда вашу реализацию можно будет подсунуть любому другому классу, который работает с симметрическим шифрованием.
2. Выложить это все на GitHub или SourceForge — это полезно для вас, как разработчика, все таки собственный опенсорсный проект, пусть даже и такой маленький — это замечательный «плюс в карму» для любого разработчика.
П.С. К сожалению ссылка на исходник у меня почему-то не работает, поэтому я не могу его посмотреть.
+3
Спасибо за комментарий!
1. Попробую посмотреть, как это сделать. Это действительно придаст завершенности и пригодности этому проекту.
2. Начал разбираться с SourceForge.net — создал проект и вставил ссылку на исходник оттуда. Вроде бы теперь все нормально.
1. Попробую посмотреть, как это сделать. Это действительно придаст завершенности и пригодности этому проекту.
2. Начал разбираться с SourceForge.net — создал проект и вставил ссылку на исходник оттуда. Вроде бы теперь все нормально.
0
гугл находит 100500 реализация rc4 на c#
+4
Не могу с Вами не согласиться. Но во-первых я постараюсь довести реализацию до должного уровня на основе совета mace (см. выше), дабы она приобрела ценность, а во-вторых всё же я попробовал объяснить на русском языке, почему создавался этот алгоритм, как помодульно он реализуется, и чем же эти блоки занимаются.
Это моя первая публикация, и я буду очень рад улучшить и расширить статью.
Это моя первая публикация, и я буду очень рад улучшить и расширить статью.
+1
Ждем собирательного анализа криптоалгоритмов на базе сетей Фейстеля. И про ChipherSaber не забудьте :)
0
К сожалению, ничего не сказано о том, что всё-такие такое ключ. У настоящего RC4 ключи генерируются на основе LFSR.
-2
*всё-таки
0
Кхм, это вы с чего такое решили? В статье же С# по белому написано как генерируется псевдослучайная последовательность из ключа. И никакого LFSR там и близко не валялось. И вот, кстати, пруф на педивикии где уже русским языком написано цитирую: «Поскольку шифр RC4 не использует LFSR и основан на байтовых операциях, его удобно реализовывать программно.»
0
Удалось трафик игры расшифровать? Если да, то как в итоге ключ удалось достать?
0
Удалось. Для трафика клиента и сервера используются разные ключи и базами для генерации ключей клиент и сервер обмениваются в начальных пакетах в открытом виде. Конечный ключ формируется так: объединяется базовый ключ с хэшем пароля (passHash+baseKey), а затем объединение пропускается через HMACMD5 c логином в качестве ключа.
Мой минус в том, что алгоритм получения конечного ключа, который я описал, получить возможно только с помощью реверс-инжиниринга программы клиента. Этого я не делал положившись на работу «старшего» программиста.
Так же думаю, что многим будет интересна реализация протокола компрессии данных MPPC, реализацию которого даже на C достать через гугл невозможно. Он уже посложнее RC4, но на него есть RFC, хотя он не помогает до конца написать реализацию для распаковки серверного траффика игры в связи с тем, что разработчики внесли в него некоторые изменения. Думаю будет интереснее и мне и хабрасообществу проследить весь путь восстановления алгоритма из дизасм-листинга.
Мой минус в том, что алгоритм получения конечного ключа, который я описал, получить возможно только с помощью реверс-инжиниринга программы клиента. Этого я не делал положившись на работу «старшего» программиста.
Так же думаю, что многим будет интересна реализация протокола компрессии данных MPPC, реализацию которого даже на C достать через гугл невозможно. Он уже посложнее RC4, но на него есть RFC, хотя он не помогает до конца написать реализацию для распаковки серверного траффика игры в связи с тем, что разработчики внесли в него некоторые изменения. Думаю будет интереснее и мне и хабрасообществу проследить весь путь восстановления алгоритма из дизасм-листинга.
+4
у mono есть прекрасная реализация rc4, наследуемая от ICryptoTransform
github.com/mono/mono/blob/master/mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs
p.s. Perfect World? :)
github.com/mono/mono/blob/master/mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs
p.s. Perfect World? :)
+3
Тут есть все. www.bouncycastle.org/csharp/
+1
Sign up to leave a comment.
Простая реализация RC4 на C#