/
jjencode.py
171 lines (163 loc) · 8 KB
/
jjencode.py
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
164
165
166
167
168
169
170
171
# -*- coding: iso-8859-1 -*-
#!/usr/bin/env python
# By Jonathan James (jj@jonathanj.com)
import sys
import os
class encoder:
htmldict={'!':'!', '\"':'"', '#':'#','$':'$', '%':'%',
'\&':'&', '\'':''', '(':'(',')':')', '*':'*',
'+':'+', ',':',', '-':'-','.':'.', '/':'/',
'0':'0', '1':'1', '2':'2','3':'3', '4':'4',
'5':'5', '6':'6', '7':'7','8':'8', '9':'9',
':':':', '':';', '<':'<','=':'=', '>':'>',
'?':'?', '@':'@', 'A':'A','B':'B', 'C':'C',
'D':'D', 'E':'E', 'F':'F','G':'G', 'H':'H',
'I':'I', 'J':'J', 'K':'K','L':'L', 'M':'M',
'N':'N', 'O':'O', 'P':'P','Q':'Q', 'R':'R',
'S':'S', 'T':'T', 'U':'U','V':'V', 'W':'W',
'X':'X', 'Y':'Y', 'Z':'Z','[':'[', '\\':'\',
']':']', '^':'^', '_':'_','`':'`', 'a':'a',
'b':'b', 'c':'c', 'd':'d','e':'e', 'f':'f',
'g':'g', 'h':'h', 'i':'i','j':'j', 'k':'k',
'l':'l', 'm':'m', 'n':'n','o':'o', 'p':'p',
'q':'q', 'r':'r', 's':'s','t':'t', 'u':'u',
'v':'v', 'w':'w', 'x':'x','y':'y', 'z':'z',
'{':'{', '|':'|', '}':'}','~':'~', '¡':'¡',
'¢':'¢', '£':'£', '¤':'¤', '¥':'¥','¦':'¦',
'§':'§', '¨':'¨', '©':'©', 'ª':'ª','«':'«',
'¬':'¬', '':'­', '®':'®', '¯':'¯','°':'°',
'±':'±', '²':'²', '³':'³', '´':'´','µ':'µ',
'¶':'¶', '·':'·', '¸':'¸', '¹':'¹','º':'º',
'»':'»', '¼':'¼', '½':'½', '¾':'¾','¿':'¿',
'À':'À', 'Á':'Á', 'Â':'Â', 'Ã':'Ã','Ä':'Ä',
'Å':'Å', 'Æ':'Æ', 'Ç':'Ç', 'È':'È','É':'É',
'Ê':'Ê', 'Ë':'Ë', 'Ì':'Ì', 'Í':'Í','Î':'Î',
'Ï':'Ï', 'Ð':'Ð', 'Ñ':'Ñ', 'Ò':'Ò','Ó':'Ó',
'Ô':'Ô', 'Õ':'Õ', 'Ö':'Ö', '×':'×','Ø':'Ø',
'Ù':'Ù', 'Ú':'Ú', 'Û':'Û', 'Ü':'Ü','Ý':'Ý',
'Þ':'Þ', 'ß':'ß', 'à':'à', 'á':'á','â':'â',
'ã':'ã', 'ä':'ä', 'å':'å', 'æ':'æ','ç':'ç',
'è':'è', 'é':'é', 'ê':'ê', 'ë':'ë','ì':'ì',
'í':'í', 'î':'î', 'ï':'ï', 'ð':'ð','ñ':'ñ',
'ò':'ò', 'ó':'ó', 'ô':'ô', 'õ':'õ','ö':'ö',
'÷':'÷', 'ø':'ø', 'ù':'ù', 'ú':'ú','û':'û',
'ü':'ü', 'ý':'ý', 'þ':'þ', 'ÿ':'ÿ'}
hexdict={
'!':'!', '\"':'"', '#':'#',
'$':'$', '%':'%', '&':'&', '\'':''', '(':'(',
')':')', '*':'*', '+':'+', ',':',', '-':'-',
'.':'.', '/':'/', '0':'0', '1':'1', '2':'2',
'3':'3', '4':'4', '5':'5', '6':'6', '7':'7',
'8':'8', '9':'9', ':':':', '':';', '<':'<',
'=':'=', '>':'>', '?':'?', '@':'@', 'A':'A',
'B':'B', 'C':'C', 'D':'D', 'E':'E', 'F':'F',
'G':'G', 'H':'H', 'I':'I', 'J':'J', 'K':'K',
'L':'L', 'M':'M', 'N':'N', 'O':'O', 'P':'P',
'Q':'Q', 'R':'R', 'S':'S', 'T':'T', 'U':'U',
'V':'V', 'W':'W', 'X':'X', 'Y':'Y', 'Z':'Z',
'[':'[', '\\':'\', ']':']', '^':'^', '_':'_',
'`':'`', 'a':'a', 'b':'b', 'c':'c', 'd':'d',
'e':'e', 'f':'f', 'g':'g', 'h':'h', 'i':'i',
'j':'j', 'k':'k', 'l':'l', 'm':'m', 'n':'n',
'o':'o', 'p':'p', 'q':'q', 'r':'r', 's':'s',
't':'t', 'u':'u', 'v':'v', 'w':'w', 'x':'x',
'y':'y', 'z':'z', '{':'{', '|':'|', '}':'}',
'~':'~', '¡':'¡', '¢':'¢', '£':'£', '¤':'¤', '¥':'¥',
'¦':'¦', '§':'§', '¨':'¨', '©':'©', 'ª':'ª',
'«':'«', '¬':'¬', '':'­', '®':'®', '¯':'¯',
'°':'°', '±':'±', '²':'²', '³':'³', '´':'´',
'µ':'µ', '¶':'¶', '·':'·', '¸':'¸', '¹':'¹',
'º':'º', '»':'»', '¼':'¼', '½':'½', '¾':'¾',
'¿':'¿', 'À':'À', 'Á':'Á', 'Â':'Â', 'Ã':'Ã',
'Ä':'Ä', 'Å':'Å', 'Æ':'Æ', 'Ç':'Ç', 'È':'È',
'É':'É', 'Ê':'Ê', 'Ë':'Ë', 'Ì':'Ì', 'Í':'Í',
'Î':'Î', 'Ï':'Ï', 'Ð':'Ð', 'Ñ':'Ñ', 'Ò':'Ò',
'Ó':'Ó', 'Ô':'Ô', 'Õ':'Õ', 'Ö':'Ö', '×':'×',
'Ø':'Ø', 'Ù':'Ù', 'Ú':'Ú', 'Û':'Û', 'Ü':'Ü',
'Ý':'Ý', 'Þ':'Þ', 'ß':'ß', 'à':'à', 'á':'á',
'â':'â', 'ã':'ã', 'ä':'ä', 'å':'å', 'æ':'æ',
'ç':'ç', 'è':'è', 'é':'é', 'ê':'ê', 'ë':'ë',
'ì':'ì', 'í':'í', 'î':'î', 'ï':'ï', 'ð':'ð',
'ñ':'ñ', 'ò':'ò', 'ó':'ó', 'ô':'ô', 'õ':'õ',
'ö':'ö', '÷':'÷', 'ø':'ø', 'ù':'ù', 'ú':'ú',
'û':'û', 'ü':'ü', 'ý':'ý', 'þ':'þ', 'ÿ':'ÿ' }
hex2dict={
' ':'%20', '!':'%21', '\"':'%22', '#':'%23',
'$':'%24', '%':'%25', '&':'%26', '\'':'%27', '(':'%28',
')':'%29', '*':'%2a', '+':'%2b', ',':'%2c', '-':'%2d',
'.':'%2e', '/':'%2f', '0':'%30', '1':'%31', '2':'%32',
'3':'%33', '4':'%34', '5':'%35', '6':'%36', '7':'%37',
'8':'%38', '9':'%39', ':':'%3a', '':'%3b', '<':'%3c',
'=':'%3d', '>':'%3e', '?':'%3f', '@':'%40', 'A':'%41',
'B':'%42', 'C':'%43', 'D':'%44', 'E':'%45', 'F':'%46',
'G':'%47', 'H':'%48', 'I':'%49', 'J':'%4a', 'K':'%4b',
'L':'%4c', 'M':'%4d', 'N':'%4e', 'O':'%4f', 'P':'%50',
'Q':'%51', 'R':'%52', 'S':'%53', 'T':'%54', 'U':'%55',
'V':'%56', 'W':'%57', 'X':'%58', 'Y':'%59', 'Z':'%5a',
'[':'%5b', '\\':'%5c', ']':'%5d', '^':'%5e', '_':'%5f',
'`':'%60', 'a':'%61', 'b':'%62', 'c':'%63', 'd':'%64',
'e':'%65', 'f':'%66', 'g':'%67', 'h':'%68', 'i':'%69',
'j':'%6a', 'k':'%6b', 'l':'%6c', 'm':'%6d', 'n':'%6e',
'o':'%6f', 'p':'%70', 'q':'%71', 'r':'%72', 's':'%73',
't':'%74', 'u':'%75', 'v':'%76', 'w':'%77', 'x':'%78',
'y':'%79', 'z':'%7a', '{':'%7b', '|':'%7c', '}':'%7d',
'~':'%7e', '¡':'%a1', '¢':'%a2', '£':'%a3', '¤':'%a4', '¥':'%a5',
'¦':'%a6', '§':'%a7', '¨':'%a8', '©':'%a9', 'ª':'%aa',
'«':'%ab', '¬':'%ac', '':'%ad', '®':'%ae', '¯':'%af',
'°':'%b0', '±':'%b1', '²':'%b2', '³':'%b3', '´':'%b4',
'µ':'%b5', '¶':'%b6', '·':'%b7', '¸':'%b8', '¹':'%b9',
'º':'%ba', '»':'%bb', '¼':'%bc', '½':'%bd', '¾':'%be',
'¿':'%bf', 'À':'%c0', 'Á':'%c1', 'Â':'%c2', 'Ã':'%c3',
'Ä':'%c4', 'Å':'%c5', 'Æ':'%c6', 'Ç':'%c7', 'È':'%c8',
'É':'%c9', 'Ê':'%ca', 'Ë':'%cb', 'Ì':'%cc', 'Í':'%cd',
'Î':'%ce', 'Ï':'%cf', 'Ð':'%d0', 'Ñ':'%d1', 'Ò':'%d2',
'Ó':'%d3', 'Ô':'%d4', 'Õ':'%d5', 'Ö':'%d6', '×':'%d7',
'Ø':'%d8', 'Ù':'%d9', 'Ú':'%da', 'Û':'%db', 'Ü':'%dc',
'Ý':'%dd', 'Þ':'%de', 'ß':'%df', 'à':'%e0', 'á':'%e1',
'â':'%e2', 'ã':'%e3', 'ä':'%e4', 'å':'%e5', 'æ':'%e6',
'ç':'%e7', 'è':'%e8', 'é':'%e9', 'ê':'%ea', 'ë':'%eb',
'ì':'%ec', 'í':'%ed', 'î':'%ee', 'ï':'%ef', 'ð':'%f0',
'ñ':'%f1', 'ò':'%f2', 'ó':'%f3', 'ô':'%f4', 'õ':'%f5',
'ö':'%f6', '÷':'%f7', 'ø':'%f8', 'ù':'%f9', 'ú':'%fa',
'û':'%fb', 'ü':'%fc', 'ý':'%fd', 'þ':'%fe', 'ÿ':'%ff' }
def hexencode(self,data):
hex_result = ""
for byte in data:
try:
hex_result += (self.hexdict[byte] + ";")
except KeyError:
pass
return hex_result
def htmlencode(self,data):
html_result = ""
for byte in data:
try:
html_result += (self.htmldict[byte] + ";")
except KeyError:
pass
return html_result
def hex2encode(self,data):
hex2_result = ""
for byte in data:
try:
hex2_result += (self.hex2dict[byte])
except KeyError:
hex2_result += "%" + str(byte.encode("hex"))
return hex2_result
def main():
if len(sys.argv) < 3:
print "Usage: " + sys.argv[0] + " [html/hex/hex2] [file]"
exit(0)
if os.path.isfile(sys.argv[2]):
f = open(sys.argv[2],"rb")
contents = f.read()
f.close()
else:
contents = sys.argv[2]
e = encoder()
try:
exec "print e." + sys.argv[1] + "encode(contents)"
except AttributeError:
print "Usage: " + sys.argv[0] + " [html/hex] [file]"
if __name__ == "__main__":
main()