список IP в своей подсети
От: vvv848165@ya.ru  
Дата: 18.11.19 07:29
Оценка:
можно ли получить список всех IP в своей подсети (или только перебором)?
Re: список IP в своей подсети
От: Maniacal Россия  
Дата: 18.11.19 07:53
Оценка: +1
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>можно ли получить список всех IP в своей подсети (или только перебором)?


Перебором тоже может не получиться, если на том конце откликаться не захотят.
UDP:
кстати:
arp -a
Отредактировано 18.11.2019 7:55 Maniacal . Предыдущая версия . Еще …
Отредактировано 18.11.2019 7:54 Maniacal . Предыдущая версия .
Re: список IP в своей подсети
От: vsb Казахстан  
Дата: 18.11.19 08:10
Оценка:
Для вендосетей можно ещё попробовать net view /all
Re: список IP в своей подсети
От: Masterspline  
Дата: 18.11.19 08:36
Оценка: 3 (1)
VYR>можно ли получить список всех IP в своей подсети (или только перебором)?

Запустить снифер и отловить все широковещательные arp запросы MAC адреса назначения и собрать SRC IP адреса спрашивающих.
ARP, Request who-has DST-IP tell SRC-IP, length 28

sudo tcpdump -npi eth0 arp
Re: список IP в своей подсети
От: vvv848165@ya.ru  
Дата: 18.11.19 09:34
Оценка:
по идеи DHCP должен знать сколько IP раздал ... Но можно ли у него спросить?
Re: список IP в своей подсети
От: varenikAA  
Дата: 18.11.19 09:45
Оценка: +1
Здравствуйте, vvv848165@ya.ru, Вы писали:


VYR>можно ли получить список всех IP в своей подсети (или только перебором)?


using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Threading.Tasks;

  public static class NetworkScanner
    {
        public static uint[] GetIPv4Range(IPAddress ip, IPAddress subnet)
        {
            var bytes = ip.GetAddressBytes();
            Array.Reverse(bytes);
            var ip2 = BitConverter.ToUInt32(bytes, 0);
            bytes = subnet.GetAddressBytes();
            Array.Reverse(bytes);
            var sub = BitConverter.ToUInt32(bytes, 0);

            var first = ip2 & sub;
            var last = first | (0xffffffff & ~sub);

            return new[] { first, last };
        }

        public static List<IPAddress> GetAllIPv4Addresses()
        {
            var bag = new ConcurrentBag<IPAddress>();
            foreach (var ni in NetworkInterface.GetAllNetworkInterfaces())
            {
                if (ni.OperationalStatus != OperationalStatus.Up)
                    continue;

                foreach (var ip in ni.GetIPProperties().UnicastAddresses)
                {
                    if (ip.Address.AddressFamily != AddressFamily.InterNetwork) continue;
                    if (ip.Address.Equals(IPAddress.Loopback))
                    {
                        bag.Add(ip.Address);
                        continue;
                    }

                    var range = GetIPv4Range(ip.Address, ip.IPv4Mask);

                    Parallel.For((int)range[0], (int)range[1], i =>
                    {
                        var bytes = BitConverter.GetBytes((uint)i);
                        Array.Reverse(bytes);
                        bag.Add(new IPAddress(bytes));
                    });
                }
            }

            return bag.ToList();
        }
}
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: список IP в своей подсети
От: Ops Россия  
Дата: 20.11.19 09:32
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>кстати:

M>arp -a

Он разве вернет все, а не только уже известные?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: список IP в своей подсети
От: Maniacal Россия  
Дата: 20.11.19 14:55
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, Maniacal, Вы писали:


M>>кстати:

M>>arp -a

Ops>Он разве вернет все, а не только уже известные?


Такую бы команду да на роутере запустить. Тогда будут все.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.