Zur Navigation

IP-Blocks der wichtigsten Sumas [3]

21 Mario

mir sind die Schreibweisen nicht geläufig, kann die Adressen nicht aus dem Stegreif zusammenkomponieren. *etwas sprachlos bin* , aber Regex hat da vielleicht noch ein paar Pfeile im Köcher ?!

Mario

22.04.2006 17:09

22 Jörg Kruse

Ich entdecke keinen Fehler - die Reihenfolge hätte ich hier vielleicht anders gewählt:

([0-9]|[0-6][0-3]|[0-5][0-9])

d.h. die [0-6][0-3] als letztes, entsprechend der Abfolge der Zahlen; aufs Ergebnis hat das aber ja keinen Einfluss

Edit:
Ähm, aber jetzt seh ich doch eine Fehler, so wäre es doch korrekt:

([0-9]|[6][0-3]|[0-5][0-9])

... also nicht [0-6]; das würde zwar auch funktioniern, wär aber redundant

22.04.2006 17:21 | geändert: 22.04.2006 17:25

23 C)-(iLL@

z.B. der IP-Range 64.4.0.0 - 64.4.63.255

64.4. ist beiden gemein, der . wird escaped, da er sonst für ein einzelnes beliebigs Zeichen (ausgenommen Zeilenvorschub) steht:

64\.4\.

Dann der 3. IP-Block: 0-63 - Man kann nicht schreiben [0-63], da immer nur zeichenweise Bereiche akzeptiert werden, keine Zahlenbereiche.

Deshalb zuerst den Bereich 64.4.0.* bis 64.4.9.* definieren: [0-9]
=> Also haben wir 64\.4\.[0-9]\.

Das trifft auf 64.4.2. wie auf 64.4.8. oder 64.4.9. zu - also nur Einer-Ziffern im 3. Block. Wir haben aber auch IP-Blöcke mit Zehnerziffern, nicht nur Einer-Ziffern. Aber wir wollen nur die mit einer Einer-Stelle von 0 bis 9 haben, wenn die Zehnerstelle zwischen 1 und 5 ist (9 (also nur Einer) haben wir schon, 64 oder 69 wollen wir ja nicht), also noch [1-5][0-9] - das trifft auf 10, 11, .. 58, 59 zu, nicht aber auf 60 oder 61.

=> Ohne inbezugnahme des Einerblocks haben wir nun den Teilausdruck 64\.4\.[1-5][0-9]\.

Wir brauchen aber 4 Zahlen im 60er-Bereich, nämlich 60,61,62,63 - also 64.4.60 - 64.4.63. Kurz: 6[0-3]

Also haben wir 64\.4\.6[0-3]\.

Mit | (=oder) werden die Bereiche nun aneinandergehängt.

Das wäre also [0-9]|[1-5][0-9]|6[0-3] => jetzt haben wir unser 0-63, nämlich in Worten : 0 bis 9 oder 10 bis 59 oder 60 bis 63.

Um das mit dem Rest des Ausdrucks zu kombinieren, müssen wir das in eine runde Klammer einfassen, die den Unterausdruck definiert (machen wir das nicht, dann gilt das Oder für den gesamten Ausdruck, nicht nur für den 3. Block):

64\.4\.([0-9]|[1-5][0-9]|6[0-3])\.

Da der letzte IP-Block (4) von 0 bis 255 reicht, können wir auf dessen Definition verzichten, alles, was die ersten 3 Blöcke innerhalb diesen Bereichs hat, ist unser gesuchter Bot.

Eigentlich haben wir mit dem Ausdruck nun also folgendes definiert:

64.4.0. - 64.4.63.

Edit: Redundanz des Einer-Blocks entfernt, hoffentlich verständlicher gemacht :)

22.04.2006 17:26 | geändert: 23.04.2006 19:32

24 Mario

was mir suspekt vorkam und immer noch vorkommt ist 12[89]. Gemeint ist wohl 12[8|9] Darf man das so schreiben?

Mario

22.04.2006 17:49

25 C)-(iLL@

was mir suspekt vorkam und immer noch vorkommt ist 12[89]. Gemeint ist wohl 12[8|9] Darf man das so schreiben?

Das ist optimiert - der Bereich mit - ist nur notwendig, wenn weitere Zeichen eingeschlossen sind, aber zwischen 8 und 9 gibt es keine Ziffer. [8-9] ist nicht falsch. Beispielsweise anstatt [1-9] könntest Du auch schreiben [123456789], macht aber niemand :) Man wählt die kürzere Schreibweise.

Hier die 1. 5 von Google:

62.141.89.32 - 62.141.89.47
62.92.16.32 - 62.92.16.63
64.233.160.0 - 64.233.191.255
65.196.235.32 - 65.196.235.47
65.214.112.96 - 65.214.112.127

RewriteCond %{REMOTE_ADDR} !^62\.141\.89\.(3[2-9]|4[0-7])
RewriteCond %{REMOTE_ADDR} !^62\.92\.16\.(3[2-9]|[45][0-9]|6[0-3])\.
RewriteCond %{REMOTE_ADDR} !^64\.233\.(1[6-8][0-9]|19[01])\.
RewriteCond %{REMOTE_ADDR} !^65\.196\.235\.(3[2-9]|4[0-7])\.
RewriteCond %{REMOTE_ADDR} !^65\.214\.112\.(9[6-9]|1[0-2][0-7])


Was bedeutet 66.102.6.136 + ?

22.04.2006 17:55

26 Mario

ah, kapiert, danke für die Erklärung.


Was bedeutet 66.102.6.136 +

ich kannte den G-Bereich nicht, hatte aber Besuch von G oder einem G-Proxy. Das + war ein Reminder für mich, der dann hier reinrutschte. Gehört aber zu diesem Block:

NetRange: 66.102.0.0 - 66.102.15.255
CIDR: 66.102.0.0/20

Vielleicht kannst Du den oben noch ergänzen.


Mario

22.04.2006 18:08

27 Jörg Kruse

Edit: Jörg, danke für die Korrektur, habe ich hier eingefügt - so ist richtig, oder?

Ja, so ist richtig :) "Nicht korrekt" war allerdings auch keine korrekte Bewertung meinerseits - "nicht optimiert" hätte besser gepasst :)

22.04.2006 18:13

28 C)-(iLL@

"nicht optimiert" hätte besser gepasst :)
Ich habs schon verstanden :)

Weitere 6 Blöcke von Google:

66.102.0.0 - 66.102.15.255 (der von Dir letztens genannte Block)
66.192.134.32 - 66.192.134.47
66.249.64.0 - 66.249.95.255
67.126.100.8 - 67.126.100.15
67.69.26.16 - 67.69.26.23
69.111.141.152 - 69.111.141.159
69.111.141.160 - 69.111.141.167

letzteres ist 69.111.141.152 - 69.111.141.167

RewriteCond %{REMOTE_ADDR} !^66\.102\.([0-9]|1[0-5])\.
RewriteCond %{REMOTE_ADDR} !^66\.192\.134\.(3[2-9]|4[0-7])
RewriteCond %{REMOTE_ADDR} !^66\.249\.(6[4-9]|[78][0-9]|9[0-5])\.
RewriteCond %{REMOTE_ADDR} !^67\.126\.100\.([89]|1[0-5])
RewriteCond %{REMOTE_ADDR} !^67\.69\.26\.(1[6-9]|2[0-3])
RewriteCond %{REMOTE_ADDR} !^69\.111\.141\.(15[2-9]|16[0-7])

22.04.2006 18:26

29 C)-(iLL@

langsam wird's lustig: weitere Blöcke
{
69.224.21.208 - 69.224.21.215
69.224.31.104 - 69.224.31.111
} > Ausdruck 1
{
69.224.31.104 - 69.224.31.111
69.224.31.88 - 69.224.31.95
} > Ausdruck 2

{
{
69.228.70.216 - 69.228.70.223
69.228.70.224 - 69.228.70.231
69.228.70.232 - 69.228.70.239
} = 69.228.70.216 - 69.228.70.239

69.228.70.248 - 69.228.70.255
} > Ausdruck 3


RewriteCond %{REMOTE_ADDR} !^69\.224\.(21\.(20[89]|21[0-5])|31\.(10[4-9]|11[01]))

RewriteCond %{REMOTE_ADDR} !^69\.224\.31\.((10[4-9]|11[01])|(8[89]|9[0-5]))

RewriteCond %{REMOTE_ADDR} !^69\.228\.70\.2([1-3][0-9]|4[89]|5[0-5])

22.04.2006 18:47 | geändert: 22.04.2006 18:48

30 Mario

weiter so Rudi ;), dann rentiert sich wenigstens "Regex" oder machst Du wieder auf brain?

Mario

22.04.2006 18:50