Gewidmet Gertrud K. (1961 - 2018)
Ein wunderbarer Mensch, eine starke Frau und eine echte Stütze,
die nach langer Zeit den Kampf gegen ihren Krebs verlohren hat.
Danke für Alles. Wir werden dich sehr vermissen!
IMPRESSUM
Bibliografische Information der Deutschen Nationalbibliothek:
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über www.dnb.de abrufbar.
© 2017-2018 Alicia Noors & Mark B.
Herstellung und Verlag:
BoD – Books on Demand GmbH, Norderstedt
ISBN:
978-3748170242
Als ich meinen ersten Computer bekam eröffnete sich mir eine neue und faszinierende Welt. Bald schon war mir das "Bedienen" der Maschine zu langweilig geworden und mich dürstete es danach zu erfahren wie dieses Ding genau funktioniert...
Als ich dann QBasic auf meinem Computer entdeckte und begann anhand einiger Büchern das Programmieren zu erlernen packte mich eine Faszination, die mir bis heute erhalten geblieben ist. Während meine Klassenkameraden ihre Rechner maximal zum Spielen verwendeten konnte ich tage- und wochenlang an meinen Programmen basteln.
Schnell wurde mir auch klar - genau das ist es was ich später einmal machen will. Als ich schließlich anfing in der Softwareentwicklung zu arbeiten kam ich bald auf das Thema Sicherheit und wieder eröffnete sich mir eine faszinierende neue Welt - ein Welt voller Puzzel und Rätsel, die es zu lösen galt.
Mit der Zeit machte mir das Rätseln und Puzzeln wie sich ein Stück Software "überlisten" lässt und die Suche nach Fehlern in Programmen und Webseiten noch mehr Spaß als die Entwicklung.
Ich hoffe, dass ich Ihnen in diesem Buch meine Faszination für die Themen Hacken und Programmieren ein wenig näher bingen kann und Sie vielleicht mit dem gleichen "Virus" infizieren kann der mich vor Jahren packte und nie wieder loslies...
In diesem Sinne wünsche ich Ihnen viel Spaß mit meinem Buch!
Ihre
Alicia Noors
Python ist eine Programmiersprache, die nicht nur leicht zu erlernen und mehr als ausführlich dokumentiert ist, sondern auch über eine schier unendliche Anzahl an Modulen verfügt, die man im eigenen Programm nutzen kann und die für alle erdenklichen Aufgaben Funktionen zur Verfügung stellen.
So ist es möglich mit recht wenigen Zeilen Code ein Tool zu schreiben, um eine bestimmte Aufgabe zu automatisieren. Genau darum ist es Python so beliebt. Natürlich gibt es viele Hackingtools für alle möglichen Aufgaben - oftmals ist es jedoch schneller einige Zeilen in Python zu schreiben als im Internet nach einem passenden Programm zu suchen.
Darüber hinaus ist es nicht unbedingt die beste Idee, blind irgendwelche Tools auszuführen die man in Untergrund- oder Darknet-Foren gefunden hat ohne zuvor den Code genau zu inspizieren. Nicht selten beinhalten diverse angebotene Tools eine böse Überraschung. Wer seinen Rechner nicht in das nächstbeste Botnet eingliedern will, sollte zumindest in der Lage sein den Code eines Scripts zu verstehen und zu überprüfen was genau dieser macht.
Abgesehen davon, begreift man meiner Meinung nach am schnellsten wie ein Angriff oder ein bestimmtes Tool funktioniert, wenn man es selber nachbaut.
Kali ist eine sogenannte Pentesting-Destribution - also ein System in dem schon die beliebtesten Hacking-Tools und diverse Werkzeuge für die Softwareentwicklung enthalten sind.
Daher werde ich für die Beispiele in diesem Buch Kali-Linux als Grundplattform verwenden. Es steht Ihnen natürlich frei, die benötigten Tools auf dem Betriebssystem Ihrer Wahl zu installieren. Ich gehe an dieser Stelle aber lediglich auf die Installation von Kali und die Einrichtung diverser Tool unter Kali ein, da ich davon ausgehe, dass für Personen die sich für das Thema dieses Buches interessieren, die Installation von Software unter dem Betriebssystem Ihrer Wahl keine Schwierigkeit darstellen kann.
Kali kann unter https://www.kali.org/downloads/
kostenlos heruntergeladen werden. Diejenigen die einen virtuellen PC verwenden möchten können fertige VMware- oder VirtualBox-Images downloaden.
Außerdem wird Kali-Linux mit Gnome3, KDE, XFCE4, LXDE, Enlightment und Mate als Window-manager angeboten. Für diejenigen die Linux nicht kennen - der Windowmanager ist vereinfacht gesagt die grafische Oberfläche des Systems, und bei Linux hat man die freie Wahl welchen man verwendet. Verwechseln Sie das jetzt aber nicht mit Themes wie man es aus anderen Betriebssystemen kennt! Die einzelnen Windowmanager unterscheiden sich nicht nur im Aussehen, sondern auch im Ressourcenverbrauch, dem Bedienkonzept und den Standard-Tools (Einstellungsverwaltung, Dateimanager, etc.) die enthalten sind.
Ich für meinen Teil bevorzuge XFCE. Der Look ist klar und schlicht, der Windowmanager ist ressourcenschonend und auf schnelles Arbeiten optimiert. Außerdem ist es mit einigen XFCE-Plugins recht einfach die Systemressourcen im Blick zu behalten.
Nachdem wir die ISO-Datei heruntergeladen haben, können wir Sie auf eine DVD brennen oder auf einen USB-Stick entpacken...
Windows-User können dazu den "Win32 Image writer" verwenden, den Sie unter https://launchpad.net/win32-image-writer
downloaden können. Das Programm sollte soweit selbsterklärend sein...
Linux- und OSX-User können dazu den Konsolen-Befehl dd
verwenden:
dd if=/pfad/zum/kali-image.iso of=/dev/sdb bs=512k
Dieser Befehl muss als root
oder mit sudo
ausgeführt werden!
Seien Sie aber vorsichtig mit dd
... Dieser Befehl verzeit keine Fehler und kann Ihnen eine ganze Festplatte überschreiben!
Mit if=
wird die Eingabe-Datei (input file) bestimmt und mit of=
die Ausgabe-Datei. In meinem Beispiel habe ich /dev/sdb
angegeben, was die Geräte-Datei der zweiten SCSI- bzw. SATA-Platte ist. Unter Linux werden so auch die USB-Laufwerke angesprochen. Wichtig ist, nicht beispielsweise /dev/sdb1
zu verwenden, denn das wäre die erste Partition dieser Platte, und wir wollen die gesamte Platte inklusive der Partitionstabelle überschreiben!
Unter OSX wäre das /dev/disk1
. Hier wäre /dev/disk1s0
die erste Partition und somit falsch! Am einfachsten identifizieren Sie die richtige Geräte-Datei indem Sie df -h
im Terminal eingeben:
Wenn nun die Ausgabe beispielsweise
/dev/disk0s2 |
148Gi |
86Gi |
62Gi |
58% ... |
/dev/disk1s1 |
7.4Gi |
5.2Gi |
2.2Gi |
71% ... |
liefert ist klar, dass das Laufwerk disk1
mit der 7,4 GB-Partition der USB-Stick und die Platte disk0
der 148GB-Partition die SSD ihres Rechners ist. In dem Fall wäre also /dev/disk1
zu verwenden.
Das bs=512k
definiert eine Blockgröße von 512KB
und kann so übernommen werden. dd
meldet keinen Fortschritt und ist auch nicht besonders schnell - kochen Sie sich einen Kaffee, gönnen Sie sich einen Snack oder schnappen Sie kurz frische Luft - mit 10 bis 20 Minuten können Sie schon rechnen.
Zuvor muss das Laufwerk aber gegebenenfalls ausgehängt werden - dies geschieht mit:
umount /dev/sdb1
(Linux)
diskutil umount /dev/disk1s1
(OSX)
Jeweils mit sudo
oder als root
ausgeführt! Sobald das Erstellen des bootfähigen USB-Sticks fertig ist, meldet dd
dies mit einer derartigen Ausgabe:
5345+1 records in
5345+1 records out
2802616968 bytes transferred in 668.849633 secs (4190204 bytes/sec)
Danach kann ein Rechner von dem Installations-Stick gestartet werden. Hierbei haben Sie die Möglichkeit Kali vom USB-Stick zu starten und ohne Installation zu testen. Diese Option ist auch sehr hilfreich, wenn eines Ihrer Systeme nicht mehr bootet - so können Sie mit Kali zumindest noch eine Datensicherung vornehmen und dann nach der Ursache forschen.
Kali ist wie alle Linux-Distros sehr genügsam und läuft auf meinem Atom-Netbook mit 2 GB Ram absolut flüssig - im Leerlauf werden gerade einmal 1 - 1,5% der CPU-Leistung benötigt. Daher kann ich jedem Interessierten empfehlen ein altes Notebook oder Netbook mit Kali aufzusetzen!
Wichtig ist hierbei, dass der Kali-Rechner über eine ausreichend große Festplatte oder SSD verfügt! Wenn Sie mit Wortlisten oder Rainbow-Tables arbeiten haben Sie schnell mit Dateigrößen von 100GB und mehr zu tun... 500GB oder mehr wären meine Empfehlung.
Ich werde mit Ihnen an dieser Stelle die grafische Installtion durchnehmen. Sobald Sie diesen Punkt im Auswahl-Menü gestartet haben gelangen Sie in den Installations-Assistenten.
Hier wählen Sie zuerst German - Deutsch
aus und klicken dann auf den Continue
-Button.
Danach werden Sie eventuell gefragt, ob die Installation in Deutsch fortgesetzt werden soll. Je nach Version des Installationsassistenten könnten einige neue Texte noch nicht vollständig übersetzt worden sein - in so einem Fall wird Ihnen ein Teil der Installtion in Englisch angezeigt. Wählen Sie Ja
und klicken Sie dann auf den Weiter
-Button.
Im nächsten Step wählen Sie Ihr Land aus und klicken wieder auf Weiter
.
Dann werden Sie nach dem Tastatur-Layout gefragt... Wählen Sie hier wieder Deutsch
und gehen Sie zum nächsten Schritt.
Jetzt wird die Hardware-Erkennung ausgeführt. Dies kann ein oder zwei Minuten dauern. Sobald dies abgeschlossen ist, werden Sie nach dem Rechnernamen gefragt - ich vergebe hier kali.local
. Sie können Ihrer Kreativität hier aber freien Lauf lassen. Das .local
am Ende des Namens ordnet den Rechner der .local
-Domain zu.
Sobald das geschafft ist, müssen wir ein Passwort für den User root
vergeben. Dieser Benutzer ist unter Linux- und Unix-Systemen der Administrator und hat die höchsten Benutzerrechte. Normalerweise arbeitet man nicht direkt als root
, aber für einige Dinge, die wir in diesem Buch anstellen werden, wie das Fälschen oder Abfangen von Paketen und das Anbieten von Serverdiensten, bietet es sich durchaus an direkt als root
zu arbeiten.
Der nun folgende Schritt der Partitionierung ist aus meiner Sicht der wichtigste. Hier wählen wir Manuell
aus und legen folgendes Partitionschema für einen Rechner mit Legacy BIOS-Modus an:
Einhängepunkt | Größe | Benutzen als |
/ |
40-60GB | ext4 |
/root |
40-100GB | ext4 |
--- | 4-8GB | swap |
/home |
restlicher Speicher | ext4 |
Für einen Rechner mit UEFI empfehle ich folgende Aufteilung der Platte:
Einhängepunkt | Größe | Benutzen als |
/boot/efi |
2-4GB | fat32 |
/ |
40-60GB | ext4 |
/root |
40-100GB | ext4 |
--- | 4-8GB | swap |
/home |
restlicher Speicher | ext4 |
Bei einem Rechner mit UEFI muss man auch eine GUID-Partitionstabelle verwenden.
Diese Aufteilung macht Sinn, da Programme die unter root
oder einem normalen User laufen und Daten im jeweiligen Benutzer-Verzeichnis ablegen ausreichend Platz haben, und man dennoch nicht Gefahr läuft, dass ein Programm unentdeckt die Platte komplett anfüllt und das System Probleme beim booten bekommt.
Außerdem kann man so die Systempartition (/
) bei einer Neuinstallation des Systems bedenkenlos formatieren und die User-Daten sind sicher auf den Partitionen für /root
bzw. /home
.
Nachdem wir das Anlegen der Partitionen abgeschlossen haben, werden wir nochmals gefragt, ob wir die Änderungen auf die Festplatte schreiben wollen... Dies bestätigen wir mit Ja
und die Installation des Grundsystems beginnt.
Dies ist nach wenigen Minuten fertig, und wir werden gefragt, ob wir zusätzliche Pakete von einem "Netzwerk-Spiegelserver" installieren wollen. Dies sollten wir mit Ja
beantworten.
Im nächsten Schritt können wir einen Proxy-Server konfigurieren - in der Regel werden Sie in Ihrem Netzwerk keinen Proxy benötigen, um auf das Internet zuzugreifen - falls doch dann können Sie diesen im angegebenen Format eintragen.
Klicken Sie auf Weiter
, und die fehlenden Software-Komponenten und Treiber werden automatisch aus dem Netz geladen und installiert.
Danach erfolgt die Installation und Einrichtung des GRUB-Bootloaders... Bei einem System mit Legacy-Support werden Sie gefragt, ob GRUB im Master Boot Record, kurz MBR, installiert werden soll - Antworten Sie mit Ja
und wählen im nächsten Schritt die Systemplatte aus.
Danach wird die Installation komplettiert, und Sie können mit einem letzten Klick auf Weiter
das System neu starten, nachdem die Installation abgeschlossen ist.
Nach dem Neustart können wir uns mit dem Usernamen root
und dem zuvor vergebenen Passwort anmelden.
Sollten Sie das erste mal mit Linux arbeiten empfehle ich Ihnen unbedingt ein gutes Buch über Linux zu lesen. Da Kali auf Debian bzw. Ubuntu basiert, sollten Sie Bücher zu einer der beiden Distributionen lesen! Andere Linux-Distributionen können beispielsweise andere Tools verwenden oder auch teilweise Konfigurationsdateien anders benennen oder an anderen Orten im System ablegen. Im Grunde sind das nur Details und für einen geübten Linux-User kein Problem. Ein Einsteiger sollte sich zu Beginn aber mit seiner Distro vertraut machen.
Eine komplette Einführung in Linux würde an dieser Stelle allerdings den Rahmen des Buches sprengen. Außerdem gehe ich stark davon aus, dass viele Leser bereits mit Linux vertraut sein werden. Allen Anderen kann ich das Buch "Hacken mit Kali-Linux" (ISBN 978-3746012650) meines Co-Autors Mark B. wärmstens ans Herz legen.
Als nächstes will ich Ihnen zeigen wie wir unsere XFCE-Desktops eingerichtet haben. Beim ersten Login werden Sie gefragt, ob Sie mit leeren Leisten oder den Standardvorgaben starten wollen. Wählen Sie an dieser Stelle die Standardvorgaben.
Nach wenigen Augenblicken sehen Sie dann Ihren Desktop mit 2 Leisten (eine oben und eine unten). Bevor wir die Leisten einrichten brauchen wir noch ein paar XFCE-Plugins, die wir vorab noch installieren müssen. Dazu öffnen wir ein Terminal - entweder über das Kommandozeilen-Symbol in der unteren Leiste oder aus dem Anwendungs-Menü oben links. Danach führen wir die zwei Fett hervorgehobenen Befehle aus:
root@kali:~# apt-get update
Holen:1 http://packages.microsoft.com/repos/vscode stable InRelease [2.802 B]
... Ausgabe gekürzt
Holen:6 http://archive-3.kali.org/kali kali-rolling/contrib amd64 Packages [101 kB]
Es wurden 16,4 MB in 3 s geholt (5.981 kB/s).
Paketlisten werden gelesen... Fertig
root@kali:~# apt-get -y install xfce4-*-plugin
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Hinweis: »xfce4-pulseaudio-plugin« wird für das Suchmuster »xfce4-*-plugin« gewählt.
Hinweis: »xfce4-systemload-plugin« wird für das Suchmuster »xfce4-*-plugin« gewählt.
... Ausgabe gekürzt
ayatana-indicator-application (0.5.2-1) wird eingerichtet ...
Trigger für libc-bin (2.27-3) werden verarbeitet ...
Dieser Mechanismus nennt sich übrigens Paketverwaltung und bietet eine sehr komfortable Möglichkeit Software herunterladen und installieren zu lassen. Wie Sie sehen sind hierbei auch Wildcard-Zeichen wie zB * erlaubt um wie hier alle XFCE4-Plugins auf einmal zu installieren. Jetzt erhalten Sie eine Liste aller XFCE-Plugins, die installiert werden und die Frage ob Sie fortfahren wollen - bestätigen Sie dies einfach mit Enter und warten Sie bis alles installiert wurde. apt-get
ist der sogenannte Paketmanager unter Kali, damit können Programme, Treiber und sonstige System-Komponenten installiert, aktualisiert und deinstalliert werden.
Das bedeutet, dass sämtliche damit installierten Pakete (Schriften, Treiber, Systemteile oder Anwendersoftware) mit einem Update-Machanismus auf dem aktuellen Stand gehalten werden können. Dies erfolgt übrigens mit apt-get update
gefolgt von apt-get upgrade
.
Jetzt können wir beginnen die Leisten wie folgt einzurichten:
Klicken Sie die obere Leiste mit der rechten Maustaste an und wählen Sie Im Kontextmenü Leiste
und dann im Untermenü Leisteneinstellungen
.
Wählen Sie danach den Tab Objekte
.
Danach können Sie die Leistenelemente mit dem +
Button hinzufügen bzw. mit dem -
Button rechts neben der Element-Liste entfernen.
Bei der Programmvielfalt von Kali bietet sich das Whisker-Menü an, da wir damit auch direkt nach einem Programmnamen suchen können.
Über das Orte-Menü haben wir schnellen Zugriff auf die wichtigsten Ordner und ein Starter ist quasi eine Programmverknüpfung.
Die ganzen Überwachungsplugins erlauben es uns die Systemlast und den Ressourcenverbrauch immer im Auge zu haben.
Die Benachrichtigungsfläche, die Uhr und die Aktionsknöpfe mit dem Logout- und Abmelde-Optionen haben ich auch in der oberen Leiste ganz rechts untergebracht. Praktischer Weise verbirgt sich hinter der Uhr auch noch ein Kalender der mit einem Klick geöffnet werden kann.
Sobald Sie die Plugins und Elemente arrangiert haben können Sie mit dem oberen Dropdown-Feld auf die Leiste 2
(die untere Leiste) wechslen.
Die Fensterknöpfe sind Buttons zum Wechseln zwischen geöffneten Fenstern und der Arbeitsflächenumschalter erlaubt es zwischen den virtuellen Bildschirmen zu wechseln.
Nachdem Sie die Leistenelemente auch hier nach Ihrem Geschmack zusammengestellt haben, sollten Sie bei der unteren Leiste auch noch in den Anzeige-Tab wechseln und die Zeilengröße
sowie die Länge in %
nachjustieren.
Bei der Länge würde ich 100% verwenden, um die Leiste über die ganze Bildschirmbreite zu spannen.
Sobald das erledigt ist, können Sie, jedes einzelne Leisten-Element konfigurieren.
Hierzu klicken Sie das Element mit der rechten Mausraste an und wählen dem Punkt Eigenschaften
im Kontext-Menü.
Nach ein paar Grundeinstellungen sieht die obere Leiste in etwa so aus:
Und die untere Leiste wie folgt:
Wenn Sie noch nicht wirklich mit den Geräte-Namen unter Linux vertraut sind, dann ist das Einrichten der Monitoring-Plugins eine gute Übung für Sie.
Windows- und Mac-User können die Setup-Datei von https://www.python.org/downloads/
herunterladen und müssen lediglich den Schritten des Installations-Assistenten folgen.
Weitere Python-Module können unter Windows mit Hilfe von Befehlen in der Eingabeaufforderung installiert werden.
Das Schema lautet: py -[VERSION] -m pip install [PAKETNAME]
zB:
C:\Users\alicia> py -3.6 -m pip install scapy
OSX-Benutzer hingegen tippen pip3 install [PAKETNAME]
ins Terminal ein - zB:
(Das Terminal finden Sie übrigens unter Dienstprogramme im Programme-Ordner im Finder)
alicias-Mac-mini:~ alicia$ pip3 install scapy
Obwohl unter Kali Python in der Version 3 bereits vorinstalliert ist, fehlen pip3
und IDLE
. Daher will ich ihnen die Installation stellvertretend für andere Linux-Distros zeigen. Auch hier verwenden wir wieder den Paketmanager. Dazu benötigen wir root
-Rechte:
root@kali:~# apt-get install python3 python3-pip idle3
Weitere Python-Module können wir auch als normaler User installieren. Und auch hier kommt wieder das Terminal zum Einsatz:
user@kali:~$ pip3 install scapy
Unter Linux werden Programme meist in form von Paketen verteilt, und für Debian-basierte Distributionen wie Kali-Linux ist das passende Paketformat .deb
. Nachdem wir also die DEB-Datei von https://code.visualstudio.com/download
heruntergeladen haben können wir mit cd
in das Downloads-Verzeichnis wechseln und die installation mit dpgk -i [PAKETNAME]
starten.
root@kali:~# cd Downloads/
root@kali:~/Downloads# dpkg -i code_1.23.1-1525968403_amd64.deb
Vormals nicht ausgewähltes Paket code wird gewählt.
(Lese Datenbank ... 303905 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von code_1.23.1-1525968403_amd64.deb ...
Entpacken von code (1.23.1-1525968403) ...
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von code:
code hängt ab von libgconf-2-4; aber:
Paket libgconf-2-4 ist nicht installiert.
dpkg: Fehler beim Bearbeiten des Paketes code (--install):
Abhängigkeitsprobleme - verbleibt unkonfiguriert
Trigger für desktop-file-utils (0.23-3) werden verarbeitet ...
Trigger für mime-support (3.60) werden verarbeitet ...
Fehler traten auf beim Bearbeiten von:
code
In meinem Fall bricht die Installation mit der Fett hervorgehobenen Fehlermeldung ab, da zusätzlich benötigte Pakete fehlen. Hier kommt nun die Paketverwaltung ins Spiel, die mit dem folgenden Befehl die sogenannten Abhängigkeiten auflöst und alle Pakete installiert, die VS Code benötigt um zu laufen.
root@kali:~/Downloads# apt --fix-broken install
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Abhängigkeiten werden korrigiert ... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
gconf-service gconf2-common libgconf-2-4
Die folgenden NEUEN Pakete werden installiert:
gconf-service gconf2-common libgconf-2-4
... Ausgabe gekürzt
libgconf-2-4:amd64 (3.2.6-4.1) wird eingerichtet ...
gconf-service (3.2.6-4.1) wird eingerichtet ...
code (1.23.1-1525968403) wird eingerichtet ...
Trigger für libc-bin (2.27-3) werden verarbeitet ...
Sobald die Installation fertig ist können wir VS Code starten um die Python-Erweiterung zu installieren und einzurichten. Dazu öffnen Sie das Anwendungs-Menü und die Unterrubrik "Entwicklung". Hier sollten Sie das Programm finden.
Starten wir das Programm dann sollten wir zuerst die Python-Erweiterung von Microsoft installieren. Dazu wählen Sie auf der linken Seite des Fensters das Marketplace-Symbol (unterstes Symbol).
Dann können Sie python
direkt in das Suchfeld eintragen. Wie Sie sehen werden Ihnen mehrere mögliche Erweiterungen angezeigt. Sie können die anderen gern ausprobieren, aber ich verwende für dieses Buch das Original-Plugin der Firma Microsoft (der Entwickler wird immer unter der Kurzbeschreibung angezeigt). Klicken Sie auf den grünen Installieren
-Button und starten Sie VC Code neu wenn Sie dazu aufgefordert werden.
Nach dem Neustart müssen wir noch den Interpreter auswählen. Dazu öffnen Sie die Kommando-Palette mit Strg + Umschalt + P
und suchen Sie in dem sich öffnenden Dialogfeld nach "python se".
Sobald Sie die Option "Python: Select Inpertreter" ausgewählt haben sollten Sie folgende Auswahl bekommen:
Wählen Sie hier die Version 3.6 aus. Diese Version werden wir für die meisten Code-Beispiele verwenden.
Der Grund warum ich VisualStudio Code verwende ist vor allem die gute Autovervollständigung für Python, sowie das hohe Maß an Konfigurierbarkeit des Editors. Darüber hinaus lassen sich weitere Plugins für die gängigsten Programmier- und Scriptsprachen installieren.
Im Grund ist Python eine sehr einfach zu lernende Sprache. Die folgenden Punkte beschreiben den Ansatz von Python sehr gut:
All das macht Python so beliebt - mit wenigen Zeilen Code können Sie in Windesweile kleine Tools schreiben.
Für all diejenigen, die Python-Grundkenntnisse haben, wird dieses Kapitel nicht viel Neues bringen und Sie können es gerne überspringen. Für Python-Anfänger will ich aber zumindest die wichtigsten Grundlagen kurz umreißen, damit Sie den Code-Beispielen in dem folgenden Kapiteln folgen können. Leser mit Erfahrungen in einer anderen Programmiersprache, sollten sich zumindest die Datentypen ansehen!
Für die folgenden Beispiele verwende ich die Python-IDLE. Wenn wir diese Starten, erhalten wir eine interaktive Python-Shell mit der wir im folgenden Arbeiten werden. Dazu tippen Sie in einem Terminal-Fenster einfach python3
ein und bestätigen Sie die Eingabe mit Enter
oder öffnen Sie die Python3-IDLE aus dem Anwendungsmenü.
a) None
Der Datentyp None
kennzeichnet eine Variable als nicht gesetzt und wird wie folgt angelegt:
>>> n = None
Eine Variable ist quasi ein Wert im Speicher, der über einen Namen angesprochen werden kann und wird nach dem Schema [NAME] = [WERT]
angelegt.
>>> 2var = 2
SyntaxError: invalid syntax
Der Name darf die Zeichen A-Z, a-z, _ und 0-9 enthalten und muss mit einem _ oder Buchstaben beginnen.
>>> var2 = 2
>>> print(var2)
2
>>> print(Var2)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
Var2
NameError: name 'Var2' is not defined
Variablennamen sind case-sensitive, sprich es wird zwischen Groß- und Kleinschreibung unterschieden. Daher meldet der Python-Interpreter an dieser Stelle auch, dass Var2
nicht definiert ist.
>>> var2 = None
Außerdem kann man so eine Variable bewusst wieder auf den Status undefiniert setzen, um einen Wert zu löschen.
>>> var2 = None
>>> 2 * var2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
>>> var2 = 0
>>> 2 * var2
0
Das macht vor allem dann Sinn, wenn mit der Variable gerechnet werden soll und wir verhindern wollen, dass versehentlich mit falschen Rechenergebnissen weiter gearbeitet wird.
Ist der Wert von var2
auf None
gesetzt, dann bricht das Programm die Berechnung 2 * var2
mit einer Fehlermeldung ab. Der Type-Error erklärt uns kurz und knapp, dass int
-Werte nicht mit None
-Werten multipliziert werden können.
Hätten wir zum resetten der Variable einfach nur 0
verwendet, würde die Berechnung durchgeführt, und das Ergebnis wäre logischer Weise dann auch wieder 0
.
b) int
Integer-Werte (kurz int
) sind Ganzzahlen.
>>> a = 1
>>> b = 0xF
>>> a + b
16
Hierbei ist die dezimale und hexadezimale (zB 0xF
) Schreibweise erlaubt. Das hexadezimale Zahlensystem basiert nicht auf 10, sondern auf 16. Hierbei werden die Buchstaben A-F verwendet. um die Zahlen 10-15 darzustellen. Somit entspricht 0xF
der Dezimalzahl 15.
c) float
Float sind Fließkommazahlen. Diese Werte werden in der englischen Schreibweise (Punkt statt Komma) angelegt.
>>> a = 1.5
>>> b = 2
>>> a + b
3.5
>>> a * b
3.0
Natürlich kann man int
- und float
-Werte in einer Berechnung mischen. Wenn ein float
-Wert in der Berechnung vorkommt ist das Ergebnis wieder ein float
-Wert, unabhängig davon, ob das Ergebnis eine Ganzzahl wäre oder nicht!
d) String
Zeichenketten (auch Strings genannt) sind der Variablentyp wenn es darum geht Texte zu speichern.
>>> a = hallo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'hallo' is not defined
Ohne Anführungzeichen wird das Wort hallo
als Variablenname interpretiert und versucht der Variablen a
den Wert von der Variablen hallo
zuzuweisen. Da diese nicht existiert tritt der NameError
auf.
>>> a = "hallo"
>>> b = 'welt'
>>> a + " " + b
'hallo welt'
Die Zeichenkette kann in einfachen oder doppelten Anführungzeichen eingeschlossen werden. Darüber hinaus kann man Strings mit dem +
Operator zusammenfügen.
>>> csv = "Max Muster,Musterstr. 1,1010,Wien,01/123456"
>>> csv.split(",")
['Max Muster', 'Musterstr. 1', '1010', 'Wien', '01/123456']
Alles in Python ist ein Objekt - daher kann auch auf einem String eine sogenannte Methode angewandt werden. Hier in diesem Beispiel trennen wir eine CSV-Zeile mit split()
an den Beistrichen auf und erzeugen daraus eine Liste. Natürlich gibt es viele weitere nützliche Methoden.
e) Listen