Categories
PHP Windows

How to fix moodle Installation error of Nginx in windows

Moodle (Modular Object-Oriented Dynamic Learning Environment) is a free and open-source LMS (learning management system) written in PHP and distributed under the GPL License.

As a Windows user, I prefer to use Laragon as a powerful universal development environment for PHP. And for the server, I always go for Nginx.

Do you ever face any setup errors during the installation process of moodle in the Nginx server?

There are several solutions to fix it but we try to follow the best practice.

Slash arguments error of Nginx in Moodle installation process

This is usually happened because ‘slash arguments’ compatible ‘location’ block to your vhosts ‘server’ in your Nginx configuration.

We have the default Nginx configuration file below

server {
    listen 8080;
    listen 8443 ssl;
    server_name moodle.test *.moodle.test;
    root "D:/moodle";
    
    index index.html index.htm index.php;
 
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
		autoindex on;
    }
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass php_upstream;		
        #fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    # Enable SSL
    ssl_certificate "E:/laragon/etc/ssl/laragon.crt";
    ssl_certificate_key "E:/laragon/etc/ssl/laragon.key";
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;
	
	
    charset utf-8;
	
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    location ~ /\.ht {
        deny all;
    }
}

# This file is auto-generated.
# If you want Laragon to respect your changes, just remove the [auto.] prefix

Just replace the red location block with the new location block

location ~ [^/]\.php(/|$) {
fastcgi_split_path_info  ^(.+\.php)(/.+)$;
fastcgi_index            index.php;
fastcgi_pass             php_upstream;
include                  fastcgi_params;
fastcgi_param   PATH_INFO       $fastcgi_path_info;
fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Reload the previous Installation page. I think It should be fixed now.

Happy Coding 😃

Categories
About Me

রিভার্স ইঞ্জিনিয়ারিং এবং আমার পথচলা – ১

আজ থেকে ১২/১৫ বছর আগের কথা। তখন মোবাইল ইন্টারনেট সহজলভ্য ছিল না। ইন্টারনেট মানে এক আশ্চর্যের বিষয়। বন্ধুদের মধ্যে যার মোবাইলে ইন্টারনেট সংযোগ থাকতো বিকেলে সবাই মিলে খেলা বাদ দিয়ে তাকে ঘিরে ধরতাম ইন্টারনেট ব্রাউজিং দেখার জন্য।

৯০ এর দশকে যাদের জন্ম তারা জানবেন মিগ৩৩(Mig33) নামে একটি মোবাইল চ্যাট অ্যাপ ছিল। ২০০৫ সালে এর যাত্রা শুরু হয়। তখন মূলত জাভা ফোন এ অ্যাপ চলতো এবং এটি বেশ জনপ্রিয় ছিল। রুম, গ্রুপ চ্যাট এর ফিচার ছিল। রুম চ্যাট এ কোন ইউজারকে কিক দিয়ে রুম থেকে বের করা যেত।

এই ফিচারকে কাজে লাগিয়ে অনেক থার্ড পার্টি ডেক্সটপ সফটওয়্যার তৈরি হতো। যেসকল সফটওয়্যার দিয়ে ইচ্ছে করলে কিক দিয়ে ১/২ সেকেন্ডের মধ্যে পুরো রুম খালি করে দেয়া যেত। একবার কিক খেলে ২০ মিনিট সেই রুমে প্রবেশ করা যেত না।

রুম কিক তখন এক আতংকের নাম। যার ডেক্সটপ কম্পিউটার ছিল তারা বিভিন্ন সফটওয়্যার ব্যবহার করে এই কাজটি করতো।

২০০৩ সালে আমার প্রথম কম্পিউটার পরিচিতি। আমার বাবা একজন প্রজুক্তিপ্রেমি। তার এই আগ্রহের কারনেই আমি আজ এ পর্যায়ে আসতে পেরেছি। আমার বাসায় যখন প্রথম কম্পিউটার আনলো তখন আশেপাশের ২/১ মহল্লায় হাতেগোনা ৪/৫ টা কম্পিউটার হবে।

উচ্চমাধ্যমিক পরীক্ষার পর থেকেই অনেক ইচ্ছে ছিল কম্পিউটার সায়েন্স এ পড়ালেখা করবো কিন্তু পাবলিক কোন বিশ্ববিদ্যালয়ে সেই সাবজেক্ট পাওয়ার মত মেধাতালিকায় স্থান করে নিতে পারিনি। আর প্রাইভেট বিশ্ববিদ্যালয়েতো অসাধ্য।

২০০৯ সালে মার্চ মাসে ভার্সিটি ভর্তির পর নতুন একটি ল্যাপটপ কিনি। তখন ও মিগ তুমুল জনপ্রিয় অ্যাপ। বিভিন্ন ওয়েবসাইট/ফোরাম থেকে সফটওয়্যার ডাউনলোড করে আমিও নিয়মিত মিগ৩৩ রুম এ কিকা কিকি করি। যারা এটা করেছেন একমাত্র তারাই বুজবেন কি পরিমান আনন্দদায়ক ছিল এটা।

মিগ৩৩ এ এক বড় ভাই এর সাথে পরিচয় ছিল যিনি এই সফটওয়্যার তৈরি করতেন। তখন এসব ডেক্সটপ সফটওয়্যার তৈরির জন্য মাইক্রোসফট এর VB6 ব্যবহার হতো। আমি মাঝে মাঝেই তার কাছ থেকে চেয়ে সফটওয়্যার ব্যবহার করতাম। ডেভ্লপাররা এই সফটওয়্যার বিক্রি করতো। সেই বড় ভাই ও বিক্রি করতো। তার সাথে আমার ভালোই সম্পর্ক ছিল। সে হিসেবে তিনি আমাকে মাঝে মাঝেই তার সফটওয়্যার দিতেন ব্যবহার করার জন্য। তো একবার তিনি একটি নতুন সফটওয়্যার তৈরি করে পাবলিশ করলেন এবং যথারীতি আমি তার কাছে সফটওয়্যার চাইলাম ব্যবহার করার জন্য। কিন্তু এবার তিনি কি মনে করে আমাকে না করে দিলেন। তার এই না করা আমার ইগোতে প্রচণ্ড আঘাত করলো।

জেদের বসেই নিজেই ঘাটাঘাটি করতে লাগলাম। তখন ইউটিউব এ এত রিসোর্স ছিলনা। অনেকেই ফোরাম ব্যবহার করেছেন। শেখার জন্য একমাত্র মাধ্যম ছিল ফোরাম। সেরকম কিছু ফোরাম থেকেই আমার প্রোগ্রামিং এর হাতেখড়ি।

জানিনা আমার কি হয়েছিল। শুধু ঘুম, নামাজ এর খাওয়া বাদে ১৪/১৬ ঘণ্টার দীর্ঘ ১ মাসের চেষ্টার পর আমি মিগ৩৩ সকেট ডাটা ক্যাপচার করে লগিন বট বানাতে সক্ষম হই। জাভা অ্যাপ ডাটা ক্যাপচার এর জন্য ডেক্সটপ কম্পিউটার এ SJBoy ইমুলেটর WepPro ব্যবহার হতো। এসব ডাটা আন্যলাইসিস করে উইনসক(Winsock) দিয়ে লগিন হ্যাশ বাইপাস করে একটি ডেক্সটপ সফটওয়্যার তৈরি করা ভালই ঝক্কি ঝামেলার কাজ ছিল। যদিও প্রথমদিকের ২/১ জন ডেভ্লপার লগিন হ্যাশ বাইপাস ওপেন সোর্স করে দিয়েছিলেন। ২০০৯ সালের ডিসেম্বর মাসে আমি আমার প্রথম মিগ৩৩ কিক সফটওয়্যার (F3r0cius F1ght3r) এর প্রথম ভার্সন লিরিজ করি।

আলহামদুলিল্লাহ্‌। এরপর থেকে মিগ৩৩ সম্পর্কিত যখন যে সফটওয়্যার লাগতো নিজেই বানাতাম। আর কারো কাছে সফটওয়্যার এর জন্য ধর্না দিতে হয়নি।

বিভিন্ন ধরনের নেটওয়ার্ক স্নিফার দিয়ে ডাটা ক্যপাচার করে সেই ডাটা প্রসেস করে সঠিক ওয়েতে সার্ভারে পাঠানো আসলেই কঠিন কাজ। এই কাজের কারনে কখনোই কোন ধরনের এ পি আই (API) নিয়ে কাজ করতে আমার অসুবিধা হয়নি। এটা যে রিভার্স ইঞ্জিনিয়ারিং এর একটি পার্ট সেটা অনেক পরে জানতে পেরেছি। এভাবেই রিভার্স ইঞ্জিনিয়ারিং দিয়েই আমার প্রোগ্রামিং এর পথচলা।

HSC পরীক্ষার পর থেকেই কম্পিউটার সাইন্স এ পড়ার আগ্রহ জন্মায়। কিন্তু পাবলিক বিশ্ববিদ্যালয় চান্স পাওয়া কত কঠিন তা কেমবলমাত্র বিশ্ববিদ্যালয় এ অধ্যায়নরত শিক্ষার্থীরাই জানে। অনেক চেষ্টার পর কোন পাবলিক বিশ্ববিদ্যালয় এ কম্পিউটার সাইন্স এ পড়ার সুযোগ হয়নি। মধ্যবিত্ত পরিবারেই আমার বেড়ে ওঠা। বেসরকারি বিশ্ববিদ্যালয় এ পড়ালেখা করাও কঠিন। শেষ পর্যন্ত নিয়তিকেই মেনে নিলাম। আমার বাবা একজন রসায়নবিদ। তার ইচ্ছার কথা ভেবেই জাগন্নাথ বিশ্ববিদ্যালয় এ রসায়ন বিভাগে ভর্তি হলাম।

রসায়নের নাকি অনেক রস। কিন্তু আমি সেরকম কিছুই খুজে পেলাম না। ক্লাস এ বসে থাকলেও আমার মন থাকতো কম্পিউটার স্ক্রীন এ। কি আর করার কোনরকম TTP তে গ্রাজুয়েশন কমপ্লিট করলাম। TTP মানে টেনেটুনে পাস। এই সাথে আমার প্রোগ্রামিং এর পড়ালেখা থেমে নেই। নিজে নিজেই ঘেঁটে ঘেঁটে নতুন জিনিস শিখেছি। কখন ইউটিউব, কখনো ফোরাম, কখনোবা ব্লগ। এভাবেই অনলাইনে ঘুরে বেড়াতাম নতুন নতুন বিষয় শেখার জন্য।

২০১৪/২০১৫ সালের কথা। ডেক্সটপ এপ তৈরির দক্ষতা বেড়েছে। সেই সাথে ভিন্নতাও এসেছে। তখন ডেক্সটপ বেস ওয়েব অটোমেশন এর অনেক কাজ করেছি। যেমনঃ ইন্ডিয়া এবং মালেসিয়া ভিসা প্রসেসিং, বিভিন্ন সাইট এর রেজিস্ট্রেশান বট। তখন Http Request ওয়েব অটোমেশন টুল Gecko FX, Selenium এর ধারনা পেতে থাকি। সেলেনিয়াম যে ওয়েব টেস্টিং ফ্রেমওয়ার্ক সেটা অনেক পরে জানতে পেরেছি।

এভাবে কাজের প্রয়োজনে বিভিন্ন টেক সম্পর্কে জেনেছি এবং দক্ষতা অর্জন করেছি। ব্যপারটা এরকম না যে, কোথাও আটকে গেছি আর সিনিয়র কে জিজ্ঞেস করেই সমাধান পেয়েছি। আমি যেহেতু CSE ব্যাকগ্রাউন্ড এর না তাই এই রিলেটেড কোন বড় ভাই বা কমুউনিটি পাইনি। কোথাও আটকে গেছি। আলহামদুলিল্লাহ্‌ ৯০ ভাগ নিজেই সমস্যার সমাধান করেছি। আল্লাহ মেহেরবান। তার রহমত ছাড়া এতদূর আসা অসম্ভব।

২০১৬ সালে আমার এক বন্ধুর মাধ্যমে একটা আইটি ফার্ম ওয়েব ডেভ্লপার হিসেবে সিভি পাঠাই। ইন্টারভিউ ডাক পেলাম। ২/৩ টা প্রশ্ন করেছিল। ঠিকমত সবগুলা উত্তর দিতে পারিনি। যাইহোক তখন আমার মাস্টার্স প্রথমবর্ষ পরিক্ষা শেষ। সেই আইটি ফার্মে জয়েন করলাম।

সেখানেই পি এইছ পি তে কাজ শুরু। যদিও ২০১২ সালে প্রথম পি এইছ পি তে প্রথম কাজ করি। আমার ডেক্সটপ সফটওয়্যার অনলাইন অ্যাকটিভেশন ছিল। যে কম্পিউটার এ সফটওয়্যার প্রথমবার চালু হতো তার হার্ডওয়্যার আইডি দিয়ে সার্ভার এ অ্যাক্টিভ করে দিতাম। Raw পি এইছ পি তে সেটা করা ছিল।

পি এইছ পি শেখার পিছনে হান্নান আকবার ভাই এর অবদান অনেক। মূলত মিগ৩৩ থেকেই উনার সাথে পরিচয়। উনিও মিগ৩৩ এর সফটওয়্যার তৈরি করতেন প্রথম দিকে। অনেক রাত জেগে উনি আমাকে শিখিয়েছেন। উনি কখনোই আমাকে ফ্রেমওয়ার্ক এর কথা বলেন নি। বললে হয়তো পি এইছ পি ভালো করে না শিখেই ফ্রেমওয়ার্ক শিখতাম। আমার শিক্ষক। উনার মত লিজেন্ড প্রোগ্রামার খুব কম দেখেছি। মোটামুটি অনেকগুল ল্যাঙ্গুয়েজ নিয়ে উনার ভালো আইডিয়া আছে। অনেক ভালো জায়গা থেকে জবের অফার পেয়েছেন কিন্তু করেন নি। কারন উনি স্বাধীনচেতা এবং লাজুক মানুষ। ঝামেলা পছন্দ করেন না। এখন নিজেই একটি আইটি ফার্ম দিয়েছেন পাকিস্তানে। ও বলাই হয়নি উনি পাকিস্তানের নাগরিক এবং এই ১০ বছরে উনার সাথে কখনোই আমার সামনা সামনি কথা হয়নি এমনকি অডিও কলেও কথা হয়নি। শুধু চ্যাট। এই চ্যাট দিয়েই উনি OOP কনসেপ্ট বুঝিয়েছেন। আমার দেখা একজন লিভিং লিজেন্ড প্রোগ্রামার।

আইটি ফার্ম এ জয়েন করার পর। প্রথম মাসেই আমি প্রোজেক্ট সাবমিট করি যদিও নেয়া হয়েছিল ট্রেনি জুনিয়ন হিসেবে। আলহামদুলিল্লাহ্‌ নিজে নিজেই করেছি সব। Codeigniter ফ্রেমওয়ার্ক এর হাতেখড়ি এখানেই। টানা ২ বছর এটা নিয়ে কাজ করি। ৪/৫ টা প্রোজেক্ট করেছি এ ফ্রেমওয়ার্ক ব্যবহার করে।

২০১৮ এর শেষের দিকে প্রথম লারাভেল এ কাজ করি। যদিও প্রথম ২০১৭ সালে এটার নাম শুনি। প্রথম প্রথম অনেক কষ্ট হয়েছে লারাভেল এর লাইফ সাইকেল বুজতে। কেমন যেন মাথায় চাপ লাগতো কোন কিছু না বুজলে। ধিরে ধিরে ৬ মাস চেষ্টার পর আয়ত্তে আসে।

আমি কিন্তু প্রোগ্রামিং প্রব্লেম সল্ভ এ অনেক কাঁচা কিন্তু তাও কিভাবে যেন প্রব্লেম সল্ভ হয়ে যায়। প্রব্লেম সল্ভ বলতে প্রোগ্রামিং কন্টেস্ট বুজাচ্ছি না একটি অ্যাপলিকেশন এর প্রব্লেম/লজিক বিল্ড আপ বুজাচ্ছি। তবে একটা বিষয় আমার আছে সেটা হচ্ছে যতক্ষন না সল্ভ হবে ততক্ষন আমি ওটাকে ছাড়িনা। সেটা যত দিন লাগুক। এমনো হয়েছে একটা সমস্যা/ইস্যু নিয়ে আমি ৭/১০ দিন কাটিয়েছি। তারপরও হাল ছাড়িনি। হয়তোবা এটাই আমাকে এতটুকু আসতে সবচেয়ে বেশি সাহায্য করেছে।

আমি যে ফার্ম এ ট্রেনি জুনিয়ন হিসেবে যোগদান করেছি সেটা ছিল মূলত একটি “স্টার্ট আপ”। অনেক প্রতিকূল পরিবেশের মধ্যে দিয়ে পার হতে হয়েছে যদিও মেন্টর/সিনিয়র হিসেবে কাউকে পাইনি। যখন যা দরকার হয়েছে নিজে নিজেই শিখে সমাধান করেছি। নতুন কোন চ্যলেঞ্জ আসলে প্রথমে ঘাবড়ে যেতাম কিন্তু আত্মবিশ্বাস থাকার কারনে কোথাও আটকে থাকতে হয়নি। তখন থেকেই ভালো একটা ফার্ম এ যোগদান করার ইচ্ছা জাগে। আমার কলিগদের কাছে ভালো ভালো কিছু প্রতিষ্ঠান এর ওয়ার্ক কালচার সম্পর্কে জানতে পারি এবং সেই থেকেই মনে মনে আমার পরবর্তী টার্গেট নির্ধারণ করি।

প্রথম প্রতিষ্ঠান এর প্রতি সবারই একটা সফট কর্নার কাজ করে। সে কারনেই আমি সবসময় চেয়েছি আমার প্রথম প্রতিষ্ঠান এ থাকতে।

কথায় আছে “প্রতিষ্ঠানকে নয় কাজকে ভালোবাসো কারন প্রতিষ্ঠান তোমাকে যেকোনো সময় বাতিল করে দিতে পারে কিন্তু কর্মদক্ষতা তোমাকে সারাজীবন আগলে রাখবে।

যদিও আমার প্রথম প্রতিষ্ঠান আমাকে বাতিল করে দেয়নি কিন্তু নিজের ক্যরিয়ারের কথা চিন্তা করে আমাকে আরও আগেই নতুন কর্মক্ষেত্রে যাওয়া উচিৎ ছিল।

দীর্ঘ ৬ মাস প্রস্তুতি নেয়ার পর ভালো একটি প্রতিষ্ঠান এ জব অফার পেয়েছি। সেই প্রস্তুতি এবং সবগুলো ভাইবা প্রসেস নিয়ে অন্য একদিন লিখবো।

যদিও এই লেখা অনেক বড় হয়ে যাচ্ছে। এতবড় করে লেখার মূল উদ্দেশ্য হচ্ছে আমার মত যারা NoN CSE ব্যাকগ্রাউন্ড এ আছে কিন্তু সামনে আগানোর সাহস পাচ্ছেন না তারা যেন কোনভাবেই হাল ছেড়ে না দেন। শুধু লেগে থাকুন। NoN CSE এবং কর্মক্ষেত্র আলাদা হওয়ায় আবার বাবা সবসময় চিন্তা করতেন। সবসময় বলতেন CSE স্নাকত্তর ডিগ্রি নেয়ার জন্য। যদিও আমার রসায়নে স্নাকত্তর ডিগ্রি আছে তারপরও ক্যারিয়ার গোল এর জন্য জাহাঙ্গীরনগর বিশ্ববিদ্যালয় থেকে কম্পিউটার সাইন্স এবং ইঞ্জিনিয়ারিং বিভাগে মাস্টার্স চলমান আছে। নিজের চেষ্টায় এখন একটা পর্যায়ে আসতে পেরেছি আলহামদুলিল্লাহ্‌। তাই এখন বাবা আগের মত এতো চিন্তা করেন না।

আজ এখানেই শেষ করছি। আপনাদের কারো কোন জিজ্ঞাসা থাকলে কমেন্টে জানাতে পারেন। আমার সাধ্যমত উত্তর দেয়ার চেষ্টা করবো।

Categories
Programming Design Pattern

DI (Dependency Injection) in PHP

There are a few similar terms in the programming world like HTML injection, SQL injection, etc.

What does DI mean?

Dependency Injection is a design pattern that helps avoid hard-coded dependencies for classes.

Let’s try to make it clear using a simple Shopping Cart Example

<?php

class Car
{
    public function buy()
    {
        return true;
    }
}

class MotorBike
{
    public function buy()
    {
        return true;
    }
}

class Cart
{
    protected $vehicle;
    public function __construct(Car $vehicle)
    {
        $this->vehicle = $vehicle;
    }

    public function proceed()
    {
        return $this->vehicle->buy();
    }
}

$cart = new Cart(new Car());
$cart->proceed();

Suppose, You have an online shop and there are 2 products (Car & MotorBike). So you may write code like the above example.

Is there anything wrong with the above example?

Nothing is wrong here. Everything is fine and workable code to purchase Car.

Question: How can you buy a Motorbike?

Answer: It’s very simple. Just Change the Cart Class __construct() function like below.


    public function __construct(MotorBike $vehicle)
    {
        $this->vehicle = $vehicle;
    }

And Initiate the class like below.


$cart = new Cart(new MotorBike());
$cart->proceed();

It works !!!

But the Cart Class depends on the Car/Motorbike class. You resolved this dependency by changing the Cart class constructor.

It violates the Solid Principle (A philosophy of making OOD object-oriented design) by Robert C. Martin.

S - Single-responsiblity Principle
O - Open-closed Principle
L - Liskov Substitution Principle
I - Interface Segregation Principle
D - Dependency Inversion Principle

He is also known as uncle BOB.

Eventually, it violates the Open-closed Principle. That means you can extend your class but you can’t modify it. But you already did that.

What will happen if we can resolve this dependency automatically? This concept is called Dependency Injection.

Let’s try to inject the Class Dependency to the Cart Class Constructor using the power of OOP.

<?php

interface Vehicle
{
    public function buy();
}

class Car implements Vehicle
{
    public function buy()
    {
        return true;
    }
}

class MotorBike implements Vehicle
{
    public function buy()
    {
        return true;
    }
}

class Cart
{
    protected $vehicle;
    public function __construct(Vehicle $vehicle)
    {
        $this->vehicle = $vehicle;
    }

    public function proceed()
    {
        return $this->vehicle->buy();
    }
}

$cart = new Cart(new MotorBike());
$cart->proceed();

$cart = new Cart(new Car());
$cart->proceed();

Check the example above. You can Add Car/Motorbike without modifying your Cart class.

I made an abstraction Layer (Vehicle) of the Lower Module (Car/Motorbike Class) and Changed the Higher Module (Cart Class) Constructor Parameter type to that Abstraction layer.

All (Higher Module & Lower Module ) depends on Vehicle, not each other.

This is known as DI (Dependency Injection)

Categories
Windows

How to disable password prompts during git push/pull

Firstly, Generate an SSH key into your server/localhost

ssh-keygen -t rsa -b 4096 -C "Your Email Address"

You will Get your .ssh/id_rsa.pub. Copy the Key and Add a Aew SSH Key like the above image.

Now register the key with your Github Username

ssh -i ~/.ssh/id_rsa.pub -T your username@github.com

You are Good to go now.

Copy the SSH link and Run it into your server app directory terminal

git clone git@github.com:takielias/tall.git
That’s it. It’s done withour your github username/password.
Categories
Windows

How to resize thousands of images in multiple folders?

I have been working to migrate an Osclass classified website to Custom made Laravel ad listing E-commerce solution for 2 weeks. It has more than 1,20,000 uncompressed preview and thumbline images that cause the slow page load issue. I was desperately seeking a minimal solution to resize thousands of images in multiple folders.

My OS is windows 10. After few hours of google search, got a few applications that serves my partial requirements but xnview (FREEWARE) an awesome application for bulk image resizing that fulfill my needs.

I need to unchanged the Images folder staructure and keep image extension same as source. I could do this by using this application but an afficient way.

Multiple CPU core Suppor

It has multiple CPU core support that makes it blazing fast image resizing tool.

Load image tab

So, let’s start. You may select single image (Add Files) of multiple folders (Add folder) with images and click Next.

Action Tab

Fix your desired setup and click Next

Output Folder Setup

Don’t forget to check the keep folder structure in order to keep the previous folder structure same as source.

Now click Convert and That’s it !!!

Categories
Windows

Change/Modify environment variables without rebooting windows

  1. Search environment in the search bar

Click Edit the System Environment variables & edit as required

2. Open Command Prompt as Administrator

3. Type set PATH=C & Press Enter (This will refresh the environment variables)

4. Close and restart command prompt window

5. Finally, type echo %PATH% & press Enter

This will automatically Refresh your windows environment variables.

Categories
Reverse engineering

এন্ড্রয়েড অ্যাপ এর ইনকামিং এবং আউটগোয়িং ডাটা পরিক্ষা করার সহজ পদ্ধতি।

আমার প্রোগ্রামিং এর পথ চলা শুরু রিভার্স ইঞ্জিনিয়ারিং দিয়ে। কিন্তু মজার বিষয় হচ্ছে আমি শুরুর দিকে নিজেও জানতাম না এটা রিভার্স ইঞ্জিনিয়ারিং। যাইহোক কথা বাড়িয়ে লাভ নেই আসুন দেখি কিভাবে এন্ড্রয়েড অ্যাপ এর ডাটা পরিক্ষা করা যায়।

যা যা দরকার হবে

  • এন্ড্রয়েড ৫.0/৬.0 (ললিপপ/ মার্সমেলো)। বি দ্রঃ এন্ড্রয়েড এর পরবর্তী ভার্সন গুলতে গুগল ইন্ডিভিজুয়াল এস এস এল সার্টিফিকেট পিনিং এ পারমিসন দিচ্ছে না, সেক্ষেত্রে এনক্রিপ্টেড ডাটা মনিটর করা সম্ভব হয় না।
  • https://goo.gl/aHcxex এই এন্ড্রয়েড অ্যাপ ডাউনলোড করে ইন্সটল করে নিন। এরপর অ্যাপটি চালু করলে নিচের ছবির মত পারমিশন দিতে Request বাটন এ ক্লিক করুন।

পারমিশন

Allow

এরপর Allow করুন।

Certificate

Ok বাটন এ ক্লিক করুন। প্রাথমিক কাজ শেষ এবার SSL Capture অ্যাপটি চালু করেন ডানদিকের উপরে প্লে বাটনটি প্রেস করুন।

start

stop

উপরের ছবিটি খেয়াল করলে বুজতে পারবেন আপনার SSL Capture অ্যাপটি চালু আছে। এবার আপনি
যে এন্ড্রয়েড অ্যাপ এর ইনকামিং এবং আউটগোয়িং ডাটা পরিক্ষা করতে চান সেটি চালু করুন।

capture

দেখুন SSL Capture অ্যাপ এর Capture ট্যাব এ অনেক ডাটা মনিটর হচ্ছে। এবার আসুন আমরা বুঝার চেষ্টা করি কোন ডাটা আমাদের স্মার্টফোন থেকে সার্ভার এ যাচ্ছে এবং কোন ডাটা অ্যাপ এর সার্ভার থেকে আমাদের মোবাইল এ আসছে।

উপরের ডাটা প্যকেটটি খেয়াল করলে দেখতে পাবেন Request Head নামে একটি টাইটেল আছে তারপর POST / দিয়ে শুরু হয়েছে। এর মানে হচ্ছে এই প্যকেটটি আমাদের মোবাইল অ্যাপ থেকে ডাটা সার্ভার এ পাঠাচ্ছে।

অ্যাপটি কি কি ডাটা তাদের সার্ভার পাঠাচ্ছে? উপরের ছবিতে দেখুন Request body নামে একটি টাইটেল আছে এবং এর ভিতরে যা দেখবেন সেটাই সার্ভার এ পাঠানো হচ্ছে।

এবার উপরের ডাটা প্যকেটটি খেয়াল করলে দেখতে পাবেন Request Head এর পরে GET/ দিয়ে শুরু হয়েছে। এর মানে হচ্ছে এই প্যকেটটি সার্ভার থেকে ডাটা আমাদের স্মার্টফোনের অ্যাপ এ পাঠানোর জন্য রিকুয়েস্ট করেছে।

সার্ভার থেকে কি কি ডাটা আমাদের স্মার্টফোন এ আসবে?

উপরের ছবিতে দেখুন Response body নামে একটি টাইটেল আছে এবং এর ভিতরে যা দেখবেন সেটাই সার্ভার থেকে আমাদের স্মার্টফোন এ এসেছে।

কম্পিউটার থেকেও এন্ড্রয়েড অ্যাপ এর ডাটা মনিটর করা যায়। সেটা না হয় অন্য একদিন বলবো।

ভাল থাকুন।

#reverse_engineering

#traffic_sniffer

#data_thief_detector