Как правило, это делается в awk с использованием ассоциативных массивов для запоминания того, что уже было замечено во входных данных. Используя разделитель пробельных полей awk по умолчанию, мы отмечаем, что поле 2 — это IP-адрес, а поле 8 — это URL-адрес, например,
awk '$8=="/page1.html" { ipaddr[$2] = 1; next }
$8=="/somethingelse2.html" { if(ipaddr[$2]==1)print $2 }'
Это сравнивает поле URL-адреса, и когда оно совпадает с первым URL-адресом, оно создает запись в массиве ipaddr
для IP-адреса, чтобы хранить значение 1. Когда оно соответствует второму URL-адресу, оно проверяет, установили ли мы запись для тот же ip-адрес, и если да, то печатает его. Чтобы избежать перепечатки одного и того же IP-адреса, мы могли бы отметить его в другом массиве:
awk '$8=="/page1.html" { ipaddr[$2] = 1; next }
$8=="/somethingelse2.html" { if(ipaddr[$2]==1 && !done[$2]){print $2; done[$2]=1 } }'
Если URL-адрес может содержать часть запроса (, например "/page1.html?id=77"
), вы можете использовать совпадения вместо сравнений, например $8~/^\/page1.html/
.
Если URL-адреса могут быть посещены в обратном порядке, вы можете использовать значение битовой маски, чтобы запомнить, какой из них вы уже видели, например, 1 для страницы 1 и 2 для чего-то еще 2, а затем подождать, пока не будет получено значение 3.Битмаски доступны в awk только через такие функции, как or
и and
. Таким образом, у нас может быть
awk '
BEGIN { v["/page1.html"] = 1
v["/somethingelse2.html"] = 2
}
$8=="/page1.html" || $8=="/somethingelse2.html" {
ipaddr[$2] = or(ipaddr[$2], v[$8])
if(ipaddr[$2]==3){ print $2; ipaddr[$2] = 4 }
}'
Это устанавливает в блоке BEGIN, сделанном один раз в начале, сопоставление в ассоциативном массиве v
для преобразования URL-адреса в наше значение битовой маски (просто целое число ). Когда любой из URL-адресов совпадает, запомненное значение имеет соответствующее значение битовой маски или введено -. Если теперь оно равно 3, мы печатаем адрес и устанавливаем его так, чтобы он больше не печатался.
Возможно, его блокирует антивирусный сканер Windows? Я знаю, что пытался установить metasploit на Kali в WSL, и мой антивирусный сканер сошел с ума от всех данных об эксплойтах. Что логично, но я не думал об этом заранее.