Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 89c721a

Browse files
committed
More replacements from open() to codecs.open(). conf.dataEncoding has to be used only for non-binary files.
1 parent 84778f0 commit 89c721a

7 files changed

Lines changed: 35 additions & 19 deletions

File tree

lib/core/common.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,8 +1080,10 @@ def __del__():
10801080
def decloakToMkstemp(filepath, **kwargs):
10811081
name = mkstemp(**kwargs)[1]
10821082
retVal = open(name, 'w+b')
1083+
10831084
retVal.write(decloak(filepath))
10841085
retVal.seek(0)
1086+
10851087
return retVal
10861088

10871089
def isWindowsPath(filepath):
@@ -1143,7 +1145,7 @@ def profile(profileOutputFile=None, dotOutputFile=None, imageOutputFile=None):
11431145

11441146
# Create dot file by using extra/gprof2dot/gprof2dot.py
11451147
# http://code.google.com/p/jrfonseca/wiki/Gprof2Dot
1146-
dotFilePointer = open(dotOutputFile, 'wt')
1148+
dotFilePointer = codecs.open(dotOutputFile, 'wt', conf.dataEncoding)
11471149
parser = gprof2dot.PstatsParser(profileOutputFile)
11481150
profile = parser.parse()
11491151
profile.prune(0.5/100.0, 0.1/100.0)
@@ -1194,7 +1196,7 @@ def getConsoleWidth(default=80):
11941196
return width if width else default
11951197

11961198
def parseXmlFile(xmlFile, handler):
1197-
xfile = open(xmlFile)
1199+
xfile = codecs.open(xmlFile, 'rb', conf.dataEncoding)
11981200
content = xfile.read()
11991201
stream = StringIO(content)
12001202
parse(stream, handler)
@@ -1209,7 +1211,7 @@ def initCommonOutputs():
12091211
key = None
12101212

12111213
fileName = os.path.join(paths.SQLMAP_TXT_PATH, 'common-outputs.txt')
1212-
cfile = open(fileName, 'r')
1214+
cfile = codecs.open(fileName, 'r', conf.dataEncoding)
12131215

12141216
for line in cfile.xreadlines():
12151217
line = line.strip()

lib/core/option.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def __urllib2Opener():
9696
urllib2.install_opener(opener)
9797

9898
def __feedTargetsDict(reqFile, addedTargetUrls):
99-
fp = codecs.open(reqFile, "rb", conf.dataEncoding)
99+
fp = codecs.open(reqFile, "rb")
100100

101101
fread = fp.read()
102102
fread = fread.replace("\r", "")
@@ -745,7 +745,7 @@ def __setHTTPUserAgent():
745745
logger.debug(debugMsg)
746746

747747
try:
748-
fd = open(conf.userAgentsFile, "r")
748+
fd = codecs.open(conf.userAgentsFile, "r", conf.dataEncoding)
749749
except IOError:
750750
warnMsg = "unable to read HTTP User-Agent header "
751751
warnMsg += "file '%s'" % conf.userAgentsFile

lib/core/update.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2323
"""
2424

25+
import codecs
2526
import difflib
2627
import os
2728
import re
@@ -145,7 +146,7 @@ def __updateMSSQLXML():
145146
servicepackElement.appendChild(servicepackText)
146147

147148
# Get the XML old file content to a local variable
148-
mssqlXml = open(paths.MSSQL_XML, "r")
149+
mssqlXml = codecs.open(paths.MSSQL_XML, "r", conf.dataEncoding)
149150
oldMssqlXml = mssqlXml.read()
150151
oldMssqlXmlSignatures = oldMssqlXml.count("<signature>")
151152
oldMssqlXmlList = oldMssqlXml.splitlines(1)
@@ -155,12 +156,12 @@ def __updateMSSQLXML():
155156
shutil.copy(paths.MSSQL_XML, "%s.bak" % paths.MSSQL_XML)
156157

157158
# Save our newly created XML to the signatures file
158-
mssqlXml = open(paths.MSSQL_XML, "w")
159+
mssqlXml = codecs.open(paths.MSSQL_XML, "w", conf.dataEncoding)
159160
doc.writexml(writer=mssqlXml, addindent=" ", newl="\n")
160161
mssqlXml.close()
161162

162163
# Get the XML new file content to a local variable
163-
mssqlXml = open(paths.MSSQL_XML, "r")
164+
mssqlXml = codecs.open(paths.MSSQL_XML, "r", conf.dataEncoding)
164165
newMssqlXml = mssqlXml.read()
165166
newMssqlXmlSignatures = newMssqlXml.count("<signature>")
166167
newMssqlXmlList = newMssqlXml.splitlines(1)

lib/takeover/metasploit.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2323
"""
2424

25+
import codecs
2526
import os
2627
import re
2728
import stat
@@ -357,7 +358,7 @@ def __forgeMsfConsoleResource(self):
357358

358359
self.__resource += "exploit\n"
359360

360-
self.resourceFp = open(self.resourceFile, "w")
361+
self.resourceFp = codecs.open(self.resourceFile, "w", conf.dataEncoding)
361362
self.resourceFp.write(self.__resource)
362363
self.resourceFp.close()
363364

@@ -546,7 +547,7 @@ def createMsfShellcode(self, exitfunc, format, extra, encode):
546547
errMsg = "failed to create the shellcode (%s)" % payloadStderr.replace("\n", "")
547548
raise sqlmapFilePathException, errMsg
548549

549-
self.__shellcodeFP = open(self.__shellcodeFilePath, "rb")
550+
self.__shellcodeFP = codecs.open(self.__shellcodeFilePath, "rb", conf.dataEncoding)
550551
self.shellcodeString = self.__shellcodeFP.read()
551552
self.__shellcodeFP.close()
552553

lib/utils/detection.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,15 @@
2121
with sqlmap; if not, write to the Free Software Foundation, Inc., 51
2222
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2323
"""
24-
import re, sre_constants
24+
25+
import codecs
26+
import re
27+
import sre_constants
28+
2529
from xml.dom import minidom
2630

2731
from lib.core.common import getCompiledRegex
32+
from lib.core.data import conf
2833
from lib.core.data import paths
2934
from lib.core.data import logger
3035

@@ -36,28 +41,33 @@ def __adjustGrammar(string):
3641
string = re.sub('attempts\Z', 'attempt', string)
3742
string = re.sub('injections\Z', 'injection', string)
3843
string = re.sub('attacks\Z', 'attack', string)
44+
3945
return string
4046

4147
def checkPayload(string):
4248
"""
43-
This method checks if the generated payload is detectable by the PHPIDS filter rules
49+
This method checks if the generated payload is detectable by the
50+
PHPIDS filter rules
4451
"""
52+
4553
global rules
4654

4755
if not rules:
48-
file = open(paths.DETECTION_RULES_XML, 'r')
49-
xmlrules = minidom.parse(file).documentElement
50-
file.close()
56+
xfile = codecs.open(paths.DETECTION_RULES_XML, 'r', conf.dataEncoding)
57+
xmlrules = minidom.parse(xfile).documentElement
58+
xfile.close()
5159
rules = []
60+
5261
for xmlrule in xmlrules.getElementsByTagName("filter"):
5362
try:
5463
rule = "(?i)%s" % xmlrule.getElementsByTagName('rule')[0].childNodes[0].nodeValue
5564
desc = __adjustGrammar(xmlrule.getElementsByTagName('description')[0].childNodes[0].nodeValue)
5665
rules.append((rule, desc))
57-
except sre_constants.error: #some issues with some regex expressions in Python 2.5
66+
except sre_constants.error: # Some issues with some regex expressions in Python 2.5
5867
pass
5968

6069
for rule, desc in rules:
6170
regObj = getCompiledRegex(rule)
71+
6272
if regObj.search(string):
6373
logger.warn("highly probable IDS/IPS detection: '%s'" % desc)

plugins/dbms/mssqlserver/filesystem.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2323
"""
2424

25+
import codecs
2526
import ntpath
2627
import os
2728

@@ -150,7 +151,7 @@ def stackedWriteFile(self, wFile, dFile, fileType, confirm=True):
150151
dFile = posixToNtSlashes(dFile)
151152
dFileName = ntpath.basename(dFile)
152153
wFileSize = os.path.getsize(wFile)
153-
wFilePointer = open(wFile, "rb")
154+
wFilePointer = codecs.open(wFile, "rb")
154155
wFileContent = wFilePointer.read()
155156
wFilePointer.close()
156157

plugins/generic/filesystem.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"""
2424

2525
import binascii
26+
import codecs
2627
import os
2728

2829
from lib.core.agent import agent
@@ -163,8 +164,8 @@ def fileEncode(self, fileName, encoding, single):
163164
"""
164165

165166
fcEncodedList = []
166-
fp = open(fileName, "rb")
167-
fcEncodedStr = fp.read().encode(encoding).replace("\n", "")
167+
fp = codecs.open(fileName, "rb")
168+
fcEncodedStr = fp.read().encode(encoding).replace("\n", "")
168169

169170
if not single:
170171
fcLength = len(fcEncodedStr)

0 commit comments

Comments
 (0)