随机网站和其他地方出现的带有西里尔字符的非常奇怪的乱码字符串

信息安全 Web应用程序 鉴别
2021-09-02 05:33:24

在我处理在线订单的过程中,我开始注意到一些订单存在极端异常。在一个不受限制的字段中,出现了超过 300 万个字符的字符串,这些字符完全是胡言乱语,主要由西里尔字符组成。使用 Python 仔细检查后,发现它实际上是一个包含一千多个此类乱码字符串的列表。我挖得更深,发现了更多这样的例子,最糟糕的是超过 5800 万个字符的字符串,由 18000 多个列表元素组成。

所以我们有一个由几个字符串列表组成的字符串,这些字符串又由几个用不间断空格分隔的乱码组成。

一个例子(我添加了换行符以提高可读性):

'Р В Р’ВР
 ’ Р В РІР‚в„ўР вР
 ‚™Р’В Р В Р’В Р Р
  вЂ Р В РІР‚љРІвЂћСћР Р
 ’ РІР‚™Р’ВР
 ’ Р В Р’ Р’РВ
 ’ Р Р†Р РР
 †Р вЂљРЎв„ўР В Р вЂ Р Р†Р вЂљРЎвЂєР Р
 ЋРЎвЂєР В Р’ Р’ РІРР
 ІР‚љРІвЂћСћР В РІРВ
 ‚™Р’В РРвЂ

以下是 5800 万个字符串中最常见的 10 个单词的统计:

Р                     2453256
В                     1926812
Р’В                    895699
’В                 822674
ІР                   399677
РІР‚в„ўР               382349
†                    235180
‚Р              185503
‚в„ўР           177792
†                 109266
ІвЂћСћР         101490

现在取例如字符串“РІР‚в„ўР”并将其放入谷歌。我得到了超过一百万个看似随机的站点,这些字符串被插入到站点的源代码中。

我完全不知道该怎么做,有人知道这是什么吗?

2个回答

我正在浏览与您有同样问题的网站。

其中一个是法国网站,这是里面的文字:

Mon banquier ne mРІР‚в„ўappelle plus pour mon dР“ВР'В©couvert, nous Р“ВРВВ' ©changeons dorР“ВР'В©navant sur mes nouveaux projets

非字母数字字符(不是 az/AZ)被“西里尔文”字符替换。在本文中,有 ',é ...

在这种情况下,它看起来像一个 ASCII 编码问题,其中一个多字节字符被认为是多个单字节字符。所以一个二字节字符会变成两个一字节字符。

我四处逛逛,发现它可以链接到数据库编码数据库格式。但我不是数据库专家,也许有更多知识的人可以完成解释。

因此,正如@james-k-polk 所说,您看到的字符要么不应该显示为字符,要么在我看来它们只是从一种格式严重转换为另一种格式。

在@Deunis 的帮助下,我发现了这里发生了什么。

当您使用 utf8 中至少 2 个字节表示的特殊字符,然后将其解码为 utf8 并将其编码为 cp1251(西里尔字母)时,它会被炸毁。如果你反复这样做,字符串会变得越来越长,显示在这些网站上观察到的确切模式。这是一个重现这些模式的示例 Python 代码:

def encode_decode(s,e1,e2):
    t = s.encode(e1)
    o = t.decode(e2)
    return o

e1 = "cp1251"
e2 = "utf_8"
char = 'ä'
iterations = 6

print(char)
print(40*'-')
for _ in range(iterations):
    char = encode_decode(char,e2,e1)
    print(char)
    print(40*'-')
for _ in range(iterations):
    char = encode_decode(char,e1,e2)
    print(char)
    print(40*'-')

这会产生输出:

ä
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
Г¤
----------------------------------------
ä
----------------------------------------