意识到一个问题:(以我的喜好)本站大概不会有正经的技术类文章.之前其实很想做一个严肃的技术向博客的,但终于未能达成,一是因为我的水平确实很菜,二是因为,即使我要认真地谈一个技术问题,也难以抑制地写上一大堆无关紧要的废话.因此像其他一些技术类文章,开门见山地提出我们今天来讨论下什么什么东西,它有什么用,你在 Linux 下怎么安装它,怎么运行它,它可以接收几个参数,都是干嘛的,遇到 error 怎么办...估计不太会出现在这里.实际上,当初建立"折腾"这个分类目录就是想放一些这样的文章,结果发现并不太可能.幸好,今后可能会有许多篇社团活动的记录,起码可以放到"折腾"里,充个数.比如这篇文章,我将会谈谈如何用 hostapd 和 dnsmasq 建立 WiFi 热点,并使用 Wireshark 进行抓包.
所以还是忍不住先写一点废话.
关于这个问题,我很早以前就研究过,那时候我还不是社长.现在作为社长,肯定有很多次的社团活动都需要我主讲,所以就派上用场了.3 月 22 日是我社本学期第二次社团活动,在之前的一个周末里,我进行了一些准备.
其实首先做的是把社团的网站迁移到一个免费空间上.上一篇文章中提到,我社网站当时临时放在我自己的服务器上.找到了一家还算可靠的免费空间,把文件和数据库备份,再传上去,还算顺利.之后用 CloudXNS 做了域名解析,目前访问没有问题.
然后周日下午,回学校之前,终于开始了实质性的研究.思路是用 hostapd 和 dnsmasq 建立一个公共的 WiFi 热点,待有人上钩后使用 Wireshark 对这个热点传输的数据进行窃听.因为内容比较庞大(借助 dnsmasq 还可实现 DNS 劫持之类的),计划是讲两到三次课(我很讨厌用"课"这个字,毕竟这是社团,然而确实词穷).这一次先讲比较基础的建立热点和简单的窃听.
安装(以下所有命令均针对 Fedora)
sudo dnf install hostapd sudo dnf install dnsmasq
二者的配置文件分别在/etc/hostapd/hostapd.conf
和/etc/dnsmasq.conf
.假设为 DHCP 服务指定分配的 IP 地址是 192.168.50.x ,本机在局域网中是 192.168.50.1 .
避免 SELinux 屁事多,还需要
setenforce 0
开启内核的网络数据转发支持(好像必须在 root 账户下运行)
sudo su echo 1 >/proc/sys/net/ipv4/ip_forward
接入点设置
ifconfig wlp3s0 192.168.50.1 netmask 255.255.255.0 up
在/etc/NetworkManager/NetworkManager.conf
中把所用的无线网卡设定为未托管状态.
启动服务
systemctl start hostapd.service systemctl start dnsmasq.service
流量转发.因为我用的是电信的 3G 无线网卡,所以转发的网卡是 ppp0, 自行更改.
sudo iptables -F sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
看似简单的几句代码,当时花了不少时间.不得不说网上乱飞的那些教程质量真的参差不齐,绕了不少弯路.遇到的主要困难是,有 WiFi 信号了连不上,连上了却上不了网.查了不少资料才解决.当时用自己建立的热点,终于能上网的时候,真的是兴奋地要吼出来.
然后就是 Wireshark 部分了.简单想了想,有 4 项演示内容.首先最简单的,用被攻击者的设备访问一个网页,在攻击者的设备上获取到这一网页的 URL.然后通过http contains "jpg"
之类的过滤条件,查看到被攻击者在网上浏览的图片.然后是对登录页面的用户名和密码的窃取(仅 HTTP 页面).这两项在被攻击者的电脑上进行.然后考虑到 315 晚会好像演示了通过免费 WiFi 窃取现场观众手机 APP 里的隐私信息(虽然我感觉那些观众都是托),我也可以现场用手机进行演示.目标定位百度地图(窃取被攻击者搜索的地点)和网易云音乐(窃取被攻击者播放的歌曲,使用http contains "mp3"
过滤条件,歌曲定为某皮革厂倒闭那首歌).这 4 项内容我自己都尝试过.
因为时间无比紧迫,本来想准备更有趣的内容的,还是算了(其实这样已经很有趣了).
然后带着电脑去了学校.
社团活动是在周二,周一晚上在寝室突然想到要测试一下,于是打开电脑.逐个运行命令,还真的发现问题了, ifconfig 命令因为 RFKill 的原因无法运行.还好有惊无险,很快找到了解决办法
rfkill list rfkill unblock 2
(第二句的参数 2 根据第一句的返回而定)
然后去隔壁寝室借手机测试,热点可以正常连接.当时隔壁的土豪室友正在用 MacBook 看肾果新品发布会直播.
妈的这垃圾学校晚上学生玩电脑也不管管,吃枣药丸.
第二天赶紧的吃了午饭跑回寝室拿电脑又跑去机房(后来听同学说那两天学校为了迎检愣是有 5 个菜,劳资一脸懵逼:蛤?我 tm 只吃到 3 个).开始之前还瞎 BB 了会我们社团的目标和立场,建立的初衷,以及我对于在社团活动时玩游戏的反对.当时还做了个民主的调查,问以后的活动地点是在机房还是教室(教室没法玩游戏,自然有益于社团风气),结果 tm 异口同声"机房",简直日狗.
然后开始讲解.还算顺利.然而我遇到的最大困难居然是我从未考虑过的:网速!学校的信号本来就不好,被攻击者的设备要么打不开网页,要么就啥都加载不出来.不过在如此艰苦的条件下,演示还算是成功的.被攻击者访问的网页,浏览的图片,甚至登录时用的用户名密码,全都成功截获.不过百度地图这方面遇到一些问题(版本跟我当初测试的版本不同,而且数据包暴多,根本找不到),遂放弃.最后是网易云音乐,倒是很顺利地拿到了被攻击者播放的音乐的 URL, 并在我的电脑上播放出.嗯,黄鹤你不是人,黄鹤你王八蛋.
这次的社团活动还是不错的.然而结束后,几位社员跑来告诉我,啥都没听懂,卧槽.看来以后讲解还要再仔细一些,此外我社一直以来的招新策略,我想了下,可能确实有问题.目前社团的现状是小白太多,致使讲解时不得不考虑这部分人的水平,另外社员的参与程度也几乎为0(理想的状态是每个社员都来讲台上分享自己的研究成果,而不是只有社长在上面讲).此外,社员玩游戏的问题也确实严重,最近在与老社长交流,自己也在思考,寻找这个问题的解决办法.
以上.
你看,我写的技术类文章就是这么水.