gpg এমনকি - পাসফ্রেজ সহ পাসওয়ার্ড চাইবে


65

আমি নিম্নলিখিত কমান্ডটি পাসওয়ার্ড না জিজ্ঞাসা করে জিপিজি ফাইলটি বের করার আশা করি:

  gpg --passphrase 1234 file.gpg

তবে এটি পাসওয়ার্ড চেয়েছে। কেন?

এটিরও একই আচরণ রয়েছে:

  gpg --passphrase-file passfile.txt file.gpg

আমি জিনোম 3 সহ উবুন্টু ব্যবহার করি এবং মনে আছে এটি ফেডোরায় কাজ করছিল


1
আপনি কি নিশ্চিতভাবে gpgডান কমান্ডটি চালাচ্ছেন, কোনও উপাধি বা একটি র‍্যাপার নয়? ব্যবহার করে দেখুন /usr/bin/gpg --passphrase 1234 file.gpg, type gpg, gpg --versionএবংset | grep '^.\{0,9\}PG'
এফ Hauri

শুধু রেকর্ডের জন্য, যদি আপনি GPG কি পুরোনো সংস্করণ ব্যবহার করেন, এটা (উবুন্টু কাজ করা উচিত এবং যাইহোক, তারা এটি ব্যবহার নিরুত্সাহিত যেমন, এটা gnupg1 প্যাকেজের যদি না আপনি
Shule

এছাড়াও খেয়াল করুন যে জিপিজি ২.x এ gpg --list-packets --batch myFile.gpgএকটি পাসফ্রেজের জন্য অনুরোধ জানানো হয়েছে, যদিও এটি জিপিজি ১.x-এ নেই while এটি আমার সমস্যা (আমি লিখছি এমন একটি প্রোগ্রামে) ছিলাম, যখন আমি ভেবেছিলাম যে আপনার সমস্যা আছে (- লিস্ট-প্যাকেটগুলি প্রথমে কার্যকর করা হয়েছিল, ডিক্রিপ্ট করার চেষ্টা করার আগে, এবং আমি লক্ষ্য করি না)। সুতরাং, ফাইলগুলি এনক্রিপ্ট করা হয়েছে কিনা তা নির্ধারণ করার জন্য আমি একটি নতুন উপায় তৈরি করেছি।
শুলে

উত্তর:


58

আমি আপনার ঠিক একই নৌকায় আছি (এটি ফেদোরায় কাজ করেছে তবে উবুন্টু নয়)। আমি আবিষ্কার করেছি এর আশেপাশে এখানে একটি আপাত কাজ রয়েছে:

echo your_password | gpg --batch --yes --passphrase-fd 0 your_file.gpg

ব্যাখ্যা: পাসিংয়ের 0কারণে --passphrase-fdকোনও ফাইলের চেয়ে এসটিডিএন থেকে পড়তে হবে। সুতরাং, পাসফ্রেজটি পাইপ করা --passphrase-fdআপনার নির্দিষ্ট পাসওয়ার্ডের স্ট্রিং গ্রহণ করবে ।


16
--batch --yesউপরোক্ত যোগ আমার জন্য কাজ করে।
রায়ান টাক

1
তবে আমি একটি সমস্যা পাই, যদি আমি জিপিজিতে পাইপ করা ডেটা এনক্রিপ্ট করতে চাই, যেমন echo "encrypt me" | gpg --passphrarse "mypw" -c -o test.gpg। আমি কীভাবে এটি সমাধান করব?
কনফ-এফ-

2
ওয়েল, জিপিজি-র উবুন্টু সংস্করণটি কার্যকর echo "encrypt me" | gpg --passphrase "mypassphrase" --batch --quiet --yes --no-use-agent -c -o encrypted.gpgবলে মনে হচ্ছে।
কন-এফ-

1
আমি এখানে এবং Inappropriate ioctl for deviceসাথে ছাড়া --batchপাচ্ছি (জিপিজিতে (জিএনপিপি) 2.1.18)।
নিকো Schlömer

2
পছন্দ করুন echo "hello" | catএবং echo "hello"| catউভয় একই স্ট্রিং ফলন।
টর্স্টেন ব্রোঞ্জার

36

2017-12-04 আপগ্রেড করা হয়েছে। (পাসফ্রেজ প্রম্পট প্রতিরোধ করার জন্য - ব্যাচ যুক্ত করা হচ্ছে)

আপনাকে --batchবিকল্প যুক্ত করতে হতে পারে :

সংস্করণ 2 থেকে GPG, --batchকোনও প্রম্পট নিশ্চিত করার জন্য বিকল্পটি প্রয়োজন ... ঠিক আছে, দেখুন:

$ gpg --version
gpg (GnuPG) 2.1.18
libgcrypt 1.7.6-beta
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /home/user /.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

চেষ্টা:

$ newdir=$(mktemp -d)
$ cd $newdir
$ seq 1 10 | gpg -c --batch --passphrase 1234 -o file.gpg -
$ ls -ltr
total 4
-rw-r--r-- 1 user  user  91 Dec  4 15:42 file.gpg
$ hd file.gpg 
00000000  8c 0d 04 07 03 02 ea fa  d0 d3 2b 9a ea 06 df d2  |..........+.....|
00000010  4a 01 ed 50 74 ff 27 45  0e 6c 94 74 db e9 8a a5  |J..Pt.'E.l.t....|
00000020  03 9f 67 a0 73 97 e9 15  6b 56 a0 f0 88 71 85 a8  |..g.s...kV...q..|
00000030  dc 41 71 9f fa 3b f9 9d  af ac 80 eb f4 f7 28 19  |.Aq..;........(.|
00000040  9f be 75 47 e6 d8 00 3e  f6 60 f1 00 5e 63 57 ef  |..uG...>.`..^cW.|
00000050  14 c3 4b 20 ff 94 03 03  c1 fc 98                 |..K .......|
0000005b

ভালো শুনাচ্ছে! এখন ভালো:

$ gpg -d --batch --passphrase 1234 file.gpg
gpg: AES encrypted data
gpg: encrypted with 1 passphrase
1
2
3
4
5
6
7
8
9
10

যদিও কোনও -dপ্যারামিটার দেওয়া হয়নি (এসও এর প্রশ্নের অনুরূপ সিনট্যাক্স), এর থেকে ডিক্রিপ্টেড ডেটাগুলি একটি নতুনতে file.gpgবের করা হবে file

$ gpg --batch --passphrase 1234 file.gpg
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: AES encrypted data
gpg: encrypted with 1 passphrase

$ ls -ltr
total 8
-rw-r--r-- 1 user  user  91 Dec  4 15:42 file.gpg
-rw-r--r-- 1 user  user  21 Dec  4 15:44 file

$ cat file
1
2
3
4
5
6
7
8
9
10

এই কাজ ভাল!

$ cd -
$ rm -fR $newdir
$ unset newdir

আপনি এই সতর্কবার্তাটি পাচ্ছেন না "জিপিজি: জিপিজি-এজেন্ট এই অধিবেশনটিতে পাওয়া যাচ্ছে না" তাই আপনার সম্ভবত সম্ভবত এজেন্টে পাসফ্রেজ সংরক্ষণ করা আছে?
আসফান্দ কাজী

@ আসফ্যান্ডইয়ারকিজি না, পাসফ্রেজটি কমান্ড লাইনে প্রবেশ করা হয়েছে।
এফ। হাউরি

এই উত্তরটি আমার পক্ষে কাজ করেছিল। জিপিজি 1.4.16 সহ উবুন্টু। --passphraseপরামিতি ব্যাচ অপারেশন জন্য কাজ করে, এবং একটি পাসওয়ার্ড জন্য অনুরোধ করা হয় না।
ট্রেভর সুলিভান

এটি কাজ করতে প্রদর্শিত হতে পারে কারণ বিরক্তিকর জিপিজি-এজেন্ট পাসফ্রেজ ক্যাশে করছে। সিস্টেমটি সম্পূর্ণ পুনরায় চালু করতে এবং নতুন করে শুরু করার চেষ্টা করুন, বা ভুল - পাসফ্রেজ 5678 (ভুল পাসফ্রেজ) প্রবেশ করান।
ইয়াহেরমান

@ ইয়াহারম্যান: ঠিক এখন unset GPG_AGENT_INFOএবং এমনকি চেষ্টা করেও GPG_AGENT_INFO=/dev/null, এই (চালিয়ে যাওয়া) কাজ করার জন্য ... সম্ভবত আনসেটিং $GPG_AGENT_INFOসাহায্য করতে পারে !? (আমাদের জানান; দয়া করে উত্তর দিন, আমি যদি এই সহায়তা করি তবে আমি সম্পাদনা করব!)
এফ হৌরি

22

প্রারম্ভিক স্থান সংস্করণ 2.x জন্য আপনি ব্যবহার করতে প্রয়োজন হবে না --batch, শুধু

--pinentry-mode loopback  

--passphrase& এর সাথে কাজ করে এবং --passphrase-fileফাইল নাম বিরোধের ক্ষেত্রে আপনাকে নতুন তথ্য প্রবেশ করতে দেবে:

gpg --pinentry-mode loopback --passphrase-file=file encrypted.gpg

...
File 'encrypted' exists. Overwrite? (y/N)n
Enter new filename: f2

অসদৃশ --batchযে দ্রুত ব্যর্থ হবে, বলছে...failed: File exists

(ডেবিয়ান স্টেবল / স্ট্রেচের জিপিজি ২.১.১৮ এ পরীক্ষা করা হয়েছে important গুরুত্বপূর্ণ --passphraseবিকল্পগুলি উপেক্ষা করার এই আচরণটি আসলেই একটি বাগ হওয়া উচিত, যদি এটি ইতিমধ্যে না থাকে)


1
এই জন্য gpg সঙ্গে উবুন্টু 18.04 বায়োনিক এছাড়াও চমত্কারভাবে কাজ করে (GnuPG) 2.2.4
disassembler

এটি হোমস্রাবের সাথে জিপিজি ইনস্টল করার পরে ম্যাকোজে কাজ করে
জোয়েল

15

মনে হচ্ছে আপনি জিপিজি 2 ব্যবহার করছেন। আপনাকে --batchবিকল্পটিতেও ফেলে দিতে হবে । (আপনি যদি এটি কোনও স্ক্রিপ্টে যুক্ত করার পরিকল্পনা করেন তবে আপনি এটিকে --no-ttyসম্ভবত যুক্ত করতে চাইবেন --yes))


3
এটি 1.4। --batch ব্যবহারের কোনও প্রভাব নেই।
ওমিদ

দুঃখিত তারপর @ নিমা। আমি আপনাকে জানাতে জানি না। GnuPG v1.4 এর সাথে আপনাকে সেই বিকল্পগুলির মধ্যে কোনওটির সাথে পাসফ্রেজটি পাস করার জন্য আর কিছু করার প্রয়োজন হবে না।
আরএসউ 15

ভাল দ্রষ্টব্য, @ শস, আমাকে পাসওয়ার্ড প্রম্পটগুলি প্রতিরোধ করতে সহায়তা করেছে (এবং কিছুটা কম মার্জিত ইকো / এসটিডিআইএন বিকল্প)।
রায়য়ান

উইন্ডোজ এমনকি ব্যাচ সাহায্য করেছে। ওঁ হু
পাপ করুন

9

আমার জন্য, "--no-use-এজেন্ট" যুক্ত করে "gpg (GnuPG) 1.4.16" এর সমাধান করা হয়েছে:

date > foo
echo pass > passphrase
# w/o --no-use-agent
> rm -f foo.gpg; gpg --cipher-algo aes256 --output foo.gpg --passphrase-file ./passphrase --batch --yes --symmetric foo
gpg: gpg-agent is not available in this session
gpg: can't query passphrase in batch mode
gpg: error creating passphrase: invalid passphrase
gpg: symmetric encryption of `foo' failed: invalid passphrase


> rm -f foo.gpg; gpg --cipher-algo aes256 --output foo.gpg --passphrase-file ./passphrase --batch --yes --no-use-agent --symmetric foo
> ls -al
total 20
drwxr-xr-x  2 root root 4096 Aug 22 13:59 .
drwx------ 18 root root 4096 Aug 22 13:58 ..
-rw-r--r--  1 root root   30 Aug 22 13:58 foo
-rw-r--r--  1 root root  103 Aug 22 13:59 foo.gpg
-rw-r--r--  1 root root    5 Aug 22 13:58 passphrase

8

Gpg (GnuPG) ২.২. using ব্যবহার করা থাকলে ম্যান পৃষ্ঠা অনুসারে,

--passphrase-fd n

ফাইল বর্ণনাকারী থেকে পাসফ্রেজ পড়ুন এন। কেবলমাত্র প্রথম লাইনটি ফাইল বর্ণনাকারী এন থেকে পড়তে হবে। আপনি যদি এন এর জন্য 0 ব্যবহার করেন তবে পাসফ্রেজটি এসটিডিএন থেকে পড়বে। কেবলমাত্র একটি পাসফ্রেজ সরবরাহ করা হলে এটি ব্যবহার করা যেতে পারে।

--passphrase-file ফাইল

ফাইল ফাইল থেকে পাসফ্রেজ পড়ুন। কেবলমাত্র প্রথম লাইনটি ফাইল ফাইল থেকে পড়তে হবে। কেবলমাত্র একটি পাসফ্রেজ সরবরাহ করা হলে এটি ব্যবহার করা যেতে পারে। স্পষ্টতই, যদি অন্য ব্যবহারকারীরা এই ফাইলটি পড়তে পারেন তবে কোনও ফাইলে সঞ্চিত একটি পাসফ্রেজ সন্দেহজনক সুরক্ষার of আপনি যদি এড়াতে পারেন তবে এই বিকল্পটি ব্যবহার করবেন না।

- পাসফ্রেজ স্ট্রিং

পাসফ্রেজ হিসাবে স্ট্রিং ব্যবহার করুন। কেবলমাত্র একটি পাসফ্রেজ সরবরাহ করা হলে এটি ব্যবহার করা যেতে পারে। স্পষ্টতই, এটি একটি বহু-ব্যবহারকারী সিস্টেমে অত্যন্ত প্রশ্নবিদ্ধ সুরক্ষা। আপনি যদি এড়াতে পারেন তবে এই বিকল্পটি ব্যবহার করবেন না।

যোগ --pinentry-mode loopbackকাজ করার জন্য

নোট করুন যে সংস্করণ 2.0 থেকে এই পাসফ্রেজটি কেবল তখনই ব্যবহৃত হয় যদি বিকল্পটি --batch দেওয়া হয়ে থাকে। সংস্করণ ২.১ যেহেতু - উপকূলীয়-মোডে লুপব্যাক সেট করা দরকার।

উদাহরণ স্বরূপ:

gpg --batch --yes --passphrase="pw" --pinentry-mode loopback -o out -d in

যে কোনও - পাসফ্রেজ ... কাজের জন্য বিকল্পগুলি --batchএবং --pinentry-mode loopbackবিকল্পগুলি উভয়ই দরকার? V.2.1.18-তে তথ্য পৃষ্ঠাটি ব্যাচ ও পেন্ট্রি সম্পর্কিত প্রয়োজনীয় জিনিসগুলি (তবে ম্যান পৃষ্ঠা নয়) বলেছে, তবে এখনও কেবল - স্পেনড্রি নিয়ে কাজ করে ... যদি উভয়ই v.2.2.7 এর জন্য প্রয়োজন হয় তবে জিনিসগুলি হাস্যকর হয়ে উঠছে, বিকাশকারীরা উদ্দেশ্য নিয়ে গুরুতর বাগ প্রবর্তন করছে
Xen2050


3
read -sp "Enter passphrase: " pass
echo "${pass}" | gpg --batch --no-tty --yes --passphrase-fd 0 --symmetric -o /path/to/saved/file.jpg.gpg /path/to/file.jpg
echo "${pass}" | gpg --batch --no-tty --yes --passphrase-fd 0 --decrypt -o /path/to/decrypted/file.jpg /path/to/encrypted/file.jpg.gpg

2

আপনি কি চেষ্টা করেছেন:

gpg --batch --passphrase-fd 0 --decrypt-files *.gpg
gpg --passphrase-fd 0 1234 file.gpg 

সূত্র: এখানে


1

আমি মনে করি কমান্ড লাইনে পাসওয়ার্ড দেওয়ার জন্য একটি নিরাপদ পদ্ধতিটি হ'ল:

gpg --passphrase-file <(echo password) --batch --output outfile -c file

এটি যা করবে তা হল "প্রতিধ্বনি" কমান্ডটি ছড়িয়ে দেওয়া এবং একটি জিপিগির (যেমন / ডিভ / এফডি / 63) নাম হিসাবে একটি ফাইল বর্ণনাকারী পাস করা। জিপিজি তারপর সেখান থেকে কীটি পড়বে। মাঝামাঝি সময়ে, ইকো কমান্ডটি সমান্তরালভাবে চলতে হবে এবং তত্ক্ষণাত্ শেষ করা উচিত, কীটি এফডির বাফারে রেখে।

উপকারিতা হ'ল:

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

1

আপনি আমাকে বিশ্বাস করবেন না যখন আমি আপনাকে বলব যে উবুন্টুতে জিপিজি আপনার পাসওয়ার্ডটি জিজ্ঞাসা করার চেষ্টা করে যদি $ DISPLAY সেট করা থাকে এবং আপনি যদি সেট না করে থাকে তবে এটি কমান্ডলাইন - পাসওয়ার্ড থেকে নেয়। এটি প্রত্যাশার মতো কাজ করে:

DISPLAY=    gpg --symmetric --passphrase pass --batch

আমার ধারণা ওভার ইঞ্জিনিয়ারিংয়ের আরও একটি উদাহরণ।


1

এখানে একটি ব্যাপার লিংক একটি থেকে Stackoverflow উত্তর হয়তো আরও সহায়তা; আমার একটি প্রকল্প রয়েছে যা বাল্ক ডিক্রিপশন / এনক্রিপশন করে এবং GnuPG পাসফ্রেজগুলি সম্পর্কে খুব কঠোর হওয়ার কারণে , হার্ড উপায়টি শিখেছে যা --passphraseকেবল বিরল ইভেন্টগুলিতেই কাজ করে। পরিবর্তে --passphrase-fdবিকল্পটি আরও নির্ভরযোগ্য হিসাবে বিবেচনা করুন ।

এই স্ক্রিপ্ট তোলে সঠিক ব্যবহার --passphrase -fdবিকল্প, এবং এর মাধ্যমে সর্বজনীনভাবে পরীক্ষা করা হয়েছে ট্রাভিস-সি আই যেখানে আপনি এটা কর্ম এর লগ অনুসন্ধান করতে পারেন।

এখন আমি এখানে কিছু উদাহরণ কোড সরবরাহ না করে কেবল একটি উত্তরের লিঙ্কগুলি পোস্ট করতে যাচ্ছি না, সুতরাং আপনি এখানে খেলতে পারেন এমন একটি আপডেট করা "একা একা দাঁড়িয়ে" স্ক্রিপ্ট এখানে দিন:

#!/usr/bin/env bash
# Set some variables for easy modding
Var_fd='9'
Var_pass="/path/to/passphrase.file"
Var_gpg_opts="--passphrase-fd ${Var_fd} --decrypt"
Var_output_location="out.txt"
Arr_string=( "$@" )
# Open file descriptor and shove the passphrase file into it
if [ -f "${Var_pass}" ]; then
    exec ${Var_fd}<"${Var_pass}"
else
    exec ${Var_fd}<(echo "${Var_pass}")
fi
# Pipe input array though gpg and append to output file
cat <<<"${Arr_string[*]}" | $(which gpg) ${Var_gpg_opts} >> ${Var_output_location}
# Do not forget to close the file descriptor
exec ${Var_fd}>&-

যদিও উপরেরগুলি লিখিত সুরক্ষার তুলনায় গিতহাবের মতো অভিনব নয় তবে এই পোস্টের শুরুতে লিঙ্ক করা উত্তরের চেয়ে আরও বেশি কার্যকরী হওয়া উচিত

শুভ হ্যাকিং


1

ম্যান জিপিজিতে উল্লিখিত বিকল্পগুলি ব্যবহার করা যেতে পারে

--penterry- মোড মোড পেন্ট্রিটি মোড মোডে সেট করুন। মোডের জন্য অনুমোদিত মানগুলি হ'ল:

          default
                 Use the default of the agent, which is ask.

          ask    Force the use of the Pinentry.

          cancel Emulate use of Pinentry's cancel button.

          error  Return a Pinentry error (``No Pinentry'').

          loopback
                 Redirect Pinentry queries to the caller.  Note that in contrast to Pinentry the user is not prompted again if he enters a bad password.

সুতরাং জিপিজি-র ডিফল্ট আচরণ হ'ল পাসফ্রেজের জন্য ব্যবহারকারীকে প্রম্পট করা, যদি এই ব্যবহারকারী এজেন্ট মোডটিকে "--penterry- মোড লুপব্যাক" এ পরিবর্তন করে তবে এটি পুরোপুরি সূক্ষ্মভাবে কাজ করে। সম্পূর্ণ আদেশ

gpg --pinentry-mode loopback --passphrase <passphrase> -d <file to decrypt>

0

একটি লিনাক্স মেশিনে কাজ করার একটি সহজ পদ্ধতি হ'ল: ১) জিপিগিতে আমদানি কী: => শেল> জিপিজি চিত্র ব্যক্তিগত_কি.কি

2) ডিক্রিপ্ট আউটফিলের নাম দেওয়া: => শেল> জিপিজি আউটপুট -d d

২.১) উপরের কমান্ডটি দেওয়া আপনাকে প্যারাফ্রেজ প্রবেশের অনুরোধ জানাবে। প্যারাফ্রেজ লিখুন এবং এটি জিপিজি ফাইলটি ডিক্রিপ্ট করবে।


0
gpg2 -se --passphrase yourpassword --batch --yes -r user@example.com filename

1
এটি আপনার সমস্যাটি কেন ঠিক করা উচিত তা ব্যাখ্যা করতে পারলে ভালো লাগবে
Zanna

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

0

এর শেষে রাখুন ~/.gnupg/gpg.conf:

use-agent
pinentry-mode loopback

(সম্ভবত নতুন) ফাইলের শেষে রাখুন ~/.gnupg/gpg-agent.conf:

allow-loopback-pinentry

এবং তারপরে এই কমান্ডটি চালান:

echo RELOADAGENT | gpg-connect-agent

এখন আপনি পাসওয়ার্ড না জিজ্ঞাসা করে এটি চালাতে সক্ষম হবেন:

echo "$1" | gpg2 --trust-model always --clearsign --batch --no-tty --quiet --no-verbose --yes -u $2 --digest-algo SHA512
--s2k-digest-algo SHA512 --passphrase "$3"

যেখানে $ 1 হ'ল পাঠ্যটি এনক্রিপ্ট করা হবে, সেখানে $ 2 হল ব্যবহারকারী আইডি এবং $ 3 পাসওয়ার্ড।

দ্রষ্টব্য: কেন এটি কাজ করে তা আমি মনে করতে পারি না তবে এটি কার্যকর হয়। আপনি যদি বিশদগুলি জানেন তবে দয়া করে এখানে সম্পাদনা করুন এবং .োকান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.