কিভাবে বাইনারি ফাইল দেখতে হয়?


45

আমি যা বুঝি সেগুলি থেকে একটি সংকলক একটি বাইনারি ফাইল তৈরি করে যা 1 এবং 0 এর সমন্বিত সিপিইউ পড়তে পারে। আমার কাছে একটি বাইনারি ফাইল আছে তবে আমি কীভাবে এটির 1 এবং 0 গুলি দেখতে পেলাম? একটি পাঠ্য সম্পাদক বলেছেন যে এটি এটি খুলতে পারে না ...

পিএস আমার একটি অ্যাসেম্বলি সংকলিত বাইনারি রয়েছে যা 1 এবং 0 এর প্লেইন বাইনারি কোড হওয়া উচিত?


1
আপনি যখন বাইনারি ফাইল প্রদর্শন করেন, আপনি এটি ascii অক্ষর হিসাবে দেখতে পাবেন
mazs

2
ডুপ্লিকেট ইস্যু stackoverflow.com/questions/1765311/...
mazs

না - ওপিতে "এসেম্বলির সংকলিত বাইনারি" নির্দিষ্ট করা হয়েছে। এটি প্রশ্নের সমাধান করে না। উদাহরণস্বরূপ, এটি কোনও মিউজিক ফাইল নয় এবং এর কাঠামো রয়েছে। ওপিকে অতিরিক্ত তথ্য সরবরাহ না করেই, একটি অনিবন্ধিত সরঞ্জাম শুরু করার জায়গা।
টমাস ডিকি

1
আমার উত্তর দেখুন। এবং সতর্ক হতে হবে যে বাইনারি শব্দটি ব্যবহারে দুটি উপায়ে সম্পূর্ণ পৃথকভাবে ব্যবহৃত হয়: "একটি বাইনারি ফাইল" অর্থ এমন একটি ফাইল যার প্রসঙ্গটি খাঁটি ASCII - পাঠ্য নয়। "একটি বাইনারি সংখ্যা" এর অর্থ বাইনারি ফর্ম ব্যবহার করে লিখিত একটি সংখ্যা।
পিয়েরে-অলিভিয়ের ভারেস

@ ম্যামস এএসসিআইআই? আমি মনে করি ইউটিএফ -8 সম্ভবত বেশি, বা কোনও কোড পৃষ্ঠা যদি মনে করে যে এই প্রোগ্রামটি হরিস্টিসের মাধ্যমে এ ভাবে এনকোড করা হয়েছে।
জেডুগোস্জ

উত্তর:


99

মতে এই উত্তরটি দ্বারা tyranid :

hexdump -C yourfile.bin 

আপনি অবশ্যই সম্পাদনা করতে চান না হলে। বেশিরভাগ লিনাক্স ডিস্ট্রোদের hexdumpডিফল্টরূপে থাকে (তবে সবগুলি স্পষ্টতই নয়)।


হালনাগাদ

মতে এই উত্তরটি দ্বারা এমিলিও bool :

xxd বাইনারি এবং হেক্সাডেসিমাল উভয়ই করে

বিনের জন্য:

xxd -b file

হেক্সের জন্য:

xxd file

এটি সত্যিই সাহায্য করেছে! আপনাকে ধন্যবাদ
শ্রাব্য বোগগারাপু

45

বিভিন্ন ব্যক্তি ক্যোয়ারির কয়েকটি দিকের উত্তর দিয়েছেন, তবে সবকটি নয়।

কম্পিউটারে সমস্ত ফাইল 1 এবং 0 এর হিসাবে সংরক্ষণ করা হয়। চিত্র, পাঠ্য ফাইল, সঙ্গীত, সম্পাদনযোগ্য অ্যাপ্লিকেশন, অবজেক্ট ফাইল ইত্যাদি,

এগুলি সব 0 এবং 1 এর। পার্থক্যটি হ'ল এগুলি কী খোলে তার উপর নির্ভর করে তাদের আলাদাভাবে ব্যাখ্যা করা হয়।

আপনি যখন কোনও টেক্সট ফাইল ব্যবহার করে দেখেন cat, এক্সিকিউটেবল ( catএই ক্ষেত্রে) সমস্ত 1 এবং 0 এর পাঠ করে এবং এটি আপনার প্রাসঙ্গিক বর্ণমালা বা ভাষা থেকে অক্ষরগুলিতে রূপান্তর করে এগুলি আপনার কাছে উপস্থাপন করে।

আপনি যখন কোনও চিত্র দর্শকের সাহায্যে কোনও ফাইল দেখেন, তখন এটি সমস্ত 1 এবং 0 এর গ্রহণ করে এবং ফাইলটির বিন্যাস এবং এটিকে সমস্ত কাজ করার জন্য কিছু যুক্তির উপর নির্ভর করে এগুলি একটি চিত্রে পরিণত করে।

সংকলিত বাইনারি ফাইলগুলি আলাদা নয়, সেগুলি 1 এবং 0 এর হিসাবে সংরক্ষণ করা হয়।

আরজিফেক্সের উত্তর আপনাকে সেই ফাইলগুলি বিভিন্ন উপায়ে দেখার সরঞ্জাম দেয় তবে বাইনারি হিসাবে একটি ফাইল পড়া কম্পিউটারে যে কোনও ফাইলের জন্য কাজ করে, যেমন এটি অষ্টাল, বা হেক্স, বা সত্যই এএসসিআইআই হিসাবে দেখা যায়, এটি প্রতিটি ক্ষেত্রেই বোধগম্য হতে পারে না for ফর্ম্যাটগুলির।

যদি আপনি বুঝতে চান যে এক্সিকিউটেবল বাইনারি ফাইলটি কী করে, আপনি এটিকে এমনভাবে দেখতে হবে যা আপনাকে সংহিত ভাষা (শুরু হিসাবে) দেখায় যা আপনি ব্যবহার করতে পারেন,

objdump -d /path/to/binary

যা একটি বিচ্ছিন্নকারী, এটি বাইনারি সামগ্রী গ্রহণ করে এবং এটি আবার এসেম্বলারে রূপান্তরিত করে (যা খুব নিম্ন স্তরের প্রোগ্রামিং ভাষা)। objdumpসর্বদা ডিফল্ট হিসাবে ইনস্টল করা হয় না, তাই আপনার লিনাক্স পরিবেশের উপর নির্ভর করে ইনস্টল করার প্রয়োজন হতে পারে।

কিছু বাহ্যিক পড়া।

এনবি: @ উইল্ডকার্ডটি উল্লেখ করে যে ফাইলগুলিতে 1 এবং 0 টি অক্ষর নেই (এটি আপনি স্ক্রিনে দেখেন) নোট করা গুরুত্বপূর্ণ, এগুলিতে প্রকৃত সংখ্যাসূচক তথ্য থাকে, তথ্যের স্বতন্ত্র বিট থাকে যা হয় (1) বা বন্ধ (0)। এমনকি সেই বর্ণনাটি কেবল সত্যের একটি অনুমানের। তাদের মূল বক্তব্যটি হ'ল যদি আপনি এমন কোনও দর্শক খুঁজে পান যা আপনাকে 1 এবং 0 এর দেখায়, এমনকি এটি এখনও ফাইলটি থেকে ডেটা ব্যাখ্যা করে এবং তারপরে আপনাকে 0 এবং 1 এর জন্য ASCII অক্ষর দেখায় তবে ডেটা বাইনারি ফর্ম্যাটে সংরক্ষণ করা হয় ( উপরের বাইনারি নম্বর লিঙ্কটি দেখুন)। পিয়েরে-অলিভিয়ের সম্প্রদায়ের উইকি এন্ট্রি আরও বিশদে এটি কভার করে।


ভাল এক্সপোজার é আপনি যোগ করতে চাইতে পারেন যে "1" বা "0" হিসাবে আপনি যে অক্ষরগুলি পাঠ্যের লাইনে দেখেন সেগুলি কম্পিউটার দ্বারা "এক" বা "0" হিসাবে সংরক্ষণ করা হয় না ; ওপিতে মনে হয় এটি নিয়ে কোনও বিভ্রান্তি রয়েছে।
ওয়াইল্ডকার্ড

1
আমি আপনার বক্তব্যটির সাথে দ্বিধাহীন (অর্থাত্ অসমত) করব, "আপনি যখন কোনও টেক্সট ফাইল ব্যবহার করে দেখেন cat, এক্সিকিউটেবল ( catএই ক্ষেত্রে) সমস্ত 1 এবং 0 এর পাঠ করে এবং এটি আপনার প্রাসঙ্গিক বর্ণমালা বা অক্ষরগুলিতে অক্ষরগুলিতে রূপান্তর করে আপনার কাছে উপস্থাপিত করে ভাষা." catতা করে না; সব catকিছুই হ'ল স্ট্যান্ডার্ড আউটপুটে বাইটস লিখুন (যদি না আপনি "ক্ষতিকারক" বিকল্পগুলি ব্যবহার করেন )। টার্মিনাল প্রোগ্রাম (এবং / অথবা টার্মিনাল হার্ডওয়্যার, প্রযোজ্য ক্ষেত্রে, যেমন, এর ফার্মওয়্যার) নির্ধারণ করে যে কীভাবে বাইটসকে অক্ষর হিসাবে রেন্ডার করতে হয়, সম্ভবত টিটিওয়াই ড্রাইভারের সহায়তায় an
জি-ম্যান বলছেন 'মনিকাকে পুনরায় ইনস্টল করুন'

আমি দ্বিমত পোষণ করি না, তবে এক পর্যায়ে সমস্ত সাধারণ বিবরণ ভেঙে যায়, প্রশ্নটি হ'ল খালি খরগোশের গর্তটি আপনি কতটা নিচে নেমে যাবেন তার আগে আপনি বিষয়গুলি সরলভাবে বর্ণনা করা বন্ধ করেন।
এইটবিটটনি

14

নিম্ন স্তরে, একটি ফাইল 0 এবং 1 এর ক্রম হিসাবে এনকোড করা হয়েছে।

এমনকি প্রোগ্রামাররা খুব কমই অনুশীলনে সেখানে যায়।

প্রথম (এবং 0 এবং 1 এর এই গল্পটির চেয়ে আরও গুরুত্বপূর্ণ), আপনাকে বুঝতে হবে যে কম্পিউটার ম্যানিপুলেট করে যে কোনও কিছুই সংখ্যার সাথে এনকোড থাকে ।

  • অক্ষর সেট টেবিলগুলি ব্যবহার করে একটি অক্ষর একটি সংখ্যার সাথে কোড করা হয়। উদাহরণস্বরূপ, ASCII ব্যবহার করে কোডিং করা হলে 'A' বর্ণটির মান 65 হয় has Http://www.asciitable.com দেখুন

  • একটি পিক্সেল এক বা একাধিক সংখ্যার সাথে কোডিং করা হয়েছে (প্রচুর গ্রাফিকাল ফর্ম্যাট রয়েছে) উদাহরণস্বরূপ, স্ট্যান্ডার্ড 3-বর্ণের ফর্ম্যাটে একটি হলুদ পিক্সেল এনকোডযুক্ত রয়েছে: রেডের জন্য 255, গ্রিনের জন্য 255, নীল রঙের জন্য 0 Http://www.quackit.com/css/css_color_codes.cfm দেখুন (একটি রঙ চয়ন করুন এবং আর, জি এবং বি কোষ দেখুন)

  • একটি বাইনারি-এক্সিকিউটেবল ফাইল অ্যাসেমব্লিতে লেখা হয়; প্রতিটি সমাবেশ নির্দেশ সংখ্যা হিসাবে কোড করা হয়। উদাহরণস্বরূপ, সমাবেশের নির্দেশ MOVB $0x61,%alদুটি সংখ্যায় কোড করা হয়েছে: 176,97 দেখুন http://www.sparksandflames.com/files/x86In تعمیرChart.html (প্রতিটি নির্দেশের সাথে 00 থেকে এফএফ পর্যন্ত একটি সংযুক্ত নম্বর রয়েছে, কারণ হেক্সাডেসিমাল স্বরলিপি ব্যবহৃত হয়, নিচে দেখ)

দ্বিতীয়ত : প্রতিটি সংখ্যার একাধিক উপস্থাপনা বা স্বরলিপি থাকতে পারে

বলুন আমার কাছে 23 টি আপেল আছে।

  • আমি যদি দশটি আপেলের গ্রুপ তৈরি করি তবে আমি পাব: দশ এবং তিন লোন আপেলের দুটি গ্রুপ। আমরা যখন 23 লিখি তখন ঠিক এটিই আমরা বোঝায়: একটি 2 (দশক), তারপরে একটি 3 (ইউনিট)।
  • তবে আমি 16 টি আপেল গ্রুপ তৈরি করতে পারি। সুতরাং আমি 16-এর একটি গ্রুপ এবং 7 লোন আপেল পাব। ইন হেক্সাডেসিমেল নোটেশন (যে কিভাবে 16 র্যাডিক্স বলা হচ্ছে), আমি লিখি করব: 17 (16 + 7)। দশমিক স্বরলিপি থেকে পৃথক করার জন্য, হেক্সাডেসিমাল স্বরলিপি সাধারণত একটি উপসর্গ বা প্রত্যয় দিয়ে উল্লেখ করা হয়: 17 এইচ, # 17 বা $ 17। তবে কীভাবে 9 টিরও বেশি গ্রুপ-অফ -16, বা 9 টির বেশি একা-আপেল উপস্থাপন করবেন? সহজভাবে, আমরা এ (10) থেকে এফ (15) পর্যন্ত চিঠিগুলি ব্যবহার করি। 31 নম্বর (31 আপেল হিসাবে) হেক্সাডেসিমালে # 1F হিসাবে লেখা হয়েছে।

  • একই লাইনে, আমরা গ্রুপ-অফ-টু-আপেল করতে পারি। (এবং দুটি গ্রুপ-অফ টু আপেল, অর্থাৎ গ্রুপ-অফ-2x2-আপেল এবং আরও কিছু)। তারপরে 23 হ'ল: 1 গ্রুপ-অফ-2x2x2x2-আপেল, 0 গ্রুপ-অফ-2x2x2-আপেল, 1 গ্রুপ-অফ-2x2-আপেল, 1 গ্রুপের 2 আপেল, এবং 1 একক আপেল যা বাইনারিতে 10111 হিসাবে চিহ্নিত হবে।

( Https://en.wikedia.org/wiki/Radix দেখুন )

শারীরিকভাবে, দুটি রাজ্যের (স্যুইচ) মঞ্জুরি দেওয়ার প্রক্রিয়াগুলি করা সহজ, পাশাপাশি মেমরি স্টোরেজে থাকা ডিস্কেও।

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

তারপরে অনুবাদ করা - ডেটা টাইপের উপর নির্ভর করে - তাদের উপযুক্ত ফর্মের (অক্ষর এ, হলুদ পিক্সেল) বা সম্পাদিত (এমওভির নির্দেশ)।

hexdumpএটির হেক্সাডেসিমাল আকারে ডেটা (বা সমাবেশ প্রোগ্রাম) কোডিংয়ের সংখ্যাগুলি তালিকাভুক্ত করে। এরপরে আপনি সংশ্লিষ্ট বাইনারি ফর্মটি পেতে একটি ক্যালকুলেটর ব্যবহার করতে পারেন।



4

আপনি এটি একটি হেক্স সম্পাদককে খুলতে পারেন যা এটিকে হেক্সাডেসিমাল মানগুলির একটি সিরিজ হিসাবে দেখায়। xxd file

তুমি অর্জন করার জন্য কি চেষ্টা করতেছ?


তবে আমি ভেবেছিলাম কম্পিউটার কেবল 1 এবং 0 গুলি পড়তে পারে। আমি কি সেগুলি দেখতে পারি? কম্পিউটারগুলি কীভাবে কাজ করে তা বোঝার চেষ্টা করছি
মার্টিন জেল্টিন

2
এই একা আপনাকে অনেক সাহায্য করবে না। আপনি যদি এটি ঠিক কীভাবে কাজ করে তা শিখতে চান তবে একটি লিনাক্স বাক্সে ELF ফাইল ফর্ম্যাট এবং en.wikedia.org/wiki/X86_in تعمیر_listings দেখুন । আপনি যদি কেবল সংকলকটির দ্বারা উত্পন্ন কোডটি দেখতে চান তবে এটি জিডিবি দিয়ে চালানো উচিত have যেহেতু আপনি আরও "নিম্ন স্তরের" পেতে চান সেই সাথে nand2tetris.org দেখুন। অ্যাসেম্বলি ভাষার জন্য আমি শুনেছি যে 6502 এবং মিপস অ্যাসেমব্লী x86_64 / x86 সমাবেশের চেয়ে অনেক সুন্দর
Thelalahen

@ থেবলাজেহান আধুনিক x86 ফ্যামিলি এসেম্বলার একটি জন্তু। 8086 ম্যানেজ করার যোগ্য ছিল এবং আমি মনে করি যে সেই যুগের প্রায় কোনও সিপিইউ সম্পর্কে (১৯s০ এর দশকের শেষভাগ থেকে ১৯৮০ এর দশকের প্রথমার্ধ) যতক্ষণ না এসেম্বলারের যায় ততই সহনীয় হওয়া উচিত।
একটি সিভিএন

4

bviভিআইএম কীবাইন্ডিং সহ একটি বাইনারি ভিশুয়াল সম্পাদক। এটি বেশিরভাগ লিনাক্স সিস্টেমে উপলব্ধ।

এখানে চিত্র বর্ণনা লিখুন


3

লিনাক্স স্ট্রিং কমান্ড ফাইলগুলিতে মুদ্রণযোগ্য অক্ষরের স্ট্রিং মুদ্রণ করে, যেমন:

$ strings /usr/bin/gnome-open 
/lib64/ld-linux-x86-64.so.2
3;o:)
libgnome-2.so.0
_ITM_deregisterTMCloneTable
g_object_unref
gmon_start__
g_dgettext
_Jv_RegisterClasses
g_strdup
_ITM_registerTMCloneTable
g_error_free
gnome_program_init
libgnome_module_info_get
libgio-2.0.so.0
g_ascii_strncasecmp

ইত্যাদি ... এটি বাইনারি তুলনায় বেশ বেশি পঠনযোগ্য।


ওপি জিজ্ঞাসা করেছিল যে 1 এবং 0 টি আছে সেগুলি দেখতে আমি কীভাবে এটি খুলব? তবে stringsকমান্ডটি দেখতে চায় এমন বেশিরভাগ বাইটগুলি সরিয়ে ফেলবে।
jlliagre

@ জেলিয়াগ্রে - আপনি সঠিক হওয়ার পরে, stringsকমান্ডটি - বিশেষত দীর্ঘ দৈর্ঘ্যের মত strings -n 6- বাইনারি ফাইলটিতে এর মধ্যে কোনও স্ট্রিং ধ্রুবক ইত্যাদি রয়েছে কিনা তা সত্যই নির্ধারণ করতে সহায়তা করে This এই উত্তরটি একটি মন্তব্য করা উচিত ছিল, তবে এটি হবে ঠিক আছে।
জো

@ জো হ্যাঁ, আমি stringsকমান্ডের উপযোগিতা নিয়ে প্রশ্ন করি না , কেবলমাত্র এটি এখানে ওপি প্রশ্নের উত্তর দেয় না।
jlliagre

3

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

উদাহরণ:

বাইনারি:

xxd -b README.md                                                                
00000000: 00100011 00100000

দশমিক 35 যা 32 32

xxd README.md                                                                   
00000000: 2320

দশমিক 35 এবং 32


অন্যান্য লোকেরা এটি উল্লেখ করেছেন। তবে এটি একটি ভাল সংক্ষিপ্তসার। আপনি যদি প্রথম অনুচ্ছেদ পরিবর্তন করতে চান তবে আপনি নিজের উত্তরটি সম্পাদনা করতে পারেন।
wizzwizz4

খুব ভাল, আমি কাউকে এটি উল্লেখ করতে দেখিনি, আমি সম্ভবত এটি মিস করেছি।
বৃহস্পতিবার পরের

নোট করুন যে আপনি vimব্যবহার করতে ইনস্টল করা প্রয়োজন xxd
স্টারবিয়াম্রেনবোলাবস

2

আপনি বাইনারি মধ্যে ফাইল দেখতে পারেন vim, এর মাধ্যমে:

  • ফাইলটি খোলার মধ্যে vim
  • প্রবেশন :% !xxd -b

xxdকমান্ড আরও tweaked করা যাবে, উদাহরণস্বরূপ:

  • যোগ করে -g4, যা 32-বিট প্যাকগুলিতে বিটগুলি গ্রুপ করবে
  • যোগ করে -c4, যা আউটপুট ফর্ম্যাট করবে, প্রতি লাইনে 4 বাইট থাকবে

উপরের দুটি পতাকা যুক্ত করা, আপনাকে প্রতি লাইনে একটি 32-বিট পূর্ণসংখ্যা দেবে।


1

আপনি উদাহরণস্বরূপ এটি করতে পারেন, এই রুবি ওয়ান-লাইনার:

$ ruby -e 'while c=STDIN.read(1); printf "%08b" % c.bytes.first; end'

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


ধন্যবাদ! সরাসরি স্থান যুক্ত করার পরে %08bএটি আউটপুটকে বাইটে ভাগ করে দেয়।
স্টারবিয়াম্রেনবোলাবস

0

জিএইচএক্স আপনার বন্ধু :)
আপনি কমান্ড লাইন

উবুন্টু ব্যবহার করে এটি ইনস্টল করতে পারেন :

sudo অ্যাপ্লিকেশন- ghex ইনস্টল

ফেডোরা:

sudo ইয়াম ইনস্টল ঘেক্স

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