summaryrefslogtreecommitdiffstats
path: root/scripts/bacnet-info.nse
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/bacnet-info.nse')
-rw-r--r--scripts/bacnet-info.nse1569
1 files changed, 1569 insertions, 0 deletions
diff --git a/scripts/bacnet-info.nse b/scripts/bacnet-info.nse
new file mode 100644
index 0000000..8f5add2
--- /dev/null
+++ b/scripts/bacnet-info.nse
@@ -0,0 +1,1569 @@
+local nmap = require "nmap"
+local shortport = require "shortport"
+local stdnse = require "stdnse"
+local string = require "string"
+local unicode = require "unicode"
+
+description = [[
+Discovers and enumerates BACNet Devices collects device information based off
+standard requests. In some cases, devices may not strictly follow the
+specifications, or may comply with older versions of the specifications, and
+will result in a BACNET error response. Presence of this error positively
+identifies the device as a BACNet device, but no enumeration is possible.
+
+Note: Requests and responses are via UDP 47808, ensure scanner will receive UDP
+47808 source and destination responses.
+
+http://digitalbond.com
+
+]]
+
+---
+-- @usage
+-- nmap --script bacnet-info -sU -p 47808 <host>
+--
+-- @output
+--47808/udp open bacnet
+--| bacnet-discover:
+--| Vendor ID: BACnet Stack at SourceForge (260)
+--| Vendor Name: BACnet Stack at SourceForge
+--| Instance Number: 260001
+--| Firmware: 0.8.2
+--| Application Software: 1.0
+--| Object Name: SimpleServer
+--| Model Name: GNU
+--| Description: server
+--|_ Location: USA
+--
+-- @xmloutput
+--<elem key="Vendor ID">BACnet Stack at SourceForge (260)</elem>
+--<elem key="Vendor Name">BACnet Stack at SourceForge</elem>
+--<elem key="Object-identifier">260001</elem>
+--<elem key="Firmware">0.8.2</elem>
+--<elem key="Application Software">1.0</elem>
+--<elem key="Object Name">SimpleServer</elem>
+--<elem key="Model Name">GNU</elem>
+--<elem key="Description">server</elem>
+--<elem key="Location">USA</elem>
+
+
+
+author = {"Stephen Hilt", "Michael Toecker"}
+license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
+categories = {"discovery", "version"}
+
+
+--
+-- Function to define the portrule as per nmap standards
+--
+--
+--
+
+portrule = shortport.version_port_or_service(47808, "bacnet", {"udp","tcp"})
+
+---
+-- Table to look up the Vendor Name based on Vendor ID
+-- Table data from http://www.bacnet.org/VendorID/BACnet%20Vendor%20IDs.htm
+-- Fetched on 9/26/2015
+--
+-- @key vennum Vendor number parsed out of the BACNet packet
+local vendor_id = {
+ [0] = "ASHRAE",
+ [1] = "NIST",
+ [2] = "The Trane Company",
+ [3] = "McQuay International",
+ [4] = "PolarSoft",
+ [5] = "Johnson Controls Inc.",
+ [6] = "American Auto-Matrix",
+ [7] = "Siemens Schweiz AG (Formerly: Landis & Staefa Division Europe)",
+ [8] = "Delta Controls",
+ [9] = "Siemens Schweiz AG",
+ [10] = "Schneider Electric",
+ [11] = "TAC",
+ [12] = "Orion Analysis Corporation",
+ [13] = "Teletrol Systems Inc.",
+ [14] = "Cimetrics Technology",
+ [15] = "Cornell University",
+ [16] = "United Technologies Carrier",
+ [17] = "Honeywell Inc.",
+ [18] = "Alerton / Honeywell",
+ [19] = "TAC AB",
+ [20] = "Hewlett-Packard Company",
+ [21] = "Dorsette.s Inc.",
+ [22] = "Siemens Schweiz AG (Formerly: Cerberus AG)",
+ [23] = "York Controls Group",
+ [24] = "Automated Logic Corporation",
+ [25] = "CSI Control Systems International",
+ [26] = "Phoenix Controls Corporation",
+ [27] = "Innovex Technologies Inc.",
+ [28] = "KMC Controls Inc.",
+ [29] = "Xn Technologies Inc.",
+ [30] = "Hyundai Information Technology Co. Ltd.",
+ [31] = "Tokimec Inc.",
+ [32] = "Simplex",
+ [33] = "North Building Technologies Limited",
+ [34] = "Notifier",
+ [35] = "Reliable Controls Corporation",
+ [36] = "Tridium Inc.",
+ [37] = "Sierra Monitor Corporation/FieldServer Technologies",
+ [38] = "Silicon Energy",
+ [39] = "Kieback & Peter GmbH & Co KG",
+ [40] = "Anacon Systems Inc.",
+ [41] = "Systems Controls & Instruments LLC",
+ [42] = "Lithonia Lighting",
+ [43] = "Micropower Manufacturing",
+ [44] = "Matrix Controls",
+ [45] = "METALAIRE",
+ [46] = "ESS Engineering",
+ [47] = "Sphere Systems Pty Ltd.",
+ [48] = "Walker Technologies Corporation",
+ [49] = "H I Solutions Inc.",
+ [50] = "MBS GmbH",
+ [51] = "SAMSON AG",
+ [52] = "Badger Meter Inc.",
+ [53] = "DAIKIN Industries Ltd.",
+ [54] = "NARA Controls Inc.",
+ [55] = "Mammoth Inc.",
+ [56] = "Liebert Corporation",
+ [57] = "SEMCO Incorporated",
+ [58] = "Air Monitor Corporation",
+ [59] = "TRIATEK LLC",
+ [60] = "NexLight",
+ [61] = "Multistack",
+ [62] = "TSI Incorporated",
+ [63] = "Weather-Rite Inc.",
+ [64] = "Dunham-Bush",
+ [65] = "Reliance Electric",
+ [66] = "LCS Inc.",
+ [67] = "Regulator Australia PTY Ltd.",
+ [68] = "Touch-Plate Lighting Controls",
+ [69] = "Amann GmbH",
+ [70] = "RLE Technologies",
+ [71] = "Cardkey Systems",
+ [72] = "SECOM Co. Ltd.",
+ [73] = "ABB Gebäetechnik AG Bereich NetServ",
+ [74] = "KNX Association cvba",
+ [75] = "Institute of Electrical Installation Engineers of Japan (IEIEJ)",
+ [76] = "Nohmi Bosai Ltd.",
+ [77] = "Carel S.p.A.",
+ [78] = "AirSense Technology Inc.",
+ [79] = "Hochiki Corporation",
+ [80] = "Fr. Sauter AG",
+ [81] = "Matsushita Electric Works Ltd.",
+ [82] = "Mitsubishi Electric Corporation Inazawa Works",
+ [83] = "Mitsubishi Heavy Industries Ltd.",
+ [84] = "ITT Bell & Gossett",
+ [85] = "Yamatake Building Systems Co. Ltd.",
+ [86] = "The Watt Stopper Inc.",
+ [87] = "Aichi Tokei Denki Co. Ltd.",
+ [88] = "Activation Technologies LLC",
+ [89] = "Saia-Burgess Controls Ltd.",
+ [90] = "Hitachi Ltd.",
+ [91] = "Novar Corp./Trend Control Systems Ltd.",
+ [92] = "Mitsubishi Electric Lighting Corporation",
+ [93] = "Argus Control Systems Ltd.",
+ [94] = "Kyuki Corporation",
+ [95] = "Richards-Zeta Building Intelligence Inc.",
+ [96] = "Scientech R&D Inc.",
+ [97] = "VCI Controls Inc.",
+ [98] = "Toshiba Corporation",
+ [99] = "Mitsubishi Electric Corporation Air Conditioning & Refrigeration Systems Works",
+ [100] = "Custom Mechanical Equipment LLC",
+ [101] = "ClimateMaster",
+ [102] = "ICP Panel-Tec Inc.",
+ [103] = "D-Tek Controls",
+ [104] = "NEC Engineering Ltd.",
+ [105] = "PRIVA BV",
+ [106] = "Meidensha Corporation",
+ [107] = "JCI Systems Integration Services",
+ [108] = "Freedom Corporation",
+ [109] = "Neuberger Gebäeautomation GmbH",
+ [110] = "Sitronix",
+ [111] = "Leviton Manufacturing",
+ [112] = "Fujitsu Limited",
+ [113] = "Emerson Network Power",
+ [114] = "S. A. Armstrong Ltd.",
+ [115] = "Visonet AG",
+ [116] = "M&M Systems Inc.",
+ [117] = "Custom Software Engineering",
+ [118] = "Nittan Company Limited",
+ [119] = "Elutions Inc. (Wizcon Systems SAS)",
+ [120] = "Pacom Systems Pty. Ltd.",
+ [121] = "Unico Inc.",
+ [122] = "Ebtron Inc.",
+ [123] = "Scada Engine",
+ [124] = "AC Technology Corporation",
+ [125] = "Eagle Technology",
+ [126] = "Data Aire Inc.",
+ [127] = "ABB Inc.",
+ [128] = "Transbit Sp. z o. o.",
+ [129] = "Toshiba Carrier Corporation",
+ [130] = "Shenzhen Junzhi Hi-Tech Co. Ltd.",
+ [131] = "Tokai Soft",
+ [132] = "Blue Ridge Technologies",
+ [133] = "Veris Industries",
+ [134] = "Centaurus Prime",
+ [135] = "Sand Network Systems",
+ [136] = "Regulvar Inc.",
+ [137] = "AFDtek Division of Fastek International Inc.",
+ [138] = "PowerCold Comfort Air Solutions Inc.",
+ [139] = "I Controls",
+ [140] = "Viconics Electronics Inc.",
+ [141] = "Yaskawa America Inc.",
+ [142] = "DEOS control systems GmbH",
+ [143] = "Digitale Mess- und Steuersysteme AG",
+ [144] = "Fujitsu General Limited",
+ [145] = "Project Engineering S.r.l.",
+ [146] = "Sanyo Electric Co. Ltd.",
+ [147] = "Integrated Information Systems Inc.",
+ [148] = "Temco Controls Ltd.",
+ [149] = "Airtek International Inc.",
+ [150] = "Advantech Corporation",
+ [151] = "Titan Products Ltd.",
+ [152] = "Regel Partners",
+ [153] = "National Environmental Product",
+ [154] = "Unitec Corporation",
+ [155] = "Kanden Engineering Company",
+ [156] = "Messner Gebäetechnik GmbH",
+ [157] = "Integrated.CH",
+ [158] = "Price Industries",
+ [159] = "SE-Elektronic GmbH",
+ [160] = "Rockwell Automation",
+ [161] = "Enflex Corp.",
+ [162] = "ASI Controls",
+ [163] = "SysMik GmbH Dresden",
+ [164] = "HSC Regelungstechnik GmbH",
+ [165] = "Smart Temp Australia Pty. Ltd.",
+ [166] = "Cooper Controls",
+ [167] = "Duksan Mecasys Co. Ltd.",
+ [168] = "Fuji IT Co. Ltd.",
+ [169] = "Vacon Plc",
+ [170] = "Leader Controls",
+ [171] = "Cylon Controls Ltd.",
+ [172] = "Compas",
+ [173] = "Mitsubishi Electric Building Techno-Service Co. Ltd.",
+ [174] = "Building Control Integrators",
+ [175] = "ITG Worldwide (M) Sdn Bhd",
+ [176] = "Lutron Electronics Co. Inc.",
+ [178] = "LOYTEC Electronics GmbH",
+ [179] = "ProLon",
+ [180] = "Mega Controls Limited",
+ [181] = "Micro Control Systems Inc.",
+ [182] = "Kiyon Inc.",
+ [183] = "Dust Networks",
+ [184] = "Advanced Building Automation Systems",
+ [185] = "Hermos AG",
+ [186] = "CEZIM",
+ [187] = "Softing",
+ [188] = "Lynxspring",
+ [189] = "Schneider Toshiba Inverter Europe",
+ [190] = "Danfoss Drives A/S",
+ [191] = "Eaton Corporation",
+ [192] = "Matyca S.A.",
+ [193] = "Botech AB",
+ [194] = "Noveo Inc.",
+ [195] = "AMEV",
+ [196] = "Yokogawa Electric Corporation",
+ [197] = "GFR Gesellschaft füelungstechnik",
+ [198] = "Exact Logic",
+ [199] = "Mass Electronics Pty Ltd dba Innotech Control Systems Australia",
+ [200] = "Kandenko Co. Ltd.",
+ [201] = "DTF Daten-Technik Fries",
+ [202] = "Klimasoft Ltd.",
+ [203] = "Toshiba Schneider Inverter Corporation",
+ [204] = "Control Applications Ltd.",
+ [205] = "KDT Systems Co. Ltd.",
+ [206] = "Onicon Incorporated",
+ [207] = "Automation Displays Inc.",
+ [208] = "Control Solutions Inc.",
+ [209] = "Remsdaq Limited",
+ [210] = "NTT Facilities Inc.",
+ [211] = "VIPA GmbH",
+ [212] = "TSC21 Association of Japan",
+ [213] = "Strato Automation",
+ [214] = "HRW Limited",
+ [215] = "Lighting Control & Design Inc.",
+ [216] = "Mercy Electronic and Electrical Industries",
+ [217] = "Samsung SDS Co.Ltd",
+ [218] = "Impact Facility Solutions Inc.",
+ [219] = "Aircuity",
+ [220] = "Control Techniques Ltd.",
+ [221] = "OpenGeneral Pty. Ltd.",
+ [222] = "WAGO Kontakttechnik GmbH & Co. KG",
+ [223] = "Cerus Industrial",
+ [224] = "Chloride Power Protection Company",
+ [225] = "Computrols Inc.",
+ [226] = "Phoenix Contact GmbH & Co. KG",
+ [227] = "Grundfos Management A/S",
+ [228] = "Ridder Drive Systems",
+ [229] = "Soft Device SDN BHD",
+ [230] = "Integrated Control Technology Limited",
+ [231] = "AIRxpert Systems Inc.",
+ [232] = "Microtrol Limited",
+ [233] = "Red Lion Controls",
+ [234] = "Digital Electronics Corporation",
+ [235] = "Ennovatis GmbH",
+ [236] = "Serotonin Software Technologies Inc.",
+ [237] = "LS Industrial Systems Co. Ltd.",
+ [238] = "Square D Company",
+ [239] = "S Squared Innovations Inc.",
+ [240] = "Aricent Ltd.",
+ [241] = "EtherMetrics LLC",
+ [242] = "Industrial Control Communications Inc.",
+ [243] = "Paragon Controls Inc.",
+ [244] = "A. O. Smith Corporation",
+ [245] = "Contemporary Control Systems Inc.",
+ [246] = "Intesis Software SL",
+ [247] = "Ingenieurgesellschaft N. Hartleb mbH",
+ [248] = "Heat-Timer Corporation",
+ [249] = "Ingrasys Technology Inc.",
+ [250] = "Costerm Building Automation",
+ [251] = "WILO SE",
+ [252] = "Embedia Technologies Corp.",
+ [253] = "Technilog",
+ [254] = "HR Controls Ltd. & Co. KG",
+ [255] = "Lennox International Inc.",
+ [256] = "RK-Tec Rauchklappen-Steuerungssysteme GmbH & Co. KG",
+ [257] = "Thermomax Ltd.",
+ [258] = "ELCON Electronic Control Ltd.",
+ [259] = "Larmia Control AB",
+ [260] = "BACnet Stack at SourceForge",
+ [261] = "G4S Security Services A/S",
+ [262] = "Exor International S.p.A.",
+ [263] = "Cristal Controles",
+ [264] = "Regin AB",
+ [265] = "Dimension Software Inc.",
+ [266] = "SynapSense Corporation",
+ [267] = "Beijing Nantree Electronic Co. Ltd.",
+ [268] = "Camus Hydronics Ltd.",
+ [269] = "Kawasaki Heavy Industries Ltd.",
+ [270] = "Critical Environment Technologies",
+ [271] = "ILSHIN IBS Co. Ltd.",
+ [272] = "ELESTA Energy Control AG",
+ [273] = "KROPMAN Installatietechniek",
+ [274] = "Baldor Electric Company",
+ [275] = "INGA mbH",
+ [276] = "GE Consumer & Industrial",
+ [277] = "Functional Devices Inc.",
+ [278] = "ESAC",
+ [279] = "M-System Co. Ltd.",
+ [280] = "Yokota Co. Ltd.",
+ [281] = "Hitranse Technology Co.LTD",
+ [282] = "Federspiel Controls",
+ [283] = "Kele Inc.",
+ [284] = "Opera Electronics Inc.",
+ [285] = "Gentec",
+ [286] = "Embedded Science Labs LLC",
+ [287] = "Parker Hannifin Corporation",
+ [288] = "MaCaPS International Limited",
+ [289] = "Link4 Corporation",
+ [290] = "Romutec Steuer-u. Regelsysteme GmbH",
+ [291] = "Pribusin Inc.",
+ [292] = "Advantage Controls",
+ [293] = "Critical Room Control",
+ [294] = "LEGRAND",
+ [295] = "Tongdy Control Technology Co. Ltd.",
+ [296] = "ISSARO Integrierte Systemtechnik",
+ [297] = "Pro-Dev Industries",
+ [298] = "DRI-STEEM",
+ [299] = "Creative Electronic GmbH",
+ [300] = "Swegon AB",
+ [301] = "Jan Brachacek",
+ [302] = "Hitachi Appliances Inc.",
+ [303] = "Real Time Automation Inc.",
+ [304] = "ITEC Hankyu-Hanshin Co.",
+ [305] = "Cyrus E&M Engineering Co. Ltd.",
+ [306] = "Racine Federated Inc.",
+ [307] = "Cirrascale Corporation",
+ [308] = "Elesta GmbH Building Automation",
+ [309] = "Securiton",
+ [310] = "OSlsoft Inc.",
+ [311] = "Hanazeder Electronic GmbH",
+ [312] = "Honeywell Security DeutschlandNovar GmbH",
+ [313] = "Siemens Energy & Automation Inc.",
+ [314] = "ETM Professional Control GmbH",
+ [315] = "Meitav-tec Ltd.",
+ [316] = "Janitza Electronics GmbH",
+ [317] = "MKS Nordhausen",
+ [318] = "De Gier Drive Systems B.V.",
+ [319] = "Cypress Envirosystems",
+ [320] = "SMARTron s.r.o.",
+ [321] = "Verari Systems Inc.",
+ [322] = "K-W Electronic Service Inc.",
+ [323] = "ALFA-SMART Energy Management",
+ [324] = "Telkonet Inc.",
+ [325] = "Securiton GmbH",
+ [326] = "Cemtrex Inc.",
+ [327] = "Performance Technologies Inc.",
+ [328] = "Xtralis (Aust) Pty Ltd",
+ [329] = "TROX GmbH",
+ [330] = "Beijing Hysine Technology Co.Ltd",
+ [331] = "RCK Controls Inc.",
+ [332] = "Distech Controls SAS",
+ [333] = "Novar/Honeywell",
+ [334] = "The S4 Group Inc.",
+ [335] = "Schneider Electric",
+ [336] = "LHA Systems",
+ [337] = "GHM engineering Group Inc.",
+ [338] = "Cllimalux S.A.",
+ [339] = "VAISALA Oyj",
+ [340] = "COMPLEX (Beijing) TechnologyCo. Ltd.",
+ [341] = "SCADAmetrics",
+ [342] = "POWERPEG NSI Limited",
+ [343] = "BACnet Interoperability Testing Services Inc.",
+ [344] = "Teco a.s.",
+ [345] = "Plexus Technology Inc.",
+ [346] = "Energy Focus Inc.",
+ [347] = "Powersmiths International Corp.",
+ [348] = "Nichibei Co. Ltd.",
+ [349] = "HKC Technology Ltd.",
+ [350] = "Ovation Networks Inc.",
+ [351] = "Setra Systems",
+ [352] = "AVG Automation",
+ [353] = "ZXC Ltd.",
+ [354] = "Byte Sphere",
+ [355] = "Generiton Co. Ltd.",
+ [356] = "Holter Regelarmaturen GmbH & Co. KG",
+ [357] = "Bedford Instruments LLC",
+ [358] = "Standair Inc.",
+ [359] = "WEG Automation - R&D",
+ [360] = "Prolon Control Systems ApS",
+ [361] = "Inneasoft",
+ [362] = "ConneXSoft GmbH",
+ [363] = "CEAG Notlichtsysteme GmbH",
+ [364] = "Distech Controls Inc.",
+ [365] = "Industrial Technology Research Institute",
+ [366] = "ICONICS Inc.",
+ [367] = "IQ Controls s.c.",
+ [368] = "OJ Electronics A/S",
+ [369] = "Rolbit Ltd.",
+ [370] = "Synapsys Solutions Ltd.",
+ [371] = "ACME Engineering Prod. Ltd.",
+ [372] = "Zener Electric Pty Ltd.",
+ [373] = "Selectronix Inc.",
+ [374] = "Gorbet & Banerjee LLC.",
+ [375] = "IME",
+ [376] = "Stephen H. Dawson Computer Service",
+ [377] = "Accutrol LLC",
+ [378] = "Schneider Elektronik GmbH",
+ [379] = "Alpha-Inno Tec GmbH",
+ [380] = "ADMMicro Inc.",
+ [381] = "Greystone Energy Systems Inc.",
+ [382] = "CAP Technologie",
+ [383] = "KeRo Systems",
+ [384] = "Domat Control System s.r.o.",
+ [385] = "Efektronics Pty. Ltd.",
+ [386] = "Hekatron Vertriebs GmbH",
+ [387] = "Securiton AG",
+ [388] = "Carlo Gavazzi Controls SpA",
+ [389] = "Chipkin Automation Systems",
+ [390] = "Savant Systems LLC",
+ [391] = "Simmtronic Lighting Controls",
+ [392] = "Abelko Innovation AB",
+ [393] = "Seresco Technologies Inc.",
+ [394] = "IT Watchdogs",
+ [395] = "Automation Assist Japan Corp.",
+ [396] = "Thermokon Sensortechnik GmbH",
+ [397] = "EGauge Systems LLC",
+ [398] = "Quantum Automation (ASIA) PTE Ltd.",
+ [399] = "Toshiba Lighting & Technology Corp.",
+ [400] = "SPIN Engenharia de Automaç Ltda.",
+ [401] = "Logistics Systems & Software Services India PVT. Ltd.",
+ [402] = "Delta Controls Integration Products",
+ [403] = "Focus Media",
+ [404] = "LUMEnergi Inc.",
+ [405] = "Kara Systems",
+ [406] = "RF Code Inc.",
+ [407] = "Fatek Automation Corp.",
+ [408] = "JANDA Software Company LLC",
+ [409] = "Open System Solutions Limited",
+ [410] = "Intelec Systems PTY Ltd.",
+ [411] = "Ecolodgix LLC",
+ [412] = "Douglas Lighting Controls",
+ [413] = "iSAtech GmbH",
+ [414] = "AREAL",
+ [415] = "Beckhoff Automation GmbH",
+ [416] = "IPAS GmbH",
+ [417] = "KE2 Therm Solutions",
+ [418] = "Base2Products",
+ [419] = "DTL Controls LLC",
+ [420] = "INNCOM International Inc.",
+ [421] = "BTR Netcom GmbH",
+ [422] = "Greentrol AutomationInc",
+ [423] = "BELIMO Automation AG",
+ [424] = "Samsung Heavy Industries CoLtd",
+ [425] = "Triacta Power Technologies Inc.",
+ [426] = "Globestar Systems",
+ [427] = "MLB Advanced MediaLP",
+ [428] = "SWG Stuckmann Wirtschaftliche Gebäesysteme GmbH",
+ [429] = "SensorSwitch",
+ [430] = "Multitek Power Limited",
+ [431] = "Aquametro AG",
+ [432] = "LG Electronics Inc.",
+ [433] = "Electronic Theatre Controls Inc.",
+ [434] = "Mitsubishi Electric Corporation Nagoya Works",
+ [435] = "Delta Electronics Inc.",
+ [436] = "Elma Kurtalj Ltd.",
+ [437] = "ADT Fire and Security Sp. A.o.o.",
+ [438] = "Nedap Security Management",
+ [439] = "ESC Automation Inc.",
+ [440] = "DSP4YOU Ltd.",
+ [441] = "GE Sensing and Inspection Technologies",
+ [442] = "Embedded Systems SIA",
+ [443] = "BEFEGA GmbH",
+ [444] = "Baseline Inc.",
+ [445] = "M2M Systems Integrators",
+ [446] = "OEMCtrl",
+ [447] = "Clarkson Controls Limited",
+ [448] = "Rogerwell Control System Limited",
+ [449] = "SCL Elements",
+ [450] = "Hitachi Ltd.",
+ [451] = "Newron System SA",
+ [452] = "BEVECO Gebouwautomatisering BV",
+ [453] = "Streamside Solutions",
+ [454] = "Yellowstone Soft",
+ [455] = "Oztech Intelligent Systems Pty Ltd.",
+ [456] = "Novelan GmbH",
+ [457] = "Flexim Americas Corporation",
+ [458] = "ICP DAS Co. Ltd.",
+ [459] = "CARMA Industries Inc.",
+ [460] = "Log-One Ltd.",
+ [461] = "TECO Electric & Machinery Co. Ltd.",
+ [462] = "ConnectEx Inc.",
+ [463] = "Turbo DDC Sü",
+ [464] = "Quatrosense Environmental Ltd.",
+ [465] = "Fifth Light Technology Ltd.",
+ [466] = "Scientific Solutions Ltd.",
+ [467] = "Controller Area Network Solutions (M) Sdn Bhd",
+ [468] = "RESOL - Elektronische Regelungen GmbH",
+ [469] = "RPBUS LLC",
+ [470] = "BRS Sistemas Eletronicos",
+ [471] = "WindowMaster A/S",
+ [472] = "Sunlux Technologies Ltd.",
+ [473] = "Measurlogic",
+ [474] = "Frimat GmbH",
+ [475] = "Spirax Sarco",
+ [476] = "Luxtron",
+ [477] = "Raypak Inc",
+ [478] = "Air Monitor Corporation",
+ [479] = "Regler Och Webbteknik Sverige (ROWS)",
+ [480] = "Intelligent Lighting Controls Inc.",
+ [481] = "Sanyo Electric Industry Co.Ltd",
+ [482] = "E-Mon Energy Monitoring Products",
+ [483] = "Digital Control Systems",
+ [484] = "ATI Airtest Technologies Inc.",
+ [485] = "SCS SA",
+ [486] = "HMS Industrial Networks AB",
+ [487] = "Shenzhen Universal Intellisys Co Ltd",
+ [488] = "EK Intellisys Sdn Bhd",
+ [489] = "SysCom",
+ [490] = "Firecom Inc.",
+ [491] = "ESA Elektroschaltanlagen Grimma GmbH",
+ [492] = "Kumahira Co Ltd",
+ [493] = "Hotraco",
+ [494] = "SABO Elektronik GmbH",
+ [495] = "Equip'Trans",
+ [496] = "TCS Basys Controls",
+ [497] = "FlowCon International A/S",
+ [498] = "ThyssenKrupp Elevator Americas",
+ [499] = "Abatement Technologies",
+ [500] = "Continental Control Systems LLC",
+ [501] = "WISAG Automatisierungstechnik GmbH & Co KG",
+ [502] = "EasyIO",
+ [503] = "EAP-Electric GmbH",
+ [504] = "Hardmeier",
+ [505] = "Mircom Group of Companies",
+ [506] = "Quest Controls",
+ [507] = "MestekInc",
+ [508] = "Pulse Energy",
+ [509] = "Tachikawa Corporation",
+ [510] = "University of Nebraska-Lincoln",
+ [511] = "Redwood Systems",
+ [512] = "PASStec Industrie-Elektronik GmbH",
+ [513] = "NgEK Inc.",
+ [514] = "FAW Electronics Ltd",
+ [515] = "Jireh Energy Tech Co. Ltd.",
+ [516] = "Enlighted Inc.",
+ [517] = "El-Piast Sp. Z o.o",
+ [518] = "NetxAutomation Software GmbH",
+ [519] = "Invertek Drives",
+ [520] = "Deutschmann Automation GmbH & Co. KG",
+ [521] = "EMU Electronic AG",
+ [522] = "Phaedrus Limited",
+ [523] = "Sigmatek GmbH & Co KG",
+ [524] = "Marlin Controls",
+ [525] = "CircutorSA",
+ [526] = "UTC Fire & Security",
+ [527] = "DENT Instruments Inc.",
+ [528] = "FHP Manufacturing Company - Bosch Group",
+ [529] = "GE Intelligent Platforms",
+ [530] = "Inner Range Pty Ltd",
+ [531] = "GLAS Energy Technology",
+ [532] = "MSR-Electronic-GmbH",
+ [533] = "Energy Control Systems Inc.",
+ [534] = "EMT Controls",
+ [535] = "Daintree Networks Inc.",
+ [536] = "EURO ICC d.o.o",
+ [537] = "TE Connectivity Energy",
+ [538] = "GEZE GmbH",
+ [539] = "NEC Corporation",
+ [540] = "Ho Cheung International Company Limited",
+ [541] = "Sharp Manufacturing Systems Corporation",
+ [542] = "DOT CONTROLS a.s.",
+ [543] = "BeaconMedæ0220",
+ [544] = "Midea Commercial Aircon",
+ [545] = "WattMaster Controls",
+ [546] = "Kamstrup A/S",
+ [547] = "CA Computer Automation GmbH",
+ [548] = "Laars Heating Systems Company",
+ [549] = "Hitachi Systems Ltd.",
+ [550] = "Fushan AKE Electronic Engineering Co. Ltd.",
+ [551] = "Toshiba International Corporation",
+ [552] = "Starman Systems LLC",
+ [553] = "Samsung Techwin Co. Ltd.",
+ [554] = "ISAS-Integrated Switchgear and Systems P/L",
+ [556] = "Obvius",
+ [557] = "Marek Guzik",
+ [558] = "Vortek Instruments LLC",
+ [559] = "Universal Lighting Technologies",
+ [560] = "Myers Power Products Inc.",
+ [561] = "Vector Controls GmbH",
+ [562] = "Crestron Electronics Inc.",
+ [563] = "A&E Controls Limited",
+ [564] = "Projektomontaza A.D.",
+ [565] = "Freeaire Refrigeration",
+ [566] = "Aqua Cooler Pty Limited",
+ [567] = "Basic Controls",
+ [568] = "GE Measurement and Control Solutions Advanced Sensors",
+ [569] = "EQUAL Networks",
+ [570] = "Millennial Net",
+ [571] = "APLI Ltd",
+ [572] = "Electro Industries/GaugeTech",
+ [573] = "SangMyung University",
+ [574] = "Coppertree Analytics Inc.",
+ [575] = "CoreNetiX GmbH",
+ [576] = "Acutherm",
+ [577] = "Dr. Riedel Automatisierungstechnik GmbH",
+ [578] = "Shina System Co.Ltd",
+ [579] = "Iqapertus",
+ [580] = "PSE Technology",
+ [581] = "BA Systems",
+ [582] = "BTICINO",
+ [583] = "Monico Inc.",
+ [584] = "iCue",
+ [585] = "tekmar Control Systems Ltd.",
+ [586] = "Control Technology Corporation",
+ [587] = "GFAE GmbH",
+ [588] = "BeKa Software GmbH",
+ [589] = "Isoil Industria SpA",
+ [590] = "Home Systems Consulting SpA",
+ [591] = "Socomec",
+ [592] = "Everex Communications Inc.",
+ [593] = "Ceiec Electric Technology",
+ [594] = "Atrila GmbH",
+ [595] = "WingTechs",
+ [596] = "Shenzhen Mek Intellisys Pte Ltd.",
+ [597] = "Nestfield Co. Ltd.",
+ [598] = "Swissphone Telecom AG",
+ [599] = "PNTECH JSC",
+ [600] = "Horner APG LLC",
+ [601] = "PVI Industries LLC",
+ [602] = "Ela-compil",
+ [603] = "Pegasus Automation International LLC",
+ [604] = "Wight Electronic Services Ltd.",
+ [605] = "Marcom",
+ [606] = "Exhausto A/S",
+ [607] = "Dwyer Instruments Inc.",
+ [608] = "Link GmbH",
+ [609] = "Oppermann Regelgerate GmbH",
+ [610] = "NuAire Inc.",
+ [611] = "Nortec Humidity Inc.",
+ [612] = "Bigwood Systems Inc.",
+ [613] = "Enbala Power Networks",
+ [614] = "Inter Energy Co. Ltd.",
+ [615] = "ETC",
+ [616] = "COMELEC S.A.R.L",
+ [617] = "Pythia Technologies",
+ [618] = "TrendPoint Systems Inc.",
+ [619] = "AWEX",
+ [620] = "Eurevia",
+ [621] = "Kongsberg E-lon AS",
+ [622] = "FlaktWoods",
+ [623] = "E + E Elektronik GES M.B.H.",
+ [624] = "ARC Informatique",
+ [625] = "SKIDATA AG",
+ [626] = "WSW Solutions",
+ [627] = "Trefon Electronic GmbH",
+ [628] = "Dongseo System",
+ [629] = "Kanontec Intelligence Technology Co. Ltd.",
+ [630] = "EVCO S.p.A.",
+ [631] = "Accuenergy (CANADA) Inc.",
+ [632] = "SoftDEL",
+ [633] = "Orion Energy Systems Inc.",
+ [634] = "Roboticsware",
+ [635] = "DOMIQ Sp. z o.o.",
+ [636] = "Solidyne",
+ [637] = "Elecsys Corporation",
+ [638] = "Conditionaire International Pty. Limited",
+ [639] = "Quebec Inc.",
+ [640] = "Homerun Holdings",
+ [641] = "RFM Inc.",
+ [642] = "Comptek",
+ [643] = "Westco Systems Inc.",
+ [644] = "Advancis Software & Services GmbH",
+ [645] = "Intergrid LLC",
+ [646] = "Markerr Controls Inc.",
+ [647] = "Toshiba Elevator and Building Systems Corporation",
+ [648] = "Spectrum Controls Inc.",
+ [649] = "Mkservice",
+ [650] = "Fox Thermal Instruments",
+ [651] = "SyxthSense Ltd",
+ [652] = "DUHA System S R.O.",
+ [653] = "NIBE",
+ [654] = "Melink Corporation",
+ [655] = "Fritz-Haber-Institut",
+ [656] = "MTU Onsite Energy GmbHGas Power Systems",
+ [657] = "Omega Engineering Inc.",
+ [658] = "Avelon",
+ [659] = "Ywire Technologies Inc.",
+ [660] = "M.R. Engineering Co. Ltd.",
+ [661] = "Lochinvar LLC",
+ [662] = "Sontay Limited",
+ [663] = "GRUPA Slawomir Chelminski",
+ [664] = "Arch Meter Corporation",
+ [665] = "Senva Inc.",
+ [667] = "FM-Tec",
+ [668] = "Systems Specialists Inc.",
+ [669] = "SenseAir",
+ [670] = "AB IndustrieTechnik Srl",
+ [671] = "Cortland Research LLC",
+ [672] = "MediaView",
+ [673] = "VDA Elettronica",
+ [674] = "CSS Inc.",
+ [675] = "Tek-Air Systems Inc.",
+ [676] = "ICDT",
+ [677] = "The Armstrong Monitoring Corporation",
+ [678] = "DIXELL S.r.l",
+ [679] = "Lead System Inc.",
+ [680] = "ISM EuroCenter S.A.",
+ [681] = "TDIS",
+ [682] = "Trade FIDES",
+ [683] = "KnübH (Emerson Network Power)",
+ [684] = "Resource Data Management",
+ [685] = "Abies Technology Inc.",
+ [686] = "Amalva",
+ [687] = "MIRAE Electrical Mfg. Co. Ltd.",
+ [688] = "HunterDouglas Architectural Projects Scandinavia ApS",
+ [689] = "RUNPAQ Group Co.Ltd",
+ [690] = "Unicard SA",
+ [691] = "IE Technologies",
+ [692] = "Ruskin Manufacturing",
+ [693] = "Calon Associates Limited",
+ [694] = "Contec Co. Ltd.",
+ [695] = "iT GmbH",
+ [696] = "Autani Corporation",
+ [697] = "Christian Fortin",
+ [698] = "HDL",
+ [699] = "IPID Sp. Z.O.O Limited",
+ [700] = "Fuji Electric Co.Ltd",
+ [701] = "View Inc.",
+ [702] = "Samsung S1 Corporation",
+ [703] = "New Lift",
+ [704] = "VRT Systems",
+ [705] = "Motion Control Engineering Inc.",
+ [706] = "Weiss Klimatechnik GmbH",
+ [707] = "Elkon",
+ [708] = "Eliwell Controls S.r.l.",
+ [709] = "Japan Computer Technos Corp",
+ [710] = "Rational Network ehf",
+ [711] = "Magnum Energy Solutions LLC",
+ [712] = "MelRok",
+ [713] = "VAE Group",
+ [714] = "LGCNS",
+ [715] = "Berghof Automationstechnik GmbH",
+ [716] = "Quark Communications Inc.",
+ [717] = "Sontex",
+ [718] = "mivune AG",
+ [719] = "Panduit",
+ [720] = "Smart Controls LLC",
+ [721] = "Compu-Aire Inc.",
+ [722] = "Sierra",
+ [723] = "ProtoSense Technologies",
+ [724] = "Eltrac Technologies Pvt Ltd",
+ [725] = "Bektas Invisible Controls GmbH",
+ [726] = "Entelec",
+ [727] = "Innexiv",
+ [728] = "Covenant",
+ [729] = "Davitor AB",
+ [730] = "TongFang Technovator",
+ [731] = "Building Robotics",
+ [732] = "HSS-MSR UG",
+ [733] = "FramTack LLC",
+ [734] = "B. L. Acoustics",
+ [735] = "Traxxon Rock Drills",
+ [736] = "Franke",
+ [737] = "Wurm GmbH & Co",
+ [738] = "AddENERGIE",
+ [739] = "Mirle Automation Corporation",
+ [740] = "Ibis Networks",
+ [741] = "ID-KARTA s.r.o.",
+ [742] = "Anaren",
+ [743] = "Span",
+ [744] = "Bosch Thermotechnology Corp",
+ [745] = "DRC Technology S.A.",
+ [746] = "Shanghai Energy Building Technology Co",
+ [747] = "Fraport AG",
+ [748] = "Flowgroup",
+ [749] = "Skytron Energy",
+ [750] = "ALTEL Wicha",
+ [751] = "Drupal",
+ [752] = "Axiomatic Technology",
+ [753] = "Bohnke + Partner",
+ [754] = "Function 1",
+ [755] = "Optergy Pty",
+ [756] = "LSI Virticus",
+ [757] = "Konzeptpark GmbH",
+ [758] = "Hubbell Building Automation",
+ [759] = "eCurv",
+ [760] = "Agnosys GmbH",
+ [761] = "Shanghai Sunfull Automation Co.",
+ [762] = "Kurz Instruments",
+ [763] = "Cias Elettronica S.r.l.",
+ [764] = "Multiaqua",
+ [765] = "BlueBox",
+ [766] = "Sensidyne",
+ [767] = "Viessmann Elektronik GmbH",
+ [768] = "ADFweb.com srl",
+ [769] = "Gaylord Industries",
+ [770] = "Majur Ltd.",
+ [771] = "Shanghai Huilin Technology Co.",
+ [772] = "Exotronic",
+ [773] = "Safecontrol spol s.r.o.",
+ [774] = "Amatis",
+ [775] = "Universal Electric Corporation",
+ [776] = "iBACnet",
+ [778] = "Smartrise Engineering",
+ [779] = "Miratron",
+ [780] = "SmartEdge",
+ [781] = "Mitsubishi Electric Australia Pty Ltd",
+ [782] = "Triangle Research International Ptd Ltd",
+ [783] = "Produal Oy",
+ [784] = "Milestone Systems A/S",
+ [785] = "Trustbridge",
+ [786] = "Feedback Solutions",
+ [787] = "IES",
+ [788] = "GE Critical Power",
+ [789] = "Riptide IO",
+ [790] = "Messerschmitt Systems AG",
+ [791] = "Dezem Energy Controlling",
+ [792] = "MechoSystems",
+ [793] = "evon GmbH",
+ [794] = "CS Lab GmbH",
+ [795] = "8760 Enterprises",
+ [796] = "Touche Controls",
+ [797] = "Ontrol Teknik Malzeme San. ve Tic. A.S.",
+ [798] = "Uni Control System Sp. Z o.o.",
+ [799] = "Weihai Ploumeter Co.",
+ [800] = "Elcom International Pvt. Ltd",
+ [801] = "Philips Lighting",
+ [802] = "AutomationDirect",
+ [803] = "Paragon Robotics",
+ [804] = "SMT System & Modules Technology AG",
+ [805] = "OS Technology Service and Trading Co.",
+ [806] = "CMR Controls Ltd",
+ [807] = "Innovari",
+ [808] = "ABB Control Products",
+ [809] = "Gesellschaft fur Gebaudeautomation mbH",
+ [810] = "RODI Systems Corp.",
+ [811] = "Nextek Power Systems",
+ [812] = "Creative Lighting",
+ [813] = "WaterFurnace International",
+ [814] = "Mercury Security",
+ [815] = "Hisense (Shandong) Air-Conditioning Co.",
+ [816] = "Layered Solutions",
+ [817] = "Leegood Automatic System",
+ [818] = "Shanghai Restar Technology Co.",
+ [819] = "Reimann Ingenieurburo",
+ [820] = "LynTec",
+ [821] = "HTP",
+ [822] = "Elkor Technologies",
+ [823] = "Bentrol Pty Ltd",
+ [824] = "Team-Control Oy",
+ [825] = "NextDevice",
+ [826] = "GLOBAL CONTROL 5 Sp. z o.o.",
+ [827] = "King I Electronics Co.",
+ [828] = "SAMDAV",
+ [829] = "Next Gen Industries Pvt. Ltd.",
+ [830] = "Entic LLC",
+ [831] = "ETAP",
+ [832] = "Moralle Electronics Limited",
+ [833] = "Leicom AG",
+ [834] = "Watts Regulator Company",
+ [835] = "S.C. Orbtronics S.R.L.",
+ [836] = "Gaussan Technologies",
+ [837] = "WEBfactory GmbH",
+ [838] = "Ocean Controls",
+ [839] = "Messana Air-Ray Conditioning s.r.l.",
+ [840] = "Hangzhou BATOWN Technology Co. Ltd.",
+ [841] = "Reasonable Controls",
+ [842] = "Servisys",
+ [843] = "halstrup-walcher GmbH",
+ [844] = "SWG Automation Fuzhou Limited",
+ [845] = "KSB Aktiengesellschaft",
+ [846] = "Hybryd Sp. z o.o.",
+ [847] = "Helvatron AG",
+ [848] = "Oderon Sp. Z.O.O.",
+ [849] = "miko",
+ [850] = "Exodraft",
+ [851] = "Hochhuth GmbH",
+ [852] = "Integrated System Technologies Ltd.",
+ [853] = "Shanghai Cellcons Controls Co., Ltd",
+ [854] = "Emme Controls, LLC",
+ [855] = "Field Diagnostic Services, Inc.",
+ [856] = "Ges Teknik A.S.",
+ [857] = "Global Power Products, Inc.",
+ [858] = "Option NV",
+ [859] = "BV-Control AG",
+ [860] = "Sigren Engineering AG",
+ [861] = "Shanghai Jaltone Technology Co., Ltd.",
+ [862] = "MaxLine Solutions Ltd",
+ [863] = "Kron Instrumentos Elétricos Ltda",
+ [864] = "Thermo Matrix",
+ [865] = "Infinite Automation Systems, Inc.",
+ [866] = "Vantage",
+ [867] = "Elecon Measurements Pvt Ltd",
+ [868] = "TBA",
+ [869] = "Carnes Company",
+ [870] = "Harman Professional",
+ [871] = "Nenutec Asia Pacific Pte Ltd",
+ [872] = "Gia NV",
+ [873] = "Kepware Tehnologies",
+ [874] = "Temperature Electronics Ltd",
+ [875] = "Packet Power",
+ [876] = "Project Haystack Corporation",
+ [877] = "DEOS Controls Americas Inc.",
+ [878] = "Senseware Inc",
+ [879] = "MST Systemtechnik AG",
+ [880] = "Lonix Ltd",
+ [881] = "GMC-I Messtechnik GmbH",
+ [882] = "Aviosys International Inc.",
+ [883] = "Efficient Building Automation Corp.",
+ [884] = "Accutron Instruments Inc.",
+ [885] = "Vermont Energy Control Systems LLC",
+ [886] = "DCC Dynamics",
+ [887] = "B.E.G. Brück Electronic GmbH",
+ [889] = "NGBS Hungary Ltd.",
+ [890] = "ILLUM Technology, LLC",
+ [891] = "Delta Controls Germany Limited",
+ [892] = "S+T Service & Technique S.A.",
+ [893] = "SimpleSoft",
+ [894] = "Altair Engineering",
+ [895] = "EZEN Solution Inc.",
+ [896] = "Fujitec Co. Ltd.",
+ [897] = "Terralux",
+ [898] = "Annicom",
+ [899] = "Bihl+Wiedemann GmbH",
+ [900] = "Draper, Inc.",
+ [901] = "Schüco International KG",
+ [902] = "Otis Elevator Company",
+ [903] = "Fidelix Oy",
+ [904] = "RAM GmbH Mess- und Regeltechnik",
+ [905] = "WEMS",
+ [906] = "Ravel Electronics Pvt Ltd",
+ [907] = "OmniMagni",
+ [908] = "Echelon",
+ [909] = "Intellimeter Canada, Inc.",
+ [910] = "Bithouse Oy",
+ [912] = "BuildPulse",
+ [913] = "Shenzhen 1000 Building Automation Co. Ltd",
+ [914] = "AED Engineering GmbH",
+ [915] = "Güntner GmbH & Co. KG",
+ [916] = "KNXlogic",
+ [917] = "CIM Environmental Group",
+ [918] = "Flow Control",
+ [919] = "Lumen Cache, Inc.",
+ [920] = "Ecosystem",
+ [921] = "Potter Electric Signal Company, LLC",
+ [922] = "Tyco Fire & Security S.p.A.",
+ [923] = "Watanabe Electric Industry Co., Ltd.",
+ [924] = "Causam Energy",
+ [925] = "W-tec AG",
+ [926] = "IMI Hydronic Engineering International SA",
+ [927] = "ARIGO Software",
+ [928] = "MSA Safety",
+ [929] = "Smart Solucoes Ltda - MERCATO",
+ [930] = "PIATRA Engineering",
+ [931] = "ODIN Automation Systems, LLC",
+ [932] = "Belparts NV",
+ [933] = "UAB, SALDA",
+ [934] = "Alre-IT Regeltechnik GmbH",
+ [935] = "Ingenieurbüro H. Lertes GmbH & Co. KG",
+ [936] = "Breathing Buildings",
+ [937] = "eWON SA",
+ [938] = "Cav. Uff. Giacomo Cimberio S.p.A",
+ [939] = "PKE Electronics AG",
+ [940] = "Allen",
+ [941] = "Kastle Systems",
+ [942] = "Logical Electro-Mechanical (EM) Systems, Inc.",
+ [943] = "ppKinetics Instruments, LLC",
+ [944] = "Cathexis Technologies",
+ [945] = "Sylop sp. Z o.o. sp.k",
+ [946] = "Brauns Control GmbH",
+ [947] = "Omron Corporation",
+ [948] = "Wildeboer Bauteile Gmbh",
+ [949] = "Shanghai Biens Technologies Ltd",
+ [950] = "Beijing HZHY Technology Co., Ltd",
+ [951] = "Building Clouds",
+ [952] = "The University of Sheffield-Department of Electronic and Electrical Engineering",
+ [953] = "Fabtronics Australia Pty Ltd",
+ [954] = "SLAT",
+ [955] = "Software Motor Corporation",
+ [956] = "Armstrong International Inc.",
+ [957] = "Steril-Aire, Inc.",
+ [958] = "Infinique",
+ [959] = "Arcom",
+ [960] = "Argo Performance, Ltd",
+ [961] = "Dialight",
+ [962] = "Ideal Technical Solutions",
+ [963] = "Neurobat AG",
+ [964] = "Neyer Software Consulting LLC",
+ [965] = "SCADA Technology Development Co., Ltd.",
+ [966] = "Demand Logic Limited",
+ [967] = "GWA Group Limited",
+ [968] = "Occitaline",
+ [969] = "NAO Digital Co., Ltd.",
+ [970] = "Shenzhen Chanslink Network Technology Co., Ltd.",
+ [971] = "Samsung Electronics Co., Ltd.",
+ [972] = "Mesa Laboratories, Inc.",
+ [973] = "Fischer",
+ [974] = "OpSys Solutions Ltd.",
+ [975] = "Advanced Devices Limited",
+ [976] = "Condair",
+ [977] = "INELCOM Ingenieria Electronica Comercial S.A.",
+ [978] = "GridPoint, Inc.",
+ [979] = "ADF Technologies Sdn Bhd",
+ [980] = "EPM, Inc.",
+ [981] = "Lighting Controls Ltd",
+ [982] = "Perix Controls Ltd.",
+ [983] = "AERCO International, Inc.",
+ [984] = "KONE Inc.",
+ [985] = "Ziehl-Abegg SE",
+ [986] = "Robot, S.A.",
+ [987] = "Optigo Networks, Inc.",
+ [988] = "Openmotics BVBA",
+ [989] = "Metropolitan Industries, Inc.",
+ [990] = "Huawei Technologies Co., Ltd.",
+ [991] = "OSRAM Sylvania, Inc.",
+ [992] = "Vanti",
+ [993] = "Cree Lighting",
+ [994] = "Richmond Heights SDN BHD",
+ [995] = "Payne-Sparkman Lighting Mangement",
+ [996] = "Ashcroft",
+ [997] = "Jet Controls Corp",
+ [998] = "Zumtobel Lighting GmbH",
+ [1000] = "Ekon GmbH",
+ [1001] = "Molex",
+ [1002] = "Maco Lighting Pty Ltd.",
+ [1003] = "Axecon Corp.",
+ [1004] = "Tensor plc",
+ [1005] = "Kaseman Environmental Control Equipment (Shanghai) Limited",
+ [1006] = "AB Axis Industries",
+ [1007] = "Netix Controls",
+ [1008] = "Eldridge Products, Inc.",
+ [1009] = "Micronics",
+ [1010] = "Fortecho Solutions Ltd",
+ [1011] = "Sellers Manufacturing Company",
+ [1012] = "Rite-Hite Doors, Inc.",
+ [1013] = "Violet Defense LLC",
+ [1014] = "Simna",
+ [1015] = "Multi-Énergie Best Inc.",
+ [1016] = "Mega System Technologies, Inc.",
+ [1017] = "Rheem",
+ [1018] = "Ing. Punzenberger COPA-DATA GmbH",
+ [1019] = "MEC Electronics GmbH",
+ [1020] = "Taco Comfort Solutions",
+ [1021] = "Alexander Maier GmbH",
+ [1022] = "Ecorithm, Inc.",
+ [1023] = "Accurro Ltd",
+ [1024] = "ROMTECK Australia Pty Ltd",
+ [1025] = "Splash Monitoring Limited",
+ [1026] = "Light Application",
+ [1027] = "Logical Building Automation",
+ [1028] = "Exilight Oy",
+ [1029] = "Hager Electro SAS",
+ [1030] = "KLIF Co., LTD",
+ [1031] = "HygroMatik",
+ [1032] = "Daniel Mousseau Programmation & Electronique",
+ [1033] = "Aerionics Inc.",
+ [1034] = "M2S Electronique Ltee",
+ [1035] = "Automation Components, Inc.",
+ [1036] = "Niobrara Research & Development Corporation",
+ [1037] = "Netcom Sicherheitstechnik GmbH",
+ [1038] = "Lumel S.A.",
+ [1039] = "Great Plains Industries, Inc.",
+ [1040] = "Domotica Labs S.R.L",
+ [1041] = "Energy Cloud, Inc.",
+ [1042] = "Vomatec",
+ [1043] = "Demma Companies",
+ [1044] = "Valsena",
+ [1045] = "Comsys Bärtsch AG",
+ [1046] = "bGrid",
+ [1047] = "MDJ Software Pty Ltd",
+ [1048] = "Dimonoff, Inc.",
+ [1049] = "Edomo Systems, GmbH",
+ [1050] = "Effektiv, LLC",
+ [1051] = "SteamOVap",
+ [1052] = "grandcentrix GmbH",
+ [1053] = "Weintek Labs, Inc.",
+ [1054] = "Intefox GmbH",
+ [1055] = "Radius22 Automation Company",
+ [1056] = "Ringdale, Inc.",
+ [1057] = "Iwaki America",
+ [1058] = "Bractlet",
+ [1059] = "STULZ Air Technology Systems, Inc.",
+ [1060] = "Climate Ready Engineering Pty Ltd",
+ [1061] = "Genea Energy Partners",
+ [1062] = "IoTall Chile",
+ [1063] = "IKS Co., Ltd.",
+ [1064] = "Yodiwo AB",
+ [1065] = "TITAN electronic GmbH",
+ [1066] = "IDEC Corporation",
+ [1067] = "SIFRI SL",
+ [1068] = "Thermal Gas Systems Inc.",
+ [1069] = "Building Automation Products, Inc.",
+ [1070] = "Asset Mapping",
+ [1071] = "Smarteh Company",
+ [1072] = "Datapod Australia Pty Ltd.",
+ [1073] = "Buildings Alive Pty Ltd",
+ [1074] = "Digital Elektronik",
+ [1075] = "Talent Automação e Tecnologia Ltda",
+ [1076] = "Norposh Limited",
+ [1077] = "Merkur Funksysteme AG",
+ [1078] = "Faster CZ spol. S.r.o",
+ [1079] = "Eco-Adapt",
+ [1080] = "Energocentrum Plus, s.r.o",
+ [1081] = "amBX UK Ltd",
+ [1082] = "Western Reserve Controls, Inc.",
+ [1083] = "LayerZero Power Systems, Inc.",
+ [1084] = "CIC Jan Hřebec s.r.o.",
+ [1085] = "Sigrov BV",
+ [1086] = "ISYS-Intelligent Systems",
+ [1087] = "Gas Detection (Australia) Pty Ltd",
+ [1088] = "Kinco Automation (Shanghai) Ltd.",
+ [1089] = "Lars Energy, LLC",
+ [1090] = "Flamefast (UK) Ltd.",
+ [1091] = "Royal Service Air Conditioning",
+ [1092] = "Ampio Sp. Z o.o.",
+ [1093] = "Inovonics Wireless Corporation",
+ [1094] = "Nvent Thermal Management",
+ [1095] = "Sinowell Control System Ltd",
+ [1096] = "Moxa Inc.",
+ [1097] = "Matrix iControl SDN BHD",
+ [1098] = "PurpleSwift",
+ [1099] = "OTIM Technologies",
+ [1100] = "FlowMate Limited",
+ [1101] = "Degree Controls, Inc.",
+ [1102] = "Fei Xing (Shanghai) Software Technologies Co., Ltd.",
+ [1103] = "Berg GmbH",
+ [1104] = "ARENZ.IT",
+ [1105] = "Edelstrom Electronic Devices & Designing LLC",
+ [1106] = "Drive Connect, LLC",
+ [1107] = "DevelopNow",
+ [1108] = "Poort",
+ [1109] = "VMEIL Information (Shanghai) Ltd",
+ [1110] = "Rayleigh Instruments",
+ [1112] = "CODESYS Development",
+ [1113] = "Smartware Technologies Group, LLC",
+ [1114] = "Polar Bear Solutions",
+ [1115] = "Codra",
+ [1116] = "Pharos Architectural Controls Ltd",
+ [1117] = "EngiNear Ltd.",
+ [1118] = "Ad Hoc Electronics",
+ [1119] = "Unified Microsystems",
+ [1120] = "Industrieelektronik Brandenburg GmbH",
+ [1121] = "Hartmann GmbH",
+ [1122] = "Piscada",
+ [1123] = "KMB systems, s.r.o.",
+ [1124] = "PowerTech Engineering AS",
+ [1125] = "Telefonbau Arthur Schwabe GmbH & Co. KG",
+ [1126] = "Wuxi Fistwelove Technology Co., Ltd.",
+ [1127] = "Prysm",
+ [1128] = "STEINEL GmbH",
+ [1129] = "Georg Fischer JRG AG",
+ [1130] = "Make Develop SL",
+ [1131] = "Monnit Corporation",
+ [1132] = "Mirror Life Corporation",
+ [1133] = "Secure Meters Limited",
+ [1134] = "PECO",
+ [1135] = ".CCTECH, Inc.",
+ [1136] = "LightFi Limited",
+ [1137] = "Nice Spa",
+ [1138] = "Fiber SenSys, Inc.",
+ [1139] = "B&D Buchta und Degeorgi",
+ [1140] = "Ventacity Systems, Inc.",
+ [1141] = "Hitachi-Johnson Controls Air Conditioning, Inc.",
+ [1142] = "Sage Metering, Inc.",
+ [1143] = "Andel Limited",
+ [1144] = "ECOSmart Technologies",
+ [1145] = "S.E.T.",
+ [1146] = "Protec Fire Detection Spain SL",
+ [1147] = "AGRAMER UG",
+ [1148] = "Anylink Electronic GmbH",
+ [1149] = "Schindler, Ltd",
+ [1150] = "Jibreel Abdeen Est.",
+ [1151] = "Fluidyne Control Systems Pvt. Ltd",
+ [1152] = "Prism Systems, Inc.",
+ [1153] = "Enertiv",
+ [1154] = "Mirasoft GmbH & Co. KG",
+ [1155] = "DUALTECH IT",
+ [1156] = "Countlogic, LLC",
+ [1157] = "Kohler",
+ [1158] = "Chen Sen Controls Co., Ltd.",
+ [1159] = "Greenheck",
+ [1160] = "Intwine Connect, LLC",
+ [1161] = "Karlborgs Elkontroll",
+ [1162] = "Datakom",
+ [1163] = "Hoga Control AS",
+ [1164] = "Cool Automation",
+ [1165] = "Inter Search Co., Ltd",
+ [1166] = "DABBEL-Automation Intelligence GmbH",
+ [1167] = "Gadgeon Engineering Smartness",
+ [1168] = "Coster Group S.r.l.",
+ [1169] = "Walter Müller AG",
+ [1170] = "Fluke",
+ [1171] = "Quintex Systems Ltd",
+ [1172] = "Senfficient SDN BHD",
+ [1173] = "Nube iO Operations Pty Ltd",
+ [1174] = "DAS Integrator Pte Ltd",
+ [1175] = "CREVIS Co., Ltd",
+ [1176] = "iSquared software inc.",
+ [1177] = "KTG GmbH",
+ [1178] = "POK Group Oy",
+ [1179] = "Adiscom",
+ [1180] = "Incusense",
+ [1181] = "75F",
+ [1182] = "Anord Mardix, Inc.",
+ [1183] = "HOSCH Gebäudeautomation Neue Produkte GmbH",
+ [1184] = "BOSCH Software Innovations GmbH",
+ [1185] = "Royal Boon Edam International B.V.",
+ [1186] = "Clack Corporation",
+ [1187] = "Unitex Controls LLC",
+ [1188] = "KTC Göteborg AB",
+ [1189] = "Interzon AB",
+ [1190] = "ISDE ING SL",
+ [1191] = "ABM automation building messaging GmbH",
+ [1192] = "Kentec Electronics Ltd",
+ [1193] = "Emerson Commercial and Residential Solutions",
+ [1194] = "Powerside",
+ [1195] = "SMC Group",
+ [1196] = "EOS Weather Instruments",
+ [1197] = "Zonex Systems",
+ [1198] = "Generex Systems Computervertriebsgesellschaft mbH",
+ [1199] = "Energy Wall LLC",
+ [1200] = "Thermofin",
+ [1201] = "SDATAWAY SA",
+ [1202] = "Biddle Air Systems Limited",
+ [1203] = "Kessler Ellis Products",
+ [1204] = "Thermoscreens",
+ [1205] = "Modio",
+ [1206] = "Newron Solutions",
+ [1207] = "Unitronics",
+ [1208] = "TRILUX GmbH & Co. KG",
+ [1209] = "Kollmorgen Steuerungstechnik GmbH",
+ [1210] = "Bosch Rexroth AG",
+ [1211] = "Alarko Carrier",
+ [1212] = "Verdigris Technologies"
+}
+--return vendor information
+function vendor_lookup(vennum)
+ local vendorname = vendor_id[vennum] or "Unknown Vendor Number"
+ return string.format("%s (%d)", vendorname, vennum)
+end
+
+---
+-- Function to lookup the length of the Field to be used for Vendor ID, Firmware
+-- Object Name, Software Version, and Location. It will then return the Value
+-- that is stored inside the packet for this information as a String Value.
+-- The field is located in the 18th byte of the data field of a valid packet.
+-- Depending on this field the information will be stored in field 20 + length
+-- or in field 22 + length.
+--
+-- @param packet The packet that was received and is ready to be parsed
+function field_size(packet)
+ -- read the Length field from the packet data byte 18
+ local offset
+ -- Verify the field from byte 18 to determine if the vendor number is one byte or two bytes?
+ local value = string.byte(packet, 18)
+ if ( value % 0x10 < 5 ) then
+ value = value % 0x10 - 1
+ offset = 19
+ else
+ value = string.byte(packet, 19) - 1
+ offset = 20
+ end
+ -- unpack a string of length <value>
+ local charset, info
+ charset, info, offset = string.unpack("Bc" .. tostring(value), packet, offset)
+ -- return information that was found in the packet
+ if charset == 0 then -- UTF-8
+ return info
+ elseif charset == 4 then -- UCS-2 big-endian
+ return unicode.transcode(info, unicode.utf16_dec, unicode.utf8_enc, true, nil)
+ else -- TODO: other encodings not supported by unicode.lua
+ return info
+ end
+end
+
+---
+-- Function to set the nmap output for the host, if a valid BACNet packet
+-- is received then the output will show that the port is open instead of
+-- <code>open|filtered</code>
+--
+-- @param host Host that was passed in via nmap
+-- @param port port that BACNet is running on (Default UDP/47808)
+function set_nmap(host, port)
+
+ --set port Open
+ port.state = "open"
+ -- set version name to BACNet
+ port.version.name = "bacnet"
+ nmap.set_port_version(host, port)
+ nmap.set_port_state(host, port, "open")
+
+end
+
+--- Sends a query for Property Identifier id (a number) on socket
+local function send_query(socket, id)
+ -- Wireshark dissection:
+ local query = string.pack(">BB I2 BBBBBBB I4 BB",
+ 0x81, -- Type: BACnet/IP (Annex J)
+ 0x0a, -- Function: Original-Unicast-NPDU
+ 0x0011, -- BVLC-Length: 4 of 17 bytes
+ -- BACnet NPDU
+ 0x01, -- Version: 0x01 (ASHRAE 135-1995)
+ 0x04, -- Control (expecting reply)
+ -- BACnet APDU
+ 0x00, -- APDU Type: Confirmed-REQ, PDU flags: 0x0
+ 0x05, -- Max response segments unspecified, Max APDU size: 1476 octets
+ 0x01, -- Invoke ID: 1
+ 0x0c, -- Service Choice: readProperty
+ 0x0c, -- Context-specific tag, number 0, Length Value Type 4
+ 0x023fffff, -- Object Type: device; instance number 4194303
+ 0x19, -- Context-specific tag, number 1, Length Value Type 1
+ id)
+ return socket:send(query)
+end
+
+local query_codes = {
+ firmware = 0x2c,
+ application = 0x0c,
+ model = 0x46,
+ object = 0x4d,
+ object_id = 0x4b,
+ description = 0x1c,
+ location = 0x3a,
+ vendor = 0x79,
+ vendor_id = 0x78
+}
+---
+-- Function to send a query to the discovered BACNet devices. This will pull extra
+-- information to help identify the device. Information such as firmware, application software
+-- object name, description, and location parameters configured inside of the device.
+--
+-- @param socket The socket that was created in the action function
+-- @param type Type is the type of packet to send, this can be firmware, application, object, description, or location
+function standard_query(socket, type)
+
+ -- determine what type of packet to send
+ local query = query_codes[type]
+ assert(query) -- table lookup must not fail.
+
+ --try to pull the information
+ local status, result = send_query(socket, query)
+ if(status == false) then
+ stdnse.debug1("Socket error sending query: %s", result)
+ return nil
+ end
+ -- receive packet from response
+ local rcvstatus, response = socket:receive()
+ if(rcvstatus == false) then
+ stdnse.debug1("Socket error receiving: %s", response)
+ return nil
+ end
+ -- validate valid BACNet Packet
+ if( string.byte(response, 1) == 0x81 ) then
+ -- Lookup byte 7 (packet type)
+ local value = string.byte(response, 7)
+ -- verify that the response packet was not an error packet
+ if( value ~= 0x50) then
+ --collect information by looping thru the packet
+ return field_size(response)
+ -- if it was an error packet, set the string to error for later purposes
+ else
+ stdnse.debug1("Error receiving: BACNet Error")
+ return nil
+ end
+ -- else ERROR
+ else
+ stdnse.debug1("Error receiving Vendor ID: Invalid BACNet packet")
+ return nil
+ end
+
+end
+---
+-- Function to send a query to the discovered BACNet devices. This function queries extra
+-- information to help identify the device. Vendor ID query is sent with this
+-- function and the Vendor ID number is parsed out of the packet.
+--
+-- @param socket The socket that was created in the action function
+function vendornum_query(socket)
+
+ -- set the vendor query data for sending
+ local vendor_query = query_codes.vendor_id
+ assert(vendor_query)
+
+ --send the vendor information
+ local status, result = send_query(socket, vendor_query)
+ if(status == false) then
+ stdnse.debug1("Socket error sending vendor query: %s", result)
+ return nil
+ end
+ -- receive vendor information packet
+ local rcvstatus, response = socket:receive()
+ if(rcvstatus == false) then
+ stdnse.debug1("Socket error receiving vendor query: %s", response)
+ return nil
+ end
+ -- validate valid BACNet Packet
+ if( string.byte(response, 1) == 0x81 ) then
+ local value = string.byte(response, 7)
+ --if the vendor query resulted in an error
+ if( value ~= 0x50) then
+ -- read values for byte 18 in the packet data
+ -- this value determines if vendor number is 1 or 2 bytes
+ value = string.byte(response, 18)
+ else
+ stdnse.debug1("Error receiving Vendor ID: BACNet Error")
+ return nil
+ end
+ -- if value is 21 (byte 18)
+ if( value == 0x21 ) then
+ -- convert hex to decimal
+ local vendornum = string.byte(response, 19)
+ -- look up vendor name from table
+ return vendor_lookup(vendornum)
+ -- if value is 22 (byte 18)
+ elseif( value == 0x22 ) then
+ -- convert hex to decimal
+ local vendornum = string.unpack(">I2", response, 19)
+ -- look up vendor name from table
+ return vendor_lookup(vendornum)
+ else
+ -- set return value to an Error if byte 18 was not 21/22
+ stdnse.debug1("Error receiving Vendor ID: Invalid BACNet packet")
+ return nil
+ end
+ end
+
+end
+
+---
+-- Action Function that is used to run the NSE. This function will send the initial query to the
+-- host and port that were passed in via nmap. The initial response is parsed to determine if host
+-- is a BACNet device. If it is then more actions are taken to gather extra information.
+--
+-- @param host Host that was scanned via nmap
+-- @param port port that was scanned via nmap
+action = function(host, port)
+ --set the first query data for sending
+ local orig_query = query_codes.object_id
+ assert(orig_query)
+ local to_return = nil
+
+ -- create new socket
+ local sock = nmap.new_socket()
+ -- Bind to port for niceness with BACNet this may need to be commented out if
+ -- scanning more than one host at a time, may fix some issues seen on Windows
+ --
+ local status, err = sock:bind(nil, port.number)
+ if(status == false) then
+ stdnse.debug1("Couldn't bind to %s/udp. Continuing anyway, results may vary", port.number)
+ end
+ -- connect to the remote host
+ local constatus, conerr = sock:connect(host, port)
+ if not constatus then
+ stdnse.debug1('Error establishing a UDP connection for %s - %s', host, conerr)
+ return nil
+ end
+ -- send the original query to see if it is a valid BACNet Device
+ local sendstatus, senderr = send_query(sock, orig_query)
+ if not sendstatus then
+ stdnse.debug1('Error sending BACNet request to %s:%d - %s', host.ip, port.number, senderr)
+ return nil
+ end
+
+ -- receive response
+ local rcvstatus, response = sock:receive()
+ if(rcvstatus == false) then
+ stdnse.debug1("Receive error: %s", response)
+ return nil
+ end
+
+ -- if the response starts with 0x81 then its BACNet
+ if( string.byte(response, 1) == 0x81 ) then
+ local value = string.byte(response, 7)
+ --if the first query resulted in an error
+ --
+ if( value == 0x50) then
+ -- set the nmap output for the port and version
+ set_nmap(host, port)
+ -- return that BACNet Error was received
+ to_return = "\nBACNet ADPU Type: Error (5) \n\t" .. stdnse.tohex(response)
+ --else pull the InstanceNumber and move onto the pulling more information
+ --
+ else
+ to_return = stdnse.output_table()
+ -- set the nmap output for the port and version
+ set_nmap(host, port)
+
+ -- Vendor Number to Name lookup
+ to_return["Vendor ID"] = vendornum_query(sock)
+
+ -- vendor name
+ to_return["Vendor Name"] = standard_query(sock, "vendor")
+
+ -- Instance Number (object number)
+ local instance = string.unpack(">I3", response, 20)
+ to_return["Object-identifier"] = instance
+
+ --Firmware Verson
+ to_return["Firmware"] = standard_query(sock, "firmware")
+
+ -- Application Software Version
+ to_return["Application Software"] = standard_query(sock, "application")
+
+ -- Object Name
+ to_return["Object Name"] = standard_query(sock, "object")
+
+ -- Model Name
+ to_return["Model Name"] = standard_query(sock, "model")
+
+ -- Description
+ to_return["Description"] = standard_query(sock, "description")
+
+ -- Location
+ to_return["Location"] = standard_query(sock, "location")
+
+ end
+ else
+ -- return nothing, no BACNet was detected
+ -- close socket
+ sock:close()
+ return nil
+ end
+ -- close socket
+ sock:close()
+ -- return all information that was found
+ return to_return
+
+end