Cadenas de Python

Una función llamada descifrar(cadena), que reciba como parámetro una cadena de caracteres (contraseña) con una longitud máxima de 10 caracteres y muestre todas las combinaciones realizadas hasta descifrar el texto ingresado.
cadena = oculto/123

descifrar(cadena)

Cómo lo podría descifrar?
def descifrar(cadena):

caracteres = list(cadena)

longitud = len(caracteres)

combinaciones = 2**longitud

for i in range(combinaciones):

    combinacion = bin(i)[2:].zfill(longitud)

    candidata = ''

    for j in range(longitud):

        if combinacion[j] == '0':

            candidata += caracteres[j].lower()

        else:

            candidata += caracteres[j].upper()

    print(candidata)

    if candidata == cadena:

        break

Asi me tiene que quedar
Input

cadena = oculto/123

descifrar(cadena)

Output

o

oc

ocu

ocul

ocult

oculto

oculto/

oculto/1

oculto/12

oculto/123