reversing/matryoshka/generate.py [968:992]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def rc4_key_schedule(key):
    # create the rc4 key schedule
    keylength = len(key)
    S = range(256)
    j = 0
    for i in range(256):
        k = ord(key[i % keylength])
        j = (j + S[i] + k) % 256
        S[i], S[j] = S[j], S[i]  # swap
    return S, j

def rc4_encrypt(dst, src, key):
    # rc4 encrypt the src
    src_len = len(src)
    S, j = rc4_key_schedule(key)
    j = 0
    i = 0
    m = 0
    while (m < src_len):
        char = src[m]
        i = (i + 1) % 256
        j = (j + S[i]) % 256
        # swap
        S[i], S[j] = S[j], S[i]
        k = S[(S[i] + S[j]) % 256]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



reversing/matryoshka/solve.py [40:63]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def rc4_key_schedule(key):
    # create the rc4 key schedule
    keylength = len(key)
    S = range(256)
    j = 0
    for i in range(256):
        k = ord(key[i % keylength])
        j = (j + S[i] + k) % 256
        S[i], S[j] = S[j], S[i]  # swap
    return S, j
def rc4_encrypt(dst, src, key):
    # rc4 encrypt the src
    src_len = len(src)
    S, j = rc4_key_schedule(key)
    j = 0
    i = 0
    m = 0
    while (m < src_len):
        char = src[m]
        i = (i + 1) % 256
        j = (j + S[i]) % 256
        # swap
        S[i], S[j] = S[j], S[i]
        k = S[(S[i] + S[j]) % 256]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



