İşimde çok fazla bilgisayar var ve şaka yapmak istiyorum. Bilgisayarı ağ üzerinden kapatabilirim ancak IP adreslerini bulmak benim için zor.
Tüm çevrimiçi IP adreslerini 192.168.1.aa'dan 192.168.1.zz'ye nasıl kolayca bulabilirim?
İşimde çok fazla bilgisayar var ve şaka yapmak istiyorum. Bilgisayarı ağ üzerinden kapatabilirim ancak IP adreslerini bulmak benim için zor.
Tüm çevrimiçi IP adreslerini 192.168.1.aa'dan 192.168.1.zz'ye nasıl kolayca bulabilirim?
Yanıtlar:
Genellikle nmap
ağları hızlıca taramak için oldukça kullanışlıdır.
Nmap'ı kurmak için, terminale aşağıdaki komutu girin:
sudo apt-get install nmap
Uygulama yüklendikten sonra, aşağıdaki komutu girin:
nmap -sn 192.168.1.0/24
Bu, 192.168.1.0 ve 192.168.1.255 arasında hangi ana bilgisayarların ağdaki ping isteklerine yanıt verdiğini gösterir.
Nmap'ın daha eski sürümleri için -sP
şunları kullanın :
nmap -sP 192.168.1.0/24
Ek referanslar için aşağıdaki sayfalara bakınız:
Öğrenmek için çok yararlı bir araçtır.
Ağınızdaki tüm bilgisayarlar Ubuntu veya avahi-daemon
( DNS-SD ) kullanan diğer herhangi bir dağıtımsa, aşağıdakileri yaparak ayrıntılı bir listesini (ana bilgisayar adı ve IP adresiyle) alabilirsiniz:
avahi-browse -rt _workstation._tcp
Ağınızda kullanılan tüm IP adreslerini bilmek istiyorsanız, şunları kullanabilirsiniz arp-scan
:
sudo arp-scan 192.168.1.0/24
Varsayılan olarak yüklenmediğinden, onu yüklemeniz gerekir sudo apt-get install arp-scan
. arp-scan
ARP paketlerini yerel ağa gönder ve alınan yanıtları görüntüler, böylece güvenlik duvarı olan ana bilgisayarları bile gösterir (IP paketlerini temel alan trafiği engeller).
arp-scan
kablosuz ağımla ilişkili tüm cihazları bulamıyor. Şimdi, örneğin, sudo arp-scan 192.168.2.0/24
2 sonuç gösterir (.1 ve .1); nmap -sn 192.168.2.0/24
4 sonuç gösterir (.1, .2, .3 ve .4). Yani, bu nmap
daha doğru görünüyor (ağa bağlı 4 cihaz olduğundan eminim). Bu neden?
nmap
.
arp-scan
Güzel !
Okuyucuya not : Orijinal cevap bir süre önce ve sadece kabuk yazmayı öğrendiğim sırada gönderildi. Çok daha hızlı performans gösteren yeni ve geliştirilmiş bir komut dosyası için aşağıdaki gözden geçirilmiş sürüme bakın.
nmap
benim # 1 seçimim olurdu, ama ya sen yoksa? DIY yolu, ağdaki olası her ip adresinden manuel olarak geçen bir ping komut dosyasıyla olacaktır. Burada sahip olduğumuz şey sadece döngüde, adrese son numarayı koyduğumuz, adrese sessiz tek ping attığımız, komutun başarılı olup olmadığını (ve başarılı olduysa ev sahibi açıktır) ve printf
deyimi kontrol etmektir . Hızlı ve kirli bir şekilde, bana yazmak için yaklaşık 10 dakika sürdü, ancak çalışma zamanı biraz yavaş olabilir.
#!/bin/sh
# set -x
NUM=1
while [ $NUM -lt 256 ];do
ping -q -c 1 192.168.0.$NUM > /dev/null
RESULT=$(echo $?)
if [ $RESULT -eq 0 ]; then
printf 192.168.0.$NUM"\n"
fi
NUM=$(expr $NUM + 1)
done
Bu cevabı ilk olarak Ağustos 2015'te yayınladım. O zamandan beri kabuk komut dosyası yazma hakkında biraz daha fazla şey öğrendim ve bir kez bu senaryoyu gördüm, birkaç iyileştirme eklemek için bu cevabı tekrar gözden geçirmenin iyi bir fikir olacağını düşündüm. İşte birkaç fikir:
Komut dosyası açıkça yavaştır ve ping
ana bilgisayardan yanıt bekler. Varsayılan olarak, ping
ağ ve bildiğim kadarıyla anladığım kadarıyla TCP protokolü bekleme süresi her defasında iki katına nasıl sıkışık bağlı olarak değişir iki RTT için (en azından göre bu ). Bu yüzden bayrakla ping
zaman aşımına uğramaya zorlayabilirdik -w 1
. 256 adresimiz olduğundan ve her adres için 1 saniye olduğunu düşündüğümüzden, komut dosyası yaklaşık 256/60 = 4,27 dakika sürer.
Bir komut yapmak ve ardından çıkış durumunu yakalamak $?
gerçekten gerekli değildi. if ... then;...fi
Doğrudan komutlar üzerinde çalışabilir. Başka bir deyişle, bunu yapmak yeterlidir:
if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
then
<some other code here>
fi
printf
Komut böylece tekrar yazılabilir:
printf "IP %s is up\n" 192.168.0."$NUM"
Bu daha çok stilistik bir değişimdir, ancak printf
alıntı "$NUM"
değişkeniyle birçok başka dilde nasıl çalıştığı ve göründüğü ile tutarlıdır . Burada alıntı yapmak gerekli değildir - yalnızca sayılarla uğraştığımızdan, değişkende boşluklar olduğu için sözcük bölmeyi beklememiz gerekmez.
Birkaç arka plan süreci ortaya çıkarırsak çok daha iyi performans artışı sağlanabilir. Aşağıdaki kod düzenleme tam olarak bunu yapar. Ben koymak ping
ve printf
bir fonksiyonu haline, pingf
(evet, bayat adı, biliyorum). Şimdi, main
döngü ve çağrı yapan tek bir fonksiyon var pingf
.
#!/bin/sh
# Uncomment for debugging
#set -x
pingf(){
if ping -w 2 -q -c 1 192.168.0."$1" > /dev/null ;
then
printf "IP %s is up\n" 192.168.0."$1"
fi
}
main(){
NUM=1
while [ $NUM -lt 255 ];do
pingf "$NUM" &
NUM=$(expr "$NUM" + 1)
done
wait
}
main
Bu ne kadar iyi çalışıyor? Fena değil, aslında, birkaç saniye sürer.
$ time ./ping_script.sh
IP 192.168.0.1 is up
IP 192.168.0.101 is up
IP 192.168.0.27 is up
IP 192.168.0.29 is up
0m02.50s real 0m00.01s user 0m00.12s system
Netdiscover cevabınız olabilir.
Terminal üzerinden kurmak için:
sudo apt-get install netdiscover
örnek kullanım:
sudo netdiscover -r 192.168.1.0/24 -i wlan0
Terminalinizde MAC Adresleri olan bir IP gösterilecektir. Ekran görüntüsüne bakın
umarım yardım eder
*** buffer overflow detected ***: netdiscover terminated
.
fping
ICMP üzerinden bir ağ üzerinde birden fazla ana bilgisayarı taramak için harika bir araçtır. Takılı değilse, aşağıdakileri kurabilirsiniz:
sudo apt-get install fping
fping
ICMP ECHO_REQUEST paketleri gönderir ve ana makineden ECHO_RESPONSE alırsa bir ana bilgisayarı Yukarı olarak işaretler.
Örneğin, alt ağın ana bilgisayarlarını taramak için 192.168.1.0/24
şunları yapabilirsiniz:
fping -g 192.168.1.0/24
Belirli bir ana bilgisayar sayısı için gelen örneğin 192.168.1.15
için 192.168.1.140
:
fping -g 192.168.1.15 192.168.1.140
fping
son derece yapılandırılabilir; örneğin kaç paket gönderileceği, yanıt beklenecek süre, çıktı formatı vb.
man fping
Daha fazla fikir edinmek için kontrol edin .
angry ip scanner