none
Codificar uma página asp. RRS feed

  • Pergunta

  • Hi all,

    Estou precisando codificar uma página em asp para que não se possa ver o
    codigo fonte.

    Estou utilizando o Windows Script Encoder, mas me disseram que ele já foi
    facilmente decodificado.

    Alguém sabe indicar uma boa ferramenta free ou paga?

    []'s

    Luís
    quinta-feira, 24 de maio de 2007 15:33

Respostas

  • Pra transformar em dll, você precisaria do VB 6, como o Matusalem disse, e de alguma ferramenta que facilitasse o seu trabalho, porque o VB não compila páginas asp diretamente. A ferramenta seria pra "converter" o código pra ele usar, vamos dizer assim. Pra obfuscar, só pesquisando no Google por algumas ferramentas mesmo. Dando pesquisada rápida, encontrei essa ferramenta pra compilar:

     

    http://www.newobjects.com/product.asp?ID=61

     

    Testei rapidinho e parece funcionar bem, além de ser free. Pra obfuscar, de primeira não achei nenhuma free. Mas esse pago parece funcionar bem:

     

    http://www.stunnix.com/prod/vbso/protect-ASP-with-vbscript-overview.shtml

     

    Só é meio salgado o preço. Claro que se pesquisar mais deve encontrar outras alternativas. O interessante é que eles têm uma demonstração dos resultados. Dá uma olhada:

     

    http://www.stunnix.com/prod/vbso/compile-vbscript-sample.shtml

     

    Mesmo não estando compilado, só obfuscado, já é bem difícil de ler o código. E esse processo sim não tem volta. Porque o código só está reescrito e não "codificado". O sujeito precisar estar muito determinado mesmo pra entender o seu código e estar disposto a gastar algumas horas ou, dependendo do sistema, dias decifrando tudo.

    sexta-feira, 25 de maio de 2007 21:41
  • É verdade, a beta é free, mas a outra não. Olhei tão rápido que nem reparei. Você olhou os links sobre obfuscação que eu passei?

     

    Olha como o código fica praticamente ilegível (tirando o HTML, claro). Lá tem um código assim:

    Code Snippet

    <%

    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& _
                 Server.MapPath("guestbook.mdb")
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.open strConnect
    Set objRS = Server.CreateObject("ADODB.RecordSet")
    objRS.open "select * from guestbook  order by date",objConn,2,2

    dim m
    if objRS.BOF and objRS.EOF then
        m = 1
    else
        Set maxid = Server.CreateObject("ADODB.RecordSet")
        maxid.open "select max(id) from guestbook",objConn,2,2
        m = maxid(0) + 1
    end if

    call addcomment(objRS, m)

    if objrs.BOF and objrs.EOF then
        Response.Write "<B><center>Sorry, Currently There are No Records in the Database</center></B>"
    %>

     

    E o programa deixa assim:

    Code Snippet
    <% :z5ff1f7372b="Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath( _
    "guestbook.mdb"):Set zac47069511=Server.CreateObject("ADODB.Connection"): _
    zac47069511.open z5ff1f7372b:Set z861252a0a6=Server.CreateObject( _
    "ADODB.RecordSet"):z861252a0a6.open "select * from guestbook order by date", _
    zac47069511,(&h34f+7217-&H1f7e),(&h844+1902-&Hfb0):dim z5ed7bfc7c1:
    if z861252a0a6.BOF and z861252a0a6.EOF then
    z5ed7bfc7c1=(&hc02+6358-&H24d7):
    else:Set z2951a043e3=Server.CreateObject("ADODB.RecordSet"):z2951a043e3.open _
    "select max(id) from guestbook",zac47069511,(&h552+1583-&Hb7f),(&h26d+781-&H578) _
    :z5ed7bfc7c1=z2951a043e3((&h1e61+279-&H1f78))+(&hb7+5446-&H15fc):
    end if:call zf2e3f42341(z861252a0a6,z5ed7bfc7c1):
    if z861252a0a6.BOF and z861252a0a6.EOF then
    Response.Write _
    "<B><center>Sorry, Currently There are No Records in the Database</center></B>": %>

     

    Sem o nome das variáveis pra facilitar a identificação do valor, e ainda escrito desse jeito, dificulta e muito o entendimento do código, não? E ao contrário da criptografia, não é reversível por nenhuma ferramenta. A pessoa precisa ler, entender e ir reconstruindo o código. Obfuscando e criptografando, você já dificulta muito a vida de poderia querer mexer no seu código.

     

    Solução 100% segura não existe, afinal alguém vai precisar ler e entender o seu código, nem que seja o interpretador de ASP. O que nós podemos fazer é no máximo dificultar. Impedir, sem chances...

    sábado, 2 de junho de 2007 06:32

Todas as Respostas

  • Seja qual for a ferramenta, a decodificação vai ser sempre possível. Não acho que valha a pena procurar muito. Pra dificultar as coisas, você poderia obfuscar o seu código antes de encriptar. Só a obfuscação já dá um certo trabalho pra quem quer ler o seu código. Se quiser algo mais seguro, você pode transformar as páginas em dlls. Esse sim não tem volta. Não de um modo que qualquer um possa fazer... Mas teria que ver se o host aceita.
    quinta-feira, 24 de maio de 2007 21:21
  • Leonardo,

     

    Você sabe se existe algum jeito de converter uma página asp em dll ou como posso fazer essa obfuscação?

     

    []'s

     

    Luís

     

    sexta-feira, 25 de maio de 2007 02:04
  • Amigo, vc quer esconder o código asp ou o html gerado ?

     

    Se vc quer colocar a lógica do seu sistema em uma .dll é fácil, é só criar um componente COM. Mas para tal será preciso conhecimento de alguma linguagem que possa fazer isso, como VB, Delphi, C++, etc.

     

     

    abraços.

    sexta-feira, 25 de maio de 2007 17:15
  • Pra transformar em dll, você precisaria do VB 6, como o Matusalem disse, e de alguma ferramenta que facilitasse o seu trabalho, porque o VB não compila páginas asp diretamente. A ferramenta seria pra "converter" o código pra ele usar, vamos dizer assim. Pra obfuscar, só pesquisando no Google por algumas ferramentas mesmo. Dando pesquisada rápida, encontrei essa ferramenta pra compilar:

     

    http://www.newobjects.com/product.asp?ID=61

     

    Testei rapidinho e parece funcionar bem, além de ser free. Pra obfuscar, de primeira não achei nenhuma free. Mas esse pago parece funcionar bem:

     

    http://www.stunnix.com/prod/vbso/protect-ASP-with-vbscript-overview.shtml

     

    Só é meio salgado o preço. Claro que se pesquisar mais deve encontrar outras alternativas. O interessante é que eles têm uma demonstração dos resultados. Dá uma olhada:

     

    http://www.stunnix.com/prod/vbso/compile-vbscript-sample.shtml

     

    Mesmo não estando compilado, só obfuscado, já é bem difícil de ler o código. E esse processo sim não tem volta. Porque o código só está reescrito e não "codificado". O sujeito precisar estar muito determinado mesmo pra entender o seu código e estar disposto a gastar algumas horas ou, dependendo do sistema, dias decifrando tudo.

    sexta-feira, 25 de maio de 2007 21:41
  • Leonardo,

     

    Eu fui no primeiro link, mas o programa além de não ser free (quanto a isso não tem problema), mas ao clicar no link ele baixa uma versão beta.

     

    Procurei também no google algumas ferramentas para obfuscar e pra ser sincero não achei nada que fosse referente ao que estou querendo.

     

    Obrigado pela sua ajuda e pela ajuda de todos.

     

    Esse tópico ainda não encerrei...Qualquer ajuda é muito bemvinda!!!

     

    Abs a todos,

     

    Luís

    sábado, 2 de junho de 2007 06:14
  • É verdade, a beta é free, mas a outra não. Olhei tão rápido que nem reparei. Você olhou os links sobre obfuscação que eu passei?

     

    Olha como o código fica praticamente ilegível (tirando o HTML, claro). Lá tem um código assim:

    Code Snippet

    <%

    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& _
                 Server.MapPath("guestbook.mdb")
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.open strConnect
    Set objRS = Server.CreateObject("ADODB.RecordSet")
    objRS.open "select * from guestbook  order by date",objConn,2,2

    dim m
    if objRS.BOF and objRS.EOF then
        m = 1
    else
        Set maxid = Server.CreateObject("ADODB.RecordSet")
        maxid.open "select max(id) from guestbook",objConn,2,2
        m = maxid(0) + 1
    end if

    call addcomment(objRS, m)

    if objrs.BOF and objrs.EOF then
        Response.Write "<B><center>Sorry, Currently There are No Records in the Database</center></B>"
    %>

     

    E o programa deixa assim:

    Code Snippet
    <% :z5ff1f7372b="Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath( _
    "guestbook.mdb"):Set zac47069511=Server.CreateObject("ADODB.Connection"): _
    zac47069511.open z5ff1f7372b:Set z861252a0a6=Server.CreateObject( _
    "ADODB.RecordSet"):z861252a0a6.open "select * from guestbook order by date", _
    zac47069511,(&h34f+7217-&H1f7e),(&h844+1902-&Hfb0):dim z5ed7bfc7c1:
    if z861252a0a6.BOF and z861252a0a6.EOF then
    z5ed7bfc7c1=(&hc02+6358-&H24d7):
    else:Set z2951a043e3=Server.CreateObject("ADODB.RecordSet"):z2951a043e3.open _
    "select max(id) from guestbook",zac47069511,(&h552+1583-&Hb7f),(&h26d+781-&H578) _
    :z5ed7bfc7c1=z2951a043e3((&h1e61+279-&H1f78))+(&hb7+5446-&H15fc):
    end if:call zf2e3f42341(z861252a0a6,z5ed7bfc7c1):
    if z861252a0a6.BOF and z861252a0a6.EOF then
    Response.Write _
    "<B><center>Sorry, Currently There are No Records in the Database</center></B>": %>

     

    Sem o nome das variáveis pra facilitar a identificação do valor, e ainda escrito desse jeito, dificulta e muito o entendimento do código, não? E ao contrário da criptografia, não é reversível por nenhuma ferramenta. A pessoa precisa ler, entender e ir reconstruindo o código. Obfuscando e criptografando, você já dificulta muito a vida de poderia querer mexer no seu código.

     

    Solução 100% segura não existe, afinal alguém vai precisar ler e entender o seu código, nem que seja o interpretador de ASP. O que nós podemos fazer é no máximo dificultar. Impedir, sem chances...

    sábado, 2 de junho de 2007 06:32