// HackTricks · Network Services

47808/udp - BACnet

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"

References

☧ CPTS · ordered posts

Locked

Unlock with your Main_Key through local GPG.

Start the local GPG helper

In your cheatsheet checkout, run:

npm run unlock:helper

Open the link it prints, or paste its pairing code below. Keep the terminal open until GPG finishes.

Import an index you already decrypted

Download the encrypted index, then decrypt with GPG:

gpg --output report-index.json --decrypt report-index.gpg

Your private key stays in GPG. The decrypted index is saved in this browser so you can reopen it after navigation, refreshes and restarts. Lock this browser or clear this site's browser data to remove the saved index. Nothing is uploaded.