请参阅以下34个字符的ASCII字符串。我试图在这个字符串上有3个MD5哈希匹配。
8AC905DD4AB2038E5F7EABEAE792AC41BC
[A-F0-9]{32}
仅匹配前32个字符。
这是我所拥有的二元逆向工程项目的一部分。
如何从提到的字符串中获得3个不同的匹配?任何想法都表示赞赏。
干杯,
答案 0 :(得分:3)
您没有说出您使用的语言,因此我提供了两个片段 - 用于Python和PHP。但这里的线索是(?=([A-F0-9]{32}))
模式(见下面的例子)。
有一个解决方案,以下是用Python编写的:
>>> import re
>>> data = '8AC905DD4AB2038E5F7EABEAE792AC41BC'
>>> matches = re.finditer(r'(?=([A-F0-9]{32}))', data)
>>> results = [match.group(1) for match in matches]
结果将是(如this demo):
>>> results
['8AC905DD4AB2038E5F7EABEAE792AC41', 'AC905DD4AB2038E5F7EABEAE792AC41B', 'C905DD4AB2038E5F7EABEAE792AC41BC']
这是你一直期待的。
在PHP中,它看起来像这样:
<?php
$data = '8AC905DD4AB2038E5F7EABEAE792AC41BC';
$results = array();
preg_match_all('/(?=([A-F0-9]{32}))/', $data, $results);
并且$results
将是以下数组:
Array
(
[0] => 8AC905DD4AB2038E5F7EABEAE792AC41
[1] => AC905DD4AB2038E5F7EABEAE792AC41B
[2] => C905DD4AB2038E5F7EABEAE792AC41BC
)
请参阅this demo以获取证明。