🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    flipperzero-bruteforce.py
    skipped 12 lines
    13 13   - stop_bit: APPENDED to each key in sub format, empty by default
    14 14   - frequency: protocol's frequency in Hz, 433920000 by default
    15 15   - repetition: number of times to repeat each key, 3 by default
     16 + - key_range: range of keys to generate, None by default
    16 17   """
    17 18   
    18 19   def __init__(
    skipped 5 lines
    24 25   stop_bit="",
    25 26   frequency=433920000,
    26 27   repetition=3,
     28 + key_range=None,
    27 29   ):
    28 30   self.name = name
    29 31   self.n_bits = n_bits
    skipped 1 lines
    31 33   self.pilot_period = pilot_period
    32 34   self.stop_bit = stop_bit
    33 35   self.repetition = repetition
     36 + self.key_range = key_range
    34 37   self.file_header = (
    35 38   "Filetype: Flipper SubGhz RAW File\n"
    36 39   + "Version: 1\n"
    skipped 59 lines
    96 99   folder [1..n_folders] will contain [2^1..2^n_folders] files,
    97 100   each file containing [2^n_bits/2^1..2^n_bits/2^n_folders] keys.
    98 101   """
    99  - if self.n_bits > 12: # take up too much space for github
     102 + if self.n_bits > 12 and self.key_range is None: # take up too much space for github
    100 103   print(f"Skipping {self.name}, takes up too much space for github")
    101 104   return
    102 105   base_dir = f"sub_files/{self.name}"
    skipped 3 lines
    106 109   with open(filename, "w") as f:
    107 110   f.write(self.file_header)
    108 111   f.write("RAW_Data: " + self.de_bruijn() + "\n")
     112 + # If key_range is defined, generate those keys only
     113 + if self.key_range is not None:
     114 + filename = f"{base_dir}/bf_{self.key_range[0]}-{self.key_range[-1]}.sub"
     115 + with open(filename, "w") as f:
     116 + f.write(self.file_header)
     117 + for key in self.key_range:
     118 + f.write("RAW_Data: " + self.key_to_sub(key) * self.repetition + "\n")
     119 + return
    109 120   # Generate sets of 2^0, 2^1, .., 2^n_folders .sub files
    110 121   splits = [
    111 122   int(pow(2, self.n_bits) / _) for _ in [pow(2, _) for _ in range(n_folders)]
    skipped 97 lines
    209 220  ]
    210 221   
    211 222  for p in protocols:
     223 + # TODO multithread this
    212 224   p.generate_sub_files()
    213 225   print(f"{p.name} done")
    214 226   
Please wait...
Page is in error, reload to recover