亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日本不卡123| 欧美日韩一区三区四区| 国产精品1区二区.| 蜜臀99久久精品久久久久久软件| 午夜精品久久久久久| 亚洲成a人片在线观看中文| 一区二区三区四区在线| 樱桃国产成人精品视频| 一区二区三区在线观看视频 | 一区2区3区在线看| 综合亚洲深深色噜噜狠狠网站| 国产精品卡一卡二| 国产精品久久久久婷婷二区次| 国产精品久久久久久久久动漫| 国产精品国产三级国产a| 国产精品全国免费观看高清| 国产精品久久福利| 怡红院av一区二区三区| 亚洲成人黄色小说| 狂野欧美性猛交blacked| 久久成人久久爱| 成人伦理片在线| 色欧美88888久久久久久影院| 欧美在线免费观看视频| 717成人午夜免费福利电影| 亚洲精品大片www| 日韩精品一二三四| 国产精品一二二区| 99国产精品一区| 欧美日韩在线三级| 精品国产91乱码一区二区三区 | 亚洲欧美欧美一区二区三区| 一区二区三区四区中文字幕| 日本午夜精品视频在线观看| 国产精品资源在线观看| 91香蕉国产在线观看软件| 欧美日韩成人综合天天影院 | 亚洲自拍偷拍网站| 日韩激情一区二区| 不卡电影一区二区三区| 精品视频在线免费观看| 久久综合色一综合色88| 亚洲免费观看高清完整版在线观看 | 成人一级视频在线观看| 91成人免费在线视频| 日韩欧美国产综合一区| 亚洲日本在线视频观看| 肉肉av福利一精品导航| 韩国成人在线视频| 一本到不卡精品视频在线观看 | 亚洲aaa精品| 国产精品一线二线三线精华| 日本电影欧美片| 26uuu精品一区二区在线观看| 日韩一区中文字幕| 麻豆传媒一区二区三区| 波多野结衣一区二区三区 | 欧美大片顶级少妇| av午夜一区麻豆| 欧美一区二区三区免费观看视频| 欧美经典三级视频一区二区三区| 一区二区国产视频| 国产69精品久久99不卡| 欧美军同video69gay| 国产精品成人一区二区艾草| 免费在线观看视频一区| 欧美亚洲禁片免费| 中文字幕av在线一区二区三区| 日本中文字幕一区二区有限公司| 99精品久久只有精品| 久久精品夜夜夜夜久久| 蜜臀av性久久久久蜜臀aⅴ| 色综合久久中文综合久久97| 国产欧美一区二区三区在线看蜜臀| 水野朝阳av一区二区三区| 99国产欧美另类久久久精品| 国产欧美一区二区精品久导航| 久久激情五月激情| 欧美日韩成人在线一区| 亚洲永久精品大片| 99久久免费视频.com| 久久精品视频网| 久久99热这里只有精品| 91麻豆精品国产91久久久久久 | 精品美女一区二区| 日韩不卡一区二区| 欧美精品丝袜中出| 一区二区免费在线| 色综合久久精品| 欧美韩国日本一区| 粉嫩av亚洲一区二区图片| 久久奇米777| 久久99久久99小草精品免视看| 91精品午夜视频| 亚洲成人av在线电影| 欧美性受xxxx黑人xyx性爽| 成人av免费观看| 欧美激情在线一区二区| 国产一区二区三区日韩| 精品国偷自产国产一区| 日本中文字幕一区二区视频| 91精品国产一区二区| 亚洲国产三级在线| 欧美精品一二三| 日本大胆欧美人术艺术动态| 欧美日韩高清一区二区不卡| 午夜不卡在线视频| 欧美一区午夜精品| 久久精品国产成人一区二区三区| 正在播放亚洲一区| 久久精品免费看| 精品国产一区二区三区久久久蜜月| 美女一区二区在线观看| 精品国产91久久久久久久妲己 | 91社区在线播放| 国产精品二区一区二区aⅴ污介绍| 91在线你懂得| 一区二区三区精品在线| 欧美精品一级二级三级| 久久国产精品露脸对白| 国产亚洲一二三区| 不卡一区在线观看| 亚洲综合清纯丝袜自拍| 欧美日韩视频不卡| 日产精品久久久久久久性色| 精品欧美一区二区三区精品久久 | 日韩欧美一区二区三区在线| 久久精品国产亚洲aⅴ| 精品在线一区二区| 国产日韩欧美精品一区| 99精品1区2区| 日韩成人免费看| 久久久久久久综合狠狠综合| 91麻豆免费观看| 日韩不卡一二三区| 国产精品少妇自拍| 欧美丝袜丝交足nylons| 秋霞影院一区二区| 中文字幕国产一区| 欧美午夜寂寞影院| 国内精品国产成人国产三级粉色| 国产欧美精品一区二区色综合| 91免费观看视频在线| 五月天久久比比资源色| 久久精品网站免费观看| 欧美性淫爽ww久久久久无| 欧美aⅴ一区二区三区视频| 国产女人aaa级久久久级 | 欧美日韩国产精品自在自线| 久久精品国产精品亚洲精品| 亚洲视频你懂的| 日韩一二三四区| 91在线国产福利| 奇米精品一区二区三区在线观看 | 制服丝袜亚洲网站| 国产精品中文字幕日韩精品| 亚洲午夜精品久久久久久久久| 26uuu另类欧美亚洲曰本| 色综合天天视频在线观看| 日本不卡在线视频| 亚洲欧洲av在线| 欧美成人国产一区二区| 97久久精品人人做人人爽50路| 色94色欧美sute亚洲线路一ni| 看电视剧不卡顿的网站| 亚洲综合色丁香婷婷六月图片| 国产日韩亚洲欧美综合| 91麻豆精品国产| 91色九色蝌蚪| 国产乱码一区二区三区| 偷拍日韩校园综合在线| 亚洲欧美中日韩| 久久综合999| 日韩一级免费一区| 欧美视频一区二区三区四区 | 99综合电影在线视频| 狂野欧美性猛交blacked| 亚洲综合在线第一页| 国产亚洲成aⅴ人片在线观看| 欧美一区二区在线免费播放| 在线视频你懂得一区| 国产成人av电影在线观看| 免费在线一区观看| 亚洲网友自拍偷拍| 亚洲美女屁股眼交3| 国产精品久久久久天堂| 精品成人一区二区| 精品国产凹凸成av人网站| 日韩一区二区三区在线观看| 欧美日韩在线播放三区四区| 色视频一区二区| 99这里只有精品| www.欧美亚洲| 丰满放荡岳乱妇91ww| 国产麻豆精品一区二区| 国产麻豆精品theporn| 精品一区二区免费看| 久久国产精品色| 国内一区二区视频| 美国十次综合导航|