mr_green
23.04.2010, 16:29
Добрый день.
Разбираюсь с протоколом обмена пакетами от логин сервера клиенту и от клиента логин серверу. Сервер Gracia Final. Опишу проблему:
Есть Init пакет от сервера
BA 00 54 9D 09 44 0C 5A 1C 20 26 16 C7 7B 3B DF
D5 1B 90 3D CD F9 9E FD C5 1E 4A A7 83 B1 A0 11
73 2C 7D 32 EC DD DC FA 20 84 B1 F9 74 DA 47 02
03 53 BB 37 6E 4D 82 24 B9 B8 E8 FB F1 43 2E 09
C1 42 9F FA 25 7E 87 E8 6C 1D 34 6F 0B FB 5A F5
F0 CD 4D 11 E2 A0 A2 82 35 78 1B 8F D0 12 7E F0
70 4A E8 AE 95 75 F0 C0 23 9B 5D E2 E4 D4 B6 E2
35 4A EA D0 12 9D 6E 35 4C 93 AB 24 B5 4C 7D 1F
21 BE 5E DA 43 1A D0 51 86 B3 7B D3 A1 45 59 8F
15 CF D3 96 6B 0F 56 D5 40 BA 35 21 CD 53 D3 95
B2 7A 22 79 67 31 94 77 3B F0 00 6D 38 3A 11 88
3E 6D AC 03 CB 3F 4D C7 87 F1
Расшифровали его, получили (раскидал по строчкам для удобства):
00
B8 58 00 00
21 C6 00 00
E4 FE 76 80 3B 52 53 27 A1 CD DD EC 57 B4 50 51 23 A3 5A 65 10 34 70 BE 20 04 2C AA 0F 77 14 0F 70 DA C8 35 07 1E 1F 53 50 E9 B3 A4 80 66 42 AD 90 BC 2D F9 AC 96 98 E1 CD 7F FF 75 90 5A 9F 6E 54 7C F7 CB 8B 68 F9 C3 98 55 85 9B E6 38 3A 67 85 00 81 38 01 BD 02 95 D9 C0 E4 F3 ED 30 AF EB BB 8F CE 61 A0 C6 EF C5 61 0C F8 00 DB 88 79 72 33 4A 15 15 F7 A0 10 06 61 91 F3 49 01 66 5E 9B
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
44 0E 96 F7 FB 9F 7B 66 29 66 D5 F8 C2 9E 5C 5E
14 E6 7F 1F 8F 67 82
FA DD AB FE
6C EA 53 54
Пакет от клиента RequestAuthLogin
B2 00 12 38 BF 78 4F 10 EF 89 E7 A4 78 A6 CB A1
4B 2E F4 4B FE 8C 9B B0 F0 F0 09 25 27 4E 58 D4
AD 90 02 B0 68 97 33 73 00 27 CC 0F B9 35 CB A2
26 FC 23 11 AA 4B 78 26 18 0F AB 13 A6 53 E2 3A
58 A5 B7 A5 E0 98 34 F5 B8 D1 A3 B0 C4 08 93 40
12 71 A1 06 86 F6 2A AA C9 93 48 4A 1E BF 37 6E
C4 84 2D 13 7B C6 96 BF 7C 50 F9 F2 37 24 F3 9E
B3 EA F1 B6 82 20 C8 69 A2 46 AF 32 A3 6A 78 C6
D9 F3 2C 14 42 E3 1D 43 91 14 9F ED 37 7D A3 B8
31 14 04 00 B3 29 AE 0C 50 26 9F ED 37 7D A3 B8
31 14 BE 24 61 A1 60 CB 7E 97 9F ED 37 7D A3 B8
31 14
Расшифровали его, получили (раскидал по строчкам для удобства):
00
12 C8 0E 6F AE B2 8A FF 3A 3A AC 35 06 41 DA 6F 8E 04 82 A7 86 7D 1B 74 A2 53 2C 50 D7 80 1D 70 0F 38 6F D9 FC 18 37 D7 17 C2 8B 85 DD 47 87 68 FA 3C 6C CF 69 75 F0 79 23 03 B8 75 01 CA 2F 0F 9D A6 A1 3C DF FA 61 07 33 41 C9 7B F6 AB FC 3A C7 B4 0A 60 44 83 F4 DF AF 85 D6 09 C2 DA 19 AB 09 BC D1 03 85 F2 6D A3 BF 77 24 06 AC B8 E1 B4 17 E4 9E AB 01 ED 2F FB 85 02 9A 56 B8 E8 9E 90
B8 58 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00
08
00 00 00 00 00 00 00 00
00 00
F5 18 6A 0D 00 00 00 00
00 00 00 00 00 00 00 00
Процедура расшифрования ключа RSA
E4FE76803B525327A1CDDDEC57B4505123A35A65103470BE20 042CAA0F77140F70DAC835071E1F5350E9B3A4806642AD90BC 2DF9AC9698E1CD7FFF75905A9F6E547CF7CB8B68F9C3985585 9BE6383A678500813801BD0295D9C0E4F3ED30AFEBBB8FCE61 A0C6EFC5610CF800DB887972334A1515F7A010066191F34901 665E9B
Sub DEncryptKeyRSA(ByRef n() As Byte)
For ii = 0 To &H40 - 1
n(&H40 + ii) = n(&H40 + ii) Xor n(ii)
Next
For ii = 0 To 4 - 1
n(&HD + ii) = n(&HD + ii) Xor n(&H34 + ii)
Next
For ii = 0 To &H40 - 1
n(ii) = n(ii) Xor n(&H40 + ii)
Next
Dim tmp As Byte
For ii = 0 To 4 - 1
tmp = n(ii)
n(ii) = n(&H4D + ii)
n(&H4D + ii) = tmp
Next
End Sub
Проблема состоит в том что не могу повторить зашифрованный участок RequestAuthLogin а именно:
12 C8 0E 6F AE B2 8A FF 3A 3A AC 35 06 41 DA 6F 8E 04 82 A7 86 7D 1B 74 A2 53 2C 50 D7 80 1D 70 0F 38 6F D9 FC 18 37 D7 17 C2 8B 85 DD 47 87 68 FA 3C 6C CF 69 75 F0 79 23 03 B8 75 01 CA 2F 0F 9D A6 A1 3C DF FA 61 07 33 41 C9 7B F6 AB FC 3A C7 B4 0A 60 44 83 F4 DF AF 85 D6 09 C2 DA 19 AB 09 BC D1 03 85 F2 6D A3 BF 77 24 06 AC B8 E1 B4 17 E4 9E AB 01 ED 2F FB 85 02 9A 56 B8 E8 9E 90
Участок который шифрую создавал по примеру:
[начало зашифрованного блока]
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20
00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Login (учтите, эта строка - массив из 14 символов)
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Password (... из 16 символов ...)
[конец зашифрованного блока]
Код:
Dim modulo As BigInteger = New BigInteger(modul)
Dim res As BigInteger
Dim exp As BigInteger = "65537"
Dim logpas(127) As Byte
logpas(95) = &H20
Array.Copy(Encoding.Default.GetBytes("&&&&&&&&&"), 0, logpas, 98, "&&&&&&&&&".Length)
Array.Copy(Encoding.Default.GetBytes("&&&&&&&&&"), 0, logpas, 112, "&&&&&&&&&".Length)
Dim lg As BigInteger = New BigInteger(logpas)
res = BigInteger.ModPow(lg, exp, modulo)
Подскажите, пожалуйста, какой будет RSA ключ.
Разбираюсь с протоколом обмена пакетами от логин сервера клиенту и от клиента логин серверу. Сервер Gracia Final. Опишу проблему:
Есть Init пакет от сервера
BA 00 54 9D 09 44 0C 5A 1C 20 26 16 C7 7B 3B DF
D5 1B 90 3D CD F9 9E FD C5 1E 4A A7 83 B1 A0 11
73 2C 7D 32 EC DD DC FA 20 84 B1 F9 74 DA 47 02
03 53 BB 37 6E 4D 82 24 B9 B8 E8 FB F1 43 2E 09
C1 42 9F FA 25 7E 87 E8 6C 1D 34 6F 0B FB 5A F5
F0 CD 4D 11 E2 A0 A2 82 35 78 1B 8F D0 12 7E F0
70 4A E8 AE 95 75 F0 C0 23 9B 5D E2 E4 D4 B6 E2
35 4A EA D0 12 9D 6E 35 4C 93 AB 24 B5 4C 7D 1F
21 BE 5E DA 43 1A D0 51 86 B3 7B D3 A1 45 59 8F
15 CF D3 96 6B 0F 56 D5 40 BA 35 21 CD 53 D3 95
B2 7A 22 79 67 31 94 77 3B F0 00 6D 38 3A 11 88
3E 6D AC 03 CB 3F 4D C7 87 F1
Расшифровали его, получили (раскидал по строчкам для удобства):
00
B8 58 00 00
21 C6 00 00
E4 FE 76 80 3B 52 53 27 A1 CD DD EC 57 B4 50 51 23 A3 5A 65 10 34 70 BE 20 04 2C AA 0F 77 14 0F 70 DA C8 35 07 1E 1F 53 50 E9 B3 A4 80 66 42 AD 90 BC 2D F9 AC 96 98 E1 CD 7F FF 75 90 5A 9F 6E 54 7C F7 CB 8B 68 F9 C3 98 55 85 9B E6 38 3A 67 85 00 81 38 01 BD 02 95 D9 C0 E4 F3 ED 30 AF EB BB 8F CE 61 A0 C6 EF C5 61 0C F8 00 DB 88 79 72 33 4A 15 15 F7 A0 10 06 61 91 F3 49 01 66 5E 9B
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
44 0E 96 F7 FB 9F 7B 66 29 66 D5 F8 C2 9E 5C 5E
14 E6 7F 1F 8F 67 82
FA DD AB FE
6C EA 53 54
Пакет от клиента RequestAuthLogin
B2 00 12 38 BF 78 4F 10 EF 89 E7 A4 78 A6 CB A1
4B 2E F4 4B FE 8C 9B B0 F0 F0 09 25 27 4E 58 D4
AD 90 02 B0 68 97 33 73 00 27 CC 0F B9 35 CB A2
26 FC 23 11 AA 4B 78 26 18 0F AB 13 A6 53 E2 3A
58 A5 B7 A5 E0 98 34 F5 B8 D1 A3 B0 C4 08 93 40
12 71 A1 06 86 F6 2A AA C9 93 48 4A 1E BF 37 6E
C4 84 2D 13 7B C6 96 BF 7C 50 F9 F2 37 24 F3 9E
B3 EA F1 B6 82 20 C8 69 A2 46 AF 32 A3 6A 78 C6
D9 F3 2C 14 42 E3 1D 43 91 14 9F ED 37 7D A3 B8
31 14 04 00 B3 29 AE 0C 50 26 9F ED 37 7D A3 B8
31 14 BE 24 61 A1 60 CB 7E 97 9F ED 37 7D A3 B8
31 14
Расшифровали его, получили (раскидал по строчкам для удобства):
00
12 C8 0E 6F AE B2 8A FF 3A 3A AC 35 06 41 DA 6F 8E 04 82 A7 86 7D 1B 74 A2 53 2C 50 D7 80 1D 70 0F 38 6F D9 FC 18 37 D7 17 C2 8B 85 DD 47 87 68 FA 3C 6C CF 69 75 F0 79 23 03 B8 75 01 CA 2F 0F 9D A6 A1 3C DF FA 61 07 33 41 C9 7B F6 AB FC 3A C7 B4 0A 60 44 83 F4 DF AF 85 D6 09 C2 DA 19 AB 09 BC D1 03 85 F2 6D A3 BF 77 24 06 AC B8 E1 B4 17 E4 9E AB 01 ED 2F FB 85 02 9A 56 B8 E8 9E 90
B8 58 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00
08
00 00 00 00 00 00 00 00
00 00
F5 18 6A 0D 00 00 00 00
00 00 00 00 00 00 00 00
Процедура расшифрования ключа RSA
E4FE76803B525327A1CDDDEC57B4505123A35A65103470BE20 042CAA0F77140F70DAC835071E1F5350E9B3A4806642AD90BC 2DF9AC9698E1CD7FFF75905A9F6E547CF7CB8B68F9C3985585 9BE6383A678500813801BD0295D9C0E4F3ED30AFEBBB8FCE61 A0C6EFC5610CF800DB887972334A1515F7A010066191F34901 665E9B
Sub DEncryptKeyRSA(ByRef n() As Byte)
For ii = 0 To &H40 - 1
n(&H40 + ii) = n(&H40 + ii) Xor n(ii)
Next
For ii = 0 To 4 - 1
n(&HD + ii) = n(&HD + ii) Xor n(&H34 + ii)
Next
For ii = 0 To &H40 - 1
n(ii) = n(ii) Xor n(&H40 + ii)
Next
Dim tmp As Byte
For ii = 0 To 4 - 1
tmp = n(ii)
n(ii) = n(&H4D + ii)
n(&H4D + ii) = tmp
Next
End Sub
Проблема состоит в том что не могу повторить зашифрованный участок RequestAuthLogin а именно:
12 C8 0E 6F AE B2 8A FF 3A 3A AC 35 06 41 DA 6F 8E 04 82 A7 86 7D 1B 74 A2 53 2C 50 D7 80 1D 70 0F 38 6F D9 FC 18 37 D7 17 C2 8B 85 DD 47 87 68 FA 3C 6C CF 69 75 F0 79 23 03 B8 75 01 CA 2F 0F 9D A6 A1 3C DF FA 61 07 33 41 C9 7B F6 AB FC 3A C7 B4 0A 60 44 83 F4 DF AF 85 D6 09 C2 DA 19 AB 09 BC D1 03 85 F2 6D A3 BF 77 24 06 AC B8 E1 B4 17 E4 9E AB 01 ED 2F FB 85 02 9A 56 B8 E8 9E 90
Участок который шифрую создавал по примеру:
[начало зашифрованного блока]
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20
00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Login (учтите, эта строка - массив из 14 символов)
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Password (... из 16 символов ...)
[конец зашифрованного блока]
Код:
Dim modulo As BigInteger = New BigInteger(modul)
Dim res As BigInteger
Dim exp As BigInteger = "65537"
Dim logpas(127) As Byte
logpas(95) = &H20
Array.Copy(Encoding.Default.GetBytes("&&&&&&&&&"), 0, logpas, 98, "&&&&&&&&&".Length)
Array.Copy(Encoding.Default.GetBytes("&&&&&&&&&"), 0, logpas, 112, "&&&&&&&&&".Length)
Dim lg As BigInteger = New BigInteger(logpas)
res = BigInteger.ModPow(lg, exp, modulo)
Подскажите, пожалуйста, какой будет RSA ключ.