pwnlib.util.cyclic
— Generation of unique sequences¶
-
pwnlib.util.cyclic.
cyclic
(length = None, alphabet = string.ascii_lowercase, n = 4) → list/str[源代码]¶ A simple wrapper over
de_bruijn()
. This function returns at most length elements.If the given alphabet is a string, a string is returned from this function. Otherwise a list is returned.
参数: - length – The desired length of the list or None if the entire sequence is desired.
- alphabet – List or string to generate the sequence over.
- n (int) – The length of subsequences that should be unique.
Example
>>> cyclic(alphabet = "ABC", n = 3) 'AAABAACABBABCACBACCBBBCBCCC' >>> cyclic(20) 'aaaabaaacaaadaaaeaaa' >>> alphabet, n = range(30), 3 >>> len(alphabet)**n, len(cyclic(alphabet = alphabet, n = n)) (27000, 27000)
-
pwnlib.util.cyclic.
cyclic_find
(subseq, alphabet = string.ascii_lowercase, n = None) → int[源代码]¶ Calculates the position of a substring into a De Bruijn sequence.
参数: - subseq – The subsequence to look for. This can be a string, a list or an integer. If an integer is provided it will be packed as a little endian integer.
- alphabet – List or string to generate the sequence over.
- n (int) – The length of subsequences that should be unique.
Examples
>>> cyclic_find(cyclic(1000)[514:518]) 514 >>> cyclic_find(0x61616162) 4
-
pwnlib.util.cyclic.
cyclic_metasploit
(length = None, sets = [ string.ascii_uppercase, string.ascii_lowercase, string.digits ]) → str[源代码]¶ A simple wrapper over
metasploit_pattern()
. This function returns a string of length length.参数: - length – The desired length of the string or None if the entire sequence is desired.
- sets – List of strings to generate the sequence over.
Example
>>> cyclic_metasploit(32) 'Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab' >>> cyclic_metasploit(sets = ["AB","ab","12"]) 'Aa1Aa2Ab1Ab2Ba1Ba2Bb1Bb2' >>> cyclic_metasploit()[1337:1341] '5Bs6' >>> len(cyclic_metasploit()) 20280
-
pwnlib.util.cyclic.
cyclic_metasploit_find
(subseq, sets = [ string.ascii_uppercase, string.ascii_lowercase, string.digits ]) → int[源代码]¶ Calculates the position of a substring into a Metasploit Pattern sequence.
参数: - subseq – The subsequence to look for. This can be a string or an integer. If an integer is provided it will be packed as a little endian integer.
- sets – List of strings to generate the sequence over.
Examples
>>> cyclic_metasploit_find(cyclic_metasploit(1000)[514:518]) 514 >>> cyclic_metasploit_find(0x61413161) 4
-
pwnlib.util.cyclic.
de_bruijn
(alphabet = string.ascii_lowercase, n = 4) → generator[源代码]¶ Generator for a sequence of unique substrings of length n. This is implemented using a De Bruijn Sequence over the given alphabet.
The returned generator will yield up to
len(alphabet)**n
elements.参数: - alphabet – List or string to generate the sequence over.
- n (int) – The length of subsequences that should be unique.
-
pwnlib.util.cyclic.
metasploit_pattern
(sets = [ string.ascii_uppercase, string.ascii_lowercase, string.digits ]) → generator[源代码]¶ Generator for a sequence of characters as per Metasploit Framework’s Rex::Text.pattern_create (aka pattern_create.rb).
The returned generator will yield up to
len(sets) * reduce(lambda x,y: x*y, map(len, sets))
elements.参数: sets – List of strings to generate the sequence over.