蚊章汇 - Jarret B
type: channel
link: https://linuxcn.bwsl.wang/author/629/
description: Jarret B
items: LFCS 基础：sed 命令
items: 游戏版 Linux ：Ubuntu GamePack
items: 用 NMAP 探测操作系统

LFCS 基础：sed 命令
type: item
date: 2017-10-02T23:57:20+08:00
description: Linux 基金会认证系统管理员（LFCS）的另一个有用的命令是 “sed”，最初表示 “流式编辑器” （ Streaming EDitor ） 。“sed” 命令是一个可以将文件作为流进行编辑的编辑器。流式传输文件的方法是从另一个命令使用管道（> 或 |）传递，或将其直接加载到 “sed” 中。该命令的工作方式与其他编辑器相同，只是文件不显示，也不允许可视化编辑。命令被传递给 “sed” 来操纵流。用 “sed” 可以做五件基本的事。当然，“sed” 如此强大，还有其他高级的功能，但你只需要集中精力在五件基本的事上。五种功能类型如下：搜索替换删除添加改变/变换在深入命令参数之前，我们需要看看基本的语法。语法“sed” 命令的语法是：sed [选项] 命令 [要编辑的文件] 本文将在适当的部分中介绍这些“选项”。“命令”可以是正则表达式的搜索和替换模式。请继续阅读了解 “sed” 如何工作的并学习基本命令。正如我之前提到的，“sed” 是一个非常强大的工具，有更多的选项可用，我将在本文中介绍。示例文件如果你打开一个终端，那你可以创建一个用于 “sed” 示例的文件。执行以下命令：cd ~ grep --help >grephelp.txt 你现在应该在 HOME 文件夹中有一个名为 grephelp.txt 的文件。该文件的内容是 grep 命令的帮助说明。搜索搜索特定字符串是编辑器的常见功能，在 “sed” 中执行搜索也不例外。执行搜索以在文件中查找字符串。我们来看一下基本的搜索。如果我们想在示例文件搜索 PATTERN 这个词，我们将使用如下命令：sed -n 's/PATTERN/PATTERN/p' grephelp.txt 注意： 如果剪切粘贴命令，请确保将单引号替换为键盘上的标准单引号。参数 -n 用于抑制每行的自动打印（除了用 p 命令指定的行）。默认情况下，流入 “sed” 的每一行将被打印到标准输出（stdout）。如果你不使用 “-n” 选项运行上述命令，你将看到原始文件的每一行以及匹配的行。要搜索的文件名是我们在“示例文件”部分中创建的 “grephelp.txt”。剩下的部分是 's/PATTERN/PATTERN/p' 。这一段基本分为四个部分。第一部分的 s 指定执行替换，或搜索并替换。剩下的第二部分和第三部分是模式。第一个是要搜索的模式，最后一个是替换流中匹配字符串的模式。此例中，我们找到字符串 PATTERN，并用 PATTERN 替换。通过查找和替换相同的字符串，我们完全不会更改文件，甚至在屏幕上也一样。最后一个命令是 p。 它指定在替换后打印新行。当然，因为替换的是相同的字符串，所以没有改变。由于我们使用 -n 参数抑制打印行，所以更改的行将使用 p 命令打印。这个完整的命令允许我们执行搜索并查看匹配的结果。替换当搜索特定字符串时，你可能希望用匹配的字符串替换新字符串。用另一个字符串替换是很常见的操作。我们可以使用以下命令执行相同的搜索：sed -n 's/PATTERN/Pattern/p' grephelp.txt 在这时，字符串 “PATTERN” 变为 “Pattern” 并显示。如果你使用命令 cat grephelp.txt 查看文件，你会看到该文件没有更改。该更改仅对屏幕上的输出进行。你可以使用以下命令将输出通过管道传输到另一个文件：sed 's/PATTERN/Pattern/' grephelp.txt > grephelp1.txt 现在将存在一个名为 grephelp1.txt 的新文件，其中保存了更改的文件。如果 p 作为第四个选项留下，那么有个问题是被替换的字符串的每一行将在文件中重复两次。我们也可以删除 “-n” 参数以允许所有的行打印。使用相同字符串替换字符串的另一种方法是使用 & 符号来表示搜索字符串。例如，命令 s/PATTERN/&/p 效果是一样的。我们可以添加字符串，例如添加 S，可以使用命令 s/PATTERN/&S/p。如果我们希望在每一行中只替换某种模式呢？可以指定要替换的匹配项的特定出现。当然，每一行的替换都是一个特定的编号。例如，示例文件上有很多破折号。一些行至少有两条破折号，所以我们可以用另一个字符代替每一行的第二个破折号。每行用星号 * 替换第二个破折号 - 的命令将是：sed 's/-/*/2' grephelp.txt 在这里，我们用最初的 s 来执行替换。字符 - 被替换为 *。2 表示我们想要替换每行上的第二个 -（如果存在）。如果我们忽略了命令 2，则替换第一次出现的破折号。只有第一个破折号而不是每行的破折号都被替换。如果要搜索并替换带有星号的行上的所有破折号，请使用 g 命令：sed 's/-/*/g' grephelp.tx…

游戏版 Linux ：Ubuntu GamePack
type: item
date: 2017-07-12T02:20:00+08:00
description: 很多 Linux 爱好者喜欢用他们的 Linux 系统玩游戏，看起来似乎并不需要一个可以玩游戏的操作系统。UALinux 是一家推广使用 GNU/Linux 的乌克兰公司。UALinux 开发了一个 Ubuntu 版本填补了这一空白，并把这个基于 Ubuntu 16.04 的操作系统（OS）命名为 Ubuntu GamePack。内容（Linux 上的）游戏现在已经相当丰富，而游戏公司宣称可以访问超过 22,381 款游戏。这个 GamePack 包括 Lutris 和 Steam 两部分，允许您访问发行版厂商提供的特定游戏服务。对于基于 Windows 的游戏，可以用 PlayOnLinux，WINE 和 CrossOver 转换到 Linux 上运行。对于 DOS 游戏，您可以在 DosBox 中运行游戏，这是一个 Linux 的 DOS 模拟器。也安装了 Sparky APTus Gamer ，可以访问众多主机游戏模拟器。 模拟器包括：AdvanceMENU - AdvanceMAME、 AdvanceMESS、 MAME、 MESS、 xmame、 Raine 以及其他的模拟器的前端Atari800 - Atari 8 位系统、XE 游戏系统和 Atari 5200 超级系统的模拟器DeSmuME - 任天堂 DS 模拟器Desura - 支持 Windows、Linux 和 X 系统的数字化分发平台 - 在线安装器DOSBox - 支持 BeOS、Linux、Mac X、OS2 和 Windows 的 DOS 模拟器DOSEMU - 支持 Linux 的 DOS 模拟器ePSXe - 增强的 PSX 模拟器FCEUX - 任天堂娱乐系统（NES）、红白机（Famicom）和红白机磁盘系统（FDS）模拟器（仿真器）FS-UAE - 跨平台的 Amiga 模拟器GNOME Video Arcade - 简化的 MAME 前端Hatari - 支持 Linux 和其他系统的 Atari ST、STE、TT 和 Falcon 模拟器（仿真器）Higan - 任天堂 SNES、NES、Gameboy、Gameboy Color 和 Gameboy Advance 的模拟器Kega\_Fusion - 世嘉 SG/SC/SF，主系统、Master System、 Game Gear、 Genesis/Megadrive、 SVP、 Pico、 SegaCD/MegaCD 模拟器MAME - 忠实重现了许多街机效果的硬件模拟器Mednafen - Atari Lynx、GameBoy、NES、SNES、PC-FX、世嘉，索尼游戏站等系统MESS - 各种主机和计算机游戏的模拟器Nestopia - 任天堂娱乐系统/红白机模拟器PCSX - 索尼游戏站模拟器PlayOnLinux - Wine 前端PPSSPP - PPSSPP 是支持 Windows、MacOS、Linux 和 Android 的开源 PSP 仿真器Steam - Steam 软件分发服务的启动器 - 在线安装程序Stella -用于 SDL 和 X Window 系统的 Atari 2600 仿真器VisualBoyAdvance - 全功能 Game Boy Advance 的模拟器Virtual Jaguar - 用于 Atari 的 infamous Jaguar 主机游戏的跨平台模拟器Wine - Windows 二进制在 Linux 中运行Winetricks - 一个用于 WINE 的 POSIX shell 脚本的软件包管理器，能够很容易安装一些 Windows软件Yabause - 世嘉土星32位游戏机模拟器ZSNES - 超级任天堂娱乐系统模拟器GamePack 还包括被一些游戏所必须的 Oracle java 和 Adobe Flash。如果这是一个你感兴趣的操作系统，请继续阅读，看看如何下载它。下载下载此操作系统镜像的主要地方是 UALinux 。其下载链接是： https://ualinux.com/en/download/category/25-ubuntu-gamepack。由于此链接来自国外，所以下载速度很慢。另一种选择是利用种子文件下载此操作系统。如果你没有种子下载程序，你可以下载“Transmission”。有了种子下载程序后，你可以通过 https://zooqle.com/ubuntu-gamepack-16-04-i386-amd64-январь-2017-pc-vkn99.html下载。这个种子文件下载可以下载 64 位和 32 位 的 ISO 镜像文件。（下载的）文件大小取决于您需要的架构。64 位操作系统 ISO …

用 NMAP 探测操作系统
type: item
date: 2017-07-02T01:08:00+08:00
description: 有时，能够知道一个网络里的机器的操作系统（OS）是有一定好处的。当你知道一台机器的操作系统后，因为你可以在网上搜索专门针对该系统的安全漏洞，所以入侵系统也会更加容易。当然，安全漏洞通常都会很快被修补，但安全漏洞存在时你需要知道。对你自己的网络进行扫描以便发现操作系统类型可以帮助你了解黑客将如何侵入你的网络。操作系统探测数据库NAMP 带有一个数据库，它在你安装 NAMP 的时候就会被安装。这个数据库用于操作系统的探测，但是它不会自动更新。这个数据库位于 /usr/share/nmap/nmap-os-db。进行更新的最简单方式是首先找到数据库的版本号，用文本编辑器打开这个文件，版本号通常位于第二行。我的数据库的第二行是 # $Id: nmap-os-db 35407 2015-11-10 04:26:26Z dmiller $，即这个文件的数据库版本是 35407。要在网上查找一个可更新版本，可以浏览 https://svn.nmap.org/nmap ，如图 1 所示：图 1你可以从图中看到版本号为 36736，与我的系统上的版本号相比，这个版本号似乎是一个更新的版本。为了对更新的操作系统进行准确的操作系统探测，当然需要对这个数据库进行更新。保留较旧的数据库版本也是一个不错的主意。我当前和版本是 35407，我将在终端执行下面的命令：sudo mv /usr/share/nmap/nmap-os-db /usr/share/nmap/nmap-os-db-35407 这个数据库被以包含版本号的方式重命名了，下一步就是从网站上下载新版本的数据库，在终端执行下面命令：cd /usr/share/nmap sudo su wget https://svn.nmap.org/nmap/nmap-os-db 新的数据库即将开始被下载，但是你应该加上版本号，就像你在图 1 中看到的版本号 36736。使用文本编辑器打开这个数据库，然后在第二行加上版本号。当版本号变化后，你可以更新你的数据库，然后在其中加入版本号，以便在再次检查更新时做好准备。系统探测过程在我们开始使用实际的命令并执行系统探测之前，我们应该详细介绍扫描过程中将会发生的事情。会执行五种不同的测试，每种测试由一个或者多个数据包组成，目标系统对每个数据包作出的响应有助于确定操作系统的类型。五种不同的测试是： 序列生成 （ Sequence Generation ） ICMP 回显TCP 显式拥塞通知 （ Explicit Congestion Notification ） TCPUDP现在让我们分别看看他们各自在做什么。序列生成序列生成测试由六个数据包组成，这六个包是每隔 100 毫秒分开发送的，且都是 TCP SYN 包。每个 TCP SYN 包的结果将有助于 NMAP 确定操作系统的类型。ICMP 回显两个有着不同设置的 ICMP 请求包被送到目标系统，由此产生的反应将有助于实现验证操作系统类型。TCP 显式拥塞通知 （ Explicit Congestion Notification ） 当生成许多包通过路由器时会导致其负载变大，这称之为拥塞。其结果就是系统会变慢以降低拥堵，以便路由器不会发生丢包。这个包仅为了得到目标系统的响应而发送。因为不同的操作系统以不同的方式处理这个包，所以返回的特定值可以用来判断操作系统。TCP在这个测试中会发送六个数据包。一些带有特定的包设置的包被发送用来到打开的或关闭的端口。结果也将会因为操作系统的不同而不同。所有 TCP 包都是以如下不同的标志被发送：无标志SYN、FIN、URG 和 PSHACKSYNACKFIN、PSH 和 URGUDP这个测试由一个被发送给一个关闭的端口的数据包组成。如果目标系统上的这个端口是关闭的，而且返回一条 ICMP 端口不可达的信息，那么就说明没有防火墙。NMAP 操作系统检测命令现在我们开始实际动手进行系统探测。如果你已经读过一些我写的关于 NMAP 的文章，那么最好不要执行 PING 操作。为了跳过 PING，我们使用参数 Pn。为了看到详细的信息，你应该使用 -v 参数用于动态显示。为了获取系统的信息，需要使用 -O 参数。为了使命令顺利运行和执行 TCP SYN 扫描，你需要以管理员的身份来执行这个命令。在我的例子中，我将只在一个系统上而不是整个网络上进行扫描，使用的命令是：sudo nmap -v -Pn -O 192.168.0.63 扫描的结果如图2所示，扫描显示七个开放的端口。图 2开放的端口是：21/tcp ftp22/tcp ssh111/tcp rpcbind139/tcp netbios-ssn445/tcp microsoft-ds2049/tcp nfs54045/tcp unkno…