{"id":4334,"date":"2017-09-04T16:28:38","date_gmt":"2017-09-04T19:28:38","guid":{"rendered":"https:\/\/blog.clusterweb.com.br\/?p=4334"},"modified":"2017-09-04T16:28:38","modified_gmt":"2017-09-04T19:28:38","slug":"como-encriptar-um-shell-script-com-shc","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4334","title":{"rendered":"Como encriptar um Shell Script com SHC"},"content":{"rendered":"<p>Neste texto, vou ensinar a baixar, instalar e usar SHC, um programa que encripta o c\u00f3digo do seus\u00a0<i>shell scritps<\/i>.<br \/>\nAntes de mais nada, eu gostaria de dizer que encriptar seus c\u00f3digos n\u00e3o \u00e9 uma pr\u00e1tica recomend\u00e1vel. O ideal \u00e9 documentar todo o script, de forma que qualquer pessoa o possa entender facilmente. C\u00f3digos fonte devem ser o mais acess\u00edveis poss\u00edvel \u2013 j\u00e1 a informa\u00e7\u00e3o com a qual eles lidam, \u00e9 que deve ser restringida.<br \/>\nSe voc\u00ea precisa usar informa\u00e7\u00f5es, usualmente confidenciais, como senhas, de forma autom\u00e1tica, ent\u00e3o deve procurar outra solu\u00e7\u00e3o.<br \/>\nHmmmm\u2026 voc\u00ea ainda est\u00e1 aqui?<br \/>\nTenha em mente, contudo, que um script codificado atrav\u00e9s do SHC pode n\u00e3o ser leg\u00edvel para usu\u00e1rios comuns (creio que este seja o seu objetivo) \u2014 Contudo, uma pessoa que tenha conhecimento do seu funcionamento pode extrair o c\u00f3digo criado pelo software.<br \/>\nEm tempo,\u00a0<em>SHC<\/em>\u00a0quer dizer\u00a0<i>SHell script Compiler<\/i>.<\/p>\n<p><!--more--><\/p>\n<h2>Download e instala\u00e7\u00e3o<\/h2>\n<p>O software de que vamos tratar aqui, foi desenvolvido por\u00a0<a title=\"Site oficial de Francisco Rosales Garcia\" href=\"http:\/\/www.datsi.fi.upm.es\/~frosal\/\" target=\"_blank\" rel=\"noopener\">Francisco Javier R. Garcia<\/a>e voc\u00ea vai encontrar sua vers\u00e3o mais atualizada\u00a0<a title=\"download site do SHC\" href=\"http:\/\/www.datsi.fi.upm.es\/~frosal\/\" target=\"_blank\" rel=\"noopener\">aqui<\/a>.<br \/>\nVamos come\u00e7ar com o download do c\u00f3digo fonte do programa:<\/p>\n<div id=\"highlighter_285141\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">wget <a href=\"http:\/\/www.datsi.\/\">http:\/\/www.datsi.<\/a><\/code><code class=\"keyword\">fi<\/code><code class=\"plain\">.upm.es\/~frosal\/sources\/shc-3.8.9.tgz<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>Uma vez baixado, desempacote e instale:<\/p>\n<div id=\"highlighter_737912\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"functions\">tar<\/code> <code class=\"plain\">xvfz shc-3.8.9.tgz<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"functions\">cd<\/code> <code class=\"plain\">shc-3.8.9<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"functions\">make<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>Verifique se tudo correu bem:<\/p>\n<div id=\"highlighter_424729\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">.\/shc -<\/code><code class=\"functions\">v<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">shc parse(-f): No <\/code><code class=\"functions\">source<\/code> <code class=\"functions\">file<\/code> <code class=\"plain\">specified<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">shc Usage: shc [-e <\/code><code class=\"functions\">date<\/code><code class=\"plain\">] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h2>Crie um shell script de exemplo<\/h2>\n<p>Para testar, voc\u00ea pode usar seu pr\u00f3prio\u00a0<i>shell script<\/i>\u00a0ou pegar este aqui:<\/p>\n<div id=\"highlighter_258786\" class=\"syntaxhighlighter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"number\"><code>1<\/code><\/td>\n<td class=\"content\"><code class=\"comments\">#!\/bin\/bash<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"number\"><code>2<\/code><\/td>\n<td class=\"content\"><code class=\"functions\">echo<\/code> <code class=\"plain\">-n <\/code><code class=\"string\">\"Quantos numeros aleatorios voce deseja gerar? \"<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"number\"><code>3<\/code><\/td>\n<td class=\"content\"><code class=\"functions\">read<\/code> <code class=\"plain\">max<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"number\"><code>4<\/code><\/td>\n<td class=\"content\"><code class=\"keyword\">for<\/code> <code class=\"plain\">(( start = 1; start<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"number\"><code>5<\/code><\/td>\n<td class=\"content\"><code class=\"keyword\">do<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"number\"><code>6<\/code><\/td>\n<td class=\"content\"><code class=\"functions\">echo<\/code> <code class=\"plain\">-e $RANDOM<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"number\"><code>7<\/code><\/td>\n<td class=\"content\"><code class=\"keyword\">done<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>rode o script:<\/p>\n<div id=\"highlighter_597018\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">$ .\/alea.sh<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">Quantos numeros aleatorios voce deseja gerar? 3<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">24682<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">1678<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">491<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h2>Encriptando o seu shell script com shc<\/h2>\n<p>Use o comando, a seguir, para fazer o trabalho:<\/p>\n<div id=\"highlighter_520869\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">.\/shc -f alea.sh<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>isto dever\u00e1 gerar os seguintes arquivos:<\/p>\n<div id=\"highlighter_272450\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"functions\">ls<\/code> <code class=\"plain\">-l alea*.*<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">-rwxrw-r--. 1 user group 149 Mar 27 01:09 alea.sh<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">-rwx-wx--x. 1 user group 11752 Mar 27 01:12 alea.sh.x<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">-rw-rw-r--. 1 user group 10174 Mar 27 01:12 alea.sh.x.c<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>Dos quais:<\/p>\n<ul>\n<li><code>alea.sh<\/code>\u00a0\u00e9 o seu script original<\/li>\n<li><code>alea.sh.x<\/code>\u00a0\u00e9 o seu script em formato bin\u00e1rio e encriptado<\/li>\n<li><code>alea.sh.x.c<\/code>\u00a0\u00e9 o c\u00f3digo fonte do script original em linguagem C<\/li>\n<\/ul>\n<p>Ap\u00f3s transformar o c\u00f3digo do seu script, originalmente escrito em\u00a0<em>Bash<\/em>\u00a0para um script em\u00a0<em>C<\/em>, o\u00a0<em>shc<\/em>\u00a0o compila, gerando o execut\u00e1vel\u00a0<code>alea.sh.x<\/code>.<br \/>\nVeja como testar:<\/p>\n<div id=\"highlighter_759787\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">$ <\/code><code class=\"functions\">file<\/code> <code class=\"plain\">alea.sh<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">alea.sh: Bourne-Again shell script text executable<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">$ <\/code><code class=\"functions\">file<\/code> <code class=\"plain\">alea.sh.x<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">alea.sh.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), <\/code><code class=\"keyword\">for<\/code> <code class=\"plain\">GNU\/Linux 2.6.18, stripped<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">$ <\/code><code class=\"functions\">file<\/code> <code class=\"plain\">alea.sh.x.c<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">alea.sh.x.c: ASCII C program text<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h2>Execute o seu script encriptado<\/h2>\n<div id=\"highlighter_527375\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">.\/alea.sh.x<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">Quantos numeros aleatorios voce deseja gerar? 3<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">7489<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">10494<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">29627<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h2>Determine uma data de expira\u00e7\u00e3o pro seu script<\/h2>\n<p>Com o uso do shc, \u00e9 poss\u00edvel evitar que o seu script seja executado ap\u00f3s uma certa data. Se for feita a tentativa de executar um script que j\u00e1 tenha expirado, uma mensagem de erro ser\u00e1 exibida na tela.<br \/>\nCrie um novo script, usando a op\u00e7\u00e3o \u201c<code>shc -e<\/code>\u201c, que permite a entrada de uma data de expira\u00e7\u00e3o (que deve ser fornecida no formato\u00a0<code>dd\/mm\/yyyy<\/code>:<\/p>\n<div id=\"lx_611071\" class=\"__lxG__multi __lxG__multi_lx_611071\" data-cnt=\"3\"><\/div>\n<div id=\"highlighter_338510\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">.\/shc -e 31\/12\/2011 -f alea.sh<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>Veja o que acontece quando algu\u00e9m tenta executar um script vencido:<\/p>\n<div id=\"highlighter_859112\" class=\"syntaxhighlighter nogutter  \">\n<div class=\"lines no-wrap\">\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">.\/alea.sh.x<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt2\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">.\/alea.sh.x: has expired!<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"line alt1\">\n<table>\n<tbody>\n<tr>\n<td class=\"content\"><code class=\"plain\">Please contact your provider<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>Voc\u00ea pode criar a sua pr\u00f3pria mensagem de expira\u00e7\u00e3o, para o caso de redistribuir o seu script para pessoas que n\u00e3o falem ingl\u00eas, por exemplo. Use a op\u00e7\u00e3o\u00a0<code>-m<\/code>\u00a0para isto.<br \/>\nDivirta-se!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste texto, vou ensinar a baixar, instalar e usar SHC, um programa que encripta o c\u00f3digo do seus\u00a0shell scritps. Antes de mais nada, eu gostaria de dizer que encriptar seus c\u00f3digos n\u00e3o \u00e9 uma pr\u00e1tica recomend\u00e1vel. O ideal \u00e9 documentar todo o script, de forma que qualquer pessoa o possa entender facilmente. C\u00f3digos fonte devem [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[730,1,830,42,51,495,514,271,501,548],"tags":[349,378,1101,502,1102,64,370],"class_list":["post-4334","post","type-post","status-publish","format-standard","hentry","category-clusterweb","category-viazap","category-debian","category-leitura-recomendada","category-linux-linuxrs","category-profissional-de-ti","category-programacao","category-seguranca-2","category-shell-script","category-ubuntu-2","tag-com","tag-como","tag-encriptar","tag-script","tag-shc","tag-shell","tag-um"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4334"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4334\/revisions"}],"predecessor-version":[{"id":4335,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4334\/revisions\/4335"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}