Difference between revisions of "Programmering III Juni 2017"

From Teknologisk videncenter
Jump to: navigation, search
(Torsdag)
(Replaced content with "intet at se her.")
 
Line 1: Line 1:
=Fredag=
+
intet at se her.
==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:
 
 
 
<source lang="Csharp">
 
        static void Main(string[] args)
 
        {
 
            AppDomain appDomain = AppDomain.CreateDomain("New Domain");
 
            appDomain.ExecuteAssembly("HelloWorld.exe");
 
 
 
        }
 
</source>
 
 
 
'''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".
 
 
 
[[File:MadsFjernBlokering.jpg]]
 
 
 
 
 
https://drive.google.com/file/d/0B5oDizcmFQ1YT0phWlRzMGU5NFU/view?usp=sharing
 
 
 
Eksempel på kode:
 
<source lang="Csharp">
 
        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();
 
        }
 
</source>
 
 
 
 
 
''Hjælpekode:''
 
 
 
<source lang="Csharp">
 
        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();
 
        }
 
</source>
 
 
 
 
 
 
 
'''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:'''
 
<source lang="Csharp">
 
 
 
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();
 
        }
 
 
 
</source>
 
 
 
 
 
'''Sender:'''
 
<source lang="Csharp">
 
 
 
        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();
 
        }
 
 
 
</source>
 
 
 
'''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:
 
<source lang="Csharp">
 
 
 
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);
 
            }
 
        }
 
 
 
</source>
 
 
 
==XML==
 
 
 
Eksempel på serialisering:
 
 
 
<source lang="Csharp">
 
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();
 
 
 
 
 
        }
 
</source>
 
 
 
 
 
'''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
 
 
 
 
 
=Fredag=
 
 
 
Link til eksamensopgave:
 
 
 
https://drive.google.com/file/d/0B5oDizcmFQ1YbzA5bGd1Z0ctUG8/view?usp=sharing
 

Latest revision as of 02:52, 7 December 2017

intet at se her.