Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > 自己构建SKB ARP发送代码
【标  题】:自己构建SKB ARP发送代码
【关键字】:SKB,ARP
【来  源】:http://www.cublog.cn/u/4249/showart.php?id=251485

自己构建SKB ARP发送代码

Your Ad Here
//kernel:2.4.20-8
 
#include <linux/module.h>
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/net.h>
#include <linux/version.h>
#include <asm/unistd.h>
#include <asm/processor.h>
#include <linux/tqueue.h>
#include <linux/interrupt.h>
#include <linux/time.h>
#include <linux/types.h>
#include <linux/wait.h>
#include <asm/uaccess.h>
#include <linux/netdevice.h> 
#include <linux/etherdevice.h>
#include <linux/if_arp.h>
 

#define ARP_DATA_LEN  80
#define DEV_NAME "eth1"
DECLARE_WAIT_QUEUE_HEAD(tm);
DECLARE_WAIT_QUEUE_HEAD(tm1);
int finish=1;
char *sMac=NULL;
MODULE_PARM(sMac,"s");
struct sk_buff *pSkb = NULL;
struct sk_buff * CreatArpData()
{
 struct sk_buff *skb= NULL;
 struct net_device *dev;
 struct ethhdr sEthHeader ;
 struct arphdr sArp ;
 dev = dev_get_by_name(DEV_NAME);
 skb = dev_alloc_skb (ARP_DATA_LEN + 2);
 if(skb != NULL)
 {
  skb->dev = dev;
  skb_reserve (skb, 2);
  memcpy(sEthHeader.h_dest,"\xff\xff\xff\xff\xff\xff",6);
  memcpy(sEthHeader.h_source,sMac,6);
  sEthHeader.h_proto = 0x0608;
  memcpy(skb->data,&sEthHeader,sizeof(struct ethhdr));
  skb_put(skb, sizeof(struct ethhdr));
  skb->mac.ethernet = skb->data;
  sArp.ar_hrd = 0x0100;
  sArp.ar_pro = 0x0008;
  sArp.ar_hln = 0x06;
  sArp.ar_pln = 0x04;
  sArp.ar_op = 0x0100;
  memcpy(skb->data+sizeof(struct ethhdr),&sArp,sizeof(struct arphdr));
  skb_put(skb, sizeof(struct arphdr));
  memcpy(skb->data+sizeof(struct ethhdr)+ sizeof(struct arphdr),sMac,6);
  memcpy(skb->data+sizeof(struct ethhdr)+ sizeof(struct arphdr)+6,"\xc0\xa8\x0f\x01",4);
  memcpy(skb->data+sizeof(struct ethhdr)+ sizeof(struct arphdr)+6+4,"\x0\x0\x0\x0\x0\x0",6);
  memcpy(skb->data+sizeof(struct ethhdr)+ sizeof(struct arphdr)+6+4+6,"\xc0\xa8\x0f\xfe",4);
  skb_put(skb, 6+4+6+4);
  skb->protocol = eth_type_trans (skb, dev);
  skb_push(skb,sizeof(struct ethhdr));
  return skb;
 }
 return NULL;
}
int BroadArpMain()
{
 sigset_t tmpsig ;
 sprintf(current->comm, "arpSend");
 spin_lock_irq(&current->sighand->siglock);
 tmpsig = current->blocked;
 siginitsetinv(&current->blocked, sigmask(SIGKILL) | sigmask(SIGSTOP));
 recalc_sigpending();
 spin_unlock_irq(&current->sighand->siglock);
 
 daemonize();
 pSkb = CreatArpData() ;
 if(pSkb != NULL)
 {
  do
  {
   dev_queue_xmit(pSkb) ;
   pSkb = CreatArpData() ;
   interruptible_sleep_on_timeout(&tm,100);
  }while(finish);
 }
 else
 {
  printk("pSkb is NULL\n");
 }
 return 0;
}
int  __init BroadArp_init(void)
{
 
 (void)kernel_thread(BroadArpMain,NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
 return 0;
 
}
void __exit BroadArp_exit(void)
{
 finish =0;
 interruptible_sleep_on_timeout(&tm1,1000);
}
module_init(BroadArp_init);
module_exit(BroadArp_exit);
 
 
Makefile:
MODULE = broadArp
CFLAGS += -Wall -DEXPORT_SYMTAB -DMODULE -D__KERNEL__ -DLINUX
CFLAGS += -I/usr/src/linux-2.4/include

SOURCE= \
        broadArp.c
OBJS = $(SOURCE:%.c=obj/%.o)
$(MODULE).o: $(OBJS)
        $(LD) -r -o $@ $(OBJS)
obj/%.o:%.c
        @mkdir -p obj
        $(CC) $(CFLAGS) -c $< -o $@
clean:
        rm -fr obj $(OBJS) $(MODULE).o


linux parted同e2label的妙用:【上一篇】
欲望:【下一篇】
【相关文章】
  • 近期开发完成一套Skin库(SkinSharp)
  • 软件推荐┊最有效防止被聚生网管、P2P终结者等管理软件控制的小工具——ARP防火墙单机版
  • SharpPad文本编辑器: 已完成添加代码自动完成、代码折叠等功能
  • ARP监听渗透内网的方法
  • ARP Issues in LVS/DR and LVS/TUN Clusters
  • 基于ORM的国产开源框架WebSharp在.Net中的应用
  • 关于网关,路由,路由协议,ARP的精彩解释
  • 有关ARP病毒入侵原理和解决方案 (整理)
  • ARP病毒攻击
  • SharpDevelop浅析_3_Internationalization-TextEditor __ 读书心得
  • 【随机文章】
  • 基于TCP协议的短信数据包打包与解包及应用
  • PropertyGrid属性值的汉化
  • SA299第二遍复习进程
  • WebSite不能发布在含有中文的目录下?
  • 学习postfix的一个小结
  • 菜鸟如何在LINUX下装DB2
  • 中国计算机软件专业资格与水平考试系统分析员级大纲
  • Bye 了 FC4
  • Freetextbox 的使用
  • 网络安全产品技术发展趋势-防火墙
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.