一直想在自己电脑上玩玩局域网hacking,于是从最简单的arp获取他人流量,查看他人聊天图片开始;

0x01 前言

其实也就是ettercap+driftnet组合的一个效果,网上有前辈已经给出了教程:
同一局域网环境下的arp欺骗和中间人攻击(mac)

这篇目前基本都可以照着实现,但有一点,port去掉了driftnet包,导致我们不能通过MacPorts来直接安装driftnet。

0x02 编译driftnet

GitHub:https://github.com/deiv/driftnet/
看作者给出的说明中写到:

To compile, generate the needed autotools files with autoreconf -fi (you probably need to install autotools) then run ./configure; make; make install. Driftnet is at a very early stage of development and probably won't work for you at all.

归纳下来,就是我们需要先在Mac上安装autotools,安装方法是通过MacPorts来安装。

  1. 下载并安装MacPorts(官网即可)
  2. 依次执行以下命令:
sudo port install M4
sudo port install autoconf 
sudo port install automake 

然后开始编译:

autoreconf -fi
./configure
make 
make install

然而这里有坑,直接编译是行不通的。这里我看了issue并请教了回答的大牛,总结下大牛给出的解决方案:

  1. ./configure之前需要确保libpcap、libjpeg、libungif、libpng已经安装,方法是通过brew安装
  2. make之前需要做的是:(这里直接截取https://github.com/deiv/driftnet/issues/7)
change src/layer2.c:12 <netinet/ether.h> to <netinet/if_ether.h>
or just run sudo ln -s /usr/include/netinet/if_ether.h /usr/include/netinet/ether.h

insert these lines to the top of src/config.h
#ifndef _FUCK_ETHER__
#define _FUCK_ETHER__
#define ETH_ALEN 6 
#define ETH_HLAN 14 
#define ETH_ZLEN 60 
#define ETH_DATA_LEN 1500 
#define ETH_FRAME_LEN 1514 
#define ETH_FCS_LEN 4  
#define ETH_P_IP 0x0800
#define ETH_P_IPV6 0x86DD
#define ETH_P_ARP 0x0806
#define ETH_P_PAE 0x888E

struct ethhdr
{
    unsigned char h_dest[ETH_ALEN];
    unsigned char h_source[ETH_ALEN];
    unsigned short h_proto;
}__attribute__((packed));
#endif
  1. 这个时候按道理来说可以直接make编译了,但是我电脑又出现了新的问题:
    201051936C676FC0F023D0AEB0E05F04.jpg
    各种头文件找不到,其实都已经存在电脑中了,想想应该是环境变量的问题,怎么改都改不掉,最后只能通过一个个映射的方式了:
    ln -s /usr/local/Cellar/glib/2.54.0/include/glib-2.0/ /usr/local/include/glib-2.0

(ps: 缺什么映射什么……)

  1. 成功编译后安装:make install 基本没问题。安装成功后直接运行driftnet出现错误:
    2872D462144C36F0481C02C03A18255A.jpg
    @inu1255 大师傅说这个的确存在问题,运行driftnet -a即可。

0x03 小结

感谢@inu1255 大师傅提供的帮助,dritfnet挺好玩的,但是Mac系统下编译并不顺畅。最后附一张结果图吧:
QQ20170928-192013.png