dns请求包
来源:互联网 发布:数据切片和切块 编辑:程序博客网 时间:2024/06/05 04:55
#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/stat.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <sys/ioctl.h>#include <sys/time.h>#include <string.h>void getQueryPacket(char *DNSsendBuff);#define ADDRESS "172.16.20.132"#define PORT 53typedef struct{unsigned short id;unsigned short flags;unsigned short questNum;unsigned short answerNum;unsigned short authorNum;unsigned short additionNum;}DNSHDR,*pDNSHDR;typedef struct{unsigned short type;unsigned short class;}QUERYHDR,*pQUERYHDR;void getQueryPacket(char *DNSsendBuff){bzero(DNSsendBuff,sizeof(DNSsendBuff));pDNSHDR pDnsHdr = (pDNSHDR)malloc(sizeof(DNSHDR));pQUERYHDR pQueryHdr = (pQUERYHDR)malloc(sizeof(QUERYHDR));pDnsHdr->id = htons(0xde76);pDnsHdr->flags = htons(0x0100);pDnsHdr->questNum = htons(0x0001);pDnsHdr->answerNum = htons(0x0000);pDnsHdr->authorNum = htons(0x0000);pDnsHdr->additionNum = htons(0x0000);memcpy(DNSsendBuff,pDnsHdr,sizeof(DNSHDR));char *name = (char *)malloc(15 * sizeof(char));char num;char *url;int cur = 0;//3www5baidu3com0num = 0x03;url = "www";memcpy(name + cur,&num,sizeof(num));cur += sizeof(num);memcpy(name + cur,url,strlen(url));cur += strlen(url);num = 0x05;url = "baidu";memcpy(name + cur,&num,sizeof(num));cur += sizeof(num);memcpy(name + cur,url,strlen(url));cur += strlen(url);num = 0x03;url = "com";memcpy(name + cur,&num,sizeof(num));cur += sizeof(num);memcpy(name + cur,url,strlen(url));cur += strlen(url);num = 0x00;memcpy(name + cur,&num,sizeof(num));memcpy(DNSsendBuff + sizeof(DNSHDR),name,15);pQueryHdr->type = htons(0x0001);pQueryHdr->class = htons(0x0001);memcpy(DNSsendBuff + sizeof(DNSHDR) + 15,pQueryHdr,sizeof(QUERYHDR));}int main(int argc,char **argv){char sendBuff[128];char recvBuff[1024];int sockfd;socklen_t serverlen;int fd,res;struct sockaddr_in serveraddr;bzero(&serveraddr,sizeof(struct sockaddr_in));bzero(sendBuff,sizeof(sendBuff));bzero(recvBuff,sizeof(recvBuff));sockfd = socket(AF_INET,SOCK_DGRAM,0);serveraddr.sin_family = AF_INET;serveraddr.sin_port = htons(PORT);inet_aton(ADDRESS,&serveraddr.sin_addr);serverlen = sizeof(serveraddr);getQueryPacket(sendBuff);fd = open("test",O_CREAT | O_RDWR,S_IRUSR | S_IWUSR);write(fd,sendBuff,sizeof(sendBuff));close(fd);res = sendto(sockfd,sendBuff,31,0,(struct sockaddr *)&serveraddr,serverlen);printf("send %d\n",res);res = recvfrom(sockfd,recvBuff,sizeof(recvBuff),0,(struct sockaddr *)&serveraddr,&serverlen);printf("recv %d\n",res);return 0;}
阅读全文
0 0
- dns请求包
- DNS请求分析
- DNS协议解析1--DNS请求协议
- 一个异步dns 请求程序
- Golang实现发送DNS请求
- DNS服务器--转发解析请求
- 简单的DNS请求报文实现
- 无线APP时代HTTP请求DNS优化
- iOS网络请求优化之DNS映射
- 一个DNS请求引起的网络阻塞
- struts2-跨包请求
- 分析网络包中的DNS协议
- 用winpcap实现局域网DNS欺骗之二(DNS包的包结构)
- 【转】用winpcap实现局域网DNS欺骗之二(DNS包的包结构)
- http请求包和响应包介绍
- 【Fiddler】抓手机请求包或其他请求包
- soap客户端请求包异常
- socket发送请求包格式
- Navi.Soft31.WinCE框架.开发手册(含下载地址)
- POJ1742 Coins(多重背包可行性)
- 系统延迟及定时机制
- 【Linux内核】学习资料
- [Oracle 11g r2(11.2.0.4.0)]Oracle Golden Gate Training-workshop3
- dns请求包
- 继承和初始化时,程序运行顺序的自己的理解。
- Android 加载高清巨图,无需剪裁压缩
- 大周总结
- 调用动态链接库*.so
- 编译接口工具类
- Java算法之直接插入排序
- linux性能监控工具-(显示系统整体资源使用情况-top命令)
- 旷视科技完成4.6亿美元C轮融资,打破商汤4.1亿美元单轮融资记录