Compare commits
3 Commits
8084cadad9
...
c52a06c09c
Author | SHA1 | Date |
---|---|---|
Mattéo Delabre | c52a06c09c | |
Mattéo Delabre | 8b42e0ec09 | |
Mattéo Delabre | d0f3f0ba31 |
25
runall.py
25
runall.py
|
@ -1,11 +1,20 @@
|
|||
from itertools import product
|
||||
import string
|
||||
import subprocess
|
||||
|
||||
chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ '
|
||||
|
||||
|
||||
def check_pair(script, instr, outstr):
|
||||
result = subprocess.run(
|
||||
["/usr/bin/env", "bash", "-c", script],
|
||||
[
|
||||
"/usr/bin/env", "bash", "-c",
|
||||
";\n".join((
|
||||
# Cleanup child processes on exit
|
||||
"trap 'kill -9 $(jobs -p)' SIGINT SIGTERM EXIT",
|
||||
script,
|
||||
))
|
||||
],
|
||||
timeout=5,
|
||||
input=instr.encode(),
|
||||
capture_output=True,
|
||||
)
|
||||
|
@ -21,12 +30,14 @@ def check_pairs(script, pairs):
|
|||
|
||||
def find_script(pairs, max_length):
|
||||
candidates = []
|
||||
chars = len(string.printable)
|
||||
total_options = int((chars ** (max_length + 1) - 1) / (chars - 1))
|
||||
chars_count = len(chars)
|
||||
total_options = int((chars_count ** (max_length + 1) - 1) / (chars_count - 1))
|
||||
current_option = 0
|
||||
|
||||
for length in range(max_length + 1):
|
||||
for letters in product(string.printable, repeat=length):
|
||||
for letters in product(chars, repeat=length):
|
||||
current_option += 1
|
||||
|
||||
if current_option % 1000 == 0:
|
||||
print(f"Progress: {current_option}/{total_options}")
|
||||
|
||||
|
@ -36,8 +47,6 @@ def find_script(pairs, max_length):
|
|||
print("> Found candidate:", script)
|
||||
candidates.append(script)
|
||||
|
||||
current_option += 1
|
||||
|
||||
print("Candidates:", candidates)
|
||||
|
||||
|
||||
|
@ -48,7 +57,7 @@ if __name__ == '__main__':
|
|||
("1", "1"),
|
||||
("2", "2"),
|
||||
("3", "3"),
|
||||
), max_length=2)
|
||||
), max_length=3)
|
||||
|
||||
# Successor
|
||||
print("\nSearching for successor")
|
||||
|
|
Loading…
Reference in New Issue