资源简介
WIFI探针内核源码,通过解析wifi底层通讯协议,取得路由器附近的手机(sta设备)mac,openwrt操作系统。内核与应用层通讯使用genetlink

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include nk.h>
#include nk.h>
#include “csx_netlink.h“
/* attributes (variables): the index in this enum is used as a reference for the type
* userspace application has to indicate the corresponding type
* the policy is used for security considerations
*/
unsigned char GLOBAL_IsScan;
unsigned char GLOBAL_AddrLocalNum;
unsigned char GLOBAL_AddrLocal[ADDR_LOCAL_NUMBER][MAC_ADDR_LEN];
enum {
DOC_EXMPL_A_UNSPEC
DOC_EXMPL_A_MSG
DOC_EXMPL_A_DAT
__DOC_EXMPL_A_MAX
};
#define DOC_EXMPL_A_MAX (__DOC_EXMPL_A_MAX - 1)
/* attribute policy: defines which attribute has which type (e.g int char * etc)
* possible values defined in net/netlink.h
*/
static struct nla_policy doc_exmpl_genl_policy[DOC_EXMPL_A_MAX + 1] = {
// [DOC_EXMPL_A_MSG] = { .type = NLA_NUL_STRING }
[DOC_EXMPL_A_DAT] = { .type = NLA_UNSPEC }
};
#define VERSION_NR 1
/* family definition */
static struct genl_family doc_exmpl_gnl_family = {
.id = GENL_ID_GENERATE //genetlink should generate an id
.hdrsize = 0
.name = “STAMAC“ //the name of this family used by userspace application
.version = VERSION_NR //version number
.maxattr = DOC_EXMPL_A_MAX
};
/* commands: enumeration of all commands (functions)
* used by userspace application to identify command to be ececuted
*/
enum {
DOC_EXMPL_C_UNSPEC
DOC_EXMPL_C_ECHO
__DOC_EXMPL_C_MAX
};
#define DOC_EXMPL_C_MAX (__DOC_EXMPL_C_MAX - 1)
/* an echo command receives a message prints it and sends another message back */
int doc_exmpl_echo(struct sk_buff *skb struct genl_info *info)
{
struct nlattr *na;
int rc;
void *msg_head;
char * mydata;
unsigned char snd_buff[1024];
if (info == NULL)
goto out;
struct nlmsghdr *nlhdr;
struct genlmsghdr *genlhdr;
struct nlattr *nlh;
char *str;
struct sk_buff *skb_p;
nlhdr = nlmsg_hdr(skb);
genlhdr = nlmsg_data(nlhdr);
nlh = genlmsg_data(genlhdr);
str = (char *)nla_data(nlh);
printk(“getstr= %c\n“*str);
if(*str == ‘s‘)
GLOBAL_IsScan = 1;
else
GLOBAL_IsScan = 0;
/* send a message back*/
skb_p = genlmsg_new(NLMSG_GOODSIZE GFP_KERNEL);
if (skb_p == NULL)
goto out;
msg_head = genlmsg_put(skb_p 0 info->snd_seq+1 &doc_exmpl_gnl_family 0 DOC_EXMPL_C_ECHO);
if (msg_head == NULL) {
rc = -ENOMEM;
goto out;
}
printk(“GLOBAL_AddrLocalNum= %u\n“GLOBAL_AddrLocalNum);
memcpy(snd_buff&GLOBAL_AddrLocalNumsizeof(GLOBAL_AddrLocalNum));
if(GLOBAL_AddrLocal > 0)
memcpy(snd_buff+sizeof(GLOBAL_AddrLocalNum)GLOBAL_AddrLocalGLOBAL_AddrLocalNum*MAC_ADDR_LEN);
rc = nla_put(skb_p DOC_EXMPL_A_DATsizeof(GLOBAL_AddrLocalNum)+GLOBAL_AddrLocalNum*MAC_ADDR_LENsnd_buff);
if (rc != 0)
goto out;
genlmsg_end(skb msg_head);
rc = genlmsg_unicast(genl_info_net(info) skb_p info->snd_porti
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-09-22 14:00 probe\
文件 4447 2017-09-03 19:02 probe\csx_netli
文件 606 2017-09-03 19:02 probe\csx_netli
文件 35548 2017-09-03 19:02 probe\main.c
文件 1176 2017-09-03 19:02 probe\Makefile
文件 105184 2017-09-03 19:02 probe\rx.c
相关资源
- 安卓wifi直连app源码
- wifi的ssid探测
- ubuntu9.10 可加载内核模块和字符设备驱
- 内核驱动进程保护演示程序
- wifi局域网内双向语音实时通话
- linux 0.12内核源代码
- 矿用多功能WiFi信号转换器的设计
- 基于WiFi技术的矿井信号收发器设计
- 爱普生(EPSON)L3151 3153 3156 3157 3158不
- 作为轻夸克汤河耦合的探针,独特的
- RTL8188EVT USB WIFI无线网卡驱动 免费版
- wifi电路调试经验之谈
- 周立功PCI CAN卡LINUX驱动ubuntu16.04内核
- WINDOWS内核安全编程 寒江独钓 光盘源
- 寒江独钓-Windows内核安全编程(完整版
- ARM7内核的中断屏蔽方法
- 解读ARM7内核微控制器以太网接口电路
- Marvell 88W8686 WiFi模块的ADHOC热点创建代
- RT5350WIFI模组
- 基于Arduino和Machtalk的温棚环境监测系
- Linux内核函数Start_kernel()的功能
- duilib webkit内核浏览器控件
- 卡皇RTL8187芯片网卡驱动 Win7 x86x64官方
- 易语言守望者内核驱动变速源码
- 位移顶点作为LHC无菌中微子混合的探
-
lb li
nk随身wifi驱动 v1.1.3 官方版 - 基于ADS1298与WiFi的脑电信号采集与传输
- 老R4通用内核
- 嵌入式实时操作系统的RAM盘扩展
- 经验分享:如何通过wifi标准选择
评论
共有 条评论