IPv6 Adresse in Text suchen​

  • Hallo,
    ich möchte in einem Text alle IPv6 Adressen suchen. Ich habe auch schon etwas zusammen gebaut. Aber leider funktioniert es nicht. Ich vermute, dass es mit dem Pattern zusammen hängt. Wenn ich das Pattern für die IPv4 verwende ist alles super. Aber die Pattern für IPv6 funktioniert nicht. habe auch die hier im Forum vorhandenen Pattern getestet. Leider gehen die auch nicht.


    Ich hoffe es hat jemand einen Tipp bzw. eine Lösung für mich.


    Gruß Ingo

  • Naja, du kannst nicht erwarten, dass ein kopiertes Pattern von http://stackoverflow.com/questions/5349…-ipv6-addresses einfach in Autoit eingefügt werden kann, und es dann funktioniert.
    1. Du hast die Kommentare mit kopiert.
    2. Du hast die @CRLF mitdazugepackt.

    Du solltest die obere, kleine Zeile kopieren, nicht die erklärung des Patterns. Desweiteren bin ich mir gerade nicht so sicher, ob das dort verwendete RegEx in Autoit ebenfalls funktioniert, da es unterschiedliche Formate von RegEx gibt, und Java glaube ich eine etwas andere nutzt.

  • Du solltest uns mal den Text zur Verfügung stellen. Wichtig an der suche ist, dass Dein Code die Adresse auch richtig erkennen kann. Beginnen Deine Adressen z.B alle mit 2001? Stehen zeilenweise nur ips im Text, stehen ip4 und 6 gemischt usw usw....

    Mehr input --> hilfe

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Hallo,
    vielen Dank für eure Hinweise.

    Im Bezug auf dem zu durchsuchenden Text wollte ich es möglichst sehr flexibel haben, denn der Text soll später aus sehr verschiedenen Quellen kommen. Also möglichst eine universelle AutoIT Funktion die in einem Text nach IPv6 Adressen suchen kann. Außerdem ist es bei IPv6 etwas Komplex mit den vielen zugelassenen verschiedenen Schreibweisen. Im Kommentar der Pattern sind die vielen möglichen Schreibweisen zu sehen. In meinem Programmbeispiel hatte ich eine Text als Beispiel für den zu durchsuchenden Text drin:

    AutoIt
    $sText = "Temporäre IPv6-Adresse. . . . . . : 2003:cc:dcaa:9434:ac3a:8900:3340:3cc1 " & _
    		 "7.25.23.2 " & _
    		 "Verbindungslokale IPv6-Adresse  . : fe80::dcaa:f15e:50a4:aa09%13"

    Im Bezug zu dem Pattern kann ich nur sagen, dass ich viele verschiedenen getestet habe. Aber leider hat keine ein Ergebnis gebracht. Das Pattern welches ich in dem Beispiel drin habe scheint aus meiner Sicht aber die größte Abdeckung für verschiedene Schreibweisen zu haben. Aber auch die hier aus dem AutoIT Forum stammenden Pattern (von hier) funktionieren nicht. Irgendwie mache ich da wohl etwas grundsätzliches falsch.

    Gruß Ingo

  • "Geht nicht" ist immer eine tolle Fehlerbeschreibung.

    Wenn du Hilfe willst mach erstmal folgendes:

    1. Poste ein fehlerfreies Testscript (siehe Anmerkungen oben bzgl. copy&paste von Kommentaren im Pattern)
    2. Erweitere dein Testscript um alle Pattern die du testen möchtest und mach eine Ergebnisausgabe für jedes Pattern
    3. Poste deinen Suchtext, welcher mit dem Pattern funktionieren soll. Bevorzugt enthält der Suchtext möglichst viele unterschiedliche Variationen, welche alle erkannt werden sollen/müssen.
    4. Zum einfacheren Vergleich poste das von dir erwartete oder erwünschte Ergebnis welches du manuell ermittelt hast.

    Wenn du das alles gemacht hast kann man hier auch den Fehler finden und dein Suchpattern verbessern, so dass es letzlich das gewünschte Ergebnis zeigt.

  • "Geht ja doch" ist da immer eine bessere Rückmeldung. *fg*

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo,
    manchmal ist es nicht schlecht wenn man nochmal zum Nachdenken gebracht wird. Ich habe mich nochmals mit der Problematik Pattern beschäftigt und mit erstaunen festgestellt, dass es nicht wirklich so schwer ist wie ich immer angenommen haben. Also vielen Dank für eure Anstöße dazu. :thumbup:

    Ich habe also ein Pattern gebaut welches fast alle Schreibweisen, die in der Wikipedia beschrieben werden, abdeckt. Lediglich der Punkt 5 also die Ergebnisse 11 und 12 sind nicht wirklich richtig. Diese sind aber in der Praxis nicht so relevant. Auch die Schreibweisen der Netznotation, also mit Netzwerkmaske (z.B. 2001:0db8:1234::/48) sind nicht mit drin. Aber eventuell mache ich mich da nochmals ran.

    Gruß Ingo

  • Hallo,
    leider war es noch nicht wirklich die endgültige Lösung für mein Problem. In einem Text wie:
    DHCPv6-IAID . . . . . . . . . . . : 356792294 C:\Users\cc00815>

    Findet er leider die folgenden zwei "IPv6 Adressen":
    356792294
    cc00815

    Hat jemand eine Idee wir ich das verhindern kann?

    Gruß Ingo

  • Die aAressen sind doch ein wenig kurz für ip6 adressen? Kannst Du dein Such /Filterergebnis nicht auf Länge prüfen? Was zu kurz ist kann keine IP Adresse sein. Oder auf : Punkte - was keine
    : Punkt enthällt kann keine Ip sein usw...

    Wenn es um Filter geht muss es auch Kriterien geben, an der sich die Software festhalten kann.

    Über die def. von IP 6 Adressen findet man u.a. folgendes:

    Eine IPv6-Adresse besteht aus 128 Bit. Wegen der unhandlichen Länge werden die 128 Bit in 8 mal 16 Bit unterteilt. Je 4 Bit werden als eine hexadezimale Zahl dargestellt. Je 4 Hexzahlen werden gruppiert und durch einen Doppelpunkt (":") getrennt. Um die Schreibweise zu vereinfachen lässt führende Nullen in den Blöcken weg. Eine Folge von 8 Nullen kann man durch zwei Doppelpunkte ("::") ersetzen.
    Bei der IPv6-Adresse wird der vordere Teil Präfix oder Network-ID genannt. Die ersten 64 Bit adressieren das Netz bzw. ein Subnetz. Dieser Teil wird in der Regel vom Betreiber des Netzzugangs vorgegeben. Bei einem Internet-Anschluss ist das der Internet-Provider. Der Provider wiederum hat seine Network-ID von einer Registry zugeteilt bekommen.
    Der hintere Teil der Adresse, also die restlichen 64 Bit adressieren immer den Host im jeweiligen Subnetz. Es handelt sich dabei um das Suffix oder den Interface Identifier.
    Es gilt also, dass die ersten 64 Bit einer IPv6-Adresse das Netz und die restlichen 64 Bit den Host adressieren.


    Quelle : (http://www.elektronik-kompendium.de/sites/net/1902111.htm)

    --------------> Keine Doppelpunkte keine IP


    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Leider ist die Länge bei IPv6 kaum ausschlaggebend. Erstens können (wie bei IPv4 auch) führende Nullen in den Blöcken ausgelassen werden. Man schreibt ja auch 127.0.0.1 und nicht 127.000.000.001. Darüber hinaus gibt es bei IPv6 noch eine Auslassungsregel zur kürzeren Notation von Adressen. Eigentlich besteht eine IPv6-Adresse aus 8 Blöcken mit je 4 Zeichen plus 7 Doppelpunkte als Trenner, ergo 39 Zeichen. Man kann jedoch Blöcke auslassen, wenn sie nur aus Nullen bestehen. Mein Router hat eine interne IPv6-Adresse: fe80::e9b3:5825:7acb:dc13
    Dieser doppelte Doppelpunkt mittendrin steht für so eine Auslassung. Pro Adresse darf man das nur einmal machen, damit die Adresse eindeutig bleibt. Statt "::" müssen hier dann so viele Nullblöcke eingesetzt werden, dass man insgesamt auf 8 Blöcke kommt. Hier gibt es bereits 5 Blöcke, es kommen also 3 Nullblöcke hinzu. Die eigentliche IP lautet also fe80:0000:0000:0000:e9b3:5825:7acb:dc13 - Von 39 Stellen auf 25 Stellen. Die Länge ist also kein eindeutiges Merkmal, da sie stark variieren kann. Im Prinzip wäre ::1 auch schon eine valide IPv6-Adresse.

  • Wo ist das Problem? er kann doch die Doppelpunkte abarbeiten keine Doppelpunkte --> Keine IP6
    In dem angebotenen Beispiel kommen gar keine Doppelpunkte vor --> wenn auf Doppelpunkte gerüft wird --> sind das keine IP6 Adressen -> das ist simpel und beseitigt das genannte Problem?

    Mit den doppelten Doppelpunkten ist das doch auch einfach. Wenn direkt nach einem Doppelpunkt ein zweiter kommt darf die Adresse entsprechend kürzer sein. Die fehlenden sind dann null. So läßt sich die Länge anpacken.

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

    Einmal editiert, zuletzt von Peter S. Taler (2. Dezember 2015 um 23:31)

  • Hallo,
    die Idee mit dem Doppelpunkt ist eigentlich nicht schlecht. Wenn kein Doppelpunkt drin ist, ist es keine IPv6 Adresse. Werde ich mir mal ansehen.

    Vielen Dank für eure Hinweise.

    Gruß Ingo

  • Hallo,
    so habe es nochmal angepasst. Jetzt sollte es hoffentlich alles gewesen sein.

    Gruß Ingo

  • Hallo,
    leider ist das Ergebnis doch noch nicht wirklich richtig bzw. optimal.Wenn ich das folgende Starte:

    Findet er leider so etwas: "2001:0db8:85a3:08d3:1319:8a2e:0370:" Also die IPv6 Endet auf einen Doppelpunkt. Das darf aber nicht sein. Nur der letzte Eintrag mit zwei Doppelpunkten am Ende "2001:0db8:85a3:08d3::" ist richtig und gültig.


    Hat jemand eine Idee wie ich den einfachen Doppelpunkt am Ende verhindern kann?


    Gruß Ingo