Skip to content

Vecnik88/sip_task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Задание:

Нужно реализовать функцию parse_sip - разбор SIP пакета и вывод типа сообщения: INVITE, ACK, BYE, CANCEL, REGISTER или OPTIONS. (язык C, Linux)

Прототип функции: parse_sip(uint8_t *data); uint8_t *data - указатель на начало данных пакета, который нужно разобрать. Даны структуры eth_hdr, ip_hdr, udp_hdr, которыми можно пользоваться:

struct eth_hdr { uint8_t src[ETHER_ADDR_LEN]; uint8_t dst[ETHER_ADDR_LEN]; uint16_t ether_type; }

struct ip_hdr { uint8_t version_ihl; uint8_t type_of_service; uint16_t total_length; uint16_t packet_id; uint16_t fragment_offset; uint8_t time_to_live; uint8_t next_proto_id; uint16_t header_checksum; uint32_t src; uint32_t dst; }

struct udp_hdr { uint16_t src; uint16_t dst; uint16_t total_length; uint16_t checksum; }

Все остальные структуры, если они понадобятся, необходимо определить самостоятельно. Никакие вспомогательные функции вызывать не требуется. Требуется определить, является ли пакет SIP пакетом (UDP src и dst порты - 5060). Если является, то вывести сообщение «SIP packet type TYPE», где TYPE - один из перечисленных выше типов (тип нужно определить, разобрав SIP заголовок).

В приложении pcap.

Build and run(run only root):

git clone https://github.com/Vecnik88/sip_task.git
cd sip_task
make
sudo ./parse_sip -h

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published