#powershell
Вопрос:
Я пытался создать код, в котором он изменит IP-адрес с помощью регулярного выражения, а затем в MD5, чтобы его можно было отследить и использовать в журналах, но не идентифицировать лично по соображениям безопасности. Когда я запускаю свой код, он выводит хэш IP-адреса, но затем последняя часть дважды и ничего, как показано:`
$s = "IPA:10.51.5.41"
$q="b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(.|$)){4}b"
$result = [regex]::Matches($s, $q)
$matchCount = $result.Groups.Count;
for ($num = 0; $num -lt $matchCount; $num ) {
$individualMatch = $result.Groups[$num].Value;
Write-Host "num is " $individualMatch;
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$utf8 = New-Object -TypeName System.Text.UTF8Encoding
$hash = [System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($individualMatch)))
Write-Host "hash is " $hash;
}`
Результаты:
num is 10.51.5.41
hash is AE-B5-C4-0C-27-83-74-33-55-E4-6B-A2-BE-5A-35-F6
num is 41
hash is 34-16-A7-5F-4C-EA-91-09-50-7C-AC-D8-E2-F2-AE-FC
num is 41
hash is 34-16-A7-5F-4C-EA-91-09-50-7C-AC-D8-E2-F2-AE-FC
num is
hash is D4-1D-8C-D9-8F-00-B2-04-E9-80-09-98-EC-F8-42-7E
Я хочу иметь первую часть и удалить остальные, и ошибка может быть вызвана моим регулярным выражением. Спасибо
Комментарии:
1. Пожалуйста, опубликуйте свой код в виде текста, а не скриншотов.
Ответ №1:
Поскольку вам нужен только весь IP-адрес, а не группы захвата в конце, не просматривайте все группы захвата:
# We can reuse the same MD5 provider, no need to create a new one every time
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
# Extract all IP addresses
$s = "IPA:10.51.5.41"
$q="b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(.|$)){4}b"
$result = [regex]::Matches($s, $q)
# Loop through each match (not each group in each match)
foreach($match in $result){
if($match.Success){
Write-Host "Input is: '$($match.Value)'"
$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($match.Value)))
Write-Host "Hash is: '${hash}'"
}
}
Комментарии:
1. вместо того, чтобы использовать регулярное выражение, не было бы более прямым просто разделить
:
и взять последнюю часть?2. @Lee_Dailey Это было бы, но это не тот вопрос, который задал ОП 🙂
3. упс! я отвлекся … спасибо за ответ, тхо! [ усмехается ]