IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> pyshark 对http请求头进行简单特征提取 -> 正文阅读

[网络协议]pyshark 对http请求头进行简单特征提取

这里我们简单的对http头部进行一个分析。
网络3层或4层的流量特征是指从网络流量中提取的一些网络流量的基本特征数据,比如流量的大小、包长的信息、协议的信息、端口流量的信息、TCP 标志位的信息等。我们常常需要对明文的应用层流量做分析,来获得更丰富的流量信息。最常用的应用层协议是HTTP。

HTTP请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息。下面这个网址提供了80端口和443端口的pcap网络流量包。SUEE1.pcap和SUEE8.pcap。https://github.com/vs-uulm/2017-SUEE-data-set。其中80端口是明文的HTTP流量,443端口是加密的HTTPS流量。
本次我们通过python编程从 SUEE1.zip流量包中,从80端口明文流量提取如下的HTTP请求头的关键字段,填入csv文件。
常见的http头关键字段包括:
1、Request Method
这个字段主要为GET、POST
2、Requet URI
请求的内容URI,比如GET /article/content/11/2/6286333707121934593/6286336064873300482/1/?version_code=5.4.5&app_name=news_article&vid=A6A279D2-3AC8-4D89-A6B4-DA8012CB3A27&device_id=14584054318&channel=App%20Store&resolution=750*1334&aid=13&ab_vers。
3、Host(发送请求时,该报头域是必需的)
作用: 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的
例如: 我们在浏览器中输入:http://www.hzau.edu.cn
浏览器发送的请求消息中,就会包含Host请求报头域,如下:
Host:www.hzau.edu.cn
此处使用缺省端口号80,若指定了端口号,则变成:Host:指定端口号
4、Referer
当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
5、User-Agent
作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。

代码如下

import pyshark
import pandas as pd
import os
import glob
#'field_names', 'get', 'get_field', 'get_field_by_showname', 'get_field_value', 'host', 'layer_name', 'pretty_print', 'raw_mode', 'referer', 'request', 'request_full_uri', 'request_line', 'request_method', 'request_number', 'request_uri', 'request_version', 'user_agent'
class net_flow(object):
    def __init__(self,fp):
        self.cap=pyshark.FileCapture(fp,display_filter="http")
    def get_http_head(self,num=None):
        for index, pkt in enumerate(self.cap):

            #print(pkt.http.referer)
            Request_Method=pkt.http.request_method
            Request_URI=pkt.http.request_full_uri
            Host=pkt.http.host
            Referer=pkt.http.referer
            User_Agent=pkt.http.user_agent
            if num:  # 如果指定num=100,则只会输出100个流
                if index > num:
                    return [Request_Method,Request_URI,Host,Referer,User_Agent]
            yield [Request_Method,Request_URI,Host,Referer,User_Agent]

if __name__ == '__main__':
    try:
        pcap_file = "SUEE1.pcap"
        net_flow = net_flow(pcap_file)
        http_head=net_flow.get_http_head();
        with open("test.csv", 'a') as f:  # 将提取出的特征组保存起来
            f.write("Request Method,Request URI,Host,Referer,User Agent\r")
            for http_head_item in http_head:
                write_str = ",".join(http_head_item)
                f.write(write_str + "\r")
            f.close()
    except Exception as e:
        print(e)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 15:11:36  更:2021-10-02 15:12:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:20:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码