diff --git a/lib/controller/checks.py b/lib/controller/checks.py index a1ea26434..9c7c492cb 100644 --- a/lib/controller/checks.py +++ b/lib/controller/checks.py @@ -20,7 +20,6 @@ from lib.core.common import extractRegexResult from lib.core.common import extractTextTagContent from lib.core.common import findDynamicContent from lib.core.common import Format -from lib.core.common import getComparePageRatio from lib.core.common import getLastRequestHTTPError from lib.core.common import getSortedInjectionTests from lib.core.common import getUnicode @@ -40,7 +39,6 @@ from lib.core.common import wasLastRequestHTTPError from lib.core.data import conf from lib.core.data import kb from lib.core.data import logger -from lib.core.data import queries from lib.core.datatype import AttribDict from lib.core.datatype import InjectionDict from lib.core.enums import HEURISTIC_TEST @@ -53,7 +51,6 @@ from lib.core.exception import sqlmapConnectionException from lib.core.exception import sqlmapNoneDataException from lib.core.exception import sqlmapSilentQuitException from lib.core.exception import sqlmapUserQuitException -from lib.core.settings import CONSTANT_RATIO from lib.core.settings import FORMAT_EXCEPTION_STRINGS from lib.core.settings import HEURISTIC_CHECK_ALPHABET from lib.core.settings import SUHOSHIN_MAX_VALUE_LENGTH diff --git a/lib/controller/controller.py b/lib/controller/controller.py index 2a971f38a..96bffdca8 100644 --- a/lib/controller/controller.py +++ b/lib/controller/controller.py @@ -37,7 +37,6 @@ from lib.core.data import kb from lib.core.data import logger from lib.core.enums import HASHDB_KEYS from lib.core.enums import HEURISTIC_TEST -from lib.core.enums import HTTPHEADER from lib.core.enums import HTTPMETHOD from lib.core.enums import PAYLOAD from lib.core.enums import PLACE @@ -48,7 +47,6 @@ from lib.core.exception import sqlmapSilentQuitException from lib.core.exception import sqlmapValueException from lib.core.exception import sqlmapUserQuitException from lib.core.settings import ASP_NET_CONTROL_REGEX -from lib.core.settings import DEFAULT_COOKIE_DELIMITER from lib.core.settings import DEFAULT_GET_POST_DELIMITER from lib.core.settings import EMPTY_FORM_FIELDS_REGEX from lib.core.settings import IGNORE_PARAMETERS @@ -202,7 +200,6 @@ def __saveToResultsFile(): if not conf.resultsFP: return - found = False results = {} techniques = dict(map(lambda x: (x[1], x[0]), getPublicTypeMembers(PAYLOAD.TECHNIQUE))) @@ -255,7 +252,6 @@ def start(): logger.info(infoMsg) hostCount = 0 - cookieStr = "" for targetUrl, targetMethod, targetData, targetCookie in kb.targets: try: diff --git a/lib/core/agent.py b/lib/core/agent.py index 7513f9a93..17bfb1364 100644 --- a/lib/core/agent.py +++ b/lib/core/agent.py @@ -7,8 +7,6 @@ See the file 'doc/COPYING' for copying permission import re -from xml.etree import ElementTree as ET - from lib.core.common import Backend from lib.core.common import extractRegexResult from lib.core.common import getSQLSnippet @@ -22,7 +20,6 @@ from lib.core.data import conf from lib.core.data import kb from lib.core.data import queries from lib.core.dicts import FROM_DUMMY_TABLE -from lib.core.dicts import SQL_STATEMENTS from lib.core.enums import DBMS from lib.core.enums import PAYLOAD from lib.core.enums import PLACE diff --git a/lib/core/common.py b/lib/core/common.py index b55d96ca0..18a6459b7 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -15,7 +15,6 @@ import inspect import logging import ntpath import os -import pickle import posixpath import random import re @@ -36,8 +35,6 @@ from math import sqrt from optparse import OptionValueError from subprocess import PIPE from subprocess import Popen as execute -from tempfile import mkstemp -from xml.etree import ElementTree as ET from xml.dom import minidom from xml.sax import parse @@ -78,7 +75,6 @@ from lib.core.exception import sqlmapMissingDependence from lib.core.exception import sqlmapSilentQuitException from lib.core.exception import sqlmapSyntaxException from lib.core.exception import sqlmapUserQuitException -from lib.core.log import FORMATTER from lib.core.log import LOGGER_HANDLER from lib.core.optiondict import optDict from lib.core.settings import BOLD_PATTERNS @@ -3325,7 +3321,7 @@ def isNumber(value): """ try: - _ = float(value) + float(value) except: return False else: diff --git a/lib/core/convert.py b/lib/core/convert.py index 407d06765..852347d1c 100644 --- a/lib/core/convert.py +++ b/lib/core/convert.py @@ -12,12 +12,9 @@ except: import sha import pickle -import re import sys import struct -import urllib -from lib.core.enums import PLACE from lib.core.settings import IS_WIN from lib.core.settings import UNICODE_ENCODING diff --git a/lib/core/dump.py b/lib/core/dump.py index ce4d8665c..363e39b9b 100644 --- a/lib/core/dump.py +++ b/lib/core/dump.py @@ -6,9 +6,7 @@ See the file 'doc/COPYING' for copying permission """ import codecs -import re import os -import StringIO import threading from xml.dom.minidom import getDOMImplementation diff --git a/lib/core/option.py b/lib/core/option.py index c7aa7ed48..d47d42ac0 100644 --- a/lib/core/option.py +++ b/lib/core/option.py @@ -5,7 +5,6 @@ Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/) See the file 'doc/COPYING' for copying permission """ -import codecs import cookielib import inspect import logging diff --git a/lib/core/replication.py b/lib/core/replication.py index c8eb7962b..b201a577b 100644 --- a/lib/core/replication.py +++ b/lib/core/replication.py @@ -10,7 +10,6 @@ import sqlite3 from extra.safe2bin.safe2bin import safechardecode from lib.core.common import unsafeSQLIdentificatorNaming from lib.core.exception import sqlmapGenericException -from lib.core.exception import sqlmapMissingDependence from lib.core.exception import sqlmapValueException class Replication(object): diff --git a/lib/core/session.py b/lib/core/session.py index 9ad0387df..784ae6b7c 100644 --- a/lib/core/session.py +++ b/lib/core/session.py @@ -10,18 +10,11 @@ import re from lib.core.common import Backend from lib.core.common import Format from lib.core.common import hashDBWrite -from lib.core.common import intersect -from lib.core.common import readInput -from lib.core.common import singleTimeWarnMessage -from lib.core.convert import base64pickle -from lib.core.convert import base64unpickle -from lib.core.data import conf from lib.core.data import kb from lib.core.data import logger from lib.core.enums import HASHDB_KEYS from lib.core.enums import OS from lib.core.settings import SUPPORTED_DBMS -from lib.core.settings import UNKNOWN_DBMS_VERSION def setDbms(dbms): """ diff --git a/lib/core/target.py b/lib/core/target.py index 179eb3f76..4e6b1bf90 100644 --- a/lib/core/target.py +++ b/lib/core/target.py @@ -5,7 +5,6 @@ Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/) See the file 'doc/COPYING' for copying permission """ -import binascii import codecs import os import re @@ -37,7 +36,6 @@ from lib.core.exception import sqlmapGenericException from lib.core.exception import sqlmapMissingPrivileges from lib.core.exception import sqlmapSyntaxException from lib.core.exception import sqlmapUserQuitException -from lib.core.option import authHandler from lib.core.option import __setDBMS from lib.core.option import __setKnowledgeBaseAttributes from lib.core.option import __setAuthCred @@ -49,7 +47,6 @@ from lib.core.settings import REFERER_ALIASES from lib.core.settings import RESULTS_FILE_FORMAT from lib.core.settings import SOAP_RECOGNITION_REGEX from lib.core.settings import SUPPORTED_DBMS -from lib.core.settings import UNENCODED_ORIGINAL_VALUE from lib.core.settings import UNICODE_ENCODING from lib.core.settings import UNKNOWN_DBMS_VERSION from lib.core.settings import URI_INJECTABLE_REGEX diff --git a/lib/core/unescaper.py b/lib/core/unescaper.py index 922e7d4b4..01112e8f1 100644 --- a/lib/core/unescaper.py +++ b/lib/core/unescaper.py @@ -7,7 +7,6 @@ See the file 'doc/COPYING' for copying permission from lib.core.common import Backend from lib.core.data import conf -from lib.core.data import kb from lib.core.datatype import AttribDict from lib.core.settings import EXCLUDE_UNESCAPE diff --git a/lib/core/update.py b/lib/core/update.py index e929add3e..f00eba8ef 100644 --- a/lib/core/update.py +++ b/lib/core/update.py @@ -13,15 +13,12 @@ from subprocess import PIPE from subprocess import Popen as execute from lib.core.common import dataToStdout -from lib.core.common import getUnicode from lib.core.data import conf from lib.core.data import logger from lib.core.data import paths from lib.core.revision import getRevisionNumber from lib.core.settings import GIT_REPOSITORY from lib.core.settings import IS_WIN -from lib.core.settings import REVISION -from lib.core.settings import UNICODE_ENCODING from lib.core.subprocessng import pollProcess def update(): diff --git a/lib/parse/cmdline.py b/lib/parse/cmdline.py index ac1759d4d..3f1f424bf 100644 --- a/lib/parse/cmdline.py +++ b/lib/parse/cmdline.py @@ -20,7 +20,6 @@ from lib.core.defaults import defaults from lib.core.settings import BASIC_HELP_ITEMS from lib.core.settings import IS_WIN from lib.core.settings import MAX_HELP_OPTION_LENGTH -from lib.core.settings import VERSION_STRING def cmdLineParser(): """ diff --git a/lib/request/connect.py b/lib/request/connect.py index e61cd110b..6221cec76 100644 --- a/lib/request/connect.py +++ b/lib/request/connect.py @@ -182,7 +182,7 @@ class Connect(object): ua = kwargs.get('ua', None) referer = kwargs.get('referer', None) host = kwargs.get('host', conf.host) - direct = kwargs.get('direct', False) + direct_ = kwargs.get('direct', False) multipart = kwargs.get('multipart', False) silent = kwargs.get('silent', False) raise404 = kwargs.get('raise404', True) @@ -235,7 +235,7 @@ class Connect(object): else: socket.setdefaulttimeout(conf.timeout) - if direct: + if direct_: if "?" in url: url, params = url.split("?") params = urlencode(params) diff --git a/lib/request/dns.py b/lib/request/dns.py index 21e0245de..3706e3f04 100644 --- a/lib/request/dns.py +++ b/lib/request/dns.py @@ -6,7 +6,6 @@ See the file 'doc/COPYING' for copying permission """ import os -import random import re import socket import threading diff --git a/lib/request/inject.py b/lib/request/inject.py index 80a150f5f..045bff610 100644 --- a/lib/request/inject.py +++ b/lib/request/inject.py @@ -25,9 +25,7 @@ from lib.core.common import isTechniqueAvailable from lib.core.common import parseUnionPage from lib.core.common import popValue from lib.core.common import pushValue -from lib.core.common import randomInt from lib.core.common import readInput -from lib.core.common import safeStringFormat from lib.core.common import singleTimeWarnMessage from lib.core.data import conf from lib.core.data import kb @@ -40,11 +38,9 @@ from lib.core.enums import EXPECTED from lib.core.enums import PAYLOAD from lib.core.exception import sqlmapNotVulnerableException from lib.core.exception import sqlmapUserQuitException -from lib.core.settings import MIN_TIME_RESPONSES from lib.core.settings import MAX_TECHNIQUES_PER_VALUE from lib.core.settings import SQL_SCALAR_REGEX from lib.core.threads import getCurrentThreadData -from lib.core.unescaper import unescaper from lib.request.connect import Connect as Request from lib.request.direct import direct from lib.techniques.blind.inference import bisection diff --git a/lib/request/redirecthandler.py b/lib/request/redirecthandler.py index 7062a9724..fa017759f 100644 --- a/lib/request/redirecthandler.py +++ b/lib/request/redirecthandler.py @@ -8,7 +8,6 @@ See the file 'doc/COPYING' for copying permission import urllib2 import urlparse -from lib.core.data import conf from lib.core.data import kb from lib.core.data import logger from lib.core.common import getHostHeader diff --git a/lib/takeover/udf.py b/lib/takeover/udf.py index 875ffc52c..3eb18a645 100644 --- a/lib/takeover/udf.py +++ b/lib/takeover/udf.py @@ -13,7 +13,6 @@ from lib.core.common import Backend from lib.core.common import isTechniqueAvailable from lib.core.common import readInput from lib.core.data import conf -from lib.core.data import kb from lib.core.data import logger from lib.core.data import queries from lib.core.enums import DBMS diff --git a/lib/takeover/xp_cmdshell.py b/lib/takeover/xp_cmdshell.py index d7b024b66..ed75645ab 100644 --- a/lib/takeover/xp_cmdshell.py +++ b/lib/takeover/xp_cmdshell.py @@ -30,7 +30,6 @@ from lib.core.enums import HASHDB_KEYS from lib.core.enums import PAYLOAD from lib.core.exception import sqlmapUnsupportedFeatureException from lib.core.threads import getCurrentThreadData -from lib.core.unescaper import unescaper from lib.request import inject class xp_cmdshell: diff --git a/lib/techniques/blind/inference.py b/lib/techniques/blind/inference.py index 028749c29..a11f10586 100644 --- a/lib/techniques/blind/inference.py +++ b/lib/techniques/blind/inference.py @@ -5,7 +5,6 @@ Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/) See the file 'doc/COPYING' for copying permission """ -import re import threading import time @@ -24,7 +23,6 @@ from lib.core.common import getPartRun from lib.core.common import hashDBRetrieve from lib.core.common import hashDBWrite from lib.core.common import incrementCounter -from lib.core.common import randomStr from lib.core.common import safeStringFormat from lib.core.common import singleTimeWarnMessage from lib.core.data import conf diff --git a/lib/techniques/brute/use.py b/lib/techniques/brute/use.py index 564165da6..72624d6af 100644 --- a/lib/techniques/brute/use.py +++ b/lib/techniques/brute/use.py @@ -13,7 +13,6 @@ from lib.core.common import filterListValue from lib.core.common import getFileItems from lib.core.common import Backend from lib.core.common import getPageWordSet -from lib.core.common import hashDBRetrieve from lib.core.common import hashDBWrite from lib.core.common import randomInt from lib.core.common import randomStr diff --git a/lib/techniques/dns/use.py b/lib/techniques/dns/use.py index 150e40aa8..c363567f4 100644 --- a/lib/techniques/dns/use.py +++ b/lib/techniques/dns/use.py @@ -7,7 +7,6 @@ See the file 'doc/COPYING' for copying permission import re import time -import string from extra.safe2bin.safe2bin import safecharencode from lib.core.agent import agent @@ -21,7 +20,6 @@ from lib.core.common import hashDBRetrieve from lib.core.common import hashDBWrite from lib.core.common import randomInt from lib.core.common import randomStr -from lib.core.common import safecharencode from lib.core.common import safeStringFormat from lib.core.common import singleTimeWarnMessage from lib.core.data import conf diff --git a/lib/techniques/error/use.py b/lib/techniques/error/use.py index 8a7cd61a1..1707512df 100644 --- a/lib/techniques/error/use.py +++ b/lib/techniques/error/use.py @@ -32,7 +32,6 @@ from lib.core.data import logger from lib.core.data import queries from lib.core.dicts import FROM_DUMMY_TABLE from lib.core.enums import DBMS -from lib.core.enums import PAYLOAD from lib.core.settings import CHECK_ZERO_COLUMNS_THRESHOLD from lib.core.settings import MYSQL_ERROR_CHUNK_LENGTH from lib.core.settings import MSSQL_ERROR_CHUNK_LENGTH diff --git a/lib/utils/deps.py b/lib/utils/deps.py index 451ec63d7..a1e21a569 100644 --- a/lib/utils/deps.py +++ b/lib/utils/deps.py @@ -89,3 +89,5 @@ def checkDependencies(): if len(missing_libraries) == 0: infoMsg = "all dependencies are installed" + logger.info(infoMsg) + diff --git a/lib/utils/google.py b/lib/utils/google.py index a7366b819..3db9c62a8 100644 --- a/lib/utils/google.py +++ b/lib/utils/google.py @@ -13,17 +13,13 @@ import urllib import urllib2 from lib.core.common import getUnicode -from lib.core.common import readInput -from lib.core.common import urldecode from lib.core.common import urlencode from lib.core.data import conf -from lib.core.data import kb from lib.core.data import logger from lib.core.exception import sqlmapConnectionException from lib.core.exception import sqlmapGenericException from lib.core.settings import GOOGLE_REGEX from lib.core.settings import UNICODE_ENCODING -from lib.core.settings import URI_INJECTABLE_REGEX from lib.request.basic import decodePage class Google(object): @@ -42,9 +38,9 @@ class Google(object): try: conn = self.opener.open("http://www.google.com/ncr") - _ = conn.info() # retrieve session cookie + conn.info() # retrieve session cookie except urllib2.HTTPError, e: - _ = e.info() + e.info() except urllib2.URLError: errMsg = "unable to connect to Google" raise sqlmapConnectionException, errMsg diff --git a/lib/utils/pivotdumptable.py b/lib/utils/pivotdumptable.py index 01305cc84..a07e5bb8c 100644 --- a/lib/utils/pivotdumptable.py +++ b/lib/utils/pivotdumptable.py @@ -8,7 +8,6 @@ See the file 'doc/COPYING' for copying permission from extra.safe2bin.safe2bin import safechardecode from lib.core.bigarray import BigArray from lib.core.common import Backend -from lib.core.common import decodeIntToUnicode from lib.core.common import isNoneValue from lib.core.common import isNumPosStrValue from lib.core.common import singleTimeWarnMessage @@ -21,7 +20,6 @@ from lib.core.enums import CHARSET_TYPE from lib.core.enums import EXPECTED from lib.core.exception import sqlmapConnectionException from lib.core.exception import sqlmapNoneDataException -from lib.core.settings import INFERENCE_UNKNOWN_CHAR from lib.core.settings import MAX_INT from lib.core.unescaper import unescaper from lib.request import inject diff --git a/plugins/dbms/access/fingerprint.py b/plugins/dbms/access/fingerprint.py index 798f37e2d..384c792c9 100644 --- a/plugins/dbms/access/fingerprint.py +++ b/plugins/dbms/access/fingerprint.py @@ -93,7 +93,7 @@ class Fingerprint(GenericFingerprint): randInt = randomInt() randStr = randomStr() - _ = inject.checkBooleanExpression("EXISTS(SELECT * FROM %s.%s WHERE %d=%d)" % (randStr, randStr, randInt, randInt)) + inject.checkBooleanExpression("EXISTS(SELECT * FROM %s.%s WHERE %d=%d)" % (randStr, randStr, randInt, randInt)) if wasLastRequestDBMSError(): threadData = getCurrentThreadData() diff --git a/plugins/dbms/firebird/connector.py b/plugins/dbms/firebird/connector.py index c6e714208..c8c9cf936 100644 --- a/plugins/dbms/firebird/connector.py +++ b/plugins/dbms/firebird/connector.py @@ -12,6 +12,7 @@ except ImportError: import logging +from lib.core.data import conf from lib.core.data import logger from lib.core.exception import sqlmapConnectionException from lib.core.settings import UNICODE_ENCODING diff --git a/plugins/dbms/oracle/connector.py b/plugins/dbms/oracle/connector.py index 9c3f16164..86ba3adde 100644 --- a/plugins/dbms/oracle/connector.py +++ b/plugins/dbms/oracle/connector.py @@ -42,7 +42,7 @@ class Connector(GenericConnector): try: self.connector = cx_Oracle.connect(dsn=self.__dsn, user=self.user, password=self.password, mode=cx_Oracle.SYSDBA) logger.info("successfully connected as SYSDBA") - except (cx_Oracle.OperationalError, cx_Oracle.DatabaseError), _: + except (cx_Oracle.OperationalError, cx_Oracle.DatabaseError): try: self.connector = cx_Oracle.connect(dsn=self.__dsn, user=self.user, password=self.password) except (cx_Oracle.OperationalError, cx_Oracle.DatabaseError), msg: diff --git a/plugins/dbms/oracle/enumeration.py b/plugins/dbms/oracle/enumeration.py index df7d63996..83055bae7 100644 --- a/plugins/dbms/oracle/enumeration.py +++ b/plugins/dbms/oracle/enumeration.py @@ -88,8 +88,6 @@ class Enumeration(GenericEnumeration): kb.data.cachedUsersRoles[user] = list(roles) if not kb.data.cachedUsersRoles and isInferenceAvailable() and not conf.direct: - conditionChar = "=" - if conf.user: users = conf.user.split(",") else: diff --git a/plugins/generic/custom.py b/plugins/generic/custom.py index 89102a9ab..bcc1bafd7 100644 --- a/plugins/generic/custom.py +++ b/plugins/generic/custom.py @@ -13,9 +13,7 @@ from lib.core.common import getSQLSnippet from lib.core.common import isTechniqueAvailable from lib.core.convert import utf8decode from lib.core.data import conf -from lib.core.data import kb from lib.core.data import logger -from lib.core.data import queries from lib.core.dicts import SQL_STATEMENTS from lib.core.enums import PAYLOAD from lib.core.settings import PARAMETER_SPLITTING_REGEX diff --git a/plugins/generic/entries.py b/plugins/generic/entries.py index 3869188cc..d5cbc21da 100644 --- a/plugins/generic/entries.py +++ b/plugins/generic/entries.py @@ -5,11 +5,9 @@ Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/) See the file 'doc/COPYING' for copying permission """ -from extra.safe2bin.safe2bin import safechardecode from lib.core.bigarray import BigArray from lib.core.common import Backend from lib.core.common import clearConsoleLine -from lib.core.common import decodeIntToUnicode from lib.core.common import getLimitRange from lib.core.common import getUnicode from lib.core.common import isInferenceAvailable @@ -20,7 +18,6 @@ from lib.core.common import isTechniqueAvailable from lib.core.common import prioritySortColumns from lib.core.common import readInput from lib.core.common import safeSQLIdentificatorNaming -from lib.core.common import singleTimeWarnMessage from lib.core.common import unArrayizeValue from lib.core.common import unsafeSQLIdentificatorNaming from lib.core.data import conf @@ -38,7 +35,6 @@ from lib.core.exception import sqlmapNoneDataException from lib.core.exception import sqlmapUnsupportedFeatureException from lib.core.settings import CHECK_ZERO_COLUMNS_THRESHOLD from lib.core.settings import CURRENT_DB -from lib.core.settings import MAX_INT from lib.core.settings import NULL from lib.request import inject from lib.utils.hash import attackDumpedTable diff --git a/plugins/generic/filesystem.py b/plugins/generic/filesystem.py index 0d15ceb34..639099080 100644 --- a/plugins/generic/filesystem.py +++ b/plugins/generic/filesystem.py @@ -5,7 +5,6 @@ Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/) See the file 'doc/COPYING' for copying permission """ -import binascii import codecs import os diff --git a/tamper/bluecoat.py b/tamper/bluecoat.py index 0e1829683..1f85be0bd 100644 --- a/tamper/bluecoat.py +++ b/tamper/bluecoat.py @@ -5,11 +5,8 @@ Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/) See the file 'doc/COPYING' for copying permission """ -import os import re -from lib.core.common import singleTimeWarnMessage -from lib.core.enums import DBMS from lib.core.enums import PRIORITY __priority__ = PRIORITY.NORMAL diff --git a/tamper/securesphere.py b/tamper/securesphere.py index a6755a25a..eb25f6ace 100644 --- a/tamper/securesphere.py +++ b/tamper/securesphere.py @@ -5,8 +5,6 @@ Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/) See the file 'doc/COPYING' for copying permission """ -from lib.core.common import randomRange -from lib.core.data import kb from lib.core.enums import PRIORITY __priority__ = PRIORITY.NORMAL diff --git a/tamper/unionalltounion.py b/tamper/unionalltounion.py index 1f8b3c710..0902fec5e 100644 --- a/tamper/unionalltounion.py +++ b/tamper/unionalltounion.py @@ -5,8 +5,6 @@ Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/) See the file 'doc/COPYING' for copying permission """ -import re - from lib.core.enums import PRIORITY __priority__ = PRIORITY.HIGHEST