十月份所有文章 | 迟思堂工作室

Linux使用tcpdump抓获取WIFI包

Linux使用tcpdump抓获取WIFI包
Linux上常用的抓包工具有tcpdump,还有大名鼎鼎的wireshark(图形界面)。它们都可以抓无线网络WIFI包。本文介绍用两者如何在Linux系统中抓包,假设系统已经正确安装无线网卡驱动,并能识别到wlan0设备。 一、802.11数据包 802.11帧有三种,管理帧、控制帧,数据帧。当我们的手机扫瞄周边WIFI热点时,会发现probe请求,它是管理帧的一种。其中包含了手机的MAC地址。更多802.11帧格式,请自行搜索,本文不涉及...

双向链表list.h升序排序

双向链表list.h升序排序
前一篇文章《整理一个双向链表list.h》介绍了自实现的双向链表list.h,在Linux内核中,常见的是维护全局链表(如i2c板级有一个全局链表),基本上都是在尾部插入、模块退出时删除,不会涉及到链表中间插入、删除,——这也让我一度认为该链表的实现只具备这些“少许”功能。当然,如果抛开内核场合,其它场合可能会需要到更多的功能,所以前文中做了介绍。这里就说一下如何将链表做成升序(或降序)排列的。 代码...

整理一个双向链表list.h

整理一个双向链表list.h
一直觉得Linux内核的双向链表是十分巧妙的设计,它的实现方式与数据结构课程上讲的完全不同。内核list实现依赖于GCC的扩展,在其它平台不一定能正常运行。在内核中,一般是结构体中使用链表成员,而不是像数据结构课那样在链表结构体中使用数据域。C++中将lsit作为模板,能应用于各种类型数据上,但Linux内核无法使用,因而使用其它手段实现,方便扩展。事实上,内核大量结构体都使用了list。网上有很多关...

我的一些学习经验:WIFI

我的一些学习经验:WIFI
从接触WIFI到现在,才几个月左右时间,期间又不断穿插其它事务,不过总算学了点东西。本文记录一下学习WIFI的过程。 公司布局移动网络已很久了,从机顶盒子到无人机到h265、窄宽图传。今年安排我的工作计划只有“移动网络”这四个字,不过直到只剩下半年时间才能接触。 起初,得到的任务只是向项目输出, 必须是5GHz频段,速率要达到800Mbps。由于事急,也没什么时间系统地了解WIFI,直接在Linux系统搭建AP服...

我的一些学习经验:ONVIF

我的一些学习经验:ONVIF
李迟按: 这个文章讲讲笔者学习ONVIF的经历。 其实,早在2013年就接触了ONVIF。当时研发的新平台任务有ONVIF的需求。当时我记得自己使用GSOAP生成ONVIF框架代码,还录制了一个视频,在会上讲给同事听。后来利用业余时间看了ONVIF标准,一开始看得不明不白,基本不懂在看什么,看了2遍,发现了些门道,再看一遍,发现原来不过如此。由于公司在该新平台研发任务之前已经有其它部门同事实现了ONVIF,所以项目...

我的一些学习经验:网络相关问题

我的一些学习经验:网络相关问题
李迟按: 这篇文章谈谈笔者这几年遇到的一些网络问题和经验。 对于网络,大部分知识是在大学自学的。由于大学的网络课程是双语的,而老师又是去过外国深造的,教学方式上比较飘逸,跳跃较大,分神几分钟,可能老师已经在谈加拿大的风景了。然而应试还得是谢老师的那本计算机网络,所以很多知识是自已看书学到的。但课堂上认识到了老师的一个学习方法,我认为是非常不错的。即对于一个topic,要参考大量与该...

我的一些学习经验:概述

我的一些学习经验:概述
工作那么多年,或多或少都会有自己的工作习惯、学习习惯。其实工作了,就不能谈“学习”,因为公司雇佣员工是为了产生效益的。但以“研究”作为标题的话,又显得自己太狂。本文就笔者的学习、研究经历——更多是自学,总结一些想法、步骤,虽不是具备代表性,但也是经过实践的。很多年不写理论性的文章了,行文难免略显幼稚。 不求甚解 我接触Linux大概有8年时间了。回想起当初自学的过程,十分痛苦,一度放弃。...

获取时间CLOCK_MONOTONIC学习——顺记第一次与开源项目交互

获取时间CLOCK_MONOTONIC学习——顺记第一次与开源项目交互
前段时间接触horst项目,该项目是Linux下WIFI分析软件,可在界面上显示(使用ncurses库)。花了一些时间——断断续续也有几周吧,基本上大致掌握了它的流程和原理。后续再抽时间写一写其源码过程。 一、CLOCK_MONOTONIC 程序获致时间可以通过clock_gettime函数,该函数可以获取不同类型的时间,如CLOCK_REALTIME、CLOCK_MONOTONIC,其中CLOCK_REALTIME获取的是实时时间,而CLOCK_MONOTONIC获取的是相对时间。使...

我的内核学习笔记5:proc目录文件创建及读写

我的内核学习笔记5:proc目录文件创建及读写
上一篇内核学习笔记《我的内核学习笔记4:sysfs学习》是2013年写的,彼时至今,随着工作的展开和安排,内核方面的知识可谓突飞猛进,当然,其它方面亦是如此。关于内核方面,积累的笔记大大小小有几十篇了,但只是笔记形式或代码片段,无法形成文章,不敢献艺,怕贻笑大方。 最近研究网络子系统,想在内核层打印调试信息,但网络数据十分频繁,所以需要使用手段来控制调试信息的输出。以前一直使用sysfs,...

Linux GNU C结构体数组初始化示例

Linux GNU C结构体数组初始化示例
实然心血来潮,想学习一下结构体数组的初始化方面的知识。 以下是GCC实然心血来潮,想学习一下结构体数组的初始化方面的知识。特有的数组初始化的风格: // 数组赋值另一种方式,但只在gcc下编译通过,g++不能 enum { AAA = 0, BBB, CCC, DDD, }; // 只对感兴趣的索引值进行赋值,而不管下标的顺序 static const int regs[] = { [DDD] = 250, [CCC] = 3, [AAA] = 180, }; 这种风格在ker...

iptables学习笔记:使用NAT实现简单的无线AP

iptables学习笔记:使用NAT实现简单的无线AP
之前使用的是无线路由让手机上网。学习了iptables后,尝试在非openwrt系统的Linux上实现相同功能。本文简单记录一下。 手上有块X86的板子,上面安装了Linux系统。几个月前研究了WIFI并实现了一个无线AP,最近又重新拾起了iptables,于是顺便让这个AP真正实现上网功能。文章《iptables学习笔记:端口转发之“内网访问外网”》的标题有“端口”二字,是因为其应用场合特殊,除了IP地址要转换外,还要指定端口号,...