Я пытаюсь отследить пользователя, зарегистрированного в моей системе. У меня есть его настоящее имя, и я знаю, что он из Норвегии. Поскольку его настоящее имя не хранится нигде в системе, единственный способ проследить его - использовать его из Норвегии.Получить все IP-адреса из текстового файла, которые находятся в файле, содержащем все подсети
Из журналов за последние несколько месяцев я извлек список 2000 IP-адресов, которые, безусловно, включают его IP. этот файл называется ips.txt и имеет по одному IP на строку. ИС являются повсюду в мире, в основном из Балканской, Южной Америки и Ближнего Востока (да, это довольно разнообразная база пользователей).
В этом файле содержится 2000 IP-адресов: по одной в строке. Большинство из них (60% или около того) из Египта и Tunesia, поскольку пользователи из этих стран не имеют выделенных IP-адресов.
От http://www.ipdeny.com/ipblocks/ Я взял список, содержащий все подсети из Норвегии. Более конкретно: http://www.ipdeny.com/ipblocks/data/aggregated/no-aggregated.zone (не уверен, что этот список полный)
Мой вопрос: Как я могу выбрать все IP-адреса из ips.txt, которые находятся в одной из подсетей из файла зоны?
Примечания:
- Я знаю, это, вероятно, займет
#IPs * #subnets
(квадратное) время. Я не забочусь об эффективности, так что сценарий завершен примерно через час. - Я добавил тег Regex, но я понятия не имею, как разбирать IP-подсети с помощью regex.
- Все IPv4
Это, безусловно, ** COULD ** будет комбинацией RegEx и еще чего-то. JavaScript, вероятно, тоже будет работать. Любой конкретный язык, который вы хотите использовать? – Erutan409
В настоящее время я использую очень уродливый способ: IP -> 32 бит int; затем проверьте его "(ip >> subnetlength) & (подсеть >> subnetlength) == 0". Должен быть более умный способ, но, возможно, я закончу его, прежде чем кто-то придумает умное решение. Если это так, я поставлю свой собственный ответ в комментариях! – Jasper