├── .gitignore ├── README.md ├── hp-sentinal └── hp-sentinal.go ├── hp-ikev2 └── hp-ikev2.go ├── hp-ripv1 └── hp-ripv1.go ├── hp-ssdp └── hp-ssdp.go ├── hp-heartbeat └── hp-heartbeat.go ├── hp-nat-pmp └── hp-nat-pmp.go ├── hp-quake └── hp-quake.go └── hp-mdns └── hp-mdns.go /.gitignore: -------------------------------------------------------------------------------- 1 | build/* 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # go-emulators 2 | honeypot go lang emulators 3 | 4 | Due to a honeypot user mentioning that the C code was potentially vulnerable we have rewritten the emulated services in GO. We have seen a drastic performance increase. 5 | -------------------------------------------------------------------------------- /hp-sentinal/hp-sentinal.go: -------------------------------------------------------------------------------- 1 | package main 2 | import ( 3 | "fmt" 4 | "net" 5 | "reflect" 6 | ) 7 | 8 | 9 | func sendResponse(conn *net.UDPConn, addr *net.UDPAddr) { 10 | response := "\x7A\x2C\x50\x53\x48\x2C\x27\x41\x7B\x5E\x51\x4F\x48\x70\x65\x5D\x29\x5D\x5C\x5E\x63\x52\x48\x3E\x25\x67\x4E\x51\x58\x62\x48\x3E\x31\x4A\x52\x4E\x5B\x68\x4B\x53\x24\x67\x4D\x50\x66\x6D\x65\x41\x7B\x5A\x5B\x60\x62\x6B\x54\x5B\x29\x68\x3E\x41\x45" 11 | _,err := conn.WriteToUDP([]byte(response), addr) 12 | if err != nil { 13 | fmt.Printf("Couldn't send response %v", err) 14 | } 15 | } 16 | 17 | 18 | func main() { 19 | p := make([]byte, 2048) 20 | addr := net.UDPAddr{ 21 | Port: 5093, 22 | IP: net.ParseIP("0.0.0.0"), 23 | } 24 | ser, err := net.ListenUDP("udp", &addr) 25 | if err != nil { 26 | fmt.Printf("Some error %v\n", err) 27 | return 28 | } 29 | for { 30 | _,remoteaddr,err := ser.ReadFromUDP(p) 31 | // fmt.Printf("Read a message from %v %s \n", remoteaddr, p) 32 | h := "\x7A\x00\x00\x00\x00\x00" 33 | m := []byte(h) 34 | pp := []byte(p)[0:6] 35 | if reflect.DeepEqual(pp, m) { 36 | go sendResponse(ser, remoteaddr) 37 | } 38 | // fmt.Println(pp,m) 39 | if err != nil { 40 | fmt.Printf("Some error %v", err) 41 | continue 42 | } 43 | continue 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /hp-ikev2/hp-ikev2.go: -------------------------------------------------------------------------------- 1 | package main 2 | import ( 3 | "fmt" 4 | "net" 5 | "reflect" 6 | "time" 7 | ) 8 | 9 | 10 | 11 | 12 | func sendResponse(conn *net.UDPConn, addr *net.UDPAddr, spi_val []byte, slp_time int) { 13 | if slp_time != 0 { 14 | slp_time = slp_time*1000 15 | time.Sleep(time.Duration(slp_time) * time.Millisecond) 16 | } 17 | spi_and_ciphers := []byte("\xee\x1b\x7a\x88\x27\x22\xe5\xfa\x01\x10\x02\x00\x00\x00\x00\x00\x00\x00\x01\x08\x0d\x00\x00\x40\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x34\x01\x01\x08\x01\xee\x1b\x7a\x88\x27\x22\xe5\xfa\x00\x00\x00\x24\x02\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x01\x80\x03\x00\x01\x80\x04\x00\x02\x80\x0b\x00\x01\x00\x0c\x00\x04\x00\x00\x70\x80\x0d\x00\x00\x14\x00\x48\xe2\x27\x0b\xea\x83\x95\xed\x77\x8d\x34\x3c\xc2\xa0\x76\x0d\x00\x00\x14\x5c\xbe\xb3\x99\xeb\x83\x5a\x7d\x7a\x2e\xb4\x95\x90\x5d\xb0\x61\x0d\x00\x00\x14\x81\x0f\xa5\x65\xf8\xab\x14\x36\x91\x05\xd7\x06\xfb\xd5\x72\x79\x0d\x00\x00\x14\x7d\x94\x19\xa6\x53\x10\xca\x6f\x2c\x17\x9d\x92\x15\x52\x9d\x56\x0d\x00\x00\x14\x90\xcb\x80\x91\x3e\xbb\x69\x6e\x08\x63\x81\xb5\xec\x42\x7b\x1f\x0d\x00\x00\x14\xcd\x60\x46\x43\x35\xdf\x21\xf8\x7c\xfd\xb2\xfc\x68\xb6\xa4\x48\x0d\x00\x00\x14\x44\x85\x15\x2d\x18\xb6\xbb\xcd\x0b\xe8\xa8\x46\x95\x79\xdd\xcc\x0d\x00\x00\x0c\x09\x00\x26\x89\xdf\xd6\xb7\x12\x00\x00\x00\x14\xaf\xca\xd7\x13\x68\xa1\xf1\xc9\x6b\x86\x96\xfc\x77\x57\x01\x00") 18 | // include inbound SPI in reply, trick ike-scan 19 | response := append(spi_val,spi_and_ciphers...) 20 | _,err := conn.WriteToUDP(response, addr) 21 | // fmt.Printf("Success") 22 | if err != nil { 23 | fmt.Printf("Couldn't send response %v", err) 24 | } 25 | } 26 | 27 | 28 | func main() { 29 | p := make([]byte, 2048) 30 | addr := net.UDPAddr{ 31 | Port: 500, 32 | IP: net.ParseIP("0.0.0.0"), 33 | } 34 | ser, err := net.ListenUDP("udp", &addr) 35 | if err != nil { 36 | fmt.Printf("Some error %v\n", err) 37 | return 38 | } 39 | for { 40 | _,remoteaddr,err := ser.ReadFromUDP(p) 41 | // fmt.Printf("Read a message from %v %s \n", remoteaddr, p) 42 | h := "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x10" 43 | m := []byte(h) 44 | spi_in := []byte(p)[0:8] 45 | pp := []byte(p)[8:18] 46 | // fmt.Printf("SPI: %x\n",spi_in) 47 | // fmt.Printf("HERE: %x\n",pp) 48 | if reflect.DeepEqual(pp, m) { 49 | // simulate an IKEv2 exponential backoff 50 | go sendResponse(ser, remoteaddr, spi_in, 0) 51 | go sendResponse(ser, remoteaddr, spi_in, 1) 52 | go sendResponse(ser, remoteaddr, spi_in, 2) 53 | go sendResponse(ser, remoteaddr, spi_in, 4) 54 | go sendResponse(ser, remoteaddr, spi_in, 8) 55 | go sendResponse(ser, remoteaddr, spi_in, 16) 56 | } 57 | // fmt.Println(pp,m) 58 | if err != nil { 59 | fmt.Printf("Some error %v", err) 60 | continue 61 | } 62 | continue 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /hp-ripv1/hp-ripv1.go: -------------------------------------------------------------------------------- 1 | package main 2 | import ( 3 | "fmt" 4 | "net" 5 | "reflect" 6 | ) 7 | 8 | 9 | func sendResponse(conn *net.UDPConn, addr *net.UDPAddr) { 10 | response := "\xEA\xD7\x2F\xDD\x2C\xF3\xAD\x8C\xA1\x96\x39\x62\xDC\x7E\x9B\x3C\x73\x5A\x73\x08\xA1\x3C\x3B\x13\x9D\xBB\xFE\x10\xB8\xEB\xDA\xE7\x39\xFE\x36\x43\xF9\xB7\xC4\xDA\xBD\x92\x36\x7B\x56\xB5\xBF\xD9\x7A\x94\x50\x19\x61\x67\x8F\x1D\x1F\x4D\x97\x8E\xC4\x3D\x73\xAC\x35\xB1\x57\xD5\xC9\x11\xA4\xD6\xA3\xE0\x9A\xF5\xD2\xA8\xDA\xBB\x2A\xA6\xA3\x82\xE0\x36\xC9\xC1\xE7\xFD\x74\x1A\x0E\xD8\x9E\x20\xD6\x88\x4A\xEA\x14\x1A\x85\x59\x4B\x17\x1E\x28\xC7\x70\x25\xB8\x79\x28\x24\x99\x96\xBF\x20\xD8\xEE\x62\x4E\x0B\x0D\xD4\x95\x1D\x13\x1A\xC7\xDA\x53\xE9\x9F\x39\xAE\xD0\x7A\x6D\xAE\x25\xD6\xAA\x62\xB1\x8B\xB8\xFC\x1B\xCB\x39\x2B\x15\xDB\xB9\x39\x48\x8E\x7A\xE4\x00\x86\xFD\xFE\x97\x2A\x50\xC3\xA3\x66\x1B\xFE\xDF\x26\x68\xDA\xDA\x90\x35\x89\x61\x03\xBB\x97\xAD\xD4\x7C\x0B\x4D\xC3\x0F\x42\xD2\x3F\xAB\x8C\x3C\x5E\x75\x83\x27\x9A\x8A\x2F\xB5\x4D\xCA\xDB\x3A\xEA\x6A\xB5\xAB\x01\x38\x28\xC4\xF1\xAD\xFA\xFB\x6A\xB5\x25\x27\xAA\x3D\x75\xF0\x73\x80\xE5\xF5\xCE\x12\xBA\xC0\x82\xA9\x5D\x6B\x53\xAE\xF9\x0E\xFB\x88\xD9\xF0\xEA\xA3\x7F\x69\xBC\x42\x83\x98\x7E\x0A\x32\xCA\xA1\x4A\xE2\xA5\xBA\x0B\x16\x18\xFF\xDC\x57\x03\x82\x5A\xCD\xA5\x2B\x81\xA0\xC9\x76\xB6\x11\xB0\xF2\x90\x56\xBD\x75\x6A\x3A\xE3\x20\xA9\x71\xCF\x16\xCD\xBC\xD4\xFB\x3A\xC1\x9A\x2E\xC4\xA8\x86\xC7\xFD\x75\xE8\x4F\x3E\x28\xE8\x42\x76\x96\x2D\x45\xB5\x05\x52\x27\x77\x8A\x0A\x99\xB1\x23\x0D\xAE\x9D\x94\xCA\x11\x46\x02\xCA\x08\xD3\x51\xE5\x2C\x93\x3D\x28\xE5\xCC\x3A\x82\xA8\x43\x0C\x31\xF0\x8B\x26\xEF\xFD\x0E\xC4\xDB\x4F\xDD\xC7\x29\xE1\x37\x54\x89\x26\xDB\x2B\x58\xC4\x0D\xC7\x89\x13\x6A\x3B\x51\x54\x6D\xC7\x96\xB1\xBD\x3D\x15\xF9\x3C\x16\x55\x18\xD0\x53\x4F\x57\xEF\x15\xDA\x59\xED\xFB\xD8\xD1\x05\x3F\x23\x04\x29\x90\x35\x02\x89\xAD\x99\xA4\xE5\xC6\x15\x44\x93\x92\x94\x3F\x4F\x2F\xD6\x2C\xC6\xBE\xD6\xD9\xE1\xBA\xFE\x0A\xD2\x1C\x0D\xF0\xDF\x31\xC4\x6B\xF1\x36\x54\xFF\xDC\xB9\x87\x98\x6C\xAF\xB0\xFE\x33\x54\x54\x16\x15\xC6\x95\xDE\x90\x60\x62\x26\xCC\xD7\x60\x0F\x66\x17\x97\x45\xFC\xDB\xDD\xFC\x78\x0E\x03\xAB\x1D\xE5\xC1\x8B\x53\xB9\x61\xCE\x32\xA5\x2E\xA0\xD0\xE4\x9C\xDE\x4B\xE7\x34\x99\x95\x39\x46\x49\x02\x13\x4D\xD1\x93\xBF\x20\x37\x00\xAD\xDE\x1F\x87\x56\x97\x0C\x77\xD4\xBA\x56\x7B\x3E\x43\xEB\xA7\xC5\xA1\xC6\x44\x90\x68\x2F\x5C\x57\xBB\xB7\x04\xC1\x77\xF2\x6C\x7E\x20\xF2\xA8\x24\x8C\x88\x3B\xCB\x51\x3A\x68\x67\xF0\x03\x39\xE8\xBE\xCD\x4C\x13\x96\xAF\x61\x1E\x40\xE6\xA3\x0E\xA0\x95\xB9\xD1\x9E\x3D\x8C\x1A\xD9\xFA\xD7\x00\x0B\x83\x70\x56\x3A\xDF\x58\xC8\xA4\xE8\x83\xBA\x68\x81\x68\xE1\xF4\x97\x49\x9D\x32\xD8\x40\x1D\x71\x36\x0D\x31\x15\x1A\xA1\xEE\xFF\x68\x69\x04\xBA\x37\x5C\xDE\x6A\x4D\xC3\x7E\x75\x5D\xCB\x17\xEE\x00\xCC\x67\xC6\x73\x57\xDB\xB1\x16\x02\x60\xDA\xA0\xF3\x0A\x46\x23\x2D\x68\x08\xC3\x9D\xA1\x2A\x36\xE3\x57\x56\xFB\xE2\x38\x48\x5A\x06\x64\xF4\x1E\x58\x82\x76\x15\x43\xA0\xBD\x44\x23\xCE\xF7\xEA\x93\x7A\xBC\x3B\x73\x8A\xFA\xD9\xBB\x3C\xA3\x12\x03\xBD\x17\xDD\xCE\x8A\x53\x91\x9A\x8A\xD7\x6B\xA8\xE8\x59\xBE\x8B\xB2\x2B\xF7\x73\x33\x6D\x57\x37\x10\xF2\x70\x24\x25\xF3\x5C\x87\x1D\x76\xC0\xFC\xD3\x7C\x84\x75\x6C\xED\x50\x09\x31\x44\xC5\x82\x2D\xFA\x80\xA5\x8A\xB4\xCF\x3F\xAC\x2C\x31\xF4\x0B\xDF\x90\xC7\xD1\x7B\x3D\x68\x37\x07\xAF\x41\x9F\xD0\xFB\x3F\x72\x17\x13\x61\xB7\x7C\xBE\x01\x78\x28\x5B\xE5\xD5\xBE\x55\x05\xE5\xFF\x65\x1A\x50\x3F\x8B\xEB\xAD\x8B\xCA\x57\x9C\x97\xA6\x21\xA3\x6A\x5E\x7E\xC9\xC8\xEA\x60\xF5\x63\xB3\x80\x04\xC0\x15\x2E\xAB\xEA\x95\xD8\x13\xDA\xE2\x5C\x2E\xA1\x8D\x0D\xDA\x5B\x88\x87\xBD\xD4\x60\x33\xDB\xF7\x3A\x99\xF7\xFB\x8F\x69\xB0\x4C\xA7\x47\x56\x3A\xD6\x5A\x91\x63\x79\x93\xB0\xE1\xAF\xBD\xD2\x34\xD8\x49\xB7\xEE\xCF\xD7\x63\x21\xE7\x84\x78\x88\xA6\xF6\x51\x78\x44\x28\xDE\x84\xE2\xF6\x42\xF3\x8A\x68\x2E\xE3\xEA\xBE\xFB\x39\xD0\x40\x8A\x50\x65\xC2\xDC\x5D\x29\xF9\x70\xA4\xB2\x81\x60\x5C\x24\xAA\x3A\x63\x6F\x06\x9F\xA2\x4B\xB3\x9E\x3E\xF5\x68\xCE\x84\xA6\x42\x2D\x91\xD8\x4C\xBB\xC4\x38\xD0\xD6\xE5\x69\x61\x54\x12\x7F\xA3\x62\x6D\x36\xE1\x1F\x87\xF6\x4C\xF8\x8B\x87\x14\xC2\x2A\x94\x29\x99\x4A\xE1\xCE\x7A\x6E\x4C\xE2\xA2\xE3\x85\xEE\xA6\xB0\x8D\xED\x4F\x3B\xEF\xDF\x3B\xBB\xC1\x0C\x35\x61\x5A\x19\x4F\x46\xD0\xCC\xC5\x13\x38\x9E\x91\x72\x9D\x06\xCD\x38\xBC\x80\xCD\x4F\x85\x5F\xF8\x65\x52\x58\x6A\x56\xE5\xCA\x4C\x5A\x24\xCE\xEE\xEE\x93\x03\xA9\x83\x95\x16\x77\xE9\x62\x14\x4F\x7A\xC8" 11 | _,err := conn.WriteToUDP([]byte(response), addr) 12 | // fmt.Printf("Success") 13 | if err != nil { 14 | fmt.Printf("Couldn't send response %v", err) 15 | } 16 | } 17 | 18 | 19 | func main() { 20 | p := make([]byte, 2048) 21 | addr := net.UDPAddr{ 22 | Port: 520, 23 | IP: net.ParseIP("0.0.0.0"), 24 | } 25 | ser, err := net.ListenUDP("udp", &addr) 26 | if err != nil { 27 | fmt.Printf("Some error %v\n", err) 28 | return 29 | } 30 | for { 31 | _,remoteaddr,err := ser.ReadFromUDP(p) 32 | // fmt.Printf("Read a message from %v %s \n", remoteaddr, p) 33 | h := "\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10" 34 | m := []byte(h) 35 | pp := []byte(p)[0:24] 36 | if reflect.DeepEqual(pp, m) { 37 | go sendResponse(ser, remoteaddr) 38 | } 39 | // fmt.Println(pp,m) 40 | if err != nil { 41 | fmt.Printf("Some error %v", err) 42 | continue 43 | } 44 | continue 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /hp-ssdp/hp-ssdp.go: -------------------------------------------------------------------------------- 1 | package main 2 | import ( 3 | "fmt" 4 | "net" 5 | "reflect" 6 | ) 7 | 8 | 9 | func sendResponse(conn *net.UDPConn, addr *net.UDPAddr) { 10 | response := "\x48\x54\x54\x50\x2F\x31\x2E\x31\x20\x32\x30\x30\x20\x4F\x4B\x0D\x0A\x43\x61\x63\x68\x65\x2D\x43\x6F\x6E\x74\x72\x6F\x6C\x3A\x20\x6D\x61\x78\x2D\x61\x67\x65\x3D\x31\x32\x30\x0D\x0A\x4C\x6F\x63\x61\x74\x69\x6F\x6E\x3A\x20\x68\x74\x74\x70\x3A\x2F\x2F\x31\x39\x32\x2E\x31\x36\x38\x2E\x30\x2E\x31\x3A\x36\x35\x35\x33\x35\x2F\x72\x6F\x6F\x74\x44\x65\x73\x63\x2E\x78\x6D\x6C\x0D\x0A\x53\x65\x72\x76\x65\x72\x3A\x20\x4C\x69\x6E\x75\x78\x2F\x32\x2E\x34\x2E\x32\x32\x2D\x31\x2E\x32\x31\x31\x35\x2E\x6E\x70\x74\x6C\x20\x55\x50\x6E\x50\x2F\x31\x2E\x30\x20\x6D\x69\x6E\x69\x75\x70\x6E\x70\x64\x2F\x31\x2E\x30\x0D\x0A\x53\x54\x3A\x20\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x75\x70\x6E\x70\x2D\x6F\x72\x67\x3A\x64\x65\x76\x69\x63\x65\x3A\x49\x6E\x74\x65\x72\x6E\x65\x74\x47\x61\x74\x65\x77\x61\x79\x44\x65\x76\x69\x63\x65\x3A\x0D\x0A\x55\x53\x4E\x3A\x20\x75\x75\x69\x64\x3A\x62\x31\x63\x35\x64\x36\x30\x63\x2D\x31\x64\x64\x31\x2D\x31\x31\x62\x32\x2D\x38\x36\x38\x37\x2D\x61\x30\x62\x63\x38\x66\x37\x36\x64\x36\x34\x34\x3A\x3A\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x75\x70\x6E\x70\x2D\x6F\x72\x67\x3A\x64\x65\x76\x69\x63\x65\x3A\x49\x6E\x74\x65\x72\x6E\x65\x74\x47\x61\x74\x65\x77\x61\x79\x44\x65\x76\x69\x63\x65\x3A\x0D\x0A\x0D\x0A\x48\x54\x54\x50\x2F\x31\x2E\x31\x20\x32\x30\x30\x20\x4F\x4B\x0D\x0A\x43\x41\x43\x48\x45\x2D\x43\x4F\x4E\x54\x52\x4F\x4C\x3A\x20\x6D\x61\x78\x2D\x61\x67\x65\x20\x3D\x20\x31\x32\x30\x0D\x0A\x4C\x4F\x43\x41\x54\x49\x4F\x4E\x3A\x20\x68\x74\x74\x70\x3A\x2F\x2F\x31\x39\x32\x2E\x31\x36\x38\x2E\x31\x2E\x31\x3A\x38\x30\x2F\x55\x50\x6E\x50\x2F\x49\x47\x44\x2E\x78\x6D\x6C\x0D\x0A\x53\x54\x3A\x20\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x75\x70\x6E\x70\x2D\x6F\x72\x67\x3A\x73\x65\x72\x76\x69\x63\x65\x3A\x57\x41\x4E\x49\x50\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x3A\x31\x0D\x0A\x53\x45\x52\x56\x45\x52\x3A\x20\x53\x79\x73\x74\x65\x6D\x2F\x31\x2E\x30\x20\x55\x50\x6E\x50\x2F\x31\x2E\x30\x20\x49\x47\x44\x2F\x31\x2E\x30\x0D\x0A\x55\x53\x4E\x3A\x20\x75\x75\x69\x64\x3A\x57\x41\x4E\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x7B\x39\x36\x37\x39\x64\x35\x36\x36\x2D\x32\x33\x30\x61\x2D\x34\x39\x64\x33\x2D\x39\x32\x65\x35\x2D\x34\x32\x31\x65\x39\x32\x32\x33\x65\x61\x65\x66\x7D\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x3A\x3A\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x75\x70\x6E\x70\x2D\x6F\x72\x67\x3A\x73\x65\x72\x76\x69\x63\x65\x3A\x57\x41\x4E\x49\x50\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x3A\x31\x0D\x0A\x0D\x0A\x48\x54\x54\x50\x2F\x31\x2E\x31\x20\x32\x30\x30\x20\x4F\x4B\x0D\x0A\x53\x65\x72\x76\x65\x72\x3A\x20\x43\x75\x73\x74\x6F\x6D\x2F\x31\x2E\x30\x20\x55\x50\x6E\x50\x2F\x31\x2E\x30\x20\x50\x72\x6F\x63\x2F\x56\x65\x72\x0D\x0A\x4C\x6F\x63\x61\x74\x69\x6F\x6E\x3A\x20\x68\x74\x74\x70\x3A\x2F\x2F\x31\x39\x32\x2E\x31\x36\x38\x2E\x31\x2E\x31\x3A\x35\x34\x33\x31\x2F\x64\x79\x6E\x64\x65\x76\x2F\x75\x75\x69\x64\x3A\x32\x30\x34\x65\x37\x66\x63\x65\x2D\x31\x31\x38\x65\x2D\x38\x65\x31\x31\x2D\x63\x65\x37\x66\x2D\x34\x65\x32\x30\x34\x65\x63\x65\x38\x65\x30\x30\x30\x30\x0D\x0A\x43\x61\x63\x68\x65\x2D\x43\x6F\x6E\x74\x72\x6F\x6C\x3A\x6D\x61\x78\x2D\x61\x67\x65\x3D\x31\x38\x30\x30\x0D\x0A\x53\x54\x3A\x75\x75\x69\x64\x3A\x32\x30\x34\x65\x37\x66\x63\x65\x2D\x31\x31\x38\x65\x2D\x38\x65\x31\x31\x2D\x63\x65\x37\x66\x2D\x34\x65\x32\x30\x34\x65\x63\x65\x38\x65\x30\x30\x30\x32\x0D\x0A\x55\x53\x4E\x3A\x75\x75\x69\x64\x3A\x32\x30\x34\x65\x37\x66\x63\x65\x2D\x31\x31\x38\x65\x2D\x38\x65\x31\x31\x2D\x63\x65\x37\x66\x2D\x34\x65\x32\x30\x34\x65\x63\x65\x38\x65\x30\x30\x30\x32\x0D\x0A\x0D\x0A\x48\x54\x54\x50\x2F\x31\x2E\x31\x20\x32\x30\x30\x20\x4F\x4B\x0D\x0A\x43\x41\x43\x48\x45\x2D\x43\x4F\x4E\x54\x52\x4F\x4C\x3A\x20\x6D\x61\x78\x2D\x61\x67\x65\x20\x3D\x20\x31\x32\x30\x0D\x0A\x4C\x4F\x43\x41\x54\x49\x4F\x4E\x3A\x20\x68\x74\x74\x70\x3A\x2F\x2F\x31\x39\x32\x2E\x31\x36\x38\x2E\x31\x2E\x31\x3A\x38\x30\x2F\x55\x50\x6E\x50\x2F\x49\x47\x44\x2E\x78\x6D\x6C\x0D\x0A\x53\x54\x3A\x20\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x75\x70\x6E\x70\x2D\x6F\x72\x67\x3A\x64\x65\x76\x69\x63\x65\x3A\x57\x41\x4E\x44\x65\x76\x69\x63\x65\x3A\x31\x0D\x0A\x53\x45\x52\x56\x45\x52\x3A\x20\x53\x79\x73\x74\x65\x6D\x2F\x31\x2E\x30\x20\x55\x50\x6E\x50\x2F\x31\x2E\x30\x20\x49\x47\x44\x2F\x31\x2E\x30\x0D\x0A\x55\x53\x4E\x3A\x20\x75\x75\x69\x64\x3A\x57\x41\x4E\x7B\x38\x34\x38\x30\x37\x35\x37\x35\x2D\x32\x35\x31\x62\x2D\x34\x63\x30\x32\x2D\x39\x35\x34\x62\x2D\x65\x38\x65\x32\x62\x61\x37\x32\x31\x36\x61\x39\x7D\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x3A\x3A\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x75\x70\x6E\x70\x2D\x6F\x72\x67\x3A\x64\x65\x76\x69\x63\x65\x3A\x57\x41\x4E\x44\x65\x76\x69\x63\x65\x3A\x31\x0D\x0A\x0D\x0A" 11 | _,err := conn.WriteToUDP([]byte(response), addr) 12 | // fmt.Printf("Success") 13 | if err != nil { 14 | fmt.Printf("Couldn't send response %v", err) 15 | } 16 | } 17 | 18 | 19 | func main() { 20 | p := make([]byte, 2048) 21 | addr := net.UDPAddr{ 22 | Port: 1900, 23 | IP: net.ParseIP("0.0.0.0"), 24 | } 25 | ser, err := net.ListenUDP("udp", &addr) 26 | if err != nil { 27 | fmt.Printf("Some error %v\n", err) 28 | return 29 | } 30 | for { 31 | _,remoteaddr,err := ser.ReadFromUDP(p) 32 | // fmt.Printf("Read a message from %v %s \n", remoteaddr, p) 33 | m := []byte("M-SEARCH") 34 | pp := []byte(p)[0:8] 35 | if reflect.DeepEqual(pp, m) { 36 | go sendResponse(ser, remoteaddr) 37 | } 38 | // fmt.Println(pp,m) 39 | if err != nil { 40 | fmt.Printf("Some error %v", err) 41 | continue 42 | } 43 | continue 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /hp-heartbeat/hp-heartbeat.go: -------------------------------------------------------------------------------- 1 | package main 2 | import ( 3 | "fmt" 4 | "net" 5 | "reflect" 6 | ) 7 | 8 | 9 | func sendResponse(conn *net.UDPConn, addr *net.UDPAddr) { 10 | response := "\x43\x7D\xB9\xDF\x90\x23\xD6\x1D\x00\x00\x00\x00\x00\x00\x00\x00\x01\x10\x02\x00\x00\x00\x00\x00\x00\x00\x04\xA0\x0D\x00\x04\x44\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x04\x38\x01\x01\x00\x14\x03\x00\x00\x24\x01\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x02\x80\x04\x00\x02\x80\x03\x00\x01\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x02\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x01\x80\x04\x00\x02\x80\x03\x00\x01\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x03\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x02\x80\x04\x00\x01\x80\x03\x00\x01\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x04\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x01\x80\x04\x00\x01\x80\x03\x00\x01\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x05\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x02\x80\x04\x00\x02\x80\x03\x00\x03\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x06\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x01\x80\x04\x00\x02\x80\x03\x00\x03\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x07\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x02\x80\x04\x00\x01\x80\x03\x00\x03\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x08\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x01\x80\x04\x00\x01\x80\x03\x00\x03\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x09\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x02\x80\x04\x00\x02\x80\x03\x00\x01\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x0A\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x01\x80\x04\x00\x02\x80\x03\x00\x01\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x0B\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x02\x80\x04\x00\x01\x80\x03\x00\x01\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x24\x0C\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x01\x80\x04\x00\x01\x80\x03\x00\x01\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x03\x00\x00\x50\x0D\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x02\x80\x04\x00\x02\x80\x03\xFD\xE9\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x7D\x01\x00\x28\x6E\x00\x6F\x00\x64\x00\x65\x00\x33\x00\x30\x00\x36\x00\x24\x00\x40\x00\x45\x00\x43\x00\x47\x00\x52\x00\x49\x00\x44\x00\x2E\x00\x4E\x00\x45\x00\x54\x00\x00\x00\x03\x00\x00\x50\x0E\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x02\x80\x04\x00\x02\x80\x03\xFD\xE9\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x40\x00\x00\x28\x6E\x00\x6F\x00\x64\x00\x65\x00\x33\x00\x30\x00\x36\x00\x24\x00\x40\x00\x45\x00\x43\x00\x47\x00\x52\x00\x49\x00\x44\x00\x2E\x00\x4E\x00\x45\x00\x54\x00\x00\x00\x03\x00\x00\x50\x0F\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x01\x80\x04\x00\x02\x80\x03\xFD\xE9\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x7D\x01\x00\x28\x6E\x00\x6F\x00\x64\x00\x65\x00\x33\x00\x30\x00\x36\x00\x24\x00\x40\x00\x45\x00\x43\x00\x47\x00\x52\x00\x49\x00\x44\x00\x2E\x00\x4E\x00\x45\x00\x54\x00\x00\x00\x03\x00\x00\x50\x10\x01\x00\x00\x80\x01\x00\x05\x80\x02\x00\x01\x80\x04\x00\x02\x80\x03\xFD\xE9\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x40\x00\x00\x28\x6E\x00\x6F\x00\x64\x00\x65\x00\x33\x00\x30\x00\x36\x00\x24\x00\x40\x00\x45\x00\x43\x00\x47\x00\x52\x00\x49\x00\x44\x00\x2E\x00\x4E\x00\x45\x00\x54\x00\x00\x00\x03\x00\x00\x50\x11\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x02\x80\x04\x00\x01\x80\x03\xFD\xE9\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x7D\x01\x00\x28\x6E\x00\x6F\x00\x64\x00\x65\x00\x33\x00\x30\x00\x36\x00\x24\x00\x40\x00\x45\x00\x43\x00\x47\x00\x52\x00\x49\x00\x44\x00\x2E\x00\x4E\x00\x45\x00\x54\x00\x00\x00\x03\x00\x00\x50\x12\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x02\x80\x04\x00\x01\x80\x03\xFD\xE9\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x40\x00\x00\x28\x6E\x00\x6F\x00\x64\x00\x65\x00\x33\x00\x30\x00\x36\x00\x24\x00\x40\x00\x45\x00\x43\x00\x47\x00\x52\x00\x49\x00\x44\x00\x2E\x00\x4E\x00\x45\x00\x54\x00\x00\x00\x03\x00\x00\x50\x13\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x01\x80\x04\x00\x01\x80\x03\xFD\xE9\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x7D\x01\x00\x28\x6E\x00\x6F\x00\x64\x00\x65\x00\x33\x00\x30\x00\x36\x00\x24\x00\x40\x00\x45\x00\x43\x00\x47\x00\x52\x00\x49\x00\x44\x00\x2E\x00\x4E\x00\x45\x00\x54\x00\x00\x00\x00\x00\x00\x50\x14\x01\x00\x00\x80\x01\x00\x01\x80\x02\x00\x01\x80\x04\x00\x01\x80\x03\xFD\xE9\x80\x0B\x00\x01\x00\x0C\x00\x04\x00\x00\x70\x80\x40\x00\x00\x28\x6E\x00\x6F\x00\x64\x00\x65\x00\x33\x00\x30\x00\x36\x00\x24\x00\x40\x00\x45\x00\x43\x00\x47\x00\x52\x00\x49\x00\x44\x00\x2E\x00\x4E\x00\x45\x00\x54\x00\x00\x00\x0D\x00\x00\x18\x1E\x2B\x51\x69\x05\x99\x1C\x7D\x7C\x96\xFC\xBF\xB5\x87\xE4\x61\x00\x00\x00\x02\x0D\x00\x00\x14\x40\x48\xB7\xD5\x6E\xBC\xE8\x85\x25\xE7\xDE\x7F\x00\xD6\xC2\xD3\x00\x00\x00\x14\x90\xCB\x80\x91\x3E\xBB\x69\x6E\x08\x63\x81\xB5\xEC\x42\x7B\x1F" 11 | _,err := conn.WriteToUDP([]byte(response), addr) 12 | // fmt.Printf("Success") 13 | if err != nil { 14 | fmt.Printf("Couldn't send response %v", err) 15 | } 16 | } 17 | 18 | 19 | func main() { 20 | p := make([]byte, 2048) 21 | addr := net.UDPAddr{ 22 | Port: 7778, 23 | IP: net.ParseIP("0.0.0.0"), 24 | } 25 | ser, err := net.ListenUDP("udp", &addr) 26 | if err != nil { 27 | fmt.Printf("Some error %v\n", err) 28 | return 29 | } 30 | for { 31 | _,remoteaddr,err := ser.ReadFromUDP(p) 32 | // fmt.Printf("Read a message from %v %s \n", remoteaddr, p) 33 | h := "\x5c\x73\x74\x61\x74\x75\x73\x5c" 34 | m := []byte(h) 35 | pp := []byte(p)[0:8] 36 | if reflect.DeepEqual(pp, m) { 37 | go sendResponse(ser, remoteaddr) 38 | } 39 | // fmt.Println(pp,m) 40 | if err != nil { 41 | fmt.Printf("Some error %v", err) 42 | continue 43 | } 44 | continue 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /hp-nat-pmp/hp-nat-pmp.go: -------------------------------------------------------------------------------- 1 | package main 2 | import ( 3 | "fmt" 4 | "net" 5 | "reflect" 6 | ) 7 | 8 | 9 | func sendResponse(conn *net.UDPConn, addr *net.UDPAddr) { 10 | response := "\xCD\xC2\x32\x80\x0D\x26\x13\xEC\xA6\x7B\x8C\xE1\x84\x95\xDB\x56\x97\xD4\x90\xA9\xAB\xB0\x83\xD9\xE0\x13\x5D\xC1\x67\xFD\x15\xB4\x97\x57\xCD\x8C\x72\xBA\xBE\x64\x8D\x5F\xC4\xBB\x76\x01\x0A\x5D\x11\x1A\x8F\x20\xAD\xBD\x6D\x59\xB9\x54\x44\xEB\x22\xC0\x1F\x8D\x55\xA1\x94\xA1\x05\xB1\xBF\xF9\x5C\x65\xB9\x10\x9A\x62\x00\x02\xBA\x30\x69\xDC\xFF\x24\x73\x92\x75\x4B\xA8\x2C\x77\x1B\xCC\x95\xE5\xCE\x3D\x00\xFB\x9D\x46\xD7\x42\x07\x4B\x61\x62\x90\xA2\x7A\x49\x03\x69\xB9\x98\x6E\x05\xC2\xCD\x21\x57\x4A\xF2\xF3\x6D\x85\x23\x15\x68\x42\x3E\x45\xFF\x93\x36\x35\x50\x10\x16\x4F\x1F\x32\x2B\xA4\x30\x1E\x98\x8F\x98\x8E\x46\x96\x66\x5E\xE7\xE7\x0E\x09\x06\xCB\x5E\xA8\xBD\x7B\xD6\xF7\x01\xF1\xB2\x00\xD5\x67\xE7\xC7\x21\x3F\x4E\xBD\x28\xF0\x47\x90\x90\xCF\xCF\x8E\x7F\xD9\x59\x74\x58\x67\x10\x97\x47\xFC\xE1\xA8\x48\x71\x00\x9D\xDF\x98\xC2\xA6\xD7\xB8\x4C\xA1\x16\x6A\xCB\xF6\x2E\x9E\xF5\x4A\xE5\x8B\x19\xDE\x83\xD7\x9F\x1A\x68\x59\xBD\x21\xBC\x49\xCF\x70\x04\xF5\x09\x7F\xDF\xBD\x01\x57\x71\x16\xFA\xE7\x5D\x5F\x46\xB1\xD8\x01\x0C\x10\x1F\x65\xD6\xCF\x13\xE9\x6E\x4B\x69\x58\xC1\xDF\x10\x3A\xFF\x29\xB5\x4A\x87\x00\x6F\x7E\x11\x57\xC0\x83\xB7\x6B\x65\x5E\xAE\x7C\x83\x35\x47\xF2\xA7\xAB\x75\x7B\x85\x73\x0F\xE9\xAA\xB4\xC3\x75\x73\xD4\xFC\x50\x2B\x7A\x9E\xCB\xA7\xF6\x44\x43\xC3\x4C\x2E\x6E\xCE\xFD\xFA\xA3\x50\x0B\x33\x4F\x9C\x92\xB3\x6E\x74\xD0\xB7\x77\x62\x3D\xD4\x37\x1A\xA6\x78\x03\xD4\xD4\x67\xAE\xA0\x93\x82\x09\x08\xE7\xBD\x8D\x72\xE3\xF0\x77\x12\x5D\x17\x2F\x2C\xFC\xFF\x8A\x5A\xC6\xBB\x23\x4B\xA3\x8D\xCB\x77\x12\x98\x1E\x52\xC6\x27\xCD\x04\xFA\xDD\x27\x36\x81\xEF\xE5\x39\x48\xA4\x01\xCA\x7E\x5E\xBF\xC9\x77\xB6\xEF\x28\x21\x60\x15\x80\x19\x8B\x96\x2F\xD3\x03\x8E\x7C\x43\x56\xEA\xC2\xF2\x94\xE3\x08\x99\xB2\xFA\x07\xEA\xE8\x3C\xED\x64\x96\xF7\x54\x55\xE4\xAB\xEF\x68\xAC\xB7\x45\x1D\xFB\x73\x89\xFD\x07\xD0\x96\xE6\x31\xDE\x2B\x66\xA7\x29\x9E\x71\x16\x22\x82\x8C\xF6\xD2\xA4\xB7\xAE\x9F\x7F\x19\x54\x5B\x35\x75\x95\xC7\xBB\x30\xE4\x79\x4B\x06\x49\xF2\xF3\xA0\xAD\x8C\x86\xF3\x20\x91\x10\x8A\x8B\xF7\x0E\x4E\xD0\x58\x78\x84\xBE\x30\xB0\x47\xE1\xAA\xF5\x36\xC3\xA5\xFF\x71\x72\xD4\x27\x56\x96\x85\xAA\xFF\xE2\x48\xB7\xB0\x42\x79\xFA\x68\xA5\xAD\x8F\xFC\xF6\xA3\x2B\xD5\x84\xAF\xA7\x66\x67\xC9\xF3\x7A\xBF\xE5\x42\xE2\xC6\x8C\xED\x72\x3C\x8A\x61\xD2\x48\x37\xBA\x0E\x33\x43\x20\x4C\x81\x40\xCB\x03\x3A\x95\x1F\x00\x0B\x56\xBB\x71\xA2\xFB\xFA\x1D\x33\x3A\x79\x60\xC9\x76\x99\xC0\x54\x69\xD1\xFD\xFD\x17\x60\x3E\x39\x78\xD0\xA7\xB5\xC6\xF5\xE3\xCD\x48\xD7\x4F\xA4\xD1\x09\x29\xE2\x32\x55\x51\x2F\x2A\x7B\x76\x47\xF7\xA5\x59\x9B\x3C\x7A\xCC\x5B\xE3\x98\x7D\x34\xD4\xA2\xA0\x69\x93\xE5\x34\xCD\x47\x78\x18\x32\xF1\x6F\xA5\xAD\x6B\xC7\x5D\xFC\x1D\x8E\x7E\x6B\xA2\x35\x83\xC4\xA9\x94\x47\x39\x52\xFE\x5F\x4F\x5D\xCA\xEC\x3D\x7E\x58\x3C\x86\xB9\x76\xEC\xCC\x44\xA8\xA3\xF6\x7B\xAB\x60\xB2\x76\x5E\xDE\xA9\x79\x99\xFA\x01\xC5\xE4\xF7\xB8\x8F\x0D\x2B\x36\xB8\xBC\xAC\x8F\xF2\xE8\x83\x95\x59\xEF\xC8\xC3\xF9\x65\x05\xAF\xC0\x99\xB6\xBC\x0C\x81\x47\x39\xBD\x6D\x49\x9F\x34\x1B\xE0\x94\xCC\x6A\xAE\x66\x0B\xE8\x7C\xDE\x9A\xC8\x9D\x9B\x97\x12\xBD\x79\x64\xBE\xFA\x9B\xAC\x0D\xC3\x88\xA6\xFA\x31\x00\xA8\x97\xDC\x95\x1D\x1C\x8D\xC5\x3C\x17\xCD\x7E\x65\x88\xDE\x0F\x3D\x55\xF9\x72\x7F\x3F\xC8\xC8\x2D\x74\x9A\x8A\x58\x25\x85\x68\xA7\x61\x6C\xF4\x21\xD5\x74\xDC\x0A\xBE\x49\xE5\x48\x30\xE9\xF4\xDE\x89\xB6\xDC\xA9\x10\xF2\x48\x32\xA3\x58\xFD\x0F\x96\x60\x33\xDA\x19\x6D\xA9\x8D\x9A\xEF\x91\x9F\x0D\x41\x59\x9A\x7E\xD3\x6D\x0C\x3C\xDA\xE6\x71\x75\x3B\x5D\x51\x31\xBA\x10\xD7\xF5\x15\x1C\xEF\x3A\xF2\x0B\xAE\xF7\x04\x68\x97\xA9\xDD\x71\x3C\x78\x8E\x7F\x02\xA2\x73\x44\xB4\x9A\x74\x16\xEA\xC8\x17\x09\x62\x7C\xC2\x10\xD0\x4A\x35\x71\x2C\xEE\x14\x65\xA4\x16\x16\x08\x8D\x58\x55\x97\xF8\x54\x51\x43\xE9\xAA\x55\xFE\xA1\x78\xF1\xD7\xFA\x8A\xDD\x64\xE8\xCD\xE1\x89\xDC\x4C\x41\xAA\x04\x07\x1D\x23\x24\xC9\xE9\x76\x4D\xD4\xD5\x6E\x2F\xDC\x39\x6D\xC7\x81\x7E\xB8\x6A\x95\xBE\x46\x16\xDE\x39\x24\x57\x6A\x65\xF5\xEB\xB1\x76\x31\x77\x3C\x2D\xE6\x34\x24\xB6\x58\x72\x45\x55\xDB\x90\xC9\xC4\xAD\x10\x71\x46\x8B\xA8\xF3\x6A\xA4\x84\x12\x46\x69\x61\x57\x3B\x0F\xF0\x05\xA7\x16\x99\x53\xDF\x7C\xA9\x68\x54\x5E\x32\xD8\xA2\x84\xB9\xDC\x6C\x2D\x10\xA3\x91\xB7\x9D\xBC\x75\x3F\xB2\xA8\x3A\x44\x22\x91\xE9\xDE\xFC\xB2\x16\x86\xAC\x44\x08\xC0\xEC\x6E\x9E\xDA\x73\xE4\x21\xCC\x44\x46\xD7\x27\xEB\x54\xA3\x78\xE9\x26\xA6\xEA\x54\xEB\x82\x95\x20\x8C\xA4\xB7\xCB\x1F\x93\x4D\x36\x21\x4F\xFC\x0B\xDA\x69\x68\x21\xB5\x59\xC1\x5C\xC5\xCB\x80\x20\xDC\x15\xC5\xB5\xFE\x9B\x67\x0E\xA5\x59\x05\xE8\xE4\xA7\x40\xBE\xD7\x27\xE7\xF7\x56\xE4\xF0\x0C\xE8\x7A\x27\x52\xCE\x24\x96\x7F\xC9\xEB\x91\x0F\x63\x0A\x04\x16\xC5\x1E\xF4\x19\x50\xDC\x83\xEB\x3F\x31\x44\xD3\xD9\xAB\x42\xF2\x68\xAD\x56\x0A\xC0\xED\x98\x3F\x71\x9C\x41\x7A\xE6\x79\x63\xF0\x55\xB8\x51\x9B\x97\x19\xFB\x84\xAC\xBA\x3B\x15\xCF\xC7\x44\x5C\x9D\x78\x37\xBE\x46\xEE\xDE\x9E\x76\x54\xBA\xF0\xD7\x2F\xCF\xB0\x21\x9D\xD4\xD8\x35\x40\x26\x8A\x2D\x7B\x9C\x41\xD6\x4A\x9A\x1E\xC2\x74\x1B\x6E\x4E\x64\x86\x36\x02\x5A\xAE\xB8\x23\xF1\x8F\x9B\x51\x2B\xB7\xFC\xB7\x6C\xA8\x1C\xCB\x13\xFA\xD5\xBC\xAE\x24\x89\x97\xD8\x5D\x52\x28\x2C\x29\x74\xD6\xE2\x16\x3C\x0B\x8D\xFF\x30\xD3\xC0\x7C\x25\x2B\x9D\x69\xC1\x14\xB7\xD4\x6D\xF0\x0D\x9C\x3A\x34\x2D\x5F\x37\x93\x4A\xC0\xA6\xF5\x34\xE0\x48\x45\xD6\xA9\x28\xD6\x2C\x67\x7A\x2C\x2D\x11\x42\x65\x42\x91\xA3" 11 | _,err := conn.WriteToUDP([]byte(response), addr) 12 | // fmt.Printf("Success") 13 | if err != nil { 14 | fmt.Printf("Couldn't send response %v", err) 15 | } 16 | } 17 | 18 | 19 | func main() { 20 | p := make([]byte, 2048) 21 | addr := net.UDPAddr{ 22 | Port: 5351, 23 | IP: net.ParseIP("0.0.0.0"), 24 | } 25 | ser, err := net.ListenUDP("udp", &addr) 26 | if err != nil { 27 | fmt.Printf("Some error %v\n", err) 28 | return 29 | } 30 | for { 31 | _,remoteaddr,err := ser.ReadFromUDP(p) 32 | // fmt.Printf("Read a message from %v %s \n", remoteaddr, p) 33 | h := "\x00\x00" 34 | m := []byte(h) 35 | pp := []byte(p)[0:2] 36 | if reflect.DeepEqual(pp, m) { 37 | go sendResponse(ser, remoteaddr) 38 | } 39 | // fmt.Println(pp,m) 40 | if err != nil { 41 | fmt.Printf("Some error %v", err) 42 | continue 43 | } 44 | continue 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /hp-quake/hp-quake.go: -------------------------------------------------------------------------------- 1 | package main 2 | import ( 3 | "fmt" 4 | "net" 5 | "reflect" 6 | ) 7 | 8 | 9 | func sendResponse(conn *net.UDPConn, addr *net.UDPAddr) { 10 | response := "\x87\xB5\x83\x80\x00\x01\x00\x15\x00\x00\x00\x01\x04\x63\x70\x73\x63\x03\x67\x6F\x76\x00\x00\xFF\x00\x01\xC0\x0C\x00\x2E\x00\x01\x00\x00\x07\xA6\x01\x1C\x00\x0F\x07\x02\x00\x00\x54\x60\x56\x47\xF6\x10\x56\x3E\xAD\x80\xF5\x1C\x04\x63\x70\x73\x63\x03\x67\x6F\x76\x00\x1B\x1F\xF1\x8A\x10\x81\xDE\x55\xD3\xCC\x6D\xA5\x6C\xFF\xC1\x85\x8F\x13\x73\xB7\xDE\x09\xE8\xA0\x35\x76\xA6\x60\x27\x03\x8C\xB6\x96\xB2\xB9\x1F\xDB\x82\x38\xCD\xE1\xD3\x00\xC0\x72\x50\x7E\xEB\x21\xC5\xED\x0E\x8E\x97\xB7\xAD\xF1\x57\x72\xAF\x35\x8D\x37\xEC\x77\x3B\x5B\x6B\xD0\xAB\xF7\xE1\xC3\xA5\x1E\xB2\x21\x9E\x6F\x5E\x64\x6A\xBD\xBD\x9B\xCD\xF9\xE7\xA7\x25\xF9\xAD\xF8\x38\x28\x49\x73\x85\xDE\xC1\x86\xD9\xDB\x33\xB1\x1C\x0F\xE9\xBF\x86\xCC\xA7\xBA\x82\xE6\xFE\xBB\x52\xC0\x5A\x6B\xC1\x7F\x48\xCF\x20\x8F\xEF\xF7\xB9\xD2\x22\x00\x8A\x31\x52\xE5\x4B\xA9\x49\x4D\xDF\x1A\xE4\xBB\x51\x15\x90\x66\x95\xA4\x46\x5F\xAA\x09\x98\xDE\xF3\x98\x2C\xA1\x87\x1C\x5C\xD9\xA2\xCF\xBC\x9E\x59\x88\xE8\x2C\x68\x1F\xCD\x0E\x1F\x25\xE5\x85\x0C\xD6\x26\x9E\x60\xAD\x9A\xD7\x0D\x07\x8E\x8D\xEC\x7A\x96\xAD\x86\x2B\xEF\x68\x56\x09\x80\x86\x0B\x87\xDB\xC6\x10\x9F\x6E\x5C\x40\x19\x9A\xEA\x18\x85\xC5\x81\x9E\xDC\x14\xC7\x5B\x95\x3C\xBF\x51\xBD\x4D\xD1\xA8\x68\x76\xB8\x9C\x74\x4E\xB5\x3A\x31\x1B\x12\xEE\xAB\x11\x63\xCD\x21\x88\xC6\x31\xC4\x9D\xC0\x38\x00\x01\x00\x01\x00\x00\x07\xA6\x00\x04\x3F\x4A\x6D\x02\xC0\x38\x00\x2E\x00\x01\x00\x00\x07\xA6\x01\x1C\x00\x33\x07\x02\x00\x00\x54\x60\x56\x47\xF6\x10\x56\x3E\xAD\x80\xF5\x1C\x04\x63\x70\x73\x63\x03\x67\x6F\x76\x00\x1C\x19\x3C\x02\x10\x51\xB5\x07\x96\xCF\x7A\x42\x44\x53\x22\x63\x2F\x0D\xB3\x01\x07\x70\xC2\x6C\xB1\x3C\xF4\x46\xFE\x51\x7A\xDE\x9F\xC6\x86\xB0\xAE\xFB\x30\xFF\xC8\x74\xEB\x84\xD1\x1A\x6D\x83\x9E\x57\x89\x28\xF2\x91\xF6\x58\xA7\x1B\x5D\x05\x34\xB4\xE4\xD1\x17\x3F\xBB\x25\x04\x7B\x28\xC0\xBD\x2F\x27\xCB\x78\x6E\x7D\xA6\x23\xE3\xEA\x04\x7D\x28\x46\x9B\x43\x35\xAF\xC3\x63\x1D\x83\x24\x65\x6A\xF4\x04\xC1\x16\xBA\x21\xD6\xA6\x72\x19\xBF\x86\x85\x8D\xF9\xFA\xF1\xA7\x24\xB8\x3A\xB7\xE6\x50\x0B\x6A\xAE\x5E\x42\x5C\xB0\x10\xA0\x6E\x8F\xA5\x3D\x93\x66\x8F\x68\x74\x06\x10\x4C\x2B\xA6\xC7\xB4\x9B\x9B\xB3\x2C\x7C\xA7\x3D\x0D\x57\x3A\x45\xC5\xD1\x3C\x81\xC9\x57\x03\x03\xE8\xE2\x96\x71\x50\xEE\xE9\x26\xDF\x37\x2C\x9D\x5E\xD4\xFF\xD4\x89\x33\x65\x87\x1C\x15\x9C\x0D\x11\xF3\x4A\x7D\xC8\x2B\x37\x67\x32\x30\x17\x07\xAB\xA8\xFD\x82\x35\x00\x6D\x9A\x54\x31\x90\x99\x11\xDB\x95\x41\x3C\x7E\x40\x4B\xE6\xBD\x7F\x77\x6D\x26\x34\x77\x5E\xD0\x76\x63\x1B\x72\xC8\x38\xAB\x1F\x29\xC6\x52\x5F\x31\x6F\x89\x1D\x2A\x83\x1E\x9D\x99\xC3\x32\xE9\xC1\x70\x00\x2E\x00\x01\x00\x00\x07\xA6\x01\x1C\x00\x06\x07\x02\x00\x00\x54\x60\x56\x47\xF6\x10\x56\x3E\xAD\x80\xF5\x1C\x04\x63\x70\x73\x63\x03\x67\x6F\x76\x00\x55\x67\x7C\x04\x87\x6A\x2B\xBD\xE8\x4F\xF0\x26\x0E\x5A\xB7\x7A\x62\x64\x11\x37\x5A\x8F\x74\xC8\x01\x29\xEC\xE2\xE6\x6B\xBC\x4B\xCA\xC2\x90\xD2\x0E\xC4\x8E\xFC\xB7\xD8\xED\xCF\xBF\x5B\xD1\x85\x96\x1C\xC3\x27\x7E\x36\x85\x22\xB5\x38\xE3\xB9\xF4\xAF\xF0\x58\xF2\x9F\xF9\x78\x2D\xF1\xE6\xC3\x73\xDE\xC3\xBE\xFD\x98\x79\x68\x3D\x6E\x16\x70\xDE\xD0\x22\x94\x1B\x5F\x20\x7B\xFA\x46\x18\x6C\x18\x41\xE8\x01\xE5\x1E\x5F\x46\xA3\x2F\x08\xDB\xCD\x69\x53\x76\xDC\x94\x9F\x28\xFD\x1B\xC0\x39\xD0\xAF\x17\x4F\x1C\x19\xD2\x32\x4D\x0A\xA2\x44\x8D\xCD\xB5\xBC\x1A\x70\xED\xDB\x73\x2D\x75\xCA\xB7\x80\xDD\x4B\x1A\x0C\x3A\x90\x9A\xD0\x37\xAC\x63\x55\xA9\xDE\x18\x45\xE7\x0D\xAE\x9C\x43\xA5\xC5\x0C\xFE\x9A\xE4\xB8\xE9\xC8\x55\x93\x82\x37\xE0\x38\x17\xB7\x70\xCA\xED\x69\x3E\x2E\xEF\x97\x66\x19\x4D\x33\x68\x6C\xD9\x9F\x3F\x5B\x1D\x7C\x8C\x03\x23\xBE\x61\xDF\xC8\xD6\xAE\x2B\xD3\x5C\x0F\xE9\x25\xD2\xA8\x0C\x3C\xC0\xCF\xDA\x74\x26\x68\x76\x15\x85\x5B\xDD\xD7\xC3\xDB\x9F\x56\x66\x55\x8B\x0C\xC5\xA0\x5A\x66\x13\x76\xB7\xC8\x54\xFE\x2F\x2C\x39\xC2\x98\x00\x2E\x00\x01\x00\x00\x07\xA6\x01\x1C\x00\x01\x07\x02\x00\x00\x54\x60\x56\x47\xF6\x10\x56\x3E\xAD\x80\xF5\x1C\x04\x63\x70\x73\x63\x03\x67\x6F\x76\x00\x66\x90\x77\x01\x39\xF0\x16\x16\x9A\x23\xA5\x90\xD9\x22\x0D\x5F\x57\x6B\x2A\xBA\xE3\xA9\x8B\xF4\xED\x7B\xBE\x11\x17\x52\xB7\x86\x15\x5D\xE7\xEA\xA4\xC1\x00\xCD\x28\xCF\xDC\xDA\x48\x5E\xD8\x58\x74\x4B\xA2\xD6\x82\xCD\x6A\x39\xB4\x1C\x18\x83\x7E\x75\x37\x5D\x9C\xB6\xE2\x9C\x10\x23\x03\xDE\xD8\x93\xCA\xA3\xEF\x21\x9A\x0E\xB2\x8D\x4B\x0D\x53\x88\xD6\xAB\x29\xD7\xCD\x37\x07\xF2\x9B\x02\xD5\xDA\x28\xB8\xE8\xB3\x87\xFB\x52\xEA\xBE\xB9\xD2\x99\x97\x88\xE4\x7D\xFA\x4C\xF2\x5A\xF4\xE0\x5E\xC5\x88\x96\xAD\xD3\x35\x19\xA0\xAC\xA5\x8F\x3D\xB4\x5D\x73\x3A\x51\x18\x27\x34\x5D\xE9\xC9\xED\xDD\x81\x63\x41\x28\xEB\x0C\x71\x63\xD5\xA1\x72\x56\x26\x77\x1C\x0E\x4D\xBF\x56\x1C\xE5\x77\x8B\xB6\xC3\x9C\xAC\x6D\x33\x04\xC4\x86\x6B\x31\xF8\x09\xA8\x4A\xC2\x39\x9B\xBD\xD0\x66\xA3\xAA\x47\x58\x1B\x89\x96\xC1\x2F\x08\x30\xE5\xF6\xBB\x69\xEE\x84\x4F\x2A\xB8\x01\x3E\x59\xFA\xA9\xB1\x4F\x3C\x5C\x90\xE5\x1F\x71\x02\x89\x1C\x8F\x04\x7C\x99\x6D\x5D\xFA\x12\x2E\xEE\x8B\xD7\xC7\x4B\x08\xDA\xCB\x42\x2A\x5B\x2B\x68\xF0\xDF\xD2\x2F\xA2\x57\xE7\x7C\xC3\xC0\x00\x33\x00\x01\x00\x00\x07\xA6\x00\x09\x01\x00\x00\x0C\x04\xAA\xBB\xCC\xDD\xC3\xC0\x00\x0F\x00\x01\x00\x00\x07\xA6\x00\x0B\x00\x05\x06\x68\x6F\x72\x6D\x65\x6C\xC3\xC0\xC3\xC0\x00\x0F\x00\x01\x00\x00\x07\xA6\x00\x0A\x00\x05\x05\x73\x74\x61\x67\x67\xC3\xC0\xC3\xC0\x00\x2E\x00\x01\x00\x00\x07\xA6\x01\x1C\x00\x30\x07\x02\x00\x00\x54\x60\x56\x47\xF6\x10\x56\x3E\xAD\x80\x24\xD6\x04\x63\x70\x73\x63\x03\x67\x6F\x76\x00\x2C\xF3\xCD\x55\x22\x7F\x82\x0E\x03\x62\x4F\x98\x7E\xD9\xC9\x17\x71\xD6\x85\x7F\x4F\xDA\x7F\xB1\x24\x73\xAD\x4B\xF3\x1D\x09\x81\x86\x0E\x25\xB9\x19\x6A\xD2\xFF\xF3\x88\x56\x70\x1E\xB8\x73\x5B\xAF\xFC\x17\x05\x4C\xBC\xC2\xD6\xAA\xFB\x35\x2A\xA3\x6B\xA7\x29\x21\xC4\x1F\xAC\xB6\xC7\x59\x34\x6C\xD3\x4C\x65\x4F\xA7\xF3\x39\xA0\x62\x69\xFD\x8A\xDC\x31\x51\xCB\xE1\xE8\x98\x29\x74\x5D\x5F\xA0\x4F\x48\xF7\xD7\xF2\x78\x87\xDA\x86\xD7\x37\x9B\xA3\xA0\xD1\xCB\x07\x41\x43\x65\x3E\x42\xF2\x02\x62\xA9\x61\xA0\xE5\x00\x00\x25\x5B\x3F\x56\x38\x06\x00\x00\x31\x5B\x3F\x56" 11 | _,err := conn.WriteToUDP([]byte(response), addr) 12 | // fmt.Printf("Success") 13 | if err != nil { 14 | fmt.Printf("Couldn't send response %v", err) 15 | } 16 | } 17 | 18 | 19 | func main() { 20 | p := make([]byte, 2048) 21 | addr := net.UDPAddr{ 22 | Port: 27960, 23 | IP: net.ParseIP("0.0.0.0"), 24 | } 25 | ser, err := net.ListenUDP("udp", &addr) 26 | if err != nil { 27 | fmt.Printf("Some error %v\n", err) 28 | return 29 | } 30 | for { 31 | _,remoteaddr,err := ser.ReadFromUDP(p) 32 | // fmt.Printf("Read a message from %v %s \n", remoteaddr, p) 33 | h := "\xff\xff\xff\xff\x67\x65\x74\x73\x74\x61\x74\x75\x73\x0a" 34 | m := []byte(h) 35 | pp := []byte(p)[0:14] 36 | if reflect.DeepEqual(pp, m) { 37 | go sendResponse(ser, remoteaddr) 38 | } 39 | // fmt.Println(pp,m) 40 | if err != nil { 41 | fmt.Printf("Some error %v", err) 42 | continue 43 | } 44 | continue 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /hp-mdns/hp-mdns.go: -------------------------------------------------------------------------------- 1 | package main 2 | import ( 3 | "fmt" 4 | "net" 5 | "reflect" 6 | ) 7 | 8 | 9 | func sendResponse(conn *net.UDPConn, addr *net.UDPAddr) { 10 | response := "\xA1\x3C\x83\x80\x00\x01\x00\x15\x00\x00\x00\x01\x04\x63\x70\x73\x63\x03\x67\x6F\x76\x00\x00\xFF\x00\x01\xC0\x0C\x00\x02\x00\x01\x00\x00\x0C\x88\x00\x12\x06\x61\x75\x74\x68\x30\x30\x02\x6E\x73\x02\x75\x75\x03\x6E\x65\x74\x00\xC0\x0C\x00\x02\x00\x01\x00\x00\x0C\x88\x00\x09\x06\x61\x75\x74\x68\x36\x31\xC0\x2D\xC0\x0C\x00\x0F\x00\x01\x00\x00\x0C\x88\x00\x0B\x00\x05\x06\x68\x6F\x72\x6D\x65\x6C\xC0\x0C\xC0\x0C\x00\x0F\x00\x01\x00\x00\x0C\x88\x00\x0A\x00\x05\x05\x73\x74\x61\x67\x67\xC0\x0C\xC0\x0C\x00\x10\x00\x01\x00\x00\x0C\x88\x00\x51\x50\x76\x3D\x73\x70\x66\x31\x20\x69\x70\x34\x3A\x36\x33\x2E\x37\x34\x2E\x31\x30\x39\x2E\x36\x20\x69\x70\x34\x3A\x36\x33\x2E\x37\x34\x2E\x31\x30\x39\x2E\x31\x30\x20\x69\x70\x34\x3A\x36\x33\x2E\x37\x34\x2E\x31\x30\x39\x2E\x32\x30\x20\x6D\x78\x20\x61\x3A\x6C\x69\x73\x74\x2E\x63\x70\x73\x63\x2E\x67\x6F\x76\x20\x2D\x61\x6C\x6C\xC0\x0C\x00\x01\x00\x01\x00\x00\x0C\x88\x00\x04\x3F\x4A\x6D\x02\xC0\x0C\x00\x1C\x00\x01\x00\x00\x0C\x88\x00\x10\x26\x00\x08\x03\x02\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xC0\x0C\x00\x30\x00\x01\x00\x00\x0C\x88\x01\x08\x01\x01\x03\x07\x03\x01\x00\x01\x75\x6D\xF8\xBA\xBA\x07\x40\xD5\xC0\x00\x0C\x2E\x46\xFD\x92\x59\xAC\xFB\xA8\xB6\x96\x4D\xE8\xAD\x54\x01\x19\x3C\x34\x0D\x7B\x11\xC3\x56\xF5\x3F\x55\x7D\x01\xEB\x85\xFD\x17\xCA\x5A\xB7\x5D\xDE\x01\x65\x3D\x72\x44\x1A\x0B\x60\x84\xCE\xCA\xE9\x82\xB8\x5D\x71\x53\xD7\x75\x19\x49\x6C\x63\x2E\x50\x6D\xA2\x45\x0F\x42\x41\x73\xCF\xAE\x8A\x98\x21\xB4\xE8\x38\xF9\xE5\xF6\x0B\xD8\x77\x7A\x6B\x00\xE9\xDD\x8D\x48\xBC\x43\x40\xCB\x87\x1E\x73\xFF\x62\x6D\x6F\x0C\x43\x46\x2E\x8F\x34\xF0\xCE\xFA\x6B\xCE\xC7\x5B\x23\x35\x49\xF1\x3A\x4B\xFE\x4C\x88\x59\xC4\x83\x94\xB6\xFD\x3A\xCF\xB7\x58\x17\x0F\x1D\xA2\x9A\x16\x2B\xE1\x0C\x77\xEB\x6D\xF6\x22\x2F\x1B\x82\x19\x48\xAC\xDE\x4A\xF0\x13\x92\xE1\x8D\xA6\x31\x49\xA4\x29\x9D\xA9\x6A\x62\x9B\x0D\x40\x2E\xD5\xD8\x4D\x6C\x78\x74\xA7\x8C\xB8\x3C\x70\xEE\x49\x74\xE0\xF8\xAB\x73\x2D\x9C\xBD\x9D\x60\xFD\x8E\xA0\x4A\x19\xF8\xF8\xFB\x17\x5A\x5F\x18\x1D\x0E\xF4\x93\xD6\x96\x89\xEB\x89\x24\xBB\xEB\x1C\x4E\xB7\x0A\xD8\xD5\x00\xB2\xB1\x9B\xBD\x0C\x91\x10\x5A\x05\x61\x12\x08\x0D\x74\xEC\x07\x64\x89\xC0\x0C\x00\x30\x00\x01\x00\x00\x0C\x88\x01\x08\x01\x01\x03\x07\x03\x01\x00\x01\x92\x58\xE5\xD2\x00\x9B\xC4\x2C\x33\x6B\x01\x06\xC3\xA8\x62\x47\x8C\x86\x4D\x6C\x50\x70\x6A\x30\xE0\x25\xC5\x0F\x15\x06\x1A\x15\x36\x80\xCD\xD2\xF5\x73\x3A\x92\xC0\x19\x54\xC4\x4E\x1C\xEF\x3A\x59\x4B\x5F\x65\xB1\x0A\x99\x14\xF0\x02\xA2\xA0\xEE\x25\xD7\xCF\x11\x8C\x17\xF9\xC2\x3B\x3F\x02\x3D\xA2\xD6\xE2\x3C\x40\x8C\xA1\x68\xCC\x59\x4B\xF8\x9F\x5A\x04\x78\x6C\x10\x38\x77\x83\x60\x18\x3A\x47\x64\x49\x6B\xD0\x29\xF6\x3A\x50\xC9\xC2\x11\x84\x34\xEA\xFD\x93\x18\x60\x0D\x74\xFD\xED\x45\x67\x23\x61\x7B\x26\x9B\x50\x66\x07\x80\x22\x51\xA8\xC1\x53\xCC\x52\x94\xB3\xE2\xFE\xB5\xD2\xE7\xB2\x3A\x06\x16\x35\x83\x74\xDF\xE2\x22\xB5\x83\x96\x1C\xC0\xC1\x9B\x8B\x77\xA1\x88\x6B\x08\xA9\xEA\x3E\xE6\xAE\x1B\x5A\x2E\x95\x64\xBD\xCB\x97\x9A\x60\xD4\x7C\xDA\x3F\xD6\x9C\x2C\xC0\x2B\xF8\x1B\xE5\x74\xDC\x1E\x2D\x36\x24\x1F\x7C\x3E\x20\x17\x50\xEE\xFE\x08\xD8\xE2\xF5\x94\x6D\xFF\x21\x43\xAA\x9A\x20\xA0\xA8\x77\xA2\xAB\xC4\x0B\xE9\x4F\x34\x03\xFD\x09\x9F\xC3\xB9\x4A\x7E\x44\x32\xF8\xD6\x69\xB9\xBC\xAB\xE9\x17\xD8\x1E\x22\xAE\x57\x18\x51\xC0\x0C\x00\x30\x00\x01\x00\x00\x0C\x88\x01\x08\x01\x00\x03\x07\x03\x01\x00\x01\x76\xFA\xE3\xEA\x5F\x03\x74\x35\x93\x79\xE9\x1C\xAE\x90\xE0\x34\x4F\x72\x8F\x5D\x3E\x92\xD6\x72\x56\xA6\x1E\x45\xB9\x81\x78\x28\x91\x93\x43\x86\xB3\x53\x1C\xBC\x01\x07\x43\xD8\xEC\x29\x36\xE6\x22\xFF\xCA\xAB\x29\x82\x8C\x5F\xCD\xE6\x02\xFE\x9C\x02\x67\xEB\x1B\x49\x84\x0D\x97\x50\x01\x4B\x94\x18\x54\x77\x23\x3F\x77\x03\x32\xB0\x71\x56\x33\x16\xBF\xFA\x89\x16\x7B\x2A\x36\x3D\x33\x6C\xFE\xAD\xA9\x37\x13\xB6\xCA\x28\x28\x14\xD5\x63\x22\x8A\xAC\xE1\x59\xD5\x26\x60\x6B\xB7\x08\x1E\x4E\x67\x29\xDA\x93\x15\x9D\xE4\xD4\x64\x9D\xCA\x5F\x9D\x26\xDB\x2D\xE0\x86\x54\x3D\xC2\x3D\x84\xFE\x32\x49\xB7\x89\x2C\x1A\x0A\x12\xFF\xE5\xB4\xD8\x7D\xF2\x0C\x8D\xEE\x45\x7D\x68\xF1\x97\x67\x8F\xD7\xD3\x01\xF2\x7B\x0E\xF7\xA4\x34\x15\xCC\xE5\x97\x4D\x20\xC4\x47\x2C\x12\xC1\xCD\x37\x8C\xB8\x6C\xEC\xA1\x85\x17\xFB\x0F\xF2\x61\xEC\x29\x77\xF8\x0F\x68\x5A\xCB\x18\xFC\x9C\x6C\xA9\x64\x7D\x73\xD9\xB6\xF7\x2E\x5E\x20\xD7\xA8\x6F\xE8\x1A\x22\x90\x19\xF2\x43\xCC\x64\x3A\x44\xDE\xD2\xA3\xF4\x50\xD2\xDA\x93\xE7\xC0\xE2\x45\xB6\x41\xF4\x45\x01\x55\xC0\x0C\x00\x30\x00\x01\x00\x00\x0C\x88\x01\x08\x01\x00\x03\x07\x03\x01\x00\x01\x9E\xBF\x4F\x35\xAD\x4B\x5B\xC6\x75\xEE\x63\x9A\xF6\xDC\x1B\x61\x15\xE3\x52\x3A\xC5\xCA\x98\xCC\xA7\xC9\xDB\x4C\x31\xEE\x24\x1A\x0A\xEE\x71\x39\xF4\xDC\x10\xEA\x4E\x57\x06\x16\x79\xEB\xAF\x60\x8B\x83\xBE\xC9\x6A\x1F\xFC\x0E\xD5\x03\x0E\xD4\xB1\x46\xAB\xCC\x98\x20\x52\x4D\x35\xF2\x89\x8F\xA9\xAF\x6D\xA8\x35\x18\xA6\x05\xD5\x8C\xE6\xAB\xF2\x05\x6A\x47\x86\xD9\x52\xCC\xDB\x54\x68\x37\xCD\x39\x83\xB8\x49\x30\x23\x96\x45\x84\x18\x14\xB2\x7D\xF7\x0B\xDA\x7E\x06\xBF\xA6\x3F\xE4\x19\x6C\xF2\xDD\xD5\xD3\xE6\x99\x8B\xD3\x3C\xDE\x86\xC7\x3B\xC8\xA1\xF9\xA9\x61\x11\x39\x52\xDB\x27\x73\x69\xD8\x6A\xEA\xD4\x6B\x83\x02\x24\x3C\xFE\x23\x6D\x23\x93\x91\x65\x1B\x1B\x96\xAE\x36\xC4\xF9\xA9\x63\x35\xB5\x77\xCD\x84\x2F\xDD\x01\x70\xA8\x97\xF4\x02\x8A\x25\x92\x77\xF0\x5C\xC0\xD0\xEA\x60\x37\xB4\xDD\xA4\x35\xD2\x2E\xE8\x84\xE0\xD9\xCA\x62\x8F\xCF\xAF\x63\xBD\x5B\x8F\xB2\x89\x92\x3F\xA0\x67\x51\xC7\xB3\x38\x93\x71\x2C\xCC\x39\xEC\xF0\x7D\xE2\x8B\x62\x3C\x1B\x04\xCC\x46\x4F\x16\x63\x3A\x5B\x4F\x63\x64\x9A\x99\x7E\x8A\x59\x9E\x33\x8B\xC0\x0C\x00\x33\x00\x01\x00\x00\x0C\x88\x00\x09\x01\x00\x00\x0C\x04\xAA\xBB\xCC\xDD\xC0\x0C\x00\x2E\x00\x01\x00\x00\x0C\x88\x01\x1C\x00\x02\x07\x02\x00\x00\x54\x60\x56\x3D\x6A\x14\x56\x34\x21\x84\xD1\x15\x04\x63\x70\x73\x63\x03\x67\x6F\x76\x00\x41\x1F\x32\x79\x99\xFF\x53\xD1\x40\x4A\x87\x6F\x34\x1F\xDD\x88\x03\xD3\x4A\x55\x13\xC5\xB6\x34\x88\xA7\x07\x88\x74\xBB\xAB\x9C\xF0\xC2\x00\x00\x00\x00\x00\x00" 11 | _,err := conn.WriteToUDP([]byte(response), addr) 12 | // fmt.Printf("Success") 13 | if err != nil { 14 | fmt.Printf("Couldn't send response %v", err) 15 | } 16 | } 17 | 18 | 19 | func main() { 20 | p := make([]byte, 2048) 21 | addr := net.UDPAddr{ 22 | Port: 5353, 23 | IP: net.ParseIP("0.0.0.0"), 24 | } 25 | ser, err := net.ListenUDP("udp", &addr) 26 | if err != nil { 27 | fmt.Printf("Some error %v\n", err) 28 | return 29 | } 30 | for { 31 | _,remoteaddr,err := ser.ReadFromUDP(p) 32 | // fmt.Printf("Read a message from %v %s \n", remoteaddr, p) 33 | h := "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x09\x5F\x73\x65\x72\x76\x69\x63\x65\x73\x07\x5F\x64\x6E\x73\x2D\x73\x64\x04\x5F\x75\x64\x70\x05\x6C\x6F\x63\x61\x6C\x00\x00\x0C\x00\x01" 34 | m := []byte(h) 35 | pp := []byte(p)[0:46] 36 | if reflect.DeepEqual(pp, m) { 37 | go sendResponse(ser, remoteaddr) 38 | } 39 | // fmt.Println(pp,m) 40 | if err != nil { 41 | fmt.Printf("Some error %v", err) 42 | continue 43 | } 44 | continue 45 | } 46 | } 47 | --------------------------------------------------------------------------------