【Linux For Hacker】————3、文本操作

前言

在 Linux 系统中,我们处理的一切都是文件,并且绝大多数都是文本文件;举个例子,在 Linux 系统中,所有的配置文件都是文本文件。所以我们只需要打开文件,更改文件的内容,保存文件,再重新启动应用就可以更改应用配置。由于存在大量文本文件,操作文本在 Linux 系统管理和 Linux 应用中显得尤为重要。

为了方便演示,我将使用世界顶尖的网络入侵检测系统(NIDS)Snort 的文件,Snort 最早由 Marty Roesch开发,现在属于Cisco。NIDS 经常被用于检测黑客入侵,所以如果你想成为成功的黑客,你必须了解 NIDS如何检测攻击和绕过检测的方法。

如果你使用的 Kali Linux 没有预装 Snort , 你可以输入 apt-get install snort 从 Kali源下载 Snort 

查看文件

如第 1 章所示,最基本的打印文本命令是 cat ,但是它有它的限制,使用 cat 命令打印位于/etc/snort的 Snort 配置文件

现在你的屏幕上应该显示了整个 snort.conf 文件,但这并不是最方便或最实际的使用这个文件的方法。在接下来的两个小章节,我将向你展示 head  和 tail 命令。这是两种只显示部分文件内容的方法,用来更简单地查看关键点。

查看 开头

如果你只是想查看文件开头,你可以使用 head 命令,这个命令默认打印文件的前 10 行。例如,下面这条命令会打印 snort.conf 的前 10 行。

如果你想看多于或少于默认的 10 行,在 head 命令后和文件前输入连接符( - )和你想要的数量。例如,如果你想看文件的前 20 行,你需要输入如清单 2-2 上面的命令。

你能在终端中看到 snort.conf 的前 20 行。

查看结尾

tail 命令 和 head 命令相似。只是 tail 命令用于查看文件最后几行。使用 tail 查看 snort.conf:

注意这个命令打印了最后的一些 include 行,但没有打印所有的 include 行。因为和 head 相似,tail 默认也是打印 10 行。你可以打印更多行如 snort.conf 最后 20 行。和使用 head 命令一样,你可以在 tail 命令和文件之间输入连接符(-)和你想要的行数。如以下清单 2-3

现在我们可以一次性看到几乎所有的 include 行。

标显行数

有时-尤其是处理非常长的文件的时候-我们可能希望打印文件行号。因为 snort.conf 超过 600 行,标上行号会有很大帮助,这样可以更容易地引用修改的位置并在以后返回到那个位置。我们使用 nl (number lines)命令打印行号。输入清单 2-4 里的命令。

现在每一行都有一个数字(代表行号),引用起来更方便。

使用 GREP  过滤文本

命令 grep  大概是使用最广泛的文本操作命令。它可以让你过滤打印出来的文件内容。例如,如果你想查看 snort.conf 文件里面所有带有 output 单词的行,你可以使用 cat 然后要求只打印那些行。

这个命令或先查看 snort.conf 然后使用管道 (|) 将它传递给 grep, 它将会把文件作为输入,寻找出现单词 output 的行,然后只打印这些行。 grep 命令是使用 Linux 中的一个非常强大和必要的命令,因为它可以节约搜索文件中每一个词或命令的时间。

挑战 :  使用 grep , nl , tail , and head

假设你想使用至少 4 个之前学过的命令打印 # Step #6: Con 图 output plugins 前面 5 行,你该怎么做?(提示:除了我们学过的命令,还有很多其他选择。你可以使用 Linux 内置命令 man 来学习更多命令。例如,man tail 会显示 tail 命令的帮助文档)。有很多方法可以解决这个问题,我将向你展示通过更改那几行来实现其中一个方法,然后你需要寻找其他方法。

第一步:

我们可以看到行 # Step #6: Con 图 output plugins 是第 512 行,然后我们知道我们想要第 512 行前面的5 行和第 512 行本身 (就是第 507 到 512 行)

tail -n  +507 /etc/snort/snort.conf | head -n 6
nested_ip inner, \
whitelist $WHITE_LIST_PATH/white_list.rules, \ blacklist
$BLACK_LIST_PATH/black_list.rules
###################################################

在这里,我们使用 tail 使文本从第 507 行开始,再把文本输出到 head,然后我们返回文本开头的 6 行,从而获得 Step #6 那行前的 5 行和 Step #6 那行本身。

使用 SED  查找和替换

sed 命令让你可以搜索出现的单词或字段然后在这些字段上做些什么。命令的名字是 stream editor(流编辑器)的缩写,因为它的概念和流编辑器是一致的。sed 最基本的形式就像 Windows 系统里的查找和替换功能。使用 grep 在 snort.conf 里查找单词 mysql,像这样:

你可以看到  grep 命令查找到 mysql 出现过两次。假设你想要 sed  将每一个出现的 mysql 替换成 MySQL(记住,Linux 大小写敏感)然后保存到文件snort2.conf。你可以输入清单 2-6 中的命令 :

s 参数提供搜索,你先提供想要搜索的关键词 (mysql) 然后提供想要替换成的关键词 (MySQL), 用斜杠(/)分开。 g 参数告诉 Linux 你希望全局替换,然后将结果保存到一个新文件 snort2.conf。现在,当你使用 grep 查找 snort2.conf 中的 mysql,你将看到没有找到 mysql,但是当你搜索 MySQL 时,你将看到它出现了两次。

如果你只想替换第一个出现的 mysql,你需要去掉末尾的 g 参数。

sed s/mysql/MySQL/ snort.conf > snort2.conf

你也可以使用 sed 命令查找替换第一个出现字段以外的任意位置出现的字段。例如,如果你想只替换第二个出现的 mysql,只需要在命令末尾加上出现的次数(这里是 2)。

sed  s/mysql/MySQL/2  snort.conf  > snort2.conf

这个命令值影响第二个出现的 mysql。

使用 MORE 和 和 LESS 

尽管 cat 是个打开文件和创建小文件的好工具,在打开大文件时它依然有它的限制。当你用 cat 打开snort.conf,时,文件将一直被打印直到文件结束。如果你想要收集任何信息,这就变得很不实用。为了打开大文件,我们有另外两个查看工具: more  和 less 。

1、使用  more  控制显示文件
more 命令一次只显示一页文件,并且让你可以使用 ENTER  键翻页。这是 man 命令使用的工具,现在我们来使用它。使用 more 命令打开 snort.conf (参见清单 2-7) 。

注意 more  命令只显示一页然后就停止了,并且它会在左下角显示已经显示了多少内容(这里是 2%)。按 ENTER 键查看额外的行或页。按 q 键(quit)退出 more。

2、使用  less  显示和过滤文件
less 命令和 more 命令非常相似,但是 less 有额外的功能,有句话叫 “Less is more。” 使用 less,你不但可以滚动查看一个文件,还可以过滤这个文件,清单 2-8,使用 less 打开 snort.conf :

注意 less 在屏幕左下角高亮了文件的路径。如果你按下斜杠键(/),less 会让你搜索文件里的字段。例如,当你开始设置 Snort 时,你需要先确定你想在何时向何处发送攻击警告输出。要想从配置文件中找到这一段,你只需要搜索 output,像这样:

这会立即将你带到第一个出现 output 的地方,并且高亮了 output。然后你可以按 n 键(next)到下一个出现 output 的地方。如你所见,less 去掉了接下来出现的 output 并且高亮了所有搜到的字段。在这里, 它直接跳到 Snort 的输出段,真是方便啊!

总结

Linux 系统有许多操纵文本的方法,每种方法都有其优缺点。在本章中,我们已经接触了一些最有用的方法,但是我建议您尝试每一种方法,并建立您自己的感觉和偏好。例如,我认为 grep 是不可缺少的, 并且我广泛的使用 less ,但是您可能会有不同的观点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值