Hi!
Die Menge der IP-Adressen ist endlich und man benötigt auch "nur" 86 GB Speicherplatz um alle IP-Adressen und deren MD5-Hash (oder 103 GB für SHA-1) zu speichern. Das entspricht rein rechnerisch einem Aufwand wie bei einem ca. 5,4 stelligen Wort aus [a-zA-Z0-9].
Ein kleiner Test mit einem nicht weiter optimierten 08/15-C#-Programm ergab auf einem Intel Core2 6400 @ 2.13GHz eine Laufzeit von 2 Minuten für einen Class-A-Bereich, also 256*256*256 IP-Adressen, mit MD5 oder SHA-1. Mit 256 multipliziert ergibt das eine Laufzeit von ca. 8 Stunden. Fügt man das Schreiben des berechneten Wertes in eine Datei hinzu, erhöht sich die Laufzeit nur geringfügig. Man braucht also auf einer durchschnittlich aktuellen Maschine nicht mal einen halben Tag, um eine Rainbow-Tabelle für alle IP-Adressen zu errechnen.
using System.Security.Cryptography;
class Program {
static void Main(string[] args) {
byte[] ip = new byte[4] { 0, 0, 0, 0 };
MD5 hash = new MD5CryptoServiceProvider();
// SHA1 hash = new SHA1CryptoServiceProvider();
for (int i2 = 0; i2 < 256; i2++, ip[2]++)
for (int i1 = 0; i1 < 256; i1++, ip[1]++)
for (int i0 = 0; i0 < 256; i0++, ip[0]++)
hash.ComputeHash(ip);
}
}
Lo!