目录导航
BabelStrike简介
该工具的目的是从全名列表中标准化并生成可能的用户名,该全名列表可能包括用多种(非英语)语言编写的名称,这是从员工姓名列表(例如来自 Linkedin)中抓取的常见问题。
BabelStrike 将完整姓名列表作为输入并执行
1. 非英语姓名的罗马化(基于语言字母音译映射)
2. 基于各种命名约定规则实现姓名到用户名的转换。
罗马化功能目前支持:希腊语、印地语、西班牙语、法语、波兰语、葡萄牙语和匈牙利语。
视频演示
使用示例
该工具的目的是从全名列表中标准化并生成可能的用户名,该全名列表可能包括用多种(非英语)语言编写的名称,这是从员工姓名列表(例如来自 Linkedin)中抓取的常见问题。
通过使用 [-a],规则也可以自动应用于全名的反转版本。
{firstname}{lastname} | {f}{l} | {lastname}{f} | {f}{la} | {firstname} |
{firstname}.{lastname} | {f}.{l} | {lastname}.{f} | {f}.{la} | {lastname} |
{firstname}_{lastname} | {f}_{l} | {lastname}_{f} | {f}_{la} | |
{firstname}-{lastname} | {f}-{l} | {lastname}-{f} | {f}-{la} | |
{firstname} {lastname} | {f} {l} | {lastname} {f} | {f} {la} | |
{f}{lastname} | {fi}{lastname} | {lastname}{fi} | {la}{f} | |
{f}.{lastname} | {fi}.{lastname} | {lastname}.{fi} | {la}.{f} | |
{f}_{lastname} | {fi}_{lastname} | {lastname}_{fi} | {la}_{f} | |
{f}-{lastname} | {fi}-{lastname} | {lastname}-{fi} | {la}-{f} | |
{f} {lastname} | {fi} {lastname} | {lastname} {fi} | {la} {f} |
检测到中间名时的转换规则
{firstname}{middle}{lastname} | {f}{m}{l} | {lastname}{middle}{f} | {f}{m}{l} | |
{firstname}.{middle}.{lastname} | {f}.{m}.{l} | {lastname}.{middle}.{f} | {f}.{m}.{l} | |
{firstname}_{middle}_{lastname} | {f}_{m}_{l} | {lastname}_{middle}_{f} | {f}_{m}_{l} | |
{firstname}-{middle}-{lastname} | {f}-{m}-{l} | {lastname}-{middle}-{f} | {f}-{m}-{l} | |
{firstname} {middle} {lastname} | {f} {m} {l} | {lastname} {middle} {f} | {f} {m} {l} | |
{f}{middle}{lastname} | {fi}{middle}{lastname} | {lastname}{middle}{fi} | {firstname} | |
{f}.{middle}.{lastname} | {fi}.{middle}.{lastname} | {lastname}.{middle}.{fi} | {middle} | |
{f}_{middle}_{lastname} | {fi}_{middle}_{lastname} | {lastname}_{middle}_{fi} | {lastname} | |
{f}-{middle}-{lastname} | {fi}-{middle}-{lastname} | {lastname}-{middle}-{fi} | ||
{f} {middle} {lastname} | {fi} {middle} {lastname} | {lastname} {middle} {fi} |
安装与使用
使用 pip 安装需求
pip3 install -r requirements.txt
为语言安装附加字体
为了能够处理某些语言,您可能需要在计算机上安装其他字体。以下是如何安装印地语字体的示例:
- 从此处下载字体: https: //fonts.google.com/specimen/Hind。
- 解压缩并将字体移入
~/.local/share/fonts
(如果目录不存在,则创建它)。
如果你现在打开一个新终端,字符将被正确表示(这是在 kali linux 上测试的)。
用法
babelstrike.py [-h] -f FILE [-r] [-c] [-a] [-d DOMAIN] [-u] [-q]
options:
-h, --help show this help message and exit
-f FILE, --file FILE File to process.
-r, --romanization Transliterate names to the latin alphabet.
-c, --convertion Perform name-to-username convertions.
-a, --auto-reverse Perform name-to-username convertion patterns against the reversed version of each name as well.
-d DOMAIN, --domain DOMAIN
Comma seperated list of domains to add as prefix to each generated username (e.g. EVILCORP\scott.henderson).
-u, --update Pull the latest version from the original repo.
-q, --quiet Do not print the banner on startup.
贡献
为了使罗马化功能准确,我决定对每种语言(最好是由母语人士制作)使用自定义字符替换映射。我正在世界各地寻找一些很酷的人来创建这样的地图,这些地图基本上是一个 Python 字典。
指示
如果您想贡献语言课程,您所要做的就是:
- 找到您语言字母表的官方罗马化标准(例如在维基百科中),
- 从language_classes文件夹中复制语言类文件以用作模板(我建议您使用 Greek.py),
- 编辑文件名和类名以代表您的语言,
- 编辑char_substitution_map字典并创建字符替换映射(重要提示:不要更改字典的名称),
- 仅映射小写字母,考虑可能以拉丁字母表的单个字符音译的双字母或三字母发音,考虑重音字符(例如 à、è、ì、ò、ù),当一个字母有多个音译对应项时,请使用列表来包含所有这些字母(BabelStrike 将处理所有变体)。例子:
# In Greek, the letter 'υ' may be transliterated as 'y' or 'u'. # This is how it should be declared in the character mapping dictionary: char_substitution_map = { 'ά' : 'a', 'έ' : 'e', 'υ' : ['y','u'] }
- 将新类保存在适当命名的language_classes文件夹中。
项目地址
GitHub:
https://github.com/t3l3machus/BabelStrike
下载地址
转载请注明出处及链接