Автор Тема: Слушане за включване на компютри в дадена подмрежа  (Прочетена 2803 пъти)

sharkydog

  • Участник
  • *****
  • Публикации: 15
    • Профил
Извинявам се за тъпото заглавие на темата, ама не мога да се сетя как по-друг начин да опиша проблема си кратко.

Възможно ли е когато един компютър в дадена мрежа се включи, това "събитие" да се хване от друг компютър в мрежата, и след това разбира се да се извърши някакво действие след получаване на този "сигнал".
Т.е. искам да слушам в мрежата за някакъв трафик, който е индикация че точно определен компютър е бил включен, и при засичане на тези пакети да се стартира някакъв скрипт.
Нямам в предвид да пускам ping-ове докато въпросният компютър бъде включен.

Възможно ли е това?
« Последна редакция: Фев 26, 2009, 13:43 от sharkydog »
Активен

ivanatora

  • Участник
  • *****
  • Публикации: 658
  • Distribution: Ubuntu 10.04
  • Window Manager: Fluxbox
    • Профил
    • WWW
DHCP използва ли се в мрежата?
Активен

sharkydog

  • Участник
  • *****
  • Публикации: 15
    • Профил
не

няма ли някакви broadcast, multicast и т.н. пакети които могат да се хванат ... :) ?
Мисля че е повече от ясно че знам IP адреса и MAC-а на въпросната машина
« Последна редакция: Фев 26, 2009, 14:08 от sharkydog »
Активен

romeo_ninov

  • Участник
  • *****
  • Публикации: 2155
    • Профил
не

няма ли някакви broadcast, multicast и т.н. пакети които могат да се хванат ... :) ?
Един трап от превключвателя при вдигане на порта?
Активен

0x2B|~0x2B

voyager

  • Участник
  • *****
  • Публикации: 152
    • Профил
sharkydog, ping ако отсреща работи обикновен user... :)

Като получиш icmp reply и знаеш че компютъра е активен, +-овете са че решението е тривиално да си го направиш, дори с малко повече фантазия можеш и лог файл да направиш. - - ако отсреща има някой "хакер" които си следи трафика... (и по-точно - аномалиите в трафика, получаването на icmp пакети от някъде откъдето по принцип не трябва да получаваме лично аз го считам за "аномалия заслужаваща внимание")

Другото което можеш да направиш е със netcat (nc) да слушаш за трафик, като видиш че от МАC-а на компютъра които те интересува почват да фърчат ARP пакети от/към... +-а на това решение е че е практически незасечимо...

естествено, тука си говориме за стандартната ситуация където става въпрос за домашна мрежа и не-интелигентни суитчове. В случай че имаш административен контрол и над "умен" суич... можеш през SNMP да си дърпаш информация за състоянието на портовете, и като ти се дигне тоя порт които ти трябва пак да получаваш съобщение.
Активен

sharkydog

  • Участник
  • *****
  • Публикации: 15
    • Профил
@romeo_ninov
не те разбрах много добре ...
просто искам да знам когато мишената се включи и евентуално вече може да се осъществи някаква връзка.
не е проблем и "известието" да дойде в някакъв по ранен момент от този в който ще може да се направи връзка с машината (да се пингне примерно)

@voyager
Цитат на: voyager
Другото което можеш да направиш е със netcat (nc) да слушаш за трафик, като видиш че от МАC-а на компютъра които те интересува почват да фърчат ARP пакети от/към... +-а на това решение е че е практически незасечимо...
Точно нещо такова ми трябва, не че искам да е незасечимо, не съм хакер и на другата машина не стои хакер, просто не искам да пращам луди пингове часове наред, за да разбера кога компютъра вече е активен.
« Последна редакция: Фев 26, 2009, 14:30 от sharkydog »
Активен

voyager

  • Участник
  • *****
  • Публикации: 152
    • Профил
ето ти примерен скрипт които проверява за точно това в продължение на 24 часа:

Код:
#!/bin/bash
$IP = "1.1.1.1"

for $i in `seq 1440`
   do
       date +%H:%M
       ping $IP -c 1|grep bytes
       sleep 60
   done

- това ти праща един ICMP пакет в минута до дадено ИП в продължение на 24 часа. Предполагам че не ти трябва точната секунда на включване... :D На изхода виждаш timestamp и ако другата машина е включена, нещо от сорта на:
13:54
64 bytes from 1.1.1.1: icmp_seq=1 ttl=255 time=1.50 ms
(и това ще го виждаш докато е включена, спре ли да е включен отсрещния комп това 64 bytes ... изчезва, остават само timestamp-ове)

Това решение прави само 1440*64*2 или 184,320 байта (грубо 200 килобайта).
« Последна редакция: Фев 26, 2009, 16:45 от voyager »
Активен

romeo_ninov

  • Участник
  • *****
  • Публикации: 2155
    • Профил
@romeo_ninov
не те разбрах много добре ...
просто искам да знам когато мишената се включи и евентуално вече може да се осъществи някаква връзка.
не е проблем и "известието" да дойде в някакъв по ранен момент от този в който ще може да се направи връзка с машината (да се пингне примерно)
Идеята е при теб да имаш SNMP клиент и на превключвателя да настроиш изпращане на trap в момента на "вдигане" на порта. НО това означава софтуер при теб и интелегентен превключвател.
Активен

0x2B|~0x2B

tarator

  • Участник
  • *****
  • Публикации: 849
    • Профил
Ако слушаш за ARP пакети вероятно ще разбереш кога даден компютър се е включил.
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

gat3way

  • Участник
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Не е задължително.
Активен

"Knowledge is power" - France is Bacon

tarator

  • Участник
  • *****
  • Публикации: 849
    • Профил
ARP пакетите се broadcast и компютъра ще ги чуе. Разбира се, това ще се случи ако а) другия компютър прави мрежов трафик; и б) арп кеша е експирясал.
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

laskov

  • Участник
  • *****
  • Публикации: 2847
    • Профил
Един трап от превключвателя при вдигане на порта?
Портът може да си е вдигнат, а компа в да е в "стенд бай".
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

shadowx

  • Участник
  • *****
  • Публикации: 99
  • Distribution: Slackware
  • Window Manager: Gnome
    • Профил
ako imat firewall trqbva da napravish neshto ot tipa :

#!/bin/bash
file="./file"
tmp_file=`mktemp`
d=`date`

for n in `seq -f %g 1 254`; do
     z=`arping -c 1 192.168.1.$n | grep Recived | awk '{print $2}'`
     if [ $z == "1" ]; then
        if ! grep "192.168.1.$n" $file ; then
             echo "[$d] 192.168.1.$ip" >> $file
        fi
     else
           if grep "192.168.1.$n" $file ; then
              cat $file | grep --invert-match "192.168.1.$n" > $tmp_file
              mv -f $tmp_file $file
           fi
     fi

tva e varqnta s arping ... grozno no bi svarshilo rabota ...
drugiq ti varqnt e da pravish nehsto , no s pcap naprimer  da slushash na arp no bi bilo kade kade po slojno za pisane ..., i ne si zalujava truda ako pitash men .....lesno shte hvanesh slushaki na arp nivo , koga nov kompiutar se e zakachil , no momenta sys tova koga e sprql e po slojen , shte trqbva da mahash zapisi po stari ot X vreme i pak se polichava v kraina smetka grozna rabota ....

p.s.: ako iskash da varvi non stop go sloji v nqkaf cikyl while true ; do blqblq ;done i si sloji samo nqkaf sleep nakraq .... otvreme navreme da go pravi .
« Последна редакция: Фев 27, 2009, 00:09 от shadowx »
Активен

There he goes. One of God's own prototypes. A high-powered mutant of some kind never even considered for mass production. Too weird to live, and too rare to die.

sharkydog

  • Участник
  • *****
  • Публикации: 15
    • Профил
не ми трябва да знам кога е спрял, само кога е пуснат

tcpdump -i eth0 arp
това ми изкарва пакети от рода:
reply IP is-at MAC
who-has IP tell IP

нещо ми подсказва че трябва да хващам пакети от първия тип (втория тип не знам какви са, ... по-малко са и второто IP е на рутера в мрежата).

Сега остават два въпроса.
1) как да укажа в expression-а на командата че искам reply IP is-at MAC пакет с точно определен MAC
2) как да автоматизирам нещата че като получа желаните пакети да стартирам някакъв скрипт, предполагам самата командата ще се изпълнява от скрипт :) ... и "слушането" трябва да спре когато въпросните пакети са хванати и "известяването" е извършено :)

и btw, това няма да ми върви цял ден, просто искам в рамките на 2-3 часа да знам кога се е включил този компютър, за да не пингвам през 5 минути ...

EDIT: забелязах един може би не много малък проблем, на всички пакети пише един и същ MAC адрес, предполагам този на рутера, arp -a също показва едни и същи MAC-ове, освен това ping на ip в subnet-а идва с коригирания ttl от рутера както е за всички външни адреси ...
« Последна редакция: Фев 27, 2009, 10:28 от sharkydog »
Активен

shadowx

  • Участник
  • *****
  • Публикации: 99
  • Distribution: Slackware
  • Window Manager: Gnome
    • Профил
Ми .... tcpdump -q -n -i eth0 arp | grep MAC_ADDRESS
Като видиш ред -> комп-а е дошъл....

п.с.: неможе рутер-а да ти сменя TTL-a на пинг-а ако пингваш в твоя си subnet ...
Ако имаш мрежа 192.168.100.0/24 ....
примерно рутера е 192.168.100.1
ти си 192.168.100.43 /следователно маската ти е 255.255.255.0/
Та комуникацията ти със всички ИП-та от мрежат 192.168.100.0 неминава през рутер-а .... следователно той неможе да променя TTL-a...
Точно това е идеята на тоя нетмаск .... да знае комютъра ти с кои машини може да си комуникира директно , и с кои ще трябва да мине през гейт-а .
Относно едни и същите макове .... явно твоя и този на рутера .... а на arp -a ще виждаш само мак адресите на компютрите с който имаш активна комуникация ..... ако не си пращате пакети със 192.168.100.95 , закаво му е на твоя комп да има мак адреса му в арп таблицата ? :) това е излишно . пусни някакъв броудкаст и ще се напълни арп таблицата ти .../нещо към ff:ff:ff:ff:ff:ff/ защото повечето верочтно няма да ти отговорят на броудкаст на layer3 ....
« Последна редакция: Фев 27, 2009, 19:35 от shadowx »
Активен

There he goes. One of God's own prototypes. A high-powered mutant of some kind never even considered for mass production. Too weird to live, and too rare to die.