آموزشیويژه

فشرده سازی و کد کردن فایل با Compressed2TXT.bat

Compressed 2 TXT یک اسکریپت بسیار کاربردی می‌باشد که شما می‌توانید عملیات فشرده سازی فایل‌ها را بدون نیاز به نصب برنامه در مبدا و مقصد و فقط بر پسوند .bat و انتقال اطلاعات بصورت متنی انجام دهید

برخی سناریو‌ها و موقعیت‌های استفاده:

  • کاربرد اصلی این برنامه برای اشتراک گذاری فایل‌های configs / scripts / dumps / captures در محیط‌های که امکان پیوست فایل‌ با فرمت مورد نظر را نمی‌دهد و یا کد‌ها را بدافزار و ویروس تشخیص می‌دهند یا محدودیت کاراکتر مواجه هستیم بسیار کاربردی می‌باشد
  • در محیط‌ های چت و یا در فرم‌های که امکان پیوست فایل وجود ندارد بصورتی متنی فایل‌ را ارسال کنیم
  • شما می‌توانید هر فایل و یا پوشه را با این برنامه به یک فایل .bat فشره شده تبدیل کنید که در محل مورد نظر با دو کلیک فایل و پوشه‌ها را استخراج کنید
  • در شرایطی نیاز به تبدیل فایل و پوشه‌ها به متن داریم
  • می خواهد فایل های مورد نیاز برای اسکریپت .bat را داخل همان فایل ذخیره و انتقال دهید
  • در برخی موارد می‌خواهیم فایل .bat به راحتی قابل ویرایش و خواندن نباشد!!
  • و…
صفحه برنامه درGitHub دانلود مستقسم نسخه5.2

 

این اسکریپت از روش رمزنگاری Ascii85 که ترکیبی از کدگذاری با کاراکتر‌های ASCII برای رمزنگاری و فشرده سازی در سطح باینری، استفاده می‌کند و سرعت مناسبی دارد

همچنین از powershell ویندوز جهت دسترسی مدیر برای این کار استفاده می‌کند

برای استفاده از این اسکریپت بعد از استخراج فایل از پوشه فشرده کافیست فایل Compressed 2 TXT.bat را اجرا کنید

بر روی فایل مورد نظر  است کلیک کنید و از منوی Send to  گزینه Compressed2TXT.bat را انتخاب کنید

فشرده سازی و کد کردن فایل با Compressed2TXT.bat

عملیاتی مانند تصویر زیر انجام می‌شودفشرده سازی و کد کردن فایل با Compressed2TXT.bat

فایلی همنام فایل انتخابی بعلاوه کاراکتر  .~ در کنار فایل اصلی ایجاد می‌شود

در تصویر زیر مقایسه فایل اصلی و کد شده را می‌بینید

فشرده سازی و کد کردن فایل با Compressed2TXT.bat

 

روش دیگر برای اینکار کشیدن و رها کردن بر روی خود اسکریت می‌باشد

من در اینجا یک پوشه را که حاوی فایل می‌باشد بر روی فایل Compressed2TXT.bat دراگ می‌کنم

فشرده سازی و کد کردن فایل با Compressed2TXT.bat

مقایسه حجم فایل‌های اصلی و فایل فشرده شده را در تصویر زیر ببنید

فشرده سازی و کد کردن فایل با Compressed2TXT.bat

در محل مقصد بر روی فایل ایجاد شده کافیت کلیک کنید تا فایل‌ها استخراج شود

فشرده سازی و کد کردن فایل با Compressed2TXT.bat

شما براحتی می‌توانید در محیط‌ های چت و یا در فرم‌های که امکان پیوست فایل وجود ندارد و یا فرمت فشرده سازی را قبول نمی‌کند به راحتی متن فایل .bat ایجاد شده را ارسال کنید و در سمت گیرنده متن را داخل یک فایل متنی به .bat تبدیل و اجرا کنید

 

برای کد کردن(Encrypt) و مخفی کردن متن فایل‌های اسکریپت .bat یا هرگونه فایل دیگری نیاز به ویرایش فایل ایجاد شده می‌باشد، زیرا یه صورت پیش‌فرض بعد اجرا فایل اصلی بصورت معمول در کنار فایل اصلی قرار می‌گیرد

برای تست من یک اسکریپت ساده به صورت زیر می‌نویسم

@echo off
title Test Encrypt Batch File
echo.
echo Run Successful
echo.

سپس اون را با Compressed 2 TXT کد می‌کنم (خروجی مثل زیر)

@echo off & pushd %~dp0
powershell -noprofile -c "$f=[io.file]::ReadAllText('%~f0') -split ':bat2file\:.*';iex ($f[1]);X 1;"
exit/b
:bat2file: Compressed2TXT v5.2
Add-Type -Language CSharp -TypeDefinition @"
using System.IO; public class BAT85{ public static void Decode(string tmp, string s) { MemoryStream ms=new MemoryStream(); n=0;
byte[] b85=new byte[255]; string a85="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$&()+,-./;=?@[]^_{|}~";
int[] p85={52200625,614125,7225,85,1}; for(byte i=0;i<85;i++){b85[(byte)a85[i]]=i;} bool k=false;int p=0; foreach(char c in s){
switch(c){ case'\0':case'\n':case'\r':case'\b':case'\t':case'\xA0':case' ':case':': k=false;break; default: k=true;break; }
if(k){ n+= b85[(byte)c] * p85[p++]; if(p == 5){ ms.Write(n4b(), 0, 4); n=0; p=0; } } } if(p>0){ for(int i=0;i<5-p;i++){
n += 84 * p85[p+i]; } ms.Write(n4b(), 0, p-1); } File.WriteAllBytes(tmp, ms.ToArray()); ms.SetLength(0); }
private static byte[] n4b(){ return new byte[4]{(byte)(n>>24),(byte)(n>>16),(byte)(n>>8),(byte)n}; } private static long n=0; }
"@; function X([int]$r=1){ $tmp="$r._"; echo "`n$r.."; [BAT85]::Decode($tmp, $f[$r+1]); expand -R $tmp -F:* .; del $tmp -force }
:bat2file: Test1.bat~
O/bZg00000xBvhE00000EC2ui000000|5a50RR9100000MgRZ-0RRIPRR91000000006~K?QW#8RAqB@F+m^ZbO1Di{]e=^RRCLnfQ;k!Pz5Le0018V00031002N_
V_y)6Z+Ro;3Uq07Y.J!IRAqB@AVqFta)QrcAVOhuV_v~oX?4T/3JnTnV_y)K4GLvrXm21OARtn8ZXi?2V_F7=b7pmH4GLvrXm2hJ3JnSX

 

در این مرحله کد زیر را ججای exit/b قرار می‌هم

rmdir /s /q "Test1.bat"
MOVE "Test1.bat" %temp%
ATTRIB +S +H "%Temp%/Test1.bat"
pushd "%Temp%"
cls
call Test1.bat

با این کد del /q %Temp%\Test1.bat در صورتی که در پوشه Temp فایل Test1.bat باشد را حذف می‌کنیم ( در صورتی که فایل‌شما دارای پوشه است از دستور rmdir /s /q استفاده کنید)

سپس با دستور MOVE "Test1.bat" %temp% فایل Test.bat که بعد از اجرای فایل در کنار فایل‌ اصلی ایجاد می‌شود را به پوشه Temp انتقال می‌دهیم

سپس با دستور ATTRIB +S +H "%Temp%/Test1.bat فایل انتقال داده شده را مخفی و سیستمی‌ میکنم

با دستور pushd "%Temp%" مسیر را به Temp تغییر می‌دهیم

با دستور CLS صفحه را پاک می‌کنیم

در نهایت call Test1.bat در همان صفحه فایل Test1.bat اجرا می‌کنیم

 

طبیعست که یک کاربر یا تجربه به راحتی متوجه عمکلرد ما در این فایل می‌شود

دقت کنید که برای کد کردن و مخفی کردن دستورات راه‌های بهتری وجود دارد مانند تبدل به فایل EXE ،اما در انجا به خاطر اینکه بیشتر با محیط اسکریپت نویسی و دستورات CMD آشنا بشویم این مراحل را طی می‌کنیم و هدف آموزشیست!

 

 

امیر فدائیان

عاشق تکنولوژی هستم،مشغول برنامه نویسی و همچنین پشتیبانی و نصب سیستم های نظارتی و حفاظتی هست، در اين وبلاگ علاوه بر اينكه دفترچه ياداشتي براي خودم هست ،تجربیات و دانسته‌هام در حوزه نرم‌افزار ،اينترنت ،تلفن همراه و ... را منتشر ميكنم. Programming languages: Delphi, Kotlin, Python, SQL Server

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا