Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved crawler logging #5175

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/core/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -4636,7 +4636,7 @@ def geturl(self):
return self._url

if not content:
errMsg = "can't parse forms as the page content appears to be blank"
errMsg = "can't parse forms as the page content appears to be blank for '%s'" % url
if raise_:
raise SqlmapGenericException(errMsg)
else:
Expand Down
18 changes: 9 additions & 9 deletions lib/request/connect.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ class Connect(object):
def _getPageProxy(**kwargs):
try:
if (len(inspect.stack()) > sys.getrecursionlimit() // 2): # Note: https://github.com/sqlmapproject/sqlmap/issues/4525
warnMsg = "unable to connect to the target URL"
warnMsg = "unable to connect to the target URL '%s'" % url
raise SqlmapConnectionException(warnMsg)
except (TypeError, UnicodeError):
pass
Expand Down Expand Up @@ -794,7 +794,7 @@ class _(dict):
if ignoreTimeout:
return None if not conf.ignoreTimeouts else "", None, None
else:
warnMsg = "unable to connect to the target URL (%d - %s)" % (ex.code, _http_client.responses[ex.code])
warnMsg = "unable to connect to the target URL '%s' (%d - %s)" % (url, ex.code, _http_client.responses[ex.code])
if threadData.retriesCount < conf.retries and not kb.threadException:
warnMsg += ". sqlmap is going to retry the request"
logger.critical(warnMsg)
Expand All @@ -805,7 +805,7 @@ class _(dict):
else:
raise SqlmapConnectionException(warnMsg)
else:
debugMsg = "got HTTP error code: %d ('%s')" % (code, status)
debugMsg = "got HTTP error code: %d ('%s') on '%s'" % (code, status, url)
logger.debug(debugMsg)

except (_urllib.error.URLError, socket.error, socket.timeout, _http_client.HTTPException, struct.error, binascii.Error, ProxyError, SqlmapCompressionException, WebSocketException, TypeError, ValueError, OverflowError, AttributeError, OSError):
Expand All @@ -825,12 +825,12 @@ class _(dict):
warnMsg = "invalid URL address used (%s)" % repr(url)
raise SqlmapSyntaxException(warnMsg)
elif any(_ in tbMsg for _ in ("forcibly closed", "Connection is already closed", "ConnectionAbortedError")):
warnMsg = "connection was forcibly closed by the target URL"
warnMsg = "connection was forcibly closed by the target URL '%s'" % url
elif "timed out" in tbMsg:
if kb.testMode and kb.testType not in (None, PAYLOAD.TECHNIQUE.TIME, PAYLOAD.TECHNIQUE.STACKED):
singleTimeWarnMessage("there is a possibility that the target (or WAF/IPS) is dropping 'suspicious' requests")
kb.droppingRequests = True
warnMsg = "connection timed out to the target URL"
warnMsg = "connection timed out to the target URL '%s'" % url
elif "Connection reset" in tbMsg:
if not conf.disablePrecon:
singleTimeWarnMessage("turning off pre-connect mechanism because of connection reset(s)")
Expand All @@ -839,9 +839,9 @@ class _(dict):
if kb.testMode:
singleTimeWarnMessage("there is a possibility that the target (or WAF/IPS) is resetting 'suspicious' requests")
kb.droppingRequests = True
warnMsg = "connection reset to the target URL"
warnMsg = "connection reset to the target URL '%s'" % url
elif "URLError" in tbMsg or "error" in tbMsg:
warnMsg = "unable to connect to the target URL"
warnMsg = "unable to connect to the target URL '%s'" % url
match = re.search(r"Errno \d+\] ([^>\n]+)", tbMsg)
if match:
warnMsg += " ('%s')" % match.group(1).strip()
Expand All @@ -857,7 +857,7 @@ class _(dict):
warnMsg += "header with option '--user-agent' or switch '--random-agent'"
elif "IncompleteRead" in tbMsg:
warnMsg = "there was an incomplete read error while retrieving data "
warnMsg += "from the target URL"
warnMsg += "from the target URL '%s'" % url
elif "Handshake status" in tbMsg:
status = re.search(r"Handshake status ([\d]{3})", tbMsg)
errMsg = "websocket handshake status %s" % status.group(1) if status else "unknown"
Expand All @@ -866,7 +866,7 @@ class _(dict):
warnMsg = "problems with response (de)compression"
retrying = True
else:
warnMsg = "unable to connect to the target URL"
warnMsg = "unable to connect to the target URL '%s'" % url

if "BadStatusLine" not in tbMsg and any((conf.proxy, conf.tor)):
warnMsg += " or proxy"
Expand Down
4 changes: 2 additions & 2 deletions lib/request/httpshandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def create_sock():
sock.close()
except (ssl.SSLError, socket.error, _http_client.BadStatusLine) as ex:
self._tunnel_host = None
logger.debug("SSL connection error occurred for '%s' ('%s')" % (_lut[protocol], getSafeExString(ex)))
logger.debug("SSL connection error occurred for '%s' on '%s:%d' ('%s')" % (_lut[protocol], self.host, self.port, getSafeExString(ex)))

if kb.tlsSNI.get(self.host) is None:
kb.tlsSNI[self.host] = success
Expand All @@ -106,7 +106,7 @@ def create_sock():
sock.close()
except (ssl.SSLError, socket.error, _http_client.BadStatusLine) as ex:
self._tunnel_host = None
logger.debug("SSL connection error occurred for '%s' ('%s')" % (_lut[protocol], getSafeExString(ex)))
logger.debug("SSL connection error occurred for '%s' on '%s:%d' ('%s')" % (_lut[protocol], self.host, self.port, getSafeExString(ex)))

if not success:
errMsg = "can't establish SSL connection"
Expand Down