Skip to content

Python 3 module to collect information about the hosts and devices on the local network

License

Notifications You must be signed in to change notification settings

sirivellamadhu/lanscan

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lanscan

 # lanscan  scan
      ip                    name                     mac          alive                vendor                                        open ports
=======================================================================================================================================================================
192.168.50.1     router.asus.com              54:a0:50:5b:32:81   True    ASUSTek COMPUTER INC.              53, 8443
192.168.50.97                                 1c:5a:6b:78:48:52   True    Philips Electronics Nederland BV   2323, 8000, 49154
192.168.50.107   kindle-4bef0bcfc             74:c2:46:12:5b:01   True    Amazon Technologies Inc.           5000, 5555, 7000, 7100, 8008
192.168.50.124   YotaPhone-1b4fe319cb0f71a1   28:c6:71:01:3a:6d   True    Yota Devices OY

lanscan is a Python 3 module, that provides the lanscan console command. It scans a given local network and presents all devices on this network. It also gives information about present network interfaces and networks. lanscan uses the nmap, tcpdump and ping commands.

Usage:

$ lanscan
Usage: lanscan [OPTIONS] COMMAND [ARGS]...

Options:
  -d      Print debug messages to stdout.
  --help  Show this message and exit.

Commands:
  interfaces  Display a list available interfaces
  networks    Display a list of available networks.
  scan        Scan a network, defaults to default network.

Show interfaces

A list of all current interfaces:

$ lanscan interfaces
#      interface      driver                         hardware
===================================================================================
1   br-e0e27b4e551f
2   docker0
3   enp0s20f0u1u4     r8152     Realtek RTL8152/RTL8153 Based USB Ethernet Adapters
4   lo
5   wlp1s0            iwlwifi   Intel(R) Wireless WiFi driver for Linux

Show local networks

A list of all local networks:

$ lanscan networks
#   default        cidr            interface
===============================================
1             127.0.0.0/8       lo
2             172.17.0.0/16     docker0
3             172.18.0.0/16     br-e0e27b4e551f
4   *         192.168.50.0/24   enp0s20f0u1u4

Scan a local network

The lanscan scan command has a few parameters:

$ lanscan scan --help
Usage: lanscan scan [OPTIONS]

  Scan a network, defaults to default network.

Options:
  -n, --network TEXT          The network to scan in CIDR notation or the
                              network number from 'lanscan networks'
  --vendor / --no-vendor      Vendor lookup based on Mac addres. Requires
                              internet connection.
  --portscan / --no-portscan  Let nmap do a simple connect-portscan.
  --help                      Show this message and exit.

Let's scan the default network:

 # lanscan  scan
      ip                    name                     mac          alive                vendor                                        open ports
=======================================================================================================================================================================
192.168.50.1     router.asus.com              54:a0:50:5b:32:81   True    ASUSTek COMPUTER INC.              53, 8443
192.168.50.97                                 1c:5a:6b:78:48:52   True    Philips Electronics Nederland BV   2323, 8000, 49154
192.168.50.107   kindle-4bef0bcfc             74:c2:46:12:5b:01   True    Amazon Technologies Inc.           5000, 5555, 7000, 7100, 8008
192.168.50.124   YotaPhone-1b4fe319cb0f71a1   28:c6:71:01:3a:6d   True    Yota Devices OY

Installation

lanscan has been written using Python 3.5, so the chances are good, that Python versions from 3.3 may work. It has been written on linux and I don't think, that it will work on Windows or OS X.

Create a virtualenv and call pip install lanscan. The requirements will automatically be installed within your virtualen. To make calling easier, create the file /usr/local/bin/lanscan with:

#!/bin/bash
source ${PATH_TO_YOUR_VIRTUALENV}/bin/activate
lanscan $@

Necessary permissions

lanscan needs special permissions, to be able to open a raw socket. You may run it as root - not recommended - or you set the necessary capabilities (man 7 capabilities). The capability needed is cap_net_raw=eip and this needs to be set on the python interpreter used and the tcpdump binary using setcap. setcap cannot work on symlinks, so the real binary is needed. setcap needs to be run with superuser privileges:

setcap cap_net_raw=eip /path/to/virtualenv/bin/python3
setcap cap_net_raw=eip $(which tcpdump)

You may need to install the necessary packages. On OpenSuse, the package is called libcap-progs. On Arch, everything should be in place.

The github repository can be found at

https://github.com/sumpfgottheit/lanscan

About

Python 3 module to collect information about the hosts and devices on the local network

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%