如何解决Free Pascal-解决问题的查询不是语法-如何进入此循环的下一个阶段
| 与语法相关的问题相比,我更多的是“问题解决”问题。 简而言之,我正在创建一个程序,该程序将读取一个充满单词的文本文件(可能是密码列表),每行一个单词-我将在循环中的该位使用ReadLn。对于它找到的每个单词,我希望它添加“一定数量”的混淆处理,以符合当今用户如何在其密码或“ 1”中使用“ 3”而不是“ E”而不是\'I \'。我在IT安全领域工作,密码破解通常是其中的一部分,而这正是该程序的目的。 到目前为止,我已经设法创建了该程序,以使其生成一个LEET表,该表充满了每个字母的许多不同值,并将它们堆叠在StringGrid中,我可以将其作为过程的一部分进行访问(并且还可视地输出到表)。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));
我的问题是这样的:例如,给定单词“爱德华”,我该如何决定将其混淆到哪个级别?只是将第一个字母'E \'替换为\'3 \',仅此而已?或将前两个字母\'E \'和\'d \'替换为LEET表中字母E和d的所有值(这意味着将从\'Edward \'中生成许多新单词,依此类推),或\'E \'的所有值,但除此之外没有其他...列表继续。潜在地,对于每个单词,我都可以创建成千上万个附加单词!一个100Gb的源文件很快就会变成TB!
换句话说,我需要设置程序可以运行的“级别”,用户可以决定。但是我不确定如何构建该级别?
所以我不确定如何使它工作?在开始之前,我并没有真正想通。我最初的想法是:“拥有一个程序,该程序将从计算机中提取单词索引,然后生成每个单词的变体来说明混淆字符的人。”但是我开始编写代码, \已经意识到这是一项比我想象的还要大的工作,现在我被困在实际上“保留我的输入文件”的部分中!
解决方法
您可以使用级别(0-10)作为输入。
0:什么都不做
10:将所有字母替换为LEET字母。
根据单词的长度,您可以计算要替换的字母数,而只需替换单词中的随机字母,这样就不必总是替换第1级等的第一个字母。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。