For loop 免费Pascal-问题解决查询(非语法)-如何进入此循环的下一阶段

For loop 免费Pascal-问题解决查询(非语法)-如何进入此循环的下一阶段,for-loop,freepascal,For Loop,Freepascal,我的问题更多的是“解决问题”,而不是语法相关的问题 简单地说,我正在创建一个程序,它将读取一个充满单词的文本文件(可能是一个密码列表),每行一个单词-我将在循环中使用ReadLn来表示该位。对于它找到的每一个单词,我希望它添加“数量”的混淆,以符合当今用户在密码中使用“3”而不是“E”,或者使用“1”而不是“I”的方式。我在IT安全领域工作,破解密码通常是其中的一部分,这就是这个程序的目的 到目前为止,我已经成功地创建了这个程序,它为字母表的每个字母生成了一个LEET表,其中包含了许多不同的值,

我的问题更多的是“解决问题”,而不是语法相关的问题

简单地说,我正在创建一个程序,它将读取一个充满单词的文本文件(可能是一个密码列表),每行一个单词-我将在循环中使用ReadLn来表示该位。对于它找到的每一个单词,我希望它添加“数量”的混淆,以符合当今用户在密码中使用“3”而不是“E”,或者使用“1”而不是“I”的方式。我在IT安全领域工作,破解密码通常是其中的一部分,这就是这个程序的目的

到目前为止,我已经成功地创建了这个程序,它为字母表的每个字母生成了一个LEET表,其中包含了许多不同的值,并将它们堆叠在一个StringGrid中,作为过程的一部分,我可以访问它(它还可以直观地输出到一个表)

我的问题是:举个例子,考虑到“爱德华”这个词,我该如何决定我应该把它混淆到什么程度?只是第一个字母“E”被替换为“3”,也许就没什么了?或者将前两个字母“E”和“d”替换为LEET表中字母E和d的所有值(这意味着将从“Edward”等中生成几十个新词),或者将“E”的所有值替换为其他值……列表还在继续。潜在地,对于每一个单词,我都可以创建数千个额外的单词!一个100Gb的源文件很快就会变成TB

换句话说,我需要设置程序运行的“级别”,由用户决定。但我不知道如何构建这个层次

所以我不知道该怎么做?在我开始之前,我真的想得不够透彻。我最初的想法是“如果有一个程序可以从计算机上获取单词索引,然后生成每个单词的变体,以解释那些混淆字符的人,那将是很酷的。”但在编写代码之后,我意识到这是一项比我想象的更大的工作,我现在被困在了“整理我的输入文件”的部分

您可以使用级别(0-10)作为输入。 0:不替换任何内容 10:将所有字母替换为LEET字母


根据单词的长度,您可以计算要替换的字母数,并只替换单词中的随机字母,这样您就不会总是替换级别1的第一个字母等。

是的,当然值得思考。谢谢
type
TLetters = 'A'..'Z';
    TLeet = array[TLetters] of TStringList;

var
  SourceFileName, str : string;
  StartIndexFile : TextFile;

  i    : TLetters;
  leet : TLeet;
  s    : string;
  n, o, ColumnSize    : integer;           

begin

for i in TLetters do
  leet[ i ] := TStringList.Create;   

// The next sequence of loops populates the string grid by counting the number of     characters for each letter of the alphabet and then inserting them down, column by column and row by row...

//Letter A:

s := '4 @ /-\ /\ ^ aye ∂ ci λ Z';
ColumnSize := wordcount(s,[' ']);
o := 0;
  for n := 0 to ColumnSize do
    leet['A'].Add(ExtractWord(n,s,[' ']));
      for o := 0 to ColumnSize do
        StringGrid1.Cells[1,o] := Leet['A'][o];

// And so on for B - Z

// ... then an OpenDialog that opens the source text file to read. Got that sorted

//  A load of file opening stuff and then the obsfucation
        repeat
           Readln(StartIndexFile, Str);
           LblProgress.Caption := ('Parsing Index File...please wait');
             OBSFUCATE THE WORDS HERE TO SOME EXTENT
             // but now I have hit a barrier....
       until(EOF(StartIndexFile));