mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 00:01:36 +00:00
websockets: replace masker with more optimized one
This commit is contained in:
parent
b5404f82da
commit
102e64bda5
@ -1,3 +1,6 @@
|
||||
import sys
|
||||
|
||||
|
||||
class Masker:
|
||||
"""
|
||||
Data sent from the server must be masked to prevent malicious clients
|
||||
@ -12,12 +15,13 @@ class Masker:
|
||||
self.offset = 0
|
||||
|
||||
def mask(self, offset, data):
|
||||
result = bytearray(data)
|
||||
for i in range(len(data)):
|
||||
result[i] ^= self.key[offset % 4]
|
||||
offset += 1
|
||||
result = bytes(result)
|
||||
return result
|
||||
datalen = len(data)
|
||||
offset_mod = offset % 4
|
||||
data = int.from_bytes(data, sys.byteorder)
|
||||
num_keys = (datalen + offset_mod + 3) // 4
|
||||
mask = int.from_bytes((self.key * num_keys)[offset_mod:datalen +
|
||||
offset_mod], sys.byteorder)
|
||||
return (data ^ mask).to_bytes(datalen, sys.byteorder)
|
||||
|
||||
def __call__(self, data):
|
||||
ret = self.mask(self.offset, data)
|
||||
|
Loading…
Reference in New Issue
Block a user