[Help] DNS Protocol

11/21/2013 20:37 Y u k i#1
I like to program my own DNS Server. Please note, that comments refering to other free DNS Servers wont help.

[Only registered and activated users can see links. Click Here To Register...]

so far, i built async UDP sockets to listen to whatever my network adapter says, the secondary dns is google´s since mine cant resolve yet.
[Only registered and activated users can see links. Click Here To Register...]

finding the offsets troubles me. All documentation i found was about 1bit sizes, afaik, even a bool in c# has 2 bytes.
I know that the string use Punycode as encoding.

I´ve never implemented a protocol like that and hope some of you got some links or advice.

Once again, dont tell me to use a free dns server and dont question why i want one. Not to be rude or anything, but that wouldnt help at all.

This exceeds my brain: [Only registered and activated users can see links. Click Here To Register...]
11/21/2013 20:41 tolio#2
wenn ich mich recht entsinne haben die dns pakete eine ein byte großes flag field, also mach dir ne ne eigene sturktur für bits und rechne dann die bits, je nach position zum entsprechenden byte zusammen
11/21/2013 20:43 Y u k i#3
Quote:
Originally Posted by tolio View Post
wenn ich mich recht entsinne haben die dns pakete eine ein byte großes flag field, also mach dir ne ne eigene sturktur für bits und rechne dann die bits, je nach position zum entsprechenden byte zusammen
Dumme frage, aber wie mach ich mir ne bit struktur? Ich kann doch nur bytes auslesen / schreiben? Oder denke ich schon wieder in meiner box :)

Damit ich jetzt nicht wie ein nixchecker rüberkomm:

PHP Code:
ushort PacketType 0x41f;
            
byte[] Packet = new byte[30];
            
fixed (bytePacket)
            {
                *((
ushort*)p) = (ushort)Packet.Length;
                *((
ushort*)(2)) = PacketType;
                *((
uint*)(4)) = key2;
                *((
uint*)(8)) = key1;
                for (
int i 0ip.Lengthi++)
                {
                    *(
12 i) = Convert.ToByte(ip[i]);
                }
                *((
short*)(28)) = 5816;
            }
            return 
Packet
Das ist so der übliche weg, wie ich meine Pakete für andere Projekte strukturiere. So bald ich alle offsets habe, bin ich glücklich, nur brauch ich auch mehr als ne liste mit namen, ich brauch wenigstens die größe :D
11/21/2013 21:14 tolio#4
entweder du machst es mit nem enum oder halt einfach ne eigene struktur

hier das hat mir mal sehr geholfen weil da beispiele dabei sind:
[Only registered and activated users can see links. Click Here To Register...]
11/22/2013 07:02 Y u k i#5
Quote:
Originally Posted by tolio View Post
entweder du machst es mit nem enum oder halt einfach ne eigene struktur

hier das hat mir mal sehr geholfen weil da beispiele dabei sind:
[Only registered and activated users can see links. Click Here To Register...]
Hey danke, war gestern schon etwas müde aber habs heute morgen dann doch noch hinbekommen :)

Danke!