python-3.x - 如何将输入字符限制为字母
问题描述
我对python不太了解,我现在正在研究逆向工程,对于一个训练程序crackme.exe我在python上找到了这段代码。请告诉我如何检查输入的数字字符 - 只需要字母,并且必须排除数字或输出“输入错误”
def keygen(name):
word = 0
for letter in name:
word += ord(letter)
return word ^ 0x5678 ^ 0x1234
import sys
if __name__ == '__main__':
if len(sys.argv) < 2:
print("Name")
sys.exit(1)
else:
print(keygen(sys.argv[1].upper()))
sys.argv
sys.exit(1)
解决方案
您可以遍历输入字符串的每个字符并检查是否是字母表中的字母。
我在下面创建了一个函数,is_valid
它应该可以解决您的问题。如果要更改哪些字符有效,可以通过编辑alphabet
变量来实现。
alphabet = "abcdefghijklmnopqrstuvwxyz"
def is_valid(text):
for char in text:
# char.lower() makes sure the text is lowercase, otherwise "Hello" would not be valid because capital H wasn't in the alphabet.
if char.lower() not in alphabet:
return False
else: # We've finished iterating, which means all characters were in the alphabet.
return True
if __name__ == '__main__':
if len(sys.argv) < 2:
print("Name")
sys.exit(1)
else:
if is_valid(sys.argv[1]): # Yay! Its valid so we can run our function
print(keygen(sys.argv[1].upper()))
else:
sys.exit(1) # Its not valid so we should exit with Code 1
推荐阅读
- string - 在python3的数据框列中拆分一个字符串
- python - 包含重复对象的查询集上的 Django .update()
- android - Android如何在不导航回栈的情况下返回主活动?
- php - 如何按顺序查找特定字符的出现次数
- ios - 未从 API 获取所有数据
- c# - 击中角色物理?
- c# - 从 UserControl 的属性访问所有内部控件的属性
- angular - TypeError: jit_nodeValue_17(...) 不是函数
- javascript - 如何在我的 Simon 游戏中重新运行该功能?
- javascript - 使用 Cheerio 和 Node.js 传递重新认证页面