{"id":686,"date":"2026-03-26T22:08:31","date_gmt":"2026-03-26T22:08:31","guid":{"rendered":"https:\/\/hackcuba.net\/?p=686"},"modified":"2026-03-26T22:08:33","modified_gmt":"2026-03-26T22:08:33","slug":"hideinbin","status":"publish","type":"post","link":"https:\/\/hackcuba.net\/?p=686","title":{"rendered":"HideInBin"},"content":{"rendered":"\n<p>Este programa nos permitir\u00e1 ocultar cualquier archivo dentro de otro. Muy \u00fatil para, por ejemplo, ocultar un RAR o un ZIP en un JPG o en un WAV. Su funcionamiento es bien sencillo, al ocultar un archivo dentro de otro lo que haremos ser\u00e1 cargar el binario de ambos y unirlos uno detr\u00e1s del otro usando un token o indicador que nos sirva para identificar el final de uno y el principio del otro. La mayor\u00eda de los archivos binarios poseen estructuras que indican su inicio y final, de modo que al nosotros agregarle el binario de otro archivo la integridad del primero no se ve afectada.<br><\/p>\n\n\n\n<!--more-->\n\n\n\n<p><br>Importante saber que al ocultar un archivo dentro de otro por este medio el tama\u00f1o del nuevo binario ser\u00e1 igual a la suma del primero m\u00e1s el segundo m\u00e1s 65 bytes (que corresponden al token), digo esto porque ser\u00eda muy sospechoso encontrar un JPG con resoluci\u00f3n 800&#215;600 que se lleve 50Mb.<br><br>El uso de este programa es bien sencillo, est\u00e1 dise\u00f1ado para funcionar desde la consola del sistema. Para llamarlo debemos posicionarnos sobre la carpeta que lo contenga y luego referenciarlo por su nombre. Al llamarlo sin par\u00e1metros nos muestra la lista de opciones v\u00e1lidas que le podemos entrar.<\/p>\n\n\n\n<p>h: Oculta File2 en File1<br>e: Extrae el archivo oculto en File1 a File2<br>q: Chequea si hay algo oculto en File1<br>c: Elimina el binario oculto en File1<\/p>\n\n\n\n<p>&lt;Ejemplos&gt; HideInBin h \u00abC:\\notepad.exe\u00bb \u00abC:\\codigos.rar\u00bb &#8211; Ocultar\u00e1 el archivo \u00abcodigos.rar\u00bb<br>dentro de \u00abnotepad.exe\u00bb<br><br>HideInBin e \u00abC:\\notepad.exe\u00bb \u00abC:\\archivo.rar\u00bb &#8211; Extraer\u00e1 el binario oculto en \u00abnotepad.exe\u00bb<br>para guardarlo como \u00abarchivo.rar\u00bb<\/p>\n\n\n\n<p>HideInBin q \u00abC:\\notepad.exe\u00bb &#8211; Chequea si existe algo oculto en \u00abnotepad.exe\u00bb<\/p>\n\n\n\n<p>HideInBin c \u00abC:\\notepad.exe\u00bb &#8211; Elimina el binario oculto en \u00abnotepad.exe\u00bb<br>dejando como mismo estaba antes.<\/p>\n\n\n\n<p>A continuaci\u00f3n el c\u00f3digo, debe ser compilado con Borland C++ Builder como aplicaci\u00f3n de consola<br>y con la opci\u00f3n C++ marcada ya que si lo compilas como aplicaci\u00f3n de C no podr\u00e1s agregar classes.hpp<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n-----------\n\/*\n**\n** $Nombre: HideInBin.cpp\n**\n** $Autor: h0aX &#x5B;hoax_ws@yahoo.es]\n**\n** $Fecha: 23-agosto-2007\n**\n** &amp;Descripci\u00f3n: Oculta un archivo en el interior de\n** otro. \u00datil para ocultar, por ejemplo,\n** un .RAR en un .JPG, sin da\u00f1ar la integridad\n** de ninguno de los dos archivos.\n**\n**\n** $Advertencia: Al momento de ser liberado este programa no\n** ha sido sometido a ninguna prueba rigurosa\n** para comprobar su correcto funcionamiento.\n** De modo que no me hago responsable de ninguna\n** p\u00e9rdida de informaci\u00f3n por alg\u00fan bug o mal\n** funcionamiento.\n**\n*\/\n\/\/---------------------------------------------------------------------------\n#include &lt;windows.h&gt;\n#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;classes.hpp&gt; \/*clases de borland para hacernos la vida m\u00e1s f\u00e1cil*\/\n\n#pragma hdrstop\n#pragma argsused\n\n\/* Esto es para saber cuando termina un binario y empieza otro.\n** El buffer est\u00e1 en hexa por si se quiere ocultar este mismo programa\n** o si se oculta algo dentro de \u00e9l no salga el Token como un string\n** reference y corte el binario por el lugar equivocado.\n*\/\nchar szToken&#x5B;] = {\n0x68, 0x30, 0x61, 0x58, 0x20, 0x69, 0x73, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64,\n0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6D, 0x79, 0x20, 0x6D, 0x61, 0x72, 0x6B,\n0x2F, 0x26, 0x54, 0x47, 0x26, 0x2F, 0x47, 0x26, 0x2F, 0x47, 0x2F, 0x26, 0x46, 0x25, 0x45, 0x24,\n0x25, 0x52, 0x45, 0x47, 0x26, 0x2F, 0x47, 0x26, 0x2F, 0x47, 0x2F, 0x54, 0x26, 0x2F, 0x47, 0x46,\n0x00\n};\n\/\/------------------------PROTOTIPOS DE FUNCIONES----------------------------\nvoid Banner();\nvoid Usage();\nBOOL BinToStr(String FileName, String &amp;str);\nBOOL StrToBin(String str,String FileName);\nBOOL JoinFiles(char *szFile1, char *szFile2);\nBOOL ExtractFile(char *szFile1, char *szFile2);\nBOOL CheckBin(char *szFile);\nBOOL ClearBin(char *szFile);\nint main(int argc, char* argv&#x5B;]);\n\/\/---------------------------------------------------------------------------\nvoid Banner()\n{\n\u00a0\u00a0printf(&quot;+++++++++++++++++++++++++++++++++++++++++++++++++++++++\\n&quot;);\n\u00a0\u00a0printf(&quot; Hide In Binary\\n&quot;);\n\u00a0\u00a0printf(&quot; por h0aX &#x5B;hoax_ws@yahoo.es]\\n&quot;);\n\u00a0\u00a0printf(&quot; para la comunidad BlackHat &#x5B;blackhat4all@gmail.com]\\n&quot;);\n\u00a0\u00a0printf(&quot;+++++++++++++++++++++++++++++++++++++++++++++++++++++++\\n\\n&quot;);\n}\n\n\/\/---------------------------------------------------------------------------\nvoid Usage()\n{\n\u00a0\u00a0printf(&quot; Uso: HideInBin &lt;Opci\u00f3n&gt; &lt;File1&gt; &lt;File2&gt;\\n\\n&quot;);\n\u00a0\u00a0printf(&quot; Opciones:\\n&quot;);\n\u00a0\u00a0printf(&quot; h: Oculta File2 en File1\\n&quot;);\n\u00a0\u00a0printf(&quot; e: Extrae el archivo oculto en File1 a File2\\n&quot;);\n\u00a0\u00a0printf(&quot; q: Chequea si hay algo oculto en File1\\n&quot;);\n\u00a0\u00a0printf(&quot; c: Elimina el binario oculto en File1\\n&quot;);\n}\n\/\/---------------------------------------------------------------------------\n\/*\n** Carga el binario de un archivo en un String\n*\/\nBOOL BinToStr(String FileName, String &amp;str)\n{\n\u00a0\u00a0str = &quot;&quot;;\n\u00a0\u00a0char *sExe;\n\u00a0\u00a0TMemoryStream *msExe;\n\u00a0\u00a0if (!FileExists(FileName))\n\u00a0\u00a0return FALSE;\n\u00a0\u00a0msExe = new TMemoryStream;\n\u00a0\u00a0msExe-&gt;LoadFromFile(FileName);\n\u00a0\u00a0sExe = new char&#x5B;msExe-&gt;Size];\n\u00a0\u00a0msExe-&gt;ReadBuffer(sExe,msExe-&gt;Size);\n\u00a0\u00a0str.SetLength(msExe-&gt;Size);\n\u00a0\u00a0for (int i=0; i&lt;msExe-&gt;Size ;i++)\n\u00a0\u00a0{str&#x5B;i+1]=sExe&#x5B;i];}\n\u00a0\u00a0delete&#x5B;] sExe;\n\u00a0\u00a0delete msExe;\n\u00a0\u00a0return TRUE;\n}\n\/\/---------------------------------------------------------------------------\n\/*\n** Guarda un String en un archivo\n*\/\nBOOL StrToBin(String str,String FileName)\n{\n\u00a0\u00a0char *sExe;\n\u00a0\u00a0TMemoryStream *msExe;\n\u00a0\u00a0msExe = new TMemoryStream;\n\u00a0\u00a0msExe-&gt;WriteBuffer(str.c_str() ,str.Length());\n\u00a0\u00a0try\n\u00a0\u00a0{msExe-&gt;SaveToFile(FileName);}\n\u00a0\u00a0catch (...)\n\u00a0\u00a0{return FALSE;}\n\u00a0\u00a0delete msExe;\n\u00a0\u00a0return TRUE;\n}\n\/\/---------------------------------------------------------------------------\n\/*\n** Junta dos binarios en uno\n*\/\nBOOL JoinFiles(char *szFile1, char *szFile2)\n{\nString Data1, Data2;\n\nif (CheckBin(szFile1)) {\n\nprintf(&quot;Ya existe un binario oculto en %s\\n&quot;, szFile1);\nreturn FALSE;\n}\n\nif ( !((BinToStr(szFile1, Data1)) &amp;&amp; (BinToStr(szFile2, Data2))) ) {\n\nprintf(&quot;ERROR abriendo %s o %s\\n&quot;, szFile1, szFile2);\nreturn FALSE;\n}\n\nData1 = Data1 + szToken;\nData1 = Data1 + Data2;\n\nif (!StrToBin(Data1, szFile1)) {\n\nprintf(&quot;ERROR ecribiendo %s\\n&quot;, szFile1);\nreturn FALSE;\n}\n\nreturn TRUE;\n}\n\/\/---------------------------------------------------------------------------\n\/*\n** Extrae el binario oculto en szFile1 y lo guarda como szFile2\n*\/\nBOOL ExtractFile(char *szFile1, char *szFile2)\n{\nString Data1, Data2;\n\nif (!CheckBin(szFile1)) {\n\nprintf( &quot;No hay binario para extraer.\\n&quot; );\nreturn FALSE;\n}\n\nif (!BinToStr( szFile1, Data1 )) {\n\nprintf(&quot;ERROR abriendo %s\\n&quot;, szFile1);\nreturn FALSE;\n}\n\nData2 = Data1.SubString( Data1.Pos(szToken)+strlen(szToken), Data1.Length() );\n\nif (!StrToBin( Data2, szFile2 )) {\n\nprintf(&quot;ERROR creando %s\\n&quot;, szFile2);\nreturn FALSE;\n}\n\nreturn TRUE;\n}\n\/\/---------------------------------------------------------------------------\n\/*\n** Chequea si hay algo oculto en un binario\n*\/\nBOOL CheckBin(char *szFile)\n{\nString Data;\n\nif (!BinToStr( szFile, Data ))\nreturn FALSE;\n\nreturn Data.Pos(szToken);\n}\n\/\/---------------------------------------------------------------------------\n\/*\n** Elimina el binario oculto en un archivo dejandolo en su tama\u00f1o original\n*\/\nBOOL ClearBin(char *szFile)\n{\nString Data;\n\nif ( !CheckBin(szFile) )\nreturn FALSE;\n\nif ( !BinToStr( szFile, Data ) ) {\n\nprintf(&quot;ERROR abriendo %s\\n&quot;, szFile);\nreturn FALSE;\n}\n\nData = Data.SubString( 1, Data.Pos(szToken)-1 );\nreturn StrToBin(Data, szFile);\n}\n\/\/---------------------------------------------------------------------------\nint main(int argc, char* argv&#x5B;])\n{\nBanner();\nif (4 == argc)\n{\nif (!strcmp(argv&#x5B;1],&quot;h&quot;))\n{\nif ( JoinFiles( argv&#x5B;2], argv&#x5B;3] ) ) {\nprintf( &quot; %s ocultado en %s\\n&quot;,argv&#x5B;3], argv&#x5B;2] );\n}\n}\nelse\nif (!strcmp(argv&#x5B;1],&quot;e&quot;))\n{\nif ( ExtractFile( argv&#x5B;2], argv&#x5B;3] ) ) {\nprintf( &quot; Extra\u00eddo %s de %s\\n&quot;,argv&#x5B;3], argv&#x5B;2] );\n}\n}\n}\nelse\nif (3 == argc)\n{\nif (!strcmp(argv&#x5B;1],&quot;q&quot;))\n{\nif (CheckBin(argv&#x5B;2]))\n{\nprintf( &quot; Hay un binario oculto en %s\\n&quot;, argv&#x5B;2] );\n}\nelse\n{\nprintf( &quot; Ning\u00fan binario oculto en %s\\n&quot;, argv&#x5B;2] );\n}\n}\nelse\nif (!strcmp(argv&#x5B;1],&quot;c&quot;))\n{\nif (ClearBin(argv&#x5B;2])) {\nprintf( &quot; Binario eliminado\\n&quot; );\n}\nelse\n{\nprintf( &quot; No hay binario que eliminar\\n&quot; );\n}\n}\n}\nelse\n{\nUsage();\n}\nreturn 0;\n}\n\/\/---------------------------------------------------------------------------\n<\/pre><\/div>\n\n\n<p>Escrito por H0ax [hoax_ws@yahoo.es]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este programa nos permitir\u00e1 ocultar cualquier archivo dentro de otro. Muy \u00fatil para, por ejemplo, ocultar un RAR<\/p>\n","protected":false},"author":2,"featured_media":510,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,36],"tags":[60,125,88,38],"class_list":["post-686","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigos","category-proyecto-blackhat","tag-c","tag-c-builder","tag-codigos","tag-proyecto-blackhat"],"_links":{"self":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=686"}],"version-history":[{"count":1,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/686\/revisions"}],"predecessor-version":[{"id":687,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/686\/revisions\/687"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/media\/510"}],"wp:attachment":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}