Hnfull / Intensio-Obfuscator

Obfuscate a python code 2.x and 3.x
MIT License
624 stars 129 forks source link

IndentationError when using -ps and less than 4 spaces identation #38

Closed mcastillof closed 4 years ago

mcastillof commented 4 years ago

Hello, I just wanted to document this as other people may experience the same behavior. if your code has less than 4 spaces (haven't tested other identations) you may have IndentationError when using -ps obfuscating argument.

Example: The following file has 2 spaces as indentation:

def main():
  print("1")
  print("2")
  print("3")

if __name__ == "__main__":
  main()

It generates:

def main():
  print("1")
  print("2")
  print("3")
if __name__ == "__main__":
    SiPZoUcstvfTqktNiPIbNMsrdMCZGNjdPOGxAlCWHlxAkAdKbwTFMbjsKuwvwhFd = 'KZpmqVxLmuDbaaJqEwhxNLPqnKyJvqfYSkUbsMBhhEXVDRrxqEmpOLlDQYDRXfKO'
    btLsnIOfWrOuajzxGErDwgvjRcsPDhxGpoUFuBplmdJjXVPYECoWaPHMewDdGDhF = 'twSdecfaTSikQKiLXgFyXImbOQFtRTVGqAhQZEOoXUwckxGDlPwJAgcguMbBdhmz'
    tNiVZYPfDTDvFYVakOZNhNEIeuwfNItWfChFcDHlDadUoAiaNknhfecNjxgTehex = 'dIgjoTfMGxQkBqMoPosExDEQtVDfOuNYrevGThkwafBKNMsOYSqAzubbPvRHQrBN'
    rkwYEoQkhTNzhdUHFFPDHRAwDTlTkhsaDhVUqmilkihZFWvAowhBDZJcbBazxmjL = 'GcOgNDekaTqUjKFofGlQAkXIGeAryneUDsnBuiWVRPdOdybaUpSJqDvikCYEeeJn'
    bNyNQrDZyWhMdgbYIagmFOtbpLdiSJlqZmMGuQTCTqsyOPYklakkkPGCZqxonlqj = 'CqDUkArbpJeeWIVYdtuLnncdpmUvuAJuRlLiwtPNsvoPfarZFLwtRrnAQRIqlkuI'
    if SiPZoUcstvfTqktNiPIbNMsrdMCZGNjdPOGxAlCWHlxAkAdKbwTFMbjsKuwvwhFd in btLsnIOfWrOuajzxGErDwgvjRcsPDhxGpoUFuBplmdJjXVPYECoWaPHMewDdGDhF:
        SiPZoUcstvfTqktNiPIbNMsrdMCZGNjdPOGxAlCWHlxAkAdKbwTFMbjsKuwvwhFd = bNyNQrDZyWhMdgbYIagmFOtbpLdiSJlqZmMGuQTCTqsyOPYklakkkPGCZqxonlqj
        if btLsnIOfWrOuajzxGErDwgvjRcsPDhxGpoUFuBplmdJjXVPYECoWaPHMewDdGDhF in tNiVZYPfDTDvFYVakOZNhNEIeuwfNItWfChFcDHlDadUoAiaNknhfecNjxgTehex:
            btLsnIOfWrOuajzxGErDwgvjRcsPDhxGpoUFuBplmdJjXVPYECoWaPHMewDdGDhF = rkwYEoQkhTNzhdUHFFPDHRAwDTlTkhsaDhVUqmilkihZFWvAowhBDZJcbBazxmjL
    elif btLsnIOfWrOuajzxGErDwgvjRcsPDhxGpoUFuBplmdJjXVPYECoWaPHMewDdGDhF in SiPZoUcstvfTqktNiPIbNMsrdMCZGNjdPOGxAlCWHlxAkAdKbwTFMbjsKuwvwhFd:
        tNiVZYPfDTDvFYVakOZNhNEIeuwfNItWfChFcDHlDadUoAiaNknhfecNjxgTehex = btLsnIOfWrOuajzxGErDwgvjRcsPDhxGpoUFuBplmdJjXVPYECoWaPHMewDdGDhF
        if tNiVZYPfDTDvFYVakOZNhNEIeuwfNItWfChFcDHlDadUoAiaNknhfecNjxgTehex in btLsnIOfWrOuajzxGErDwgvjRcsPDhxGpoUFuBplmdJjXVPYECoWaPHMewDdGDhF:
            btLsnIOfWrOuajzxGErDwgvjRcsPDhxGpoUFuBplmdJjXVPYECoWaPHMewDdGDhF = bNyNQrDZyWhMdgbYIagmFOtbpLdiSJlqZmMGuQTCTqsyOPYklakkkPGCZqxonlqj
  main()

And if you execute it, you get:

  File "deploy1/main.py", line 19
    main()
         ^
IndentationError: unindent does not match any outer indentation level

So, it seems like obfuscating with -ps argument expect that your code to be indented with 4 spaces. if you change that, the error should go away.

Hnfull commented 4 years ago

thank you  @mcastillof for this description of your issue, I will work to resolv it

Hnfull commented 4 years ago

hi, I fix this issue, I added support of 2 and 8 basic python indentation.