Vài lời cho các bạn !

Blog được xây dựng nhằm cung cấp, sưu tầm nguồn hướng dẫn cho các newbie học tập về hacking website, chứ không mang tính chất vẽ đường cho ai đó đi phá hoại(deface) nhằm gây tổn hại cho website hay sever nào đó. Mong you hãy coi đây như là cuốn ebook hay và bổ ích, cần là giở để xem. và hãy tận dụng nó đúng mục đích ! thanks !

Friday, June 22, 2012

Hàm xử lý các ký tự bị mã hóa khi xem Source HTML của trang web Viết bằng C#

Có những lúc cần xử lý thông tin trên các trang web, nhưng khi thực hiện request thì web server trả về các ký tự bị mã hóa như Á;o: Cha giam cầm, cưỡng hiếp và có 7 con với con g& . Với những trường hợp này mình có thể xử lý bằng các phần mềm như FrontPage để chuyển mã, ngoài ra chúng ta có thể viết 1 hàm để xử lý. Thuật toán thật ra rất đơn giản là chuyển mã thành các ký tự tương ứng giống như thuật toán trong bài viết

Chi tiết hàm này như sau:


using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace DaMi.Utilities
{
    public class clsGiaiMaCodeHtmlToVietNam
    {
        public static string DecodeHtml(string sCodedString)
        {
            StringBuilder sResult = new StringBuilder(sCodedString);
            ArrayList arlChuviet = new ArrayList();
            arlChuviet.AddRange(new string[2] { "Á", "Á" });
            arlChuviet.AddRange(new string[2] { "á", "á" });
            arlChuviet.AddRange(new string[2] { "À", "À" });
            arlChuviet.AddRange(new string[2] { "à", "à" });
            arlChuviet.AddRange(new string[2] { "Ã", "Ã" });
            arlChuviet.AddRange(new string[2] { "ã", "ã" });
            arlChuviet.AddRange(new string[2] { "?", "Ả" });
            arlChuviet.AddRange(new string[2] { "?", "ả" });
            arlChuviet.AddRange(new string[2] { "?", "Ạ" });
            arlChuviet.AddRange(new string[2] { "?", "ạ" });
            arlChuviet.AddRange(new string[2] { "Â", "Â" });
            arlChuviet.AddRange(new string[2] { "â", "â" });
            arlChuviet.AddRange(new string[2] { "?", "Ấ" });
            arlChuviet.AddRange(new string[2] { "?", "ấ" });
            arlChuviet.AddRange(new string[2] { "?", "Ầ" });
            arlChuviet.AddRange(new string[2] { "?", "ầ" });
            arlChuviet.AddRange(new string[2] { "?", "Ẫ" });
            arlChuviet.AddRange(new string[2] { "?", "ẫ" });
            arlChuviet.AddRange(new string[2] { "?", "Ẩ" });
            arlChuviet.AddRange(new string[2] { "?", "ẩ" });
            arlChuviet.AddRange(new string[2] { "?", "Ậ" });
            arlChuviet.AddRange(new string[2] { "?", "ậ" });
            arlChuviet.AddRange(new string[2] { "A", "Ă" });
            arlChuviet.AddRange(new string[2] { "a", "ă" });
            arlChuviet.AddRange(new string[2] { "?", "Ắ" });
            arlChuviet.AddRange(new string[2] { "?", "ắ" });
            arlChuviet.AddRange(new string[2] { "?", "Ằ" });
            arlChuviet.AddRange(new string[2] { "?", "ằ" });
            arlChuviet.AddRange(new string[2] { "?", "Ẵ" });
            arlChuviet.AddRange(new string[2] { "?", "ẵ" });
            arlChuviet.AddRange(new string[2] { "?", "Ẳ" });
            arlChuviet.AddRange(new string[2] { "?", "ẳ" });
            arlChuviet.AddRange(new string[2] { "?", "Ặ" });
            arlChuviet.AddRange(new string[2] { "?", "ặ" });
            arlChuviet.AddRange(new string[2] { "Ð", "Đ" });
            arlChuviet.AddRange(new string[2] { "d", "đ" });
            arlChuviet.AddRange(new string[2] { "É", "É" });
            arlChuviet.AddRange(new string[2] { "é", "é" });
            arlChuviet.AddRange(new string[2] { "È", "È" });
            arlChuviet.AddRange(new string[2] { "è", "è" });
            arlChuviet.AddRange(new string[2] { "?", "Ẽ" });
            arlChuviet.AddRange(new string[2] { "?", "ẽ" });
            arlChuviet.AddRange(new string[2] { "?", "Ẻ" });
            arlChuviet.AddRange(new string[2] { "?", "ẻ" });
            arlChuviet.AddRange(new string[2] { "?", "Ẹ" });
            arlChuviet.AddRange(new string[2] { "?", "ẹ" });
            arlChuviet.AddRange(new string[2] { "Ê", "Ê" });
            arlChuviet.AddRange(new string[2] { "ê", "ê" });
            arlChuviet.AddRange(new string[2] { "?", "Ế" });
            arlChuviet.AddRange(new string[2] { "?", "ế" });
            arlChuviet.AddRange(new string[2] { "?", "Ề" });
            arlChuviet.AddRange(new string[2] { "?", "ề" });
            arlChuviet.AddRange(new string[2] { "?", "Ễ" });
            arlChuviet.AddRange(new string[2] { "?", "ễ" });
            arlChuviet.AddRange(new string[2] { "?", "Ể" });
            arlChuviet.AddRange(new string[2] { "?", "ể" });
            arlChuviet.AddRange(new string[2] { "?", "Ệ" });
            arlChuviet.AddRange(new string[2] { "?", "ệ" });
            arlChuviet.AddRange(new string[2] { "Í", "Í" });
            arlChuviet.AddRange(new string[2] { "í", "í" });
            arlChuviet.AddRange(new string[2] { "Ì", "Ì" });
            arlChuviet.AddRange(new string[2] { "ì", "ì" });
            arlChuviet.AddRange(new string[2] { "I", "Ĩ" });
            arlChuviet.AddRange(new string[2] { "i", "ĩ" });
            arlChuviet.AddRange(new string[2] { "?", "Ỉ" });
            arlChuviet.AddRange(new string[2] { "?", "ỉ" });
            arlChuviet.AddRange(new string[2] { "?", "Ị" });
            arlChuviet.AddRange(new string[2] { "?", "ị" });
            arlChuviet.AddRange(new string[2] { "Ó", "Ó" });
            arlChuviet.AddRange(new string[2] { "ó", "ó" });
            arlChuviet.AddRange(new string[2] { "Ò", "Ò" });
            arlChuviet.AddRange(new string[2] { "ò", "ò" });
            arlChuviet.AddRange(new string[2] { "Õ", "Õ" });
            arlChuviet.AddRange(new string[2] { "õ", "õ" });
            arlChuviet.AddRange(new string[2] { "?", "Ỏ" });
            arlChuviet.AddRange(new string[2] { "?", "ỏ" });
            arlChuviet.AddRange(new string[2] { "?", "Ọ" });
            arlChuviet.AddRange(new string[2] { "?", "ọ" });
            arlChuviet.AddRange(new string[2] { "Ô", "Ô" });
            arlChuviet.AddRange(new string[2] { "ô", "ô" });
            arlChuviet.AddRange(new string[2] { "?", "Ố" });
            arlChuviet.AddRange(new string[2] { "?", "ố" });
            arlChuviet.AddRange(new string[2] { "?", "Ồ" });
            arlChuviet.AddRange(new string[2] { "?", "ồ" });
            arlChuviet.AddRange(new string[2] { "?", "Ỗ" });
            arlChuviet.AddRange(new string[2] { "?", "ỗ" });
            arlChuviet.AddRange(new string[2] { "?", "Ổ" });
            arlChuviet.AddRange(new string[2] { "?", "ổ" });
            arlChuviet.AddRange(new string[2] { "?", "Ộ" });
            arlChuviet.AddRange(new string[2] { "?", "ộ" });
            arlChuviet.AddRange(new string[2] { "O", "Ơ" });
            arlChuviet.AddRange(new string[2] { "o", "ơ" });
            arlChuviet.AddRange(new string[2] { "?", "Ớ" });
            arlChuviet.AddRange(new string[2] { "?", "ớ" });
            arlChuviet.AddRange(new string[2] { "?", "Ờ" });
            arlChuviet.AddRange(new string[2] { "?", "ờ" });
            arlChuviet.AddRange(new string[2] { "?", "Ỡ" });
            arlChuviet.AddRange(new string[2] { "?", "ỡ" });
            arlChuviet.AddRange(new string[2] { "?", "Ở" });
            arlChuviet.AddRange(new string[2] { "?", "ở" });
            arlChuviet.AddRange(new string[2] { "?", "Ợ" });
            arlChuviet.AddRange(new string[2] { "?", "ợ" });
            arlChuviet.AddRange(new string[2] { "Ú", "Ú" });
            arlChuviet.AddRange(new string[2] { "ú", "ú" });
            arlChuviet.AddRange(new string[2] { "Ù", "Ù" });
            arlChuviet.AddRange(new string[2] { "ù", "ù" });
            arlChuviet.AddRange(new string[2] { "U", "Ũ" });
            arlChuviet.AddRange(new string[2] { "u", "ũ" });
            arlChuviet.AddRange(new string[2] { "?", "Ủ" });
            arlChuviet.AddRange(new string[2] { "?", "ủ" });
            arlChuviet.AddRange(new string[2] { "?", "Ụ" });
            arlChuviet.AddRange(new string[2] { "?", "ụ" });
            arlChuviet.AddRange(new string[2] { "U", "Ư" });
            arlChuviet.AddRange(new string[2] { "u", "ư" });
            arlChuviet.AddRange(new string[2] { "?", "Ứ" });
            arlChuviet.AddRange(new string[2] { "?", "ứ" });
            arlChuviet.AddRange(new string[2] { "?", "Ừ" });
            arlChuviet.AddRange(new string[2] { "?", "ừ" });
            arlChuviet.AddRange(new string[2] { "?", "Ữ" });
            arlChuviet.AddRange(new string[2] { "?", "ữ" });
            arlChuviet.AddRange(new string[2] { "?", "Ử" });
            arlChuviet.AddRange(new string[2] { "?", "ử" });
            arlChuviet.AddRange(new string[2] { "?", "Ự" });
            arlChuviet.AddRange(new string[2] { "?", "ự" });
            arlChuviet.AddRange(new string[2] { "Ý", "Ý" });
            arlChuviet.AddRange(new string[2] { "ý", "ý" });
            arlChuviet.AddRange(new string[2] { "?", "Ỳ" });
            arlChuviet.AddRange(new string[2] { "?", "ỳ" });
            arlChuviet.AddRange(new string[2] { "?", "Ỹ" });
            arlChuviet.AddRange(new string[2] { "?", "ỹ" });
            arlChuviet.AddRange(new string[2] { "?", "Ỷ" });
            arlChuviet.AddRange(new string[2] { "?", "ỷ" });
            arlChuviet.AddRange(new string[2] { "?", "Ỵ" });
            arlChuviet.AddRange(new string[2] { "?", "ỵ" });
            int j;
            for (int i = 0; i < sCodedString.Length; i++)
            {
                string sTemp = string.Empty;

                bool isBegin = true;
                if (sCodedString[i] == '&' && sCodedString[i + 1] == '#')
                {
                    j = i;
                    while (j < sCodedString.Length && isBegin == true)
                    {
                        sTemp = sTemp + sCodedString[j].ToString();
                        if (sCodedString[j] == ';')
                        {
                            isBegin = false;
                        }
                        j++;
                    }
                    if (!string.IsNullOrEmpty(sTemp))
                    {
                        int index;
                        index = arlChuviet.IndexOf(sTemp, 0);
                        string sNewValue = arlChuviet[index - 1].ToString();
                        sResult.Replace(sTemp, sNewValue);

                    }
                }
            }
            return sResult.ToString();
        }
    }
}