【问题标题】:Ruby: Fuzzing through all unicode characters ‎(UTF8/Encoding/String Manipulation)Ruby:对所有 unicode 字符进行模糊测试(UTF8/编码/字符串操作)
【发布时间】:2011-05-25 23:48:53
【问题描述】:

我无法遍历整个 unicode 字符范围。

我到处找...

我正在构建一个模糊器,并希望将所有 unicode 字符(一次一个)嵌入到一个 url 中。

例如: http://www.example.com?a=\uff1c

我知道有一些内置工具,但我需要更多的灵活性。

如果我可以执行以下操作:"\u" + "ff1c",那就太好了。

这是我得到的最接近的:

char = "\u0000"
...

#within iteration

char.succ!

...

但是在字符"\u0039"之后,即数字9,我会得到“10”而不是“:”

【问题讨论】:

  • 尝试仅生成有效的 Unicode 代码点难道不是打败了 fuzzing 的全部意义吗?

标签: ruby string utf-8 fuzzing


【解决方案1】:

您可以使用 pack 将数字转换为 UTF8 字符,但我不确定这是否能解决您的问题。

您可以创建一个包含所有字符的数值的数组并使用 pack 来获取 UTF8 字符串,或者您可以从 0 循环到您需要的任何内容并在循环中使用 pack。

我写了一个小例子来解释我自己。下面的代码打印出每个字符的十六进制值,然后是字符本身。

0.upto(100) do |i|
    puts "%04x" % i + ": " + [i].pack("U*")
end

【讨论】:

    【解决方案2】:

    这里有一些更简单的代码,尽管稍微有些混淆,它利用了 Ruby 将

    0.upto(100) do |i|
      puts "" << i
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多