You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

291 lines
9.0 KiB

  1. package ITsecAufgaben;
  2. import java.util.Scanner;
  3. import java.lang.Math;
  4. public class ITsecAufgaben {
  5. public void sechsteAufgabe() {
  6. System.out.println("Die folgende Aufgabe können Sie nicht überspringen & nur mit 'Strg + Z' das Programm abbrechen. :)\n");
  7. Scanner in = new Scanner(System.in);
  8. System.out.println("Was sind Betriebssystem, Kernel, Scheduler, Hypervisor, BIOS?\nLösungen mit '0' anzeigen:");
  9. int loesung = in.nextInt();
  10. if(loesung == 0) {
  11. System.out.println("Betriebssystem (OS):\n Verwaltet Hardware und stellt diese Anwendungen zur Verfügung\n\n"
  12. + "Admin/Root Nutzer:\n"
  13. + "Nutzer mit erweiterten Rechten am Betriebssystem\n\n"
  14. + "Kernel:\n"
  15. + "Teil des Betriebssystems, in dem Hardware nahe Software ausgeführt wird\n\n"
  16. + "Scheduler:\n"
  17. + "Weist Anwendungen Rechen Ressourcen zu (z.B. CPU, GPU)\n\n"
  18. + "Hypervisor:\n"
  19. + "Software, die das Betriebssystem von der unterliegenden Hardware abstrahiert\n\n"
  20. + "BIOS (Basic Input/Output System):\n"
  21. + "Initialisiert die Hardware und lädt das Betriebssystem\n\n");
  22. }
  23. System.out.println("Aufgabe fertig.");
  24. }
  25. public int ggTLösung(int a, int b) {
  26. while (a != b) {
  27. if(a > b)
  28. a = a - b;
  29. else
  30. b = b - a;
  31. }
  32. if (a > b) {
  33. return b;
  34. }
  35. return a;
  36. }
  37. public int[] randomNumberArray(int[] ausgabe) {
  38. int max = 99, min = 0, range, random;
  39. range = max - min + 1;
  40. for(int i = 0; i <= (ausgabe.length - 1); i++) {
  41. random = (int) (Math.random() * range) + min;
  42. ausgabe[i] = random;
  43. }
  44. return ausgabe;
  45. }
  46. public void fünfteAufgabe() {
  47. System.out.println(
  48. "Drücken Sie '0' für die Aufgabe, '1' zum überspringen oder 'Strg + Z' zum abbrechen des Programmes: ");
  49. Scanner in = new Scanner(System.in);
  50. int[] ZahlenArray = new int[2];
  51. randomNumberArray(ZahlenArray);
  52. //
  53. int aufgabeStarten = in.nextInt();
  54. if (aufgabeStarten == 0) {
  55. int lösung;
  56. System.out.println("Berechnen Sie den 'größten gemeinsamen Teiler' der folgenden Zahlen: ");
  57. System.out.printf("%d & %d", ZahlenArray[0], ZahlenArray[1]);
  58. System.out.printf("\n\n Lösung anzeigen mit '2':");
  59. lösung = in.nextInt();
  60. if(lösung == 2) {
  61. lösung = ggTLösung(ZahlenArray[0], ZahlenArray[1]);
  62. System.out.printf("Lösung lautet: %d", lösung);
  63. }
  64. System.out.println("\nFünfte Aufgabe beendet");
  65. } else {
  66. System.out.println("\nFünfte Aufgabe beendet");
  67. }
  68. }
  69. public void hielfsMethodeVierteAufgabe(String[][] eingabe, int spalte, int zeile) {
  70. Scanner hIn = new Scanner(System.in);
  71. if (zeile == 0) {
  72. System.out.println("Angreifer eingeben: ");
  73. } else if (zeile == 1) {
  74. System.out.println("Motivation eingeben: ");
  75. } else {
  76. System.out.println("Beispiel-Werkzeug eingeben: ");
  77. }
  78. eingabe[spalte][zeile] = hIn.nextLine();
  79. // hIn.close();
  80. }
  81. public void vierteAufgabe() {
  82. System.out.println(
  83. "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.");
  84. String[][] lösung = {
  85. { "Nutzende", "Persönliche Vorteile (Features freischalten,...)",
  86. "Anwendung von Tools oder Anleitungen; Anheuerung organisierter Krimineller;..." },
  87. { "Mitarbeitende", "Rache; Geld; Whistleblower;...",
  88. "Zugriff auf und Kompromittierung interner Systeme" },
  89. { "White Hats, Pentester", "Prestige; Herausforderung; Geld;...",
  90. "Identifikation von Schwachstellen; Ausnutzung unter ethischen Richtlinien;..." },
  91. { "Grey Hats", "Prestige; Herausforderung; ideologische Ziele; Vandalismus; Geld",
  92. "Identifikation und Ausnutzung von Schwachstellen; Offenlegung des Eindringens" },
  93. { "Black Hats", "Geld oder Habgier",
  94. "Identifikation und Ausnutzung von Schwachstellen; Kompromittierung des Systems; Monetarisierung" },
  95. { "Konkurrenz", "Störung; Wirtschaftsspionage; Diskreditierung",
  96. "Reverse-Engineering von Produkten; Anheuerung organisierter Krimineller" },
  97. { "Staaten oder Geheimdienste", "Wirtschaftliche Vorteile, Destabilisierung",
  98. "Kompromittierung der Infrastruktur, Komponenten oder Standards; Tarnung vor Entdeckung" } };
  99. String[][] aufgabe = new String[7][3];
  100. // String[][] lösung = new String[7][3];
  101. int result = 1, frage = 1;
  102. Scanner in = new Scanner(System.in);
  103. frage = in.nextInt();
  104. if (frage == 0) {
  105. // aufgabe.length
  106. for (int i = 0; i <= 6; i++) {
  107. for (int j = 0; j <= 2; j++) {
  108. if (j == 3 || i == 8) {
  109. break;
  110. }
  111. hielfsMethodeVierteAufgabe(aufgabe, i, j);
  112. }
  113. if (i == 8) {
  114. break;
  115. }
  116. }
  117. }
  118. System.out.println("Zeigen Sie nun di2e Lösung mit '0' an & vergleichen Sie Ihre Eingabe:\n");
  119. result = in.nextInt();
  120. if (result == 0) {
  121. String res = "";
  122. for (int i = 0; i < 7; i++) {
  123. res = "" + lösung[i][0] + " | " + lösung[i][1] + " | " + lösung[i][2] + "\n";
  124. System.out.println(res);
  125. }
  126. // System.out.println("\n\n");
  127. res = "";
  128. for (int i = 0; i < 7; i++) {
  129. res = "" + aufgabe[i][0] + " | " + aufgabe[i][1] + " | " + aufgabe[i][2] + "\n";
  130. System.out.println(res);
  131. }
  132. } else {
  133. System.out.println("Bitte nochmal '0' eingeben, ansonsten 'STRG + Z'");
  134. result = in.nextInt();
  135. }
  136. in.close();
  137. }
  138. // String[][] für Angreifer
  139. public void dritteAufgabe() {
  140. System.out.println(
  141. "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.");
  142. Scanner in = new Scanner(System.in);
  143. int result = 1;
  144. result = in.nextInt();
  145. if (result == 0) {
  146. System.out.println(
  147. "1. Vertraulichkeit (Vert.) := allg. Schutz vor unbefugter Preisgabe von Informationen\r\n" + "\r\n"
  148. + "2. Integrität (I.) := Sicherstellung der Korrektheit von Daten & der korrekten Funktionsweise von Systemen\r\n"
  149. + "\r\n"
  150. + "3. Authentizität (Auth.) := Kommunikationspartner/angegebene Quelle ist tatsächlich diejenige Person/Entität, die sie vorgibt zu sein, bzw. ist authentisch\r\n"
  151. + "\r\n"
  152. + "4. Verfügbarkeit (Verf.) := Sicherstellung der vorgesehenen Nutzbarkeit eines IT-Systems\r\n"
  153. + "\r\n"
  154. + "5. Autorisierung (Autor.) := Freischaltung der eingeräumten Rechte für eine erfolgreich authentifizierte Person\r\n"
  155. + "\r\n"
  156. + "6. Verbindlichkeit (Verb.) := Empfangen/Senden einer Nachricht oder Durchführen einer Handlung kann nicht abgestritten werden (e.g. wegen falscher Beschuldigung oder Fährten)");
  157. }
  158. System.out.println("\n\nAufgabe 3 fertig");
  159. }
  160. public void zweiteAufgabe() {
  161. System.out.println("\nBerechnen Sie RSA per Hand. Taschenrechner & Website erlaubt.\n");
  162. System.out.println("Gegeben sind: p = 13, q = 17, e = 11, P1 = 23");
  163. System.out.println("Geben Sie das Ergebnis für N, phiOfN, encKey, decKey & C1:\n"); // <-- hier ggf. refactoring
  164. boolean an = true;
  165. int N = 0, phiOfN = 0, decKey = 0, C1 = 0, encKey = 0, abbrechen = 0;
  166. // String encKey = "(221, 11)";
  167. Scanner in = new Scanner(System.in);
  168. while (an) {
  169. System.out.println("Abbrechen & Lösungen anzeigen mit '1', ansonsten weiter ");
  170. abbrechen = in.nextInt();
  171. if (abbrechen == 1) {
  172. an = false;
  173. break;
  174. }
  175. System.out.println(
  176. "Ergebnisse für N, phiOfN, decKey, Cipher1 & encKey eingeben:\n Vorsicht: encKey besteht aus N & '?' angehangen ; alle Werte sind integer");
  177. System.out.println("N:");
  178. N = in.nextInt();
  179. System.out.println("phiOfN:");
  180. phiOfN = in.nextInt();
  181. System.out.println("decKey:");
  182. decKey = in.nextInt();
  183. System.out.println("C1:");
  184. C1 = in.nextInt();
  185. System.out.println("encKey:");
  186. encKey = in.nextInt();
  187. if (N == 221 && phiOfN == 192 && encKey == 22111 && decKey == 35 && C1 == 56) {
  188. System.out.println("\nRichtiges Ergebnis\n");
  189. an = false;
  190. } else {
  191. System.out.println("\nFalsches Ergebnis\n");
  192. }
  193. }
  194. in.close();
  195. }
  196. // kein äöüÄÖÜ
  197. public void erstesQuiz() {
  198. System.out.println("debug: erstesQuiz() fängt an\n");
  199. System.out.println("Was ist die Definition von 'Schwachstelle'?\n");
  200. System.out.println(
  201. "\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");
  202. Scanner in = new Scanner(System.in);
  203. int age = 1;
  204. while (age != 0) {
  205. age = in.nextInt();
  206. // if(age == 0) { break; }
  207. if (age == 1) {
  208. System.out.println("Richtig!\n");
  209. } else if (age == 0) {
  210. System.out.println("Auf Wiedersehen.");
  211. } else {
  212. System.out.println("Falsch.\n");
  213. }
  214. }
  215. in.close();
  216. System.out.println("\ndebug: erstesQuiz() fertig");
  217. }
  218. /* // für debugging & dev-test
  219. public static void main(String[] args) {
  220. // TODO Auto-generated method stub
  221. System.out.println("ITsec-main betreten\n\n");
  222. //erstesQuiz();
  223. //zweiteAufgabe();
  224. //dritteAufgabe();
  225. //vierteAufgabe();
  226. fünfteAufgabe();
  227. System.out.println("\n\nmain endet");
  228. }*/
  229. }