Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
ничего не приходит после PROTOCOL_BASE_CONNECT_ACK
#31
Заметил такую штуку:
Есть байтовый массив с ключём byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded(); // 162 bytes
И далее есть пустой байтовый массив byte[] buff = new byte[128];
Я пытаюсь пропустить 29 байт вот так Array.Copy(serializedPublicBytes, 29, buff, 0, buff.Length);
но вместо 29 он пропускает 11
[Изображение: FAlDtDSHJKY.jpg]
Видим то что он пропустил только 30-82-02-5B-02-01-00-02-81-81-00
Что делать?
Ответ
#32
PublicKey (SerializedPrivateBytes) - тут всё верно? Smile

[SRC="csharp"]
log.Trace(publicKey.ToHex());

byte[] body = new byte[128];
Buffer.BlockCopy(publicKey, 29, body, 0, body.Length);

log.Trace(body.ToHex());
[/SRC]

Код:
|--------------------------------------------------------------------------|
|       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F                    |
|--------------------------------------------------------------------------|
| 0000: 30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01    0..0...*.H......
| 0010: 05 00 03 81 8D 00 30 81 89 02 81 81 00 D4 15 81    ......0.........
| 0020: E8 CA 56 86 60 44 19 F4 BF 62 E3 E7 E0 E8 0F 3C    ..V.`D...b.....<
| 0030: 7C 8A 89 5C 80 45 38 72 F2 B1 81 C4 4B F5 B2 84    |..\.E8r....K...
| 0040: D6 F2 D3 27 C5 9E F3 B1 A4 6B F6 0F 21 09 47 68    ...'.....k..!.Gh
| 0050: 5A 4D DD 32 0A 8C 7E 6D FA 80 2C 7C C5 BF 03 88    ZM.2..~m..,|....
| 0060: FA 8D C6 A0 37 93 8E AD 7F DB D5 A7 56 F5 1D 8E    ....7......V...
| 0070: F9 89 1B BC 8D 5D E7 EB 25 36 7F FA 78 7C 78 7E    .....]..%6.x|x~
| 0080: B9 80 41 D2 53 25 67 E3 4D A0 8B 7A 7C 48 C9 88    ..A.S%g.M..z|H..
| 0090: 0B 28 20 B3 2E E7 3F 1D AA B8 B3 83 F1 02 03 01    .( ...?.........
| 00A0: 00 11                                              ..
|--------------------------------------------------------------------------|

Код:
|--------------------------------------------------------------------------|
|       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F                    |
|--------------------------------------------------------------------------|
| 0000: D4 15 81 E8 CA 56 86 60 44 19 F4 BF 62 E3 E7 E0    .....V.`D...b...
| 0010: E8 0F 3C 7C 8A 89 5C 80 45 38 72 F2 B1 81 C4 4B    ..<|..\.E8r....K
| 0020: F5 B2 84 D6 F2 D3 27 C5 9E F3 B1 A4 6B F6 0F 21    ......'.....k..!
| 0030: 09 47 68 5A 4D DD 32 0A 8C 7E 6D FA 80 2C 7C C5    .GhZM.2..~m..,|.
| 0040: BF 03 88 FA 8D C6 A0 37 93 8E AD 7F DB D5 A7 56    .......7......V
| 0050: F5 1D 8E F9 89 1B BC 8D 5D E7 EB 25 36 7F FA 78    ........]..%6.x
| 0060: 7C 78 7E B9 80 41 D2 53 25 67 E3 4D A0 8B 7A 7C    |x~..A.S%g.M..z|
| 0070: 48 C9 88 0B 28 20 B3 2E E7 3F 1D AA B8 B3 83 F1    H...( ...?......
|--------------------------------------------------------------------------|
Ответ
#33
PROGRAMMATOR Написал:PublicKey (SerializedPrivateBytes) - тут всё верно? Smile

[SRC="csharp"]
log.Trace(publicKey.ToHex());

byte[] body = new byte[128];
Buffer.BlockCopy(publicKey, 29, body, 0, body.Length);

log.Trace(body.ToHex());
[/SRC]

Код:
|--------------------------------------------------------------------------|
|       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F                    |
|--------------------------------------------------------------------------|
| 0000: 30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01    0..0...*.H......
| 0010: 05 00 03 81 8D 00 30 81 89 02 81 81 00 D4 15 81    ......0.........
| 0020: E8 CA 56 86 60 44 19 F4 BF 62 E3 E7 E0 E8 0F 3C    ..V.`D...b.....<
| 0030: 7C 8A 89 5C 80 45 38 72 F2 B1 81 C4 4B F5 B2 84    |..\.E8r....K...
| 0040: D6 F2 D3 27 C5 9E F3 B1 A4 6B F6 0F 21 09 47 68    ...'.....k..!.Gh
| 0050: 5A 4D DD 32 0A 8C 7E 6D FA 80 2C 7C C5 BF 03 88    ZM.2..~m..,|....
| 0060: FA 8D C6 A0 37 93 8E AD 7F DB D5 A7 56 F5 1D 8E    ....7......V...
| 0070: F9 89 1B BC 8D 5D E7 EB 25 36 7F FA 78 7C 78 7E    .....]..%6.x|x~
| 0080: B9 80 41 D2 53 25 67 E3 4D A0 8B 7A 7C 48 C9 88    ..A.S%g.M..z|H..
| 0090: 0B 28 20 B3 2E E7 3F 1D AA B8 B3 83 F1 02 03 01    .( ...?.........
| 00A0: 00 11                                              ..
|--------------------------------------------------------------------------|

Код:
|--------------------------------------------------------------------------|
|       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F                    |
|--------------------------------------------------------------------------|
| 0000: D4 15 81 E8 CA 56 86 60 44 19 F4 BF 62 E3 E7 E0    .....V.`D...b...
| 0010: E8 0F 3C 7C 8A 89 5C 80 45 38 72 F2 B1 81 C4 4B    ..<|..\.E8r....K
| 0020: F5 B2 84 D6 F2 D3 27 C5 9E F3 B1 A4 6B F6 0F 21    ......'.....k..!
| 0030: 09 47 68 5A 4D DD 32 0A 8C 7E 6D FA 80 2C 7C C5    .GhZM.2..~m..,|.
| 0040: BF 03 88 FA 8D C6 A0 37 93 8E AD 7F DB D5 A7 56    .......7......V
| 0050: F5 1D 8E F9 89 1B BC 8D 5D E7 EB 25 36 7F FA 78    ........]..%6.x
| 0060: 7C 78 7E B9 80 41 D2 53 25 67 E3 4D A0 8B 7A 7C    |x~..A.S%g.M..z|
| 0070: 48 C9 88 0B 28 20 B3 2E E7 3F 1D AA B8 B3 83 F1    H...( ...?......
|--------------------------------------------------------------------------|
Там ошибочка в тексте не SerializedPrivateBytes,а SerializedPublicBytes
Так вот вроде всё правильно сначала генерирую пару ключей:
[SRC="csharp"]
public static AsymmetricCipherKeyPair GeneratePair()
{
RsaKeyPairGenerator rsa = new RsaKeyPairGenerator();
rsa.Init(new KeyGenerationParameters(new SecureRandom(), 1024));
AsymmetricCipherKeyPair pair = rsa.GenerateKeyPair();
return pair;
}

[/SRC]
Далее из пары получаю эти байты.Вот не знаю правильно или нет ибо с rsa первый раз встречаюсь:
[SRC="csharp"]
SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(pair.Public);
byte[] serializedPublicBytes = publicKeyInfo.PublicKeyData.GetBytes();
[/SRC]
Вот где тут ошибка?(
Ответ
#34
Даже не подскажу. Копирует же по индексу, хз как может скопировать "не так как нужно".
Ответ
#35
Вообщем эту проблему я исправил,но старая как была так и осталась.Всё равно клиент вылетает
Вот код пакета:
[SRC="csharp"]
public override byte[] WriteImpl()
{
SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(pair.Public);
byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded();
byte[] buff = new byte[128];
Buffer.BlockCopy(serializedPublicBytes, 29, buff, 0, buff.Length);
//Buffer.BlockCopy(serializedPublicBytes, 159, buff, 128, 3);
Logger.Instance.Info("Key length = " + buff.Length);


using (var stream = new MemoryStream())
using (var writer = new BinaryWriter(stream))
{
writer.Write(new byte[] { 0x9F, 0x00 });
writer.Write(new byte[] { 0x02, 0x02 });
writer.Write(new byte[] {
0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,
0x02, 0x0b, 0x00, 0x09, 0x00,
0x85, 0x00, 0x80, 0x00, });
writer.Write(buff);
writer.Write(new byte[] { 0x01, 0x00, 0x11, 0x0A, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 });
// writer.Write(buff);

return stream.ToArray();
}
}
[/SRC]
Ответ
#36
Можно принт содержимого buff что в writer.Write(buff)?
Ответ
#37
PROGRAMMATOR Написал:Можно принт содержимого buff что в writer.Write(buff)?

вот
Код:
[Info] buff = 9E-5E-13-53-73-6E-C3-F0-63-04-B9-A1-64-B7-F5-79-A9-0D-71-9E

-8A-D3-E1-2E-8C-37-B1-C0-4B-41-9A-DE-DD-12-C2-93-B0-2A-CA-2F-98-D2-8F-

0A-C8-EB-0C-8D-FA-36-78-3C-F2-50-C6-9C-36-31-FA-A0-39-89-88-91-BD-43-

5D-62-73-7F-8E-90-83-C8-A5-A3-07-F0-58-66-46-70-FD-3E-E6-7F-01-A3-68-31-

14-B4-8C-D5-5C-E7-F5-DB-53-E9-59-B2-6F-BB-81-26-91-EA-6C-E8-C8-D7-2C-

8A-9F-A1-68-82-1A-F7-58-92-45-8E-E2-FE-68-7F
Ответ
#38
Блин, ну не знаю. Возьмите S2MO_32bit.dll и сгенерируйте пару, может получится сдампить приватный ключ.
Там еще в i3BaseDx.dll насколько я помню пару можно сгенерировать, не пробовал, но метод видел. И да, дарю:

[SRC="csharp"] public static class BufferExtensions
{
/// <summary>
/// Return string hex from byte array
/// </summary>
/// <param name="buffer"></param>
/// <returns></returns>
public static string ToHex(this byte[] buffer)
{
var sb = new StringBuilder();
int length = buffer.Length;
int counter = 0;

sb.AppendLine("|--------------------------------------------------------------------------|");
sb.AppendLine("| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |");
sb.AppendLine("|--------------------------------------------------------------------------|");

for (int i = 0; i < length; i++)
{
if (counter % 16 == 0)
{
sb.Append($"| {i:X4}: ");
}

sb.Append($"{buffer[i]:X2} ");
counter++;

if (counter == 16)
{
sb.Append(" ");

int charpoint = i - 15;

for (int j = 0; j < 16; j++)
{
byte n = buffer[charpoint++];

if (n > 0x1f && n < 0x80)
{
sb.Append((char)n);
}
else
{
sb.Append('.');
}
}

sb.Append("\n");
counter = 0;
}
}

int rest = length % 16;

if (rest > 0)
{
for (int i = 0; i < 17 - rest; i++)
{
sb.Append(" ");
}

int charpoint = length - rest;

for (int j = 0; j < rest; j++)
{
byte n = buffer[charpoint++];

if (n > 0x1f && n < 0x80)
{
sb.Append((char)n);
}
else
{
sb.Append('.');
}
}

sb.Append("\n");
}

sb.AppendLine("|--------------------------------------------------------------------------|");

return sb.ToString().TrimEnd('\n');
}
}

[/SRC]


Взял с какой-то софтины у VISTALL. Smile
Ответ
#39
PROGRAMMATOR Написал:Блин, ну не знаю. Возьмите S2MO_32bit.dll и сгенерируйте пару, может получится сдампить приватный ключ.
Там еще в i3BaseDx.dll насколько я помню пару можно сгенерировать, не пробовал, но метод видел. И да, дарю:

[SRC="csharp"] public static class BufferExtensions
{
/// <summary>
/// Return string hex from byte array
/// </summary>
/// <param name="buffer"></param>
/// <returns></returns>
public static string ToHex(this byte[] buffer)
{
var sb = new StringBuilder();
int length = buffer.Length;
int counter = 0;

sb.AppendLine("|--------------------------------------------------------------------------|");
sb.AppendLine("| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |");
sb.AppendLine("|--------------------------------------------------------------------------|");

for (int i = 0; i < length; i++)
{
if (counter % 16 == 0)
{
sb.Append($"| {i:X4}: ");
}

sb.Append($"{buffer[i]:X2} ");
counter++;

if (counter == 16)
{
sb.Append(" ");

int charpoint = i - 15;

for (int j = 0; j < 16; j++)
{
byte n = buffer[charpoint++];

if (n > 0x1f && n < 0x80)
{
sb.Append((char)n);
}
else
{
sb.Append('.');
}
}

sb.Append("\n");
counter = 0;
}
}

int rest = length % 16;

if (rest > 0)
{
for (int i = 0; i < 17 - rest; i++)
{
sb.Append(" ");
}

int charpoint = length - rest;

for (int j = 0; j < rest; j++)
{
byte n = buffer[charpoint++];

if (n > 0x1f && n < 0x80)
{
sb.Append((char)n);
}
else
{
sb.Append('.');
}
}

sb.Append("\n");
}

sb.AppendLine("|--------------------------------------------------------------------------|");

return sb.ToString().TrimEnd('\n');
}
}

[/SRC]


Взял с какой-то софтины у VISTALL. Smile

Ладно.Спасибо и на этомSmileбуду разбираться
Ответ
#40
Сообщайте о успехе если что. Smile
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  После перезахода сервер отказываеться видить клиент slawa560 6 2,152 08-08-2017, 11:26 PM
Последний пост: slawa560
  После покупки предмета 0 часов slawa560 1 1,468 08-06-2017, 12:15 AM
Последний пост: PROGRAMMATOR
  PROTOCOL_BASE_CONNECT_ACK Boris2105 1 1,708 05-17-2016, 03:29 PM
Последний пост: PROGRAMMATOR
  PROTOCOL_BASE_CONNECT_ACK Sojang 12 3,177 01-21-2016, 12:15 PM
Последний пост: PROGRAMMATOR

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)