在C 中,编写JWT强力cracker

・2 分钟阅读

  • 源代码名称: c-jwt-cracker
  • 源代码网址: https://www.github.com/brendan-rius/c-jwt-cracker
  • c-jwt-cracker的文档
  • c-jwt-cracker的源代码下载
  • Git URL:
    git://www.github.com/brendan-rius/c-jwt-cracker.git
  • Git Clone代码到本地:
    git clone https://www.github.com/brendan-rius/c-jwt-cracker
  • Subversion代码到本地:
    $ svn co --depth empty https://www.github.com/brendan-rius/c-jwt-cracker
                              Checked out revision 1.
                              $ cd repo
                              $ svn up trunk
              
  • JWT饼干,

    用C编写的多线程JWT强力破解程序,如果你非常幸运或者拥有巨大的计算能力,这个程序应该找到JWT令牌的秘密密钥,让你可以伪造有效的令牌,这只是为了测试目的,不要让自己陷入麻烦:),

    我使用了Apple Base64实现,我稍微修改了一下。

    编译

    确保已安装了openssl头文件。 在Ubuntu上你可以用 apt-get install libssl-dev 安装它们,

     
    make
    
    
    
     

    如果使用Mac,则可以使用brew install openssl安装OpenSSL,但是,头文件将存储在不同的位置:

    
    make OPENSSL=/usr/local/opt/openssl/include OPENSSL_LIB=-L/usr/local/opt/openssl/lib
    
    
    
    

    运行

    
    $ > ./jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.cAOIAifu3fykvhkHpbuhbvtH807-Z2rI1FS3vX1XMjE
    
    
    
    

    在上面的例子中,秘钥是Sn1f ,我的Macbook破解需要大约2秒的时间。

    重要:已知问题

    由于不是每个Base64实现都是相同的,所以,使用(从苹果)的Base64实现有时会出错,因此,你的Base64令牌的解密只能部分工作,因此有时你可能会找到不正确的令牌秘钥。

    如果有人愿意实现更健壮的Base64实现,那就很好了: )

    讨论
    Fansisi profile image