我很想知道Arduino Leonardo的键盘和鼠标库是否可能被用作Windows用户密码暴力黑客。使用我有限的爱好编码和arduino技能,我开始为此编写程序。
最初的问题似乎是串口输出喷出随机字母/数字时应该喷出普通密码。我花了一分钟才意识到这些是常见的密码。好吧,他们每个人的最后一封信。
守则:
// tests most common paswords, if one of these works your idiot alert should be ringing
char myStrings[26]={ 'password', '123456', '12345678',
'1234', 'qwerty','12345','password', 'dragon', 'pussy',
'baseball', 'football','monkey', 'letmein', '696969',
'abc123', 'mustang','michael', 'shadow', 'master',
'jennifer', 'harley','1234567', 'jordan',
'2000', '111111',
'COMMON PASSWORDS EXHAUSTED: ATTEMPTING BRUTE FORCE'};
//the letters... yep
char myLetters[26]={'a', 'b', 'c',
'd', 'e','f','g', 'h', 'i',
'j', 'k','l', 'm', 'n',
'o', 'p','q', 'r', 's',
't', 'u','v', 'w',
'x', 'y','z'};
//establishes serial connection
void setup(){
Serial.begin(9600);
}
void loop(){
for (int i = 0; i < 27; i++){
Serial.println(myStrings[i]);
}
Serial.println("Common Finish"); // the common passwords have been attempted
for (int o = 0; o < 26; o++){
Serial.println(myLetters[o]);
delay(500);
}
Serial.println("Letter Finish"); // the letters have been finished
Serial.println("rinse wash repeat."); //the loop n' stuff
}
arduino串口监视器的图片:
我很欣赏有关我如何滥用数组或字符串的任何见解。感谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
char
仅代表一个字符,因此myStrings
实际上只是一个包含26个字母/数字的数组。每个字符串中的其他所有内容都被忽略。同样重要的是要注意,使用单引号时,每次只能有一个字符;例如'a'
没问题,但'abc'
无效。
要使用字符串文字(在草图运行时永远不必更改的文本),您可以使用const char *
数据类型而不仅仅是char
,并将文本用双引号括起来, "like this"
。
您可以重新编写字符串数组,如下所示:
const char *myStrings[26] = {"password", "123456", "12345678",
"1234", "qwerty","12345","password", "dragon", "pussy",
"baseball", "football","monkey", "letmein", "696969",
"abc123", "mustang","michael", "shadow", "master",
"jennifer", "harley","1234567", "jordan",
"2000", "111111",
"COMMON PASSWORDS EXHAUSTED: ATTEMPTING BRUTE FORCE"};
该数组中的每个字符串本身都是char
的数组。您可以在Arduino网站的string documentation上阅读更多相关信息。
<强>用法强>
如果您只想将这些字符串输出到串行,那么您仍然可以以相同的方式访问它。例如,此循环应该仍然有效:
for (int i = 0; i < 27; i++){
Serial.println(myStrings[i]);
}
但是,如果要比较该类型的两个字符串,则不能使用通常的相等运算符(==
)。您需要使用strcmp()
。
字符串对象
另一种方法是使用String
对象来存储字符串。它使用起来容易得多,它允许您在运行时修改字符串数据。但是,它占用了更多内存(在Arduino上非常有限)。如果你想探索那条大道,你可以在Arduino网站上查看String object documentation。