当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 星期五 垃圾邮件的有趣学习

作者:精品下载站 日期:2024-12-14 07:47:36 浏览:14 分类:玩电脑

星期五 垃圾邮件的有趣学习


今天的文章绝对是有趣的,尽管希望它能成为一个有趣的学习机会。本周早些时候,我在清除博客上的垃圾邮件时,发现了一条看起来像垃圾邮件发送者的模板文件的评论。该评论包含一些简短的条目,如下所示:

[玩转系统] 星期五 垃圾邮件的有趣学习

撇开糟糕的英语不谈,我觉得这有点有趣。首先,很明显,他(做出假设,抱歉)使用的任何代码都无法正确运行。然后我想我可以使用这篇文章并在 PowerShell 中做同样的事情。我很清楚,要创建正确的垃圾评论,我需要从大括号中包含的每个选项中进行选择。那么让我们这样做吧。让我们使用 PowerShell 构建一些垃圾邮件。我将使用上面的文本文件。

$file = "C:\scripts\Spam3.txt"
$in = Get-Content -Path $file

最棘手的部分,至少对我来说,是想出一个正则表达式模式来选择花括号中的所有内容。最终我想出了这个:

[regex]$rx = "\{(\w+(\S+|\s+))+\}"

首先,我将使用一行文本进行测试。

$m = $rx.matches($in[2])

这给了我这些匹配:

[玩转系统] 星期五 垃圾邮件的有趣学习

我会专注于第一场比赛。我不需要 {} 字符,因此我可以用空字符串替换它们,然后拆分 | 上剩余的内容。特点。

$choices = $m[0].value.Replace("{","").Replace("}","") -split "\|"

这给了我一系列的选择,我可以使用 Get-Random 进行选择。

$choice = $choices | get-random

这样,我可以使用替换方法将匹配值(即带有大括号的文本)替换为我随机选择的选项。

$in[2].Replace($m[0].value,$choice)

[玩转系统] 星期五 垃圾邮件的有趣学习

我可以对其他值重复此过程。以下是我对单行执行此操作的方法:

$line = $in[2]
foreach ($item in $m) {
  $choices = $item.value.Replace("{","").Replace("}","") -split "\|"
  $choice = $choices | get-random
  $line = $line.Replace($item.value,$choice)
}

$line

[玩转系统] 星期五 垃圾邮件的有趣学习

我从来没有承诺过优雅的诗歌。

现在我掌握了这项技术,我可以将其应用于循环遍历每一行的整个文件。

$spam = Foreach ($line in $in) {
  $m = $rx.matches($line)
  if ($m) {
    foreach ($item in $m) {
     $choices = $item.value.Replace("{","").Replace("}","") -split "\|"
     $choice = $choices | get-random
     $line = $line.Replace($item.value,$choice)
  }
 }
 #write the result
 $line
}

这是光荣、美味的垃圾邮件结果:

[玩转系统] 星期五 垃圾邮件的有趣学习

是的,这绝对是愚蠢且近乎荒谬的。但这是学习正则表达式、替换和拆分的一个很好的工具。如果您想要一些垃圾邮件样本,可以在此处下载 zip 文件。

周末愉快。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯