摘要:工具:文件系统监控 恶意软件感染和其他入侵通常可以通过它们对目标文件系统的更改检测到。我们可以使用密码哈希函数的属性和一些命令行技巧来标识随着时间的推移而添加、删除或更改的文件。这种技术在服务器或嵌入式设备系统上是最有效的,这些系统通常不会发生显著变化。 本章将开发一个工具来创建文件系统的基线,并比 阅读全文
posted @ 2021-02-06 12:37 PwnKi 阅读(10) 评论(0) 推荐(0) 编辑
摘要:动态链接 为什么要动态链接 静态链接使得不同的程序开发者和部门能够相对独立地开发和测试自己的程序模块,从某种意义上来讲大大促进了程序开发的效率,原先限制程序的规模也随之扩大。但是慢慢地静态链接的诸多缺点也逐步暴露出来,比如浪费内存和磁盘空间、模块更新困难等问题,使人们不得不寻找一种更好的方式来组织程 阅读全文
posted @ 2021-02-02 14:52 PwnKi 阅读(26) 评论(0) 推荐(1) 编辑
摘要:过程 过程是软件中一种很重要的抽象。它提供了一种封装代码的方式,用一组指定的参数和一个可选的返回值实现了某种功能。然后,可以在程序中不同的地方调用这个函数,。设计良好的软件用过程作为抽象机制,隐藏某个行为的具体实现,同时又提供清晰简洁的接口定义,说明要计算的是哪些值,过程会对程序状态产生什么样的影响 阅读全文
posted @ 2021-01-31 16:07 PwnKi 阅读(23) 评论(0) 推荐(0) 编辑
摘要:程序编码 假设一个 C 程序,有两个文件 p1.c 和 p2.c。我们用 Unix 命令行来编译这些代码: gcc -Og -o p p1.c p2.c 命令 gcc 就是 GCC C 编译器。编译选项 -Og 告诉编译器使用会生成符合原始 C 代码整体结构得机器代码优化等级。使用较高级别优化代码会 阅读全文
posted @ 2021-01-30 20:12 PwnKi 阅读(10) 评论(0) 推荐(0) 编辑
摘要:#可执行文件格式 现在 PC 平台流行的可执行文件格式主要是 Windows 下的 PE(Portable Executable)和 Linux 下的 ELF(Executable Linktable Format)。目标文件就是源代码编译后但未进行链接的那些中间文件(Windows 下的 .obj 阅读全文
posted @ 2021-01-27 17:45 PwnKi 阅读(25) 评论(0) 推荐(0) 编辑
摘要:#Hello world hello world 的代码非常简单,相信大家都不陌生。 #include <stdio.h> int main() { printf("Hello world\n"); } 可一个 “hello world” 程序是如何在电脑上跑起来的呢?不妨思考以下问题: 程序为什么 阅读全文
posted @ 2021-01-26 14:35 PwnKi 阅读(41) 评论(0) 推荐(0) 编辑
摘要:#工具:网络监控 本章中,我们创建了一个工具来监控整个网络系统中开放端口的变化。该工具的要求如下: 读入包含 IP 地址或主机名的文件。 对于文件中的每个主机,执行网络端口扫描以确定打开的端口。 将端口扫描输出保存到使用当前日期命名的文件中。 再次运行脚本时,它将执行端口扫描,然后将结果与上次保存的 阅读全文
posted @ 2021-01-25 15:33 PwnKi 阅读(11) 评论(0) 推荐(0) 编辑
摘要:#实时日志监控 ##监控文本日志 实时监控日志的最基本的方法是使用 tail 命令的 -f 选项,该选项不对地读取文件,并在添加新行时将它们输出到 stdout。 使用 tail 监控 Apache 访问日志: tail -f access.log 命令可以组合起来提供更高级的功能。 tail 的输 阅读全文
posted @ 2021-01-24 15:23 PwnKi 阅读(18) 评论(0) 推荐(0) 编辑
摘要:#数据分析 ##命令 例: file1.txt 12/05/2017 192.168.10.14 test.html 12/30/2017 192.168.10.185 login.html ###sort sort 命令用于将文本文件按照数字和字母顺序重新排列。 常见命令选项: -r:按降序排列 阅读全文
posted @ 2021-01-23 14:26 PwnKi 阅读(11) 评论(0) 推荐(0) 编辑
摘要:#如何制定计划 任务分解:我们写程序的时候都有经验,就是要把复杂的问题拆分成简单的问题,大的模块拆成小的模块,在工程里面这个叫“分而治之”。做计划也是一样,第一步就是要对任务进行分解。在项目管理中,对任务分解有个专业的词汇叫 WBS,它意思是工作分解结构(Work Breakdown Structu 阅读全文
posted @ 2021-01-20 21:04 PwnKi 阅读(17) 评论(0) 推荐(0) 编辑
摘要:#提取分析数据 ##awk awk 不仅是一个命令,而且实际上是一种用于处理文本的编程语言。 常见命令选项: -f:从指定的文件读入 awk 程序。 例: awkusers.txt Mike Jones John Smith Kathy Jones Jane Kennedy Tim Scott 使用 阅读全文
posted @ 2021-01-20 20:49 PwnKi 阅读(26) 评论(0) 推荐(0) 编辑
摘要:#软件工程可行性研究 常从三个方面着手做: 经济可行性。从成本和收益角度分析,看投入产出比。不仅要分析短期利益,还要分析长期利益,看是不是值得做。 技术可行性。软件项目最终是需要人通过技术来实现的,所以要分析技术上是不是可行,如果有技术上解决不了的问题又能否规避。 社会可行性。社会可行性涉及法律、道 阅读全文
posted @ 2021-01-19 22:45 PwnKi 阅读(21) 评论(0) 推荐(0) 编辑
摘要:#敏捷开发 ##敏捷开发定义 敏捷不是一种方法论,也不是一种软件开发的具体方法,更不是一个框架或过程,二十一套价值观和原则。软件开发宣言: 个体和互动高于流程和工具。 工作的软件高于详尽的文档。 客户的合作高于合同谈判。 响应变化高于遵循计划。 ##敏捷开发特点 需求分析:需求源于一个个小的用户故事 阅读全文
posted @ 2021-01-16 19:53 PwnKi 阅读(18) 评论(0) 推荐(0) 编辑
摘要:#瀑布模型 瀑布模型算是现代软件工程的起源,软件工程的发展,很大部分都是构建于瀑布模型的基础之上的。主要分为 6 个阶段: 问题的定义及规划:这个阶段是需求方和开发方共同确定软件开发目标,同时还要做可行性研究,以确定项目可行。这个阶段会产生需求文档和可行性研究报告。 需求分析:对需求方提出的所有需求 阅读全文
posted @ 2021-01-15 22:49 PwnKi 阅读(23) 评论(0) 推荐(0) 编辑
摘要:#数据收集 数据几乎是所有安全运维防御的命脉。 防御操作相关的数据 |数据|数据描述|数据位置| | | | | |日志|系统历史活动和状态的详细信息,主要的日志文件包括 Web 和 DNS 服务器日志、路由器、防火墙、入侵检测系统日志和应用程序日志|在 Linux 中,大多数日志文件位于 /var 阅读全文
posted @ 2021-01-14 20:24 PwnKi 阅读(21) 评论(0) 推荐(0) 编辑
摘要:#什么架构师思维 架构设计,就是要控制技术的复杂性,其中有几种有效的方式: 抽象 分治 复用 迭代 ##抽象思维 抽象思维可以说是整个架构设计的基础。因为对于架构设计来说,是要为了满足业务需求的,而业务需求都是一些文字性的描述、原型、UI 设计图,这些需求要最终变成代码让机器执行,就必须先进行抽象, 阅读全文
posted @ 2021-01-14 20:22 PwnKi 阅读(22) 评论(0) 推荐(0) 编辑
摘要:#如何做好架构设计 架构设计,是为了控制软件项目中技术复杂的问题。架构设计,通过组织人员和技术,低成本满足需求以及需求的变化,保障软件稳定高效运行。 架构设计可以通过四个基本步骤: 分析需求 选择相似的成熟的架构设计方案 自顶向下层层细化。 验证和优化架构设计方案。 ##分析需求 架构设计,最基本的 阅读全文
posted @ 2021-01-13 16:50 PwnKi 阅读(22) 评论(0) 推荐(0) 编辑
摘要:#正则表达式入门 本节使用的例子 Two roads diverged in a yellow wood, And sorry I could not travel both And be one traveler, long I stood And looked down one as far a 阅读全文
posted @ 2021-01-13 16:15 PwnKi 阅读(16) 评论(0) 推荐(0) 编辑
摘要:#产品意识 产品意识,本质就是一种思维方式,一种站在产品角度思考问题的方式。可以分为: 商业意识 用户意识 数据意识 ##养成培养产品意识的好习惯 在日常使用产品、开发产品的时候,要多站在产品的角度思考,去思考它的商业价值、用户体验、使用场景等等。 比如平时聊天用的微信,在使用一些具体功能是,可以思 阅读全文
posted @ 2021-01-12 22:23 PwnKi 阅读(15) 评论(0) 推荐(0) 编辑
摘要:#条件语句 bash 使用 0 表示真,使用非 0 表示假,它的意义在于程序的返回值是错误代码,能够解释程序为什么失败。当返回 0 时说明运行成功,当返回其他非 0 值时对应着不同的错误原因。 if 语句简单的形式如下: if cmd then some cmds else other cmds f 阅读全文
posted @ 2021-01-12 20:56 PwnKi 阅读(36) 评论(0) 推荐(0) 编辑