⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dont_print_on_printers.nasl

📁 漏洞扫描源码,可以扫描linux,windows,交换机路由器
💻 NASL
字号:
# This script was written by Laurent Facq <facq@u-bordeaux.fr> 05/2004## 99% based on dont_scan_printers by Michel Arboi <arboi@alussinan.org>### Released under GPLv2## plugin : dont_print_on_printers.nasl## after suggesting a way to avoid paper wasting, i happilly saw appearing a new plugin 'dont_scan_printers'## but i rapidly saw also that when safe_checks is off (what i use) - HP printers continue to## print wasted pages under openvas assault.## as far as i know/understand, the really (well, the most) annoying thing (for me) is that ## "jetdirect" print all what it receive on port 9100/tcp## so find_services* will flood this port until out of paper :)## what i do in this script is to mark this port 9100 as known (using  register_service)## to avoid this discovery flood by find_services*## so, when safe_check is off, my campus printers will no more waste paper :)## nor when its on because dont_scan_printers will do the job in this case.## the only draw back, in a security point of view, is that of course, you can fool## openvas to not really scan 9100 port... buf said.## the http code (port 80 and 280) i wrote here could be added to the original 'dont_scan_printers' code## because i saw that my HP 4000N was not detected as a HP jet printer (no telnet, no ftp, but http)## well, i only 99% understood the end of the original script (treating the case of a lot of open ports...), ## but i kept it in case it could do a good job.if(description){ script_id(12241);  script_version ("$Revision: 118 $");  name["english"] = "Dont print on AppSocket & socketAPI printers"; script_name(english:name["english"]); desc["english"] = "The host seems to be an AppSocket or socketAPI printer. Scanning it will waste paper. So port 9100 wont be scanned.Risk factor : None"; script_description(english:desc["english"]); summary["english"] = "Exclude port 9100 on AppSocket & socketAPI printers from scan"; script_summary(english:summary["english"]); script_category(ACT_SETTINGS);# script_add_preference(name:"Exclude 9100 printers port from scan", type:"checkbox", value:"no"); script_copyright(english:"This script is Copyright (C) 2004 by Laurent Facq"); family["english"] = "Settings";	# Or maybe a "scan option" family? script_family(english:family["english"]); exit(0);}include("ftp_func.inc");include("telnet_func.inc");include("misc_func.inc");include("http_func.inc");# pref= script_get_preference("Exclude 9100 printers port from scan");# if (!pref || pref == "no") exit(0);#### only usefull if safe_check not wanted (dont_scan_printers will do the job in this other case)if (safe_checks()) exit(0);##### First try UDP AppSocketport = 9101;if (get_udp_port_state(port)){  soc = open_sock_udp(port);  send(socket: soc, data: '\r\n');  r = recv(socket: soc, length: 512);  if (r)  {    # set_kb_item(name: "Host/dead", value: TRUE);    security_note(port: 0);    register_service(port: 9100, proto: "ignore-this-printer-port");    exit(0);  }}port = 21;if(get_port_state(port)){ banner = get_ftp_banner(port:port); if("JD FTP Server Ready" >< banner) {     #    set_kb_item(name: "Host/dead", value: TRUE);     security_note(port: 0);          register_service(port: 9100, proto: "ignore-this-printer-port");          exit(0); }}port = 23;if(get_port_state(port)){ banner = get_telnet_banner(port:port); if("HP JetDirect" >< banner) {     #set_kb_item(name: "Host/dead", value: TRUE);     register_service(port: 9100, proto: "ignore-this-printer-port");    security_note(port: 0);    exit(0); }}ports = make_list(80, 280);foreach port (ports){ if(get_port_state(port)) {  banner = http_send_recv(port:port, data:string("GET / HTTP/1.0\r\n\r\n"));  if("<title>Hewlett Packard</title>" >< banner)  {     #    set_kb_item(name: "Host/dead", value: TRUE);     security_note(port: 0);          register_service(port: 9100, proto: "ignore-this-printer-port");          exit(0);  } }}# open ports?ports = get_kb_list("Ports/tcp/*");# Host is dead, or all ports closed, or unscanned => cannot decideif (isnull(ports)) exit(0);# Ever seen a printer with more than 8 open ports?# if (max_index(ports) > 8) exit(0);# Test if open ports are seen on a printer# http://www.lprng.com/LPRng-HOWTO-Multipart/x4981.htmappsocket = 0;foreach p (keys(ports)){  p = int(p - "Ports/tcp/");  if (	   p == 35		# AppSocket for QMS	|| p == 2000		# Xerox	|| p == 2501		# AppSocket for Xerox	|| (p >= 3001 && p <= 3005)	# Lantronix - several ports	|| (p >= 9100 && p <= 9300)	# AppSocket - several ports        || p == 10000 		# Lexmark	|| p == 10001)		# Xerox - programmable :-(    appsocket = 1;# Look for common non-printer ports	 else if (          p != 21              # FTP       && p != 23              # telnet       && p != 79       && p != 80              # www       && p != 139 && p!= 445  # SMB       && p != 280             # http-mgmt       && p != 443       && p != 515             # lpd       && p != 631 	       # IPP       && p != 8000        && (p < 5120 || p > 5129))  # Ports 512x are used on HP printers    	exit(0);}# OK, this might well be an AppSocket printerif (appsocket){  security_note(0);  register_service(port: 9100, proto: "ignore-this-printer-port");  #set_kb_item(name: "Host/dead", value: TRUE);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -