Ejemplo n.º 1
0
    public string ReadEncrypted(Transceiver connection, string message)
    {
        Logger.log("Encryption hook is decrypting incoming message.", Logger.Verbosity.moderate);
        byte[] bytes = System.Text.Encoding.Unicode.GetBytes(message);
        byte[] decrypted = Decrypt(this._local_cryptor, bytes);
        string final = System.Text.Encoding.Unicode.GetString(decrypted);
        try
        {
            Message test_message = new Message(null, final);
            Logger.log("THE MESSAGE: "+test_message.DumpMessage(), Logger.Verbosity.moderate);
            Logger.log("Type of message is: "+test_message.StringType(), Logger.Verbosity.moderate);
            if(test_message.type == Message.Type.UserToUser)
            {

                /** Test for encrypted middle **/

                Logger.log("Attempting to scrape inner message.", Logger.Verbosity.moderate);

                XmlDocument document  = new XmlDocument();
                document.LoadXml(final);
                XmlNodeList list = document.GetElementsByTagName("Content");
                XmlElement element = (XmlElement)list.Item(0);
                string core = element.InnerText;
                byte[] core_bytes = System.Text.Encoding.Unicode.GetBytes(core);
                byte[] decrypted_bytes = this.Decrypt(this._local_cryptor, core_bytes);
                string cdecrypted = System.Text.Encoding.Unicode.GetString(decrypted_bytes);
                Logger.log("Decrypted inner message: "+cdecrypted, Logger.Verbosity.loud);
                element.InnerXml = cdecrypted;
                return document.InnerXml;
            }
            else
            {
                return final;
            }
        }
        catch(Exception e)
        {
            Logger.log("Decryptor ERROR: "+e.Message+"\n"+e.StackTrace, Logger.Verbosity.moderate);
            return final;
        }
    }