Posts Tagged ‘Datenbank’

h1

Pythons Macht und Einfachheit

Juni 30, 2008

Heute bin ich im Openbook „Python“ von Galileo Computing (das ich übgrigens sehr empfehlen kann!) auf eine interessante Methode gestoßen in Python Listen zu erstellen. Diese Methode nennt sich List Comprehensions und dient dazu effizient mehrere Listen zu einer neuen Liste zu kombinieren. In diesem Kapitel bin ich auf folgendes Beispiel gestoßen:

>>> lst1 = [„A“,“B“,“C“]
>>> lst2 = [„D“,“E“,“F“]

>>>[(a,b) for a in lst1 for b in lst2]
[(‚A‘, ‚D‘), (‚A‘, ‚E‘), (‚A‘, ‚F‘), (‚B‘,’D‘), (‚B‘, ‚E‘), (‚B‘, ‚F‘), (‚C‘,’D‘), (‚C‘, ‚E‘), (‚C‘, ‚F‘)]

Dabei wird aus lst1 und lst2 eine neue Liste erstellt, die alle Kombinationen mit 2 Buchstaben aus beiden Listen enthält. Dabei fiel mir sofort auf, was man damit noch alles anstellen kann:

lst = „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, 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, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9“.split(‚,‘)
comb = [(a,b,c,d,e,f,g,h) for a in lst for b in lst for c in lst for d in lst for e in lst for f in lst for g in lst for h in lst]

Diese 2 Zeilen Python-Code erstellen alle 6-stelligen Ascii-Kombinationen. Wenn man den Code noch ein bisschen ausbaut und perfektioniert, hat man ein Programm, welches theoretisch alle Ascii-Kombinationen erstellt. Natürlich nur solange wie der Speicher das zulässt. Wenn man jetzt noch von jedem dieser Kombinationen den md5-hash erzeugt und in einer Datenbank speichert, hat man sich eine Möglichkeit geschaffen von einem md5-hash auf das Ascii-Passwort zu kommen. Allerdings hätte auch das seine Tücken, denn ein md5-hash verkörpert ja nicht nur ein Passwort sondern unendlich viele.

Allerdings geht es mir nicht darum zu zeigen, wie man einen md5-hash „knackt“, sondern ich will mit diesem Beispiel aufzeigen, wie mächtig Python ist.