47808/udp - BACnet
Protocol Information
BACnet is a vendor-independent data-communications protocol for building automation and control networks. It is standardized as ANSI/ASHRAE 135 and ISO 16484-5 and supports systems such as HVAC, lighting, access control, elevators, security, and fire detection.[1]
Default port: 47808
PORT STATE SERVICE
47808/udp open bacnet Building Automation and Control Networks
Enumeration
BAC0
The BAC0 Python library can issue a Who-Is broadcast and read properties from discovered devices. The host generally needs network reachability to the target BACnet/IP network.[2]
pip3 install BAC0
pip3 install netifaces
import BAC0
import time
myIP = '<YOUR_IP>/<MASK>' # Example: '192.168.1.4/24'
bacnet = BAC0.connect(ip=myIP)
bacnet.whois() # Broadcast a BACnet Who-Is request
time.sleep(5) # Wait for devices to respond
for i, (deviceId, companyId, devIp, numDeviceId) in enumerate(bacnet.devices):
print(f"-------- Device #{numDeviceId} --------")
print(f"Device: {deviceId}")
print(f"IP: {devIp}")
print(f"Company: {companyId}")
readDevice = bacnet.readMultiple(f"{devIp} device {numDeviceId} all")
print(f"Model Name: {readDevice[11]}")
print(f"Version: {readDevice[2]}")
# print(readDevice) # List all available device information
Automatic
nmap --script bacnet-info --script-args full=yes -sU -n -sV -p 47808 <IP>
The Nmap script does not register as a BACnet foreign device. It sends standard BACnet requests directly to an IP-addressable device and reports properties such as its vendor, instance number, firmware, model, and description.[3]
Shodan
port:47808 instance"Instance ID" "Vendor Name"