Autor Téma: Enumerace všech připojených zařízení v síti  (Přečteno 3056 krát)

Offline 3xor

  • Nováček
  • *
  • Příspěvků: 3
  • Karma: 0
Enumerace všech připojených zařízení v síti
« kdy: 19-02-2017, 11:35:24 »
Ahoj,
přestože jsem si přečetl, že zde příliš nefandíte loudilům informací, zkusím vás taky podojit :)

Co potřebuji: Vypsat všechna zařízení připojená na wifi, jejich názvy, IP adresy a ideálně i MAC adresy

V čem mám problém: O networkingu vím vcelku kulový, takže jsem několik posledních dní trávil hledáním návodů, postupů a řešení. Vše, co jsem dosud nalezl a bylo funkční, mělo jeden zásadní problém - dostal jsem výpis pouze připojených PC, telefony, televize, tiskárny, atp. byly vždy ignorovány. Nutno dodat, že bez výjimky šlo o 10-15 let staré kódy, nic aktuálního jsem překvapivě neobjevil.

Hraju si s trialem Delphi 10.1 na W10/64.

Ukázka jednoho z kódů, který mi vrátí pouze PC a ostatní zařízení ignoruje:

Kód: Delphi [Vybrat]
  1. procedure EnumNetResources(List: TStrings);
  2.  
  3.   procedure EnumFunc(NetResource: PNetResource);
  4.   var
  5.     Enum: THandle;
  6.     Count, BufferSize: DWORD;
  7.     Buffer: array[0..16384 div SizeOf(TNetResource)] of TNetResource;
  8.     i: Integer;
  9.   begin
  10.     if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NetResource,
  11. Enum) = NO_ERROR then
  12.     try
  13.       Count := $FFFFFFFF;
  14.       BufferSize := SizeOf(Buffer);
  15.       while WNetEnumResource(Enum, Count, @Buffer, BufferSize) = NO_ERROR do
  16.         for i := 0 to Count - 1 do
  17.         begin
  18.           if Buffer[i].dwDisplayType = RESOURCEDISPLAYTYPE_SERVER then
  19.             List.Add(Buffer[i].lpRemoteName);
  20.           if (Buffer[i].dwUsage and RESOURCEUSAGE_CONTAINER) > 0 then
  21.             EnumFunc(@Buffer[i])
  22.         end;
  23.     finally
  24.       WNetCloseEnum(Enum);
  25.     end;
  26.   end;
  27.  
  28. begin
  29.   EnumFunc(nil);
  30. end;
  31.  
  32. procedure TForm8.Button1Click(Sender: TObject);
  33. begin
  34.   EnumNetResources(ListBox1.Items);
  35. end;

Můžete mne nasměrovat správným směrem? Už vážně nevím, kde hledat.

Děkuji pěkně  :)

Offline Daniel_Andrascik

  • Guru
  • *****
  • Příspěvků: 590
  • Karma: 20
    • Verze Delphi: D2007, D10.4
Re:Enumerace všech připojených zařízení v síti
« Odpověď #1 kdy: 19-02-2017, 13:42:19 »
No o networkingu tiez viem primalo, dokazem akurat tak zosietovat par PC a tlaciarni v malej kancelarii. Ale kedze sa nudim tak malinko sa vyjadrim aby si mohol dalej hladat a skusat. Ale radsej cakaj na vyjadrenie skusenejsich.

Predpokladam ze len PC vidis preto, lebo pouzite enumeracne funkcie asi skenuju nejaku windows sluzbu alebo prostriedok. Preto ostatne zariadenia nevidis.

Malicko by si si mohol pomoct pingovanim vsetkych 255 adries v dostupnej podsieti. Neni to moc efektivne a nezistis nic viac ako len to ze na ktorych ip adresach su zive zariadenia, ale je to stale viac nez co mas teraz.

Musis si stale uvedomit ze so zariadeniami ako su mobily, televizie, tlaciarne a pod nemozes pracovat rovnako ako s plnohodnotymi win OS stanicami, ktore poskytuju stovky dalsich sietovych sluzieb. Ping by malo podporavat takmer kazde slusne IP zariadenie, ale aj ten sa da zablokovat alebo zakazat, ale to uz je prasarna. IP zariadenie ktore nie je mozne pingnut na sieti nechcem mat. Dalsie sluzby ti mozu komplikovat firewally.

Inac co viem tak wifi ruter by mal mat v sebe nejaku tabulku pripojenych zariadeni s IP aj MAC adresami, neviem si teraz vybavit ako sa vola. U tych lepsich rutrov by sa malo k nej dat nejako dostat. Ale opat viac neporadim...

Tolko moja kvapka ku tematu...

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1574
  • Karma: 37
    • Pepak.net
Re:Enumerace všech připojených zařízení v síti
« Odpověď #2 kdy: 19-02-2017, 15:49:09 »
Co potřebuji: Vypsat všechna zařízení připojená na wifi, jejich názvy, IP adresy a ideálně i MAC adresy
Na to zapomeň, technicky to není řešitelné.

Některé z těchto informací umí získat switch (resp. WiFi access point), ale 1) pouze u zařízení, která jsou připojená přímo k němu (nebo ke k němu připojené kolizní doméně), a 2) pokud tu informaci předává dál, tak si způsob toho předání budeš muset dohledat pro konkrétní switch.

MAC můžeš sledovat po přepnutí síťové karty do promiskuitního režimu s pomocí knihovny jako libpcap, ale uvidíš jenom to, co ti pošle switch, a toho bude málo (pokud není, kup jný switch). Mohl bys provést útok na switch, abys mu přeplnil tabulky a on ti poslal všechno, ale domluv si to napřed se správcem sítě.

IP adresy můžeš hrubou silou propingat, ale samozřejmě ti odpoví jen ta zařízení, která budou chtít.

Názvy obecně nezjistíš, musel bys to naimplementovat zvlášť pro každý jednotlivý protokol, který je předává.

Citace
V čem mám problém: O networkingu vím vcelku kulový,
Tak teď už aspoň víš to, že co potřebuješ, to udělat nejde.

Citace
jeden zásadní problém - dostal jsem výpis pouze připojených PC, telefony, televize, tiskárny, atp. byly vždy ignorovány.
Logicky, tato zařízení nemají důvod implementovat Microsoftí sdílení a tudíž nereagují na dotazy přes něj...

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1574
  • Karma: 37
    • Pepak.net
Re:Enumerace všech připojených zařízení v síti
« Odpověď #3 kdy: 19-02-2017, 15:52:11 »
Malicko by si si mohol pomoct pingovanim vsetkych 255 adries v dostupnej podsieti.
Podsíť ovšem nemusí mít 255 zařízení. Může být mnohem menší, ale také mnohem větší. Běžně se používá 10.x.x.x, která může mít až 16 M zařízení.

Citace
IP zariadenie ktore nie je mozne pingnut na sieti nechcem mat. Dalsie sluzby ti mozu komplikovat firewally.
No a teď si jako admin vyber, jestli chceš reakci na ping nebo obtížnou viditelnost pro útočníky...

Offline 3xor

  • Nováček
  • *
  • Příspěvků: 3
  • Karma: 0
Re:Enumerace všech připojených zařízení v síti
« Odpověď #4 kdy: 19-02-2017, 19:12:28 »
Na to zapomeň, technicky to není řešitelné.
Ok, na jakým principu tedy pracujou network scannery typu Fing, nebo test wifi od Esetu, kterej mi vyhodí všechny tyhle informace v rámci milisekund? Tedy co se Esetu týče, Fing je poměrně pomalá záležitost (řádově kolem půl minuty).

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1596
  • Karma: 52
    • Verze Delphi: 11.3
Re:Enumerace všech připojených zařízení v síti
« Odpověď #5 kdy: 19-02-2017, 20:04:04 »
Zkus tu jejich komunikaci odposlechnout třeba Wireshark-em, abys viděl, jak to mají udělané. Obecně to opravdu bude těžké - třeba novější Windows ani nereagují na ping. Nicméně reagují na "arping" - https://en.wikipedia.org/wiki/Arping

Tzn. takhle zjistit živá zařízení, a pak už asi zkoušet, zda na nich běží nějaké známé služby, které evidentně poskytnou další údaje. U podsítí /8 to nebude zrovna praktické, ale nevím, jaká je šance, že na takovou síť v reálu narazíte.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3534
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Enumerace všech připojených zařízení v síti
« Odpověď #6 kdy: 19-02-2017, 20:11:46 »
dostal jsem výpis pouze připojených PC, telefony, televize, tiskárny, atp. byly vždy ignorovány.
arp -a z command line ti vypise co?

Offline 3xor

  • Nováček
  • *
  • Příspěvků: 3
  • Karma: 0
Re:Enumerace všech připojených zařízení v síti
« Odpověď #7 kdy: 19-02-2017, 20:57:46 »
arp -a z command line ti vypise co?
to je právě v pohodě, vypíše mi to správně všechna zařízení, jejich IP i MAC  :)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3534
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Enumerace všech připojených zařízení v síti
« Odpověď #8 kdy: 19-02-2017, 21:41:50 »
arp -a z command line ti vypise co?
to je právě v pohodě, vypíše mi to správně všechna zařízení, jejich IP i MAC  :)
http://www.winsocketdotnetworkprogramming.com/winsock2programming/winsock2advancediphelperfunction13c.html

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:Enumerace všech připojených zařízení v síti
« Odpověď #9 kdy: 20-02-2017, 10:04:08 »
 Ani arp není 100%.