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

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

?? packet_gen.c

?? 一個使用raw socket 構造數據包的實例
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**********************************************************
* 版權所有 (C)2007, 深圳市中興通訊股份有限公司。
*
* 文件名稱:packet_gen.c
* 文件標識:
* 內容摘要: 模擬ENPU演示程序處理函數
* 其它說明:
* 當前版本:
* 作    者:丁 鵬
* 完成日期:2007/12/11
*
* 修改記錄1:   
*    修改日期: 
*    版 本 號:
*    修 改 人:                    
*    修改內容:
**********************************************************/

/***********************************************************
 *                      頭文件                             *
***********************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <linux/if_ether.h>
#include <linux/if_packet.h>
#include <netinet/ip.h>
#include <sys/ioctl.h>
#include <net/if.h>
#define __FAVOR_BSD
#include <netinet/tcp.h>
#include <netinet/udp.h>
#undef __FAVOR_BSD
#include <netinet/in.h>
#include <errno.h>
#include <string.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>

/***********************************************************
 *                     全局變量                            *
***********************************************************/
unsigned short ip_id;



/***********************************************************
 *                     全局函數                            *
***********************************************************/
void UdpHdrGen(struct udphdr *udpHdr, unsigned short int idport, unsigned short int isport, unsigned short int msglen);
void IpHdrGen(struct ip *ipHdr, unsigned char *sdaddr, unsigned char *ssaddr, unsigned int msglen, unsigned char proto);
void ethHdrGen(struct ethhdr *ethhdr, unsigned char *cdmac, unsigned char *csmac);
unsigned short checksum(unsigned short *buffer, int size);
int getMac(unsigned char *ipaddr, unsigned char *mac);


/**********************************************************************
* 函數名稱:UdpHdrGen
* 功能描述:構造udp頭
* 輸入參數:
  udpHdr     構造的udp頭的存放地址
  idport     源udp端口
  isport     目的udp端口
  msglen     udp負荷長度,不包括udp頭長
* 輸出參數:無
* 返 回 值:無
* 其它說明:無
* 修改日期      版本號  修改人      修改內容
* ---------------------------------------------------------------------
* 2007/12/11             丁鵬              創建
************************************************************************/
void UdpHdrGen(struct udphdr *udpHdr, unsigned short int idport, unsigned short int isport, unsigned short int msglen)
{
    if(udpHdr == NULL)
    {
        printf("UdpHdrGen get udpHdr err\n");
        return ;
    }
    udpHdr->uh_dport = htons(idport);
    udpHdr->uh_sport = htons(isport);
    udpHdr->uh_ulen  = htons(msglen+sizeof(struct udphdr));  /* updhdr + msgdatalen */
    udpHdr->uh_sum   = 0;
}

/**********************************************************************
* 函數名稱:IpHdrGen
* 功能描述:構造IP頭
* 輸入參數:
  ipHdr     構造的ip頭的存放地址
  sdaddr     源IP地址
  ssaddr     目的udp端口
  msglen     發送消息體長度,不包括upd頭,ip頭,eth頭
  proto
* 輸出參數:無
* 返 回 值:無
* 其它說明:無
* 修改日期      版本號  修改人      修改內容
* ---------------------------------------------------------------------
* 2007/12/11             丁鵬              創建
************************************************************************/
void IpHdrGen(struct ip *ipHdr, unsigned char *sdaddr, unsigned char *ssaddr, unsigned int msglen, unsigned char proto)
{
       
    if( ipHdr == NULL)
    {
        printf("IpHdrGen get ipHdr err\n");
        return ;
    }

    ipHdr->ip_hl = 5;  /* ip_hl << 2 ----ip頭長度,這里我們選為標準的20字節 */
    ipHdr->ip_v  = 4;   /* ip版本, ipv4 */
    ipHdr->ip_tos = 0;  /* normal service */ /*這個8bit字段由3bit的優先權子字段(現在已經被忽略),4 bit的TOS子字段以及1 bit的未用字段(現在為 
                                             0)構成。4 bit的TOS子字段包含:最小延時、最大吞吐量、最高可靠性以及最小費用 
                                             構成,這四個1 bit位最多只能有一個為1,本例中都為0,表示是一般服務。 */
    ipHdr->ip_len = htons(msglen + sizeof(struct udphdr)+sizeof(struct ip)); /* 包括ip頭長 */
    ipHdr->ip_id  = htons(ip_id++); /* 包括ip頭長 */
    ipHdr->ip_off = 0; /* 其中第一位是IP協議目前沒有用上的,為0。接著的是兩個標志DF和MF。
                          DF為1表示不要分段,MF為1表示還有進一步的分段(本例為0)。
                          然后的“0 0000”是分段片移(Fragment Offset)。 */
    ipHdr->ip_ttl = IPDEFTTL; /* time to live, 64 by default,linux */
    ipHdr->ip_p   = proto;
    ipHdr->ip_sum = 0; /*   check crc */
    
    ipHdr->ip_src.s_addr = inet_addr(ssaddr);
    ipHdr->ip_dst.s_addr = inet_addr(sdaddr);
    ipHdr->ip_sum = htons(checksum((unsigned short *)ipHdr,sizeof(struct ip)));
 
}
/**********************************************************************
* 函數名稱:ethHdrGen
* 功能描述:構造eth頭
* 輸入參數:
  ipHdr     構造的eth頭的存放地址
  sdmac     源MAC地址
  ssmac     目的方MAC地址
*  輸出參數:無
* 返 回 值:無
* 其它說明:無
* 修改日期      版本號  修改人      修改內容
* ---------------------------------------------------------------------
* 2007/12/11             丁鵬              創建
************************************************************************/
void ethHdrGen(struct ethhdr *ethhdr, unsigned char *sdmac, unsigned char *ssmac)
{
    memcpy(ethhdr->h_dest,sdmac, ETH_ALEN);
    memcpy(ethhdr->h_source,ssmac, ETH_ALEN);
    ethhdr->h_proto = htons(ETH_P_IP);
}    
/**********************************************************************
* 函數名稱:checksum
* 功能描述:校驗和計算
* 輸入參數:
  buffer    開始地址處,從這開始計算內存內容的校驗和
  size      計算多少個字節的校驗和
*  輸出參數:
* 返 回 值:校驗和數值
* 其它說明:無
* 修改日期      版本號  修改人      修改內容
* ---------------------------------------------------------------------
* 2007/12/11             丁鵬              創建
************************************************************************/
unsigned short checksum(unsigned short *buffer, int size) 
{ 
    register  unsigned long cksum=0; 
    while(size >1) 
    { 
        cksum+=*buffer++; 
        size -=sizeof(unsigned short); 
    } 
    if(size) 
        cksum += *(unsigned short*)buffer; 
    
    cksum = (cksum >> 16) + (cksum & 0xffff); 
    cksum += (cksum >>16); 
    return (unsigned short)(~cksum); 
}

/**********************************************************************
* 函數名稱:getMac
* 功能描述:取得MAC地址
* 輸入參數:
  ipaddr    ip地址
*  輸出參數:
   Mac      對應ip的MAC地址
* 返 回 值:
    對應ip地址的序列號
* 其它說明:無
* 修改日期      版本號  修改人      修改內容
* ---------------------------------------------------------------------
* 2007/12/11             丁鵬              創建
************************************************************************/
int getMac(unsigned char *ipaddr, unsigned char *Mac)
{
    int ret = 0;
    printf("ipaddr:%s", ipaddr);
    if(rules_memcmp(ipaddr, "10.16.8.53", sizeof("10.16.8.53")) == 0)
    {
        *(unsigned char *)Mac=0x00;
        *(unsigned char *)(Mac+1)=0x11;
        *(unsigned char *)(Mac+2)=0x5B;
        *(unsigned char *)(Mac+3)=0x29;
        *(unsigned char *)(Mac+4)=0x7F;
        *(unsigned char *)(Mac+5)=0x3A; 
        ret = 1;
        
    }
    else  if(rules_memcmp(ipaddr, "10.16.8.55", sizeof("10.16.8.55")) == 0)
    {
        *(unsigned char *)Mac=0x00;
        *(unsigned char *)(Mac+1)=0x11;
        *(unsigned char *)(Mac+2)=0x85;
        *(unsigned char *)(Mac+3)=0xBA;
        *(unsigned char *)(Mac+4)=0xE9;
        *(unsigned char *)(Mac+5)=0x18; 
        ret = 2;
    }
    else  if(rules_memcmp(ipaddr, "10.16.8.51", sizeof("10.16.8.51")) == 0)
    {
        *(unsigned char *)Mac=0x00;
        *(unsigned char *)(Mac+1)=0x0E;
        *(unsigned char *)(Mac+2)=0x0C;
        *(unsigned char *)(Mac+3)=0x50;
        *(unsigned char *)(Mac+4)=0x72;
        *(unsigned char *)(Mac+5)=0x32; 
        ret = 3;
    }
    else  if(rules_memcmp(ipaddr, "10.16.8.63", sizeof("10.16.8.63")) == 0)
    {
        *(unsigned char *)Mac=0x00;
        *(unsigned char *)(Mac+1)=0x15;
        *(unsigned char *)(Mac+2)=0x58;
        *(unsigned char *)(Mac+3)=0x12;
        *(unsigned char *)(Mac+4)=0x9E;
        *(unsigned char *)(Mac+5)=0x5E; 
        ret = 4;
    }
    else  if(rules_memcmp(ipaddr, "10.16.8.54", sizeof("10.16.8.54")) == 0)
    {
        *(unsigned char *)Mac=0x00;
        *(unsigned char *)(Mac+1)=0x12;
        *(unsigned char *)(Mac+2)=0x79;
        *(unsigned char *)(Mac+3)=0xD0;
        *(unsigned char *)(Mac+4)=0x71;
        *(unsigned char *)(Mac+5)=0x9D; 
        ret = 5;
    }
    else
    {
        ret = 0;
    }
    return ret;    
}



/**********************************************************************
* 函數名稱:ipcrcCheck
* 功能描述:判斷收到的ip報文的ip校驗和是否正確
* 輸入參數:
  ipHdr    收到報文的ip頭
*  輸出參數:無
* 返 回 值:
    校驗和正確
    校驗和錯誤
* 其它說明:無
* 修改日期      版本號  修改人      修改內容
* ---------------------------------------------------------------------
* 2007/12/11             丁鵬              創建
************************************************************************/
int ipcrcCheck(struct ip *ipHdr)            
{
    unsigned short crcPacket;
    unsigned short crcCheck;
    
                
    crcPacket = ntohs(ipHdr->ip_sum);
    ipHdr->ip_sum = 0;
    crcCheck = checksum((unsigned short *)ipHdr,sizeof(struct ip));
    if(crcPacket != crcCheck)
    {
         printf("ip crc check wrong ...packet(%02x), my(receive %x)---\n", crcPacket, crcCheck);
         return ERR_IP_CRCC_WRONG;
    }
    else
    {
        printf("ip crc:packet %x, my %x---\n", crcPacket, crcCheck);
    }
    ipHdr->ip_sum = crcCheck;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
972aa.com艺术欧美| 欧美videos中文字幕| 日韩一区二区三区精品视频| 国产日韩av一区二区| 日韩二区在线观看| 在线观看不卡一区| 国产精品视频线看| 精品一区二区三区蜜桃| 欧美三级韩国三级日本一级| 国产精品免费视频一区| 久久精品国产一区二区三| 欧美三级电影网| 中文字幕字幕中文在线中不卡视频| 精品一区二区综合| 欧美肥胖老妇做爰| 亚洲一区二区视频在线观看| 成人av电影免费在线播放| 久久久久久免费| 狠狠色狠狠色综合系列| 欧美一区二区三区喷汁尤物| 亚洲va国产天堂va久久en| 色婷婷久久综合| 亚洲欧美中日韩| 99re8在线精品视频免费播放| 国产拍欧美日韩视频二区| 精品一区二区在线看| 91精品黄色片免费大全| 香蕉av福利精品导航| 欧美亚洲日本一区| 亚洲一区精品在线| 欧美性大战久久久久久久蜜臀| 亚洲欧洲日韩女同| 99久久精品国产一区二区三区| 中文一区二区完整视频在线观看| 国产成人精品一区二区三区四区| 久久久99精品免费观看| 国产精品一二三区| 中文字幕+乱码+中文字幕一区| 99久久夜色精品国产网站| 亚洲丝袜自拍清纯另类| 色综合天天综合网天天看片| 亚洲愉拍自拍另类高清精品| 色狠狠一区二区三区香蕉| 亚洲欧美一区二区不卡| 欧美三级三级三级爽爽爽| 日韩福利电影在线| 久久色视频免费观看| 成人毛片老司机大片| 玉米视频成人免费看| 精品视频一区二区不卡| 奇米色777欧美一区二区| 日韩精品中文字幕一区| 国产成人亚洲精品青草天美| 亚洲欧洲综合另类| 欧美精品一二三四| 国产一区不卡在线| 一区二区三区四区亚洲| 91精品国产免费| 国产91高潮流白浆在线麻豆| 一区二区在线观看视频在线观看| 欧美日韩极品在线观看一区| 精品一区二区三区免费毛片爱| 国产精品嫩草99a| 欧美日韩亚洲国产综合| 久久99精品一区二区三区 | 日本高清视频一区二区| 婷婷久久综合九色综合伊人色| 日韩西西人体444www| 懂色av一区二区三区蜜臀| 亚洲自拍偷拍欧美| 久久久久国产免费免费| 91国偷自产一区二区使用方法| 日本vs亚洲vs韩国一区三区二区| 久久久亚洲欧洲日产国码αv| 在线观看欧美日本| 国产黄色精品视频| 午夜精品福利一区二区蜜股av| 国产亚洲一区字幕| 欧美丰满少妇xxxxx高潮对白| jlzzjlzz亚洲日本少妇| 蜜臀a∨国产成人精品| 亚洲乱码国产乱码精品精可以看| 日韩午夜av一区| 91小视频在线免费看| 国产精品一区二区在线观看不卡| 亚洲精品国产a久久久久久| 日韩一级二级三级| 欧美性视频一区二区三区| 国产69精品久久久久毛片| 免费不卡在线视频| 亚洲一二三专区| 亚洲图片另类小说| 欧美国产成人精品| 久久―日本道色综合久久| 欧美精品xxxxbbbb| 欧美性受xxxx黑人xyx性爽| 91欧美激情一区二区三区成人| 国产高清在线观看免费不卡| 日韩高清欧美激情| 亚洲图片欧美色图| 一区二区视频在线| 亚洲私人影院在线观看| 国产精品护士白丝一区av| 久久久综合网站| 久久综合九色综合久久久精品综合| 日韩一区二区三区免费观看| 宅男噜噜噜66一区二区66| 欧美撒尿777hd撒尿| 欧美在线观看18| 在线看一区二区| 欧美色图第一页| 欧美猛男gaygay网站| 欧美性色黄大片手机版| 欧美中文字幕一二三区视频| 欧美自拍偷拍一区| 欧美日本在线视频| 欧美欧美欧美欧美首页| 正在播放亚洲一区| 中文字幕av不卡| 国产精品少妇自拍| 日韩伦理电影网| 亚洲第一会所有码转帖| 香港成人在线视频| 久久99蜜桃精品| 国产乱子轮精品视频| 国产清纯在线一区二区www| 欧美三级视频在线| 91精品国产美女浴室洗澡无遮挡| 欧美一区二区三区在线| 日韩欧美在线观看一区二区三区| 欧美一区二区三区性视频| 亚洲精品在线电影| 国产日韩在线不卡| 99久久精品免费| 欧美sm美女调教| 日韩亚洲欧美综合| 欧美精品一区二区三区四区| 国产日韩欧美亚洲| 中文字幕第一页久久| 日韩免费看的电影| 豆国产96在线|亚洲| 99久久99久久精品免费观看| 久久综合成人精品亚洲另类欧美| 久久综合色婷婷| 亚洲视频一区二区免费在线观看| 亚洲第一二三四区| 激情都市一区二区| 91免费看片在线观看| 日本久久电影网| 欧美大黄免费观看| 国产精品不卡视频| 免费观看在线色综合| av高清不卡在线| 欧美一级黄色片| 一区二区中文视频| 精久久久久久久久久久| www.欧美.com| 欧美精选在线播放| 国产精品国产三级国产普通话99| 五月开心婷婷久久| www.日韩在线| 日韩欧美色综合| 亚洲区小说区图片区qvod| 极品瑜伽女神91| 欧美优质美女网站| 国产拍欧美日韩视频二区| 亚洲va天堂va国产va久| 成年人午夜久久久| 久久美女艺术照精彩视频福利播放| 亚洲无人区一区| 播五月开心婷婷综合| 日韩欧美自拍偷拍| 亚洲精品中文在线观看| 国产乱对白刺激视频不卡| 91精品国产丝袜白色高跟鞋| 亚洲视频一区在线| 从欧美一区二区三区| 精品捆绑美女sm三区| 视频精品一区二区| 色老汉一区二区三区| 国产精品色哟哟网站| 国产一区二区三区免费在线观看| 在线亚洲一区观看| 亚洲欧美日韩国产综合在线| 国产成人精品一区二区三区四区 | 日韩欧美一区二区在线视频| 亚洲人妖av一区二区| 国产成人av一区二区三区在线| 91精品国产一区二区人妖| 亚洲电影一区二区三区| 91行情网站电视在线观看高清版| 国产精品美女久久久久aⅴ国产馆| 国产主播一区二区三区| 日韩欧美在线影院| 麻豆精品视频在线观看| 4438成人网| 美洲天堂一区二卡三卡四卡视频| 91精品国产高清一区二区三区蜜臀| 亚洲一级在线观看| 欧美高清视频www夜色资源网|