Python random.init_from_bin_len() Examples
The following are 20
code examples of random.init_from_bin_len().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
random
, or try the search function
.
Example #1
Source File: auth_chain.py From shadowsocksr-python with Apache License 2.0 | 6 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size >= 1440: return 0 random.init_from_bin_len(last_hash, buf_size) pos = bisect.bisect_left(self.data_size_list, buf_size + self.server_info.overhead) final_pos = pos + random.next() % (len(self.data_size_list)) if final_pos < len(self.data_size_list): return self.data_size_list[final_pos] - buf_size - self.server_info.overhead pos = bisect.bisect_left(self.data_size_list2, buf_size + self.server_info.overhead) final_pos = pos + random.next() % (len(self.data_size_list2)) if final_pos < len(self.data_size_list2): return self.data_size_list2[final_pos] - buf_size - self.server_info.overhead if final_pos < pos + len(self.data_size_list2) - 1: return 0 if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021
Example #2
Source File: auth_chain.py From shadowsocks with Apache License 2.0 | 6 votes |
def rnd_data_len(self, buf_size, last_hash, random): other_data_size = buf_size + self.server_info.overhead # 一定要在random使用前初始化,以保证服务器与客户端同步,保证包大小验证结果正确 random.init_from_bin_len(last_hash, buf_size) # final_pos 总是分布在pos~(data_size_list0.len-1)之间 # 除非data_size_list0中的任何值均过小使其全部都无法容纳buf if other_data_size >= self.data_size_list0[-1]: if other_data_size >= 1440: return 0 if other_data_size > 1300: return random.next() % 31 if other_data_size > 900: return random.next() % 127 if other_data_size > 400: return random.next() % 521 return random.next() % 1021 pos = bisect.bisect_left(self.data_size_list0, other_data_size) # random select a size in the leftover data_size_list0 final_pos = pos + random.next() % (len(self.data_size_list0) - pos) return self.data_size_list0[final_pos] - other_data_size
Example #3
Source File: auth_chain.py From ssrr with Apache License 2.0 | 6 votes |
def rnd_data_len(self, buf_size, last_hash, random): other_data_size = buf_size + self.server_info.overhead # 一定要在random使用前初始化,以保证服务器与客户端同步,保证包大小验证结果正确 random.init_from_bin_len(last_hash, buf_size) # final_pos 总是分布在pos~(data_size_list0.len-1)之间 # 除非data_size_list0中的任何值均过小使其全部都无法容纳buf if other_data_size >= self.data_size_list0[-1]: if other_data_size >= 1440: return 0 if other_data_size > 1300: return random.next() % 31 if other_data_size > 900: return random.next() % 127 if other_data_size > 400: return random.next() % 521 return random.next() % 1021 pos = bisect.bisect_left(self.data_size_list0, other_data_size) # random select a size in the leftover data_size_list0 final_pos = pos + random.next() % (len(self.data_size_list0) - pos) return self.data_size_list0[final_pos] - other_data_size
Example #4
Source File: auth_chain.py From SSRSpeed with GNU General Public License v3.0 | 6 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size >= 1440: return 0 random.init_from_bin_len(last_hash, buf_size) pos = bisect.bisect_left(self.data_size_list, buf_size + self.server_info.overhead) final_pos = pos + random.next() % (len(self.data_size_list)) if final_pos < len(self.data_size_list): return self.data_size_list[final_pos] - buf_size - self.server_info.overhead pos = bisect.bisect_left(self.data_size_list2, buf_size + self.server_info.overhead) final_pos = pos + random.next() % (len(self.data_size_list2)) if final_pos < len(self.data_size_list2): return self.data_size_list2[final_pos] - buf_size - self.server_info.overhead if final_pos < pos + len(self.data_size_list2) - 1: return 0 if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021
Example #5
Source File: auth_chain.py From SSRSpeed with GNU General Public License v3.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size > 1440: return 0 random.init_from_bin_len(last_hash, buf_size) if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021
Example #6
Source File: auth_chain.py From shadowsocksr-python with Apache License 2.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size > 1440: return 0 random.init_from_bin_len(last_hash, buf_size) if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021
Example #7
Source File: auth_chain.py From shadowsocksr-python with Apache License 2.0 | 5 votes |
def init_from_bin_len(self, bin, length): bin += b'\0' * 16 bin = struct.pack('<H', length) + bin[2:] self.v0 = struct.unpack('<Q', bin[:8])[0] self.v1 = struct.unpack('<Q', bin[8:16])[0] for i in range(4): self.next()
Example #8
Source File: auth_chain.py From ssrr with Apache License 2.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): other_data_size = buf_size + self.server_info.overhead # if other_data_size > the bigest item in data_size_list0, not padding any data if other_data_size >= self.data_size_list0[-1]: return 0 random.init_from_bin_len(last_hash, buf_size) pos = bisect.bisect_left(self.data_size_list0, other_data_size) # random select a size in the leftover data_size_list0 final_pos = pos + random.next() % (len(self.data_size_list0) - pos) return self.data_size_list0[final_pos] - other_data_size
Example #9
Source File: auth_chain.py From ssrr with Apache License 2.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size >= 1440: return 0 random.init_from_bin_len(last_hash, buf_size) pos = bisect.bisect_left(self.data_size_list, buf_size + self.server_info.overhead) final_pos = pos + random.next() % (len(self.data_size_list)) # 假设random均匀分布,则越长的原始数据长度越容易if false if final_pos < len(self.data_size_list): return self.data_size_list[final_pos] - buf_size - self.server_info.overhead # 上面if false后选择2号补全数组,此处有更精细的长度分段 pos = bisect.bisect_left(self.data_size_list2, buf_size + self.server_info.overhead) final_pos = pos + random.next() % (len(self.data_size_list2)) if final_pos < len(self.data_size_list2): return self.data_size_list2[final_pos] - buf_size - self.server_info.overhead # final_pos 总是分布在pos~(data_size_list2.len-1)之间 if final_pos < pos + len(self.data_size_list2) - 1: return 0 # 有1/len(self.data_size_list2)的概率不满足上一个if ? # 理论上不会运行到此处,因此可以插入运行断言 ? # assert False if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021
Example #10
Source File: auth_chain.py From ssrr with Apache License 2.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size > 1440: return 0 random.init_from_bin_len(last_hash, buf_size) if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021
Example #11
Source File: auth_chain.py From ssrr with Apache License 2.0 | 5 votes |
def init_from_bin_len(self, bin, length): bin += b'\0' * 16 bin = struct.pack('<H', length) + bin[2:] self.v0 = struct.unpack('<Q', bin[:8])[0] self.v1 = struct.unpack('<Q', bin[8:16])[0] for i in range(4): self.next()
Example #12
Source File: auth_chain.py From shadowsocksR-b with Apache License 2.0 | 5 votes |
def init_from_bin_len(self, bin, length): bin += b'\0' * 16 bin = struct.pack('<H', length) + bin[2:] self.v0 = struct.unpack('<Q', bin[:8])[0] self.v1 = struct.unpack('<Q', bin[8:16])[0] for i in range(4): self.next()
Example #13
Source File: auth_chain.py From SSRSpeed with GNU General Public License v3.0 | 5 votes |
def init_from_bin_len(self, bin, length): bin += b'\0' * 16 bin = struct.pack('<H', length) + bin[2:] self.v0 = struct.unpack('<Q', bin[:8])[0] self.v1 = struct.unpack('<Q', bin[8:16])[0] for i in range(4): self.next()
Example #14
Source File: auth_chain.py From Dockerfiles with Apache License 2.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size > 1440: return 0 random.init_from_bin_len(last_hash, buf_size) if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021
Example #15
Source File: auth_chain.py From Dockerfiles with Apache License 2.0 | 5 votes |
def init_from_bin_len(self, bin, length): bin += b'\0' * 16 bin = struct.pack('<H', length) + bin[2:] self.v0 = struct.unpack('<Q', bin[:8])[0] self.v1 = struct.unpack('<Q', bin[8:16])[0] for i in range(4): self.next()
Example #16
Source File: auth_chain.py From shadowsocks with Apache License 2.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): other_data_size = buf_size + self.server_info.overhead # if other_data_size > the bigest item in data_size_list0, not padding any data if other_data_size >= self.data_size_list0[-1]: return 0 random.init_from_bin_len(last_hash, buf_size) pos = bisect.bisect_left(self.data_size_list0, other_data_size) # random select a size in the leftover data_size_list0 final_pos = pos + random.next() % (len(self.data_size_list0) - pos) return self.data_size_list0[final_pos] - other_data_size
Example #17
Source File: auth_chain.py From shadowsocks with Apache License 2.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size >= 1440: return 0 random.init_from_bin_len(last_hash, buf_size) pos = bisect.bisect_left(self.data_size_list, buf_size + self.server_info.overhead) final_pos = pos + random.next() % (len(self.data_size_list)) # 假设random均匀分布,则越长的原始数据长度越容易if false if final_pos < len(self.data_size_list): return self.data_size_list[final_pos] - buf_size - self.server_info.overhead # 上面if false后选择2号补全数组,此处有更精细的长度分段 pos = bisect.bisect_left(self.data_size_list2, buf_size + self.server_info.overhead) final_pos = pos + random.next() % (len(self.data_size_list2)) if final_pos < len(self.data_size_list2): return self.data_size_list2[final_pos] - buf_size - self.server_info.overhead # final_pos 总是分布在pos~(data_size_list2.len-1)之间 if final_pos < pos + len(self.data_size_list2) - 1: return 0 # 有1/len(self.data_size_list2)的概率不满足上一个if if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021
Example #18
Source File: auth_chain.py From shadowsocks with Apache License 2.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size > 1440: return 0 random.init_from_bin_len(last_hash, buf_size) if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021
Example #19
Source File: auth_chain.py From shadowsocks with Apache License 2.0 | 5 votes |
def init_from_bin_len(self, bin, length): if len(bin) < 16: bin += b'\0' * 16 self.v0 = struct.unpack('<Q', struct.pack('<H', length) + bin[2:8])[0] self.v1 = struct.unpack('<Q', bin[8:16])[0] for i in range(4): self.next()
Example #20
Source File: auth_chain.py From shadowsocksR-b with Apache License 2.0 | 5 votes |
def rnd_data_len(self, buf_size, last_hash, random): if buf_size > 1440: return 0 random.init_from_bin_len(last_hash, buf_size) if buf_size > 1300: return random.next() % 31 if buf_size > 900: return random.next() % 127 if buf_size > 400: return random.next() % 521 return random.next() % 1021