diff --git a/.gitignore b/.gitignore index 0f63015..7f456c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ /target/ /bin/ +/bin/ +/bin/ +/bin/ diff --git a/ITsecAufgaben/ITsecAufgaben.java b/ITsecAufgaben/ITsecAufgaben.java new file mode 100644 index 0000000..a17dc91 --- /dev/null +++ b/ITsecAufgaben/ITsecAufgaben.java @@ -0,0 +1,291 @@ +package ITsecAufgaben; + +import java.util.Scanner; +import java.lang.Math; + +public class ITsecAufgaben { + + public static void sechsteAufgabe() { + System.out.println("Die folgende Aufgabe können Sie nicht überspringen & nur mit 'Strg + Z' das Programm abbrechen. :)\n"); + + Scanner in = new Scanner(System.in); + + System.out.println("Was sind Betriebssystem, Kernel, Scheduler, Hypervisor, BIOS?\nLösungen mit '0' anzeigen:"); + + int loesung = in.nextInt(); + + if(loesung == 0) { + System.out.println("Betriebssystem (OS):\n Verwaltet Hardware und stellt diese Anwendungen zur Verfügung\n\n" + + "Admin/Root Nutzer:\n" + + "Nutzer mit erweiterten Rechten am Betriebssystem\n\n" + + "Kernel:\n" + + "Teil des Betriebssystems, in dem Hardware nahe Software ausgeführt wird\n\n" + + "Scheduler:\n" + + "Weist Anwendungen Rechen Ressourcen zu (z.B. CPU, GPU)\n\n" + + "Hypervisor:\n" + + "Software, die das Betriebssystem von der unterliegenden Hardware abstrahiert\n\n" + + "BIOS (Basic Input/Output System):\n" + + "Initialisiert die Hardware und lädt das Betriebssystem\n\n"); + + } + System.out.println("Aufgabe fertig."); + + } + + public static int ggTLösung(int a, int b) { + + while (a != b) { + if(a > b) + a = a - b; + else + b = b - a; + } + if (a > b) { + return b; + } + return a; + } + public static int[] randomNumberArray(int[] ausgabe) { + int max = 99, min = 0, range, random; + range = max - min + 1; + + for(int i = 0; i <= (ausgabe.length - 1); i++) { + random = (int) (Math.random() * range) + min; + ausgabe[i] = random; + } + + return ausgabe; + } + + public static void fünfteAufgabe() { + + System.out.println( + "Drücken Sie '0' für die Aufgabe, '1' zum überspringen oder 'Strg + Z' zum abbrechen des Programmes: "); + + Scanner in = new Scanner(System.in); + + int[] ZahlenArray = new int[2]; + randomNumberArray(ZahlenArray); + // + int aufgabeStarten = in.nextInt(); + if (aufgabeStarten == 0) { + int lösung; + System.out.println("Berechnen Sie den 'größten gemeinsamen Teiler' der folgenden Zahlen: "); + System.out.printf("%d & %d", ZahlenArray[0], ZahlenArray[1]); + + System.out.printf("\n\n Lösung anzeigen mit '2':"); + + lösung = in.nextInt(); + + if(lösung == 2) { + lösung = ggTLösung(ZahlenArray[0], ZahlenArray[1]); + System.out.printf("Lösung lautet: %d", lösung); + } + + + System.out.println("\nFünfte Aufgabe beendet"); + } else { + System.out.println("\nFünfte Aufgabe beendet"); + } + + } + + public static void hielfsMethodeVierteAufgabe(String[][] eingabe, int spalte, int zeile) { + Scanner hIn = new Scanner(System.in); + + if (zeile == 0) { + System.out.println("Angreifer eingeben: "); + } else if (zeile == 1) { + System.out.println("Motivation eingeben: "); + } else { + System.out.println("Beispiel-Werkzeug eingeben: "); + } + + eingabe[spalte][zeile] = hIn.nextLine(); + + // hIn.close(); + } + + public static void vierteAufgabe() { + System.out.println( + "Erstellen Sie die Tabelle zu den sieben Angreifertypen, nennen Sie NACHEINANDER ihre Bezeichnung, ihre Motivation & mögliche Werkzeuge!\n Drücken Sie Zahl ungleich '0' für die nächste Frage."); + String[][] lösung = { + { "Nutzende", "Persönliche Vorteile (Features freischalten,...)", + "Anwendung von Tools oder Anleitungen; Anheuerung organisierter Krimineller;..." }, + { "Mitarbeitende", "Rache; Geld; Whistleblower;...", + "Zugriff auf und Kompromittierung interner Systeme" }, + { "White Hats, Pentester", "Prestige; Herausforderung; Geld;...", + "Identifikation von Schwachstellen; Ausnutzung unter ethischen Richtlinien;..." }, + { "Grey Hats", "Prestige; Herausforderung; ideologische Ziele; Vandalismus; Geld", + "Identifikation und Ausnutzung von Schwachstellen; Offenlegung des Eindringens" }, + { "Black Hats", "Geld oder Habgier", + "Identifikation und Ausnutzung von Schwachstellen; Kompromittierung des Systems; Monetarisierung" }, + { "Konkurrenz", "Störung; Wirtschaftsspionage; Diskreditierung", + "Reverse-Engineering von Produkten; Anheuerung organisierter Krimineller" }, + { "Staaten oder Geheimdienste", "Wirtschaftliche Vorteile, Destabilisierung", + "Kompromittierung der Infrastruktur, Komponenten oder Standards; Tarnung vor Entdeckung" } }; + String[][] aufgabe = new String[7][3]; + // String[][] lösung = new String[7][3]; + int result = 1, frage = 1; + + Scanner in = new Scanner(System.in); + + frage = in.nextInt(); + + if (frage == 0) { + // aufgabe.length + for (int i = 0; i <= 6; i++) { + for (int j = 0; j <= 2; j++) { + if (j == 3 || i == 8) { + break; + } + + hielfsMethodeVierteAufgabe(aufgabe, i, j); + } + if (i == 8) { + break; + } + } + } + + System.out.println("Zeigen Sie nun di2e Lösung mit '0' an & vergleichen Sie Ihre Eingabe:\n"); + result = in.nextInt(); + + if (result == 0) { + String res = ""; + + for (int i = 0; i < 7; i++) { + res = "" + lösung[i][0] + " | " + lösung[i][1] + " | " + lösung[i][2] + "\n"; + System.out.println(res); + } + + // System.out.println("\n\n"); + + res = ""; + + for (int i = 0; i < 7; i++) { + res = "" + aufgabe[i][0] + " | " + aufgabe[i][1] + " | " + aufgabe[i][2] + "\n"; + System.out.println(res); + } + + } else { + System.out.println("Bitte nochmal '0' eingeben, ansonsten 'STRG + Z'"); + result = in.nextInt(); + } + + in.close(); + } + + // String[][] für Angreifer + + public static void dritteAufgabe() { + System.out.println( + "Schreiben Sie die sechs IT-Sicherheitsziele mit kurzer Erläuterung auf!\n Drücken Sie '0' für die Lösung, andere Zahl für nächste Frage."); + Scanner in = new Scanner(System.in); + int result = 1; + result = in.nextInt(); + if (result == 0) { + System.out.println( + "1. Vertraulichkeit (Vert.) := allg. Schutz vor unbefugter Preisgabe von Informationen\r\n" + "\r\n" + + "2. Integrität (I.) := Sicherstellung der Korrektheit von Daten & der korrekten Funktionsweise von Systemen\r\n" + + "\r\n" + + "3. Authentizität (Auth.) := Kommunikationspartner/angegebene Quelle ist tatsächlich diejenige Person/Entität, die sie vorgibt zu sein, bzw. ist authentisch\r\n" + + "\r\n" + + "4. Verfügbarkeit (Verf.) := Sicherstellung der vorgesehenen Nutzbarkeit eines IT-Systems\r\n" + + "\r\n" + + "5. Autorisierung (Autor.) := Freischaltung der eingeräumten Rechte für eine erfolgreich authentifizierte Person\r\n" + + "\r\n" + + "6. Verbindlichkeit (Verb.) := Empfangen/Senden einer Nachricht oder Durchführen einer Handlung kann nicht abgestritten werden (e.g. wegen falscher Beschuldigung oder Fährten)"); + } + System.out.println("\n\nAufgabe 3 fertig"); + } + + public static void zweiteAufgabe() { + System.out.println("\nBerechnen Sie RSA per Hand. Taschenrechner & Website erlaubt.\n"); + System.out.println("Gegeben sind: p = 13, q = 17, e = 11, P1 = 23"); + System.out.println("Geben Sie das Ergebnis für N, phiOfN, encKey, decKey & C1:\n"); // <-- hier ggf. refactoring + + boolean an = true; + int N = 0, phiOfN = 0, decKey = 0, C1 = 0, encKey = 0, abbrechen = 0; + // String encKey = "(221, 11)"; + + Scanner in = new Scanner(System.in); + + while (an) { + + System.out.println("Abbrechen & Lösungen anzeigen mit '1', ansonsten weiter "); + abbrechen = in.nextInt(); + if (abbrechen == 1) { + an = false; + break; + } + + System.out.println( + "Ergebnisse für N, phiOfN, decKey, Cipher1 & encKey eingeben:\n Vorsicht: encKey besteht aus N & '?' angehangen ; alle Werte sind integer"); + System.out.println("N:"); + N = in.nextInt(); + System.out.println("phiOfN:"); + phiOfN = in.nextInt(); + System.out.println("decKey:"); + decKey = in.nextInt(); + System.out.println("C1:"); + C1 = in.nextInt(); + System.out.println("encKey:"); + encKey = in.nextInt(); + + if (N == 221 && phiOfN == 192 && encKey == 22111 && decKey == 35 && C1 == 56) { + System.out.println("\nRichtiges Ergebnis\n"); + an = false; + } else { + System.out.println("\nFalsches Ergebnis\n"); + } + } + + in.close(); + + } + + // kein äöüÄÖÜ + public static void erstesQuiz() { + System.out.println("debug: erstesQuiz() fängt an\n"); + System.out.println("Was ist die Definition von 'Schwachstelle'?\n"); + System.out.println( + "\n1. Ein sicherheitsrelevanter technischer oder Prozess-Fehler.\n2. Ein Softwarefehler, der ausgenutzt werden kann\n3. Die Verse eines Menschen.\n\n 0 -> Lösung ; 42 -> naechste Aufgabe"); + + Scanner in = new Scanner(System.in); + int age = 1; + + while (age != 0) { + + age = in.nextInt(); + // if(age == 0) { break; } + + if (age == 1) { + System.out.println("Richtig!\n"); + } else if (age == 0) { + System.out.println("Auf Wiedersehen."); + } else { + System.out.println("Falsch.\n"); + } + + } + in.close(); + System.out.println("\ndebug: erstesQuiz() fertig"); + } + + // für debugging & dev-test + public static void main(String[] args) { + // TODO Auto-generated method stub + System.out.println("ITsec-main betreten\n\n"); + + //erstesQuiz(); + //zweiteAufgabe(); + //dritteAufgabe(); + //vierteAufgabe(); + + fünfteAufgabe(); + + System.out.println("\n\nmain endet"); + } + +} diff --git a/bin b/bin new file mode 160000 index 0000000..329e256 --- /dev/null +++ b/bin @@ -0,0 +1 @@ +Subproject commit 329e256cb5e66a58dd4f8b27f18a67ffd358c8e0 diff --git a/build-script.sh b/build-script.sh new file mode 100644 index 0000000..aaf3dd7 --- /dev/null +++ b/build-script.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +#maven build +#mvn build \ No newline at end of file