/usr/share/pyshared/autobahn/xormasker.py is in python-autobahn 0.5.14-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | ###############################################################################
##
## Copyright 2012 Tavendo GmbH
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##
###############################################################################
from array import array
class XorMaskerNull:
def __init__(self, mask = None):
self.ptr = 0
def pointer(self):
return self.ptr
def reset(self):
self.ptr = 0
def process(self, data):
self.ptr += len(data)
return data
class XorMaskerSimple:
def __init__(self, mask):
assert len(mask) == 4
self.ptr = 0
self.msk = array('B', mask)
def pointer(self):
return self.ptr
def reset(self):
self.ptr = 0
def process(self, data):
dlen = len(data)
payload = array('B', data)
for k in xrange(dlen):
payload[k] ^= self.msk[self.ptr & 3]
self.ptr += 1
return payload.tostring()
class XorMaskerShifted1:
def __init__(self, mask):
assert len(mask) == 4
self.ptr = 0
self.mskarray = [array('B'), array('B'), array('B'), array('B')]
for j in xrange(4):
self.mskarray[0].append(ord(mask[ j & 3]))
self.mskarray[1].append(ord(mask[(j + 1) & 3]))
self.mskarray[2].append(ord(mask[(j + 2) & 3]))
self.mskarray[3].append(ord(mask[(j + 3) & 3]))
def pointer(self):
return self.ptr
def reset(self):
self.ptr = 0
def process(self, data):
dlen = len(data)
payload = array('B', data)
msk = self.mskarray[self.ptr & 3]
for k in xrange(dlen):
payload[k] ^= msk[k & 3]
self.ptr += dlen
return payload.tostring()
|