精华内容
下载资源
问答
  • python 进行抓包嗅探

    2017-12-23 02:09:00
    于是今天学习了一下如何使用Python抓包并进行解包。 首先要用到两个模块 dpkt(我这边ubuntu16.04 LTS)Python2.7中默认安装的 pcap安装 1 pip install pypcap 然后来说一下,pypcap主要用来抓包或者说是...

    一、绪论

    最近一直想弄一个代理,并且对数据包进行解读,从而完成来往流量的嗅探。于是今天学习了一下如何使用Python抓包并进行解包。

    首先要用到两个模块

    dpkt(我这边ubuntu16.04 LTS)Python2.7中默认安装的

    pcap安装

    1 pip install pypcap

    然后来说一下,pypcap主要用来抓包或者说是sniffer的,dpkt用来解包的,我对dpkt的认知是解包传输层以及传输层一下的数据比较不错,但是对于应用层数据的解读就是渣渣。尤其是HTTP,所以HTTP部分解包,是我自己重写的,并没有使用dpkt.http.Request和dpkt.http.Response。(总他妈报错).

    二、目前做到:

    (1)正常解码请求和响应数据包。

    (2)对于长连接传输数据的数据包解读失败。

    三、先来讲抓包

     1 import pcap
     2 import dpkt
     3 
     4 sniffer = pcap.pcap(name="eth1")   #name parameter => interface name
     5 sniffer.setfilter("tcp")                         #filter sentence
     6 for packet_time packet_data in sniifer:
     7     pass
     8 
     9 # packet_time  => packet receive time
    10 # packet_data  => ethernet level data

    四、解包:

    1 packet = dpkt.ethernet.Ethernet(pdata)#二层数据报文嘛
    2 print "SRC IP:%d.%d.%d.%d"%tuple(map(ord,list(packet.data.src)))
    3 print "DST IP:%d.%d.%d.%d"%tuple(map(ord,list(packet.data.dst)))
    4 print "SRC PORT:%s"%packet.data.data.sport
    5 print "DST PORT:%s"%packet.data.data.dport

    五、HTTP部分是我自己解的包:

     1 def http_request_analyst(string):
     2         string = string[1:-1]
     3         method = string.split(" ")[0]
     4         print "Method:",method
     5         path = string.split(" ")[1]
     6         print "Path:",urllib.unquote(path)
     7         protover = string.split(" ")[2].split("\\r\\n")[0]
     8         print "Protocol Version:",protover
     9         headers = string.split("\\r\\n\\r\\n")[0].split("\\r\\n")[1:]
    10         print "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
    11         print "Header:"
    12         for header in headers:
    13                 header = header.split(":")
    14                 try:
    15                         hstr = "%s:%s"%(str(header[0]),str(header[1])) if header[0] not in ["Referer"] else "%s:%s:%s"%(str(header[0]),str(header[1]),str(header[2]))
    16                 except Exception,ex:
    17                         print "[*]",ex
    18                         print header
    19                         raw_input()
    20                 print hstr
    21         print "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
    22         print "Data:",string.split("\\r\\n")[-1]
     1 def http_response_analyst(string):
     2         string = string[1:-1]
     3         protover = string.split(" ")[0]
     4         print "Protocol Version:",protover
     5         status_code = string.split(" ")[1]
     6         print "Response Code:",status_code
     7         status_string = string.split(" ")[2].split("\\r\\n")[0]
     8         print "Reposne String:",status_string
     9         headers = string.split("\\r\\n\\r\\n")[0].split("\\r\\n")[1:]
    10         print repr(headers)
    11         print repr(string)
    12         print "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
    13         print "Header:"
    14         for header in headers:
    15                 header = header.split(":")
    16                 try:
    17                         hstr = "%s:%s"%(str(header[0]),str(header[1])) if header[0] not in ["Referer"] else "%s:%s:%s"%(str(header[0]),str(header[1]),str(header[2]))
    18                 except Exception,ex:
    19                         print "[*]",ex
    20                         print header
    21                         raw_input()
    22                 print hstr
    23         print "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
    24         print "Data:",string.split("\\r\\n")[-1]

    六、效果如图了:

     

    转载于:https://www.cnblogs.com/KevinGeorge/p/8088915.html

    展开全文
  • # 导入selenium模块中的web引擎 from selenium import webdriver from selenium.webdriver.chrome.options import Options from pyquery import PyQuery as pq # 时间 下载工具 import time, wget, os class ...
    # 导入selenium模块中的web引擎
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from pyquery import PyQuery as pq
    # 时间 下载工具包
    import time, wget, os
    
    
    class Network(object):
        def __init__(self, url, seconds=10):
            # 这个是一个用来控制chrome以无界面模式打开的浏览器
            # 创建一个参数对象,用来控制chrome以无界面的方式打开
            options = Options()
            options.add_experimental_option('excludeSwitches', ['enable-automation'])
            options.add_argument('--headless')  # 设置Chrome为无头模式
            options.add_argument('--no-sandbox')
            options.add_argument('--disable-dev-shm-usage')
            options.add_argument('blink-settings=imagesEnabled=false')
            options.add_argument('--disable-gpu')
            # 建立浏览器对象 ,通过Phantomjs
            self.browser = webdriver.Chrome(options=options)
            self.url = url
            # 发起请求
            self.browser.get(url)
            time.sleep(3)  # 等待3s
            # 等待一定时间,让js脚本加载完毕
            self.browser.implicitly_wait(seconds)  # seconds 隐式等待
    
            # 静态文件,图片地址
            cur_dir = os.path.split(os.path.realpath(__file__))[0]
            self.static_src = os.path.abspath(cur_dir + '/./../static/')
    
            # 常用变量 页面源码,挂载在jq上
            self.JQuery = pq(self.browser.page_source)
    
        # 浏览器器对象
        def bom(self):
            return self.browser
    
        # 关闭浏览器
        def close_browser(self):
            self.browser.quit()
    
        # 模拟浏览器抓取数据主业务 重构 返回浏览器对象
        def main(self, url='', seconds=20):
            # 访问url
            if url == '':
                url = self.url
    
            self.browser.get(url)
            time.sleep(3)  # 等待3s
            # 等待一定时间,让js脚本加载完毕
            self.browser.implicitly_wait(seconds)  # seconds 隐式等待
            #页面源码 页面源码,挂载在jq上
            self.JQuery = pq(self.browser.page_source)
            return self.browser
    
        # 如果列表的长度为1强制转换为字典
        def list_or_dict(self, arr):
            if len(arr) == 1:
                return arr[0]
            else:
                return arr
    
        # 通过tagName获取对象
        def tag_name(self, tag_name):
            return self.list_or_dict(self.browser.find_elements_by_tag_name(tag_name))
    
        # 通过id获取对象
        def id(self, id):
            return self.browser.find_element_by_id(id)
    
        # 通过className 获取对象
        def class_name(self, class_name):
            return self.list_or_dict(self.browser.find_elements_by_class_name(class_name))
    
        # 通过a标签href属性获取对象 用链接文本定位超链接
        def href_name(self, href_name):
            return self.list_or_dict(self.browser.find_elements_by_partial_link_text(href_name))
    
        # css选择器定位
        def css_selector(self, css_selector):
            return self.list_or_dict(self.browser.find_elements_by_css_selector(css_selector))
    
        # find 定位选择
        def find(self, element, name):
            if element.find_elements_by_css_selector(name):
                return element.find_elements_by_css_selector(name)
    
        # 获取元素的属性
        def attr(self, element, attr_name):
            if isinstance(element, list):
                arr = []
                for e in element:
                    arr.append(e.get_attribute(attr_name))
                return arr
            else:
                return element.get_attribute(attr_name)
    
        # 获取元素的文本
        def text(self, element):
            if isinstance(element, list):
                arr = []
                for e in element:
                    arr.append(e.text)
                return arr
            else:
                return element.text
    
        # 获取页面body数据
        def get_body(self):
            # 返回body对象
            return self.tag_name('body')[0]
    
        # 下载文件,图片等
        def download(self, urls, dir=''):
            # 判断url的数据属性
            if isinstance(urls, list):
                for url in urls:
                    # 下载文件参数 文件url 保存的地址
                    f_name = url.split('/')[-1]
                    if dir != '':
                        wget.download(url, os.path.abspath(dir + '/' + f_name))
                    else:
                        wget.download(url, os.path.abspath(self.static_src + '/' + f_name))
            else:
                # 下载文件参数 文件url 保存的地址
                f_name = urls.split('/')[-1]
                if dir != '':
                    wget.download(urls, os.path.abspath(dir + '/' + f_name))
                else:
                    wget.download(urls, os.path.abspath(self.static_src + '/' + f_name))
            return True
    

    # 调用

     

    # 设置访问的url
    url = "https://www.runoob.com/python3/python3-namespace-scope.html"
    # 初始化实例
    net = Network(url)
    
    ths=net.JQuery.find('.table_wrapper-table thead th').items()
    trs=net.JQuery.find('.table_wrapper-table tbody tr')
    trs_len=trs.length
    # 临时变量 存储 key名称
    展开全文
  • 当然了,最牛逼的还是要数: 测试 原来没有配置是这个样子: 配置之后,点击左上角的扫把图标清空目前的列表,重新抓包: 可以看到成功了 三、Charles配置手机端(设置手机HTTP代理) 下载夜神模拟器:...

    Charles下载地址:Charles官网

    在这里插入图片描述
    点击下载:( 注册:charles
    在这里插入图片描述

    一、配置代理

    点击 Proxy->Proxy Settings,勾选成图中所示,点击OK

    在这里插入图片描述
    二、配置HTTPS
    如果没有配置HTTPS,点击抓取的网页是乱码,因为被加密了,所以需要配置HTTPS,使网页可以明文显示

    未配置https,网站下显示unknow,contents显示乱码:

    在这里插入图片描述

    1. 配置SSL证书:
      点击help->SSL Proxying->Install Charles Root Certificate

      在这里插入图片描述

      如图,对于初次安装的用户,会显示如下:
      在这里插入图片描述
      点击安装证书

      在这里插入图片描述

      点击下一步,初次安装的用户,需要将证书安装到受信任的根证书颁发机构

      在这里插入图片描述

      点击下一步,点击完成:

      在这里插入图片描述
      导入成功之后,重启Charles,在点击安装证书,就正常显示了

      在这里插入图片描述

    2. 配置代理端口

      配置完上述证书之后,可能还会出现乱码,需要配置代理端口。
      点击Proxy -> SSL Proxying Settings

      在这里插入图片描述
      点击Enable SSL Proxying 启用代理

      在这里插入图片描述
      点击Add添加https端口号(443)

      在这里插入图片描述
      在这里插入图片描述
      点击OK。

      当然了,最牛逼的还是要数:

      在这里插入图片描述

    3. 测试

      原来没有配置是这个样子:
      在这里插入图片描述
      配置之后,点击左上角的扫把图标清空目前的列表,重新抓包:
      在这里插入图片描述
      可以看到成功了

    三、Charles配置手机端(设置手机HTTP代理)

    1. 下载夜神模拟器:https://www.yeshen.com/ 并安装

    2. 安装成功后如图:
      在这里插入图片描述

    3. 配置wifi
      点击 系统应用->设置

      在这里插入图片描述
      点击WLAN

      在这里插入图片描述
      长按wifi选项,选择修改网络:

      在这里插入图片描述
      点击高级选项:

      在这里插入图片描述

      点击代理,选择,手动

      在这里插入图片描述

      显示如图:

      在这里插入图片描述

      这时,在windows的cmd下,查看本机的ip地址:

      在这里插入图片描述
      在Charles中查看一开始设置的代理端口号,点击Proxy->Proxy Settings

      在这里插入图片描述
      以上,配置代理服务器的IP和端口号都有了,填入,并点击保存。:

      在这里插入图片描述

    4. 测试Charles是否可以抓包手机端

      点开浏览器,这时会显示:

      在这里插入图片描述
      点击Allow,进行上网。

      下载时光网专业版:时光网apk,注意要下载apk版,不要下载exe版

      下载完成后,将apk拖入模拟器中。模拟器自动进行安装。安装成功后点击进入,这时有的需要更新,可以选择取消不更新

      在这里插入图片描述

      点开后:
      在这里插入图片描述
      可以看到网速太卡了…但是已经渲染出电影名字了。按理来说Charles应该已经抓到了。

      在Charles里面按 ctrl +f 进行搜索,如:盗梦空间

    在这里插入图片描述
    可以看到已经抓到了

    找到对应的网络地址:

    在这里插入图片描述
    将URL粘贴进入浏览器访问:
    在这里插入图片描述
    可以看到一堆电影信息。至此测试完毕

    展开全文
  • mitmproxy工程工具,主要包含了3个组件 mitmproxy:拦截的http(s)记录控制台显示 【window不支持】 mitmdump:命令行接口,可以对接python脚本,通过脚本实现监听后的处理,可定制个人需求 mitmweb:web形式...

    一.介绍

    中间人代理可以理解成和中间件差不多

    mitmproxy工程工具包,主要包含了3个组件

    • mitmproxy:拦截的http(s)记录控制台显示 【window不支持】
    • mitmdump:命令行接口,可以对接python脚本,通过脚本实现监听后的处理,可定制个人需求
    • mitmweb:web形式展示
    
    推荐Python大牛在线分享技术 扣qun:855408893
    
    领域:web开发,爬虫,数据分析,数据挖掘,人工智能
    
    零基础到项目实战,7天学习上手做项目
    
    

    二.安装

    pip3 install mitmproxy

    三.使用

    手机要和电脑关联上

    • cmd运行IPconfig获取本机IPve地址
    • 浏览器输入本就地址:8080也就是mitmproxy的地址

    如果是pc 端关联原理也一样代理设置用mitmproxy的地址

    因为我是window所以我不怎么用mitmproxy

    mitmdump的使用

    其他我是平时不怎么用就不写啦

    • 截获的数据保存到文件中mitmdump -w 文件路径

    • 执行python脚本mitmdump -s 脚本路径

      脚本里面代码

      def request(flow):
          flow.request.headers['User-Agent'] = 'MitmProxy'
          print(flow.request.headers)
      
      #request()方法
      #参数为flow,HTTPFlow对象
      #request属性即可获取到当前请求对象,我们可以随意修改request对象的相关资料
      
    展开全文
  • 基于这个目的,希望开发一个Python工具,可以先描述抓包规则,然后开始进行请求,最后可以得到所有的har文件或者直接httprunner的case文件。 以上为这个工具的想法,目前(2020-11-17)还没进行开发。准备后续一段...
  • python结合mitmproxy抓包实践

    千次阅读 2019-09-23 23:06:33
    mitmproxy简介 mitmproxy(man-in-the-middle attack proxy),中间人攻击工具...mitmproxy 基于Python开发,可以通过Python代码对请求和响应进行自定义过滤和修改。 对应其安装,可以到其官网(https://www.mitmpr...
  • 如果你习惯于用python3,数据包的分析完全可以放在3下面做,因为抓包和分析是两个完全独立的过程。 需要的python包:scapy和dpkt 抓包代码: from scapy.sendrecv import sniff from scapy.utils import wrpcap ...
  • 自动打卡脚本(burpsuite抓包+python

    千次阅读 2020-07-15 06:59:30
    输入账号密码,同时抓包,可以看到发送的post请求 放包后看响应,发现了两个看上去有用的东西ptopid和sid 按照http的无状态性,服务器应该就是靠这两个东西判断身份的 尝试修改两个的值,发现修改sid后无影响,...
  • python 抓包保存为pcap文件并解析

    万次阅读 2015-12-20 17:35:55
    首先是抓包,使用scapy模块, sniff()函数 在其中参数为本地文件路径时,操作为打开本地文件 若参数为BPF过滤规则和回调函数,则进行Sniff,回调函数用于对Sniff到的数据包进行处理 import os from scapy.all...
  • Python爬虫实战抓包分析视频评论

    千次阅读 2020-04-04 21:51:20
    本文介绍了抓包分析工具Fiddler的使用,以及用这个工具来辅助分析抓取腾讯视频评论数据的实战。
  • 常见的抓包工具1. Fiddler:Fiddler是一款免费且功能强大的数据包抓取软件,主要用于抓取HTTP/HTTPS协议,简单易用目前主流的版本是Fiddler4,最新版本已经到了Fiddler5。2. Charles:这是一款在Mac下常用的抓包...
  • 1. 使用scapy ,但是这个在macos上安装比较麻烦,没有多试 2. 使用pypcap, 这个相对上手容易 1 #coding:utf8 2 __author__ = 'yeyong' 3 import dpkt ... 6 sniffer = pcap.pcap(name="en0") #name parameter ...
  • 利用Charles+Python抓包获取App数据

    千次阅读 2018-07-21 14:17:50
    所以同事让我帮忙尝试抓包. 利用Charles打开以后. 发现有些json的URL是可以直接打开. 这种是最舒服的. 并且,手动调整offlet和limit就可以爬完了. 而有些是打不开的. 并且显示 {"message":"...
  • 说起Python爬虫,很多人第一个反应可能会是Scrapy或者Pyspider,但是今天文章里用到是Python下一个叫Mitmproxy的抓包工具,对付一些非常规的数据获取还是很有效的。 不过凡事都是有利有弊,一来麻烦,二来呢不会...
  • 为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始。 结合抓包工具讲http协议更容易学一些...fiddler是一个很好的抓包工具,默认是抓htt...
  • Python下的网络抓包

    千次阅读 2015-01-23 12:46:41
    一直以来对于Python下的网络抓包库很疑惑,搞不清楚pylibpcap、pypcap、pycap这些库之间是什么关系,混沌了很长时间,在网上G了很久慢慢搞清楚了,其实这些都是libpcap的Python绑定实现,libpcap才是真正的核心。...
  • 各个站点的水情信息,选好条件后查询,每个站点的信息大概有2000多页,之前写了一个Python程序(通过httplib,pyquery)可以自动下载这些数据。但问题是:比如要下载宜昌站的数据,点击查询后进入详情页即‘...HeDao...
  • 上海悠悠python接口自动化测试第二期视频教程价值16002018年2月第1课-http协议上 .mp4第1课-http协议下.mp4第2课-fiddler抓包与测试上.mp4第2课-fiddler抓包与测试下.mp4第3课-requests上.mp4第3课-requests下.mp4第...
  • Python自动化测试/开发教程,全栈自动化教学课程,接口测试,面试训练营,抓包工具的使用编程基础都会有讲到,软件测试,与你同行!
  • Python 爬虫,推荐一款简单的抓包工具(续)

    千次阅读 多人点赞 2020-12-08 12:03:00
    点击上方“AirPython”,选择“加为星标”第一时间关注 Python 原创干货!1. 前言上篇文章发布之后,有小伙伴后台私信我,说文章只涉及到手机端的抓包,对于浏览器上的抓包,他还...
  • 上次我们教大家如何使用httpwatch来进行抓包,其实这不重要,重要的是如何使用获得的数据包,你能读懂数据包吗?好吧,我们今天就是用python来示范一下如何使用数据包。 先来设置两个url地址,第...
  • 本篇文章介绍一种通过抓包的形式来获取公众号文章,主要是抓包PC端的微信公众号文章,比较容易上手,只要用过抓包软件一般都不难的。这里使用Fiddler 4抓包软件,很常用的一款软件,也满足我们的要求了。 准备工作 -...
  • 计算机网络实验(三)之Wireshark抓包分析-python实现http分析计算机网络试验三实验内容1.实验步骤1.1 基本HTTP GET/response交互1.2 HTTP条件Get/response交互1.3HTTP条件认证实验要求实验作答-代码实现分析版本一...
  • 点击上方“AirPython”,选择“加为星标”第一时间关注 Python 原创干货!1. 前言传统的抓包工具, 如:Fiddler、Charles、Wireshark、Tcpdump,...
  • ![浏览器中请求]...其实就是想快速的评论,如果用selenium + phantomjs 也可以到评论,但是太慢了。 如果能自动拿到这些信息或者链接的话,就可以分析了,有什么方法吗??
  • 前段时间 写了个自动跑monkey的工具,当monkey测试出闪退问题时,我希望他能自动提交bug 到redmine,提交到redmine 需要有日志和截屏给开发查看问题。.../usr/bin/env python # coding=utf-8 import os import zip
  • python自动执行脚本

    千次阅读 2017-04-15 23:18:12
    总体思路:将网页执行脚本抓包后转换成Python代码,用循环自动执行代码 1、抓包: F12打开浏览器抓包,点执行按钮,network copy curl  2、curl转换成Python curl转换Python网址:https://curl.trillworks.com/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,453
精华内容 7,781
关键字:

python自动抓包

python 订阅