✴️ با MR.B4A به راحتی برنامه نویسی اندروید را یادبگیرید.
آموزشهای کاربردی، سورسهای آماده و نکتههای حرفهای — سریع، روان، بدون پیچیدگی!
🔰 با MR.B4A
ساده یاد بگیر، حرفهای بساز.
آموزش، سورس، ترفند — بدون حاشیه!
هرچی برای ساخت اپ نیاز داری، همینجاست!
🔥🔥 کانال های تلگرام، ایتا و سورش MR.B4A
https://t.me/programmingwithb4a
https://splus.ir/basic4android_langueg
https://eitaa.com/basic4androidlan
📑 سورس دفترچه یادداشت به زبان b4a
🙏 سلام به برنامه نویسان عزیز.
✳️ باز هم با یک سورس کاربردی از بیسیک فور اندروید در خدمتتون هستم.
📖 سورس دفترچه یادداشت به زبان b4a
💡 ویژگی های سورس:
*استفاده از دیتابیس آفلاین به منظور ذخیره کردن یادداشت ها ( نمایش، واردکردن، حذف کردن، ویرایش اطلاعات )
*حذف پوشه ای خاص در حافظه داخلی ( دقت کنید که برای حذف یک پوشه ای که حاوی چندین فایل است، نمیتوانید با دستور file.Delete ) ) این کار را انجام دهید. توی این سورس من با استفاده از دستورات جاوا این کار را به شکل استاندارد انجام دادم.
*استفاده از اسنک بار به جای توست مسیج
*بخش گذاشتن رمزعبور برای وارد شدن به برنامه
*کاهش حجم عکس به منظوره ذخیره در دیتابیس و بهینه کردن برنامه
*ذخیره یادداشت ها و درصورت دلخواه، ذخیره تصویر به همراه یادداشت ها ( ذخیره در دیتابیس )
*تبدیل صوت به یادداشت ( شاید روی برخی از گوشی ها کار نکند )
*قابلیت اشتراک گذاری متن در شبکه های اجتماعی
*انتخاب عکس از گالری و وارد کردن آن به برنامه
*استفاده از کاستوم لیست ویو
*قابلیت حذف آیتم از کاستوم لیست ویو
*قابلیت منتقل کردن یادداشت ها به لیست یادداشت های پرکاربرد ( همون سیستم لایک و آنلایک )
*قابلیت ذخیره و نمایش عکس از دیتابیس
💰 سورس
https://zarinp.al/725935
تهیه و تنظیم
مرتضی صباغی
MR.B4A
🛑 محصولات
MR.B4A
پرژوژت چه قدر می ارزه؟
https://zarinp.al/701185
ضبط صدا
https://zarinp.al/602356
ابزارهای انیمیشنی
https://zarinp.al/582228
کتاب پیشرفته
https://zarinp.al/581211
کیوآرکد اسکنر
https://zarinp.al/724103
قاب عکس
https://zarinp.al/725250
اپلیکیشن ها
پرژوژت چه قدر می ارزه؟
https://cafebazaar.ir/app/ir.project.cost.estimation.mr.b4a
شماره ساز حرفه ای
https://cafebazaar.ir/app/ir.number.generator.mr.b4a
#b4a #basic4android #source_code #programming #android #b4x #MR_B4A
#notepad
#بیسیک_فور_اندروید #سورس_کد #برنامه_نویسی #اندروید #برنامه_نویسی_اندروید #دفترچه_یادداشت
🔰 امنیت در b4a ( قسمت چهارم )
Certificate Pinning
💡 تعریف ساده: Certificate Pinning چیه؟
وقتی اپلیکیشن شما به یک سرور HTTPS وصل میشه، بهطور معمول با گواهی دیجیتال (SSL/TLS certificate) اون سرور ارتباط برقرار میکنه. اما تو این حالت، اپ فقط بررسی میکنه که آیا اون گواهی توسط یک مرجع معتبر (CA) صادر شده یا نه.
مفهوم Certificate Pinning یکی از روشهای مهم برای افزایش امنیت ارتباطات HTTPS توی اپلیکیشنهاست، مخصوصاً اپهای موبایل یا کلاینتهایی که به سرور متصل میشن.
🟥 حالا مشکل کجا پیش می آید؟!
اگه یه مهاجم (مثلاً در حمله man-in-the-middle) بتونه یه گواهی جعلی از یه CA معتبر بگیره، ممکنه کاربر بدون اینکه متوجه بشه، به سرور جعلی وصل بشه!
Man-in-the-Middle (یا MITM) یعنی چی؟ ⚡️
"مرد میانی" یه نوع حملهست که توش یه هکر میاد وسط ارتباط بین دو نفر (مثلاً اپ شما و سرور) و بدون اینکه کسی بفهمه، اطلاعات رو میخونه، تغییر میده یا دزدی میکنه.
✳️ مثال ساده:
شما با گوشیتون به یه سرور وصل میشی (مثلاً بانک یا اپ خودت).
یه هکر توی همون وایفای عمومی (کافه، فرودگاه...) میاد وسط ارتباطتون.
اطلاعات شما (مثل رمز، شماره کارت، پیامها) قبل از اینکه به سرور برسه، میره پیش اون هکر.
Certificate Pinning چیکار میکنه؟ 📣
با Certificate Pinning، شما به اپلیکیشن میگید:
فقط به این گواهی (یا کلید عمومی خاصی) اعتماد کن — حتی اگه گواهی معتبر دیگهای ارائه شد، قبول نکن. یعنی گواهی یا کلید عمومی خاصی رو "سنجاق" (pin) میکنی به اپ.
❓ انواع Pinning:
1-Public Key Pinning (کلید عمومی)
فقط کلید عمومی رو ذخیره میکنی، اگر گواهی عوض شد ولی کلید عمومی همونه، مشکلی نیست.
2-Certificate Pinning (گواهی کامل)
کل گواهی یا fingerprint اون رو ذخیره میکنی —اگه عوض بشه، حتی اگه قانونی باشه، اتصال رد میشه.
✅ مزایای Certificate Pinning:
محافظت در برابر حملات MITM
امنتر از اعتماد کامل به CAهای عمومی
💣 معایب
اگه سرور گواهیش رو عوض کنه و اپ هنوز با گواهی قبلی pin شده باشه، اتصال fail میشه (مگر اپ بهروز بشه)
در صورت پیادهسازی اشتباه، میتونه باعث قفل شدن اپ بشه
❇️ پیاده سازی در B4A
پیادهسازی Certificate Pinning در B4A ممکنه، ولی چون B4A سطح بالاتری داره و مستقیماً به کلاسهای جاوای SSL/TLS دسترسی نمیده، باید با کمی ترفند و استفاده از JavaObject یا inline Java کار رو انجام بدی.
1-برای پین کردن گواهی از OkHttpUtils2 + JavaObject استفاده کنید.
این دو کتابخونه رو توی b4a تیک بزنید.
2-دریافت گواهی SHA-256
از سایت مثل https://www.sslshopper.com یا با ابزار openssl استفاده کن
یک کلید این شکلی دریافت میکنید
openssl s_client -connect yourdomain.com:443 </dev/null 2>/dev/null | openssl x509 -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 -binary | base64
3-این هم روش کلی استفاده در بیسیک فور اندروید هست که باید با توجه به پروژه تان آن را تغییر دهید.
Sub Process_Globals
Private client As OkHttpClient
End Sub
Sub Globals
End Sub
Sub Activity_Create(FirstTime As Boolean)
If FirstTime Then
InitClientWithPinning
End If
Dim req As OkHttpRequest
req.Initialize("job", "https://yourdomain.com")
Dim job As OkHttpJob
job.Initialize("job", Me)
job.client = client
job.Download2("https://yourdomain.com", Null)
End Sub
Sub InitClientWithPinning
Dim jo As JavaObject
jo.InitializeNewInstance("okhttp3.CertificatePinner$Builder", Null)
jo = jo.RunMethod("add", Array("yourdomain.com", "sha256/AbCdEfGhIjK...=="))
Dim pinner As JavaObject = jo.RunMethod("build", Null)
Dim okClientBuilder As JavaObject
okClientBuilder.InitializeNewInstance("okhttp3.OkHttpClient$Builder", Null)
okClientBuilder.RunMethod("certificatePinner", Array(pinner))
Dim okClient As JavaObject = okClientBuilder.RunMethod("build", Null)
client.InitializeAcceptAll
Dim joClient As JavaObject = client
joClient.SetField("client", okClient)
End Sub
🔥 نکات مهم:
این کد فقط درخواستهایی که از job.client = client استفاده میکنن رو pin میکنه.
آدرس "yourdomain.com" باید دقیق باشه (مثل: api.yourapp.com)
پینها ممکنه expire بشن؛ برای همین همیشه باید بدونی کی گواهی عوض میشه.