proxycheck man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

proxycheck(1)							 proxycheck(1)

NAME
       proxycheck - open proxy server checker

SYNOPSYS
       proxycheck options host[:proto_port_spec]...

DESCRIPTION
       proxycheck  is  a  simple  open proxy checking tool which is capable to
       quickly discovery open proxy servers on many hosts.  It's primary  goal
       is  to  detect  an  open proxy server in order to prevent it's abuse by
       various "bad guys", mostly spammers.  Having a wide-open proxy  service
       running	on a publicaly accessible network is a very bad idea nowadays,
       and proxycheck may be used to find such system in order to be  able  to
       either  secure  a  system,  or  to refuse servicing it until it will be
       secured properly.

       In order to determine if a given host is running an open proxy service,
       proxycheck  tries  to  connect to a given destination system via a host
       and perform some actions, trying to talk with the  destination  system.
       If  a talk is successeful, proxycheck assumes the proxy service is run‐
       ning and wide-open.

       proxycheck supports all commonly used  proxy  protocols,	 namely,  HTTP
       CONNECT	method,	 SOCKS	versions  4  and 5, and Wingate "telnet"-style
       proxies.	 In future, support for more protocols may be added.

       Please note that with current number of various trojan horses cicrulat‐
       ing  around,  each  opening  a proxy on a random port, it is not really
       enouth to probe for standard (in whatever reason) ports built into  the
       proxycheck.   Instead,  it  is highly recommended to use a list of cur‐
       rently active ports maintained by several people on the 'net.

OPTIONS
       The following command-line options are recognized:

       -h     print a short help and exit.

       -v     increase the verbosity level.  All debugging messages will go to
	      standard error stream.

       -d deshost:destport (required)
	      try to establish a proxied connection to the given dsthost, port
	      dstport.	This option is required.

       -c check[:params] (required)
	      the "method" proxycheck will use when talking to	a  destination
	      system  to  determine if a proxy is open or not.	Interpretation
	      of params is check-dependant.  This option is required.  Several
	      methods are available:

	      chat:sendstr:expectstr
		     Try to perform simple "chat" with the destination system:
		     send the string given as sendstr and wait	for  expectstr
		     on output.	 If sendstr is empty, proxycheck will send the
		     proxy parameters in the form
			protocol:ip-address:portnumber
		     to the remote  system.   Proxy  assumed  to  be  open  if
		     expectstr is found.

	      dsbl   (no parameters accepted)
		     try to submit all found proxies to the DSBL.org-like sys‐
		     tem, see http://dsbl.org/	for  more  details.   All  the
		     parameters	  required   (username,	  password,  recipient
		     address, cookie server, ...) are expected to be found  in
		     environment  variables.  Run proxycheck with -h option to
		     see a list of recognized variables and their default val‐
		     ues.   By default, proxycheck will anonymously submit all
		     found proxies to unconfirmed.dsbl.org (which  isn't  very
		     useful).	For  trusted DSBL user, at least DSBL_USER and
		     DSBL_PASS variables should be set properly.

       -p proto_port_spec
	      specifies protocol and ports to connect to.  If not given, prox‐
	      ycheck  will try it's built-in default list.  This option may be
	      specified more than once.	  See below for	 proto_port_spec.   If
	      proto_port_spec  is  specified  for  a  single host to check, it
	      applies to that host only, and  no  protocols/ports  in  default
	      list will be checked for that host.

       -D     do not reset default port list when using -p option, but prepend
	      new ports to it instead.

       -a     use more "advanced" ports/protocols.  The more -a's  given,  the
	      more ports/protocols will be probed.  For a complete list of all
	      ports and protocols and their level, execute proxycheck with  -h
	      option.

       -t timeout
	      a	 timeout,  in secounds, for every operation.  Default value is
	      30 secounds.  The timer starts at the connection attempt to  the
	      proxy  itself,  after sending the "connect" command to the proxy
	      and so on.

       -m maxconn
	      Do not attempt to make more than maxconn	parallel  connections.
	      By  default,  maximum  number of parallel connections limited by
	      the operating system and on most systems it is around 1000.

       -M maxhconn
	      Do not make more than maxhconn parallel connections to the  same
	      host  (default is unlimited).  This may be useful for overloaded
	      proxies which can't handle many parallel connections using  dif‐
	      ferent  ports/protocols,	but  may  significantly	 slow down the
	      whole process.

       -s     when an open proxy is found on a	given  IP,  stop  probing  for
	      other  ports/protocols for this IP.  Best used when many IPs are
	      tested, and/or with -M option.  This is because currently, prox‐
	      ycheck  will not make any new connections to such host, but will
	      wait for already active connections to complete.

       -b bindaddr
	      use bindaddr as a source address for all outgoing connections.

       -n     write a line about definitely closed proxies to stdout in	 addi‐
	      tional to writing about open proxies, in a form
		 127.0.0.1 http:8080 closed

       -x     print  extended  proxy information (proxy-agent and the like) if
	      available.  This will be on the same "open"  (or	"closed"  with
	      -n) line, last, enclosed in square brackets [].

       -i filename
	      read list of hosts to check from a given file filename (in addi‐
	      tion to command line), or from stdin if filename if `-'.

   Protocol and Port specification
       Proxy protocols and ports to try (proto_port_spec) specified using  the
       following syntax:
	     [proto:][port,port,port]
       like:
	     hc:3128,8080 (http protocol on ports 3128 and 8080)
	     hc:    (default list of ports for http protocol)
	     3128   (try http protocol on standard http port 3128)
	     1234   (try all protocols on non-standard port 1234)

       Run  proxycheck	-h  to	see  a list of supported protocols and default
       ports.

USAGE
       Simplest usage of proxycheck is to try to connect  to  e.g.   your  own
       mailserver  with	 chat check method.  First, connect to your mailserver
       on port 25 to see which line it outputs upon connection (SMTP greething
       line), and use it with chat:

	 proxycheck -d yourmailserver.example.org:25 \
	   -c chat::greething ip.add.re.ss...

       proxycheck will write a single line for every proto:port it finds to be
       open on stdout, in the form:
	 127.0.0.3 hc:80 open
       where 127.0.0.3 is an IP address of a host being tested, hc is the pro‐
       tocol name (HTTP CONNECT, consult proxycheck -h for a full list of pro‐
       tocols) and 80 is a port number where the proxy service is running.

       In addition, if proxycheck is able to guess outgoing IP	address	 of  a
       proxy as seen by a destination system, and if that address is different
       from input proxycheck is connecting to, it will print this  information
       too on the same line, like:
	 127.0.0.2 hc:80 open 127.0.0.3
       where 127.0.0.3 is outgoing IP addres of a multihomed/cascaded proxy as
       reported by the destination system.  This  IP  address  is  hint	 only,
       there  is no simple and reliable way currently exists for proxycheck to
       determine that information.  Proxycheck is able to parse a line sent by
       remote  system  in  -c  chat  mode - in this mode, proxycheck skips all
       printable characters after expstr it found  and	searches  for  opening
       `[',  when  tries  to find closing ']' and interpret digits and dots in
       between as an IP address	 which	gets  printed  like  above.   If  your
       mailserver's  initial  reply  contains  remote  system's IP, or if your
       mailserver replies with remote system's IP address  to  HELO/EHLO  com‐
       mand, this feature may be useful (in the last case, HELO command should
       be specified in chat).

       When -n option is specified, for proto:ports which aren't running  open
       proxy  service,	and for which proxycheck is able to strongly determine
       this, a line in the following format will be written:
	 127.0.0.4 hc:80 closed
       Note however that in most cases there is no way to  reliable  determine
       whenever a given service is not open: for example, an open proxy server
       may be overloaded and refusing connections.  In most cases,  proxycheck
       assumes	proxy  is in unknown state, only a few codes are recognized as
       real indication of "closed" state.

       When -x option is specified, there will be additional proxy info	 writ‐
       ten on the same line (if available), like:
	 127.0.0.2 hc:80 open 127.0.0.3 [AnalogX 3.1415926]
	 127.0.0.3 hc:80 open [AnalogX 3.1415926]
	 127.0.0.4 hc:80 closed [AnalogX 3.1415926]

       One  may	 see  some detail of proxycheck's operations giving sufficient
       number of -v options  in	 the  command  line.   Verbosity  level	 of  5
       (-vvvvv) will show almost everything.  All the debugging output will go
       to the standard error stream and thus will not affect normal operations
       (when you process proxycheck's output using some script).

EXIT CODE
       proxycheck  will	 exit  with code 100 if at least one open proxy server
       was found.  In case of incorrect usage, it will exit with code  1.   If
       no open proxies where found, proxycheck will return 0.

EXAMPLES
       In the simplest case, specify:

	 proxycheck -vv -ddsthost:dstport -c chat::"waitstr" list-of-IPs

       where  dsthost is the host and dstport is the port number of the desti‐
       nation system, and waitstr is a string to look for from the remote sys‐
       tem.  If	 you  decide to connect to your own mailserver (which is quite
       logical, since most proxy abuse	nowadays  is  to  send	spam  to  your
       mailserver), connect to it first using telnet and see which SMTP greet‐
       ing string it prints out upon connection, and use this string as	 wait‐
       str.   For example, if your mailserver is mail.example.com, the follow‐
       ing may apply:

	 $ telnet mail.example.com 25
	 Telnet: trying 127.0.0.1... connected.
	 250 mail.example.com ESMTP welcome
	 QUIT

       In this case, proxycheck's command line may look as follows:

	 proxycheck -vv -d mail.example.com:25 \
	  -c chat::"250 mail.example.com ESMTP welcome" list-of-IPs

       Another usage scenario is to automatically submit all open  proxies  to
       DSBL.org-style  blocklists.  For this, specify -c dsbl and set up envi‐
       ronment	variables  for	dsbl  client.	The  variables	DSBL_USER  and
       DSBL_PASS  are  required for non-anonymous DSBL submissions, for anony‐
       mous submissions to the unconfirmed.dsbl.org defaults  are  sufficient.
       To submit a proxy to DSBL.org, set destination to the mail exchanger of
       listme.dsbl.org domain, currently mx.listme.dsbl.org.  For example:

	 DSBL_USER=username DSBL_PASS=password ./proxycheck -vv \
	  -dmx.listme.dsbl.org:25 -cdsbl proxyhost

       Additional and updated information may be found at the URL below.

LICENSE
       This program is free software.  It may be used and distributed  in  the
       terms of General Public License (GPL) version 2 or later.

AUTHOR
       proxycheck  written by Michael Tokarev <mjt@corpit.ru>.	Latest version
       of  this	 utlilty  may  be  found  at   http://www.corpit.ru/mjt/proxy‐
       check.html.

								 proxycheck(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net