Hacker魂熊熊燃起着的孙老师正得心应手地在kali炫酷的终端下如云流水地敲击着键盘。伴随着一声清脆的回车敲落,终端上文字疯狂地滚动输出,忽而截止。孙老师的嘴角不禁微微上扬:“就度盘这区区4位分享码还想挡住我的脚步?” 下载完成的,是刚从暗网流出的0day漏洞利用工具,拥有了它,足以威胁到半个世界的服务器安全。
迫不及待地解压之后却只发现一大堆数不清的zip压缩包,和一个readme.txt ,里面写着——恭喜您……(省略几百字)只可惜,还差几步才能使用
若想得到密钥你有两个选择 1. 支付10比特币 2. 看来很擅长破译密码?证明你的实力吧——接着便是输入样例里一堆奇怪的数字。
经过孙老师观察推测,形式应该是这样的:
使用正则表达式定义数字字符串都不陌生吧。通常,使用以下形式:
(1|0|7) (5|6) (2) (4|5)
上面的正则表达式匹配4位数字:第一个是1,0和7中的一个。第二个是5和6中的一个。第三个是2。第四个是4和5中的一个。上面的正则表达式可以成功地与0525匹配,但是不能与8634匹配。
现在,给你一个与上面的公式类似的正则表达式,以及一超长串数字,按顺序输出长串中所有可与正则表达式匹配的所有子串。 那便是所有子压缩包的对应的密码喔。字符串的长度不超过5 * 10 ^ 6。
你能帮帮孙老师吗?
多组输入。每组数据第一行是正整数N(1≤N≤1000),代表N位字符串的正则表示。
接下来N行中,第 i 行 的第一个数
,表示第 i 行有
个数可供候选。这一行接下来会出现这
个数。
每组数据最后一行有一个由纯数字组成的字符串,长度不超过
。
输出所有可以由给定正则表达式匹配的所有子串,每个子串占一行,没有则不用输出。