GithubHelp home page GithubHelp logo

tcpxm's Introduction

##tcpxm 基于pylibcap的抓包工具

原理

  • python开发,调用pylibcap进行抓包
  • 3个线程:一个负责抓包并分析内容,一个负责写日志,一个用来清除过期数据

使用tcpdump抓取的数据还需要2次分析,tcpxm可以很方便的抓取和分析tcp请求,打印成需求的日志形式。

我们用它来抓取和分析米聊用户登陆时间,当然可以用它来抓取微信或网站访问等时间,计算用户建立TCP链接时间,第一次发包时间等等

打印的日志类似如下格式: 2012-09-13 21:25:25 tcpxm.py [line:229] [INFO] 221.179.36.189:3103->xxx.xxx.xxx.xx:2424 [usr:54298295] [login(t6-t0+rtt):2760] [t1:0] [rtt:217] [t3:137] [t4:0] [t5:118] [t6:2069] [t7:193]

Login Time = t6(发送<success>的时间) - t0(收到SYN的时间) + rtt(估算出的收到SYN包和发送ACK包的路径时间)

具体每个t代表的时间含义如下,日志中的t3 = T3 – T2, t4 = T4 – T3, rrt(t2) = T2 – T1 ,……

图片

安装

git clone git://github.com/xiaomi-sa/tcpxm.git

#安装pylibcap
cd tcpxm/lib/pylibpcap-0.6.4 && sudo python setup.py install

启动

sudo ./tcpxm.py -i eth0 -f "port 80 and not host ip1 and not host ip2“ 具体filter参考pcap man 7 pcap-filter

测试

因为还没有做成可配置,所以代码里面是抓取米聊login时间,匹配到<success/>后完成一次tcp请求的记录。

测试时,可以修改成DEBUG模式,它匹配到Content-Type,完成一次记录

步骤

  1. 修改tcpxm.py中DEBUG = True
  2. 启动一个简单的twisted web, sudo twistd web --path=/home/work/tcpxm/ -p 80, 在浏览器中使用ip访问本机80端口,默认会展现tcpxm/index.html
  3. 启动tcpxm sudo ./tcpxm.py -i eth0 -f "port 80“ ,访问http页面,查看log/日志记录

抓包本地http 80的 tcp访问

联系

siyu#xiaomi.com

tcpxm's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.