Ik ben bezig met het schrijven van een netwerkservice voor irc-netwerken. De huidige netwerken maken tegenwoordig gebruik van het P10/J10 protocol voor de verbindingen, wat onder andere inhoudt dat IP-adressen van clients niet meer als fulltext maar als base64 encoded over de lijn gaan om bijvoorbeeld dataverkeer te besparen.
Het verbinden van van de servers met elkaar (een netwerkservice moet namelijk eerst als server verbinden) gaat prima. Bij het toevoegen van de daadwerkelijke client (zodat er ook wat te zien is voor de gebruikers) ben ik tegen een probleem aangelopen: het coderen van deze ip-adressen.
De eerste waarde is natuurlijk het ip-adres, de tweede het ip-adres in hexadecimalen.
De derde waarde is de waarde van het ip-adres in P10 base64. P10 gebruikt een ander soort alfabet, om ervoor te zorgen dat de waarden niet worden verward met mode-strings.
Ik weet dat de eerste drie tekens van de P10 base64 string (DAq dus) 192.168 voorstellen. Dit heb ik gecontroleerd door vanaf verschillende ip-adressen binnen het netwerk te verbinden, en alleen de laatste 3 tekens veranderden.
Mijn probleem is dus: Hoe kom ik van ip-adressen naar de base64 versie van ditzelfde ip-adres? Ik ben druk aan het googelen geweest, en ook wat voorbeelden gevonden, maar zoals bijvoorbeeld deze: http://farhadi.ir/base64.html , geeft een totaal andere waarde dan ik verwacht, en kan ook de DAq niet terugvertalen naar hex/decimalen.
Ik kom er niet meer uit, heeft iemand zoiets misschien eerder gedaan? of een (wiskundig) voorbeeld bij de hand? Het zou mij geweldig helpen!
Het verbinden van van de servers met elkaar (een netwerkservice moet namelijk eerst als server verbinden) gaat prima. Bij het toevoegen van de daadwerkelijke client (zodat er ook wat te zien is voor de gebruikers) ben ik tegen een probleem aangelopen: het coderen van deze ip-adressen.
code:
1
2
3
| Een voorbeeld wat ik heb gevonden: 192.168.0.1 -> c0a80001 -> DAqAAB |
De eerste waarde is natuurlijk het ip-adres, de tweede het ip-adres in hexadecimalen.
De derde waarde is de waarde van het ip-adres in P10 base64. P10 gebruikt een ander soort alfabet, om ervoor te zorgen dat de waarden niet worden verward met mode-strings.
Ik weet dat de eerste drie tekens van de P10 base64 string (DAq dus) 192.168 voorstellen. Dit heb ik gecontroleerd door vanaf verschillende ip-adressen binnen het netwerk te verbinden, en alleen de laatste 3 tekens veranderden.
code:
1
2
3
4
5
6
7
| ======================================
{2} P10 BASE64
======================================
P10 protocol uses a base64 notation for numeric nicks, and for the IP parameter in the N token.
it uses the following set of 64 characters, in the sequence from 0 to 63:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789[] |
Mijn probleem is dus: Hoe kom ik van ip-adressen naar de base64 versie van ditzelfde ip-adres? Ik ben druk aan het googelen geweest, en ook wat voorbeelden gevonden, maar zoals bijvoorbeeld deze: http://farhadi.ir/base64.html , geeft een totaal andere waarde dan ik verwacht, en kan ook de DAq niet terugvertalen naar hex/decimalen.
Ik kom er niet meer uit, heeft iemand zoiets misschien eerder gedaan? of een (wiskundig) voorbeeld bij de hand? Het zou mij geweldig helpen!