• 大小: 5KB
    文件类型: .c
    金币: 2
    下载: 1 次
    发布日期: 2021-06-17
  • 语言: C/C++
  • 标签: UDP  C语言  发包程序  

资源简介

使用C语言实现原始套接字从数据链路层到应用层的操作,Linux系统

资源截图

代码片段和文件信息

//使用原始套接字构造UDP数据包并发送(已经实现)
//程序说明:不使用任何关于报头的结构体直接在光秃的字符数组中严格按照协议规定来一次填写报头内容从而可以构造出完整的数据包

#include 
#include 
#include 
#include 


#include 
#include 
#include 
#include 
#include 
#include 


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#ifdef HAVE_CONFIG_H

#include 

#endif
 
      
      
    int checksum(int *buf int nword);//校验和函数  
    int main(int argc char *argv[])  
    {  
        //1.创建通信用的原始套接字  
        int sock_raw_fd = socket(PF_PACKET SOCK_RAW htons(ETH_P_ALL));  
          
        //2.根据各种协议首部格式构建发送数据报  
        unsigned char send_msg[1024] = {  
            //--------------组MAC--------14------  
            0xB8 0x81 0x98 0x58 0xBC 0xA4 //dst_mac: B8:81:98:58:BC:A4  
            0xA1 0xB2 0xC3 0xD4 0xE5 0xF6 //src_mac: A1:B2:C3:D4:E5:F6  
            0x08 0x00                         //类型:0x0800 IP协议  
            //--------------组IP---------20------  
            0x45 0x00 0x00 0x00             //版本号:4 首部长度:20字节 TOS:0 --总长度--:  
            0 0 0 0             //16位标识、3位标志、13位片偏移都设置0  
            128 17   0x00 0x00             //TTL:128、协议:UDP(17)、16位首部校验和  
            12  34   56  78                //src_ip: 12.34.56.78 
            192  168   0  103                //dst_ip: 192.168.0.103  
            //--------------组UDP--------8+78=86------  
            0x1f 0x90 0x17 0x70             //src_port:0x1f90(8080) dst_port:0x1f90(8080)  
            0x00 0x00 0x00 0x00               //#--16位UDP长度--30个字节、#16位校验和  
        };  
          
        int len = sprintf(send_msg+42 “%s“ “this is for the udp test“);  
        if(l

评论

共有 条评论