26. juni 2006 - 20:00
Der er
30 kommentarer og 1 løsning
Få fat i lokale IP adresser
Følgende kode giver mig de lokale IP adresser på den lokale PC: IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName()); this.listBox.Items.Add("Local IP addresses:"); foreach (IPAddress adr in hostEntry.AddressList) this.listBox.Items.Add(adr.ToString()); Men hvad skal jeg gøre for at få alle IP adresser på det lokale netværk? Evt. bare de IP adresser der er registreret på nærmeste router / switch.
Annonceindlæg tema
Cloud & AI
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Det er vist en ret umulig opgave. Min bedste ide er at pinge alle mulige adresser sog saa definere at dem som svarer er dem som er der.
ja, du skal pinge på det netværk, som du vil undersøge - det kan hurtigt blive et stort arbejde hvis nettet ikke er 192.168.1.* lignende...
hæhæ - joo. Men nu er jeg ikke IP ekspert. Hvilke adresser skal jeg pinge efter? Hvis vi siger at min adresse er: 125.125.125.1, er det så nok at gennemsøge 125.125.125.* eller skal man længere ud; a la 125.125.*.*?
Hvis din adresse er 10.0.0.188 - så er nettet 10.*.*.*. Her er der så cirka 256^3 adresser du skal scanne. Hvis din adresse er 192.168.1.88, skal scanne 192.168.1.*.Her er der kun 255 adresser. Der forskellige lokale netværk, hvor de 2 ovenstående er eksempler. Adressen 125.125.125.1 er ikke på et lokalt netværk.
tror jeg kan "nøjes" med de to sidste - har 3 enheder der alle starter med de samme 2 første. Smid et svar begge to for en deler.
ok - arne tager puljen - han samler da vidts lidt så vidt jeg kan se ;)
26. juni 2006 - 20:58
#10
du behoever ikke tro - du kan vide brug ipconfig kommandoen hvis din subnet mask er 255.255.255.0 saa beheover du kun at process fra .1 til .254
26. juni 2006 - 20:59
#11
det er korrekt - jeg samler :-)
26. juni 2006 - 21:00
#12
På nogle switche og routere er det muligt at hente en liste over klienter tilsluttet. Skal det virke generalt, eller op med specifikt udstyr?
26. juni 2006 - 21:03
#13
arne -> subnet er 255.255.224.0 - vil det virke også? hmortensen -> det er godt nok specifikt - en Motorola SBG900 Wireless Surfboard Gateway, men har slet ikke styr over API til den.
26. juni 2006 - 21:08
#14
saa skal du gennem 8292 mulige noder (8190 hvis man traekker de 2 i enderne fra)
26. juni 2006 - 21:19
#15
dvs 255.255.224.1-254, 255.255.225.1-254 indtil 255.255.255.1-254 ?
26. juni 2006 - 21:19
#16
nej - jeg prover lige at bixe et C# program
26. juni 2006 - 21:21
#17
Arne, .NET versionen har vel sin relevans så, da 2.0 har Ping klasse.
26. juni 2006 - 21:38
#18
using System; using System.Net; namespace E { public class MainClass { public static void PrintAllAddresses(string ip, string mask) { byte[] iptmp = IPAddress.Parse(ip).GetAddressBytes(); Array.Reverse(iptmp); int ip2 = BitConverter.ToInt32(iptmp, 0); byte[] masktmp = IPAddress.Parse(mask).GetAddressBytes(); Array.Reverse(masktmp); int mask2 = BitConverter.ToInt32(masktmp, 0); int start = (ip2 & mask2) + 1; int end = ip2 | (~mask2) - 1; for(int i = start; i <= end; i++) { byte[] tmp = BitConverter.GetBytes(i); Array.Reverse(tmp); IPAddress adr = IPAddress.Parse(tmp[0] + "." + tmp[1] + "." + tmp[2] + "." + tmp[3]); Console.WriteLine(adr); } } public static void Main(string[] args) { PrintAllAddresses("192.168.1.10", "255.255.255.0"); } } }
26. juni 2006 - 21:38
#19
ikke koent, men jeg tror at det virker
26. juni 2006 - 21:39
#20
hmortensen> IP adresse manipulationen er vist uafhaengig af .NET version ping er indbygget i .NET 2.x i .NET 1.x kan man bruge noget Win32 API - jeg har vist noget kode liggende og flyde
26. juni 2006 - 21:48
#21
Hvis jeg kalder den sådan her: PrintAllAddresses("212.10.33.41", "255.255.224.0"); så får jeg 8191 adresser - så er det bare at pinge. :)
26. juni 2006 - 21:56
#22
(ser adresserne rigtige ude ?) jep og som hmortensen fik bragt paa bane saa er ping noget nemmere i .NET 2.x
26. juni 2006 - 22:11
#23
ja de ser fine ud, men pyyh det tager lang tid at pinge dem alle....
26. juni 2006 - 22:13
#24
multithreaded !!
26. juni 2006 - 22:14
#25
ja - har sat den i gang synkront - nu får den lov at køre færdig.
26. juni 2006 - 22:26
#26
Har du mulighed for at bruge linux ? nmap (
www.insecure.org ) er et godt tool. Man kan iøvrigt ikke regne med, at man kan pinge computere.
26. juni 2006 - 22:55
#27
har ikke linux - kun windåse. Anyway døde den synkront ;) - så hver Ping fik sin egen tråd - det tog 47 sek. at løbe igennem, men den finder alt alt for mange. 1095 to be exact.
26. juni 2006 - 22:56
#28
Har jeg pinget hele den lokale Stofa afdeling?
26. juni 2006 - 22:58
#29
Ping kode - mest taget fra MSDN: Ping pingSender = new Ping(); PingOptions options = new PingOptions(); options.DontFragment = true; string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; byte[] buffer = Encoding.ASCII.GetBytes(data); int timeout = 120; IPAddress adr = this.allAddresses[Convert.ToInt32(Thread.CurrentThread.Name)]; PingReply reply = pingSender.Send(adr, timeout, buffer, options); if (reply.Status == IPStatus.Success) this.AddToAddressList(adr.ToString());
26. juni 2006 - 23:10
#30
Hvis Stofa kabelnet er bridget, saa har du nok taget hele kvarterets computere med.
26. juni 2006 - 23:17
#31
ok - tak for hjælpen - fedter lidt mere med det og så i seng - godnat :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.