26 Aralık 2019 Yazarı yhackup 0

Captcha Kodu Çözmek ? (Captcha Doğrulamasını Aşmak)

Merhabalar,

Bu yazıda basit bir Captcha kodunu çözeceğiz.

 

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) Carnegie Mellon School of Computer Science tarafından geliştirilen bir projedir. Projenin amacı bilgisayar ile insanların davranışlarının ayırt edilmesidir ve daha çok bu ayrımı yapmanın en zor olduğu web ortamında kullanılmaktadır.

 

Burada yapacağımız işlem image’ın pixel koordinatlarını karşılaştırmak.

Öncelikle toplamamız gereken sayıları, bir metod ile yerlerinden kırparak çıkarıyorum, benim çözmem gereken Captcha’da neyse ki bu rakamların yerleri konumları sabit.

        public Bitmap cropAtRect(Bitmap b, Rectangle r)
        {
            Bitmap nb = new Bitmap(r.Width, r.Height);
            Graphics g = Graphics.FromImage(nb);
            g.DrawImage(b, -r.X, -r.Y);
            return nb;
        }

 

birinci ve ikinci sayıyı yerlerinden kırpıyorum.

        
        private Bitmap Resim1(string path)
        {
            Bitmap image1 = new Bitmap(path);
            Rectangle cropArea = new Rectangle(4, 9, 15, 18);
            Bitmap bm2 = cropAtRect(image1, cropArea);            
            return bm2;
        }
        
        private Bitmap Resim2(string path)
        {
            Bitmap image1 = new Bitmap(path);
            Rectangle cropArea = new Rectangle(55, 9, 15, 18);
            Bitmap bm2 = cropAtRect(image1, cropArea);            
            return bm2;
        }

 

Benim çözmem gereken doğrulama resimlerindeki sayılar 1’den 8’a kadar oluşuyordu, bu sebepten 1’den 8’e kadar tüm sayıları kırparak elimize alıyorum.

 

Kırptığım her resim 15 * 18 pixel çözünürlüğünde oluyor.

Sonrasında ise png olan bu image’da yatay ve dikey olarak pixelin AlphaBlend olan veya AlphaBlend olmayan pixellerini belirliyorum ve bu bilgiyi List<int[]> içerisinde saklıyorum.

AlphaBlend olan pixel için 0 , AlphaBlend  olmayan pixel için 1 değeri veriyorum.

Örenğin 1 rakamının List<int[]> dizisi bu şekilde oluyor.

        private List<int[]> Bir()
        {            
            List<int[]> pixels = new List<int[]>();
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            return pixels;
        }

 

1’den 8 ‘e kadar tüm sayılar için bu tespiti yapıyoruz. Bu kısım biraz amelelik ancak, sürekli Captcha kodu girmek daha fazla amelelik 😉 robotlara robot olmadığımı kanıtlamak insanın zoruna gidiyor bazen…

 

Bu tespitleri yaptıktan sonra , geriye kalan yatay ve dikey olarak for döngüsü ile, elde ettiğimiz List<int[]> ile , Captcha kodundan kırptığımız image’ın pixellerini kıyaslamak.

Her rakamın pixel sayısı farklı olduğu için, 1,2 fark tolerans ile benzeştiğinden emin olmak.

 

önce kırptığımız birinci ımage’ı, daha sonra ikinci ımage’ı, kontrol ediyoruz.

 

                if (IsOne(Resim1(image_path)))
                {
                    sayi1 = 1;
                }

                if (IsOne(Resim2(image_path)))
                {
                    sayi2 = 1;
                }

 

burada bizim yardımımıza koşan Bitmap’ın GetPixel(x, y); izelliği,  GetPixel(x, y) geriye ilgil pixelin RGBA (Red,Green, Blue, AlphaBlend  ) değerlerini bize dönecektir.

 

        private Boolean IsOne(Bitmap image1)
        {
            List<int[]> pixels = Bir();
            int benzer = 0;
            int fark = 0;
            for (int y = 0; y < 18; y++)
            {
                int[] dikey = pixels[y];
                for (int x = 0; x < 15; x++)
                {
                    var i1 = image1.GetPixel(x, y);
                    if (i1.A == 255)                    
                    {
                        int yatay = dikey[x];
                        if (yatay == 1)
                        {
                            benzer++;
                        }
                        else
                        {
                            fark++;
                        }
                    }
                }
            }
            return benzer > 82;
        }

 

ve bu şekilde GetCaptcha metodumuza ilgili png imeg’ın path’ini vererek kullanabiliyoruz.

sayi2.Text = new CaptchaHack().GetCaptcha(textBox1.Text);

 

Projenin tamamının c# kodları bu şekildedir.

 

using System;
using System.Collections.Generic;
using System.Drawing;

namespace Capthca
{
    class CaptchaHack
    {
        public string GetCaptcha(string image_path)
        {
            string sonuc = "0";
            int sayi1 = 0;
            int sayi2 = 0;
            try
            {
                //// sayilar 1 mi
                if (IsOne(Resim1(image_path)))
                {
                    sayi1 = 1;
                }

                if (IsOne(Resim2(image_path)))
                {
                    sayi2 = 1;
                }


                //// sayilar 2 mi
                if (IsTwo(Resim1(image_path)))
                {
                    if (sayi1 == 0)
                        sayi1 = 2;
                }

                if (IsTwo(Resim2(image_path)))
                {
                    if (sayi2 == 0)
                        sayi2 = 2;
                }


                //// sayilar 3 mü
                if (IsThree(Resim1(image_path)))
                {
                    if (sayi1 == 0)
                        sayi1 = 3;
                }

                if (IsThree(Resim2(image_path)))
                {
                    if (sayi2 == 0)
                        sayi2 = 3;
                }

                //// sayilar 4 mü
                if (IsFour(Resim1(image_path)))
                {
                    if (sayi1 == 0)
                        sayi1 = 4;
                }

                if (IsFour(Resim2(image_path)))
                {
                    if (sayi2 == 0)
                        sayi2 = 4;
                }


                //// sayilar 5 mi
                if (IsFive(Resim1(image_path)))
                {
                    if (sayi1 == 0)
                        sayi1 = 5;
                }

                if (IsFive(Resim2(image_path)))
                {
                    if (sayi2 == 0)
                        sayi2 = 5;
                }


                //// sayilar 6 mi
                if (IsSix(Resim1(image_path)))
                {
                    if (sayi1 == 0)
                        sayi1 = 6;
                }

                if (IsSix(Resim2(image_path)))
                {
                    if (sayi2 == 0)
                        sayi2 = 6;
                }



                //// sayilar 7 mi
                if (IsSeven(Resim1(image_path)))
                {
                    if (sayi1 == 0)
                        sayi1 = 7;
                }

                if (IsSeven(Resim2(image_path)))
                {
                    if (sayi2 == 0)
                        sayi2 = 7;
                }



                //// sayilar 8 mi
                if (IsEigth(Resim1(image_path)))
                {
                    if (sayi1 == 0)
                        sayi1 = 8;
                }

                if (IsEigth(Resim2(image_path)))
                {
                    if (sayi2 == 0)
                        sayi2 = 8;
                }
            }
            catch (Exception)
            {
            }

            if ((sayi1 > 0) && (sayi2 > 0))
            {
                sonuc = (sayi1 + sayi2).ToString();
            }
            return sonuc;
        }



        public Bitmap cropAtRect(Bitmap b, Rectangle r)
        {
            Bitmap nb = new Bitmap(r.Width, r.Height);
            Graphics g = Graphics.FromImage(nb);
            g.DrawImage(b, -r.X, -r.Y);
            return nb;
        }

        private Bitmap Resim1(string path)
        {
            Bitmap image1 = new Bitmap(path);
            Rectangle cropArea = new Rectangle(4, 9, 15, 18);
            Bitmap bm2 = cropAtRect(image1, cropArea);
            return bm2;
        }

        private Bitmap Resim2(string path)
        {
            Bitmap image1 = new Bitmap(path);
            Rectangle cropArea = new Rectangle(55, 9, 15, 18);
            Bitmap bm2 = cropAtRect(image1, cropArea);
            return bm2;
        }

        private Boolean IsOne(Bitmap image1)
        {
            List<int[]> pixels = Bir();
            int benzer = 0;
            int fark = 0;
            for (int y = 0; y < 18; y++)
            {
                int[] dikey = pixels[y];
                for (int x = 0; x < 15; x++)
                {
                    var i1 = image1.GetPixel(x, y);
                    if (i1.A == 255)
                    {
                        int yatay = dikey[x];
                        if (yatay == 1)
                        {
                            benzer++;
                        }
                        else
                        {
                            fark++;
                        }
                    }
                }
            }
            return benzer > 82;
        }

        private Boolean IsTwo(Bitmap image1)
        {
            List<int[]> pixels = iki();
            int benzer = 0;
            int fark = 0;
            for (int y = 0; y < 18; y++)
            {
                int[] dikey = pixels[y];
                for (int x = 0; x < 15; x++)
                {
                    var i1 = image1.GetPixel(x, y);
                    if (i1.A == 255)
                    {
                        int yatay = dikey[x];
                        if (yatay == 1)
                        {
                            benzer++;
                        }
                        else
                        {
                            fark++;
                        }
                    }
                }
            }            
            return benzer > 109;
        }

        private Boolean IsThree(Bitmap image1)
        {
            List<int[]> pixels = Uc();
            int benzer = 0;
            int fark = 0;
            for (int y = 0; y < 18; y++)
            {
                int[] dikey = pixels[y];
                for (int x = 0; x < 15; x++)
                {
                    var i1 = image1.GetPixel(x, y);
                    if (i1.A == 255)
                    {
                        int yatay = dikey[x];
                        if (yatay == 1)
                        {
                            benzer++;
                        }
                        else
                        {
                            fark++;
                        }
                    }

                }
            }            
            return benzer > 109;
        }

        private Boolean IsFour(Bitmap image1)
        {
            List<int[]> pixels = Dort();
            int benzer = 0;
            int fark = 0;
            for (int y = 0; y < 18; y++)
            {
                int[] dikey = pixels[y];
                for (int x = 0; x < 15; x++)
                {
                    var i1 = image1.GetPixel(x, y);
                    if (i1.A == 255)
                    {
                        int yatay = dikey[x];
                        if (yatay == 1)
                        {
                            benzer++;
                        }
                        else
                        {
                            fark++;
                        }
                    }

                }
            }            
            return benzer > 109;
        }


        private Boolean IsFive(Bitmap image1)
        {
            List<int[]> pixels = Bes();
            int benzer = 0;
            int fark = 0;
            for (int y = 0; y < 18; y++)
            {
                int[] dikey = pixels[y];
                for (int x = 0; x < 15; x++)
                {
                    var i1 = image1.GetPixel(x, y);
                    if (i1.A == 255)
                    {
                        int yatay = dikey[x];
                        if (yatay == 1)
                        {
                            benzer++;
                        }
                        else
                        {
                            fark++;
                        }
                    }

                }
            }            
            return benzer > 109;
        }


        private Boolean IsSix(Bitmap image1)
        {
            List<int[]> pixels = Alti();
            int benzer = 0;
            int fark = 0;
            for (int y = 0; y < 18; y++)
            {
                int[] dikey = pixels[y];
                for (int x = 0; x < 15; x++)
                {
                    var i1 = image1.GetPixel(x, y);
                    if (i1.A == 255)
                    {
                        int yatay = dikey[x];
                        if (yatay == 1)
                        {
                            benzer++;
                        }
                        else
                        {
                            fark++;
                        }
                    }

                }
            }            
            return benzer > 135;
        }


        private Boolean IsSeven(Bitmap image1)
        {
            List<int[]> pixels = Yedi();
            int benzer = 0;
            int fark = 0;
            for (int y = 0; y < 18; y++)
            {
                int[] dikey = pixels[y];
                for (int x = 0; x < 15; x++)
                {
                    var i1 = image1.GetPixel(x, y);
                    if (i1.A == 255)
                    {
                        int yatay = dikey[x];
                        if (yatay == 1)
                        {
                            benzer++;
                        }
                        else
                        {
                            fark++;
                        }
                    }

                }
            }            
            return benzer > 89;
        }


        private Boolean IsEigth(Bitmap image1)
        {
            List<int[]> pixels = Sekiz();
            int benzer = 0;
            int fark = 0;
            for (int y = 0; y < 18; y++)
            {
                int[] dikey = pixels[y];
                for (int x = 0; x < 15; x++)
                {
                    var i1 = image1.GetPixel(x, y);
                    if (i1.A == 255)
                    {
                        int yatay = dikey[x];
                        if (yatay == 1)
                        {
                            benzer++;
                        }
                        else
                        {
                            fark++;
                        }
                    }

                }
            }            
            return benzer > 152;
        }


        private List<int[]> Bir()
        {
            List<int[]> pixels = new List<int[]>();
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            return pixels;
        }

        private List<int[]> iki()
        {            
            List<int[]> pixels = new List<int[]>();
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 });
            return pixels;
        }

        private List<int[]> Uc()
        {            
            List<int[]> pixels = new List<int[]>();
            pixels.Add(new int[] { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            return pixels;
        }

        private List<int[]> Dort()
        {
            List<int[]> pixels = new List<int[]>();
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 });
            pixels.Add(new int[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 });
            return pixels;
        }

        private List<int[]> Bes()
        {
            List<int[]> pixels = new List<int[]>();
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            return pixels;
        }


        private List<int[]> Alti()
        {         
            List<int[]> pixels = new List<int[]>();
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            return pixels;
        }

        private List<int[]> Yedi()
        {
            List<int[]> pixels = new List<int[]>();
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 });
            return pixels;
        }

        private List<int[]> Sekiz()
        {
            List<int[]> pixels = new List<int[]>();
            pixels.Add(new int[] { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 });
            pixels.Add(new int[] { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 });
            pixels.Add(new int[] { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 });
            return pixels;
        }


    }
}