ReadUInt16() public method

public ReadUInt16 ( ) : ushort
return ushort
Esempio n. 1
0
 public override void PacketHandler(N2HBinaryReader reader)
 {
     var marker = reader.ReadByte();
     if (marker != 0x0b)
     {
         Logger.FATAL("Marker hand shake wrong:should be 0b and not {0}", marker);
         return;
     }
     var time = reader.ReadUInt16();
     var id = reader.ReadByte();
     var length = reader.ReadUInt16();
     reader.Shrink(length);
     var pos = Writer.BaseStream.Position;
     Writer.BaseStream.Position += 3;
     var idResponse = PerformHandshake(id, reader, pos);
     
     if (idResponse > 0)
     {
         Writer.BaseStream.Position = pos;
         Writer.Write(idResponse);
         Writer.Write((short)(Writer.BaseStream.GetAvaliableByteCounts() - 2));
         Flush(0x0b);
     }
     FarId = 0;
 }
Esempio n. 2
0
        public static bool ReadCRC(N2HBinaryReader packet)
        {
	        // Check the first 2 CRC bytes 
	        packet.BaseStream.Position = 4;
            UInt16 sum = packet.ReadUInt16();
	        return (sum == CheckSum(packet.BaseStream));
        }
Esempio n. 3
0
 public bool PeekUInt16(out ushort word)
 {
     word = Br.ReadUInt16();
     return(SeekBehind(2));
 }
        public static bool Deserialize(Stream src, out VideoAvc dest)
        {
            dest = new VideoAvc();
            if (src.GetAvaliableByteCounts() < 2)
            {
                Logger.FATAL("Not enough data");
                return false;
            }
            var reader = new N2HBinaryReader(src);

            var _spsLength = reader.ReadUInt16();
            if (src.GetAvaliableByteCounts() < _spsLength + 2 + 8)
            {
                Logger.FATAL("Not enough data");
                return false;
            }
            var psps = reader.ReadBytes(_spsLength);
            var _ppsLength = reader.ReadUInt16();
            if (src.GetAvaliableByteCounts() < _ppsLength + 2 + 8)
            {
                Logger.FATAL("Not enough data");
                return false;
            }
            var ppps = reader.ReadBytes(_ppsLength);

            dest.Init(psps, ppps);
            dest._widthOverride = reader.ReadUInt32();
            dest._heightOverride = reader.ReadUInt32();

            return true;
        }
Esempio n. 5
0
        public override void PacketHandler(N2HBinaryReader reader)
        {
            if(Checked){
                lock (Writer)
                {
                    base.PacketHandler(reader);
                }
                return;
            }
            var marker = reader.ReadByte();
            if (marker != 0x0b)
            {
                Logger.FATAL("Marker hand shake wrong:should be 0b and not {0:X}", marker);
                return;
            }
            var time = reader.ReadUInt16();
            var type = reader.ReadByte();
            var length = reader.ReadUInt16();
            byte[] tag;
            Logger.Debug("handshake {0:X} len:{1}",type,length);
            switch (type)
            {
                case 0x70:
              
                    tag = reader.ReadBytes(reader.ReadByte());
                    var cookieBytes = reader.ReadBytes(reader.ReadByte());
                    var targetCertificat = reader.ReadBytes((int)reader.BaseStream.GetAvaliableByteCounts());
                    var nonce = new byte[0];
                    _dh = RtmfpUtils.BeginDiffieHellman(ref nonce, true);
                    Peer.Id = Target.Sha256.ComputeHash(nonce, 0, nonce.Length);
                    HandShake38(cookieBytes, nonce);
                    _handshake = () => HandShake38(cookieBytes, nonce);
                    break;
                case 0x71:
                    tag = reader.ReadBytes(reader.ReadByte());
                    var flag = reader.ReadByte();
                    var address = new IPEndPoint(new IPAddress(reader.ReadBytes(4)), reader.ReadInt16());
                    Target.Address.Port = address.Port;
                    Logger.Debug("redirect to {0}",address.ToString());
                    Handler.FarProtocol.IOHandler.Socket.Connect(Target.Address);
                    _handshake();
                    break;
                case 0x78:
                  
                    FarId = reader.ReadUInt32();
                    var targetNonce = reader.ReadBytes((int)reader.Read7BitLongValue());
                    var must58 = reader.ReadByte();
                    Debug.WriteLineIf(must58!=0x58,$"must58!{must58}");
                    var key = new byte[RtmfpUtils.KEY_SIZE];
                    Buffer.BlockCopy(targetNonce, targetNonce.Length - RtmfpUtils.KEY_SIZE, key, 0, RtmfpUtils.KEY_SIZE);
                    var  sharedSecret = _dh.CreateSharedKey(key);
                    byte[] decryptKey;
                    byte[] encryptKey;
                    RtmfpUtils.ComputeAsymetricKeys(sharedSecret, _certificat, targetNonce, out encryptKey, out decryptKey);
                    Checked = true;
                    _handshakeTimeoutTimer.Stop();
                    AesEncrypt = new AESEngine(encryptKey, AESEngine.Direction.ENCRYPT);
                    AesDecrypt = new AESEngine(decryptKey);
                    PrevAesType = AESEngine.AESType.DEFAULT;
                    Application = Handler.Application;
                    Handler.CreateSession(Peer, null);

                    break;
                default:

                    break;
            }

        }