亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? get_packet_code.c

?? 《網絡安全開發包詳解》隨書光盤源碼 本書以計算機網絡安全開發包技術為核心,詳細討論了幾個著名的網絡安全開發包
?? C
?? 第 1 頁 / 共 2 頁
字號:
 */
void icmp_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content)
{
    struct icmp_header *icmp_protocol;
    /* ICMP協議變量 */
    icmp_protocol = (struct icmp_header*)(packet_content + 14+20);
    /* 獲得ICMP協議數據內容,跳過以太網協議和IP協議部分 */
    printf("----------  ICMP Protocol  (Transport Layer)  ----------\n");
    printf("ICMP Type:%d\n", icmp_protocol->icmp_type);
    /* 獲得ICMP類型 */
    switch (icmp_protocol->icmp_type)
    /* 根據類型判斷ICMP數據包的種類 */
    {
        case 8:
            /* 類型是8,表示是回顯請求ICMP數據包 */
            printf("ICMP Echo Request Protocol \n");
            printf("ICMP Code:%d\n", icmp_protocol->icmp_code);
            /* 獲得ICMP代碼 */
            printf("Identifier:%d\n", icmp_protocol->icmp_id);
            /* 獲得標識符 */
            printf("Sequence Number:%d\n", icmp_protocol->icmp_sequence);
            /* 獲得序列號 */
            break;
        case 0:
            /* 類型為0,表示是回顯應答ICMP數據包 */
            printf("ICMP Echo Reply Protocol \n");
            printf("ICMP Code:%d\n", icmp_protocol->icmp_code);
            /* 獲得ICMP代碼 */
            printf("Identifier:%d\n", icmp_protocol->icmp_id);
            /* 獲得標識符 */
            printf("Sequence Number:%d\n", icmp_protocol->icmp_sequence);
            /* 獲得序列號 */
            break;
        default:
            break;
            /* 其它類型的ICMP數據包在此沒有分析,讀者可以在此添加其它類型的ICMP數據包的分析 */
    }
    printf("ICMP Checksum:%d\n", ntohs(icmp_protocol->icmp_checksum));
    /* 獲得校驗和 */
}
/*
=======================================================================================================================
下面是實現ARP協議分析的函數定義
=======================================================================================================================
 */
void arp_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content)
{
    struct arp_header *arp_protocol;
    /* ARP協議變量 */
    u_short protocol_type;
    /* 協議類型 */
    u_short hardware_type;
    /* 硬件類型 */
    u_short operation_code;
    /* 操作碼 */
    u_char *mac_string;
    /* 以太網地址 */
    struct in_addr source_ip_address;
    /* 源IP地址 */
    struct in_addr destination_ip_address;
    /* 目的IP地址 */
    u_char hardware_length;
    /* 硬件地址長度 */
    u_char protocol_length;
    /* 協議地址長度 */
    printf("--------   ARP Protocol (Network Layer)    --------\n");
    arp_protocol = (struct arp_header*)(packet_content + 14);
    /* 獲得ARP協議數據內容,跳過以太網協議部分 */
    hardware_type = ntohs(arp_protocol->arp_hardware_type);
    /* 獲得硬件類型 */
    protocol_type = ntohs(arp_protocol->arp_protocol_type);
    /* 獲得協議類型 */
    operation_code = ntohs(arp_protocol->arp_operation_code);
    /* 獲得操作碼 */
    hardware_length = arp_protocol->arp_hardware_length;
    /* 獲得硬件地址長度 */
    protocol_length = arp_protocol->arp_protocol_length;
    /* 獲得協議地址長度 */
    printf("ARP Hardware Type:%d\n", hardware_type);
    printf("ARP Protocol Type:%d\n", protocol_type);
    printf("ARP Hardware Length:%d\n", hardware_length);
    printf("ARP Protocol Length:%d\n", protocol_length);
    printf("ARP Operation:%d\n", operation_code);
    switch (operation_code) /* 根據操作碼判斷ARP協議類型 */
    {
        case 1:
            printf("ARP Request Protocol\n");
            break;
            /* 操作碼為1,表示是ARP請求協議 */
        case 2:
            printf("ARP Reply Protocol\n");
            break;
            /* 操作碼為2,表示是ARP應答協議 */
        case 3:
            printf("RARP Request Protocol\n");
            break;
            /* 操作碼為3,表示是RARP請求協議 */
        case 4:
            printf("RARP Reply Protocol\n");
            break;
            /* 操作碼為4,表示是RARP應答協議 */
        default:
            break;
    }
    printf("Ethernet Source Address is : \n");
    mac_string = arp_protocol->arp_source_ethernet_address;
    printf("%02x:%02x:%02x:%02x:%02x:%02x\n", *mac_string, *(mac_string + 1), *(mac_string + 2), *(mac_string + 3), *(mac_string + 4), *(mac_string + 5));
    /* 獲得源以太網地址 */
    memcpy((void*) &source_ip_address, (void*) &arp_protocol->arp_source_ip_address, sizeof(struct in_addr));
    printf("Source IP Address:%s\n", inet_ntoa(source_ip_address));
    /* 獲得源IP地址 */
    printf("Ethernet Destination Address is : \n");
    mac_string = arp_protocol->arp_destination_ethernet_address;
    printf("%02x:%02x:%02x:%02x:%02x:%02x\n", *mac_string, *(mac_string + 1), *(mac_string + 2), *(mac_string + 3), *(mac_string + 4), *(mac_string + 5));
    /* 獲得目的以太網地址 */
    memcpy((void*) &destination_ip_address, (void*) &arp_protocol->arp_destination_ip_address, sizeof(struct in_addr));
    printf("Destination IP Address:%s\n", inet_ntoa(destination_ip_address));
    /* 獲得目的IP地址 */
}
/*
=======================================================================================================================
下面是實現分析IP協議的函數定義
=======================================================================================================================
 */
void ip_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content)
{
    struct ip_header *ip_protocol;
    /* IP協議變量 */
    u_int header_length;
    /* 首部長度 */
    u_int offset;
    /* 偏移 */
    u_char tos;
    /* 服務質量 */
    u_int16_t checksum;
    /* 校驗和 */
    ip_protocol = (struct ip_header*)(packet_content + 14);
    /* 獲得IP協議數據內容,跳過以太網協議部分 */
    checksum = ntohs(ip_protocol->ip_checksum);
    /* 獲得校驗和 */
    header_length = ip_protocol->ip_header_length *4;
    /* 獲得IP首部長度 */
    tos = ip_protocol->ip_tos;
    /* 獲得服務質量 */
    offset = ntohs(ip_protocol->ip_off);
    /* 活動偏移 */
    printf("----------- IP Protocol  (Network Layer)  -----------\n");
    printf("IP Version:%d\n", ip_protocol->ip_version);
    /* 獲得版本號 */
    printf("Header length:%d\n", header_length);
    printf("TOS:%d\n", tos);
    printf("Total length:%d\n", ntohs(ip_protocol->ip_length));
    /* 獲得總長度 */
    printf("Identification:%d\n", ntohs(ip_protocol->ip_id));
    /* 獲得標識 */
    printf("Offset:%d\n", (offset &0x1fff) *8);
    printf("TTL:%d\n", ip_protocol->ip_ttl);
    /* 獲得生存時間 */
    printf("Protocol:%d\n", ip_protocol->ip_protocol);
    /* 獲得協議類型 */
    switch (ip_protocol->ip_protocol)
    /* 根據協議類型判斷上層協議類型 */
    {
        case 6:
            printf("The Transport Layer Protocol is TCP\n");
            break;
            /* 上層協議為TCP協議 */
        case 17:
            printf("The Transport Layer Protocol is UDP\n");
            break;
            /* 上層協議為UDP協議 */
        case 1:
            printf("The Transport Layer Protocol is ICMP\n");
            break;
            /* 上層協議為ICMP協議 */
        default:
            break;
    }
    printf("Header checksum:%d\n", checksum);
    /* 校驗和 */
    printf("Source address:%s\n", inet_ntoa(ip_protocol->ip_souce_address));
    /* 獲得源IP地址 */
    printf("Destination address:%s\n", inet_ntoa(ip_protocol->ip_destination_address));
    /* 獲得目的IP地址 */
    switch (ip_protocol->ip_protocol)
    /* 判斷上層協議類型,然后調用相應的函數進行分析 */
    {
        case 6:
             /* 上層協議為TCP協議 */
            tcp_protocol_packet_callback(argument, packet_header, packet_content);
            break;
            /* 調用分析TCP協議的函數,注意參數的傳遞,表示分析的是同一個網絡數據包 */
        case 17:
             /* 上層協議為UDP協議 */
            udp_protocol_packet_callback(argument, packet_header, packet_content);
            break;
            /* 調用分析UDP協議的函數,注意參數的傳遞方式 */
        case 1:
             /* 上層協議為ICMP協議 */
            icmp_protocol_packet_callback(argument, packet_header, packet_content);
            break;
            /* 調用分析ICMP協議的函數,注意參數的傳遞 */
        default:
            break;
            /* 其他類型的協議在此沒有分析,讀者可以在此進一步分析其它傳輸層協議 */
    }
}
/*
=======================================================================================================================
下面是分析以太網協議的函數定義,同時它也是回調函數
=======================================================================================================================
 */
void ethernet_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content)
{
    u_short ethernet_type;
    /* 以太網類型 */
    struct ether_header *ethernet_protocol;
    /* 以太網協議變量 */
    u_char *mac_string;
    /* 以太網地址 */
    static int packet_number = 1;
    printf("**************************************************\n");
    printf("The %d  packet is captured.\n", packet_number);
    printf("--------   Ehternet Protocol (Link Layer)    --------\n");
    ethernet_protocol = (struct ether_header*)packet_content;
    /* 獲得以太網協議數據內容 */
    printf("Ethernet type is :\n");
    ethernet_type = ntohs(ethernet_protocol->ether_type);
    /* 獲得以太網類型 */
    printf("%04x\n", ethernet_type);
    switch (ethernet_type)
    /* 根據以太網類型字段判斷上層協議類型 */
    {
        case 0x0800:
            printf("The network layer is IP protocol\n");
            break;
            /* 上層協議為IP協議 */
        case 0x0806:
            printf("The network layer is ARP protocol\n");
            break;
            /* 上層協議為ARP協議 */
        case 0x8035:
            printf("The network layer is RARP protocol\n");
            break;
            /* 上層協議為RARP協議 */
        default:
            break;
    }
    printf("Mac Source Address is : \n");
    mac_string = ethernet_protocol->ether_shost;
    printf("%02x:%02x:%02x:%02x:%02x:%02x\n", *mac_string, *(mac_string + 1), *(mac_string + 2), *(mac_string + 3), *(mac_string + 4), *(mac_string + 5));
    /* 獲得源以太網地址 */
    printf("Mac Destination Address is : \n");
    mac_string = ethernet_protocol->ether_dhost;
    printf("%02x:%02x:%02x:%02x:%02x:%02x\n", *mac_string, *(mac_string + 1), *(mac_string + 2), *(mac_string + 3), *(mac_string + 4), *(mac_string + 5));
    /* 獲得目的以太網地址 */
    switch (ethernet_type)
    /* 根據以太網類型字段判斷上層協議,然后調用相應函數進行分析 */
    {
        case 0x0806:
             /* 上層是ARP協議 */arp_protocol_packet_callback(argument, packet_header, packet_content);
            break;
            /* 調用分析ARP協議的函數 */
        case 0x0800:
             /* 上層是IP協議 */ip_protocol_packet_callback(argument, packet_header, packet_content);
            break;
            /* 調用分析IP協議的函數 */
        default:
            break; /* 其它的協議在此沒有分析,讀者可以試著進一步分析 */
    }
    printf("**************************************************\n");
    packet_number++;
}
/*
=======================================================================================================================
下面是主函數的定義
=======================================================================================================================
 */
void main()
{
    pcap_t *pcap_handle;
    /* libpap句柄 */
    char error_content[PCAP_ERRBUF_SIZE];
    /* 存儲錯誤內容 */
    char *net_interface;
    /* 網絡接口 */
    struct bpf_program bpf_filter;
    /* BPF過濾規則 */
    char bpf_filter_string[] = "";
    /* 過濾規則字符串,此時為空的,表示捕獲所有的網絡數據包,而不是捕獲特定的網絡數據包 */
    bpf_u_int32 net_mask;
    /* 網絡掩碼 */
    bpf_u_int32 net_ip;
    /* 網絡地址 */
    net_interface = pcap_lookupdev(error_content);
    /* 獲得網絡接口 */
    pcap_lookupnet(net_interface, &net_ip, &net_mask, error_content);
    /* 獲得網絡地址和網絡掩碼 */
    pcap_handle = pcap_open_live(net_interface, BUFSIZ, 1, 0, error_content);
    /* 打開網絡接口 */
    pcap_compile(pcap_handle, &bpf_filter, bpf_filter_string, 0, net_ip);
    /* 編譯過濾規則 */
    pcap_setfilter(pcap_handle, &bpf_filter);
    /* 設置過濾規則 */
    if (pcap_datalink(pcap_handle) != DLT_EN10MB)
        return ;
    pcap_loop(pcap_handle,  - 1, ethernet_protocol_packet_callback, NULL);
    /* 注冊回調函數,循環捕獲網絡數據包,然后調用回調函數對捕獲的網絡數據包進行分析 */
    pcap_close(pcap_handle);
    /* 關閉Libpcap操作 */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产激情一区二区三区四区| 日韩一区二区三区三四区视频在线观看 | 欧美精品三级日韩久久| 日本一区二区三区国色天香| 偷拍与自拍一区| 成人黄色电影在线| 欧美一区二区三区影视| 亚洲精品自拍动漫在线| 国产在线精品一区二区三区不卡| 一本色道久久综合亚洲91| wwww国产精品欧美| 久草这里只有精品视频| 在线中文字幕一区二区| 国产精品理伦片| 国产一区二区三区精品视频 | 成人app网站| 日韩视频免费观看高清完整版| 亚洲欧美区自拍先锋| 成人一级黄色片| 久久五月婷婷丁香社区| 久久se这里有精品| 欧美一区二区三区在线| 日韩av一区二区三区四区| 欧美精品欧美精品系列| 亚洲综合久久久久| 欧美三级电影网站| 洋洋成人永久网站入口| 在线观看一区不卡| 亚洲一区二三区| 欧美日韩国产高清一区二区三区| 亚洲综合成人在线| 欧美在线不卡视频| 夜色激情一区二区| 欧美三级日本三级少妇99| 亚洲最快最全在线视频| 色老汉av一区二区三区| 亚洲午夜久久久久中文字幕久| 欧美亚洲国产一区二区三区va| 亚洲第一激情av| 日韩一区二区中文字幕| 日本欧美一区二区| 久久综合九色综合欧美98 | 精品久久久影院| 国产东北露脸精品视频| 亚洲欧洲精品天堂一级| 色网综合在线观看| 午夜精品123| 欧美成人免费网站| 成人综合婷婷国产精品久久免费| 综合激情成人伊人| 91精品免费观看| 久久www免费人成看片高清| 欧美激情一区二区三区全黄 | 亚洲一二三区在线观看| 欧美一区二区三区婷婷月色| 国精产品一区一区三区mba视频| 国产日本欧洲亚洲| 色菇凉天天综合网| 美女性感视频久久| 国产精品日日摸夜夜摸av| 91黄色激情网站| 日本不卡一区二区三区| 久久精品欧美一区二区三区麻豆| 成人污视频在线观看| 一区二区三区精品视频| 日韩一区二区影院| 97久久精品人人做人人爽50路| 首页欧美精品中文字幕| 日本一区二区三区四区在线视频| 欧美视频在线一区二区三区| 国模套图日韩精品一区二区| 夜夜嗨av一区二区三区| 欧美激情综合五月色丁香小说| 欧美性videosxxxxx| 国产一区二区精品久久91| 一区二区三区中文字幕| 欧美精品一区二区三区高清aⅴ| 色悠悠久久综合| 国产一区二区精品久久91| 午夜精品久久久久久久| 国产精品不卡在线| 久久久久高清精品| 7777精品伊人久久久大香线蕉完整版| 国产成人免费视频一区| 日本午夜一区二区| 亚洲图片欧美色图| 中文字幕一区二区三区在线观看| 日韩欧美激情在线| 欧美男人的天堂一二区| 色婷婷综合激情| 国产精品主播直播| 男人的j进女人的j一区| 亚洲国产综合视频在线观看| 国产精品网友自拍| 久久久综合九色合综国产精品| 777奇米成人网| 欧美性大战久久久久久久| 91网站在线播放| 成人午夜在线免费| 国产麻豆精品theporn| 日韩国产成人精品| 亚洲mv在线观看| 一区二区三区在线观看视频| 国产精品免费人成网站| 国产日本欧美一区二区| 久久精品免费在线观看| 久久免费美女视频| 久久新电视剧免费观看| 精品毛片乱码1区2区3区| 日韩一区二区在线播放| 国产精品久久一卡二卡| 国产午夜久久久久| 欧美激情综合网| 国产精品乱码一区二三区小蝌蚪| 国产欧美日韩中文久久| 国产精品免费人成网站| 亚洲视频免费在线观看| 综合激情网...| 一区二区三区自拍| 亚洲一区二区三区美女| 亚洲线精品一区二区三区| 天堂影院一区二区| 另类综合日韩欧美亚洲| 国产麻豆欧美日韩一区| 国产成人av影院| av网站免费线看精品| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 中文字幕一区二区日韩精品绯色| 国产精品黄色在线观看| 亚洲自拍偷拍图区| 午夜国产精品影院在线观看| 美女视频免费一区| 国产精品一区二区三区四区| 国产.欧美.日韩| 一本色道久久加勒比精品| 欧美日韩中文另类| 26uuu亚洲综合色| 国产精品美女久久久久aⅴ| 亚洲一区二区精品视频| 蜜臀久久99精品久久久久久9| 麻豆精品在线观看| 99在线视频精品| 欧美日韩国产免费一区二区 | 在线成人高清不卡| 久久久久高清精品| 亚洲一区二区精品视频| 激情综合五月天| 91免费精品国自产拍在线不卡| 欧美亚男人的天堂| 久久久久久久久久久久电影| 一区二区理论电影在线观看| 久久国产人妖系列| 在线免费亚洲电影| 亚洲精品一区二区三区精华液 | 狠狠狠色丁香婷婷综合激情| 99久久er热在这里只有精品15| 正在播放亚洲一区| 国产精品丝袜一区| 丝袜美腿亚洲综合| 91一区一区三区| 国产亚洲一区二区三区在线观看 | 欧美一区中文字幕| 亚洲视频免费看| 激情久久久久久久久久久久久久久久 | 日韩一级二级三级| 一区二区在线观看免费| 国产在线播精品第三| 欧美日韩一区视频| 亚洲男人的天堂在线aⅴ视频| 久久99精品久久久久| 色一情一伦一子一伦一区| 国产日韩影视精品| 精品在线观看视频| 欧美日韩黄色影视| 亚洲柠檬福利资源导航| 国产成人一级电影| 欧美xingq一区二区| 丝袜诱惑亚洲看片| 欧美亚洲动漫制服丝袜| 国产精品国产a| 国产精品一区二区视频| 日韩三级中文字幕| 午夜一区二区三区视频| 99re这里只有精品6| 国产精品天美传媒沈樵| 国产在线精品一区二区不卡了 | 亚洲人妖av一区二区| 国产精品夜夜嗨| 久久人人爽人人爽| 国内不卡的二区三区中文字幕| 欧美一区二区三区思思人| 亚洲一区二区3| 欧美专区日韩专区| 亚洲一区二区三区自拍| 色婷婷精品大视频在线蜜桃视频| 国产精品乱码一区二区三区软件 | 1区2区3区欧美| 99re成人在线| 日韩理论片网站| 色婷婷av一区二区三区软件|