public int readInt() { int i = BytesUtils.bytesToInt(buffer, offset); this.offset = this.offset + 4; return(i); }
public void ReceivingNetworkMessage() { ReadonlyMemoryStream readonlyMemoryStream = new ReadonlyMemoryStream(); TcpAdapter tcpAdapter = new TcpAdapter(readonlyMemoryStream, new ConnectServerResponseBytesFiller()); byte[] rawResponse = BytesUtils.HexStringToByteArray( "0005" + "0000 0000 0000 0000 0000 0000 0000 0000 00DD 0000" + "0000 0000 0000 A290" + "00"); readonlyMemoryStream.buffer = rawResponse; tcpAdapter.Start(); // Wait data conversion. Thread.Sleep(200); ConnectServerResponse connectServerResponse = (ConnectServerResponse)tcpAdapter.Receive(); Assert.IsNotNull(connectServerResponse); Assert.AreEqual(connectServerResponse.EventType(), BytesUtils.HexStringToByteArray("0005")); Assert.AreEqual(connectServerResponse.SessionId, BytesUtils.HexStringToByteArray("0000 0000 0000 0000 0000 0000 0000 0000 00DD 0000")); Assert.AreEqual(connectServerResponse.UserId, 41616); Assert.AreEqual(connectServerResponse.ErrorCode, 0); }
public short readShort() { var i = BytesUtils.bytesToShort(buffer, offset); this.offset = this.offset + 2; return(i); }
public void SendingNetworkMessage() { WriteOnlyMemoryStream writeOnlyMemoryStream = new WriteOnlyMemoryStream(); TcpAdapter tcpAdapter = new TcpAdapter(writeOnlyMemoryStream, null); tcpAdapter.Start(); // ConnectServerRequest from TCP Adapter. ConnectServerRequest connectServerRequest = new ConnectServerRequest( NetworkMessage.EventType_ConnectServer, BitConverter.ToUInt32(BytesUtils.HexStringToByteArray("1289 CB79"), 0), 'A', new char[] { 'h', 'e', 'l', 'l', 'o' }, new char[] { 'p', 'a', 's', 's', '!' }); tcpAdapter.Send(connectServerRequest); // Wait data conversion. Thread.Sleep(200); byte[] raw_request = writeOnlyMemoryStream.buffer; Assert.AreEqual(BytesUtils.Slice(raw_request, 0, 2), BytesUtils.HexStringToByteArray("0005")); Assert.AreEqual(BytesUtils.Slice(raw_request, 2, 4), BytesUtils.HexStringToByteArray("1289 CB79")); Assert.AreEqual(BitConverter.ToString(raw_request, 6, 256), "hello"); Assert.AreEqual(BitConverter.ToString(raw_request, 262, 256), "pass!"); }
public long readLong() { long l = BytesUtils.bytesToLong(buffer, offset); this.offset = this.offset + 8; return(l); }
public bool VerifyContentHash(byte[] computedHash) { if (this._contentHash == null) { byte tag = this._binaryReader.ReadByte(); if (tag != 0x42) { throw new InvalidDataException(); } IFileStreamHandler <IDictionary <string, object> > dataHandler = this._handlerFactory.GetHandler <IDictionary <string, object> >(tag); IDictionary <string, object> contentDirectory = dataHandler.Handle(this._binaryReader); contentDirectory.TryGetValue("type", out var typeValue); if ("metadata".Equals(typeValue)) { contentDirectory.TryGetValue("file_md5", out var md5Value); string md5String = md5Value as string; if (md5String == null) { throw new InvalidDataException(); } this._contentHash = md5String; } } byte[] hashExpected = BytesUtils.HexStringToByteArray(this._contentHash); return(BytesUtils.ByteArrayCompare(hashExpected, computedHash)); }
private void Handle() { try { RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(); string mCryptoProviderPublicKey = rsaProvider.ToXmlString(false); byte[] keyData = Encoding.ASCII.GetBytes(mCryptoProviderPublicKey); mSocket.Send(keyData); byte[] passwordDataDecrypted = ReceiveAndDecryptData(rsaProvider); string password = Encoding.ASCII.GetString(passwordDataDecrypted); byte[] okData = Encoding.ASCII.GetBytes(Consts.SERVER_OK); byte[] wrongPasswordData = Encoding.ASCII.GetBytes(Consts.SERVER_WRONG_PASSWORD); byte[] wrongConnectInfoData = Encoding.ASCII.GetBytes(Consts.SERVER_INVALID_CONNECT_INFO); if (password == mPassword) { mSocket.Send(okData); } else { mSocket.Send(wrongPasswordData); throw new WrongPasswordException(); } byte[] connectInfoData = ReceiveAndDecryptData(rsaProvider); TripleDESCryptoServiceProvider tdesProvider; tdesProvider = new TripleDESCryptoServiceProvider(); tdesProvider.Key = BytesUtils.GetRange(connectInfoData, 0, 24); tdesProvider.IV = BytesUtils.GetRange(connectInfoData, 24, 8); int connectType = BitConverter.ToInt32(connectInfoData, 32); switch (connectType) { case ConnectType.TYPE_REMOTE_CONSOLE: mSocket.Send(okData); mRCServer = new RemoteConsoleServer(mSocket, tdesProvider); break; case ConnectType.TYPE_REMOTE_DESKTOP: mSocket.Send(okData); mRCServer = new RemoteDesktopServer(mSocket); break; case ConnectType.TYPE_REMOTE_EXPLORER: mSocket.Send(okData); mRCServer = new RemoteExplorerServer(mSocket); break; default: mSocket.Send(wrongConnectInfoData); throw new InvalidConnectTypeException(); } mRCServer.BeginService(); } catch { mSocket.Close(); } }
public String readPadStringAndRightTrim(int totalLength) { String str = BytesUtils.toStringAndRightTrim(buffer, offset, totalLength); this.offset = offset + totalLength; return(str); }
private void Connect() { try { byte[] dataBuffer = new byte[1024]; int readCount = 0; mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); mSocket.Connect(mHost, mPort); RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(); readCount = Socket.Receive(dataBuffer); string cryptoProviderPublicKey = Encoding.ASCII.GetString(dataBuffer, 0, readCount); rsaProvider.FromXmlString(cryptoProviderPublicKey); byte[] passwordData = Encoding.ASCII.GetBytes(mPassword); byte[] passwordDataEncrypted = rsaProvider.Encrypt(passwordData, true); mSocket.Send(passwordDataEncrypted); readCount = mSocket.Receive(dataBuffer); string result = Encoding.ASCII.GetString(dataBuffer, 0, readCount); if (result != "OK") { InvalidPasswordException exception = new InvalidPasswordException(); exception.Password = mPassword; exception.ServerMessage = result; throw exception; } mCryptoServiceProvider = new TripleDESCryptoServiceProvider(); byte[] keyData = mCryptoServiceProvider.Key; byte[] ivData = mCryptoServiceProvider.IV; byte[] typeData = BitConverter.GetBytes(mConnectType); byte[] connectData = BytesUtils.Merge(keyData, ivData, typeData); byte[] connectDataEncrypted = rsaProvider.Encrypt(connectData, true); mSocket.Send(connectDataEncrypted); readCount = mSocket.Receive(dataBuffer); result = Encoding.ASCII.GetString(dataBuffer, 0, readCount); if (result != "OK") { InvalidConnectInfoException exception = new InvalidConnectInfoException(); exception.ServerMessage = result; throw exception; } ConnectSucceedArgs args = new ConnectSucceedArgs(); mForm.Invoke(mConnectSucceedHandler, this, args); } catch (Exception ex) { mSocket.Close(); mSocket = null; mCryptoServiceProvider = null; ConnectFailArgs args = new ConnectFailArgs(); args.Reason = ex; mForm.Invoke(mConnectFailHandler, this, args); } }
void ProcessCommand() { byte[] requestMessage = new byte[Nagios.Net.Client.Nrpe.NrpeConstants.MAX_PACKETBUFFER_LENGTH]; Array.Copy(_data, 10, requestMessage, 0, Math.Min(_data.Length - 10, requestMessage.Length)); string tmp = System.Text.ASCIIEncoding.ASCII.GetString(requestMessage); string request = tmp.Substring(0, tmp.IndexOf('\0')); string[] prms = request.Split(new char[] { '!' }, StringSplitOptions.RemoveEmptyEntries); MessageState msgState = MessageState.STATE_UNKNOWN; string response = request; if (prms.Count() > 0) { string cmdName = prms[0]; // find module that can run command IModule module = NrpeRegisteredCommands.GetModule(cmdName); if (module != null && module is INrpe) { ((INrpe)module).RunCommand(cmdName, null, out msgState, out response); } } byte[] rsp = System.Text.ASCIIEncoding.ASCII.GetBytes(response); byte[] responceMessage = new byte[Nagios.Net.Client.Nrpe.NrpeConstants.MAX_PACKETBUFFER_LENGTH]; Array.Copy(rsp, 0, responceMessage, 0, Math.Min(rsp.Length, responceMessage.Length)); // send response NrpePacketHeader hdr = new NrpePacketHeader(); hdr.packet_version = BitConverter.ToInt16(new byte[] { _data[1], _data[0] }, 0); hdr.packet_type = BitConverter.ToInt16(new byte[] { _data[3], _data[2] }, 0); hdr.crc32_value = BytesUtils.ReverseBytes(BitConverter.ToUInt32(new byte[] { _data[4], _data[5], _data[6], _data[7] }, 0)); using (MemoryStream ms = new MemoryStream(_data)) { ms.Seek(0, SeekOrigin.Begin); ms.Position = 4; ms.WriteInt(0); int hash = Nagios.Net.Client.Nsca.CRC32.Compute(ms.ToArray(), 0, Nagios.Net.Client.Nrpe.NrpeConstants.MAX_PACKET_LENGTH); ms.Seek(0, SeekOrigin.Begin); ms.WriteShort((short)PacketVersion.NRPE_PACKET_VERSION_2); ms.WriteShort((short)PacketType.RESPONSE_PACKET); ms.WriteInt(0); ms.WriteShort((short)msgState); ms.Write(responceMessage, 0, responceMessage.Length); ms.Position = Nagios.Net.Client.Nrpe.NrpeConstants.MAX_PACKET_LENGTH - 2; ms.WriteShort(0); int hash2 = Nagios.Net.Client.Nsca.CRC32.Compute(ms.ToArray(), 0, Nagios.Net.Client.Nrpe.NrpeConstants.MAX_PACKET_LENGTH); ms.Position = 4; ms.WriteInt(hash2); _data = ms.ToArray().Take(Nagios.Net.Client.Nrpe.NrpeConstants.MAX_PACKET_LENGTH).ToArray(); } }
public void CreateFromGrayscale() { byte value = 128; var pixel = new Pixel32(value); var color = Color.FromArgb(value, value, value); Assert.AreEqual(color.ToArgb(), BytesUtils.GetDataFromArgb(pixel.A, pixel.R, pixel.G, pixel.B)); }
private byte[] ReceiveAndDecryptData(RSACryptoServiceProvider rsaProvider) { byte[] dataBuffer = new byte[1024]; int dataCount = mSocket.Receive(dataBuffer); byte[] dataEncrypted = BytesUtils.GetRange(dataBuffer, 0, dataCount); byte[] dataDecrypted = rsaProvider.Decrypt(dataEncrypted, true); return(dataDecrypted); }
public void CreateNewFromRGB() { byte r = 123; byte g = 98; byte b = 40; var pixel = new Pixel32(r, g, b); var color = Color.FromArgb(r, g, b); Assert.AreEqual(color.ToArgb(), BytesUtils.GetDataFromArgb(pixel.A, pixel.R, pixel.G, pixel.B)); }
private static Image <Pixel32> CreateImageFromData(int[] data, int width, int height) { var result = new Image <Pixel32>(width, height); for (int i = 0; i < data.Length; i++) { BytesUtils.GetArgbFromData(data[i], out byte a, out byte r, out byte g, out byte b); result.Set(i, new Pixel32(a, r, g, b)); } return(result); }
public static Bitmap CreateBitmapFromImage(Image <Pixel32> image) { var data = new int[image.Size]; for (int i = 0; i < data.Length; i++) { var pixel = image.Get(i); data[i] = BytesUtils.GetDataFromArgb(pixel.A, pixel.R, pixel.G, pixel.B); } return(CreateBitmapFromData(data, image.Width, image.Height)); }
public void put4PrefixedString(String str) { var bytes = BytesUtils.toBytes(str); if (bytes == null) { putInt(NULL); return; } put4PrefixedBytes(bytes); }
public void put2PrefixedString(String str) { var bytes = BytesUtils.toBytes(str); if (bytes == null) { putShort((short)NULL); return; } if (bytes.Length > Int16.MaxValue) { throw new IndexOutOfRangeException("too large String size:" + bytes.Length); } put2PrefixedBytes(bytes); }
public void testOpenSslKdf() { byte[] passCode = Encoding.ASCII.GetBytes("test"); byte[] salt = BytesUtils.HexStringToByteArray("F6818CAE131872BD"); Tuple <byte[], byte[]> keyParameters = CryptoUtils.OpenSslKdf("md5", passCode, null, 32, 16); Console.WriteLine(BytesUtils.ByteArrayToLowerHexString(keyParameters.Item1)); Console.WriteLine(BytesUtils.ByteArrayToLowerHexString(keyParameters.Item2)); byte[] encrypted = BytesUtils.HexStringToByteArray( "7faeb63f28f0ae4cd1eb5a92447c8111591755ded24d4a55ea8ec8ac9b3e9bc80dd616aa981b4cccbbeadbf1a3d77e2b"); byte[] password = BytesUtils.HexStringToByteArray("62754a78392f79396656"); salt = new byte[0]; Tuple <byte[], byte[]> tmp = CryptoUtils.OpenSslKdf("md5", password, salt, 32, 16); byte[] plain = CryptoUtils.DecryptByteArray(tmp.Item1, tmp.Item2, encrypted); Console.WriteLine(BytesUtils.ByteArrayToLowerHexString(plain)); Console.WriteLine("42785932412d6f75527049385952766d69576969354b6b4346334c564e314f36"); }
/// <summary> /// 发送消息给服务器 /// </summary> /// <param name="netSendModel"></param> public override void Send(NetSendModel netSendModel) { if (isConnection == false) { Log("服务器未连接,请先连接服务器"); return; } TSendModel sendModel = (TSendModel)netSendModel; BytesUtils bytesUtils = new BytesUtils(sendModel.msgId, sendModel.array); var buff = bytesUtils.toArray(); sendEventArg.SetBuffer(buff, 0, buff.Length); bool willRaiseEvent = socket.SendAsync(sendEventArg); if (!willRaiseEvent) { ProcessSend(sendEventArg); } }
public void Size_Returns_The_Correct_Size() { CircularArrayQueue c5 = new CircularArrayQueue(5); c5.EnQueue(new byte[] { 1, 2, 3, 4 }); c5.EnQueue(new byte[] { 5, 6, 7, 8 }); Assert.That(c5.Size, Is.EqualTo(8)); byte[] dq1 = c5.DeQueue(3); Assert.That(BytesUtils.ByteArrayCompare(dq1, new byte[] { 1, 2, 3 }), Is.True); c5.EnQueue(new byte[] { 9, 10, 11, 12, 13 }); Assert.That(c5.Size, Is.EqualTo(10)); byte[] dq2 = c5.DeQueue(6); Assert.That(BytesUtils.ByteArrayCompare(dq2, new byte[] { 4, 5, 6, 7, 8, 9 }), Is.True); byte[] dq3 = c5.DeQueue(3); Assert.That(BytesUtils.ByteArrayCompare(dq3, new byte[] { 10, 11, 12 }), Is.True); Assert.That(c5.Size, Is.EqualTo(1)); byte[] dq4 = c5.DeQueue(1); Assert.That(BytesUtils.ByteArrayCompare(dq4, new byte[] { 13 }), Is.True); }
public void InitParsing() { //Read "__CLOUDSYNC_ENC__" this._stream = this._fileItem.GetStream(); this._binaryReader = new BinaryReader(this._stream); byte[] magicBytesRead = this._binaryReader.ReadBytes(MagicBytes.Length); if (!BytesUtils.ByteArrayCompare(MagicBytes, magicBytesRead)) { throw new InvalidDataException($"File {this._fileItem.Name} is not Synology Cloud Sync file."); } //check "__CLOUDSYNC_ENC__" Md5 hash byte[] magicHashRead = this._binaryReader.ReadBytes(32); byte[] magicHashComputed = Encoding.ASCII.GetBytes(BytesUtils.ByteArrayToLowerHexString(CryptoUtils.Md5(MagicBytes))); if (!BytesUtils.ByteArrayCompare(magicHashRead, magicHashComputed)) { throw new InvalidDataException($"File {this._fileItem.Name} is not a valid Synology Cloud Sync file."); } }
public long readSVLong() { return(BytesUtils.zigzagToLong(readVLong())); }
public int readSVInt() { return(BytesUtils.zigzagToInt(readVInt())); }
public void putSVLong(long v) { putVar64(BytesUtils.longToZigZag(v)); }
private void putVar64(long v) { this.offset = BytesUtils.writeVar64(v, buffer, offset); }
public void putLong(long v) { this.offset = BytesUtils.writeLong(v, buffer, offset); }
public void putShort(short v) { this.offset = BytesUtils.writeShort(v, buffer, offset); }
private void putVar32(int v) { this.offset = BytesUtils.writeVar32(v, buffer, offset); }
public void putSVInt(int v) { this.offset = BytesUtils.writeSVar32(v, buffer, offset); }
public void putInt(int v) { this.offset = BytesUtils.writeInt(v, buffer, offset); }