Wireshark插件开发

第一章:Wireshark基础及捕获技巧
1.1 Wireshark基础知识回顾
1.2 高级捕获技巧:过滤器和捕获选项
1.3 Wireshark与其他抓包工具的比较

第二章:网络协议分析
2.1 网络协议分析:TCP、UDP、ICMP等
2.2 高级协议分析:HTTP、DNS、SSH等
2.3 高级协议分析:VoIP、视频流嗅探等

第三章:Wireshark插件开发
3.1使用Lua编写自定义插件
3.2使用Python编写自定义插件
3.3使用C编写自定义插件

第四章:Wireshark统计和可视化
4.1使用Wireshark进行网络流量分析
4.2使用Wireshark进行网络性能分析
4.3使用Wireshark进行网络安全分析

第五章:高级网络安全分析
5.1检测和分析网络攻击
5.2检测和分析网络威胁
5.3 使用Wireshark进行入侵检测和响应

第六章:Wireshark与其他工具的整合
6.1使用Wireshark与Nmap、Metasploit等工具进行综合渗透测试
6.2使用Wireshark与ELK、Zeek等工具进行网络分析

第七章:Wireshark在网络性能调优中的应用
7.1如何使用Wireshark诊断网络性能问题
7.2如何使用Wireshark优化网络性能
7.3如何使用Wireshark进行带宽管理和流量控制

第八章:Wireshark在移动网络中的应用
8.1如何使用Wireshark进行移动网络分析
8.2如何使用Wireshark进行移动应用性能分析
8.3如何使用Wireshark进行移动安全分析

第九章:Wireshark在物联网中的应用
9.1如何使用Wireshark分析CoAP、MQTT、ZigBee等物联网协议
9.2如何使用Wireshark分析智能家居设备的通信和优化网络性能

第十章:Wireshark在云计算中的应用
10.1如何使用Wireshark分析云计算网络性能问题和优化网络性能
10.2如何使用Wireshark监控云环境的网络安全,并进行事件响应和安全审计

第三章:Wireshark插件开发
3.1使用Lua编写自定义插件
3.2使用Python编写自定义插件
3.3使用C编写自定义插件

使用Lua编写自定义插件
Wireshark是一款开源的网络协议分析工具,可以用于捕获和分析网络数据包。它支持使用插件来扩展其功能,其中最常用的插件开发语言是Lua。本文将详细介绍如何使用Lua编写自定义Wireshark插件。

一、环境准备

在开始编写Wireshark插件之前,需要确保以下环境已经准备好:

  1. Wireshark安装包

可以从Wireshark官网(https://www.wireshark.org/)下载最新版本的Wireshark安装包。

  1. Lua编程环境

可以从Lua官网(https://www.lua.org/)下载最新版本的Lua编程环境。

  1. Wireshark插件开发工具包

可以从Wireshark官网(https://www.wireshark.org/docs/wsdg_html_chunked/ChSetupWin32.html)下载Wireshark插件开发工具包。

  1. 编辑器

可以使用任何一个文本编辑器,例如Notepad++、Sublime Text等。

二、编写Lua插件

在开始编写Lua插件之前,需要了解Wireshark插件的基本结构和API。Wireshark插件的基本结构包括以下几个部分:

  1. 初始化函数

初始化函数用于在插件加载时进行一些初始化操作。在Lua中,初始化函数的名称为init。

  1. 插件描述

插件描述包括插件名称、版本号、作者等信息。

  1. 协议分析函数

协议分析函数用于对捕获的数据包进行解析和分析。在Lua中,协议分析函数的名称为dissector。

  1. 注册函数

注册函数用于注册插件,使其在Wireshark中可用。在Lua中,注册函数的名称为register。

下面将以一个简单的例子来说明如何编写Lua插件。假设我们需要编写一个插件,用于对HTTP协议进行分析,提取其中的URL信息。

  1. 创建Lua文件

首先,打开编辑器,创建一个新的Lua文件,命名为http.lua。

  1. 编写插件描述

在http.lua文件中,编写插件描述信息,包括插件名称、版本号、作者等信息。代码如下:

-- 插件描述
local plugin_info =
{name = "HTTP URL Extractor", -- 插件名称version = "1.0", -- 插件版本号author = "Your Name", -- 作者description = "Extracts URLs from HTTP packets", -- 插件描述license = "MIT License", -- 许可证
}
  1. 编写初始化函数

在http.lua文件中,编写初始化函数init,用于在插件加载时进行一些初始化操作。代码如下:

-- 初始化函数
function init()
end
  1. 编写协议分析函数

在http.lua文件中,编写协议分析函数dissector,用于对HTTP协议进行分析,并提取其中的URL信息。代码如下:

-- 协议分析函数
function dissector(buffer, pinfo, tree)-- 判断是否为HTTP协议if pinfo.proto ~= ProtoField.string("http") thenreturnend-- 获取URL信息local url = buffer(0, buffer:len()):string()-- 在协议解析树中添加URL节点local url_node = tree:add(http_proto, buffer(), "URL: " .. url)-- 设置节点的字节偏移量和长度url_node:set_text(buffer(0, buffer:len()):range().tohex())url_node:add(buffer(0, buffer:len()), "URL")-- 更新协议解析树tree:append_text(", URL: " .. url)
end
  1. 编写注册函数

在http.lua文件中,编写注册函数register,用于注册插件,使其在Wireshark中可用。代码如下:

-- 注册函数
function register()-- 注册HTTP协议http_proto = Proto("http", "HTTP Protocol")-- 注册协议字段url_field = ProtoField.string("http.url", "URL")http_proto.fields = {url_field}-- 注册协议分析函数function http_proto.dissector(buffer, pinfo, tree)dissector(buffer, pinfo, tree)end-- 向Wireshark注册协议register_postdissector(http_proto)
end
  1. 完整代码

将以上代码整合成一个完整的http.lua文件,如下所示:

-- 插件描述
local plugin_info =
{name = "HTTP URL Extractor", -- 插件名称version = "1.0", -- 插件版本号author = "Your Name", -- 作者description = "Extracts URLs from HTTP packets", -- 插件描述license = "MIT License", -- 许可证
}-- 初始化函数
function init()
end-- 协议分析函数
function dissector(buffer, pinfo, tree)-- 判断是否为HTTP协议if pinfo.proto ~= ProtoField.string("http") thenreturnend-- 获取URL信息local url = buffer(0, buffer:len()):string()-- 在协议解析树中添加URL节点local url_node = tree:add(http_proto, buffer(), "URL: " .. url)-- 设置节点的字节偏移量和长度url_node:set_text(buffer(0, buffer:len()):range().tohex())url_node:add(buffer(0, buffer:len()), "URL")-- 更新协议解析树tree:append_text(", URL: " .. url)
end-- 注册函数
function register()-- 注册HTTP协议http_proto = Proto("http", "HTTP Protocol")-- 注册协议字段url_field = ProtoField.string("http.url", "URL")http_proto.fields = {url_field}-- 注册协议分析函数function http_proto.dissector(buffer, pinfo, tree)dissector(buffer, pinfo, tree)end-- 向Wireshark注册协议register_postdissector(http_proto)
end

三、安装和使用插件

编写完Lua插件之后,需要将其安装到Wireshark中,才能使用它。

  1. 将http.lua文件复制到Wireshark插件目录中。Wireshark插件目录的位置取决于安装Wireshark时的设置,一般位于安装目录下的plugins文件夹中。

  2. 在Wireshark中打开Lua插件管理器。在菜单栏中选择“Wireshark” -> “Lua Plugins”,或者使用快捷键“Ctrl+Shift+L”。

  3. 在Lua插件管理器中,选择“Enable”选项,启用http.lua插件。

  4. 在Wireshark中,打开一个HTTP数据包,可以看到协议解析树中已经添加了URL节点。

至此,我们已经成功地编写并安装了一个简单的Lua插件,用于对HTTP协议进行分析,并提取其中的URL信息。

总结

本文介绍了如何使用Lua编写自定义Wireshark插件,包括插件的基本结构和API,以及一个简单的示例。编写Wireshark插件可以帮助我们更好地理解网络协议,提高网络分析的效率。希望本文能够对大家有所帮助。

使用Python编写自定义插件
Wireshark是一款免费的网络协议分析工具,可以用于捕获与分析网络数据包。Wireshark支持使用Lua和Python编写自定义插件,以扩展其功能。本文将介绍如何使用Python编写自定义Wireshark插件,包括插件的基本结构和API,以及一个简单的示例。

一、Wireshark插件开发概述

Wireshark插件可以扩展Wireshark的功能,包括协议解析、数据包过滤、统计分析等。Wireshark支持使用Lua和Python编写自定义插件。

Lua是Wireshark官方推荐的脚本语言,支持对数据包进行解析和修改、协议分析树的操作、输出过滤等。Lua插件的代码可以直接嵌入到Wireshark的插件管理器中,也可以通过脚本文件进行加载。

Python插件是Wireshark较新的功能,支持使用Python 3编写插件。Python插件与Lua插件类似,可以通过对数据包进行解析和修改、协议分析树的操作、输出过滤等,同时还可以使用Python提供的丰富的库和工具。

二、Python插件开发环境搭建

在使用Python编写Wireshark插件之前,需要先搭建好Python开发环境。

  1. 安装Python

Wireshark支持使用Python 3编写插件,因此需要先安装Python 3。可以从Python官方网站(https://www.python.org/downloads/)下载Python的安装包,并按照安装向导进行安装。

  1. 安装pip

pip是Python的包管理工具,可以用于安装和管理Python的第三方库。在安装完Python之后,需要先安装pip。

可以通过以下命令安装pip:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
  1. 安装pyshark库

pyshark是一个Python库,用于解析Wireshark捕获的数据包。可以使用pip安装pyshark:

pip install pyshark

安装完成后,就可以开始编写Python插件了。

三、Python插件编写示例

本文将介绍一个简单的Python插件,用于对HTTP协议进行分析,并提取其中的URL信息。该插件将解析HTTP数据包,从中提取URL信息,并将其添加到协议解析树中。

  1. 创建插件文件

首先,需要创建一个Python文件,用于编写插件代码。可以在任意位置创建一个.py文件,例如http_url_extractor.py。

  1. 导入模块和API

在Python文件的开头,需要导入pyshark模块和Wireshark的API,以便使用相关功能。

import pyshark
from wireshark import *
  1. 编写协议分析函数

接下来,需要编写一个协议分析函数,用于解析HTTP数据包并提取URL信息。可以使用pyshark模块中的HTTP协议类来解析HTTP数据包,并使用Wireshark的API将URL信息添加到协议解析树中。

def dissector(packet):# 判断是否为HTTP协议if 'http' not in packet:return# 获取URL信息url = packet.http.request_full_uri# 在协议解析树中添加URL节点url_node = TreeItem()url_node.offset = packet.http.request_full_uri_field.get_offset()url_node.length = packet.http.request_full_uri_field.get_size()url_node.text = 'URL: ' + urladd_tree_item(url_node)# 更新协议解析树update_tree()
  1. 注册协议分析函数

在编写完协议分析函数之后,需要将其注册到Wireshark中,以便在捕获数据包时自动调用。可以使用Wireshark的API注册协议分析函数,如下所示:

register_postdissector(dissector)
  1. 运行插件

完成以上步骤后,就可以运行插件了。可以通过Wireshark的插件管理器加载Python插件,或者直接在终端中运行Python文件。

例如,在终端中运行以下命令:

sudo tshark -T ek -l | python http_url_extractor.py

该命令将使用tshark命令捕获网络数据包,并以JSON格式输出。通过管道符将输出作为标准输入传递给Python插件,Python插件将解析HTTP数据包并提取URL信息,并将其添加到协议解析树中。

四、插件开发注意事项

在开发Wireshark插件时,需要注意以下事项:

  1. 插件需要继承Wireshark的API和机制,例如协议分析树、数据包过滤器等。

  2. 插件应尽可能简单和高效,以确保不会对Wireshark的性能产生负面影响。

  3. 插件应具有良好的文档和注释,以便其他开发人员能够理解和使用。

  4. 插件应遵循Wireshark的开发规范和最佳实践,以确保插件的稳定性和可靠性。

总之,Wireshark插件开发是一个有趣和有挑战性的任务,可以扩展Wireshark的功能并提高网络分析的效率。本文介绍了如何使用Python编写自定义Wireshark插件,并提供了一个简单的示例,希望能够对读者有所帮助。

使用C编写自定义插件
Wireshark是一款开源的网络协议分析工具,可以用于捕获和分析网络数据包。Wireshark支持使用C编写自定义插件,以扩展其功能。本文将介绍如何使用C编写自定义Wireshark插件,包括插件的基本结构和API,以及一个简单的示例。

一、Wireshark插件开发概述

Wireshark插件可以扩展Wireshark的功能,包括协议解析、数据包过滤、统计分析等。Wireshark支持使用C编写自定义插件,以提高插件的性能和稳定性。

C语言是一种高效和灵活的编程语言,可以直接访问内存和硬件资源。使用C编写Wireshark插件可以实现更高效的数据包处理和协议解析。

二、C插件开发环境搭建

在使用C编写Wireshark插件之前,需要先搭建好C开发环境。

  1. 安装Wireshark

Wireshark是一款开源的网络协议分析工具,可以在Windows、Mac OS X和Linux等操作系统上运行。可以从Wireshark官网下载最新版本的Wireshark,并安装到本地计算机上。

  1. 安装C编译器

C编译器是用于将C代码编译成可执行文件的工具。在Windows操作系统上,可以使用Microsoft Visual Studio或MinGW等编译器;在Linux操作系统上,可以使用gcc或clang等编译器。

  1. 设置编译环境

在编写Wireshark插件之前,需要设置好编译环境。在Windows操作系统上,可以使用Microsoft Visual Studio的集成开发环境(IDE);在Linux操作系统上,可以使用命令行界面。

设置编译环境时需要指定Wireshark的头文件和库文件路径,以便编译器可以正确地链接Wireshark库。在Windows操作系统上,可以在Visual Studio中设置头文件路径和库文件路径;在Linux操作系统上,可以在Makefile文件中设置头文件路径和库文件路径。

三、C插件基本结构

在使用C编写Wireshark插件之前,需要了解插件的基本结构和API。

  1. 插件结构

Wireshark插件的结构包括插件名称、插件类型、插件版本、插件描述、插件作者和插件初始化函数等。插件初始化函数是插件的入口函数,用于注册插件的协议解析函数、数据包过滤器和统计分析器等。

插件结构可以使用以下代码定义:

#include <epan/plugin.h>#define PLUGIN_NAME "My Plugin"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_DESC "My Wireshark plugin"
#define PLUGIN_AUTHOR "My Name"extern void plugin_register(void);void plugin_register(void) {plugin_register_protocol();plugin_register_tap();plugin_register_statistics();
}
  1. API

Wireshark插件的API包括协议解析API、数据包过滤API、统计分析API等。插件开发者可以使用这些API实现自定义功能。

协议解析API包括注册协议分析函数、添加协议字段和解析协议数据等。数据包过滤API包括注册数据包过滤器、过滤数据包和提取数据包等。统计分析API包括注册统计分析器、统计数据包信息和显示统计结果等。

以下是一些常用的API函数:

  • proto_register_field_array(): 注册协议字段
  • proto_tree_add_item(): 添加协议字段
  • proto_reg_handoff(): 注册协议分析函数
  • dissector_add_uint(): 解析整型数据
  • dissector_add_string(): 解析字符串数据
  • dissector_add_boolean(): 解析布尔
  • wmem_alloc0(): 分配内存
  • wmem_strdup(): 复制字符串
  • filter_register(): 注册数据包过滤器
  • filter_packets(): 过滤数据包
  • tap_register():注册数据包监听器
  • tap_queue_packet(): 接收并处理数据包
  • register_statistics(): 注册统计分析器
  • stat_item_add_uint():统计整型数据
  • stat_item_add_string():统计字符串数据
  • stat_item_inc_by_val():增加统计值

四、C插件开发示例

下面将介绍一个简单的C插件开发示例,该插件用于统计DNS查询次数和响应次数。

  1. 插件结构

插件结构包括插件名称、插件版本、插件描述、插件作者和插件初始化函数等。可以使用以下代码定义插件结构:

#include <epan/plugin.h>#define PLUGIN_NAME "DNS Statistic Plugin"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_DESC "A plugin for DNS statistic"
#define PLUGIN_AUTHOR "My Name"extern void plugin_register(void);void plugin_register(void) {plugin_register_statistics();
}
  1. 统计分析器

统计分析器用于统计DNS查询次数和响应次数。可以使用以下代码定义统计分析器:

#include <epan/stat_util.h>
#include <epan/packet.h>static guint dns_query_count = 0;
static guint dns_response_count = 0;static void dns_stat_init(void)
{dns_query_count = 0;dns_response_count = 0;
}static void dns_stat_cleanup(void)
{
}static void dns_stat_packet(gpointer data, const struct pcap_pkthdr *pkthdr, const guint8 *packet)
{const guint8 *payload = packet + sizeof(struct ethhdr) + sizeof(struct iphdr) + sizeof(struct udphdr);guint16 query_id = payload[0] << 8 | payload[1];guint16 flags = payload[2] << 8 | payload[3];guint16 question_count = payload[4] << 8 | payload[5];guint16 answer_count = payload[6] << 8 | payload[7];guint16 authority_count = payload[8] << 8 | payload[9];guint16 additional_count = payload[10] << 8 | payload[11];if (flags & 0x8000) {dns_response_count++;} else {dns_query_count++;}
}static const value_string dns_stat_info[] = {{ 0, "DNS Query Count" },{ 1, "DNS Response Count" },{ 0, NULL }
};static const column_info dns_stat_cols[] = {{ "DNS Statistic", COL_TYPE_STRING, COL_FLAG_NONE, { .strings = dns_stat_info } },{ NULL, COL_TYPE_NONE, 0, { NULL } }
};static void dns_stat_register(void)
{register_statistics("DNS Statistic", "dns", dns_stat_init, dns_stat_cleanup, dns_stat_packet, NULL, dns_stat_cols);
}

在上面的代码中,dns_query_countdns_response_count变量用于统计DNS查询次数和响应次数。dns_stat_init()函数用于初始化统计器,dns_stat_cleanup()函数用于清空统计器,dns_stat_packet()函数用于处理数据包,统计DNS查询次数和响应次数。

dns_stat_packet()函数中,通过解析DNS报文中的标识符(ID)和标志位(Flags)来判断报文是DNS查询报文还是DNS响应报文。如果标志位中的最高位是1,则为DNS响应报文,否则为DNS查询报文。

dns_stat_register()函数中,使用register_statistics()函数注册统计分析器,并指定统计器名称、统计器标识、初始化函数、清空函数、处理函数和列信息。

  1. 注册插件

最后,在主程序中注册插件。可以使用以下代码注册插件:

#include <epan/packet.h>
#include <epan/prefs.h>extern void plugin_register(void);void plugin_register(void)
{plugin_register_statistics();dns_stat_register();
}

在上面的代码中,plugin_register()函数中调用了plugin_register_statistics()函数和dns_stat_register()函数,用于注册统计分析器和DNS统计插件。

四、总结

本文介绍了Wireshark插件的概念和开发方法,包括Lua插件和C插件的开发方法。Lua插件开发简单,但功能有限;C插件开发需要掌握一定的C语言编程技能,但可以实现更为复杂的功能。

无论是Lua插件还是C插件,都可以为Wireshark提供更多的功能和扩展性。通过开发插件,可以快速定位和解决网络问题,提高网络分析的效率和准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/230817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年全球运维大会(GOPS深圳站)-核心PPT资料下载

一、峰会简介 1、大会背景与概述 全球运维大会&#xff08;GOPS&#xff09;是运维领域最具影响力的国际盛会&#xff0c;每年都会汇聚世界各地的运维专家、企业领袖、技术爱好者&#xff0c;共同探讨运维技术的最新发展、最佳实践以及面临的挑战。2023年GOPS深圳站作为该系列…

2023建筑行业薪资趋势?如何提高建筑设计效率呢?

12月6日&#xff0c;国外著名建筑可视化网站CGarchitect公布了其2023年建筑可视化薪资调查结果&#xff0c;详细描述了行业内的薪资趋势。 调查表明&#xff0c;占比较高的是有16.04%的年收入低于10000美元&#xff08;约71000人民币&#xff09;&#xff0c;其次是11.75%的受…

【MyBatis-Plus】多数据源分页配置(低版本暂时就支持一种(可选),高版本多支持)

【转载】一、Mybatis Plus 3.4 版本之后分页插件的变化 1、地址 Mybatis Plus 3.4版本之后分页插件的变化 2、内容 1、MybatisPlusInterceptor 从 Mybatis Plus 3.4.0 版本开始&#xff0c;不再使用旧版本的 PaginationInterceptor&#xff0c;而是使用 MybatisPlusInterce…

【C++】封装:练习案例-点和圆的关系

练习案例&#xff1a;点和圆的关系 设计一个圆形类&#xff08;Circle&#xff09;&#xff0c;和一个点类&#xff08;Point&#xff09;&#xff0c;计算点和圆的关系。 思路&#xff1a; 1&#xff09;创建点类point.h和point.cpp 2&#xff09;创建圆类circle.h和circle…

20、WEB攻防——PHP特性缺陷对比函数CTF考点CMS审计实例

文章目录 一、PHP常用过滤函数&#xff1a;1.1 与1.2 md51.3 intval1.4 strpos1.5 in_array1.6 preg_match1.7 str_replace CTFshow演示三、参考资料 一、PHP常用过滤函数&#xff1a; 1.1 与 &#xff1a;弱类型对比&#xff08;不考虑数据类型&#xff09;&#xff0c;甚至…

Java中的final关键字和static关键字

这两个关键字编写代码时会经常用&#xff0c;正确的使用这些关键字&#xff0c;可以形成良好的编程习惯&#xff0c;保护好代码的封装性。 1、final 关键字 在Java中&#xff0c;利用关键字final指示常量&#xff0c;习惯上&#xff0c;常量名使用全大写。 关键字final表示这个…

计算机网络:自顶向下第八版学习指南笔记和课后实验--运输层

记录一些学习计算机网络:自顶向下的学习笔记和心得 Github地址&#xff0c;欢迎star ⭐️⭐️⭐️⭐️⭐️ 运输层 TCP&#xff1a; 传输控制协议 报文段 UDP&#xff1a; 用户数据包协议 数据报 将主机间交付扩展到进程间交付被称为运输层的多路复用与多路分解 将运输层…

【Java】【Stream流】分组

Java实际开发中使用流会提升代码的质量&#xff0c;所以这里继续分享使用流 玩分组 import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class StreamGroupingExample { public static void main(String[] args) { List<…

深入解析C语言数组与指针:嵌套循环遍历数组

在这篇博客中&#xff0c;我们将深入探讨C语言中数组和指针的关系&#xff0c;通过一个简单的嵌套循环遍历数组的例子展示了它们的使用。 代码示例 #include <stdio.h>int main() {int arr1[] {1, 2, 3, 4, 5};int arr2[] {2, 3, 4, 5, 6};int arr3[] {3, 4, 5, 6, …

RocketMq查看消息轨迹

查看消息轨迹 1.修改配置文件 broker的启动文件加上消息轨迹相关配置 ##if msg tracing is open,the flag will be true traceTopicEnabletrue2.启动broker 使用broker-a.properties配置文件后台启动Broker。 nohup mqbroker -c /usr/local/rocketmq/rocketmq-all-4.9.1-bin…

智能五子棋1

*一、项目需求* 五子棋是一种简单的黑白棋&#xff0c;历史悠久&#xff0c;起源于中国&#xff0c;后传入日本&#xff0c;在日本被称为“连珠”&#xff0c;是一种老少皆宜的益智游戏。 人工智能五子棋系统的目标用户是一切想致力于研究人机对弈算法理论的相关研究者和一切…

使用C语言设计并实现一个成绩管理系统

使用C语言设计并实现一个成绩管理系统&#xff0c;该系统用于教师管理一门课程的成绩。 系统功能&#xff1a;成绩录入、打印成绩单、修改成绩、统计分数段、统计平均分、统计不及格学生&#xff0c;相关要求&#xff1a; 1&#xff09; 系统要有主菜单界面&#xff0c;让教师…

关于《企业数字化平台》

大家好&#xff0c;开始我们《企业数字化平台》系列栏目&#xff0c;首先做一个简短的自我介绍&#xff0c;Duster是本人现在的笔名&#xff0c;曾用笔名尘埃&#xff0c;写了本书《生活新视界》&#xff0c;如果有缘的话&#xff0c;希望您读到他&#xff0c;如果您能读懂&…

Android Stuido报错处理

仅用作报错记录。防止以后出项问题不知如何解决。 报错1 Dependency‘androidx.annotation:xx requires libraries and applications … 需要修改CompileSDKVersion更改为报错中提示的版本 打开项目build.gradle文件&#xff0c;将compileSdk和targetSdk修改为报错中提示的版…

【深入pytorch】transforms.functional 梯度流动问题

实验环境&#xff1a; torch.__version__ Out[3]: 1.12.1cu113首先测试一下&#xff1a; import torch from torchvision.transforms import functional as F from torch.autograd import Function img torch.randn(1, 3, 224, 224) startpoints torch.FloatTensor([[0., 0…

.NET Core中鉴权 Authentication Authorization

Authentication: 鉴定身份信息&#xff0c;例如用户有没有登录&#xff0c;用户基本信息 Authorization: 判定用户有没有权限 使用框架提供的Cookie鉴权方式 1.首先在服务容器注入鉴权服务和Cookie服务支持 services.AddAuthentication(options > {options.DefaultAuthe…

【性能优化】一、使用JMeter进行压力测试并进行简单调优

压力测试 压力测试不同于功能测试&#xff0c;其目的是为了测试出系统在高并发&#xff0c;高数据量的情况下可能会出现的问题&#xff08;内存泄露、并发、同步&#xff09; 一种典型的内存泄漏就是对象在创建之后由很多用户进行调用&#xff0c;导致对象被不断新建但复用率…

2020 年网络安全应急响应分析报告

2020 年全年奇安信集团安服团队共参与和处置了全国范围内 660起网络安全应急响应事件。2020 年全年应急响应处置事件行业 TOP3 分别为:政府部门行业(146 起)医疗卫生行业(90 起)以及事业单位(61 起&#xff0c;事件处置数分别占应急处置所有行业的 22.1%、13.6%、9.2%。2020 年…

防篡改、控权限,一键搞定!迅软DLP助您轻松应对企业外发风险

由于电子文档传播性强&#xff0c;政企单位在与客户或合作伙伴分享重要资料时&#xff0c;存在非法篡改和无序传播的风险。因此&#xff0c;为了保护自身利益并确保与外界的安全交流&#xff0c;对外发文件的有效安全管控变得至关重要。 迅软DLP提供了针对外发文件的严格安全管…