Programmering III Juni 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".
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.
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();
}