#databending #glitch #proc-macro #corrupt

app glitchup

一个用Rust编写的databending库/可执行文件!

5个不稳定版本

0.4.2 2020年3月2日
0.4.1 2019年9月14日
0.4.0 2019年9月14日
0.2.0 2019年8月3日
0.1.0 2019年7月27日

#95多媒体

MPL-2.0 许可证

2MB
929

包含(《DOS exe》,1MB) glitchup.exe

glitchup

一个用Rust制作的databender可执行文件。带有选项加载和proc宏以帮助开发。


注意: 此项目仍在开发中。您可以通过以下方式安装当前的可执行文件:

  • cargo安装 glitchup
  • 这里下载程序

...然而它是不完整的,您可能会遇到错误。

如果您有任何问题,例如 "什么是databending?""你为什么制作这个?",请查看问答

如果您想先了解一下databending,请查看databending教程!

选项

示例选项文件可以在Options.toml中找到。我将解释一些重要部分

输入 + 输出

需要设置inputfile选项来指定要databend的文件

inputfile = "somefile.jpeg"

您也可以指定不在当前目录中的文件。测试了文件在子目录中(dir/file.jpeg),然而没有测试文件在当前目录之外(../file.jpeg)。这可能可行,但是目前还需要进一步测试。

默认情况下,输出文件将与输入文件同名(并附加一个字符串)。如果您想用不同的名称/目录保存文件,可以指定outputfile选项。

inputfile = "somefile.jpeg"
outputfile = "otherfile.jpeg"

注意: 输出文件的名称将不会与您指定的名称完全相同。目前,输出文件名称的格式为name<mutations>.extension。这是为了显示文件所经历的突变,同时也避免覆盖现有文件。

全局选项

目前有4个全局选项

  • times:指定程序运行次数。
  • iterations:指定在保存之前突变应执行的次数。
  • chunksize:每次突变时要突变的数据块的大小。
  • mutations:要使用的突变。

所以,根据以下选项

times = 2
iterations = [5,10]
chunksize = 1000
mutations = [ ["Reverse"], ["Swap"] ]

程序将运行两次,每次运行都会有一个输出

  • 1KB数据块进行Reverse突变5到10次
  • 通过应用Swap操作5到10次来对1KB块进行突变

...总共产生2 * 2个输出文件。(次数 * 突变次数)

范围

如您所见,iterations是一个包含2个整数的数组。几乎所有的突变特定选项都可以通过范围设置,即一个包含2个数字的数组

  • iterations = xx次迭代
  • iterations = [x,y]:在xy次迭代之间。

对于每次迭代,将在xy之间随机生成一个数字。因此,如果您想在两个边界之间随机生成一个设置,请使用[x,y]。否则,如果您的设置需要更具体,只需使用一个文字数字即可。

突变

mutations选项已被从BEND++重写!现在它使用一个数组数组

mutations = [
  ["Reverse", "Swap"],
  ["Shuffle"],
  ...
]

mutations的每个元素都是一个数组,代表一个单独的输出。这个数组可以包含多个连在一起的突变!

在上面的选项中,这意味着第一个文件将首先通过Reverse进行突变,然后通过Swap,然后保存。然后创建原始文件的一个新副本,通过Shuffle进行突变,然后保存。依此类推...

特定选项

一些突变可能有自己的选项需要设置。例如,目前有一个需要设置loops选项的Loops突变。每个突变都有自己的配置,如[<Mutation>Config],因此要配置Loops

[LoopsConfig]
loops = 10

这将设置loops10用于Loop突变。如果您忘记指定此选项,程序将指定它需要哪些选项以及选项的名称。

TODO: Add example of error.

注意:在上面的情况下,只有当您在mutations选项中包含"Loops"时,才需要指定loops选项!如果排除"loops",则上面的部分也可以省略。

覆盖全局选项

例如,如果您想为Loops设置不同的chunksize值怎么办?您可以通过在[LoopsConfig]下指定它们来覆盖它们

[LoopsConfig]
loops = 10
chunksize = [10,1000]

在这种情况下,将使用全局设置的iterations,但是将使用来自[LoopsConfig]chunksize

反馈!

这个项目目前是一个原型。因此,任何形式的反馈都备受赞赏!如果您想联系我,可以使用我的电子邮件,或者如果您在Fediverse上,可以在那里联系我

您还可以提交一个问题,我会尽快回复!不要担心 - 接受任何形式的反馈,无论是功能请求、意见还是批评。

待办事项

  • 更新代码的结构/格式
    • 改进结构,使用 CfgMap 代替。
    • 寻找一种方法来改进突变(Mutations)的结构,特别是随机生成范围内的设置。
  • 通过可能添加命令行界面(CLI)应用来改进用户体验(UX)。
  • 通过可能添加图形用户界面(GUI)来改进用户体验(UX)。

依赖项