OXIESEC PANEL
- Current Dir:
/
/
usr
/
lib
/
python2.7
/
encodings
Server IP: 10.0.0.4
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
07/15/2022 06:13:41 AM
rwxr-xr-x
📄
__init__.py
5.56 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
__init__.pyc
4.27 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
aliases.py
14.5 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
aliases.pyc
8.56 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
ascii.py
1.22 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
ascii.pyc
2.21 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
base64_codec.py
2.32 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
base64_codec.pyc
3.75 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
big5.py
1019 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
big5.pyc
1.71 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
big5hkscs.py
1.01 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
big5hkscs.pyc
1.75 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
bz2_codec.py
2.96 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
bz2_codec.pyc
4.62 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
charmap.py
2.04 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
charmap.pyc
3.39 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp037.py
13.06 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp037.pyc
2.77 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1006.py
13.5 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1006.pyc
2.85 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1026.py
13.06 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1026.pyc
2.78 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1140.py
13.05 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1140.pyc
2.77 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1250.py
13.62 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1250.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1251.py
13.3 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1251.pyc
2.8 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1252.py
13.44 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1252.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1253.py
13.04 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1253.pyc
2.82 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1254.py
13.44 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1254.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1255.py
12.42 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1255.pyc
2.83 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1256.py
12.76 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1256.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1257.py
13.31 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1257.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp1258.py
13.3 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp1258.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp424.py
12.02 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp424.pyc
2.8 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp437.py
34 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp437.pyc
7.88 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp500.py
13.06 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp500.pyc
2.77 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp720.py
13.37 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp720.pyc
2.87 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp737.py
34.12 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp737.pyc
8.11 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp775.py
33.92 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp775.pyc
7.9 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp850.py
33.56 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp850.pyc
7.64 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp852.py
34.43 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp852.pyc
7.9 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp855.py
33.31 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp855.pyc
8.08 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp856.py
12.38 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp856.pyc
2.83 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp857.py
33.36 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp857.pyc
7.63 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp858.py
33.47 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp858.pyc
7.61 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp860.py
34.12 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp860.pyc
7.87 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp861.py
34.07 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp861.pyc
7.88 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp862.py
32.84 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp862.pyc
8.01 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp863.py
33.7 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp863.pyc
7.88 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp864.py
33.12 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp864.pyc
8 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp865.py
34.06 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp865.pyc
7.88 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp866.py
33.84 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp866.pyc
8.11 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp869.py
32.44 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp869.pyc
7.92 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp874.py
12.55 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp874.pyc
2.9 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp875.py
12.8 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp875.pyc
2.77 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp932.py
1023 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp932.pyc
1.72 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp949.py
1023 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp949.pyc
1.72 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
cp950.py
1023 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
cp950.pyc
1.72 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
euc_jis_2004.py
1.03 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
euc_jis_2004.pyc
1.78 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
euc_jisx0213.py
1.03 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
euc_jisx0213.pyc
1.78 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
euc_jp.py
1 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
euc_jp.pyc
1.73 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
euc_kr.py
1 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
euc_kr.pyc
1.73 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
gb18030.py
1.01 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
gb18030.pyc
1.74 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
gb2312.py
1 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
gb2312.pyc
1.73 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
gbk.py
1015 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
gbk.pyc
1.71 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
hex_codec.py
2.29 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
hex_codec.pyc
3.7 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
hp_roman8.py
7.22 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
hp_roman8.pyc
4.02 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
hz.py
1011 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
hz.pyc
1.7 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
idna.py
8.28 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
idna.pyc
6.23 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso2022_jp.py
1.03 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso2022_jp.pyc
1.77 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso2022_jp_1.py
1.04 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso2022_jp_1.pyc
1.78 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso2022_jp_2.py
1.04 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso2022_jp_2.pyc
1.78 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso2022_jp_2004.py
1.05 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso2022_jp_2004.pyc
1.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso2022_jp_3.py
1.04 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso2022_jp_3.pyc
1.78 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso2022_jp_ext.py
1.04 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso2022_jp_ext.pyc
1.8 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso2022_kr.py
1.03 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso2022_kr.pyc
1.77 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_1.py
13.12 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_1.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_10.py
13.52 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_10.pyc
2.82 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_11.py
12.3 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_11.pyc
2.92 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_13.py
13.21 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_13.pyc
2.83 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_14.py
13.58 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_14.pyc
2.84 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_15.py
13.15 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_15.pyc
2.82 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_16.py
13.49 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_16.pyc
2.83 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_2.py
13.34 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_2.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_3.py
13.03 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_3.pyc
2.82 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_4.py
13.31 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_4.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_5.py
12.96 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_5.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_6.py
10.83 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_6.pyc
2.85 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_7.py
12.79 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_7.pyc
2.82 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_8.py
11.03 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_8.pyc
2.85 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
iso8859_9.py
13.1 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
iso8859_9.pyc
2.81 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
johab.py
1023 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
johab.pyc
1.72 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
koi8_r.py
13.71 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
koi8_r.pyc
2.83 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
koi8_u.py
13.69 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
koi8_u.pyc
2.82 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
latin_1.py
1.23 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
latin_1.pyc
2.24 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_arabic.py
35.86 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_arabic.pyc
7.83 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_centeuro.py
14.02 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_centeuro.pyc
2.88 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_croatian.py
13.56 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_croatian.pyc
2.88 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_cyrillic.py
13.39 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_cyrillic.pyc
2.87 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_farsi.py
15.06 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_farsi.pyc
2.79 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_greek.py
13.65 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_greek.pyc
2.83 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_iceland.py
13.43 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_iceland.pyc
2.87 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_latin2.py
8.36 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_latin2.pyc
4.8 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_roman.py
13.41 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_roman.pyc
2.85 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_romanian.py
13.59 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_romanian.pyc
2.88 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mac_turkish.py
13.45 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mac_turkish.pyc
2.87 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
mbcs.py
1.18 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
mbcs.pyc
1.98 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
palmos.py
2.87 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
palmos.pyc
3 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
ptcp154.py
8.74 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
ptcp154.pyc
4.78 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
punycode.py
6.65 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
punycode.pyc
7.76 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
quopri_codec.py
2.14 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
quopri_codec.pyc
3.57 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
raw_unicode_escape.py
1.18 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
raw_unicode_escape.pyc
2.16 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
rot_13.py
2.55 KB
07/01/2022 03:56:32 PM
rwxr-xr-x
📄
rot_13.pyc
3.58 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
shift_jis.py
1.01 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
shift_jis.pyc
1.75 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
shift_jis_2004.py
1.03 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
shift_jis_2004.pyc
1.79 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
shift_jisx0213.py
1.03 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
shift_jisx0213.pyc
1.79 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
string_escape.py
953 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
string_escape.pyc
2.02 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
tis_620.py
12.26 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
tis_620.pyc
2.88 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
undefined.py
1.27 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
undefined.pyc
2.54 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
unicode_escape.py
1.16 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
unicode_escape.pyc
2.11 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
unicode_internal.py
1.17 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
unicode_internal.pyc
2.13 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
utf_16.py
3.89 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
utf_16.pyc
5.05 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
utf_16_be.py
1.01 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
utf_16_be.pyc
1.95 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
utf_16_le.py
1.01 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
utf_16_le.pyc
1.95 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
utf_32.py
5.01 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
utf_32.pyc
5.6 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
utf_32_be.py
930 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
utf_32_be.pyc
1.85 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
utf_32_le.py
930 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
utf_32_le.pyc
1.85 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
utf_7.py
946 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
utf_7.pyc
1.85 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
utf_8.py
1005 bytes
07/01/2022 03:56:32 PM
rw-r--r--
📄
utf_8.pyc
1.9 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
utf_8_sig.py
3.6 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
utf_8_sig.pyc
4.87 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
uu_codec.py
3.68 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
uu_codec.pyc
4.8 KB
07/15/2022 06:13:40 AM
rw-r--r--
📄
zlib_codec.py
2.98 KB
07/01/2022 03:56:32 PM
rw-r--r--
📄
zlib_codec.pyc
4.54 KB
07/15/2022 06:13:40 AM
rw-r--r--
Editing: idna.py
Close
# This module implements the RFCs 3490 (IDNA) and 3491 (Nameprep) import stringprep, re, codecs from unicodedata import ucd_3_2_0 as unicodedata # IDNA section 3.1 dots = re.compile(u"[\u002E\u3002\uFF0E\uFF61]") # IDNA section 5 ace_prefix = "xn--" uace_prefix = unicode(ace_prefix, "ascii") # This assumes query strings, so AllowUnassigned is true def nameprep(label): # Map newlabel = [] for c in label: if stringprep.in_table_b1(c): # Map to nothing continue newlabel.append(stringprep.map_table_b2(c)) label = u"".join(newlabel) # Normalize label = unicodedata.normalize("NFKC", label) # Prohibit for c in label: if stringprep.in_table_c12(c) or \ stringprep.in_table_c22(c) or \ stringprep.in_table_c3(c) or \ stringprep.in_table_c4(c) or \ stringprep.in_table_c5(c) or \ stringprep.in_table_c6(c) or \ stringprep.in_table_c7(c) or \ stringprep.in_table_c8(c) or \ stringprep.in_table_c9(c): raise UnicodeError("Invalid character %r" % c) # Check bidi RandAL = map(stringprep.in_table_d1, label) for c in RandAL: if c: # There is a RandAL char in the string. Must perform further # tests: # 1) The characters in section 5.8 MUST be prohibited. # This is table C.8, which was already checked # 2) If a string contains any RandALCat character, the string # MUST NOT contain any LCat character. if filter(stringprep.in_table_d2, label): raise UnicodeError("Violation of BIDI requirement 2") # 3) If a string contains any RandALCat character, a # RandALCat character MUST be the first character of the # string, and a RandALCat character MUST be the last # character of the string. if not RandAL[0] or not RandAL[-1]: raise UnicodeError("Violation of BIDI requirement 3") return label def ToASCII(label): try: # Step 1: try ASCII label = label.encode("ascii") except UnicodeError: pass else: # Skip to step 3: UseSTD3ASCIIRules is false, so # Skip to step 8. if 0 < len(label) < 64: return label raise UnicodeError("label empty or too long") # Step 2: nameprep label = nameprep(label) # Step 3: UseSTD3ASCIIRules is false # Step 4: try ASCII try: label = label.encode("ascii") except UnicodeError: pass else: # Skip to step 8. if 0 < len(label) < 64: return label raise UnicodeError("label empty or too long") # Step 5: Check ACE prefix if label.startswith(uace_prefix): raise UnicodeError("Label starts with ACE prefix") # Step 6: Encode with PUNYCODE label = label.encode("punycode") # Step 7: Prepend ACE prefix label = ace_prefix + label # Step 8: Check size if 0 < len(label) < 64: return label raise UnicodeError("label empty or too long") def ToUnicode(label): # Step 1: Check for ASCII if isinstance(label, str): pure_ascii = True else: try: label = label.encode("ascii") pure_ascii = True except UnicodeError: pure_ascii = False if not pure_ascii: # Step 2: Perform nameprep label = nameprep(label) # It doesn't say this, but apparently, it should be ASCII now try: label = label.encode("ascii") except UnicodeError: raise UnicodeError("Invalid character in IDN label") # Step 3: Check for ACE prefix if not label.startswith(ace_prefix): return unicode(label, "ascii") # Step 4: Remove ACE prefix label1 = label[len(ace_prefix):] # Step 5: Decode using PUNYCODE result = label1.decode("punycode") # Step 6: Apply ToASCII label2 = ToASCII(result) # Step 7: Compare the result of step 6 with the one of step 3 # label2 will already be in lower case. if label.lower() != label2: raise UnicodeError("IDNA does not round-trip", label, label2) # Step 8: return the result of step 5 return result ### Codec APIs class Codec(codecs.Codec): def encode(self,input,errors='strict'): if errors != 'strict': # IDNA is quite clear that implementations must be strict raise UnicodeError("unsupported error handling "+errors) if not input: return "", 0 result = [] labels = dots.split(input) if labels and len(labels[-1])==0: trailing_dot = '.' del labels[-1] else: trailing_dot = '' for label in labels: result.append(ToASCII(label)) # Join with U+002E return ".".join(result)+trailing_dot, len(input) def decode(self,input,errors='strict'): if errors != 'strict': raise UnicodeError("Unsupported error handling "+errors) if not input: return u"", 0 # IDNA allows decoding to operate on Unicode strings, too. if isinstance(input, unicode): labels = dots.split(input) else: # Must be ASCII string input = str(input) unicode(input, "ascii") labels = input.split(".") if labels and len(labels[-1]) == 0: trailing_dot = u'.' del labels[-1] else: trailing_dot = u'' result = [] for label in labels: result.append(ToUnicode(label)) return u".".join(result)+trailing_dot, len(input) class IncrementalEncoder(codecs.BufferedIncrementalEncoder): def _buffer_encode(self, input, errors, final): if errors != 'strict': # IDNA is quite clear that implementations must be strict raise UnicodeError("unsupported error handling "+errors) if not input: return ("", 0) labels = dots.split(input) trailing_dot = u'' if labels: if not labels[-1]: trailing_dot = '.' del labels[-1] elif not final: # Keep potentially unfinished label until the next call del labels[-1] if labels: trailing_dot = '.' result = [] size = 0 for label in labels: result.append(ToASCII(label)) if size: size += 1 size += len(label) # Join with U+002E result = ".".join(result) + trailing_dot size += len(trailing_dot) return (result, size) class IncrementalDecoder(codecs.BufferedIncrementalDecoder): def _buffer_decode(self, input, errors, final): if errors != 'strict': raise UnicodeError("Unsupported error handling "+errors) if not input: return (u"", 0) # IDNA allows decoding to operate on Unicode strings, too. if isinstance(input, unicode): labels = dots.split(input) else: # Must be ASCII string input = str(input) unicode(input, "ascii") labels = input.split(".") trailing_dot = u'' if labels: if not labels[-1]: trailing_dot = u'.' del labels[-1] elif not final: # Keep potentially unfinished label until the next call del labels[-1] if labels: trailing_dot = u'.' result = [] size = 0 for label in labels: result.append(ToUnicode(label)) if size: size += 1 size += len(label) result = u".".join(result) + trailing_dot size += len(trailing_dot) return (result, size) class StreamWriter(Codec,codecs.StreamWriter): pass class StreamReader(Codec,codecs.StreamReader): pass ### encodings module API def getregentry(): return codecs.CodecInfo( name='idna', encode=Codec().encode, decode=Codec().decode, incrementalencoder=IncrementalEncoder, incrementaldecoder=IncrementalDecoder, streamwriter=StreamWriter, streamreader=StreamReader, )