A simple port scanner for react native.
This package requires react-native-tcp depedency, please install it first.
yarn add react-native-lan-port-scanneror
npm install react-native-lan-port-scannerDon't forget to run pod install after that!
import LanPortScanner, { LSConfig } from 'react-native-lan-port-scanner';
//Returns `LSNetworkInfo`
const networkInfo = await LanPortScanner.getNetworkInfo()
let config: LSConfig = {
networkInfo: networkInfo,
ports: [80, 8085], //Specify port here
timeout: 1000, //Timeout for each thread in ms
threads: 150 //Number of threads
}
LanPortScanner.startScan(config, (totalHosts: number, hostScanned: number) => {
console.log(hostScanned / totalHosts) //Show progress
}, (result) => {
console.log(result) //This will call after new ip/port found.
}, (results) => {
console.log(results) // This will call after scan end.
}) //Returns `LSSingleScanResult`
let result = await LanPortScanner.scanHost('192.168.1.1', 80, 1000) //Returns `LSNetworkInfo`
const networkInfo = await LanPortScanner.getNetworkInfo()-
Types:
-
Methods:
Used to scan multiple hosts/ports.
| Property | Type | Description |
|---|---|---|
networkInfo |
LSNetworkInfo |
Contains ip address and subnet mask to scan. |
ports |
number[] or undefined |
Ports to scan default is: [80, 443] |
timeout |
number or undefined |
Timeout for each thread in ms, default is: 1000 ms |
threads |
number or undefined |
Number of threads, default is: 150 |
Used to grenerate ip ranges for scanning.
| Property | Type | Description |
|---|---|---|
ipAddress |
string |
IP Address |
subnetMask |
string |
Subnet mask |
Contains ip ranges for scanning purpose.
| Property | Type | Description |
|---|---|---|
ipAddress |
string |
IP Address |
subnetMask |
string |
Subnet mask. |
subnetConv |
string |
A CIDR prefix length for a valid IPv4 netmask or null if the netmask is not valid. |
firstHost |
string |
The network address for a given IPv4 interface and netmask in CIDR notation. |
lastHost |
string |
The broadcast address for a given IPv4 interface and netmask in CIDR notation. |
firstHostHex |
string |
First host address in hex represantation. |
lastHostHex |
string |
Last host address in hex represantation. |
ipRange |
string[] |
Array of ip addresses. |
Returns after host/port found.
| Property | Type | Description |
|---|---|---|
ip |
string |
IP Address |
port |
number |
Subnet mask |
Returns after scan complete.
| Property | Type | Description |
|---|---|---|
ip |
string |
IP Address |
ports |
number[] |
Subnet mask |
Returns LSNetworkInfo object.
Example:
const networkInfo = await LanPortScanner.getNetworkInfo()Takes LSNetworkInfo and scan all hosts for specified ports.
Example:
const networkInfo = await LanPortScanner.getNetworkInfo()
let config: LSConfig = {
networkInfo: networkInfo,
ports: [80, 8085], //Specify port here
timeout: 1000, //Timeout for each thread in ms
threads: 150 //Number of threads
}
LanPortScanner.startScan(config, (totalHosts: number, hostScanned: number) => {
console.log(hostScanned / totalHosts) //Show progress
}, (result) => {
console.log(result) //This will call after new ip/port found.
}, (results) => {
console.log(results) // This will call after scan end.
})Takes LSNetworkInfo, generates ip address, ports array and return LSNetworkInfoExtra object.
Example:
const networkInfo = await LanPortScanner.getNetworkInfo()
const ipRangeInfo = generateIPRange(config.networkInfo)Scan single host with port, returns LSSingleScanResult
Example:
let result = await LanPortScanner.scanHost('192.168.1.1', 80, 1000)See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT
Shift8 Web for awsome tutorial.
