48 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{#include ../banners/hacktricks-training.md}}
# Інформація про протокол
**BACnet** - це **протокол зв'язку** для мереж автоматизації та контролю будівель (BAC), який використовує **ASHRAE**, **ANSI** та **ISO 16484-5 стандарт**. Він полегшує зв'язок між системами автоматизації та контролю будівель, дозволяючи таким застосункам, як контроль HVAC, контроль освітлення, контроль доступу та системи виявлення пожеж, обмінюватися інформацією. BACnet забезпечує сумісність і дозволяє комп'ютеризованим пристроям автоматизації будівель спілкуватися, незалежно від конкретних послуг, які вони надають.
**Порт за замовчуванням:** 47808
```text
PORT STATE SERVICE
47808/udp open BACNet -- Building Automation and Control NetworksEnumerate
```
# Перерахунок
## Вручну
```bash
pip3 install BAC0
pip3 install netifaces
import BAC0
import time
myIP = '<Your IP>/<MASK>' #You need to be on the same subnet as the bacnet device. Example: '192.168.1.4/24'
bacnet = BAC0.connect(ip=myIP)
bacnet.whois() #Broadcast request of bacnet devices
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 info about the device
```
## Автоматичний
```bash
nmap --script bacnet-info --script-args full=yes -sU -n -sV -p 47808 <IP>
```
Цей скрипт не намагається приєднатися до мережі BACnet як іноземний пристрій, він просто надсилає запити BACnet безпосередньо до пристрою з IP-адресою.
## Shodan
- `port:47808 instance`
- `"Instance ID" "Vendor Name"`
{{#include ../banners/hacktricks-training.md}}