我试图编写一个小的检测脚本,找出python2中的“冒名顶替者”用户名/屏幕名。例如,使用“aIIison”(带2个大写字母i)来模拟用户名“allison”(小写字母L)。 条件是,名称的长度必须相同,所有字符都必须相同,除了被替换的字母0而不是大写O,或者相反,大写字母i代替小写字母L等等
这就是我到目前为止所拥有的,现在我只是迷路了。 我知道这里一团糟。有什么关于我应该如何正确构建逻辑的建议吗?在
mylist = ['allison', 'allisPn']
name_to_eval = 'aIIison'
for names in mylist:
flag = 0
if len(names) == len(name_to_eval):
for i in range(len(name_to_eval)):
err1 = name_to_eval[i] == 'I' and names[i] == 'l'
cond1 = not err1 and name_to_eval[i] == names[i]
if err1 and cond1:
print names
首先定义一个潜在替代品列表:
然后比较应用了所有替换的两个字符串:
^{pr2}$使用您的代码:
定义一个字典映射“真”到“假”字符。假字符串也可以是较长的字符串,以防有多个可能的替换。然后,只需}用户名,并检查假名称
zip
、real
和{f
中的每个字符是否与真实字符r
或其任何常见替换相对应。在这假设两个名称的长度相同,“真实”名称只包含“适当”字符,没有“leet speak”替换,尽管也可以通过相应地扩展
subst
dict来支持字母。在相关问题 更多 >
编程相关推荐