ব্যাশ শেল সহ কীভাবে একটি বৈধ র্যান্ডম ম্যাক ঠিকানা তৈরি করা যায়


17

আমি কীভাবে ব্যাশের সাথে একটি বৈধ র্যান্ডম ম্যাক ঠিকানা তৈরি করতে পারি।

অ্যাড্রেসের প্রথমার্ধটি সর্বদা এই জাতীয় থাকে

00-60-2F-xx-xx-xx

শুধু এক্স মান এলোমেলোভাবে উত্পন্ন করা উচিত?


10
echo -n 00-60-2F; dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e '/1 "-%02X"'
আর্টিস্টেক্স

1
@artistoex এটি সুন্দর ছিল ... আপনি উত্তর হিসাবে পোস্ট করেন নি কেন?
বোবমাগু

উত্তর:


18

এখানে একটি মাছ আছে।

এই শেল স্ক্রিপ্টটি আপনি খুঁজছেন এমন এলোমেলো স্ট্রিং উত্পন্ন করবে:

#!/bin/bash
hexchars="0123456789ABCDEF"
end=$( for i in {1..6} ; do echo -n ${hexchars:$(( $RANDOM % 16 )):1} ; done | sed -e 's/\(..\)/-\1/g' )
echo 00-60-2F$end

আমার এখানে কিছু ছিল যা এটি দেখিয়েছিল কীভাবে এটি কমান্ড লাইন থেকে চালানো যায়, তবে ডেনিস উইলিয়ামসনকে বিস্মৃত (তবে উন্নত) সমাধানের পরে দেখলাম যে লোকেরা যে উত্তর প্রত্যাশা করে সেটাই সেখানকার যেখানে তাদের কোনও কাজ করতে হবে না is নিজেদের.


একটি সমাধান চামচ খাওয়ানোর পরিবর্তে আমি তাকে মাছ
শিখিয়ে

1
আপনি সর্বদা আপনার উত্তরটি ব্যাখ্যা করতে পারতেন যাতে আপনি দুজনেই এবার তাকে কীভাবে মাছ ধরতে শেখাচ্ছেন পাশাপাশি এই মুহুর্তে ...
জেড ড্যানিয়েল

এই স্ক্রিপ্টটি hbdgaf দ্বারা প্রস্তাবিত চেয়ে অনেক দ্রুত গতিতে চলে এবং 1000 বার লুপে কোনও অবৈধ MAC ঠিকানা উত্পন্ন করে না। ধন্যবাদ!
ব্রুনো ফিঙ্গার

1
আপনার সমাধানটি কাজ করে এবং কেবল 3 টি লাইন রয়েছে। আমি বিক্রি হয়েছি।
রিচার্ড গমেস

17

অতীতে আমি এটি ব্যবহার করে করেছি:

echo 00-60-2F-$[RANDOM%10]$[RANDOM%10]-$[RANDOM%10]$[RANDOM%10]-$[RANDOM%10]$[RANDOM%10]

তবে এটি কেবল তাদের 0-9 সীমার মধ্যে তৈরি করবে। আমার উদ্দেশ্যে, এটি যথেষ্ট ভাল ছিল।

সম্ভবত একটি ভাল সমাধান হ'ল প্রিন্টফ ব্যবহার করা:

printf '00-60-2F-%02X-%02X-%02X\n' $[RANDOM%256] $[RANDOM%256] $[RANDOM%256]

এটি কীভাবে কাজ করে তা এখানে:

  • প্রিন্টফ প্রোগ্রামটি সি "প্রিন্টফ" ফাংশনের উপর ভিত্তি করে তৈরি হয়, যা প্রথম প্যারামিটার হিসাবে একটি "ফর্ম্যাট স্ট্রিং" নেয় এবং তারপরে অতিরিক্ত পরামিতিগুলি বিন্যাসের স্ট্রিং পূরণ করে।
  • ফর্ম্যাট স্ট্রিংয়ের% একটি "ফর্ম্যাট স্পেসিফায়ার" উপস্থাপন করে যা আর্গুমেন্টগুলি কীভাবে বিন্যাস করতে হয় সে সম্পর্কে এক বা একাধিক অক্ষর হতে পারে।
  • ফর্ম্যাট স্পেসিফায়ারে একটি শীর্ষস্থানীয় শূন্য (0) এর অর্থ হ'ল ফলস্বরূপ সংখ্যার আউটপুট নির্দিষ্ট প্রস্থ পর্যন্ত শীর্ষস্থানীয় শূন্যগুলির সাথে প্যাড করা উচিত।
  • 2 বলছে যে স্পেসিফায়ারটি প্রস্থের দুটি অক্ষর গ্রহণ করে প্রদর্শিত হবে।
  • এক্স নির্দিষ্টকারীটি শেষ করে এবং বোঝায় যে এটি একটি সংখ্যা হিসাবে ব্যাখ্যা করা উচিত এবং হেক্সিডেসিমাল হিসাবে প্রদর্শিত হবে। কারণ এটি বড় হাতের অক্ষর, অক্ষরগুলি আফের ক্ষেত্রে হওয়া উচিত।
  • \ N একটি নতুন লাইন - প্রিন্টফ ব্যাকস্ল্যাশটিকে একটি এস্কেপ কোড হিসাবে ব্যাখ্যা করে যা অন্যান্য অক্ষরগুলি প্রদর্শন করতে ব্যবহৃত হতে পারে, প্রায়শই নিউলাইনের মতো জটিল চরিত্রগুলি।
  • ফর্ম্যাট স্পেসিফায়ার বাকী অক্ষরগুলি অক্ষরে অক্ষরে মুদ্রিত হয়, এটি প্রাথমিক "00-06-2F-" এবং ফর্ম্যাট স্পেসিফায়ারদের মধ্যে ড্যাশগুলি অন্তর্ভুক্ত করে।
  • বাকী আর্গুমেন্টগুলি হ'ল শেল পরিবর্তনশীল বিকল্প ($ দ্বারা চিহ্নিত) এবং একটি গণিতের অভিব্যক্তি অন্তর্ভুক্ত যা একটি এলোমেলো সংখ্যা (র‌্যান্ডোম) মডিউল 256 This এটি 0 এবং 255 এর মধ্যে একটি এলোমেলো সংখ্যার ফলাফল করে।

2
ব্যবহারকারী হিসাবে 808033 যথাযথভাবে একটি উত্তরে নির্দেশ করেছে (যা এখন চলে যেতে পারে): %02Xএকটি বড় হাতের অক্ষর দেবে।
আরজান

আহ, ভাল কথা। আমি ফাঁক করে দিয়েছি যে মূল প্রশ্নটি আপার কেস ব্যবহার করে একটি উদাহরণ দেয়। স্বাগত জন্য ধন্যবাদ। :-)
শান রিফশনিডার

কী হচ্ছে এবং আপনার সমাধান কেন কাজ করে তা ব্যাখ্যা করতে পারলে অতিরিক্ত +1।
জেড ড্যানিয়েলস

আপনি সেখানে যান, জিড।
শান রিফশনিডার

17
  1. এর মতো উপযুক্ত আকারের আকার তৈরি করুন: http://tldp.org/LDP/abs/html/randomvar.html
  2. হেক্সে তেমন রূপান্তর করুন: http://snipplr.com/view/2428/convert-from-int-to-hex/
  3. এলোমেলোভাবে উত্পন্ন তিনটি অংশের মধ্যে ড্যাশগুলি যুক্ত করুন
#!/bin/bash
RANGE=255
#set integer ceiling

number=$RANDOM
numbera=$RANDOM
numberb=$RANDOM
#generate random numbers

let "number %= $RANGE"
let "numbera %= $RANGE"
let "numberb %= $RANGE"
#ensure they are less than ceiling

octets='00-60-2F'
#set mac stem

octeta=`echo "obase=16;$number" | bc`
octetb=`echo "obase=16;$numbera" | bc`
octetc=`echo "obase=16;$numberb" | bc`
#use a command line tool to change int to hex(bc is pretty standard)
#they're not really octets.  just sections.

macadd="${octets}-${octeta}-${octetb}-${octetc}"
#concatenate values and add dashes

echo $macadd
#echo result to screen
#note: does not generate a leading zero on single character sections.  easily remediedm but that's an exercise for you

বা অজগরে:

from random import randint
def gen_mac_char():
  return hex((randint(0,16))).split('x')[1]
def gen_mac_pair():
  return ''.join([gen_mac_char(), gen_mac_char()])
def gen_last_half_mac(stem):
  return '-'.join([stem, gen_mac_pair(), gen_mac_pair(), gen_mac_pair()])
print(gen_last_half_mac('00-60-2F'))

নোট করুন যে অজগর সংস্করণটি হেক্স চর তৈরি করতে কেবল 16 টি প্রশস্ত ক্ষেত্র ব্যবহার করে, তাই আপনাকে শূন্য প্যাডিংয়ের বিষয়ে চিন্তা করতে হবে না - কোনও মন্তব্যকে সম্বোধন করার জন্য সংশোধিত পদ্ধতি approach


অতিরিক্ত প্রতিটি +1 যদি আপনি প্রত্যেকটির উদাহরণ সরবরাহ করেন (আমি জানি আপনি কীভাবে তাকে মাছ ধরতে শেখাচ্ছেন, তবে আপনি ধাঁধাটির টুকরোগুলি একসাথে রাখতে এবং তারা কীভাবে / কেন কাজ করে তা ব্যাখ্যা করতে পারেন)।
জেড ড্যানিয়েলস

@ জেড ড্যানিয়েলস - সম্পন্ন এবং সম্পন্ন কোড সরবরাহ করা হয়েছে।
রোবটহুমানস

এই কোডটি আমার জন্য কয়েকটি অবৈধ ম্যাক তৈরি করছে। এটা 1000 গুণ Looping আমি কয়েক Macs- এর পেয়েছিলাম 00-60-2F-8B-5-2C, 00-60-2F-A-71-97, 00-60-2F-82-F1-4
ব্রুনো ফিঙ্গার

ওপি বাশার উপর জোর দিচ্ছিল এটি কেবল আমি সেখানে ফেলেছিলাম। আপনি বলছেন যে শূন্যের সাথে একক অঙ্কগুলি কীভাবে প্যাড করবেন তা আপনি বুঝতে পারবেন না? @ ব্রুনোফিংগার
রোবটহুমানস

255 এর পরিবর্তে 16 ব্যবহার করতে এবং শূন্য স্থানধারক তৈরি করতে সহজেই আবার কাজ করা যেতে পারে। এটি কেবল আরও লাইন ...
রোবটহুমানস

12

স্ট্যান্ডার্ড সরঞ্জাম ব্যবহার করে

# output in capitals
hexdump -n3 -e'/3 "00-60-2F" 3/1 "-%02X"' /dev/random

অথবা

# output in lower case letters
echo 00-60-2f$(od -txC -An -N3 /dev/random|tr \  -)

সবার মধ্যে সংক্ষিপ্ততম হতে পারে।


আপনার উত্তরটিতে বর্ণনা করতে পারবেন ঠিক কী ঘটে? এটি অন্যান্য উপায়েও এটি ব্যবহার করতে সহায়তা করবে!
ব্রুনো বিয়েরি

7
#!/bin/bash
LC_CTYPE=C
MAC=00-60-2F
for i in {1..3}
do
    IFS= read -d '' -r -n 1 char < /dev/urandom
    MAC+=$(printf -- '-%02x\n' "'$char")
done
printf '%s\n' "$MAC"

এটি যেভাবে কাজ করে তার কীগুলি:

  • LC_CTYPE=C - অক্ষর> 0x7F অনুমতি দেয়
  • IFS=- \t(ট্যাব), \n(নিউলাইন) এবং স্পেসের ব্যাখ্যা অক্ষম করে
  • -d ''- নতুন লাইনের অনুমতি দেয়
  • -rঅনুমতি দেয় \(এবং প্রায়শই সর্বদা এর সাথে অভ্যাস দ্বারা ব্যবহার করা উচিত read)
  • ফর্ম্যাট স্পেসিফায়ার -%02x\nআউটপুটকে আক্ষরিক হাইফেনের কারণ হিসাবে যদি যথাযথ হয় তবে শীর্ষস্থানীয় শূন্য সহ একটি দুই-অঙ্কের হেক্সাডেসিমাল সংখ্যা অনুসরণ করে। নিউলাইনটি এখানে অতিরিক্ত অতিরিক্ত এবং এটি বাদ দেওয়া যেতে পারে।
  • readএকটি একক বাইট (পায় -n 1) থেকে /dev/urandomপরিসীমা 0 255 থেকে (ইন 00করার FF)।
  • printfলুপের সর্বশেষ আর্গুমেন্টের একক উদ্ধৃতিটি অক্ষরের আউটপুট হওয়ার কারণ হিসাবে এটির সংখ্যাসূচক মান হয় ("এ" আউটপুট "65" হিসাবে হয়)। যেখানে বলা হয়েছে তার জন্য পসিক্স স্পেসিফিকেশনprintf দেখুন :

    শীর্ষস্থানীয় অক্ষরটি যদি একক-উদ্ধৃতি বা ডাবল-উদ্ধৃতি হয় তবে মানটি একক-উদ্ধৃতি বা ডাবল-উদ্ধৃতি অনুসরণ করে অক্ষরের অন্তর্নিহিত কোডসেটের সংখ্যাসূচক মান হবে।


IFS= read …09 0a এবং 20 (স্বাভাবিক আইএফএস চরগুলি) 00 এ ভাঁজ করা এড়ানো দরকার বলে মনে হচ্ছে
ক্রিস জনসন

@ ক্রিস: দুঃখিত, কিছুটা ডাবল চেকিং করার সময় আমি কয়েকটি জিনিস বের করে এনে আবার রেখে দিতে ভুলে গেছি It এটিরও দরকার -d ''। আমি আমার উত্তর ঠিক করব। আমাকে জানতে দেওয়ার জন্য ধন্যবাদ।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

ওফফ, -rযে সুরক্ষা দেয় তা পড়ে গেল। আমি চাই শেল প্রোগ্রামগুলিতে বাইনারি ডেটা সঠিকভাবে পরিচালনা করা এত স্পষ্টভাবে না হয় was 00 স্ট্রিংয়ের মাঝখানে সঠিকভাবে প্রতিনিধিত্ব করা অসম্ভব বলে মনে হচ্ছে। সুবিধাজনক (পরিকল্পিত?) মধ্যে সহযোগিতার শক্তি কর্মদক্ষতার দ্বারা তোমার একক-অক্ষর-এ-এ-সময় পদ্ধতি হ্যান্ডলগুলি 00 read, স্ট্রিং ক্ষেপক এবং কিভাবে printfএকইরূপে এক-অক্ষর যুক্তি '। দীর্ঘশ্বাস.
ক্রিস জনসন 21

@ ক্রিস: আমি আশা করি আমার ডিডব্লিউআইএম ​​প্রসেসর ফ্রিজের সাথে না ছিল। যাইহোক, আপনি লিখতে পারেন এমন একটি খাঁটি বাশ লিপি দেখতে আগ্রহী হতে পারে যা এর মূল কার্যকারিতাটিকে নকল করে hexdump -C
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

কী হচ্ছে এবং আপনার সমাধান কেন কাজ করে তা ব্যাখ্যা করতে পারলে অতিরিক্ত +1।
জেড ড্যানিয়েলস

7

আমি সবচেয়ে সংক্ষিপ্ততম উপায়ে আসতে পারি হেক্সডাম্প সরাসরি ব্যবহার করা using

echo 00-60-2f$(hexdump -n3 -e '/1 "-%02X"' /dev/random)
  • -n3 হেক্সডাম্পকে তিনটি বাইট পড়তে বলে
  • ফর্ম্যাট স্ট্রিংটি প্রতিটি বাইটের জন্য একটি ড্যাশ এবং একটি দুটি অঙ্কের হেক্স মান প্রিন্ট করে
    • '/ 1' অর্থ প্রতিটি পঠিত বাইটের জন্য বিন্যাস প্রয়োগ করুন
    • "-% 02 এক্স" একটি শীর্ষস্থানীয় শূন্য, দুই অঙ্কের, উচ্চতর ক্ষেত্রে হেক্স মান মুদ্রণের জন্য একটি প্রিন্টফ স্পেস
  • / dev / এলোমেলো একটি উত্স র্যান্ডম বাইট

জিএনইউ / লিনাক্সে পরীক্ষিত


কর্মক্ষেত্রে ইউনিক্স কার্যকারিতা :-)
আর্টিস্টেক্স

hexdump -n3 -e'/3 "00-60-2F" 3/1 "-%02X"' /dev/randomসামান্য খাটো :-)
আর্টিসটেক্স 'ই

4

আরেকটি এক লাইন সমাধান

$ echo '00 60 2f'$(od -An -N3 -t xC /dev/urandom) | sed -e 's/ /-/g'

উপরের ক্ষেত্রে একই জিনিস

$ echo '00 60 2f'$(od -An -N3 -t xC /dev/urandom) | sed -e 's/ /-/g' | tr '[:lower:]' '[:upper:]'

এটি বাশ এনভায়রনমেন্ট ভেরিয়েবলের জন্য তৈরি করুন

$ export MAC=$(echo '00 60 2f'$(od -An -N3 -t xC /dev/urandom) | sed -e 's/ /-/g')
$ echo $MAC

বিবরণ:

  • ওড (অষ্টক ডাম্প)

    -Anআউটপুট এর নেতৃস্থানীয় ঠিকানা উপস্থাপনা (অতিরিক্ত শব্দ) দমন করে।
    -N3আউটপুটটি তিন বাইটে সীমাবদ্ধ করুন।
    -t xCহেক্স আউটপুট, ASCII অক্ষর শৈলী, পছন্দসই হিসাবে।
    /dev/urandomলিনাক্স কার্নেলের এলোমেলো সংখ্যা সিউডো-ফাইল।

  • হাইফেন প্রতিস্থাপনের জন্য স্থান (স্ট্রিম এডিটর)।

    -e <SCRIPT> সেড স্ক্রিপ্টটি কার্যকর করুন।

  • ত্রি (স্ট্রিং অনুবাদ) exampleচ্ছিক, এই উদাহরণে। আমি আমার স্ক্রিপ্ট / পরিবেশে আপার কেস ম্যাকের ঠিকানাগুলি পছন্দ করি।


2
#!/bin/bash
#Creates an array containing all hexadecimal characters
HEX=(a b c d e f 0 1 2 3 4 5 6 7 8 9)
#Defines MAC string length as 0 (total SL will be 17)
SL=0
#Loop sequentially assigns random hex characters in pairs until a full
#MAC address is generated.
while [ $SL -lt 17 ]
do
        num=`shuf -i 0-15 -n 1` #Generates random number which will be used as array index
        RMAC="$RMAC""${HEX[$num]}" #Uses the randomly generated number to select a hex character
        num=`shuf -i 0-15 -n 1` #New random number
        RMAC="$RMAC""${HEX[$num]}" #Appends second hex character
        SL=$[`echo $RMAC | wc -c` - 1] #Calculates SL and stores in var SL
    if [ $SL -lt 17 ] #If string is uncomplete, appends : character
            then
            RMAC=""$RMAC":"
    fi
done
echo $RMAC #Displays randomly generated MAC address



0

এটি এক হিসাবে কাজ করে। প্রয়োজনীয় হিসাবে আউটপুট সমস্ত উচ্চ ক্ষেত্রে হয়।

openssl rand -hex 3 | sed 's/\(..\)\(..\)\(..\)/00-60-2F-\1-\2-\3/' | tr [a-f] [A-F]

0

এটি ক্লাসিক শেল ( #!/bin/sh) স্ক্রিপ্টে কাজ করে:

random_mac() {
    printf '%.2x\n' "$(shuf -i 0-281474976710655 -n 1)" | sed -r 's/(..)/\1:/g' | cut -d: -f -6
}

অথবা, আপনি যদি কাস্টম উপসর্গ রাখতে চান:

random_mac_with_prefix() {
    echo -n "00:60:2f:" &&
    printf '%.2x\n' "$(shuf -i 0-281474976710655 -n 1)" | sed -r 's/(..)/\1:/g' | cut -d: -f -3
}

ব্যবহারের উদাহরণ:

$ random_mac
96:ef:45:28:45:25
$ random_mac
7e:47:26:ae:ab:d4
$ random_mac_with_prefix 
00:60:2f:24:f4:18
$ random_mac_with_prefix 
00:60:2f:63:08:b2

0

অন্য বিকল্পটি হ'ল jot:

echo 00-60-2F-$(jot -w%02X -s- -r 3 0 256)

-wফর্ম্যাট -sপরিবর্তন করে, বিভাজক পরিবর্তন করে এবং -rএলোমেলো সংখ্যা উত্পন্ন করে।

odআর্টিস্টোেক্স এবং জিরো 2 সিএক্স পোস্ট করা উত্তরের সাহায্যে কমান্ডগুলি ওএস এক্স এর সাহায্যে আউটপুটে অতিরিক্ত ড্যাশ যুক্ত করে od, তবে এটি এতে করে না:

echo 00-60-2f-$(od -tx1 -An -N3 /dev/random|awk '$1=$1'|tr \  -)

ওএস এক্স এর od( /usr/bin/odনীচে) জিএনইউ থেকে আলাদা আউটপুট ফর্ম্যাট ব্যবহার করে od:

$ /usr/bin/od -N3 -tx1 -An /dev/random|tr ' ' -
-----------c7--fd--55----------------------------------------------------

$ god -N3 -tx1 -An /dev/random|tr ' ' -
-94-9e-5c

1
জট থেকে সাবধান। আমি কিছু ম্যাক এইভাবে উত্পাদিত করেছি যার মধ্যে "100" রয়েছে, যেমন 00-60-2F-100-A3-F6 ...
পেট্রস

@ পেট্রুস আপনি ঠিক বলেছেন, আমি উত্তরটি পরিবর্তিত jot -w%02X -s- -r 3 1 256করে সম্পাদনা করেছি jot -w%02X -s- -r 3 0 256
নিসেতামা

0

লিনাক্সে:

printf '00-60-2f-' && cut -b 7-11,24-26 /proc/sys/kernel/random/uuid

ব্যাখ্যা:

লিনাক্সে আপনি যখনই এটি পড়েন ততবার/proc/sys/kernel/random/uuid একটি নতুন টাইপ 4 (এলোমেলো) ইউইউডি ফেরত দেয়। এর বেশিরভাগ অক্ষর হ'ল (ছদ্ম) এলোমেলো হেক্সাডেসিমাল অঙ্ক, সুতরাং আমরা সেগুলি ব্যবহার করতে পারি। উদাহরণ:

$ cat /proc/sys/kernel/random/uuid
5501ab12-b530-4db5-a8ea-3df93043f172
$ #           ^    ^       Beware, these characters are not random.
$ #   ^^^^^            ^^^ Let's use characters on these positions.
$ cut -b 7-11,24-26 /proc/sys/kernel/random/uuid
6d-74-a1
$ cut -b 7-11,24-26 /proc/sys/kernel/random/uuid
13-f9-75

এখন এটি 00-60-2f-প্রথমে (নিউলাইন ছাড়াই) মুদ্রণের জন্য যথেষ্ট :

$ printf '00-60-2f-' && cut -b 7-11,24-26 /proc/sys/kernel/random/uuid
00-60-2f-86-f9-21

পেশাদাররা:

  • প্রথম থেকেই হেক্সাডেসিমাল ডিজিট, কোনও রূপান্তর / ফিল্টারিংয়ের প্রয়োজন নেই;
  • printf এবং cut পসিএক্স সরঞ্জামগুলি;
  • (আপনার নির্দিষ্ট ক্ষেত্রে) হাইফেনগুলি ইতিমধ্যে ইউইউডি-তে রয়েছে, আমরা সেগুলি ব্যবহার করি।

কনস:

  • আমাদের ইউইউডিতে দুটি নন-এলোমেলো অঙ্ক মনে করা দরকার;
  • /proc/sys/kernel/random/uuid কিছু সিস্টেমে উপলব্ধ নাও হতে পারে;
  • কেবল ছোট হাতের অক্ষরগুলি এত সহজে আসে (বড় হাতের অক্ষর পাওয়ার জন্য আপনার অতিরিক্ত পদক্ষেপের প্রয়োজন হয়)।

0

একটি লাইনার (ব্যাশ)

mac=$(c=0;until [ $c -eq "6" ];do printf ":%02X" $(( $RANDOM % 256 ));let c=c+1;done|sed s/://)

ফলাফল

$ echo $mac
93:72:71:0B:9E:89
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.