private static Byte[] CreatePayload(Int64 offset, Byte magicByte, Byte attributes, Byte[] key, Byte[] payload) { var crcContentStream = new MemoryStream(); var crcContentWriter = new BigEndianBinaryWriter(crcContentStream); crcContentWriter.Write(magicByte); crcContentWriter.Write(attributes); crcContentWriter.Write((Int32)key.Length); crcContentWriter.Write(key); crcContentWriter.Write(payload.Length); crcContentWriter.Write(payload); var crcContentBytes = crcContentStream.ToArray(); var crc = Crc32Provider.Compute(crcContentBytes); var messageStream = new MemoryStream(); var messageWriter = new BigEndianBinaryWriter(messageStream); messageWriter.Write(crc); messageWriter.Write(crcContentBytes); var messageBytes = messageStream.ToArray(); var messageSetStream = new MemoryStream(); var messageSetWriter = new BigEndianBinaryWriter(messageSetStream); var messageSize = messageBytes.Length; messageSetWriter.Write(offset); messageSetWriter.Write(messageSize); messageSetWriter.Write(messageBytes); return(messageSetStream.ToArray()); }
public void Write(BigEndianBinaryWriter bw) { bw.Write((int)Identifier); bw.Write(EntryCount); bw.Write(Unknown1); bw.Write((int)-3); // not encrypted, we won't write encrypted archives :) }
public byte[] GenerateInviteData(int maxLength) { if (maxLength < 16) { throw new ArgumentException($@"{nameof(maxLength)} should be at least 18", nameof(maxLength)); } var memoryStream = new MemoryStream(); var binaryWriter = new BigEndianBinaryWriter(memoryStream); var allEndPoints = SavedIpEndPoints.Select(x => x.Key).Select(Convert.FromBase64String).OrderBy(x => x.Length).ThenBy(x => Guid.NewGuid()).ToList(); var needCount = 0; var totalLength = 16; while (totalLength < maxLength && needCount < allEndPoints.Count) { totalLength += allEndPoints[needCount].Length + 2; needCount++; } var inviteEndPoints = allEndPoints.Take(needCount).ToList(); binaryWriter.Write(Id.ToByteArray()); foreach (var endPoint in inviteEndPoints) { binaryWriter.Write((ushort)endPoint.Length); binaryWriter.Write(endPoint); } return(memoryStream.ToArray()); }
public byte[] Encrypt(ISymmetricKey key, byte[] data) { if (!(key is AesSymmetricKey)) { throw new ArgumentException("Wrong key type", nameof(key)); } var aesKey = (AesSymmetricKey)key; using (var rijndaelManaged = new RijndaelManaged()) { rijndaelManaged.KeySize = 128; rijndaelManaged.Key = aesKey.Key; rijndaelManaged.GenerateIV(); using (var memoryStream = new MemoryStream()) { memoryStream.Write(rijndaelManaged.IV, 0, 16); var encryptor = rijndaelManaged.CreateEncryptor(rijndaelManaged.Key, rijndaelManaged.IV); using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) { using (var binaryWriter = new BigEndianBinaryWriter(cryptoStream)) { binaryWriter.Write(data.Length); binaryWriter.Write(data); } return(memoryStream.ToArray()); } } } }
public void Write(BigEndianBinaryWriter bw) { /* * foreach (var entry in _entries) * { * entry.Write(bw); * } * byte[] stringData = Encoding.ASCII.GetBytes(_nameStringTable); * bw.Write(stringData); */ MemoryStream ms = new MemoryStream(); BigEndianBinaryWriter tempbw = new BigEndianBinaryWriter(ms); foreach (var entry in _entries) { entry.Write(tempbw); } BigEndianBinaryReader tempbr = new BigEndianBinaryReader(ms); ms.Position = 0; //bw.Write(DataUtil.Encrypt(tempbr.ReadBytes((int)tempbr.BaseStream.Length))); bw.Write(tempbr.ReadBytes((int)tempbr.BaseStream.Length)); byte[] stringData = Encoding.ASCII.GetBytes(_nameStringTable); //bw.Write(DataUtil.Encrypt(stringData)); bw.Write(stringData); }
protected override byte[] SerializePayload() { byte[] payload = new byte[sizeof(int) + sizeof(short)]; var writer = new BigEndianBinaryWriter(new MemoryStream(payload)); writer.Write(ChunkOffset); writer.Write(ChunkLength); return(payload); }
protected override byte[] SerializePayload() { byte[] payload = new byte[sizeof(byte) + sizeof(int)]; var writer = new BigEndianBinaryWriter(new MemoryStream(payload)); writer.Write((byte)2); writer.Write(DataLength); return(payload); }
public void ToStream(Stream streamTo) { var writer = new BigEndianBinaryWriter(streamTo); writer.Write(DestinationAddress.GetAddressBytes()); writer.Write(SourceAddress.GetAddressBytes()); writer.Write((ushort)Type); PayloadPacket.ToStream(streamTo); }
public override void Write(BigEndianBinaryWriter bw) { bw.Write(Flags); bw.Write(NameOffset); uint temp = (uint)ContentEntryIndex | 0x80000000; bw.Write(temp); bw.Write(ContentEntryCount); }
public void ToStream(Stream streamTo) { var writer = new BigEndianBinaryWriter(streamTo); writer.Write(SourcePort); writer.Write(DestinationPort); writer.Write(Length); writer.Write(checksum); PayloadPacket.ToStream(streamTo); }
protected override byte[] SerializePayload() { byte[] host = Encoding.ASCII.GetBytes(Host); byte[] payload = new byte[sizeof(ushort) + sizeof(ushort) + host.Length]; var writer = new BigEndianBinaryWriter(new MemoryStream(payload)); writer.Write((ushort)host.Length); writer.Write(host); writer.Write(Port); return(payload); }
protected override byte[] SerializePayload() { // bool/char 01 // 00 0A byte[] payload = new byte[sizeof(byte) + sizeof(uint)]; var writer = new BigEndianBinaryWriter(new MemoryStream(payload)); writer.Write(Success); writer.Write(Unknown); return(payload); }
protected override byte[] SerializePayload() { byte[] data = Encoding.ASCII.GetBytes(User); byte[] payload = new byte[sizeof(ushort) + data.Length]; var writer = new BigEndianBinaryWriter(new MemoryStream(payload)); writer.Write((ushort)data.Length); writer.Write(data); return(payload); }
public void Write(BigEndianBinaryWriter writer) { writer.Write(LayerWidth); writer.Write(LayerHeight); writer.Write((byte)SubLayers.Length); foreach (var sublayer in SubLayers) { sublayer.Write(writer); } }
protected override byte[] SerializePayload() { byte[] notification = Encoding.ASCII.GetBytes(Notification); byte[] payload = new byte[sizeof(byte) + sizeof(ushort) + notification.Length]; var writer = new BigEndianBinaryWriter(new MemoryStream(payload)); writer.Write(Unknown); writer.Write((ushort)notification.Length); writer.Write(notification); return(payload); }
public void SendMessage(byte messageId, byte[] data) { using (var ms = new MemoryStream()) { BinaryWriter writer = new BigEndianBinaryWriter(ms); writer.Write(messageId); writer.Write(data); writer.Flush(); Peer.Send(ms.ToArray()); } }
public byte[] GetBytes() { var memoryStream = new MemoryStream(); var writer = new BigEndianBinaryWriter(memoryStream); var encryptedSymmetricKey = AsymmetricHelper.Encrypt(networkKey, SymmetricKeyBytes); writer.Write((ushort)encryptedSymmetricKey.Length); writer.Write(encryptedSymmetricKey); return(memoryStream.ToArray()); }
public ResponseException(int errCode, string message) : base(null) { Function = RESPONSE_FUNCTION_EXCEPTION; var stream = new MemoryStream(); using (var writer = new BigEndianBinaryWriter(stream)) { writer.Write(errCode); writer.Write(message); Data = stream.ToArray(); } }
public byte[] GetBytes() { var memoryStream = new MemoryStream(); var writer = new BigEndianBinaryWriter(memoryStream); writer.Write((ushort)Clients.Length); foreach (var client in Clients) { writer.Write(client.Key); writer.Write(client.Value); } return(memoryStream.ToArray()); }
private BString EncodeEndPoints(IList <IPEndPoint> endpoints) { using (var ms = new MemoryStream()) { var writer = new BigEndianBinaryWriter(ms); foreach (var endpoint in endpoints) { writer.Write(endpoint.Address.GetAddressBytes()); writer.Write((ushort)endpoint.Port); } return(new BString(ms.ToArray())); } }
public byte[] GetBytes() { var memoryStream = new MemoryStream(); var writer = new BigEndianBinaryWriter(memoryStream); writer.Write((ushort)UnDirectClientIds.Length); foreach (var id in UnDirectClientIds) { writer.Write(id); } return(memoryStream.ToArray()); }
public byte[] GetBytes() { var memoryStream = new MemoryStream(); var writer = new BigEndianBinaryWriter(memoryStream); writer.Write((ushort)UnDirectClientPings.Length); foreach (var pingPair in UnDirectClientPings) { writer.Write(pingPair.Id); writer.Write(pingPair.Ping); } return(memoryStream.ToArray()); }
public override void Write(BigEndianBinaryWriter bw) { bw.Write(NameOffset); bw.Write(Flags); bw.Write((int)((uint)ContentEntryIndex | 0x80000000)); /* * if (newEntryIndex > 0) * bw.Write((int)((uint)newEntryIndex | 0x80000000)); * else * bw.Write((int)((uint)ContentEntryIndex | 0x80000000)); */ bw.Write(ContentEntryCount); bw.Write(UNKNOWN); }
protected override byte[] SerializePayload() { byte[] payload = new byte[sizeof(byte) + Properties.Length * TusProperty.Size]; var writer = new BigEndianBinaryWriter(new MemoryStream(payload)); writer.Write((byte)Properties.Length); foreach (var property in Properties) { writer.Write(property.Index); writer.Write(property.Value1); writer.Write(property.Value2); } return(payload); }
// Mock out the web request protected override Task <Stream> HttpGet(string requestUri) { BDictionary response; if (compact) { var ms = new MemoryStream(); var writer = new BigEndianBinaryWriter(ms); // Peer 1 writer.Write(new byte[] { 192, 168, 0, 1 }); writer.Write((ushort)5001); // Peer 2 writer.Write(new byte[] { 192, 168, 0, 2 }); writer.Write((ushort)5002); writer.Flush(); response = new BDictionary { ["peers"] = new BString(ms.ToArray()) }; } else { response = new BDictionary { ["peers"] = new BList { new BDictionary { ["ip"] = new BString("192.168.0.1"), ["port"] = new BNumber(5001) }, new BDictionary { ["ip"] = new BString("192.168.0.2"), ["port"] = new BNumber(5002) } } }; } var resultStream = new MemoryStream(response.EncodeAsBytes()); return(Task.FromResult((Stream)resultStream)); }
private async Task SendConnectResponse(int transactionId, long connectionId) { using (var ms = new MemoryStream()) { int action = (int)MessageAction.Connect; var writer = new BigEndianBinaryWriter(ms); writer.Write(action); writer.Write(transactionId); writer.Write(connectionId); var data = ms.ToArray(); await _client.SendAsync(data, data.Length, _sender); } }
public void StringNotSupportedTest() { // arrange var memoryStream = new MemoryStream(); var binaryWriter = new BigEndianBinaryWriter(memoryStream); binaryWriter.Write("test"); }
public void WhenMessageIsTruncatedThenBufferUnderRunExceptionIsThrown() { // arrange var offset = (Int64)0; var message = new Byte[] { }; var messageSize = message.Length + 1; var memoryStream = new MemoryStream(); var binaryWriter = new BigEndianBinaryWriter(memoryStream); binaryWriter.Write(offset); binaryWriter.Write(messageSize); binaryWriter.Write(message); var payloadBytes = memoryStream.ToArray(); // act/assert Assert.Throws <BufferUnderRunException>(() => Message.DecodeMessageSet(payloadBytes).ToList()); }
public void Write(BigEndianBinaryWriter writer) { writer.Write(_internalValue); foreach (var frame in Frames) { frame.Write(writer); } }
private byte[] BuildResponse() { BDictionary response; if (_compact) { var ms = new MemoryStream(); var writer = new BigEndianBinaryWriter(ms); // Peer 1 writer.Write(new byte[] { 192, 168, 0, 1 }); writer.Write((ushort)5001); // Peer 2 writer.Write(new byte[] { 192, 168, 0, 2 }); writer.Write((ushort)5002); writer.Flush(); response = new BDictionary { ["peers"] = new BString(ms.ToArray()), }; } else { response = new BDictionary { ["peers"] = new BList { new BDictionary { ["ip"] = new BString("192.168.0.1"), ["port"] = new BNumber(5001), }, new BDictionary { ["ip"] = new BString("192.168.0.2"), ["port"] = new BNumber(5002), }, }, }; } return(response.EncodeAsBytes()); }
public void Save() { BigEndianBinaryWriter TROPUSRWriter = new BigEndianBinaryWriter(new FileStream(path + "TROPUSR.DAT", FileMode.Open)); TROPUSRWriter.Write(header.StructToBytes()); TypeRecord account_id_Record = typeRecordTable[2]; TROPUSRWriter.BaseStream.Position = account_id_Record.Offset + 32; // 空行 TROPUSRWriter.Write(account_id.ToCharArray()); // 帳號 TypeRecord trophy_id_Record = typeRecordTable[3]; TROPUSRWriter.BaseStream.Position = trophy_id_Record.Offset + 16; TROPUSRWriter.Write(trophy_id.ToCharArray()); // 獎杯ID TROPUSRWriter.BaseStream.Position = trophy_id_Record.Offset + 80; //TROPUSRWriter.Write(AchievementRate[0]); // 完成度 //TROPUSRWriter.Write(AchievementRate[1]); // 完成度 //TROPUSRWriter.Write(AchievementRate[2]); // 完成度 //TROPUSRWriter.Write(AchievementRate[3]); // 完成度 TypeRecord TrophyType_Record = typeRecordTable[4]; TROPUSRWriter.BaseStream.Position = TrophyType_Record.Offset; foreach (TrophyType type in trophyTypeTable) { TROPUSRWriter.BaseStream.Position += 16; TROPUSRWriter.Write(type.StructToBytes()); } TypeRecord trophyListInfo_Record = typeRecordTable[5]; TROPUSRWriter.BaseStream.Position = trophyListInfo_Record.Offset + 16; TROPUSRWriter.Write(trophyListInfo.StructToBytes()); TypeRecord TrophyTimeInfo_Record = typeRecordTable[6]; TROPUSRWriter.BaseStream.Position = TrophyTimeInfo_Record.Offset; foreach (TrophyTimeInfo time in trophyTimeInfoTable) { TROPUSRWriter.BaseStream.Position += 16; TROPUSRWriter.Write(time.StructToBytes()); } TypeRecord unknowType7_Record = typeRecordTable[7]; TROPUSRWriter.BaseStream.Position = unknowType7_Record.Offset + 16; TROPUSRWriter.Write(unknowType7.StructToBytes()); TROPUSRWriter.Flush(); TROPUSRWriter.Close(); }
public void Save() { BigEndianBinaryWriter TROPTRNSWriter = new BigEndianBinaryWriter(new FileStream(path + "TROPTRNS.DAT", FileMode.Open)); TROPTRNSWriter.Write(header.StructToBytes()); TypeRecord account_id_Record = typeRecordTable[2]; TROPTRNSWriter.BaseStream.Position = account_id_Record.Offset + 32; // 空行 TROPTRNSWriter.Write(account_id.ToCharArray()); TypeRecord trophy_id_Record = typeRecordTable[3]; TROPTRNSWriter.BaseStream.Position = trophy_id_Record.Offset + 16; // 空行 TROPTRNSWriter.Write(trophy_id.ToCharArray()); TROPTRNSWriter.BaseStream.Position = trophy_id_Record.Offset + 32; // 字串長度不定,直接跳過 TROPTRNSWriter.Write(u1); Console.WriteLine(trophyInfoTable.Count); TROPTRNSWriter.Write(trophyInfoTable.Count+1); // AllGetTrophysCount AllSyncPSNTrophyCount = 0; for (int i = 0; i < trophyInfoTable.Count; i++) { if (trophyInfoTable[i].IsSync) { AllSyncPSNTrophyCount++; } } // AllSyncPSNTrophyCount++; TROPTRNSWriter.Write(AllSyncPSNTrophyCount+1); // Type 4 TypeRecord TrophyType_Record = typeRecordTable[4]; TROPTRNSWriter.BaseStream.Position = TrophyType_Record.Offset; TROPTRNSWriter.BaseStream.Position += 16; TROPTRNSWriter.Write(trophyInitTime.StructToBytes()); for (int i = 0; i < trophyInfoTable.Count; i++) { TROPTRNSWriter.BaseStream.Position += 16; TrophyInfo ti = trophyInfoTable[i]; ti.SequenceNumber = i+1; // 整理順序 //if (i == 0) { // ti._unknowInt2 = 0x100000; //} else { // ti._unknowInt2 = 0x100000; //} ti._unknowInt3 = 0; trophyInfoTable[i] = ti; TROPTRNSWriter.Write(trophyInfoTable[i].StructToBytes()); } byte[] emptyStruct = new byte[Marshal.SizeOf(typeof(TrophyInfo))]; Array.Clear(emptyStruct, 0, emptyStruct.Length); TrophyInfo emptyTrophyInfo = emptyStruct.ToStruct<TrophyInfo>(); for (int i = trophyInfoTable.Count; i < TrophyType_Record.Size; i++) { TROPTRNSWriter.BaseStream.Position += 16; emptyTrophyInfo.SequenceNumber = i + 1; TROPTRNSWriter.Write(emptyTrophyInfo.StructToBytes()); } TROPTRNSWriter.Flush(); TROPTRNSWriter.Close(); }