[Red5devs] Handshake
Chris Sperry
biggyspender at gmail.com
Wed Jul 9 15:03:04 PDT 2008
Hi Red5Devs,
My first post here. I've been trying to implement my own media server
for the purposes of delivering radio streams, but having got the point
where the media server receives the "play" invoke, find myself staring
down the side of a very high precipice!
For what it's worth, here's my c# interpretation of RubyIZUMI's
handshake. It's a straight port from the Ruby code. I have no idea how
to verify if this really works or not, as I've not got past sending
invoke messages but Flash has never failed to connect...
cheers,
/chris
using System;
using System.Security.Cryptography;
namespace RTMP
{
class RtmpHandshake
{
public static byte[] handshakeServer =
{
0x01,0x86,0x4f,0x7f,0x00,0x00,0x00,0x00,0x6b,0x04,0x67,0x52,0xa2,0x70,0x5b,0x51,
0xa2,0x89,0xca,0xcc,0x8e,0x70,0xf0,0x06,0x70,0x0e,0xd7,0xb3,0x73,0x7f,0x07,0xc1,
0x72,0xd6,0xcb,0x4c,0xc0,0x45,0x0f,0xf5,0x4f,0xec,0xd0,0x2f,0x46,0x2b,0x76,0x10,
0x92,0x1b,0x0e,0xb6,0xed,0x71,0x73,0x45,0xc1,0xc6,0x26,0x0c,0x69,0x59,0x7b,0xbb,
0x53,0xb9,0x10,0x4d,0xea,0xc1,0xe7,0x7b,0x70,0xde,0xdc,0xf8,0x84,0x90,0xbf,0x80,
0xe8,0x85,0xb2,0x46,0x2c,0x78,0xa1,0x85,0x01,0x8f,0x8b,0x05,0x3f,0xa1,0x0c,0x1a,
0x78,0x70,0x8c,0x8e,0x77,0x67,0xbc,0x19,0x2f,0xab,0x26,0xa1,0x7e,0x88,0xd8,0xce,
0x24,0x63,0x21,0x75,0x3a,0x5a,0x6f,0xc2,0xa1,0x2d,0x4f,0x64,0xb7,0x7b,0xf7,0xef,
0xda,0x45,0xb2,0x51,0xfd,0xcb,0x74,0x49,0xfd,0x63,0x8b,0x88,0xfb,0xde,0x5a,0x3b,
0xab,0x7f,0x75,0x25,0xbb,0x35,0x51,0x03,0x81,0x12,0xff,0x66,0x02,0x3d,0x88,0xdc,
0x66,0xa2,0xfb,0x09,0x24,0x9d,0x86,0xfd,0xc4,0x00,0xc2,0x8b,0x6f,0xb7,0xb2,0x15,
0x10,0xc0,0x1b,0x71,0xa8,0x3e,0x88,0xeb,0x7e,0xf3,0xb2,0xe3,0xe8,0x3c,0x00,0x9b,
0x26,0xba,0xb4,0x5f,0x2c,0x36,0xf3,0x4a,0x59,0x09,0x1b,0xe5,0x00,0x9d,0xe4,0x66,
0x4d,0x05,0x66,0xd0,0xd1,0xd6,0x94,0x4f,0x64,0xa1,0x2e,0x8d,0x2f,0xb0,0x06,0x01,
0xb3,0x00,0x3d,0x77,0xcd,0x1b,0xdd,0xcc,0xbf,0xe9,0xcd,0x1a,0x6b,0x68,0xdd,0x1c,
0x7b,0xfd,0x2e,0xb1,0x8b,0x45,0xfd,0x5b,0x48,0x52,0x03,0x01,0xe8,0xf1,0x0f,0xe7,
0x27,0xfc,0x2a,0x52,0x7c,0x14,0x22,0x8b,0x74,0xbd,0xd9,0x97,0x63,0xef,0xfa,0xa3,
0xd9,0x21,0x12,0x0b,0x04,0x62,0x02,0x98,0x41,0xf2,0xb4,0xc3,0xe3,0xe2,0x2b,0x2a,
0xff,0xca,0xb4,0x48,0x1e,0x82,0x50,0x90,0x94,0x37,0x24,0x7e,0xa1,0x03,0x1a,0xf0,
0x9f,0x2b,0xbe,0x64,0xe5,0x53,0xb9,0xb6,0x43,0x8e,0x26,0x6c,0x63,0x72,0x8d,0xb7,
0x7c,0xb8,0x21,0x8f,0xbb,0x1c,0x2a,0x4e,0xc7,0xec,0xa7,0xa9,0xbc,0x15,0x10,0xe9,
0x4c,0x46,0xa5,0x60,0xa9,0x71,0x41,0xdd,0x25,0xf5,0xc1,0xf6,0xbd,0x75,0x1f,0xb0,
0x15,0xe0,0xed,0xc2,0x4b,0xac,0xf1,0xc8,0xef,0xa3,0x44,0xbe,0x90,0xab,0x77,0x28,
0xbf,0xc0,0xe0,0x63,0xaf,0xd9,0x07,0x9d,0x93,0x16,0x90,0x7a,0xe2,0xb4,0xe8,0xe2,
0x3e,0x4b,0x18,0x5f,0x3e,0x87,0x09,0xbe,0x36,0xd0,0x8f,0x7c,0x22,0x13,0x9f,0xc5,
0x78,0xe0,0x54,0x4c,0xa7,0x77,0x3f,0xdf,0x87,0x4a,0x28,0x7b,0x47,0x80,0x6a,0xf0,
0x50,0xcc,0xde,0x4c,0x44,0x41,0x74,0x3d,0x03,0x37,0x8b,0xbf,0x79,0x5b,0x8c,0xb0,
0x2f,0x6e,0x9c,0x98,0x29,0x22,0x49,0x2f,0xc9,0x6d,0xf1,0x08,0xc4,0x4f,0xb1,0x91,
0xb3,0xee,0x57,0xc1,0x17,0x5d,0xd0,0xe8,0x19,0xfb,0x9b,0xd6,0xa8,0x56,0x92,0x04,
0x4c,0x0e,0xe0,0x52,0x93,0x9a,0xec,0xed,0xf3,0xf7,0xef,0xd7,0x33,0xe3,0xcd,0xc7,
0x4b,0xac,0xb7,0xa9,0xa5,0x13,0x09,0x6c,0x94,0x49,0x72,0x03,0xf3,0xcf,0x15,0x31,
0xbc,0xb5,0x68,0xc2,0x49,0xe1,0x6e,0x7d,0xcb,0x4e,0xec,0xfc,0xa7,0xb7,0xed,0x1c,
0x02,0x49,0x0e,0x7f,0x25,0xeb,0xd1,0x81,0x81,0xc0,0xa7,0x49,0x32,0x16,0x11,0x31,
0x59,0x12,0x43,0xd3,0xa6,0x95,0x4a,0xc5,0xfe,0xdf,0x14,0xda,0xa6,0x5a,0xc0,0xd5,
0x6a,0xaf,0xb3,0xde,0x32,0x2a,0x13,0x03,0xd3,0x10,0x71,0x0b,0xc0,0x1e,0xcf,0xdb,
0xaa,0xcc,0xa6,0xb5,0x65,0x2e,0xc4,0x0b,0x5c,0xa7,0x1c,0x8b,0x2d,0x7f,0xc0,0x4c,
0x4a,0xa4,0x0b,0xa0,0x60,0xc4,0xcf,0xb1,0xbe,0xe4,0xe4,0x50,0xc9,0xcc,0xa0,0xe8,
0x79,0x12,0xc4,0xb4,0x70,0xf5,0x84,0x98,0x83,0xe2,0xa9,0x8f,0xba,0xff,0x88,0xa2,
0x21,0xba,0x00,0x3d,0xc4,0x57,0xe6,0x6a,0xf4,0xdc,0x01,0x1e,0xac,0x0a,0xcc,0x49,
0xaf,0x9c,0xc7,0xcd,0xc1,0x14,0x6e,0x12,0x87,0xf8,0x22,0xeb,0xdf,0x48,0xda,0x9f,
0xf2,0x8b,0xc1,0xd2,0x44,0x94,0xe4,0x3e,0xd0,0x85,0x56,0xe4,0x9a,0xfd,0xb9,0xb3,
0x35,0x38,0x1d,0x15,0x4d,0x28,0xab,0xb0,0x17,0xc0,0x5b,0x09,0x86,0x07,0xfa,0x69,
0xda,0x65,0xb8,0xd9,0x8f,0xe6,0xa1,0x83,0xab,0x07,0x98,0x3c,0x79,0xf4,0x59,0x08,
0x8f,0x83,0x77,0xbd,0xa1,0xa1,0x76,0x28,0x9c,0x0f,0xcc,0xdc,0xce,0x1f,0x16,0x02,
0x47,0x98,0x37,0x96,0x87,0xb1,0x70,0x3a,0xea,0xa4,0x65,0x77,0x98,0x12,0x27,0x23,
0x47,0xa8,0x1b,0x79,0xc0,0xec,0x53,0x32,0xe6,0xc1,0x61,0x7b,0xa0,0x98,0x9f,0xfc,
0x8d,0xe8,0x5c,0xaf,0xc6,0xbf,0x1f,0xd1,0x40,0xdc,0x28,0x81,0x34,0x68,0xb7,0xda,
0x10,0xf2,0x63,0x52,0xcb,0xe7,0x18,0x85,0xd5,0x99,0x33,0xee,0x9a,0x28,0xfa,0xdf,
0x6d,0xcb,0xc2,0xce,0x9d,0xed,0x9d,0xbd,0xfd,0xd7,0x0a,0xe4,0x89,0xd3,0x10,0x9b,
0xdb,0x6f,0xd9,0x37,0x8b,0x79,0x9c,0x94,0xc2,0x44,0x31,0x9f,0x24,0xef,0x21,0x1d,
0x5f,0xd6,0xf9,0x99,0x7b,0xef,0x59,0xe6,0xd6,0xdd,0x6a,0x74,0x82,0xb8,0xc5,0xfb,
0x1d,0xe8,0xfc,0x67,0x4f,0x4d,0xb5,0xcf,0xa9,0x52,0x94,0xc5,0xb7,0x32,0xa0,0x45,
0x0a,0x35,0x44,0x59,0x1e,0x1c,0x64,0x89,0x51,0x80,0x7b,0x1f,0x02,0x77,0x81,0xfa,
0xe9,0x26,0x4c,0x5f,0xe2,0x0d,0x05,0x55,0xee,0x71,0x71,0xfc,0x35,0x33,0x22,0x63,
0xf5,0x36,0x45,0xf6,0x2f,0xd0,0x13,0xb7,0x58,0x4f,0x35,0x19,0x59,0x0a,0xe5,0xf8,
0x8a,0x4c,0x59,0x32,0xbf,0xca,0xb0,0x06,0xc2,0x6c,0xa9,0x48,0x5b,0x4c,0x76,0x24,
0xae,0x9d,0x5b,0x7b,0x79,0x38,0x4e,0x9e,0x47,0x12,0x8a,0xc6,0xe0,0x04,0x37,0x72,
0xdd,0xaf,0x3d,0x0d,0x68,0x7e,0xd8,0x80,0x7b,0x07,0x23,0xce,0x40,0x4a,0xed,0x83,
0x55,0x56,0xfd,0xdb,0x95,0xb3,0x1c,0x33,0xf1,0x43,0xa8,0x0e,0x5e,0x67,0xd6,0x3a,
0xd0,0x89,0x5e,0x72,0x77,0x7f,0x10,0x3c,0xc4,0x7c,0x9a,0xa3,0x55,0xc5,0xd3,0x5b,
0x3a,0xae,0x12,0x0c,0x71,0x73,0xa0,0x58,0x90,0x54,0xa8,0x1c,0x31,0x20,0xdb,0xde,
0xdd,0x35,0xb1,0x09,0xa2,0xd0,0x6e,0x39,0x39,0xa5,0x0a,0x3d,0x8a,0x00,0x4b,0x95,
0x6f,0x8c,0x12,0x41,0xc6,0x46,0x10,0x5e,0x9d,0x50,0x85,0x0e,0x6b,0x81,0xa7,0x3b,
0x35,0xa6,0x38,0xf5,0xc2,0xba,0x6c,0x02,0xda,0x27,0x29,0x6e,0xe9,0x54,0x41,0xa4,
0x94,0x75,0xe8,0x55,0xc0,0xe3,0xc2,0x91,0x8a,0x1d,0xfb,0x2b,0xba,0x43,0xe7,0x45,
0x85,0xe8,0x13,0x07,0x1d,0x9c,0x37,0xa8,0xf3,0xca,0xf4,0x19,0x77,0xc4,0x65,0xd6,
0x18,0x3e,0x60,0x08,0x74,0x49,0xba,0xc8,0x86,0x37,0x8a,0x0f,0x79,0x91,0x53,0x20,
0x23,0x00,0xb9,0xc5,0x1b,0x01,0xdd,0x10,0x34,0x05,0x42,0xa0,0x64,0xab,0x4d,0x51,
0xf4,0x53,0x35,0x18,0xde,0x20,0x1f,0xaa,0xe2,0x40,0x0d,0x6d,0x77,0x36,0x1f,0xee,
0x3a,0x93,0xdb,0x1d,0xd6,0xa0,0x23,0xcc,0xe6,0xa8,0x44,0x8e,0xae,0x9c,0xd7,0x97,
0x6a,0x99,0xee,0x40,0x15,0xd5,0x5a,0x6d,0xf6,0x9c,0x2c,0x52,0xcd,0xfa,0xf4,0xc8,
0x02,0xee,0xf2,0x76,0x8b,0x49,0x6d,0x66,0x83,0x5f,0xbe,0x05,0x8e,0xf2,0x27,0x73,
0xdb,0x00,0xeb,0x9a,0xb4,0xbf,0x47,0x9a,0xbd,0xf1,0x4f,0x70,0xed,0x33,0xce,0x31,
0x9d,0x9f,0x95,0x80,0x9e,0x73,0x11,0x6c,0x03,0x7b,0x6e,0x62,0x9c,0xd0,0xaa,0xf6,
0x5d,0xe0,0xd8,0x96,0x94,0x46,0xd1,0x10,0x3c,0x1b,0x9d,0x40,0xdd,0xab,0xec,0x8a,
0x5b,0x1a,0xb6,0x19,0x57,0x99,0x09,0xe8,0xec,0x82,0xdc,0x06,0x39,0x86,0x25,0x3b,
0x67,0xb5,0x17,0xc5,0x6e,0x6e,0x1c,0x6c,0xea,0xbe,0xb8,0xdd,0x68,0xf8,0xf3,0x18,
0xf2,0x3c,0x99,0xdc,0xa9,0xd3,0xb2,0x7a,0x40,0x70,0x4b,0xc2,0xd2,0xa7,0xb3,0x42,
0x19,0xff,0x0b,0xdf,0x07,0x0e,0x6b,0x8e,0xef,0x63,0x92,0xd6,0x15,0x57,0x62,0x12,
0x99,0x96,0x96,0xa5,0x34,0x5a,0x2c,0x7c,0xf6,0xbc,0x16,0xb2,0x90,0xc3,0x11,0x5e,
0xba,0x0e,0xe4,0x22,0x84,0x32,0x50,0xda,0x1e,0x37,0x06,0x5b,0xef,0x69,0xb7,0x6f,
0x10,0xcb,0xdc,0x4d,0xfd,0xdb,0xa3,0xef,0x54,0xea,0xda,0x55,0xba,0x32,0xf4,0x86,
0x6b,0xb1,0xc8,0xfc,0x12,0x9a,0xfc,0xda,0xfd,0x2a,0xc2,0x7f,0x70,0xce,0x34,0x38,
0xe6,0x6a,0x7d,0x33,0xa0,0x16,0xfb,0xfd,0xa7,0xdf,0x2e,0xe3,0x5f,0x93,0x39,0xaa,
0x00,0xc7,0x38,0x2e,0x9c,0xf3,0xc4,0x12,0x46,0xcf,0x06,0xfe,0x0f,0x82,0x82,0x74,
0x00,0x71,0xf8,0x28,0x2f,0x9b,0x3f,0x9a,0x42,0x1b,0x3e,0xa6,0x0e,0x90,0xa7,0x45,
0xa6,0xcd,0x6e,0x88,0x94,0x08,0x3a,0xe5,0x56,0x36,0x77,0x68,0x2e,0x39,0xd3,0x45,
0xee,0x89,0xf0,0x71,0x42,0x2d,0xe2,0x1b,0xf5,0x11,0xf0,0xff,0x05,0x0c,0x78,0xa1,
0x65,0xcf,0x3c,0x9e,0xe3,0x37,0x72,0x3a,0x32,0xcb,0x1f,0xfd,0x9d,0x4a,0x0e,0xf7,
0x0b,0x2b,0xaa,0x57,0x2c,0x27,0xb3,0xa0,0x2a,0x0f,0x85,0x16,0x6c,0xe2,0xe0,0xa1,
0x48,0x8e,0x00,0x8d,0x6d,0xc8,0x10,0xfd,0x43,0x96,0x50,0x07,0x07,0x9a,0xbf,0x50,
0x62,0x76,0x3e,0xe1,0xf7,0x70,0xc1,0xb0,0x79,0x8e,0x61,0xe3,0xfb,0x05,0x5f,0xbb,
0x2d,0x76,0x69,0x89,0xf3,0x1e,0x62,0xf6,0x27,0x3d,0x3e,0x41,0x0f,0xf5,0x0f,0xc7,
0xf3,0x0e,0x3b,0xd5,0xed,0xcf,0xef,0x58,0xfa,0x39,0xdf,0x75,0x85,0x2b,0x8b,0xaa,
0x08,0x72,0x52,0xa7,0x98,0x42,0x95,0x7b,0xb7,0xe7,0x10,0xfe,0xdb,0x54,0x34,0xfb,
0x91,0x24,0x1c,0x07,0xfb,0x9c,0xce,0xd0,0x46,0xcf,0xc4,0x9d,0x09,0x49,0x24,0xec
};
private static byte[] keyServer =
{
0x47,0x65,0x6e,0x75,0x69,0x6e,0x65,0x20,0x41,0x64,0x6f,0x62,0x65,0x20,0x46,0x6c,
0x61,0x73,0x68,0x20,0x4d,0x65,0x64,0x69,0x61,0x20,0x53,0x65,0x72,0x76,0x65,0x72,
0x20,0x30,0x30,0x31,0xf0,0xee,0xc2,0x4a,0x80,0x68,0xbe,0xe8,0x2e,0x00,0xd0,0xd1,
0x02,0x9e,0x7e,0x57,0x6e,0xec,0x5d,0x2d,0x29,0x80,0x6f,0xab,0x93,0xb8,0xe6,0x36,
0xcf,0xeb,0x31,0xae
};
public static byte[] GetHandshake(byte[] clientData)
{
if (clientData[4] == 0)
{
return clientData;
}
int startPos = (clientData[8] + clientData[9] +
clientData[10] + clientData[11]) % 728 + 12;
int len = 32;
byte[] part = new byte[len];
for (int i = 0; i < len; ++i)
{
part[i] = clientData[startPos + i];
}
HMACSHA256 hmacSha256 = new HMACSHA256();
hmacSha256.Key = keyServer;
byte[] digestA=hmacSha256.ComputeHash(part);
Random rand = new Random();
byte[] server = new byte[1504];
for (int i = 0; i < 1504; ++i)
{
server[i] = (byte)rand.Next(256);
}
hmacSha256.Key = digestA;
byte[] digestB = hmacSha256.ComputeHash(server);
byte[] output = new byte[digestB.Length + server.Length];
server.CopyTo(output, 0);
digestB.CopyTo(output, server.Length);
return output;
}
}
}
Mondain wrote:
> Good catch, I'm glad you found it... I haven't integrated it into the
> core yet, since something like "connecting" has to be 100% before we
> commit it :)
>
> Paul
>
> On Wed, Jul 9, 2008 at 7:53 AM, Steven Zimmer <stevenlzimmer at gmail.com
> <mailto:stevenlzimmer at gmail.com>> wrote:
>
> Hello,
>
>
>
> There seems to be a bug with my handshake. Sometimes when it tries
> to connect it fails every 4^th time or so. Over the weekend I'm
> going to fix this up. I plan to still be active in helping out
> with red5, except I won't be spending office hours working on it now.
>
>
> _______________________________________________
> Red5devs mailing list
> Red5devs at osflash.org <mailto:Red5devs at osflash.org>
> http://osflash.org/mailman/listinfo/red5devs_osflash.org
>
>
>
>
> --
> http://gregoire.org/
> http://osflash.org/red5
> ------------------------------------------------------------------------
>
> _______________________________________________
> Red5devs mailing list
> Red5devs at osflash.org
> http://osflash.org/mailman/listinfo/red5devs_osflash.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://osflash.org/pipermail/red5devs_osflash.org/attachments/20080709/f29f2e0d/attachment-0001.html
More information about the Red5devs
mailing list