Commit e6d2f399 authored by yogesh.m's avatar yogesh.m

update

parent 034b2b56
import threading
import yaml
yamlfile=open("config.yaml")
data = yaml.load(yamlfile, Loader=yaml.FullLoader)
import time
from scapy.all import *
import requests
import json_operations
import json
from datetime import datetime
import scan_port
from contextlib import closing
class Active_Scan():
def __init__(self):
self.found_hosts=[]
self.url=data["configuration"]["unifytwin_server_ip_address"]
self.OT_PORT_LIST = [44818,102,9600,502,47808]
def check_if_ip_exist_and_insert(self,ip):
try:
with open("assets.json") as json_file:
json_decoded = json.load(json_file)
except:
json_decoded = {}
if(ip not in json_decoded):
json_operations.insert_asset(ip,datetime.now().strftime("%d-%m-%y %H:%M:%S"),"Unknown","Unknown","Unknown","Unknown","Unknown","Unknown","Unknown","Unknown")
def send_icmp(self,ip):
p = sr1(IP(dst=ip) / ICMP() / "XXXXXXXXXXX", timeout=2, verbose=False)
if (p):
self.found_hosts.append(ip)
requests.post(url=self.url, json=data)
self.check_if_ip_exist_and_insert(ip)
def scan_single_host(self,host):
host_sent_to_scan="No"
while(host_sent_to_scan=="No"):
if(threading.active_count()<int(data["configuration"]["threads"])+5):
self.send_icmp(host)
host_sent_to_scan="Yes"
else:
time.sleep(1)
def scan_host_range(self,start, end):
global found_hosts
sclass = start.split(".")
eclass = end.split(".")
if (sclass[0] == eclass[0]):
if (sclass[0] == "192"):
host = "192.168." + sclass[2] + "-" + eclass[2] + "." + sclass[3] + "-" + eclass[3] + ""
for i in range(int(sclass[2]), int(eclass[2]) + 1):
if (int(sclass[2]) != int(eclass[2])):
if (i == int(sclass[2])):
for ip in range(int(sclass[3]), 256):
ti = threading.Thread(target=self.scan_single_host, args=('192.168.' + str(i) + '.' + str(ip),))
ti.start()
elif (i == int(eclass[2])):
for ip in range(0, int(eclass[3]) + 1):
ti = threading.Thread(target=self.scan_single_host, args=('192.168.' + str(i) + '.' + str(ip),))
ti.start()
else:
for ip in range(0, 256):
ti = threading.Thread(target=self.scan_single_host, args=('192.168.' + str(i) + '.' + str(ip),))
ti.start()
else:
for ip in range(int(sclass[3]), int(eclass[3]) + 1):
ti = threading.Thread(target=self.scan_single_host, args=('192.168.' + str(i) + '.' + str(ip),))
ti.start()
elif (sclass[0] == "10"):
if (0 <= int(sclass[1]) <= 255 and 0 <= int(sclass[2]) <= 255 and 0 <= int(sclass[3]) <= 255 and 0 <= int(
eclass[1]) <= 255 and 0 <= int(eclass[2]) <= 255 and 0 <= int(eclass[3]) <= 255):
if (int(sclass[1]) == int(eclass[1]) and int(sclass[2]) == int(eclass[2])):
for i in range(int(sclass[3]), int(eclass[3]) + 1):
ti = threading.Thread(target=self.scan_single_host,
args=(sclass[0] + '.' + sclass[1] + '.' + sclass[2] + '.' + str(i),))
ti.start()
elif (int(sclass[1]) == int(eclass[1]) and int(sclass[2]) != int(eclass[2])):
for i in range(int(sclass[2]), int(eclass[2]) + 1):
if (i == int(sclass[2])):
for j in range(int(sclass[3]), 256):
ti = threading.Thread(target=self.scan_single_host,
args=(sclass[0] + '.' + sclass[1] + '.' + str(i) + '.' + str(j),))
ti.start()
elif (i == int(eclass[2])):
for j in range(0, int(eclass[3]) + 1):
ti = threading.Thread(target=self.scan_single_host,
args=(sclass[0] + '.' + sclass[1] + '.' + str(i) + '.' + str(j),))
ti.start()
else:
for j in range(0, 256):
ti = threading.Thread(target=self.scan_single_host,
args=(sclass[0] + '.' + sclass[1] + '.' + str(i) + '.' + str(j),))
ti.start()
else:
for i in range(int(sclass[1]), int(eclass[1]) + 1):
if (i == int(sclass[1])):
for j in range(int(sclass[2]), 256):
if (j == int(sclass[2])):
for k in range(int(sclass[3]), 256):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
else:
for k in range(0, 256):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
elif (i == int(eclass[1])):
for j in range(0, int(eclass[2]) + 1):
if (j != int(eclass[2])):
for k in range(0, 256):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
else:
for k in range(0, int(eclass[3]) + 1):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
else:
for j in range(0, 256):
for k in range(0, 256):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
else:
print("invalid address format")
elif (sclass[0] == "172"):
if (16 <= int(sclass[1]) <= 31 and 0 <= int(sclass[2]) <= 255 and 0 <= int(sclass[3]) <= 255 and 16 <= int(
eclass[1]) <= 31 and 0 <= int(eclass[2]) <= 255 and 0 <= int(eclass[3]) <= 255):
if (int(sclass[1]) == int(eclass[1]) and int(sclass[2]) == int(eclass[2])):
for i in range(int(sclass[3]), int(eclass[3]) + 1):
ti = threading.Thread(target=self.scan_single_host,
args=(sclass[0] + '.' + sclass[1] + '.' + sclass[2] + '.' + str(i),))
ti.start()
elif (int(sclass[1]) == int(eclass[1]) and int(sclass[2]) != int(eclass[2])):
for i in range(int(sclass[2]), int(eclass[2]) + 1):
if (i == int(sclass[2])):
for j in range(int(sclass[3]), 256):
ti = threading.Thread(target=self.scan_single_host,
args=(sclass[0] + '.' + sclass[1] + '.' + str(i) + '.' + str(j),))
ti.start()
elif (i == int(eclass[2])):
for j in range(0, int(eclass[3]) + 1):
ti = threading.Thread(target=self.scan_single_host,
args=(sclass[0] + '.' + sclass[1] + '.' + str(i) + '.' + str(j),))
ti.start()
else:
for j in range(0, 256):
ti = threading.Thread(target=self.scan_single_host,
args=(sclass[0] + '.' + sclass[1] + '.' + str(i) + '.' + str(j),))
ti.start()
else:
for i in range(int(sclass[1]), int(eclass[1]) + 1):
if (i == int(sclass[1])):
for j in range(int(sclass[2]), 256):
if (j == int(sclass[2])):
for k in range(int(sclass[3]), 256):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
else:
for k in range(0, 256):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
elif (i == int(eclass[1])):
for j in range(0, int(eclass[2]) + 1):
if (j != int(eclass[2])):
for k in range(0, 256):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
else:
for k in range(0, int(eclass[3]) + 1):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
else:
for j in range(0, 256):
for k in range(0, 256):
ti = threading.Thread(target=self.scan_single_host, args=(
sclass[0] + '.' + str(i) + '.' + str(j) + '.' + str(k),))
ti.start()
else:
print("invalid address format")
else:
print("invalid address format")
while threading.active_count()>1:
time.sleep(1)
return(self.found_hosts)
def find_open_port(self,ip):
for dst_port in self.OT_PORT_LIST:
with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
sock.settimeout(3)
if sock.connect_ex((ip, dst_port)) == 0:
scan_port.map_ports(ip, dst_port)
def scan_for_assets(self):
start=data["configuration"]["active_scan_start"]
end = data["configuration"]["active_scan_end"]
if(data["configuration"]["active_scan"]):
hosts = self.scan_host_range(start,end)
for i in hosts:
self.find_open_port(i)
\ No newline at end of file
{"192.168.1.178": {"last_activity": "08-05-23 18:50:09", "dev_type": "Unknown", "protocols": "udp:tcp:", "mac": "7c:76:35:6a:d4:84", "vendor": "Intel Corporate", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "192.168.1.19": {"last_activity": "08-05-23 18:46:44", "dev_type": "Unknown", "protocols": "", "mac": "d6:34:8a:fc:bd:c3", "vendor": "No Mac", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "23.218.244.131": {"last_activity": "08-05-23 18:50:01", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "13.33.146.36": {"last_activity": "08-05-23 18:39:05", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "166.141.28.138": {"last_activity": "08-05-23 18:38:29", "dev_type": "ABB 33 V2.5.1,2015-11-26 3333333333333333333333333333", "protocols": ":tcp:modbus", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Unknown", "firmware": "Unknown", "model": "sid5", "os": "Unknown", "plant": "Dalmia Cement"}, "192.168.0.222": {"last_activity": "08-05-23 18:50:08", "dev_type": "Domain Name Server", "protocols": "udp", "mac": "20:67:7c:de:26:04", "vendor": "Hewlett Packard Enterprise", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.195.74": {"last_activity": "08-05-23 18:49:58", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "203.23.178.51": {"last_activity": "08-05-23 18:50:04", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "34.159.15.168": {"last_activity": "08-05-23 18:49:35", "dev_type": "Silhouette User", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "172.217.166.99": {"last_activity": "08-05-23 18:38:25", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.193.131": {"last_activity": "08-05-23 18:39:10", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.195.170": {"last_activity": "08-05-23 18:39:28", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.193.174": {"last_activity": "08-05-23 18:50:09", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.195.197": {"last_activity": "08-05-23 18:46:33", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "168.119.249.101": {"last_activity": "08-05-23 18:50:09", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "192.168.1.110": {"last_activity": "08-05-23 18:50:05", "dev_type": "Unknown", "protocols": "", "mac": "1e:a0:48:8c:81:a2", "vendor": "No Mac", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.67.67": {"last_activity": "08-05-23 18:39:25", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "216.58.200.131": {"last_activity": "08-05-23 18:39:25", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "74.125.24.188": {"last_activity": "08-05-23 18:49:58", "dev_type": "HP Virtual Room Service", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "35.227.213.179": {"last_activity": "08-05-23 18:50:05", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "35.174.127.31": {"last_activity": "08-05-23 18:50:00", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.205.227": {"last_activity": "08-05-23 18:50:08", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.67.46": {"last_activity": "08-05-23 18:38:46", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "34.159.37.72": {"last_activity": "08-05-23 18:49:49", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.77.100": {"last_activity": "08-05-23 18:49:53", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.182.142": {"last_activity": "08-05-23 18:39:05", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "20.189.173.9": {"last_activity": "08-05-23 18:39:15", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.195.142": {"last_activity": "08-05-23 18:49:51", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "96.1.50.111": {"last_activity": "08-05-23 18:45:44", "dev_type": "Programmable Logic Controller", "protocols": "tcp:udp:enip", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Rockwell Automation/Allen-Bradley", "firmware": "1769-L33ER/A LOGIX5333ER", "model": "d05f2a4d", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.193.106": {"last_activity": "08-05-23 18:45:03", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.205.234": {"last_activity": "08-05-23 18:46:14", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "52.123.253.70": {"last_activity": "08-05-23 18:46:37", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "13.33.146.37": {"last_activity": "08-05-23 18:49:50", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "54.237.209.135": {"last_activity": "08-05-23 18:45:56", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "34.224.204.210": {"last_activity": "08-05-23 18:45:57", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "34.203.61.11": {"last_activity": "08-05-23 18:46:23", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "20.198.119.84": {"last_activity": "08-05-23 18:46:11", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "34.233.147.211": {"last_activity": "08-05-23 18:46:14", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.193.99": {"last_activity": "08-05-23 18:46:25", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.182.138": {"last_activity": "08-05-23 18:49:36", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.196.10": {"last_activity": "08-05-23 18:49:06", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "54.86.189.18": {"last_activity": "08-05-23 18:49:08", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "192.168.2.94": {"last_activity": "08-05-23 18:49:47", "dev_type": "Unknown", "protocols": "", "mac": "c0:2c:5c:57:04:71", "vendor": "Apple, Inc.", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.196.46": {"last_activity": "08-05-23 18:49:45", "dev_type": "http protocol over TLS/SSL", "protocols": "udp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}, "142.250.195.229": {"last_activity": "08-05-23 18:50:03", "dev_type": "http protocol over TLS/SSL", "protocols": "tcp", "mac": "7c:5a:1c:7f:6e:ef", "vendor": "Sophos Ltd", "firmware": "Unknown", "model": "Unknown", "os": "Unknown", "plant": "Dalmia Cement"}}
\ No newline at end of file
configuration: configuration:
threads: 20 #number of threads to scan at once threads: 20 #number of threads to scan at once
transfer frequency: 1 #how frequent the scan needs to be transfer frequency: 1 #how frequent the scan needs to be
unifytwin_server_ip_address: https://webhook.site/34c9fd4a-8924-41ab-a01f-383ef36db96b #Data will be sent back here unifytwin_server_ip_address: https://webhook.site/eaabfef1-1764-4d97-9acb-dfb887923dd7 #Data will be sent back here
edge_device_location : Dalmia Cement edge_device_location : Dalmia Cement
null_loopback: False null_loopback: False
interfaces: Wi-Fi interfaces: Wi-Fi
...@@ -9,4 +9,7 @@ configuration: ...@@ -9,4 +9,7 @@ configuration:
blacklist_dns: ['webhook.site.'] blacklist_dns: ['webhook.site.']
ui_host: 127.0.0.1 ui_host: 127.0.0.1
ui_port: 8081 ui_port: 8081
active_scan: True
active_scan_start: 192.168.1.1
active_scan_end: 192.168.1.10
transmit_assets: True transmit_assets: True
\ No newline at end of file
...@@ -5,6 +5,7 @@ from protocol_enumerators import modbus ...@@ -5,6 +5,7 @@ from protocol_enumerators import modbus
from protocol_enumerators import omron from protocol_enumerators import omron
import sqlite3 import sqlite3
from datetime import datetime from datetime import datetime
import json_operations
mydb=sqlite3.connect("assets.db",check_same_thread=False) mydb=sqlite3.connect("assets.db",check_same_thread=False)
...@@ -24,45 +25,35 @@ def map_ports(ip,port): ...@@ -24,45 +25,35 @@ def map_ports(ip,port):
vendor=res['Copyright'] vendor=res['Copyright']
firmware=res['Module']+" "+res['Version'] firmware=res['Module']+" "+res['Version']
model=res['Serial Number'] model=res['Serial Number']
updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"s7comm",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"' json_operations.update_asset(ip,"s7comm",datetime.now().strftime("%d-%m-%y %H:%M:%S"),dev_type,vendor,firmware,model)
query.execute(updateproto) #updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"s7comm",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"'
mydb.commit()
query.close()
elif(i.__name__=="protocol_enumerators.ethernetip_enum"): elif(i.__name__=="protocol_enumerators.ethernetip_enum"):
dev_type=res['Type'] dev_type=res['Type']
vendor=res['Vendor'] vendor=res['Vendor']
firmware=res['ProductName'] firmware=res['ProductName']
model=res['SerialNumber'] model=res['SerialNumber']
updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"enip",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"' json_operations.update_asset(ip, "enip", datetime.now().strftime("%d-%m-%y %H:%M:%S"), dev_type,vendor, firmware, model)
query.execute(updateproto) #updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"enip",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"'
mydb.commit()
query.close()
elif(i.__name__=="protocol_enumerators.bacnet"): elif(i.__name__=="protocol_enumerators.bacnet"):
dev_type=res['desc'] dev_type=res['desc']
vendor=res['vendorid'] vendor=res['vendorid']
firmware=res['firmware'] firmware=res['firmware']
model=res['model'] model=res['model']
updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"bacnet",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"' json_operations.update_asset(ip, "bacnet", datetime.now().strftime("%d-%m-%y %H:%M:%S"), dev_type, vendor,firmware, model)
query.execute(updateproto) #updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"bacnet",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"'
mydb.commit()
query.close()
elif(i.__name__=="protocol_enumerators.modbus"): elif(i.__name__=="protocol_enumerators.modbus"):
dev_type=res['Device identification'] dev_type=res['Device identification']
vendor=res['Slave ID data'] vendor=res['Slave ID data']
model=res['sid'] model=res['sid']
updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"modbus",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"' json_operations.update_asset(ip, "modbus", datetime.now().strftime("%d-%m-%y %H:%M:%S"), dev_type, vendor,"Unknown", model)
query.execute(updateproto) #updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"modbus",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"'
mydb.commit()
query.close()
elif(i.__name__=="protocol_enumerators.omron"): elif(i.__name__=="protocol_enumerators.omron"):
dev_type='Omron Device' dev_type='Omron Device'
vendor='Omron Devices' vendor='Omron Devices'
firmware=res['Controller Version'] firmware=res['Controller Version']
model=res['Controller Model'] model=res['Controller Model']
updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"modbus",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"' json_operations.update_asset(ip, "omron", datetime.now().strftime("%d-%m-%y %H:%M:%S"), dev_type, vendor,firmware, model)
query.execute(updateproto) #updateproto='UPDATE inventory SET protocols=(select protocols from inventory where ip_address="'+ip+'")||":"||"modbus",last_activity="'+datetime.now().strftime("%d-%m-%y %H:%M:%S")+'",type="'+dev_type+'",vendor="'+vendor+'",firmware_version="'+firmware+'",model="'+model+'" WHERE ip_address="'+ip+'"'
mydb.commit()
query.close()
break break
\ No newline at end of file
map_ports('87.59.100.251',9600)
\ No newline at end of file
...@@ -5,6 +5,7 @@ import binascii ...@@ -5,6 +5,7 @@ import binascii
import yaml import yaml
import sqlite3 import sqlite3
from datetime import datetime from datetime import datetime
import active_scan
import protocol_actions import protocol_actions
import threading import threading
import requests import requests
...@@ -103,6 +104,9 @@ def network_sniffing_local_storage(pkt): ...@@ -103,6 +104,9 @@ def network_sniffing_local_storage(pkt):
ti.start() ti.start()
def start_sniff(iface=interfaces): def start_sniff(iface=interfaces):
act_scn=active_scan.Active_Scan()
ti = threading.Thread(target=act_scn.scan_for_assets)
ti.start()
sniff(iface=iface,prn=network_sniffing_local_storage) sniff(iface=iface,prn=network_sniffing_local_storage)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment