首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

盘点一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列

一、前言 前几天在小小明大佬的Python交流群中遇到一个粉丝问了一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列的问题,觉得还挺有用的,这里拿出来跟大家一起分享下。...后来明佬还基于WPS宏代码实现了这个需求,实在是太强了!我对宏代码实现不了解,这里发出来给大家观摩了,感兴趣的小伙伴自行学习下,如下图所示。 三、总结 大家好,我是皮皮。...这篇文章主要盘点了一个Python实现Excel中筛选数据的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...文中一共提供了三个方法,分别是使用Python,Excel公式实现,以及宏代码实现,干货满满! 最后感谢粉丝提问,感谢【小小明】大佬给出的思路和代码解析,感谢【皮皮】等人参与学习交流。

35120

MalDoc in PDF,在PDF中隐藏恶意文档并执行宏代码

多数工具识别该文件为PDF,但办公软件程序可以将其作为常规Word文档打开,若文件具有配置的宏,并且Microsoft Office上没有禁用自动执行宏的安全设置,则将运行宏代码。...首先创建带有宏的mht文件,这里写一个弹框的宏代码,另存为MHT文件。图片然后利用python的reportlab库简单创建PDF文件。...图片图片双击运行,能看到PDF被正常打开,如果打开方式是用Word程序,则会看到Word MHT也能正常打开,并且单击“启用编辑”以退出受保护的视图,能看到运行了宏代码图片图片这里有个需要注意的地方是,...利用CS生成恶意宏代码,再次生成恶意Polyglots文件,实际看看查杀情况图片简单分析MHT文件包含的VBA宏,是以ActiveMime格式存储。

48210

PowerShell若干问题的研究

/empire启动Empire报错,缺少OpenSSL 解决方法:使用pip install命令进行安装,发现pip报错,重新安装了pip sudo apt-get remove python-pip...我们以一个简单的例子对宏代码进行分析(样本文件附后[3]),这里启用宏后使用word中的开发功能VBA进行对宏代码的读取(也可使用oledump.py对宏代码进行提取)。...文档感染模板: 1.若当前文档的宏代码中有Marker标识,则当前文档被感染。 2.文档的宏代码拼接当前时间、日期、用户名、用户地址等信息存入模板宏代码中,模板被感染。...模板感染文档: 1.若当前模板的宏代码中有Marker标识,则当前模板被感染。 2.将模板的宏代码放入文档的宏代码中,文档被感染。...(三)思考 1.整个感染过程应该是以一个被感染的文档为源头,当文档传播到用户时,该用户的模板的宏代码即被替换为被感染文档的宏代码

1.5K00

对某单位的 APT 攻击样本分析

7月份对同一样本的补充截图如下: 在本次APT攻击中,攻击者通过发送鱼叉式钓鱼邮件,配合社会工程学手段诱导用户运行宏代码,进而下载尾部带有恶意payload压缩包的可执行文件。...开启宏代码的动态调试。...该宏代码作为实施攻击的入口,实现了恶意样本的下载和执行。本章也将分析下载和执行的整体流程。 解压该Office文档后,宏代码被封装在xl文件夹下的vbaProject.bin文件中。...使用OfficeMalScanner这个工具的命令info从vbaProject.bin中提取宏代码,提取完后可以知道有6个宏代码,其中fdrhfaz2osd是主要的宏代码: 动态调试分析宏代码,首先宏代码传入两个值...编写python脚本进行了字符串解密,解密后的效果如下所示: 字符串解密核心算法如下: 入口处获取主机名进行判断是否包含以下6个主机名,攻击目标是否符合: 自我复制到C:\Users\l\AppData

71400

对某单位的 APT 攻击样本分析

二.宏病毒文档的提取与调试 使用OfficeMalScanner解压Office文档并提取文档所带的vba宏代码,打开Office文档启用宏后,采用快捷键Alt+F11开启宏代码的动态调试。...该宏代码作为实施攻击的入口,实现了恶意样本的下载和执行。本章也将分析下载和执行的整体流程。 解压该Office文档后,宏代码被封装在xl文件夹下的vbaProject.bin文件中。 ? ?...使用OfficeMalScanner这个工具的命令info从vbaProject.bin中提取宏代码,提取完后可以知道有6个宏代码,其中fdrhfaz2osd是主要的宏代码: ? ?...动态调试分析宏代码,首先宏代码传入两个值u和f,分别是请求的url和写入的filepath。 ? ? ?...编写python脚本进行了字符串解密,解密后的效果如下所示: ? 字符串解密核心算法如下: ? 入口处获取主机名进行判断是否包含以下6个主机名,攻击目标是否符合: ?

1K20

【C++】内联函数 ① ( 内联函数引入 | 内联函数语法 )

中 , 定义常量 const int a = 10 可以替换 C 语言中的 宏定义 #define a 10 使用 常量 可以 替代 宏定义 ; 宏定义分为两种 , 一种是 宏常数 , 另外一种是 宏代码片段...; C++ 中使用 常量 替代 宏常数 ; C++ 中用于 替代 宏代码片段 的是 inline 内联函数 ; C++ 中建议开发者使用 " 内联函数 " 替代 C 语言中的 " 宏代码片段 " ;...宏代码片段 示例 : // 宏代码片段 #define FUN(a, b) ((a) < (b) ?...(a) : (b)) 内联函数 示例 : 下面的 内联函数 可以 替换 上面的 宏代码片段 , 二者的功能基本相同 ; // 内联函数 inline int fun(int a, int b) {...a : b; } 2、代码示例 - 宏代码片段 与 内联函数 在下面的代码中 , 分别定义了 宏代码片段 FUN(a, b) 和 内联函数 inline int fun(int a, int b) ,

18020

APT32样本分析

2.2诱骗执行 本次攻击时使用恶意宏代码的方式来加载恶意模块,并通过社会工程学的方式伪装成360的提示信息来博取用户的信任,从而诱骗用户启用恶意宏代码。 ?...2.3恶意宏分析 该恶意文档中共被植入了三段恶意宏代码,第一段代码保存在office默认位置,第二、第三段恶意宏代码以十六进制流的方式保存在文档首部。 ?...第一段宏代码(最开始执行的宏代码),从文档首部读取十六进制流保存的第二段宏代码,动态加载并调用入口函数x_N0th1ngH3r3()。 ?...第二段宏代码,从文档首部读取十六进制流保存的第三段宏代码,动态加载并调用入口函数x_N0th1ngH3r3 ()。 ?...第三段宏代码,通过给WINWORD进程创建远程线程的方式在内存中加载该恶意文档中以十六进制流方式储存的Shellcode代码。 ?

98320

zloader再次升级检测逃避措施

最近出现的 zloader 的恶意文档升级了额外的检测逃避手段,使得确定宏代码的入口点以及额外的分析变得更加困难。 介绍 多亏了 Excel 4.0 宏才让很多恶意代码老树开新花,来!...所有人都必须熟悉这些古老的宏代码。 在 2020 年 4 月初时,宏代码仍然相当整洁: ? 随后,Trickbot 增加了隐藏工作簿、随机位置写入宏等检测逃避的手段让分析变得更加困难: ?...而如果你查看 Sheet2 的内容并缩小比例尺,则会看到分散在各处的 Excel 4.0 宏代码。 ? 寻找起点 困难的是找到宏代码执行的起始位置。...可以尝试搜索 formula 并右键点击搜索到的第一个单元格,然后尝试逐步执行宏代码。 ? 但是,由于该公式依赖已经写入不同单元格的信息,执行会失败。只有发现的正确的起始位置才会发生这种问题。 ?...检测逃避 发现了起始位置后,就可以开始逐步执行宏代码了。

57920

研究传播 Dridex 新变种的 Excel 文档

宏代码解析 收件人打开 Excel 文档后会在顶部以红色粗体显示要求用户启用宏代码。Excel 则会显示黄色警告栏,通知用户当前已经禁用了宏,意味着启用内容可能存在风险。...Excel 文件内部不仅使用了自动运行的 VBA 代码(Workbook_Open),还使用了 Excel 4.0 宏代码。...Sub 值 Environ("allusersprofile")& "\KgmsgJbgP.sct"设置成名为 Macro1的工作表的 Macro1是一个隐藏的工作表,包含并执行 Excel 4.0 宏代码...Excel 4.0 宏代码使用各种单元格中的公式执行代码,给定起始单元格后会从上到下、从左到右执行代码。本例代码从 Macro1!A4单元格开始执行。...宏代码提取的数据是带有一段 VBScript 代码的 HTML 应用程序(.hta 文件)。

1.3K20

【C++】内联函数 ⑤ ( 内联函数总结 | 内联函数代码示例 )

但是不建议这样做 // 一旦像这样声明 内联函数 // 编译器 编译时 会拒绝该内联函数的 内联请求 // 将其作为普通函数处理 //inline int fun(int a, int b); // 宏代码片段...但是不建议这样做 // 一旦像这样声明 内联函数 // 编译器 编译时 会拒绝该内联函数的 内联请求 // 将其作为普通函数处理 //inline int fun(int a, int b); // 宏代码片段...执行 int c = FUN(++a, b); 代码 , 调用宏代码片段 ; 宏代码片段在 预编译阶段 机械的将宏展开 , 宏替换很机械 ; 宏替换结果如下 : 将 ++a 替换到 FUN(a , b...但是不建议这样做 // 一旦像这样声明 内联函数 // 编译器 编译时 会拒绝该内联函数的 内联请求 // 将其作为普通函数处理 //inline int fun(int a, int b); // 宏代码片段...a : b; } int main() { int a = 1; int b = 3; // 调用宏代码片段 // 机械的将宏展开 , 宏替换很机械

11710

【C++】内联函数 ③ ( C++ 编译器 不一定允许内联函数的内联请求 | 内联函数的优缺点 | 内联函数 与 宏代码片段对比 )

编译器将该函数内联 , 并不强制要求编译器内联函数 , 如果编译器决定不内联函数 , 该 内联函数 作用 等同于 普通函数 ; 最终 内联函数 是否内联成功 , 由 编译器 决定 ; 二、内联函数 与 宏代码片段对比..., 需要根据 C++ 编译器的优化策略决定 , 可能同意 , 也可能不同意 ; 如果 C++ 编译器 不同意 内联请求 , 则该 内联函数 就是 普通函数 , 当做 普通函数 进行调用处理 ; 2、宏代码片段..." 宏代码片段 " 本质 是 宏定义 ; 宏代码片段 是由 预处理器 进行处理 , 执行的操作是 简单的文本替换 ; 宏代码片段 不是函数 , 没有函数那么强大的功能 , 执行时不会进行 参数和返回值

15620

C++之函数模板的概念和意义

一、函数模板的引出: 1、c++中有几种交换变量的方法: (1)定义宏代码块 (2)定义函数 代码版本一: #include #include using namespace...2、两种方法的优缺点: 定义宏代码块 -优点:代码复用,适合所有的类型 -缺点:编译器不知道宏的存在,缺少类型检查 定义函数 -优点:真正的函数调用,编译器对类型进行检查 -缺点:根据类型重复定义函数,...Println(array,5); Sort(array,5); Println(array,5); string s[5]={"c","c++","rust","golang","python.../a.out a= 5 b= 3 m= 6 n= 4 d= xiaoping t= Txp 3,5,6,4,9, 3,4,5,6,9, c,c++,rust,golang,python, c,c++,golang...,python,rust, 三、总结: 函数模板是泛型编程在c++中的应用方式之一 函数模板能够根据实参对参数类型进行推导 函数模板支持显示的指定参数类型 函数模板是C++中重要的代码复用方式 好了

40910
领券