Quantcast
Channel: netzmensch-design blog » programmieren
Viewing all articles
Browse latest Browse all 2

Wie lerne ich schnell eine neue Programmiersprache?

$
0
0

Mein neues Aufgabengebiet als Ausbilder umfasst natürlich auch das kreative Entwickeln von Aufgaben, mit denen die Azubis neues Wissen leichter aufnehmen können. Im Prinzip geht es darum, dass man nicht stupide ein Buch oder Tutorial durcharbeitet, sondern bereits ein bestehendes Problem hat und an dessen Lösung arbeitet. So wird einem nicht alles vorgegeben und man muss nach individuellen Lösungen für die einzelnen Teilprobleme suchen. Diese Herangehensweise habe ich mir irgendwann angeeignet und konnte damit bisher schneller Sachen lernen, vornehmlich bei Programmiersprachen.

Mein Lieblingsprojekt für dieses Thema ist ein Wordlist-Generator. Wem der Begriff fremd ist: Wordlisten werden verwendet, um mittels geeigneter Tools Passwörter zu knacken. Darum geht es mir hier aber gar nicht, sondern nur um die Erstellung einer solchen Liste. Warum? Nun, wenn man ein solches Tool entwickeln möchte, so muss man fast alle grundlegenden Möglichkeiten einer Programmiersprache nutzen:

- Aufbau und Syntax (z.B. )
- Parameterübergabe
- Bedingungen (z.B. if…)
- Schleifen (z.B. for, while, …)
- Funktionen (auch rekursiv)
- Arbeit mit Strings und Arrays
- Dateizugriffe
- Sortieralgorythmen (optional)
- Klassen (optional)
- Datenbank (optional)
- Optimierung vom Code im Allgemeinen und vor allem der Schleifen

Um ehrlich zu sein habe ich bereits 2 verschiedene Varianten entwickelt: die einfache und die etwas kompliziertere. Variante 1 erzeugt einfach eine Liste mit allen möglichen Zeichenkombinationen und einer durch den Benutzer definierten Länge. Dazu entwickelt man eine Funktion, die alle möglichen Zeichen wiedergibt, und das nacheinander. Diese Funktion kann sich nun entweder rekursiv x-mal (je nach gewünschter Passwortlänge) aufrufen oder man packt diese Logik in Schleifen. Im Endeffekt erhält man dann eine solche Liste (Länge 3 Zeichen):

aaa
aab
aac

aba
abb
abc

ZZX
ZZY
ZZZ

Je mehr Zeichen man ermöglicht, desto mehr Kombinationen gibt es. Dadurch steigt der Speicherbedarf und natürlich auch die Ausführungszeit. Diese Methode nennt man Bruteforce, da stupide jede mögliche Kombination von Zeichen durchprobiert wird.

Variante 2 baut eine echte Wordlist nur aus Wörtern auf. Das ist wesentlich schneller als Variante 1, jedoch muss man davon ausgehen, dass die zu knackenden Passwörter eben normal vorkommende Wörter sind – was leider sehr oft der Fall ist. Im Prinzip nimmt man sich ein paar Ebooks oder andere Texte und packt diese in txt-Dateien – je mehr desto besser – und wirft sie in einen Unterordner. Das Tool geht diese Dateien nun einzeln durch, wandelt jedes Leerzeichen und Satzzeichen in Zeilenumbrüche um und wirft doppelt vorkommende Einträge wieder heraus. Lässt man das Tool laufen, so baut sich langsam aber sicher eine sehr umfangreiche Wordlist zusammen.

Ihr seht schon, dass bei einer so simpel klingenden Aufgabe doch ein bisschen Arbeit zu erwarten ist. Das tolle an beiden Projekten ist, dass man einen sehr guten Einstieg in neue Programmiersprachen findet, indem man versucht, beide umzusetzen. Die Vorgehensweise ist eigentlich immer die gleiche:

- Syntax anschauen
- Dateizugriffe lernen
- Schleifen, Bedingungen und Stringmanipulation studieren
- um Funktionen erweitern
- testen
- fertig

Probiert es mal aus – mir haben diese Aufgaben bisher immer gut geholfen, sodass ich neben PHP bereits Basic, Python, C, C++, C#, Java und Shellscripting erlernen konnte.


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles