<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سعود پرکوک</title>
        <link>https://virgool.io/feed/@saudparkook</link>
        <description>توسعه دهنده اندروید</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:46:39</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/66492/avatar/ZFdMNx.png?height=120&amp;width=120</url>
            <title>سعود پرکوک</title>
            <link>https://virgool.io/@saudparkook</link>
        </image>

                    <item>
                <title>مشکل سال های کبیسه در جاوا</title>
                <link>https://virgool.io/@saudparkook/%D9%85%D8%B4%DA%A9%D9%84-%D8%B3%D8%A7%D9%84-%D9%87%D8%A7%DB%8C-%DA%A9%D8%A8%DB%8C%D8%B3%D9%87-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7-vxnehepvh9a4</link>
                <description>سلامبا اومدن سال جدید تاریخ های بعضی برنامه ها و دستگاه ها به هم ریخته و سوژه بسیاری از کانال ها شده .تقریبا چند سال پیش بود ، روی یه سفارش اندرویدی کار میکردم که توش از تقویم فارسی استفاده باید میکردم .بنا به عادت پیگیر لایبراری هایی برای این کار شدم , تو همون سرچ اول چندتا لایبراری با دیزاین های قشنگ پیدا کردم و تصمیم بر استفادشون گرفتم .در نگاه اول همه چیز اوکی بود تا اینکه توی بعضی دیوایس ها به مشکل دیزاین برخوردم و بعضی جاها  ui  تقویم به هم میریخت با عوض کردن چند تا لایبراری و بررسیشون فهمیدم هر کدوم مشکلاتی دارن یکی  ui  رو بهم میریزه یکی دیزاینش شیک نیست و نمیشه شخصی سازی کرد به راحتی و..... این مسائل رو سخت نگرفتم تا اینکه به یه مشکل اساسی خوردم .  &quot;سال های کبیسه&quot; متوجه شدم  چندتا تقویمی که استفاده کردم تو چندتا سال خاص مشکل کبیسه گیری دارن .پیش خودم گفتم این که کاری نداره کبیسه  هر چهارسال یبار هستش  و فوقش با یه حلقه شمارش سالها رو انجام میدم  و.....وقتی این کار رو کردم دیدم ای دل غافل همچیز در  هم شد و سال ها بسی قاطی گشت (کبیسه های من با تقویم واقعی اصلا جور نبود     :(رفتم پیگیر کلاس های نوشته شده برا جاوا شدم که دیدم یه کلاس تقریبا خوب هست برا این کار (دنبال لینک سایتی که ازش دانلود کرده بودم  گشتم پیدا نکردم ولی کلاس ویرایش شده خودمو آخر همین مطلب میزارم )تبدیل ها رو خوب انجام میداد ولی باز با بعضی سال ها مشکل داشت مثلا 1342 ,1375 ,  1403و ......  نمیتونست کبیسه رو درست تشخیص بده :یکم تحقیق کردم که توی ویکی پدیا به جواب رسیدمسال کبیسه - ویکی‌پدیا، دانشنامهٔ آزاد (wikipedia.org)گاه‌شماری رسمی ایران - ویکی‌پدیا، دانشنامهٔ آزاد(wikipedia.org)برخلاف تصور من کبیسه هر چهارسال یبار نیست و توی دوره هایی کبیسه پنج ساله داریم و بر خلاف تقویم میلادی کبیسه های ما دوره چندان منظمی در نگاه اول نداشت ; تو تقویم میلادی بعد از 20 سال کبیسه 4 ساله یه کبیسه 5 ساله پیش میاد ولی در تقویم شمسی این دوره ها متفاوتن 37 , 33 ,29 ساله که تکرار هر کدوم متفاوته .نشستم به زیر و بالا کردن  سال های استثنایی که توی اون مقاله ویکی پدیا و سال های استثنایی که خودم بدست اوردم رو تو یه کد اوردم و اون کلاس رو ارتقا دادم تا بتونم استفاده کنم  (منبع چک من  time.ir  بود باحساب هم مشکلاتی داشت ) .بهش یه ساختار برای نمایش در انتخابگر تاریخ (date packer) دادم تا تاریخ 1600  و بعد از اون تو برنامه هام چه ویندوزی و چه اندرویدی ازش استفاده میکنم .راستی دوستان این مشکل من در زبان java  بود.کلاس و لینک گیت رو پایین میزارم تا هر کی خواست استفاده کنه یا هم اگر مشکلی در کد ها بود اصلاح کنه و ارتقا بده .saudparkook/PersianDataPicker (github.com)</description>
                <category>سعود پرکوک</category>
                <author>سعود پرکوک</author>
                <pubDate>Wed, 24 Mar 2021 04:13:57 +0430</pubDate>
            </item>
                    <item>
                <title>تست نفوذ به سرور اپ های اندرویدی</title>
                <link>https://virgool.io/coderlife/%D8%AA%D8%B3%D8%AA-%D9%86%D9%81%D9%88%D8%B0-%D8%A8%D9%87-%D8%B3%D8%B1%D9%88%D8%B1-%D8%A7%D9%BE%D9%87%D8%A7%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%DB%8C-qdvltrhyfp41</link>
                <description>سلام این یه آموزش مبتدیانست برا حداقل امنیت توی برنامه هامون.قصد داریم تست نفوذ ساده ای روی یه اپ اندرویدی برای  بدست آوردن اطلاعات کاربراش از طریق باگی در کد نویسی سمت سرور انجام بدیم. توی این آموزش ما با تزریق تگای مخرب میایم و این کار رو انجام میدیم (sql injection)(تمام مطالبی که اینجا گفته میشه و شاید هم کاملتر در ویدئوی که توی یوتیوب و آپارات قرار دادم هستش شما میتونید در انتهای این آموزش لینک ویدئوها رو ببینید)خب کارایی که باید انجام بدیم : شنود  شبکه ، بدست آوردن لینک و کلیدهای ارسالنوشتن یک اپ ساده جهت دریافت اطلاعات کاربری از لینک لاگین سایت یا اپیلیکیشن  تزریق تگ های مخرب در درخواست لاگین  ذخیره اطلاعات بدست آمده قدم اول : شنود شبکهبرای اینکار ابزارای مختلفی توی سیستم عاملای مختلف وجود داره ما قصدمون معرفی ابزارهاست و نه نحوه کار باهاشون (البته توی کلیپی که تو آخر آموزش هست نحوه کار یدونشون وجود داره)توی ویندوز دوستان میتونید از ابزارهایی مثل wiresharke  و  networkminer  استفاده کنیداگه بخواین با موبایلای اندرویدی این کار رو انجام بدین میتونید از packetcapture , portdroid استفاده کنید ابزارای خوبینتوی این مرحله ما یکی از ابزارهای شنود شبکه رو ران میکنیم و به بعد از طریق اپلیکیشن به سرور لاگین میکنیم همونجور که میبینید اطلاعاتی و روش ارسال و اطلاعات دریافتی رو به راحتی بدست آوردیم. NetworkMinerبسته های دریافتی از سرورجیسون بدست آمده که بصورت نا امن ارسال شده بودبعد از دریافت اطلاعات و روش ارسال و دریافتشون میمونه بحث تحلیل اطلاعات که این برای هر اپلیکیشنی که این باگ رو داشته باشه متفاوته ، همونجور که میبینید دوستمون توی برنامش برا ارسال اطلاعات با روش پست دوتا کلید phone  و  ramz فرستاده به سرور  و از سرور parent_id  که اسم یکی از ستونای  دیتابسشه رو برگردونده (همچی رو همین میچرخه) http://hostname/Get_User.php?ramz=123456789&amp;phone=09355502840قدم دوم : نوشتن یه اپ ساده برا شبیه سازی لاگینخب من اومدم با نوشتن یه اپلیکیشن ساده به زبون جاوا فرم لاگین رو شبیه سازی کردم ; شما میتونید از زبونای دیگه یا ابزارای دیگه مثل  postman  استفاده کنید برا شخصی سازی من ابزار رو خودم نوشتم                   * توضیح خاصی نیاز بود کامنت بزارین توضیح میدم :)  *کد های لاگینقدم سوم : تزریق تگ مخرب زمان ارسال اطلاعات به سرورخب قسمت شیرین کار رسیدیم  قراره یه تیکه  کد  SQL  رو همراه با درخواستمون بفرستیم به سمت سرور . توی قدم اول دیدیم که چجوری لینک و کلیدا ارسال میشد پس قراره ما هم به همون صورت بفرستیم urlParametrs= &amp;quot ramz=123456789 or parent_id=&amp;quot+مقدار پیمایش توی ستون+&amp;quot &amp; phone=09355502840 or parent_id=&amp;quot+مقدار پیمایش توی ستون+&amp;quot ;خب چجوری این کد عمل میکنه زمانی که دستور رفت به سرور و توی کوئری اجراشد تو حالت معمولی phone و ramz  بهش پاس داده میشن به این صورت (متغیرا فرضیه تو این تیکه)$phone=$_POST[&#039;phone&#039;];$ramz=$_POST[&#039;ramz&#039;];select * from users where phone=$phone and password=$ramz 
//  این کدیه که تو  سرور اجرا میشه ولی با کاری که ما کردیم در واقعیت داریم  شرط and رو با کمک  or میشکونیم
select * from users where phone=09355502840or parent_id=1 and password=123456789 or parent_id=1قدم چهارم : ذخیره اطلاعاتخب در آخر هم نوبت میرسه به ذخیره اطلاعاتی که از سرور بدست میاریم . بستگی به نیازمون نحوه ذخیره سازی و استفاده از اطلاعات به عهده خودمونهموارد مهم و ساده در بالا بردن امنیت سایت ها و اپلیکیشن های از  بیس طراحی شده :تا اینجا ما اومدیم و اطلاعات کاربرای یه اپ رو کشیدیم بیرون ولی خب چه کنیم که برنامه هامون دچار همچین باگ های ساده ای نشناول بگم همچین باگهایی بیشتر توی بچه هایی که تازه شروع کردن دیده میشه که اونم از سر تجربه کمه و دوستانی که از بعضی فریمورکا برا سرور نویسی( لاراول و کیک و ....)  استفاده میکنن رعایت مواردی که گفتیم توشون اجباریه و خیالمون از حداقل امنیت راحت میشهخب ما مد نظر میگیریم که از صفر خودمون قراره کد بزنیم مثل اپلیکیشن دوستمون :)  (هی میگم دوستمون که اگه موردی پیش اومد بهم رحم کنه :) خب موارد اینان : فیلترگذاری تگ های html و sql و prepare در کلاینت و سرور $phone=mysqli_real_escape_string($con,$get);$phone=htmlspecialchars($phone);//////////////////////////////////
$query=$con-&gt;prepare(&amp;quotselect ...... from user where phone like ?&amp;quot);$query-&gt;bind_param(&amp;quots&amp;quot,$phone);$query-&gt;execute();$result=$query-&gt;get_result(); ساخت کلید دو طرفه جهت اهراز هویت جهت ساخت توکن ارتباطی$token=&quot;G5@85#fd$FS2S*!RGV%^DFC2HKL#$T%RDFVQZ&amp;^34VDF@#&quot;;  ///نمونه توکن استفاده از الگریتم های هش سازی اطلاعات و استفاده از ساختار متنی جهت ارسال اطلاعات مثل json , xml  و..... که بهتره یه سرچی در موردش بزنید  استفاده از پروتکول های امن شبکه مثل   tls و ssl (همون https  خودمون) البته از اندروید 9 به بعد استفاده از ssl اجباری شده و تازه هر ssl  هم امن نیست و قابل شنود بهتره در مورد پروتکل های امنیت بین راهی هم یکم مطالعه بکنیددر آخر هم باید بگم این موارد تضمینی بر امنیت صد در صدی برنامه شما نیست و یک سری نکات عمومی محسوب میشه   ;)امیدوارم تونسته باشم مطالب رو خلاصه و مفید شرح داده باشم اگه موردی بود برام کامنت کنید یا تو تلگرام با من در ارتباط باشید .راستی آموزش ویدیوئی همین مطلب رو هم توی یوتیوب و آپارات قرار دادم ممنون میشم تماشا و لایک کنید .پیروز باشید.... https://www.youtube.com/watch?v=5CFFGmOeOU4  https://www.aparat.com/v/8IK1f سعود پرکوک0098iran</description>
                <category>سعود پرکوک</category>
                <author>سعود پرکوک</author>
                <pubDate>Thu, 14 May 2020 10:54:27 +0430</pubDate>
            </item>
            </channel>
</rss>