Relazione tra ID alto e IP e come calcolare l'IP

Started by Raid, Sun 15 June 2008, 12:38

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Raid

Mi sono imbattuto in una discussione molto interessante in emule-project, ed ecco qui che la ripropongo  :laugh:

Prima di tutto, com'è noto c'è una relazione tra ID Alto dell'utente e l'IP:
QuotePer convertire il tuo IP in ID alto segui la seguente formula: per un IP = A.B.C.D l'ID alto è = A + 256*B + 256*256*C + 256*256*256*D.


Ora per tornare all'IP originale seguiamo questo percorso, convertiamo l'ID alto da decimale in binario (usate la calcolatrice scientifica, anche windows ce l'ha)

quindi per esempio, un numero ID alto a caso: 1145845613

1145845613 = 1000100010011000011011101101101

il numero binario deve essere a 32 cifre, in questo caso sono 31 cifre quindi mettiamo uno Zero in testa alla sequenza sulla sinistra e dividiamo il numero in 4 ottave

= 01000100,01001100,00110111,01101101

adesso convertiamo le ottave da binario in decimale e leggiamolo da destra sinistra,

= 68,76,55,109

in questo caso l'IP sarebbe 109.55.76.68

Ogni riferimento a fatti reali e/o persone esistenti è puramente casuale

mulo da soma

Penso sia una vecchia discussione, giusto ?
In pratica il sistema è noto almeno dal 2002, allorchè lugdunummaster lo pubblicò sul suo bellissimo sito, ormai definitivamente chiuso dopo le note vicende sui server dell'estate scorsa.
A quei tempi server che si avvalevano del software Lugdunum come AdaNet e Gruk erano colossi da ... 40-50.000 utenti  :P

Fra le cose conservate di quei tempi (per fortuna) lo script copiato proprio dalla pagina del sito grazie al quale viene svolta tutta la trasformazione descritta da Raid.
Vi basterà copiare il testo su un editor e salvarlo come .htm  :oki:

[spoiler]
<SCRIPT LANGUAGE="JavaScript1.1">
<!--

function calcID(f) {
var aux = (f.IP4.value<<23)+(f.IP3.value<<15)+(f.IP2.value<<7)+(f.IP1.value>>1);
var last = f.IP1.value & 1 ;
var cinq = aux % 5 ;
last += 2*cinq ;
aux = (aux - cinq)/5 ;
f.ID.value = aux.toString(10) + last.toString(10) ;
}

function calcIP(f) {
f.IP1.value = f.ID.value & 255 ;
f.IP2.value = (f.ID.value >>8) & 255 ;
f.IP3.value = (f.ID.value >>16) & 255 ;
f.IP4.value = (f.ID.value >>24) & 255 ;
}

function IP(f,c)
{
var n;
if (c == 1) n = f.IP1.value;
if (c == 2) n = f.IP2.value;
if (c == 3) n = f.IP3.value;
if (c == 4) n = f.IP4.value;
if (n < 0) {
alert("la valeur doit etre comprise entre 0 et 255");
n = 0 ;
}
if (n > 255) {
alert("la valeur doit etre comprise entre 0 et 255");
n = 255;
}
if (c == 1) f.IP1.value = n;
if (c == 2) f.IP2.value = n;
if (c == 3) f.IP3.value = n;
if (c == 4) f.IP4.value = n;
calcID(f);
}



//----------------- -->
</SCRIPT>


<form NAME="IDtoIP" title="utilitaire pour déterminer l'IP en fonction de l'ID edonkey">
<label for="ID">ID edonkey : </label><input type="text" size="11" name="ID" maxlength="11" value="348954942" onChange="calcIP(this.form)" class="textbox">
<fieldset><legend>Adresse IP</legend>
<label for="IP1">adresse IP :
<input type=text size=3 name="IP1" maxlength=3 value=62 onChange="IP(this.form,1)" class="textbox"></label>
<label for="IP2">&#149;
<input type=text size=3 name="IP2" maxlength=3 value=161 onChange="IP(this.form,2)" class="textbox"></label>
<label for="IP3">&#149;
<input type=text size=3 name="IP3" maxlength=3 value=204 onChange="IP(this.form,3)" class="textbox"></label>
<label for="IP4">&#149;
<input type=text size=3 name="IP4" maxlength=3 value=20 onChange="IP(this.form,4)" class="textbox"></label>
</fieldset>
</form>
[/spoiler]

Raid

hai perfettamente ragione, questa è storia amico mio, e se non ci fossero le persone come te a ricordarlo sarebbe tutto perso :wub:

grazie per il tuo contributo