Telegram Web
چالش دیکد کردن یه تابع انکدر متن:
PHP:
function encrypt($string){
$res = '';
$len = strlen($string);
if($len % 4 != 0)
$string .= str_repeat(' ', 4 - $len % 4);
$string = unpack("V*", $string);
for($i = 1; isset($string[$i]); ++$i){
for($j = 2; $j < 30; ++$j){
for($k = 2; $k < $j; ++$k)
if($j % $k == 0)
continue 2;
$res .= base_convert((41 * $string[$i]) % $j, 10, 36);
}
}
return $res;
}
print encrypt("Hello world! 😐");

Result:
0145453a6p123015acfb0205143ha90231401c6d000342eg97

تابع دیکدشو بنویسین دیگه
جایزه هم نداره
ژوپیتـر اِی‌پی‌آی | Jupiter API
چالش دیکد کردن یه تابع انکدر متن: PHP: function encrypt($string){ $res = ''; $len = strlen($string); if($len % 4 != 0) $string .= str_repeat(' ', 4 - $len % 4); $string = unpack("V*", $string); for($i = 1; isset($string[$i]); ++$i){ for($j…
PHP:
function decrypt($string){
$p = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29];
$res = [];
$string = str_split($string, 10);
foreach($string as $r){
$r = str_split($r);
$c = 0;
$m = 1;
for($i = 0; isset($r[$i]); ++$i){
$r[$i] = base_convert($r[$i], 36, 10);
while((41 * $c) % $p[$i] != $r[$i])
$c += $m;
$m *= $p[$i];
}
$res[] = $c;
}
$res = pack("V*", ...$res);
return $res;
}
print decrypt("0145453a6p123015acfb0205143ha90231401c6d000342eg97");

Result:
Hello world! 😐

راستش ازتون نا امید شدم کامل 😑
🔰 https://github.com/avid0/Alom/
اپدیت کتابخونه درهم سازی (انکدر) اسکریپت های php ورژن 2.4
رفع باگ exception و نمایش کد در اررور ها موقع استفاده از دیباگر
بهبود دادن انتی دیباگر و افزودن درهم سازی های جدید برای جلوگیری از بایپس شدنشون
رفع باگ گلوبال کش و اجرا نشدن بعضی سورس ها
افزایش سرعت اجرای لودر برای کد های درهم شده (حدود سه برابر)
کاهش کدهای درهم شده خروجی تا 20 درصد
فعال شدن دیفالت settings.rounds.unmeaning.variables
اگه مشکلی توی عملکردش دیدید توی قسمت کامنت ها بگید ممنون.
Media is too big
VIEW IN TELEGRAM
آموزش کوتاهی برای استفاده از کتابخانه درهم سازی Alom برای محافظ و انکد کردن سورس های php

🛠 @Av_id
📷 @Mr_Mordad
🗂 https://github.com/avid0/Alom/
فروش API سایت listvpn.net جهت ساخت پروکسی pptp. اطلاعات بیشتر پی‌وی:
@LordDeveLoper
چی‌کار کنیم چی‌کار نکنیم؟ چیز دیگه‌ای نیست؟🤨 APIای چیزی
encodes.php
8.2 KB
بخاطر اینکه بعضیاتون به توابع انکد دیکد متنا علاقه داشتین یه کاپی پیست از توابعی که قبلا نوشتم کردم و لیستشونو تو این فایل گذاشتم 😑
لیست توابعش:
bin_encode/decode
base4_encode/decode
pr4_encode/decode
oct_encode/decode
bcrypt64_encode/decode
base64url_encode/decode
base32_encode/decode
nsec3_encode/decode
str_rot
👍1
PHP:
function strsub($string){
return strtr($string, array_combine(str_split("0123456789+-=()abcdefghijklmnopqrstuvwxyz"), explode(' ', "₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ₐ b c d ₑ f g ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ q ᵣ ₛ ₜ ᵤ ᵥ w ₓ y z")));
}
function strsup($string){
return strtr($string, array_combine(str_split("0123456789+-=()abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), explode(' ', "⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ q ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ ᴬ ᴮ ᶜ ᴰ ᴱ ᶠ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ Q ᴿ ˢ ᵀ ᵁ ⱽ ᵂ ˣ ʸ ᶻ")));
}

print "a".strsub(1)." = e".strsup(85)."\na".strsub(2)." = e".strsup('x')."\na".strsub(1)." * a".strsub(2)." = e".strsup("85+x");

Result:
a₁ = e⁸⁵
a₂ = eˣ
a₁ * a₂ = e⁸⁵⁺ˣ
کارزار درخواست رفع فیلترینگ تلگرام

امضا کنید👇

https://www.karzar.net/27175

باتوجه به مشکلات فراوانی که فیلترینگ تلگرام برای کسب‌وکارهای آنلاین به‌وجود آورده و همچنین دسترسی و آشنایی هر نوع فرد در هر سنی به فیلترشکن‌ها، خواهشمندیم رفع فیلتر این برنامه را در دستور کار قرار دهید.
مولتی پروسه؟ async؟ 😐

فرایند/پروسه: وقتی یه برنامه باز میشه یه پروسه ایجاد میشه و منابعی رو به پروسه اختصاص میده. مثلا وقتی سایت php باز میکنید برنامه php باز میشه و میره توی مموری (معمولا بیست مگابایت رم مصرف میشه که ربطی به اسکریپت شما نداره) بعد شروع میکنه اجرا کردن اسکریپت مربوط بهش.
ریسمان/ترد: یه پروسه میتونه همزمان چندین ترد داشته باشه. ترد ها طبق زمان بندی اجرا میشن همزمان اجرا نمیشن مثلا یک ترد وصل میشه اینترنت تا بخواد وصل بشه ای بین ترد های دیگه اجرا میشن. یه پروسه میتونه هرچقدر که میخواد ترد داشته باشه. تو php معمولا مدیریت ترد ها با pcntl مدیریت میشن که کتابخونه amp هم همینکارو میکنه.
فرق ترد با پروسه اینه که دوتا پروسه دوبار یک برنامه رو باز میکنن مموری هاشون جداس ممکنه تو دو سیپیو همزمان اجرا بشن ولی ترد ها تو یدونه پروسه هستن و وقتی یکی از تردا بیکار میشه ترد دیگه میاد جاش اجرا میشه فقط یک سیپیو میمونن مموریشونم مشترکه.
مولتی پروسه: یه پروسه اگه چندین پروسه بسازه و کاری که میخواد بکنه رو بین پروسه ها تقسیم کنه میشه مولتی پروسه.
مولتی ترد یا async: یه پروسه که چندین ترد میسازه تا با وقفه ها ادامه کد از کار نیافته رو میگن مولتی ترد. کاری تقسیم نمیشه منابع همونه.

مولتی پروسه باعث افزایش سرعت ربات api میشه؟
نه فقط مموری بیشتری مصرف میکنین. وقتی تلگرام درخواست وبهوک میفرسته به سمت اسکریپت شما سیستم هایی مثل litespeed از ارسال دوباره درخواست جلوگیری میکنه تا وقتی که اسکریپت کارش تموم شه. که میگن اپدیت تلگرام درانتظار میمونه (پندینگ pending)
وقتی اپدیت میاد شما بعد از ارسال هدر ها و کد 200 به تلگرام از تابع
litespeed_finish_request()
باید استفاده کنید تا سیستم شما هم درخواست رو تموم شده درنظر بگیره و اپدیت های جدید بگیره.
البته خودش مولتی پروسس به هرحال وقتی اپدیت قبلی درحال پردازش باشه دوباره اپدیت بیاد مولتی پروسه میشه دیگ 😐 ولی ازینکه ندونسته یه پروسه باز کنید اپدیتو منتقل کنید پروسه جدید بهتره. معمولا با اینکار تایم اوت رو هم میشه تغییر داد چون تایم اوت واسه درخواستای litespeed هست که محدود میشه اینجوری پروسه میره پس زمینه میشه تایم اوتشم عوض کرد.
💻 ژوپیتر ای پی آی | @JupiterAPI
🌐 فراهاست | @Fara_Host
ژوپیتـر اِی‌پی‌آی | Jupiter API
مولتی پروسه؟ async؟ 😐 فرایند/پروسه: وقتی یه برنامه باز میشه یه پروسه ایجاد میشه و منابعی رو به پروسه اختصاص میده. مثلا وقتی سایت php باز میکنید برنامه php باز میشه و میره توی مموری (معمولا بیست مگابایت رم مصرف میشه که ربطی به اسکریپت شما نداره) بعد شروع…
انکد؟ دیکد؟ درهمسازی؟ رمزنگاری؟ 😐
واسه سرتیتر خوبه ازین به بعد همینجوری شروع میکنم

اقا ینفر اومده پیوی سورس انکدشو داده بود قرار بود سورسشو دیکد کنم بعد سورسش اجرا نمیشه نمیگم چرا اجرا نمیشه میگه یه فایل txt داشت اونو حذف کردم اجرا نشه اینو دیکد کن/: بعد هیچی دیگ اومدم توضیحش بدم گفت نوبیو رفت خابید.

انکریپت/دکریپت: به الگوریتمای رمزنگاری میگن که متن رو با یک کلید (یا دو کلید) ترکیب میکنن و بدون اون کلید هیچجوره نمیشه به متن اصلی دسترسی داشت. متنو با کلید ترکیب کنه میشه انکریپت با کلید بخاد متنو برگردونه میشه دکریپت.
انکد/دیکد: الگوریتمایی که صرفا جهت هدف خاصی و تغییر نمایش متن ساخته شدن و هیچ هدف امنیتیو رمزنگاریی ندارن. مثلا base64 که از ascii به یه محدوده خاصی از حروف متنو تبدیل میکنه یا utf8 که برای لود کردن فونت های مخصوصش باید رو متن خام اعمال بشه یا اصن json_encode هم یه انکد دکده که ارایه و متنو تو پحپ بهم تبدیل میکنه.

کامپایلر: کامپایلر مربوط به یک زبان وظیفه داره کدای اون زبانو به یه زبان سطح پایین تر یا کد ماشین تبدیل کنه و یکطرفس چون به هرحال زبان ها دقیقا خصوصیات یکسان ندارن ک. اگه بخایم از زبان کامپایل شده به زبان اصلی برگردونیم خوب هم کار سختیه هم خیلی از اطلاعات از دست میره.
مفسر: مفسر یه زبان صرفا یه برنامس ک خودش کامپایل شده و برای اجرای کد های اون زبان استفاده میشه مثل این میمونه ک هربار برنامه رو کامپایل کنه و بخاد اجراش کنه.
ترنسپایلر: اگه یه زبانیو به یه زبان دیگه تبدیل کنی میشه این حالت معمولا برای دوتا زبان اسکریپتی اینو بکار میبرن.

خوب حالا چرا اینارو گفتم میخام بگم درهم ساز چیه.
درهم ساز برای اینه که دسترسی به کدها سخت بشه و قابل خوندن نباشه. هیچوقت غیرممکن نیس اصلا جزو رمزنگاری حساب نمیشه چون واسه ادم قابل خوندن نباشه درنهایت واسه کامپیوتر ک باید قابل خوندن باشه باید حتما اجرا بشه دیگ درسته؟
درهم سازی: کاری که روی یک زبان معمولا اسکریپت انجام میدن تا کدهاش به سختی قابل خوندن باشه. خوب مشخصا شما انکد دیکد لازم ندارید هزار بارم base64_encode استفاده کنید درنهایت فقط سرعت اجرا رو پایین میارین پس باید چیکار کنیم. به طور کلی معمول ترین راه کاری شبیه اتفاقیه که توی کامپایلر یا ترنسپایلر میافته. شما باید جای کدو عوض کنید کدارو به چیزای عجیب تغییر بدین مثلا جای
if(true)print "hello";
بنویسین
!![]||(base64_decode("\x63\x48\x4a\x70\x62\x6e\x52\x66\x63\x67\x3d\x3d"))(hex2bin("\x36\x38\x36\x35\x36\x63\x36\x63\x36\x66"));
کد همونه زبانم همونه. اجرا میشه همون کارو میکنه فقط انگار دیگه به اون سادگی قبلی نیستش.
این میشه اصلی ترین چیزی که باید برای یه درهم سازی خوب انجام بشه. بقیشم به کلک های کسی که درهمسازی میکنه بستگی داره.
یه درهم ساز بد هم میاد صد بار base64 میکنه که فقط سرعتو پایین میاره.

🤨 حالا خطاب به دوست عزیزی که میگفت قابلیت اجرای سورس رو حذف کردم دیکدش کن. عزیزم وقتی سورس رو خراب کنی دیگه اجرا نشه دیگه درهم سازی نیس. اونو باید کرک کرد ببینی چیبوده ک نمیشه قطعا. معنی درهم سازیو انکدو انکریپتو باهم قاطی نکنین تشکر❤️
:/
سلام! 🍃
امروز قراره درباره PHP Generator صحبت کنیم...

[🌊] در ابتدا بگم که منبع این پیام سایت ویرگول هستش که فقط برای دسترسی ساده تر با یکم تغییرات توی تلگرام گذاشته میشه.

قبل از اینکه شروع کنیم باید درباره داده های Iterable صحبت کنیم.

[¹] چه داده هایی Iterable هستند؟

جواب () : به طور کلی هر نوع داده ای که با حلقه foreach قابل پیمایش باشه Iterable محسوب میشه.

در واقع Iterable یک شبه تایپ هست که اصلِ صفتِ قابل پيمايش بودن را داراست و از مثال هاش میتونیم array یا object رو مثال بزنیم که همه میشناسیمشون.

[²] حالا سوال کلیدی اینه که PHP Generator چی هست؟‍

جواب (☑️) : اونا این امکان رو به ما میدن تا بدون اینکه کل داده ها رو داخل حافظه نگه داریم، به کمک یک حلقه پیمایش کنیم.

در واقع به کمک Generator ها میتونیم توابعی بنویسیم که چندین مقدار مختلف رو به عنوان خروجی برگردونن، برخلاف return که فقط یک مقدار رو برمیگردونه.

اگر بخواهیم توی یک جمله خلاصه بگیم :

تابعی که خروجی iterable ارائه میده بدون اینکه کل داده ها رو یکجا برگردونه و تمام منابع ما رو ببلعه 😧🐻

#پارت_اول
سلام مجدد! 🙂
امروز همون فردای دیروزه نه اینکه فردا باشه ولی برای شما فرداست...

خب بیاین اول اینجوری پیش بریم که انگار همچین موهبتی وجود نداره !

[1⃣] ما میخوایم ارایه ای از 0 تا بزرگترین عدد php یعنی PHP_INT_MAX داشته باشیم و بعد همه اعضای این ارایه رو چاپ کنیم. بریم ببینیم کدش چطوریه :

function make(){
$array = [];
for($i = 0; $i < PHP_INT_MAX; $i++)
$array[] = $i;
return $array;
}
make();


[🤔] اگر این کد رو اجرا کنیم چی میشه؟
بله با این خطا مواجه می شیم :
Allowed memory size of X bytes exhausted

مشخصه که حافظه ای که در اختیار PHP بوده کاملا پر شده و دلیلش هم اینه که تابع make کل اعداد بین 0 تا PHP_INT_MAX رو داخل حافظه نگه میداره! 😞


[2⃣] پس راه حل چیه؟ بله Generator ها

همونطور که گفتیم، Generator ها این امکان رو میدن تا بتونیم داده رو پیمایش کنیم بدون اینکه کل اون رو داخل حافظه ذخیر کنیم. واست سواله دقیقا چطوری میشه؟

function make(){
for($i = 0; $i < PHP_INT_MAX; $i++)
yield $i;
}
make();


در واقع yield این امکان رو میده تا یک تابع چند خروجی داشته باشه.

توی این کد وقتی وارد حلقه for میشیم، مقدار اولیه i$ که 0 هست yield میشه و به عنوان یکی از خروجی ها برگردونده و کد متوقف میشه، دیگه ادامه پیدا نمیکنه تا زمانی که دوباره اجرای Generator ادامه پیدا کنه!

خیلی جالب نیست؟ 😀
جالب تر میشه اگر بدونید زمانی که ما تابع make رو var_dump کنیم خروجیمون این میشه :
object(Generator)#507 (0) {}

می‌بینیم که یک object از نوع Generator هست و هیچ عددی داخلش نیست.

[🔮] آنچه در قسمت بعد خواهید دید :
متدی های موجود در Generator ها

#پارت_دوم
در سمت توام، دلم باران، دستم باران...

[] با قسمت بعدی از آموزش Generator ها در خدمت شما هستیم!

[🧠] اگر یادتون باشه توی قسمت قبلی یک فانکشن به اسم make نوشتیم، حالا بیایید یکم ازش استفاده کنیم ببینیم این معجزه چطوری کار میکنه...

foreach(make() as $num){
echo "$num\n";
}


• خروجی کد بالا اعداد 0 تا PHP_INT_MAX رو چاپ میکنه 😟

[³] چرا موقعی که var_dump کردیم هیچ عددی رو نشون نداده و فقط یک object بود؟

جواب () : اینجا مشخص میشه که yield مقادیر رو به ترتیب و یکی یکی برمیگردونه و تا زمانی که به پیمایش object خروجی که یک Generator هست ادامه ندیم، مقادیر بعدی رو برنمیگردونه و اینجوری دیگه کل داده داخل حافظه قرار داده نمیشه و در هر فراخوانی یکی یکی تولید و برگردونده میشن. Generator ها چند متد دارن که اینجا باهاشون آشنا میشیم!

• متد Current
📗 | با کمک این متد به مقدار فعلی که yield شده دسترسی پیدا میکنیم.
🔬 |

$gen = make();
echo $gen->current();


خروج فعلی ما عدد 0 هست چون مقدار اولیه i$ داخل حلقه 0 بود. بعد از اینکه مقدار 0 yield شد حلقه ادامه پیدا نمیکنه و اجرای Generator نگه داشته میشه، هرچقدر هم تابع current رو صدا بزنیم باز هم خروجی 0 هست.
ولی اگر بخواهیم مقدار بعدی رو چاپ کنیم چیکار کنیم؟

متد Next
📕 | به کمک این متد میتونیم اجرای Generator رو از جای قبلی که متوقف شده بود ادامه بدیم.
🔬 |

$gen = make();
echo $gen->current() . PHP_EOL;
$gen->next();
echo $gen->current();


مقدار اولیه i$ عدد 0 بود با متد current مقدار فعلی یعنی 0 چاپ میشه و با متد next پیمایش Generator رو ادامه میدیم تا yield بعدی و زمانی که دوباره متد current رو صدا میزنیم عدد 1 چاپ میشه چون مقدار بعدی i$ هستش.

متد Send
📘 | به کمک این متد میتونیم مقداری رو به عنوان نتیجه yield به Generator بفرستیم و اجرای Generator رو ادامه بدیم.
🔬 |

function myGen(){
echo yield 'bye';
}
$gen = myGen();

echo $gen->current() . PHP_EOL;
echo $gen->send('hello');


چون رشته "bye" در داخل تابع yield شده ، متد current مقدار اون رو به ما میده و اجرای Generator در همونجا puase میشه. وقتی با متد send رشته "hello" رو به داخل Generator میفرستیم مقدار فعلی Generator به "hello" تغییر پیدا میکنه و به کمک echo چاپ میشه.

در واقع توی مرحله اول yield مقدار "bye" رو برگردونده و در مرحله دوم مثل یک متغیر عمل کرده که میتونیم مقداری رو بهش نسبت بدیم (به همین سادگی 🍰)

متد getReturn
📙 | اگر بخوایم پس از اتمام اجرا Generator مقدار return شده ی تابع رو برگردونیم، از این متد استفاده میکنیم.

شاید نمیدوستید اما میشه توی فانکشن هامون علاوه بر yield از return هم استفاده کنیم!

🔬 |

function myGen(){
yield 1;
yield 2;
return 'hi';
}
$gen = myGen();

foreach($gen as $num){
echo "$num\n";
}
echo $gen->getReturn();


میبینیم که حلقه foreach که وظیفه iterate کردن Generator رو برعهده داره فقط اعداد 1 و 2 رو که yield شدن چاپ کرده، اگر بخوایم به مقدار return شده دسترسی پیدا کنیم باید متد getReturn رو صدا بزنیم.

[⚠️] دقت کنید اگر قبل از تموم شدن اجرای Generator، متد getReturn رو صدا بزنید با خطا مواجه می شید.

• در اخر باید بگم که این ها فقط گوشه ای از مطالب بود و برای یادگیری کامل تر میتونید به Google مراجعه کنید!

#پارت_سوم |نهایی 🏁|
👍1
2025/07/12 22:53:23
Back to Top
HTML Embed Code: