Exemplo n.º 1
0
        /// <summary>
        /// Creates object which represents sent private message from application/x-www-form-urlencoded serialization type
        /// </summary>
        /// <param name="httpMessage">Original HTTP message from HTTP snooper</param>
        /// <param name="exportObject">For referencing XChatSnooperExport from XChat object</param>
        /// <returns>Instance of Xchat sent message</returns>
        private static XChatPrivateMessage GetXChatPrivateSentMessage(HTTPMsg httpMessage, SnooperExportBase exportObject)
        {
            var strippedContent = Encoding.GetEncoding("ISO-8859-2").GetString(httpMessage.HTTPContent.Content); //Convert bytes to string in ISO-8859-2 encoding

            var parsedUrl = HttpUtility.ParseQueryString(strippedContent, Encoding.GetEncoding("ISO-8859-2"));   //Parse query from message body

            var message = new XChatPrivateMessage(exportObject)
            {
                Time    = httpMessage.TimeStamp.ToString("dd. MM. yyyy HH:mm:ss"),
                Text    = parsedUrl["message"],
                Target  = parsedUrl["to"],
                Subject = parsedUrl["subject"]
            };

            //Getting sender nickname from Cookie in header:
            var           requestHeader = httpMessage.HTTPHeader as HttpRequestHeader;
            List <string> values; //List which contains values from Cookie in HTTP request header

            if (requestHeader.Fields.TryGetValue("Cookie", out values))
            {
                var sb = new StringBuilder();
                foreach (var value in values)
                {
                    sb.Append(value).Append("; ");
                }                                                                                 //Concatenes values from Cookie in HTTP header

                var regex = new Regex(@"[0-9]{8}=[0-9]{8}%3A([0-9a-zA-Z][a-zA-Z0-9\.-_]{2,19})"); //Regular expression for getting message sender nickname
                var match = regex.Match(sb.ToString());

                message.Source = match.Success ? match.Groups[1].ToString() : "";
            }
            else
            {
                message.Source = "";
            }

            return(message);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates object which represents recieved private message from HTML document
        /// </summary>
        /// <param name="httpMessage">Original HTTP message</param>
        /// <param name="html">Parsed HTML document</param>
        /// <param name="exportObject">For referencing XChatSnooperExport from XChat object</param>
        /// <returns>Instance of Xchat received message</returns>
        private static XChatPrivateMessage GetXChatPrivateReceivedMessage(HTTPMsg httpMessage, HtmlDocument html, SnooperExportBase exportObject)
        {
            HtmlNode node;
            var      message = new XChatPrivateMessage(exportObject);

            var form = html.DocumentNode.SelectSingleNode("//form[@name='readmsg']");                                        //Node that represents form with class readmsg

            node           = form.SelectSingleNode("//span[@class='offlinesm']/child::a[@title='profil uživatele']/strong"); //Position in document where sender nickname is located
            message.Source = node?.InnerText;

            node           = form.SelectSingleNode("//table/descendant::table/tr[4]/td[2]"); //Position in document where receiver nickname is located
            message.Target = node?.InnerText;

            node         = form.SelectSingleNode("//div[@class='boxudaje2']/div[@class='boxudaje3']/descendant::div"); //Position in document where message text is located
            message.Text = node?.InnerText;

            node            = form.SelectSingleNode("//table/descendant::table/tr[2]/td[2]");
            message.Subject = node?.InnerText;

            message.Time = httpMessage.TimeStamp.ToString("dd. MM. yyyy HH:mm:ss");

            return(message);
        }