Difference between revisions of "Programmering III Juni 2017"

From Teknologisk videncenter
Jump to: navigation, search
(XML)
(Kryptering og dekryptering)
Line 211: Line 211:
 
'''Opgave 2:'''
 
'''Opgave 2:'''
 
Benyt en selvvalgt krypteringsalgoritme til at kryptere og dekryptere en XML/JSON string.
 
Benyt en selvvalgt krypteringsalgoritme til at kryptere og dekryptere en XML/JSON string.
 +
 +
=Torsdag=
 +
Dagens opgave:
 +
https://drive.google.com/file/d/0B5oDizcmFQ1YNEJvR3l1Wk9SNkk/view?usp=sharing

Revision as of 07:52, 8 June 2017

Fredag

Application domain:

Opgave 1: Opret 2 applikationer. Applikation-1 skal være en simpel HelloWorld. Applikation-2 skal være et applikationDomain der henter HelloWorld programmet ind, og eksekvere koden.


Benyt følgende kode til ApplikationDomainet:

        static void Main(string[] args)
        {
            AppDomain appDomain = AppDomain.CreateDomain("New Domain");
            appDomain.ExecuteAssembly("HelloWorld.exe");

        }

Opgave 2:

Hent denne fil, og lav et program der bruteforcer kodeordet. kodeordetindeholder kun lowerCase bogstaver, som ikke indeholder æ, ø eller å (hint: kodeordet er "hot"):

Efter at du har hentet filen, højreklik da på den og vælg egnskaber/properties. Nederst i venstre hjørne er der et flueben som skal fjernes i "fjern blokering".

MadsFjernBlokering.jpg


https://drive.google.com/file/d/0B5oDizcmFQ1YT0phWlRzMGU5NFU/view?usp=sharing

Eksempel på kode:

        static void Main(string[] args)
        {
            AppDomain encryptedFile = AppDomain.CreateDomain("New Appdomain");
            string[] key = {"aaa"};

            int success = encryptedFile.ExecuteAssembly("EncryptedFile.exe ", key);

            if(sucess == 1)
            {
                 Console.Writeline("Koden var korrekt");
            }
            else
            {
                 Console.WriteLine("Koden var forkert");
            }


            Console.ReadKey();
        }


Hjælpekode:

        static void Main(string[] args)
        {
            char[] letters = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };

            int numberOfLetters = letters.Length; //26 LETTERS
            Console.WriteLine("Number of letters: {0}", numberOfLetters);

            for (int i = 0; i < numberOfLetters; i++)
            {
                Console.WriteLine(letters[i]);
            }
            Console.ReadKey();
        }


Opgave 3:

Lav en bruteforcing algoritme der prøver alle tænkelige kombinationer af passwords. Prøv da at knække koden på følgende fil: https://drive.google.com/file/d/0B5oDizcmFQ1YUEpaa3V3OVJiVDQ/view?usp=sharing

(kodeordet indeholder stadig kun lowercase bogstaver uden æ,ø og å. Husk også at fjerne blokeringen ved denne fil.)

(hit: du kan benytte Ascii tabellen her: http://www.asciitable.com)


Opgave 4: Udvid din bruteforce algoritme og prøv da at knække koden på følgende fil: https://drive.google.com/file/d/0B5oDizcmFQ1YWlhabGxSWTR3T3c/view?usp=sharing

Koden indeholder 6 ialt bogstaver (samme regler som sidst). Benyt hinandens computere til at finde koden.


Netværksprotokoller:

Listener:

static void Main(string[] args)
        {
            UdpClient client = new UdpClient(11001);
            IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 11001);

            byte[] recievedBytes = client.Receive(ref endpoint);
            string recievedMessage = Encoding.ASCII.GetString(recievedBytes);
            Console.WriteLine("Beskeden var: " + recievedMessage);
            Console.ReadKey();
        }


Sender:

        static void Main(string[] args)
        {
            Console.WriteLine("Type an IP address:");
            string ip = Console.ReadLine();

            UdpClient client = new UdpClient();
            IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(ip), 11001);

            string message = "Hej!";

            byte[] bytesToSend = Encoding.ASCII.GetBytes(message);
            client.Send(bytesToSend, bytesToSend.Length, endpoint);
            Console.WriteLine("Message sendt!");
            Console.ReadKey();
        }

Opgave 1: Lav 2 programmer hvor det ene program kan sende en besked til det andet, som kan modtage og vise beskeden.

Opgave 2: Lav programmerne så de både kan sende og modtage data til og fra hinanden.

Eksempel på tråde:

static void Main(string[] args)
        {
            Console.WriteLine("Start");
 
            Thread thread = new Thread(myThread);
            thread.Start();
 
            string input = Console.ReadLine();
            Console.WriteLine(input);
            Console.ReadKey();
        }
 
        static void myThread()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(i);
            }
        }

XML

Eksempel på serialisering:

static void Main(string[] args)
        {
            Tank t1 = new Tank();
            XmlSerializer serializer = new XmlSerializer(typeof(Tank));

            StringWriter sWriter = new StringWriter();

            serializer.Serialize(sWriter, t1);

            string myXML = sWriter.ToString();

            Console.WriteLine(myXML);
            Console.ReadKey();

            //Vi sender vores XML igennem en netværksforbindelse.
            //Den bliver nu modtaget:

            Tank enemyTank;
            StringReader sReader = new StringReader(myXML);
            enemyTank = (Tank)serializer.Deserialize(sReader);

            Console.WriteLine("Name of enemy tank is: " + enemyTank.playerName);
            Console.ReadKey();


        }


Opgave 1: Lav et program der serialisere data fra et objekt til XML og som sender det igennem en netværksforbindelse. Når XML strengen bliver modtaget skal den deserialiseres til et objekt.


Kryptering og dekryptering

Opgave 1: Lav en algoritme, der kan kryptere en XML eller JSON string ud fra et brugerdefineret password. Filen skal kunne sendes igennem en netværksforbindelse og dekrypteres med samme password hos modtageren.

Hvis passwordet er forkert, skal brugeren få besked om at nøglen var forkert.

Opgave 2: Benyt en selvvalgt krypteringsalgoritme til at kryptere og dekryptere en XML/JSON string.

Torsdag

Dagens opgave: https://drive.google.com/file/d/0B5oDizcmFQ1YNEJvR3l1Wk9SNkk/view?usp=sharing