| # Step 02 - parse RFC. |
| # |
| # Static dictionary is described in "Appendix A" section in a hexadecimal form. |
| # This tool locates dictionary data in RFC and converts it to raw binary format. |
| |
| import re |
| |
| rfc_path = "rfc7932.txt" |
| |
| with open(rfc_path, "r") as rfc: |
| lines = rfc.readlines() |
| |
| re_data_line = re.compile("^ [0-9a-f]{64}$") |
| |
| appendix_a_found = False |
| dictionary = [] |
| for line in lines: |
| if appendix_a_found: |
| if re_data_line.match(line) is not None: |
| data = line.strip() |
| for i in range(32): |
| dictionary.append(int(data[2 * i : 2 * i + 2], 16)) |
| if len(dictionary) == 122784: |
| break |
| else: |
| if line.startswith("Appendix A."): |
| appendix_a_found = True |
| |
| bin_path = "dictionary.bin" |
| |
| with open(bin_path, "wb") as output: |
| output.write(bytearray(dictionary)) |
| |
| print("Parsed and saved " + str(len(dictionary)) + " bytes to " + bin_path) |