自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (5)
  • 收藏
  • 关注

原创 Proxy arp(代理 ARP)逻辑图解+实验详解+真机实践验证

只是ping未 reply,未reply是由于windows PC原因,本文不进行拓展。

2025-06-12 16:18:56 487

原创 vlan(虚拟局域网)逻辑图解+实验详解

是一种通过逻辑方式(非物理连接)将网络设备划分为多个独立广播域的技术。它允许管理员在同一个物理网络中创建多个隔离的虚拟网络,从而提升网络的安全性、灵活性和管理效率。

2025-06-05 22:25:10 786

原创 Linux Wlan hostapd框架梳理

根据通道配置,这可能会在返回之前完成完全初始化,或者在需要HT co-ex扫描、ACS或DFS等操作来确定通道参数的情况下,使用回调机制完成设置。在这种情况下,接口将从hostapd_global_run()中的eloop上下文启用。这个框架图展示了hostapd的软件架构和主要组件。

2025-05-25 21:06:10 985

原创 NAT(网络地址转换)逻辑图解+实验详解

NAT(网络地址转换)是一种关键技术,用于在IP数据包通过路由器或防火墙时修改其源或目标IP地址,以促进不同网络间的通信。

2025-05-18 15:17:53 1185

原创 Linux wlan 单频段 dual wifi创建

启动时遇到了接口名称冲突或驱动初始化失败的问题,之前我们提到过,这款网卡支持支持两个接口,ap或者managed的接口总数不能超过2,所以我选择down掉managed接口。所以前面的分析原因有误,不是因为ap或者managed的接口总数不能超过2导致的无法启动hostapd wifi。初步结论:关掉主wifi后,访客wifi启动成功,他们不能同时启动。尝试了一下多种方法,原来是因为这三个接口都是使用了相同的mac地址。再启动wifi 2接口,成功启动。主wifi接口正常启动。访客wifi启动失败。

2025-05-14 14:34:27 1115

原创 802.11s Mesh 组网框架流程

使用相同的 Mesh ID (my-mesh) 和 频率 (2437 MHz)。重启 NetworkManager 和 wpa_supplicant。分配不同 IP,如 192.168.100.1/24。使用 802.11s (标准 Mesh 协议)删除创建的 mesh0 接口(如果存在)新建了一个mesh网口 rename6。确认接口已恢复为 managed 模式。输出应显示:type managed。离开当前 Mesh 网络。将接口恢复为默认管理模式。在另一台设备上重复操作。

2025-05-07 17:23:50 853

原创 基于ACL方式手动建立站点间 IPSec 隧道

查看 安全提议配置:display ipsec proposal name prol。查看配置命令:display ipsec proposal name prol。查看安全策略:display ipsec policy name client。还是使用eNSP软件进行模拟,等后面再更新实际通信中的环境。规则:配置 ACL 指定需要加密的流量(源/目的子网)IPSec 隧道建立之前,我们先清楚一些概念。作用:到时候我们需要挨个去配置各个数据包功能。4、应用安全策略到接口。4、应用安全策略到接口。

2025-04-23 23:51:17 698

原创 Linux Wlan-四次握手(eapol)框架流程

GTK加密:使用PTK的子密钥 KEK(Key Encryption Key) 加密GTK,确保组密钥传输安全。使用上一章文章的TPLINK wn722n v1网卡在2.4G 频段抓包(v2、v3是不支持混杂模式的)客户端收到AP的ANonce后,结合自己的SNonce和PMK计算出PTK,并用KCK生成MIC。AP收到Msg4后,确认握手完成,双方开始使用PTK/GTK加密所有数据流量。四次握手的第一条消息,由AP发送给客户端,携带AP生成的ANonce。验证MIC并生成GTK(组密钥)

2025-04-21 22:20:01 1008

原创 基于linux 设置无线网卡Monitor模式 sniffer抓包

这是无线网卡的默认工作模式,用于 正常连接 Wi-Fi 网络(如家庭路由器、公司网络等)使用 airodump-ng 扫描周围无线网络,使用Ctrl+C 停止扫描。新监听接口:wlan0mon(因原接口名过长,系统自动重命名)。原始接口wlx0c826806f70a(已禁用)。–bssid 只抓取目标 AP 的数据包。查看网卡模式,因为需要设置为监听模式。TP-WN722N 开源无线网卡。lsusb 查看无线网卡设备。),并生成了新的监听接口。生成wlan0mon接口。已成功进入 监听模式(

2025-04-18 21:21:19 548

原创 GRE 隧道协议实现

VPN(Virtual Private Network,虚拟专用网络)是一种通过加密和隧道技术,在公共网络上创建安全私有连接的服务。它的核心作用是保护用户的上网隐私和数据安全,同时突破地理限制访问特定内容。以下是实现VPN的常见协议详细对比GRE(Generic Routing Encapsulation) 是一种隧道协议,用于将任意协议的数据包封装在 IP 协议中传输。特点1)支持多协议(如 IP、MPLS 等)的封装。2)不提供加密,需结合 IPsec 实现安全传输。

2025-04-11 17:27:59 800

原创 Linux wifi 驱动移植适配流程详解

linux 无线 驱动移植详解

2025-03-31 22:08:48 959 1

原创 Linux wifi driver 注册和设备探测流程

ath9k_htc_init(void) //驱动初始化→ ath9k_hif_usb_init(void) //驱动注册→ ath9k_hif_usb_probe() //设备探测→ ath9k_hif_request_firmware() //请求加载固件→ ath9k_hif_usb_firmware_cb() //固件加载完成后的回调。

2025-03-24 21:41:30 1043

原创 linux wifi driver深度实践之内核编译加载

ath9k_htc驱动可能依赖于ath9k_common和ath9k_hw提供的公共代码或硬件抽象层。如果这些依赖模块没有正确加载或版本不兼容,就会导致主驱动无法正常工作,甚至出现参数无效的错误。Ubuntu 提供了内核源码包,可以通过以下命令安装,源码包会下载到 /usr/src/ 目录,解压后即可查看驱动源码。因为拉取代码和修改编译时一个庞大的工程,所以我并没有拉取对应linux内核版本的驱动源码。一定程度说明驱动加载后的功能没问题,但是还是要做功能性验证。编译问题解决后,替换库里的驱动。

2025-03-10 18:12:29 822

原创 Linux wifi driver 之深度实践 ap热点创建

Linux 系统中还是使用 TP-Link TL-WN722N v1 创建热点(AP 模式),需要借助工具如 hostapd(创建热点)和 dnsmasq(提供 DHCP 服务)插入网卡,linux NetworkManager自动加载,先使用iw list查看是否支持ap模式或者使用iw list | grep “Supported interface modes” -A 8安装依赖工具遇到的问题:更新失败域名无法解析,定位是dns的问题保存并重启网络配置sudo systemctl

2025-02-25 14:58:43 963

原创 ath9k(Atheros芯片)开源驱动之wifi连接

先让一个开源驱动在你的硬件上跑起来,再逐步修改,这就是学习的基本思路。我希望能用这款驱动,开启我们自己的篇章

2025-02-22 23:11:12 772

原创 Kernel之Tcpdump和Netfilter

Netfilter 是 Linux 内核中的一个框架,用于对网络数据包进行过滤、修改和重定向。它提供了多个钩子点(hook points),允许用户在不同的网络层插入自定义逻辑。它可以用于捕获不同 ISO模型中的多个层次的数据包,具体取决于过滤条件和抓包配置。验证成功(无法连接)

2025-02-13 16:27:00 1081 1

原创 Linux内核发送网络数据

我们开始今天对 Linux 内核⽹络发送过程的深度剖析。还是按照我们之前的传统,先从⼀段代码作为切⼊。上述代码中,调⽤ send 之后内核是怎么样把数据包发送出去的。本⽂基于Linux 3.10,⽹卡驱动采⽤Intel的igb举例。

2024-05-14 21:12:24 1263

原创 内核是如何接收⽹络包的

⽹络模块是 Linux 内核中最复杂的模块了,看起来⼀个简简单单的收包过程就涉及到许多内核组件之间的交互,如⽹卡驱动、协议栈,内核ksoftirqd 线程等。

2024-04-15 15:17:20 1579 2

原创 Linux网络内核基础框架

内核提供了一系列操作缓冲区的函数,包含上层协议模块需要发送数据包或网络设备准备接收数据包

2024-03-08 00:44:37 1454

原创 Makefile整理代码

Makefile 是一个包含一系列规则的文本文件,用于告诉构建工具 make 如何构建软件项目。

2024-02-18 22:25:46 456

原创 linux GDB and GDB Sever

GDB(GNU Debugger)是一个用于调试程序的强大工具。它是GNU项目的一部分,支持多种编程语言,包括C、C++等。GDB 提供了一组命令和功能,允许跟踪检查程序的内部状态,跟踪代码的执行过程,以及定位和修复程序中的错误。:set follow-fork-mode parent 是 GDB 的一个命令,用于在多进程调试时控制在 fork() 调用之后 GDB 应该跟踪哪个进程。问题出在:函数accessInvalidMemory,代码的第五行。前面是单子进程的调试。

2024-01-13 16:04:54 1321

原创 linux线程与进程

在Linux系统中,进程(Process)和线程(Thread)是操作系统中两个重要的概念,它们都是用于执行程序的执行单元,但有一些关键的区别。

2024-01-01 13:36:00 1154

原创 进程间通信

进程间通信(Inter-Process Communication,IPC)是指在操作系统中,两个或多个独立的进程之间进行数据交换和信息共享的机制。

2023-12-22 16:27:47 242

原创 Netlink通信

Netlink 是 Linux 内核与用户空间进程之间进行通信的机制之一

2023-12-16 17:46:18 1199

原创 函数指针与指针函数

- 指针函数本质是一个函数,其返回值为指针。 - 函数指针本质是一个指针,其指向一个函数。

2023-12-14 11:31:37 231

原创 基于ubuntu tun虚拟网卡设备完成ping的发送与模拟接收

前面我们初步认识了什么是tun设备及基础的工作原理与接收文件的设备文件(节点)、虚拟网卡的启动、添加路由表等操作,为什么进一步理解tun设备与协议栈的通信理解,这次我们将应用层控制tun设备发送ping,通过read读取到,后经过手动组装icmp网络包write到协议栈,模拟远程主机回复给我们的 icmp reply,顺便熟悉下icmp 网络包的协议。

2023-09-06 17:15:25 1296

原创 Linux tun虚拟网卡通信初识

Linux TUN 设备是一种虚拟网络设备,用于在用户空间和内核空间之间建立数据通道,使用户空间程序可以通过这个设备与内核网络栈进行交互。TUN 设备是一种通用的网络隧道设备,常用于实现虚拟专用网络(VPN)和其他网络隧道技术。

2023-08-08 20:13:52 3263

原创 成为wifi驱动工程师应该从什么开始学习

写了这么多文章,都很零散,这次收集整理了下我们应该学习的大概框架和思路,希望大家喜欢,如果有其他的想要学习的或者思考的想法可以在评论区发言哦,我会尽量出一些实践的小原理的文章分享出来,谢谢!作为初学者想成为驱动工程师,首先需要打下坚实的计算机基础,然后逐步学习与驱动开发相关的知识和技能。以下是初学者成为驱动工程师的建议学习路径:参考书籍和在线资源:阅读与驱动开发相关的书籍和在线资源,这将帮助你加深对驱动开发的理解。成为WiFi驱动工程师是一个专业性较高的领域,需要对计算机网络、操作系统、无线通信以及硬件驱动

2023-07-22 12:19:37 1000 1

原创 IP地址转换函数

在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换。当然也包含主机字节序与网络字节序的转换结构体熟悉// ip地址的网络字节序 };上述结构体为 struct sockaddr_in 中的参数 3 struct sockaddr_in {// 地址簇 in_port_t sin_port;// 端口的网络字节序 struct in_addr sin_addr;概念熟悉。

2023-07-21 12:57:29 383

原创 Ioctl()方式实现与驱动交互简洁框架

ioctl是linux中一种除read和write之外的数据传递机制以上函数参数的含义如下。inode和fp用来确定被操作的设备。request就是用户程序下发的命令。args就是用户程序在必要时传递的参数。在2.6.36以后ioctl函数已经不存在了,用unlocked_ioctl和compat_ioctl两个函数代替。参数去除了原来ioctl中的structinode参数,返回值也发生了改变。新的代码。

2023-06-14 10:58:06 1833

原创 实现ifconfig配置功能基础框架

因为要实现类似ifconfig工具的作用,所以我们先要了解下argc和argv,接触linux系统,我们往往就需要用命令行的方式来编译和执行程序。那么在命令行方式下,此时这两个参数就很有作用了,能够非常方便地帮助我们实现一些功能。

2023-05-31 23:34:20 711

原创 ifconfig工具与驱动交互解析(ioctl)

如上主要讲的是设置和获取,希望能够抛砖引玉,让大家学到更多。

2023-05-30 00:19:51 1196

原创 linux ioctl 理解

在计算机中,ioctl(input/output control)是一个专用于设备输入输出操作的系统调用,该调用传入一个跟设备有关的请求码,系统调用的功能完全取决于请求码。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制ioctl函数其中fd就是用户程序打开设备时使用open函数返回的文件描述符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。

2023-05-22 21:07:59 1000 1

原创 Linux socket

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。应用程序也可以用IP+端口号进行唯一标识。那么这个程序的入口就被称作Socket。建立连接发送数据接收数据。我们可以把Socket编程理解为对TCP协议的具体实现。

2023-05-10 16:07:04 1580

原创 Linux字符设备驱动

代码结构简单,旨在用最简单的原理理解最主要的框架逻辑,细节需要自行延伸。-----------------学习的基础底层逻辑。

2023-05-01 23:20:17 971

原创 字符、块、网络设备

网络设备是特殊设备的驱动,它负责接收和发送帧数据,可能是物理帧,也可能是ip数据包,这些特性都有网络驱动决定。一个字节一个字节读写的设备,读取数据需要按照先后顺序读取,常见的字符设备有鼠标、键盘、串口、控制台和LED设备,每个字符设备在/dev目录下对应一个设备文件,linux用户程序通过设备文件(或称设备节点)来使用驱动程序操作字符设备。这些设备文件和普通文件之间的唯一差别在于对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道。,设备驱动的代码量占了大部分内核程序。

2023-04-30 22:23:00 1515

原创 钩子函数理解

某些情况下,对于需求不明朗,可能还不知道它会完成什么功能,这时候留下函数指针作为接口,可以挂上不同的函数完成不同的功能,究竟执行什么功能由钩子函数的编写者完成。在的代码中,常常把挂钩子的过程叫做注册,会提供一个注册函数,让使用者把自己编写的钩子函数挂在已经声明的函数指针上,这个注册函数的参数就是我们的函数指针了。max,min函数就是钩子函数了,把函数指针g_pFun指向函数Max,Min的过程,就是“挂钩子”的过程,把钩子函数“挂”到函数指针上,很形象。是通过函数指针来实现的。

2023-04-25 00:25:46 807

原创 基于LINUX实现ping发送与接收

由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全0或全1(具体看实现了,本质一样)如果结果不是全0或全1,那么表示数据错误。注意一下上面说到的ICMP报文格式中的“类型”字段,我们在组包的时候可以向该字段填写不同的值来标定该ICMP报文的类型。Linux ping 命令用于检测主机:执行 ping 会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

2023-04-19 00:06:59 1225

原创 wifi理论数据速率计算

简单的数据速率计算

2023-04-13 00:13:51 4006 5

原创 基于linux 实现DNS Client请求

属于应用层的编程,对于我i们后续的协议理解是很有帮助的。上面提供的所有代码可以直接编译运行,执行的时候请检查电脑是否有网络,否则无法正常执行。

2023-03-05 14:41:58 693

teamviewer_15.13.6_amd64.deb

ubuntu安装包

2021-02-20

國內安卓wifi認證wapi功能patch包.7z

國內安卓wifi認證wapi功能patch包

2021-05-03

wifi的iwpriv工具

iwpriv工具

2021-03-30

FDC2214源码及数据手册.zip

2018年ti杯省赛,基于FDC2214的手势识别设计,此中基于keil5平台开发的源码,基于stm32F103zet6单片机,

2020-06-02

测试wifi芯片的base.apk测试软件

(无需积分下载)wifi测试工具,包含wifi开关时间测试,首次扫描时间测试,自动连接时间测试,FTP测试,iperf

2021-02-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除