1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
From 87d6eac62671152c318ea2cb839a748b06723ee2 Mon Sep 17 00:00:00 2001
From: Matthew W. S. Bell <matthew@bells23.org.uk>
Date: Sat, 12 Feb 2011 19:44:18 +0000
Subject: [PATCH 2/4] Use newer (non-deprecataed) hashlib module, if available.
---
src/avatar.py | 9 +++++++--
src/legacy/msn/msn.py | 11 +++++++----
src/legacy/msn/msnp11chl.py | 8 ++++++--
src/utils.py | 12 ++++++------
src/xdb.py | 8 ++++++--
5 files changed, 32 insertions(+), 16 deletions(-)
diff --git a/src/avatar.py b/src/avatar.py
index b9f7dfc..3aa0a3c 100644
--- a/src/avatar.py
+++ b/src/avatar.py
@@ -6,7 +6,12 @@ from debug import LogEvent, INFO, WARN, ERROR
from twisted.internet import reactor
from twisted.words.xish.domish import Element
-import sha, base64, os, os.path
+import base64, os, os.path
+
+try:
+ from hashlib import sha1
+except ImportError:
+ from sha import sha as sha1
import utils
import config
@@ -34,7 +39,7 @@ def parsePhotoEl(photo):
class Avatar:
""" Represents an Avatar. Does not store the image in memory. """
def __init__(self, imageData, avatarCache):
- self.__imageHash = sha.sha(imageData).hexdigest()
+ self.__imageHash = sha1(imageData).hexdigest()
self.__avatarCache = avatarCache
def getImageHash(self):
diff --git a/src/legacy/msn/msn.py b/src/legacy/msn/msn.py
index cd36aa8..e27e973 100644
--- a/src/legacy/msn/msn.py
+++ b/src/legacy/msn/msn.py
@@ -106,9 +106,12 @@ from twisted.words.xish.domish import parseText, unescapeFromXml
# System imports
-import types, operator, os, sys, base64, random, struct, random, sha, base64, StringIO, array, codecs, binascii
+import types, operator, os, sys, base64, random, struct, random, base64, StringIO, array, codecs, binascii
from urllib import quote, unquote
-
+try:
+ from hashlib import sha1
+except ImportError:
+ from sha import sha as sha1
MSN_PROTOCOL_VERSION = "MSNP11" # protocol version
MSN_PORT = 1863 # default dispatch server port
@@ -490,7 +493,7 @@ class MSNObject:
self.type = 3
self.location = "TMP" + str(random.randint(1000,9999))
self.friendly = "AAA="
- self.sha1d = b64enc(sha.sha(imageData).digest())
+ self.sha1d = b64enc(sha1(imageData).digest())
self.makeText()
def setNull(self):
@@ -518,7 +521,7 @@ class MSNObject:
h.append(self.friendly)
h.append("SHA1D")
h.append(self.sha1d)
- sha1c = b64enc(sha.sha("".join(h)).digest())
+ sha1c = b64enc(sha1("".join(h)).digest())
self.text = '<msnobj Creator="%s" Size="%s" Type="%s" Location="%s" Friendly="%s" SHA1D="%s" SHA1C="%s"/>' % (self.creator, str(self.size), str(self.type), self.location, self.friendly, self.sha1d, sha1c)
def parse(self, s):
diff --git a/src/legacy/msn/msnp11chl.py b/src/legacy/msn/msnp11chl.py
index bbf4c4d..9368df0 100644
--- a/src/legacy/msn/msnp11chl.py
+++ b/src/legacy/msn/msnp11chl.py
@@ -1,16 +1,20 @@
# Copyright 2005 James Bunton <james@delx.cjb.net>
# Licensed for distribution under the GPL version 2, check COPYING for details
-import md5
import struct
+try:
+ from hashlib import md5
+except ImportError:
+ from md5 import md5
+
MSNP11_PRODUCT_ID = "PROD0090YUAUV{2B"
MSNP11_PRODUCT_KEY = "YMM8C_H7KCQ2S_KL"
MSNP11_MAGIC_NUM = 0x0E79A9C1
def doChallenge(chlData):
- md5digest = md5.md5(chlData + MSNP11_PRODUCT_KEY).digest()
+ md5digest = md5(chlData + MSNP11_PRODUCT_KEY).digest()
# Make array of md5 string ints
md5Ints = struct.unpack("<llll", md5digest)
diff --git a/src/utils.py b/src/utils.py
index cb73ea3..88110ae 100644
--- a/src/utils.py
+++ b/src/utils.py
@@ -1,17 +1,17 @@
# Copyright 2004-2005 James Bunton <james@delx.cjb.net>
# Licensed for distribution under the GPL version 2, check COPYING for details
+try:
+ from hashlib import sha1
+except ImportError:
+ from sha import sha as sha1
+def socks5Hash(sid, initiator, target):
+ return sha1("%s%s%s" % (sid, initiator, target)).hexdigest()
def getLang(el):
return el.getAttribute((u'http://www.w3.org/XML/1998/namespace', u'lang'))
-
-import sha
-def socks5Hash(sid, initiator, target):
- return sha.new("%s%s%s" % (sid, initiator, target)).hexdigest()
-
-
import urllib
import os.path
def getURLBits(url, assumedType=None):
diff --git a/src/xdb.py b/src/xdb.py
index a3e3b5d..bd48582 100644
--- a/src/xdb.py
+++ b/src/xdb.py
@@ -6,9 +6,13 @@ from debug import LogEvent, INFO, WARN
import os
import os.path
import shutil
-import md5
import config
+try:
+ from hashlib import md5
+except ImportError:
+ from md5 import md5
+
X = os.path.sep
SPOOL_UMASK = 0077
@@ -23,7 +27,7 @@ def mangle(file):
return file.replace("@", "%")
def makeHash(file):
- return md5.md5(file).hexdigest()[0:3]
+ return md5(file).hexdigest()[0:3]
class XDB:
--
1.7.2.3
|