是否可以解码邮件标头中的 SPAMCAUSE 字段?
Posted
技术标签:
【中文标题】是否可以解码邮件标头中的 SPAMCAUSE 字段?【英文标题】:Is it possible to decode a SPAMCAUSE field in a mail header? 【发布时间】:2017-05-21 07:12:51 【问题描述】:我想解码这个字符串: X-OVH-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrfeelgedrvdduucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfenuceurghilhhouhhtmecufedttdenucgohfhorhgsihguuggvnhfjughrucdlhedttddm
有没有工具或东西可以做到这一点?
谢谢。
【问题讨论】:
【参考方案1】:截至此答案,您可以使用此 tor 隐藏服务来解码标签:http://6jbnmws2zq2m2fsfmpwnssgsrxovohgggphymkd4df2pgcw7ccrdy6ad.onion
据此,您提供的 X-OVH-SPAMCAUSE 翻译为:
Vade Retro 01.394.21 AS+AV+AP+RT Profile: OVH; Bailout: 300; ^ForbiddenHdr (500)
历史上,http://spamcause.toorop.fr/ 曾经有一个服务,在所有者可能与此站点出现问题后主动下架,因此您可以放心地假设没有合法的方法来解码此类标签;这个答案也可能是临界的。
如果在您阅读本文时洋葱服务出现故障,那么用纯文本示例来计算密码看起来并不难......
(出于历史目的,原始 URL 为 http://fr3dpyqxb5ygbmji.onion - 截至 2021 年 10 月,onion v2 URL 不再容易连接,该站点在某个时候提供了新 URL)
【讨论】:
这听起来不像是一个答案,或者? 这绝对不是一个好的答案,因为如果我这样做了,承认对他们使用的密码进行了逆向工程会给我带来麻烦;但他要求一个工具来破译它,而我指出的 tor 隐藏服务可以解决这个问题。 (我想一个合适的答案是“没有合法的方法可以做到这一点”) 我刚刚在fr3dpyqxb5ygbmji.onion 尝试了tor 服务。它没有回应我。 @JimDeLaHunt 现在回头看,我想它并不总是向上。如果其他人想要运行类似的东西,我看到他们现在添加了算法,但如果可能的话,vadesecure 客户端可能应该使用他们的 api。 tor 服务现在为我响应。 (注意:使用https:
对我不起作用,我必须使用http:
。)该服务的首页上有有用的信息,可能有助于其他人编写自己的解码器。【参考方案2】:
看起来有一个 API 可以在 Vade 安全网站上解码垃圾邮件原因: https://api.partner.vadesecure.com/ 但不幸的是,必须成为 vadesecure 客户端才能使用它。
【讨论】:
此 API 似乎需要某种身份验证或登录才能成功。当我尝试将其用作身份不明的访问者时,我收到了 HTTP 错误 401(未经授权)。 谢谢!如果您的答案包含有关需要成为 vadesecure 客户才能使用它的信息,那么它会更有帮助。我鼓励您对其进行编辑并添加该信息。【参考方案3】:通过旋转字符看起来有些混淆。我对此有所了解,虽然并不完美,但似乎大部分都有效:
def decode(msg):
text = []
for i in range(0, len(msg), 2):
text.append(unrot(msg[i: i + 2]))
return str.join('', text)
def unrot(pair, key=ord('x')):
offset = 0
for c in 'cdefgh':
if c in pair:
offset = (ord('g') - ord(c)) * 16
break
return chr(sum(ord(c) for c in pair) - key - offset)
print(decode('gggruggvucftvghtrhho'))
https://gist.github.com/lkraider/9530798a695586fc1580d0728966f6f0
【讨论】:
【参考方案4】:从 lkraider 的出色回答开始,我提高了准确性。事实证明,偏移字符 (c
..g
) 是交替附加和前置的。因此,不仅要检查其中一个是否在一对中,还需要通过跟踪偶数对或奇数对来区分fh
和hf
。
def decode(msg):
text = ""
for i in range(0, len(msg), 2):
text += unrot(msg[i: i + 2], i // 2) # add position as extra parameter
return text
def unrot(pair, pos, key=ord('x')):
if pos % 2 == 0: # "even" position => 2nd char is offset
pair = pair[1] + pair[0] # swap letters in pair
offset = (ord('g') - ord(pair[0])) * 16 # treat 1st char as offset
return chr(sum(ord(c) for c in pair) - key - offset) # map to original character
print(decode('gggruggvucftvghtrhho'))
https://gist.github.com/DoubleYouEl/e3de97293ce3d5452b3be7a336a06ad7
【讨论】:
以上是关于是否可以解码邮件标头中的 SPAMCAUSE 字段?的主要内容,如果未能解决你的问题,请参考以下文章