linux-l: OT: Merkwuerdige Adresse

Jens Dreger jens.dreger at physik.fu-berlin.de
Di Feb 22 12:09:33 CET 2000


On Tue, Feb 22, 2000 at 11:07:01AM +0100, Robert C. Helling wrote:
> On Tue, 22 Feb 2000, Robert Sander wrote:
> 
> > Hallo!
> > 
> > Ich moechte jetzt Keinen belaestigen, loescht also die Nachricht vor dem 
> > Lesen, wenn sie Euch nicht gefaellt. ;-)
> > 
> > Ich habe eben Spam bekommen mit dieser komischen Adresse als Referenz und 
> > dachte mir, die wollen nur ueber den unsubscribe-Mechanismus Adressen sammeln, 
> > die Webadresse kann ja gar nicht gehen. Tut sie aber, weil 3521840083 
> > irgendwie im DNS steht:
> > 
> > gurubert at beteigeuze[gurubert]$ host -a 3521840083
> > Name: 211-209.235.3.interliant.com
> > Address: 209.235.3.211
> > 
> > Wie kann das denn gehen? Ich kenne DNS ein wenig, das halte ich aber 
> > eigentlich nicht fuer moeglich.
> 
> Eine weiter guieltige Form ausser der mit den Punkten, ist sie als eine
> long Zahl im 256-System aufzufassen. In hex:
> 
> 3521840083 = 0x D1.EB.03.D3
> 
> und dann
> 
> 0xD1 = 209
> 0xEB = 235
> 0x3  = 3
> 0xD3 = 211
> 
> Robert 
> 

Hi Robert !

Du hast Deine Antwort zwei Minuten, bevor ich Die _Frage_ erhielt,
abgeschickt. Leider kam sie trotzdem erst an, als ich auch
schon eine Antwort geschrieben hatte. Jaja, ich weiss, das geht
technisch nicht anders. ;-)

Anyway, da sich jetzt wahrscheinlich der eine oder andere fragt, wie
die Nummer zu seinem Rechner ist, versuche ich gleich mal eine "wie
rechne ich das am elegantesten in Perl aus"-Diskussion anzuzetteln.

Ich biete:

perl -le 'map {$s=$s*256+$_;} split(/\./,"209.235.3.211"); print $s;'

oder

perl -le 'print unpack("L",pack("C4", split(/\./,"160.45.33.93")));'

Sieht beides nicht sehr elegant aus. Jemand einen besseren Vorschlag ?

Gruss,

Jens.


PS: achja, fuer's shell-skript-archiv biete ich an:
--------8<------------------
#!/bin/sh
# usage: ip2long <ip-number>

SUM=0
for I in `echo $1 | sed -e 's/\./ /g'`; do 
    SUM="($SUM*256+$I)" 
done
echo $SUM | bc
-----------------------8<-----------

direkt ausrechnen in der Shell geht irgendwie wegen signed int nicht.



Mehr Informationen über die Mailingliste linux-l