Rolf b: Wertebreich Integer contra IPv4 in Long

Beitrag lesen

Klar kommst du klar. Du darfst den Wert auf einem 32-bit System nur nicht blindlings verwenden. Musst Du meistens aber auch gar nicht.

Die typischen Prozessoren haben zwei Rechts-Schiebebefehle: ASR und LSR. Und nein, den Befehl AFD haben sie zu dem Zweck nicht. ASR heißt "Arithmetic Shift Right" und füllt den beim Schieben freiwerdenden Raum mit dem Wert des obersten Bits derjenigen Zahl auf, die geschoben wird. Dadurch behält die Zahl ihr Vorzeichen bei. LSR (Logical Shift Right) füllt den freiwerdenden Raum mit Null auf.

Offenbar verwendet PHP den ASR Befehl, und deshalb würde bspw. 0x80 >> 3 zu 0xF0. Wenn man das als 8-bittige, vorzeichenbehaftete Integers ansähe, würde -128 zu -16, was korrekt einer Division durch $$2^3=8$$ entspricht.

Nun sind IPs aber vorzeichenlos - im Gegensatz zu den INT-Werten von PHP. Damit werden alle IPs, deren erste Zahl größer ist als 127, zu negativen INT32 Werten, und Bit-Shifts führen zu Merkwürdigkeiten.

Wenn Du auf Schieberei verzichtest und lediglich die Bit-Operatoren verwendest (& | und ~), ist alles gut. Wie Du mit 32-bit Integers aus der Präfixlänge eine Subnetzmaske machst, habe ich oben beschrieben (-pow(2, 32-$prefixlaenge)).

Rolf

0 74

Array-Work

TS
  • php
  1. 1
    Christian Kruse
    1. 0

      geschachtelte Arrays, IP-Listen aufeinander abgleichen, LÖSUNG und Dank

      TS
  2. 1
    mermshaus
    1. 0
      dedlfix
      1. 0
        mermshaus
        1. 0
          dedlfix
          1. 0
            mermshaus
            1. 0
              dedlfix
              1. 0
                mermshaus
                1. 0
                  Rolf b
                  1. 0
                    mermshaus
                    1. 0
                      Rolf b
                      1. 0
                        mermshaus
                        1. 0
                          TS
                          • netzwerk
                          • routing
                          1. 0
                            Christian Kruse
                            • netzwerk
                          2. 0
                            Auge
                            • netzwerk
                            • zu diesem forum
                            1. 0
                              TS
                              1. 0
                                Christian Kruse
                                1. 0
                                  TS
                                  1. 0
                                    Auge
                                    1. 0
                                      TS
                                      • menschelei
                              2. 0
                                Auge
                                1. 0
                                  Christian Kruse
                        2. 0
                          Rolf b
                          1. 0
                            TS
                            • php
                            • programmiertechnik
                            • sicherheit
                            1. 0
                              Christian Kruse
                          2. 0
                            mermshaus
                            1. 0
                              TS
                2. 0
                  TS
                  1. 0
                    TS
                  2. 0
                    Rolf b
  3. 0
    pl
    • perl
    1. 1
      Christian Kruse
      1. 0
        pl
        1. 0
          Christian Kruse
      2. 0
        TS
        • php
        1. 0
          pl
          1. 0
            TS
  4. 0

    Wertebreich Integer contra IPv4 in Long

    TS
    1. 0
      Matthias Apsel
      1. 0
        Der Martin
        1. 0
          Matthias Apsel
        2. 0
          TS
          1. 0
            Matthias Apsel
            1. 0
              TS
          2. 0
            Christian Kruse
            1. 0
              TS
              1. 0
                Christian Kruse
                1. 0
                  TS
      2. 0
        TS
        1. 0
          Matthias Apsel
          1. 0
            TS
            1. 0

              Lösung übersehen?

              Tagwächter
              1. 0
                Tagwächter
              2. 0
                TS
        2. 1
          Tagwächter
    2. 1
      Rolf b
      1. 0
        TS
      2. 0
        TS
        1. 0
          Tagwächter
          1. 0
            TS
            1. 0
              Tagwächter
  5. 1
    Tagwächter
    • php
    • programmiertechnik
    1. 0
      TS
      1. 0

        fail2ban kann das selbst!

        Tagwächter
        1. 0
          TS
          1. 0
            Tagwächter
            1. 0
              TS
        2. 0
          TS
          • php
          • programmiertechnik
          • server
          1. 0

            fail2ban - multible logfiles

            Tagwächter
            • linux
            • server
            1. 0
              TS
              1. 0
                Tagwächter
                1. 0
                  TS