ইউআইমেজ থেকে কীভাবে ফাইলগুলি বের করা যায়?


21

বিল্ড্রুট এম্বেড থাকা ডিভাইসের জন্য চিত্রগুলি তৈরি করছে যেখানে তাদের চালানো উচিত। এটি খুব ভাল কাজ করছে। এই চিত্রগুলিতে, রুটফগুলি অন্তর্ভুক্ত করা হয়েছে।

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

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

হোস্টে থাকা (ইউ / জেড) চিত্রগুলি কীভাবে সংক্রামিত করা যায় তা সম্পর্কে কেউ আমাকে ইঙ্গিত দিতে পারে?

উত্তর:


33
mkimage -l uImage

তথ্যটি হেডারে ফেলে দেবে।

tail -c+65 < uImage > out

বিষয়বস্তু পাবেন।

tail -c+65  < uImage | gunzip > out

এটি gzip- সংকুচিত হলে এটি সঙ্কুচিত করবে।

যদি এটি কোনও ইআর্রামফ থাকে তবে আপনি সামগ্রীটি তালিকাগুলি করতে cpio -t < outবা করতে পারেন pax < out

যদি এটি র্যামডিস্ক চিত্র থাকে তবে আপনি এটিকে চেষ্টা করে মাউন্ট করতে পারেন:

mount -ro loop out /mnt

file out এটি কি সম্পর্কে আপনাকে আরও বলতে পারে।


1
শিরোনাম আমাকে বলে যে এটি একটি: এআরএম লিনাক্স কার্নেল চিত্র (সঙ্কুচিত)। আপনি এটি যেভাবে ব্যাখ্যা করেছেন সেভাবে আমি বন্দুকযুদ্ধ বা সিপিও দিয়ে খুলতে পারি না। চিত্রটি মাউন্ট করা খুব সম্ভব ছিল না
ব্যবহারকারীর 3085931

@ ব্যবহারকারী 3085931, তারপরে এটি কোনও কার্নেল চিত্র নয় কোনও ফাইল সিস্টেম। এটি বুট না করে আপনি এটি দিয়ে কিছুই করতে পারবেন না। কি আপনি এটি দিয়ে কি করতে চান?
স্টাফেন চেজেলাস

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

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

আমি একজনের সাথে খেলছি এবং এটি লজমা দিয়ে সংকুচিত হয়েছিল ( mkimage -lরিপোর্ট করা Image Type: MIPS Linux Kernel Image (lzma compressed)) তাই এটি প্রসারিত করতে আনলজমা ব্যবহার করা হয়েছিল
উত্তর-ব্র্যাডলি

8

ইউ-বুট নিজস্ব dumpimageসরঞ্জাম নিয়ে আসে (এটি আপনার ইউ-বুট গাছের সরঞ্জাম ডিরেক্টরিতে সন্ধান করুন)

অবশ্যই এটি সাধারণ চিত্রগুলির সাথে কাজ করে তবে এটি পুরানো স্টাইলের মাল্টি চিত্রগুলিকে সমর্থন করে

$ ~2/tools/dumpimage -l uMulti 
Image Name:   
Created:      Thu Aug 31 19:54:29 2017
Image Type:   ARM Linux Multi-File Image (uncompressed)
Data Size:    5678650 Bytes = 5545.56 kB = 5.42 MB
Load Address: 10008000
Entry Point:  10008000
Contents:
   Image 0: 5028760 Bytes = 4910.90 kB = 4.80 MB
   Image 1: 602111 Bytes = 588.00 kB = 0.57 MB
   Image 2: 47762 Bytes = 46.64 kB = 0.05 MB
$ ~2/tools/dumpimage -i uMulti kernel.extracted
$ ~2/tools/dumpimage -i uMulti -p 1 initramfs.extracted
$ ~2/tools/dumpimage -i uMulti -p 2 device-tree.extracted

এটি এখনও নতুন স্টাইলের এফআইটি চিত্র সহ চেষ্টা করে দেখেনি, তবে আমার ধারণা এটি কেবল কার্যকর হবে।


1
এটি এফআইটি চিত্রের সাথে কাজ করে।
সকেটপায়ার

4

যদি বেশ কিছু ইমেজ ভিতরে এখানে একটি দ্রুত হয় bashস্ক্রিপ্ট তাদের সব ফাইল তথ্য বের করার image_0, image_1, ...:

#!/bin/bash

src_file=uImage

declare -ia sizes=( $(mkimage -l "$src_file" |
  awk '/^ +Image [0-9]+/ { print $3 }') )
declare -i offset="68+4*${#sizes[@]}"
declare -i size

for i in "${!sizes[@]}"; do

  size=${sizes[$i]}

  echo "Unpacking image_$i"
  dd if="$src_file" of="image_$i" bs=1 skip="$offset" count="$size"

  # going to offset of next file while rounding to 4 byte multiple
  offset+=$(( size + (4 - size % 4) % 4 ))

done

তারপরে আপনাকে যা যা তা পরীক্ষা করে দেখতে হবে (কোন প্যাকড লিনাক্স কার্নেল হতে পারে, ফাইলগুলির সাথে সংরক্ষণাগার, ডিভাইস ট্রি,…)। fileএবং binwalk( http://binwalk.org/ ) সহায়ক হতে পারে।


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