summaryrefslogtreecommitdiffstats
path: root/scripts/bjnp-discover.nse
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/bjnp-discover.nse')
-rw-r--r--scripts/bjnp-discover.nse50
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/bjnp-discover.nse b/scripts/bjnp-discover.nse
new file mode 100644
index 0000000..2547fa0
--- /dev/null
+++ b/scripts/bjnp-discover.nse
@@ -0,0 +1,50 @@
+description = [[
+Retrieves printer or scanner information from a remote device supporting the
+BJNP protocol. The protocol is known to be supported by network based Canon
+devices.
+]]
+
+---
+-- @usage
+-- sudo nmap -sU -p 8611,8612 --script bjnp-discover <ip>
+--
+-- @output
+-- PORT STATE SERVICE
+-- 8611/udp open canon-bjnp1
+-- | bjnp-discover:
+-- | Manufacturer: Canon
+-- | Model: MG5200 series
+-- | Description: Canon MG5200 series
+-- | Firmware version: 1.050
+-- |_ Command: BJL,BJRaster3,BSCCe,NCCe,IVEC,IVECPLI
+-- 8612/udp open canon-bjnp2
+-- | bjnp-discover:
+-- | Manufacturer: Canon
+-- | Model: MG5200 series
+-- | Description: Canon MG5200 series
+-- |_ Command: MultiPass 2.1,IVEC
+--
+
+categories = {"safe", "discovery"}
+author = "Patrik Karlsson"
+
+local bjnp = require("bjnp")
+local shortport = require("shortport")
+local stdnse = require("stdnse")
+
+portrule = shortport.portnumber({8611, 8612}, "udp")
+
+action = function(host, port)
+ local helper = bjnp.Helper:new(host, port)
+ if ( not(helper:connect()) ) then
+ return stdnse.format_output(false, "Failed to connect to server")
+ end
+ local status, attrs
+ if ( port.number == 8611 ) then
+ status, attrs = helper:getPrinterIdentity()
+ else
+ status, attrs = helper:getScannerIdentity()
+ end
+ helper:close()
+ return stdnse.format_output(true, attrs)
+end