Перейти до

IP


Рекомендованные сообщения

Нужен список украинских IP. Именно IP, а не сетей.

Может кто знает где можно взять. Может есть какая-нибудь програмулинка перегоняющая файл с сетями в файл с IP.

Ссылка на сообщение
Поделиться на других сайтах

Скрипт на перле пишется 10 минут (максимум), делает это за минуту (тоже максимум:)

Можешь скинуть мне список сетей на xor <бобик> elizovo.ru

Я в ответ пришлю список ip адресов и сам скрипт.

Ссылка на сообщение
Поделиться на других сайтах
И если не секрет, что делать потом с файлом, в котором больше 100 000 строк?

Бери выше - больше миллиона =))

Наверное отдать на вход nmap'у.... ))

Кстати, вот сам скрипт:

#!/usr/local/bin/perl

while ($line = <STDIN>)
{
# Убираем символ конца строки
chomp $line;
# Разделяем сеть на цЫфырки и длинну маски подсети или берем следующую запись
($a, $b, $c, $d, $mask) = $line =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})[\/\\\:]+(\d{1,2})/ or next;
# Создаем число, которое и является на самом деле ip-адресом в десятичной записи
$ip = ($a << 24) + ($b << 16) + ($c << 8) + $d;	
# Получаем начальное число, которое послужит основой для создания других адресов
$begin = ($ip >> 32 - $mask) << 32 - $mask;
# Количество компов в сети при данной маске
$offset = 2 ** (32 - $mask) - 1;

foreach $n (1..$offset)
{
 # Получаем ip-адрес в десятичной записи
 $num = $begin + $n;
 # Получаем первое число в десятичной записи
 $a = $num >> 24;
 # Получаем первую цЫфру, обозначающую первые 8 байт
 $a1 = $a << 24;
 # Получаем второе число в десятичной записи
 $b = ($num - $a1) >> 16;
 # Получаем вторую цЫфру, обозначающую вторые 8 байт
 $b1 = $b << 16;
 # Получаем третье число в десятичной записи
 $c = ($num - $a1 - $b1) >> 8;
 # Получаем третью цЫфру, обозначающую третьи 8 байт
 $c1 = $c << 8;
 # Получаем четвертую цЫфру, обозначающую последние 8 байт
 $d = $num - $a1 - $b1 - $c1;
 # Пропускаем итерацию, если последняя цЫфра равна 0 или 255
 next if($d == 0 or $d == 255);
 # Вывод на выход aka в stdout
 print STDOUT "$a.$b.$c.$d\n";
}
# Для контроля за процентом выполненности задания, сообщения посылаются не в stdout
print STDERR "$line - done\n";
}

Скрипт сделан в консольном варианте.

Поэтому запускать можно так:

./скрипт < файл_с_сетями > файл_с_ип_адресами

или так:

cat | ./скрипт > файл_с_ип_адресами

и вставлять/писать(:-) адреса (ну и Ctrl+D в конце нажать :)

Это так... в качестве ликбеза на всякий случай =))

 

Доделать этот скрипт до работы с cgi, я думаю, люди смогут, кому понадобится.

Ссылка на сообщение
Поделиться на других сайтах

О! Чуть не забыл сказать.

Во первых, чтоб он выполнялся, разрешите ему выполняться (chmod +x скрипт)

Во вторых, если он не захочет выполняться, возможно у вас нет программы перла по адресу /usr/local/bin/perl

Поэтому посмотрите, где он у вас (which perl).

Либо можете написать #!/usr/bin/perl

В 99 из 80 возможных % должно заработать =)

Если и тут не заработает, то тут я не смогу ничего сказать кроме rtfm perl + rtfm *nix =))

Ссылка на сообщение
Поделиться на других сайтах
И если не секрет, что делать потом с файлом, в котором больше 100 000 строк?

Бери выше - больше миллиона =))

Наверное отдать на вход nmap'у.... ))

А не подавится?

Предлагаю в национальных цветах распечатать и использовать как обои. :)-)

Ссылка на сообщение
Поделиться на других сайтах
Предлагаю в национальных цветах распечатать и использовать как обои. :)-)

ГЫГЫГЫ Поддерживаю!!!

 

А подсунуть он их скорее всего ЮзерГейту хочет!!! :)-) Тот точно удавиться!!! :tongue: Сдается мне любая програмулина таким списком удавиться, и не уверен что редактор какой-нить такое откроет!!! :)-)

Ссылка на сообщение
Поделиться на других сайтах
  • 2 weeks later...
Предлагаю в национальных цветах распечатать и использовать как обои. :(-)

ГЫГЫГЫ Поддерживаю!!!

 

А подсунуть он их скорее всего ЮзерГейту хочет!!! :(-) Тот точно удавиться!!! :tongue: Сдается мне любая програмулина таким списком удавиться, и не уверен что редактор какой-нить такое откроет!!! :(-)

Ну можно подсунуть базе данных, та не удавиться. MySql простые записи на 2 лимона реагирует примерно за 0.75 секунды.

Ссылка на сообщение
Поделиться на других сайтах
Нужен список украинских IP. Именно IP, а не сетей.

Может кто знает где можно взять. Может есть какая-нибудь програмулинка перегоняющая файл с сетями в файл с IP.

Если для проверялки использовать то может лучше так? :

#!/usr/bin/perl

 

my $ip=shift;

 

print "IP-address $ip is ";

print "not " unless (&ukr_ip($ip));

print "ukrainian\n";

exit;

 

 

 

sub ukr_ip {

my $uaddr=shift;

map {

my ($oaddr,$mask)=split/\//,$_;

my $poaddr=unpack("L",pack("C4",(split (/\./, $oaddr))));

my $puaddr=unpack("L",pack("C4",(split (/\./, $uaddr))));

my $pmask=unpack("L",pack("B32",(1 x $mask)));

return 1 if (($puaddr & $pmask)==($poaddr & $pmask));

}(<DATA>);

return 0;

}

 

 

__DATA__

62.16.0.0/19

62.64.64.0/18

Ну и дальше сети

Ссылка на сообщение
Поделиться на других сайтах
Нужен список украинских IP. Именно IP, а не сетей.

Может кто знает где можно взять. Может есть какая-нибудь програмулинка перегоняющая файл с сетями в файл с IP.

Если для проверялки использовать то может лучше так? :

Может. Но человеку нужен был список а не проверялка.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...