Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10

Как вручную кодировать и декодировать текст?

03.04.2016, 19:28. Показов 2334. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здрасьте. у меня другой вопрос: как то же самое реализовать вручную? по какому принципу?

(начало обсуждения в теме Кодирование и декодирование текста)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2016, 19:28
Ответы с готовыми решениями:

Почему нужно кодировать и декодировать данные при передаче по сети
Socket handler = sListener.Accept(); string data = null; // Мы дождались клиента, пытающегося с нами соединиться ...

При кодировании в base64 русских букв не удается потом декодировать текст
Здравствуйте, подскажите пожалуйста как правильно закодировать строку в base64, знаю что с кириллицей у этой кодировки проблемы, но как...

Как кодировать строку в utf8?
Здравствуйте. Как кодировать строку в utf8?

19
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
04.04.2016, 14:00
PNZ, ты вообще о чем?
0
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10
05.04.2016, 02:34  [ТС]
у меня программа создаёт аккаунт и записывает его в файл AccountCookie , который находится в папке Logs. Мне нужно вписать в этот файл аккаунт, созданный ранее на сайте, с которым работает программа. Т.е. создать аккайнт не в самой программе, а напрямую на сайте. то, что создаёт программа выглядит вот так:
ySrTgkpTGhxVl4iA9MJLAQ==:plYbJHNol2sVaYS ZgkuwKFPC6vV6tkv4Bm18Sa9ekjY8S6mp/Ur4BR7wV8vF8aiv;LR4+SacQGy7/ZBDS/+zzlQ==;MCOsS7OPTQV9GPbhxzKKgQ==
Причём, последний хэш не меняется при создании другого аккаунта. Это, я так понимаю, куки. А всё остальное- id акка и логин с паролем. id- 48938117, логин - 123user321 пароль - 123ff321 .
цель - внести в файл AccountCookie другого юзера, зареганного не через прогу, а напрямую на сайте, с которым работает прога.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
06.04.2016, 17:48
PNZ, чтобы это сделать нужно знать алгоритм по которому формируется файл. Если это программа на .NET, то изучи её с помощью декомпилятора.
0
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10
07.04.2016, 08:11  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static string Decrypta(/*Parameter with token 08000137*/string cipherText, /*Parameter with token 08000138*/string password, /*Parameter with token 08000139*/string salt = "Kosher", /*Parameter with token 0800013A*/string hashAlgorithm = "SHA1", /*Parameter with token 0800013B*/int passwordIterations = 2, /*Parameter with token 0800013C*/string initialVector = "OFRna73m*aze01xY", /*Parameter with token 0800013D*/int keySize = 256)
    {
      if (string.IsNullOrEmpty(cipherText))
        return "";
      byte[] bytes1 = Encoding.ASCII.GetBytes(initialVector);
      byte[] bytes2 = Encoding.ASCII.GetBytes(salt);
      byte[] buffer = Convert.FromBase64String(cipherText);
      byte[] bytes3 = new PasswordDeriveBytes(password, bytes2, hashAlgorithm, passwordIterations).GetBytes(keySize / 8);
      RijndaelManaged rijndaelManaged = new RijndaelManaged();
      rijndaelManaged.Mode = CipherMode.CBC;
      byte[] numArray = new byte[buffer.Length];
      int count = 0;
      using (ICryptoTransform decryptor = rijndaelManaged.CreateDecryptor(bytes3, bytes1))
      {
        using (MemoryStream memoryStream = new MemoryStream(buffer))
        {
          using (CryptoStream cryptoStream = new CryptoStream((Stream) memoryStream, decryptor, CryptoStreamMode.Read))
          {
            count = cryptoStream.Read(numArray, 0, numArray.Length);
            memoryStream.Close();
            cryptoStream.Close();
          }
        }
      }
      rijndaelManaged.Clear();
      return Encoding.UTF8.GetString(numArray, 0, count);
Вот.. Сможете помочь?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
07.04.2016, 12:29
PNZ, это код дешифровки. Найди парный метод для шифрования. Также нужно узнать другие параметри шифрования: пароль, "соль", алгоритм хеширования, кол-во итераций для получения пароля, вектор и длину ключа. По приведенной строке из файла видно что как минимум хеш-алгоритм отличается от значений по умолчанию. Судя по длине бинарных данных там используется md5. Зная эти параметры ты сможешь сформировать строку для файла.
1
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10
08.04.2016, 07:45  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CreateUserResponse result = DiceWebAPI.EndCreateUser(i);
          this.BeginInvoke((Delegate) (() =>
          {
            if (result.Success)
            {
              for (int index = 1; index <= u; ++index)
              {
                if (this.Session.AccountCookie == Cookie[index] || this.Session.AccountId.ToString() == Account[index])
                {
                  if (index == 1)
                    File.WriteAllText(Path.Combine(Settings.DataFileDirectory, "AccountCookie"), Main.Encrypta(this.Session.AccountId.ToString(), this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ":" + Main.Encrypta(this.Session.AccountCookie, this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ";" + Main.Encrypta(this.textBox_Username.Text, this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ";" + Main.Encrypta(this.textBox_Password.Text, this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256));
                  else
                    File.AppendAllText(Path.Combine(Settings.DataFileDirectory, "AccountCookie"), "\r\n" + Main.Encrypta(this.Session.AccountId.ToString(), this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ":" + Main.Encrypta(this.Session.AccountCookie, this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ";" + Main.Encrypta(this.textBox_Username.Text, this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ";" + Main.Encrypta(this.textBox_Password.Text, this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256));
                }
                else if (User[index] != null)
                {
                  if (index == 1)
                    File.WriteAllText(Path.Combine(Settings.DataFileDirectory, "AccountCookie"), Main.Encrypta(Account[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ":" + Main.Encrypta(Cookie[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ";" + Main.Encrypta(User[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ";" + Main.Encrypta(this.textBox_Password.Text, this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256));
                  else
                    File.AppendAllText(Path.Combine(Settings.DataFileDirectory, "AccountCookie"), "\r\n" + Main.Encrypta(Account[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ":" + Main.Encrypta(Cookie[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ";" + Main.Encrypta(User[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ";" + Main.Encrypta(Pass[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256));
                }
                else if (index == 1)
                  File.WriteAllText(Path.Combine(Settings.DataFileDirectory, "AccountCookie"), Main.Encrypta(Account[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ":" + Main.Encrypta(Cookie[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256));
                else
                  File.AppendAllText(Path.Combine(Settings.DataFileDirectory, "AccountCookie"), "\r\n" + Main.Encrypta(Account[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256) + ":" + Main.Encrypta(Cookie[index], this.il.ToString(), "Kosher", "SHA1", 2, "OFRna73m*aze01xY", 256));
              }
              this.Close();
Не знаю, правда, то ли это.. но то что выложил ранее - результат декомпилирования процедуры Encrypta.
..В очередной раз жалею что в своё время не получилось пойти на программиста..
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
08.04.2016, 10:08
PNZ, это то что нужно. Осталось узнать значение пароля (this.il.ToString()) и можно писать код для создания нового пользователя.
0
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10
09.04.2016, 07:58  [ТС]
Сори за глупый вопрос: как его узнать? Нужно декомпилировать ToString()?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
09.04.2016, 08:02
PNZ, путем изучения кода.
0
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10
10.04.2016, 05:49  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 // [136 21 - 136 509]
        IL_04b6: ldsfld       string BotGrid.Settings::DataFileDirectory
        IL_04bb: ldstr        "AccountCookie"
        IL_04c0: call         string [mscorlib]System.IO.Path::Combine(string, string)
        IL_04c5: ldc.i4.8     
        IL_04c6: newarr       [mscorlib]System.String
        IL_04cb: stloc.s      V_7
        IL_04cd: ldloc.s      V_7
        IL_04cf: ldc.i4.0     
        IL_04d0: ldstr        "\r\n"
        IL_04d5: stelem.ref   
        IL_04d6: ldloc.s      V_7
        IL_04d8: ldc.i4.1     
        IL_04d9: ldarg.0      // this
        IL_04da: ldfld        class BotGrid.SetupLogin/'<>c__DisplayClass2' BotGrid.SetupLogin/'<>c__DisplayClass2'/'<>c__DisplayClass4'::'CS$<>8__locals3'
        IL_04df: ldfld        string[] BotGrid.SetupLogin/'<>c__DisplayClass2'::Account
        IL_04e4: ldloc.0      // index
        IL_04e5: ldelem.ref   
        IL_04e6: ldarg.0      // this
        IL_04e7: ldfld        class BotGrid.SetupLogin/'<>c__DisplayClass2' BotGrid.SetupLogin/'<>c__DisplayClass2'/'<>c__DisplayClass4'::'CS$<>8__locals3'
        IL_04ec: ldfld        class BotGrid.SetupLogin BotGrid.SetupLogin/'<>c__DisplayClass2'::'<>4__this'
        IL_04f1: ldflda       int32 BotGrid.SetupLogin::'il'
        IL_04f6: call         instance string [mscorlib]System.Int32::ToString()
        IL_04fb: ldstr        "Kosher"
        IL_0500: ldstr        "SHA1"
        IL_0505: ldc.i4.2     
        IL_0506: ldstr        "OFRna73m*aze01xY"
        IL_050b: ldc.i4       256 // 0x00000100
        IL_0510: call         string BotGrid.Main::Encrypta(string, string, string, string, int32, string, int32)
        IL_0515: stelem.ref   
        IL_0516: ldloc.s      V_7
        IL_0518: ldc.i4.2     
        IL_0519: ldstr        ":"
        IL_051e: stelem.ref   
        IL_051f: ldloc.s      V_7
        IL_0521: ldc.i4.3
// [136 21 - 136 509]
IL код.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
10.04.2016, 08:04
PNZ, приведенный IL-код демонстрирует то что уже было известно из ранее приведенного кода - в качестве пароля используется il.ToString(). Я имел в виду что нужно изучить код чтобы понять откуда берется значение в il.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
10.04.2016, 08:17
Запустите программу в отладчике типа ILSpector, установив точку останова на нужной строке и посмотрите значение нужной переменной.
0
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10
10.04.2016, 09:28  [ТС]
нашёл ASCII Encоding .. правда не уверен, нужно ли..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
.method public hidebysig specialname static 
    class System.Text.Encoding get_ASCII () cil managed 
{
    .custom instance void System.Runtime.TargetedPatchingOptOutAttribute::.ctor(string) = (
        01 00 3b 50 65 72 66 6f 72 6d 61 6e 63 65 20 63
        72 69 74 69 63 61 6c 20 74 6f 20 69 6e 6c 69 6e
        65 20 61 63 72 6f 73 73 20 4e 47 65 6e 20 69 6d
        61 67 65 20 62 6f 75 6e 64 61 72 69 65 73 00 00
    )
    // Method #US Index 33653
    // Method #US NameSpaceIndex 366290
    // Method begins at RVA 0x9a285
    // Code size 29 (0x1d)
    .maxstack 8
 
    IL_0000: volatile.
    IL_0002: ldsfld class System.Text.Encoding modreq(System.Runtime.CompilerServices.IsVolatile)  System.Text.Encoding::asciiEncoding
    IL_0007: brtrue.s IL_0015
 
    IL_0009: newobj instance void System.Text.ASCIIEncoding::.ctor()
    IL_000e: volatile.
    IL_0010: stsfld class System.Text.Encoding modreq(System.Runtime.CompilerServices.IsVolatile)  System.Text.Encoding::asciiEncoding
 
    IL_0015: volatile.
    IL_0017: ldsfld class System.Text.Encoding modreq(System.Runtime.CompilerServices.IsVolatile)  System.Text.Encoding::asciiEncoding
    IL_001c: ret
} // end of method Encoding::get_ASCII
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
10.04.2016, 13:46
PNZ, это код из стандартной библиотеки и он не имеет отношения к искомому.
0
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10
10.04.2016, 13:53  [ТС]
Если выложу программу сможете помочь? Сори, но я нуб в этом деле, а так было бы гораздо быстрее.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
10.04.2016, 13:55
PNZ, выкладывай. Результата не обещаю, но посмотреть посмотрю.
0
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10
10.04.2016, 14:29  [ТС]
http://rghost.ru/8FCT7sj4F
он весит 15мб, посему пришлось выложить на файлообменник.
В папке lоgs в файле AccоuntCооkie результат создания нового аккаунта
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
10.04.2016, 15:30
PNZ, пароль - "42". Теперь можно взять метод Encrypta из класса BotGrid.Main и создавать с его помошью новые записи. Только еще понадобятся Session.AccountId и Session.AccountCookie которые видимо берутся из ответа сайта. Это уже самостоятельно разбирай.
0
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 10
10.04.2016, 15:44  [ТС]
Ок. спасибо огромное за помошь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2016, 15:44
Помогаю со студенческими работами здесь

Как кодировать и декодировать файлы алгоритмом Rijndael
Может кто нибудь подскажет код как кодировать и декодировать файлы алгоритмом Rijndael ? Примного благодарен)

Кодировать/декодировать данные по протоколу RSA
Делаю алгоритм рса, зашифровал в файл свою последовательность, теперь нужно её же считать и расшифровать. import random, codecs def...

Считать информацию из одного файла, кодировать во второй и декодировать в третий
Привет, как сделать чтобы программа работала с файлом. Т.е. брала информацию из одного, кодировала во второй и декодировала в третий? ...

Написать программу, которая будет кодировать (и потом декодировать) строку на английском
Ребята, срочно нужно написать программку, подсобите, пожалуйста! Задача: написать программу, которая будет кодировать (и потом...

Кодировка utf-8, как декодировать обратно в русский текст?
Проблема такая - с бека на запрос ext.direct приходит ответ, если он без exeptions, то все ок грид запоняется - буквы из utf-8...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru