Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Threading;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- using System.Runtime.Serialization.Formatters.Binary;
- class Program
- {
- static byte[] ToByteArray(object source)
- {
- var formatter = new BinaryFormatter();
- using (var stream = new MemoryStream())
- {
- formatter.Serialize(stream, source);
- return stream.ToArray();
- };
- }
- [Serializable]
- public class packageDHCP
- {
- byte op;
- byte htype;
- byte hlen;
- byte hops;
- int xid;
- Int16 secs;
- Int16 flags;
- int ciaddr;
- int yiaddr;
- int siaddr;
- int giaddr;
- byte[] chaddr;
- byte[] sname;
- byte[] file;
- byte[] options;
- enum Boot
- {
- Request = 1,
- Reply = 2,
- };
- public packageDHCP()
- {
- chaddr = new byte[0x10];
- sname = new byte[0x40];
- file = new byte[0x80];
- options = new byte[0x240];
- op = (byte)Boot.Request;
- htype = 1;
- hlen = 6;
- hops = 0;
- xid = 0x3903F326;
- secs = 0;
- flags = 0;
- ciaddr = 0;
- yiaddr = 0;
- siaddr = 0;
- giaddr = 0;
- SetCHADDR(); //0xf4-6d-04-73-a9-72
- SetSNAME();
- SetFILE();
- SetOptions();
- }
- private void SetCHADDR()
- {
- chaddr[0] = 0x72;
- chaddr[1] = 0xa9;
- chaddr[2] = 0x73;
- chaddr[3] = 4;
- chaddr[4] = 0x6d;
- chaddr[5] = 0xf4;
- for (int i = 6; i < chaddr.Length; i++)
- {
- chaddr[i] = 0;
- };
- }
- private void SetSNAME()
- {
- for (int i = 0; i < sname.Length; i++)
- {
- sname[i] = (byte)i;
- };
- }
- private void SetFILE()
- {
- for (int i = 0; i < file.Length; i++)
- {
- file[i] = (byte)i;
- };
- }
- private void SetOptions()
- {
- //99, 130, 83, 99
- options[0] = 0x63;
- options[1] = 0x82;
- options[2] = 0x53;
- options[3] = 0x99;
- for (int i = 4; i < options.Length; i++)
- {
- options[i] = 0;
- };
- }
- };
- static byte[] data;
- static void HandleDNS()
- {
- Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Udp);
- s.Connect("0xff.0xff.0xff.0xff", 67);
- packageDHCP p = new packageDHCP();
- data = ToByteArray(p);
- s.Send(data);
- Thread.Sleep(1000);
- s.Receive(data);
- Console.WriteLine(Encoding.UTF8.GetString(data));
- }
- static void Main()
- {
- HandleDNS();
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement