0 / 0 / 0
Регистрация: 31.05.2016
Сообщений: 2
|
|
1 | |
анализ DNS31.05.2016, 20:14. Показов 710. Ответов 1
Метки нет Все метки)
(
Как модернизировать программу анализ DNS-зaпpoсы, по DNS-oтвeты? не могу разобраться в каком месте это изменить
#define _BSD_SOURCE #include <stdio.h> #include <stdlib.h> #include <netinet/ip.h> #include <netinet/udp.h> #include <string.h> #include <netinet/if_ether.h> #include <pcap.h> // ethernet заголовок struct sniff_ethernet { u_char ether_dhost[ETHER_ADDR_LEN]; /* Destination host address */ u_char ether_shost[ETHER_ADDR_LEN]; /* Source host address */ u_short ether_type; /* IP? ARP? RARP? etc */ }; // IP-заголовок struct sniff_ip { #if BYTE_ORDER == LITTLE_ENDIAN u_int ip_hl:4, /* header length */ ip_v:4; /* version */ #endif #if BYTE_ORDER == BIG_ENDIAN u_int ip_v:4, /* version */ ip_hl:4; /* header length */ #endif /* not _IP_VHL */ u_char ip_tos; /* type of service */ u_short ip_len; /* total length */ u_short ip_id; /* identification */ u_short ip_off; /* fragment offset field */ #define IP_RF 0x8000 /* reserved fragment flag */ #define IP_DF 0x4000 /* dont fragment flag */ #define IP_MF 0x2000 /* more fragments flag */ #define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ u_char ip_ttl; /* time to live */ u_char ip_p; /* protocol */ u_short ip_sum; /* checksum */ struct in_addr ip_src,ip_dst; /* source and dest address */ }; // UDP заголовок struct sniff_udp { u_short th_sport; /* source port */ u_short th_dport; /* destination port */ }; void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet) { const struct sniff_ethernet *ethernet; // The ethernet header const struct sniff_ip *ip; // The IP header const struct sniff_udp *udp; // The UDP header const char *payload; // Packet payload static int number=0; //Порядковый номер перехваченного пакета (DNS-запроса) int size_ethernet = sizeof(struct sniff_ethernet); int size_ip = sizeof(struct sniff_ip); int size_udp = sizeof(struct sniff_udp); ethernet = (struct sniff_ethernet*)(packet); ip = (struct sniff_ip*)(packet + size_ethernet); udp = (struct sniff_udp*)(packet + size_ethernet + size_ip); payload = (u_char *)(packet + size_ethernet + size_ip + size_udp); number++; printf("%i", number); // порядковый номер printf("\t%s", inet_ntoa(ip->ip_src)); // IP источника printf("\t%d", ntohs(udp->th_sport)); // номер порта источника printf("\t%s", inet_ntoa(ip->ip_dst)); // IP назначения printf("\t%d", ntohs(udp->th_dport)); // номер порта назначения printf("\t%d\n", header->ts); // временная метка }; int main() { pcap_t *handle; // дескриптор сессии char *dev; char errbuf[PCAP_ERRBUF_SIZE]; // строка с описанием ошибки struct pcap_pkthdr header; // заголовок пакета, который заполнит pcap struct bpf_program filter; // скомпилированное выражение для фильтра char filter_app[] = "udp dst port 53"; // выражение для фильтра -- UDP-пакеты, порт назначения = 53 bpf_u_int32 mask; // сетевая маска нашего интерфейса bpf_u_int32 net; // IP-адрес нашего интерфейса dev = pcap_lookupdev(errbuf); // определяем интерфейс, который будет прослушиваться pcap_lookupnet(dev, &net, &mask, errbuf); // получаем сетевой адрес и маску интерфейса printf("Device: %s\n", dev); printf("№\tSource\t\tsPort\tDestinaion\tdPort\tTimeStamp\n") ; handle = pcap_open_live(dev, BUFSIZ, 1, 0, errbuf); // открываем сессию перехвата в promiscuous режиме pcap_compile(handle, &filter, filter_app, 0, net); // компилируем и применяем пакетный фильтр pcap_setfilter(handle, &filter); pcap_loop(handle, 150, got_packet, NULL); // перехватываем пакеты pcap_close(handle); //закрываем сессию return(0); }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
31.05.2016, 20:14 | |
Ответы с готовыми решениями:
1
Нагрузка на DNS сервер. DNS на Windows Server. Мощности оборудования для больших DNS серверов Перенаправление DNS запросов из локальной сети к DNS серверу провайдера DNS стали глючить игры на ноуте DNS Nvidia gt 540m,6 гб оперативки,2.5 ггц Возможно ли репликация с DNS Windows на DNS Ubuntu? |
1122 / 873 / 344
Регистрация: 02.09.2012
Сообщений: 2,672
|
|
31.05.2016, 23:43 | 2 |
Может фильтр заменить udp dst port 53 на udp src port 53
0
|
31.05.2016, 23:43 | |
Помогаю со студенческими работами здесь
2
Сравнение DNS сервера MS Windows DNS и BIND Добавление DNS имени на DNS сервер Как можно продиагностировать DNS запросы, включая обращения к кэшу, и сами запросы от DNS клиента к серверу? Анализ ценных бумаг (построить Гистограмму и провести анализ) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |