Avatar billede shako Novice
05. marts 2014 - 10:35 Der er 7 kommentarer og
1 løsning

IP Scanner

Jeg har siddet lidt i C# og lavet en IP scanner, men jeg har et problem.

Hvis jeg sidder på et netværk (192.168.1.*) og scanner alle computere med pings i mit C# program, med 4000ms timeout, 255 TTL og alting plejer jeg at finde 33 computere.

Hvis jeg bruger et "professionelt" IP-scan program (SoftPerfect Network Scanner) finder den 55 computere på samme netværk.

Jeg prøvede manuelt (fra CMD) at pinge nogle af de computere som SoftPerfect Network Scanner kunne se, men som jeg ikke kunne og jeg fik timeout uanset om jeg satte 1000ms timeout eller 20000ms timeout.

Hvordan kan deres program semaskiner som ikke vil pinges, når mit ikke kan?

Min kode er irrelevant, men hvis det skulle interesere så er den meget meget simpel (bruger default 128 TTL):


            string network = "10.10.75.";
            string ip = "";

            for (int i = 1; i < 255; i++)
            {
                ip = network + i.ToString();
                var reply = new Ping().Send(ip, 4000);
                if (reply.Status == IPStatus.Success)
                {
                    Console.WriteLine(reply.Address.ToString());
                    ammount++;
                }
               
            }
Avatar billede HKW Nybegynder
05. marts 2014 - 10:42 #1
De kigger på arp-pakker. Selvom de ikke svarer på ping, så svarer de fleste på arp.
Avatar billede shako Novice
05. marts 2014 - 10:44 #2
Grunden til at jeg laver det her er for at finde IP'er jeg kan lave ARP opslag ved for at finde deres MAC.

Er der en måde jeg kan slå ARP op uden IP? Skal jeg broadcaste for at danne et ARP table?

Jeg ved godt jeg kan lave en ping på 10.10.75.255 og så en arp -a i CMD, det er den funktionalitet jeg er lidt efter i C#.
Avatar billede HKW Nybegynder
05. marts 2014 - 10:57 #3
Ja, det kræver noget broadcasting på mac-adresse-niveau.

http://www.tamirgal.com/blog/post/ARP-Resolver-C-Class.aspx

Giver et eksemepel på det i C#. Han bruger pcap til sende pakkerne med.
Avatar billede shako Novice
05. marts 2014 - 11:04 #4
Det ser spændende ud, men hvor finder jeg hans libraries?

using Tamir.IPLib;
using Tamir.IPLib.Packets;
using Tamir.IPLib.Util;


Desuden har jeg lige fundet noget som hedder NetBios Ping. Ved du hvad det er?
Avatar billede crazysnap Seniormester
05. marts 2014 - 11:47 #5
Så vidt jeg kan se, kan du hente koden til Tamir.IPLib her fra:

http://sharppcap.svn.sourceforge.net/viewvc/sharppcap/

På den side er der et link "Download GNU tarball", hvor du kan få fat i koden (kig i trunk, efter du har pakket filen ud).
Avatar billede crazysnap Seniormester
05. marts 2014 - 11:49 #6
Hov, det ser ud til du skal ind under branches (når du har pakket filen ud) for at finde koden med namespace 'Tamir.IPLib'.
Avatar billede shako Novice
05. marts 2014 - 12:28 #7
Så har jeg lige et sidste spørgsmål.

Jeg har nu lavet en ARP scanner som fungerer fuldstændig perfekt.

Jeg har brugt Pinvoke:

[DllImport("iphlpapi.dll", ExactSpelling = true)]
public static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref uint PhyAddrLen);

Den finder alle IP'er på netværket, men der er dog et problem.

Et fuldt scan (fra 192.168.1.1 til 192.168.1.255) tager 15 minutter.

Jeg kan vidst ikke ændre ARP timeout så vidt jeg kan se, men jeg læste noget om async og multithreading.

Har du nogle foreslag? Hvis ikke så skriv et svar, du fortjener point ;)
Avatar billede shako Novice
07. marts 2014 - 11:10 #8
Du får lige et par dage til at skrive et svar, ellers hugger jeg selv point >:O
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester