LINUX.ORG.RU

Магнитола на Linux, поиск подсчета

 , ,


0

1

Всем доброго времени суток, вообщем такая проблема: есть магнитола, которая имеется загрузчик в sd карте, на карте есть файлик loading.kwi , весит около 350мб, вообще разложит данный файл binwalk, оказалось что это линукс скорее всего на ядре ARM,вообщем так выглядит разархивированный файл(папки):

etc
lib
sbin
usr
vns

Нужно найти калькуляцию кода, то есть если на магнитоле стоит пароль то она выводит код 12 символов на экран, и пользователь должен вести ответ на них, если он правильный магнитола снимает пароль и запускается, так вот где может быть эта калькулация? То есть, понятно что она не во флэше мафона потому что, там флэш очень маленькая, значит на карте. Начал рыть в вебе про иерархию файловой системы линукс, в ней не нашел папку «vns» - в ней лежат какие то java файлы, может там? пытаюсь искать в каждом файле с помощью ida или binwalk

Ответ на: А как от JeezyWonder

Нужно понимать как происходит загрузка linux, какие параметры передаются ядру (есть ли initrd). Далее основной файл, где указано что грузить это inittab. В нём создаются tty и запускаются скрипты инициализации (rc.d). В этих скриптах происходит запуск программ. Далее уже более детально смотреть что делает та или иная программа.

Сначала нужно выяснить на каком моменте запрашивается пароль. Потом смотреть что выполнялось и как инициализировалось до этого.

Для эмуляции можно использовать qemu (главное знать целевую платформу).

CrazyAlex25 ★★★
()
Ответ на: комментарий от anonymous

Почему сразу криминальные мысли? На моей практике случалось много всякого. Например, пара случаев.

  1. Чудак купил машину, Магнитола без ЦД, но с возможностью установки, а ему внезапно приспичило слушать в дороге ЦД. Перегонять в мп3 не вариант - время. Штатный фирменный ЦД стоит как шасси от боинга. Левый механически и по шлейфам подходит, но в нём прошивка не совместима с тушкой.

  2. Чудак купил редкую машину в богом забытой деревне. И пока гнал её домой, разбил морду магнитолы. Ну, ночевали в машине в полях/лесах/огородах, впотьмах саданули. Новая каталожная стоит как почку продать. Подобрал подходящую к торпеде, и та же история - бортовой компьютер отказался считывать магнитолу. Там qnx кругом. Кто познал проприетарщину qnx тот в цирке не смеётся.

anonymous
()
Ответ на: комментарий от gtk3

Если ты знаешь как работает загрузчик, то можно.

Энтузиазизм быстро пропадает, когда видишь интерфейсную микруху без маркировки :-D

anonymous
()
Ответ на: комментарий от CrazyAlex25

Спасибо Алекс вам за информацию, вообщем немного не правильно разархивировал изначально файлик, разархивировал правильно и по итогу получилось 5 папок:https://imgur.com/a/Gpmw2hr (1,2,3,4,5) набрал поиск по папкам initrd - не нашло, а вот inittab - есть такой файл, находится в \1\ext-root\etc\inittab, содержимое:


# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:5:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

con:2345:respawn:/sbin/getty console

как я понял он запускает файлик rcS из папки init.d

si::sysinit:/etc/init.d/rcS (те самые скрипты инициализации (rc.d)?) 

в нем правда мало что понял, язык похож на c++

#!/bin/sh
#
# rcS		Call all S??* scripts in /etc/rcS.d in
#		numerical/alphabetical order.
#
# Version:	@(#)/etc/init.d/rcS  2.76  19-Apr-1999  miquels@cistron.nl
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

#	Make sure proc is mounted
#
[ -d "/proc/1" ] || mount proc /proc -t proc

#	Make sure sys is mounted
[ -d "/sys/kernel" ] || mount sysfs /sys -t sysfs

#
#	See if system needs to be setup. This is ONLY meant to
#	be used for the initial setup after a fresh installation!
#
if [ -x /sbin/unconfigured.sh ]
then
  /sbin/unconfigured.sh
fi

#
#	Source defaults.
#
. /etc/default/rcS

#
#	Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP

#
#       Do we have /proc/progress and set VERBOSE to "no" ?
#       If so, calculate the number of scripts and the incremental step
#
if [ "$VERBOSE" = no ]; then
    if [ -e /proc/progress ]; then
        set `ls -1 /etc/rc$runlevel.d/S* | wc`
        numscripts=$1
        PROGRESS_incstep=`expr 90 / $1`
        PROGRESS_value=10
        PROGRESS=yes
        export PROGRESS_value PROGRESS_incstep
    fi
fi
export VERBOSE PROGRESS

#
#	Call all parts in order.
#
for i in /etc/rcS.d/S??*
do
	# Ignore dangling symlinks for now.
	[ ! -f "$i" ] && continue

	# Handle verbosity
	[ "$VERBOSE" = very ] && echo "INIT: Running $i..."
	if [ "$PROGRESS" = yes ]; then
		export PROGRESS_value=`expr $PROGRESS_value + $PROGRESS_incstep`
		echo "$PROGRESS_value Starting $i..." >/proc/progress
	fi

	case "$i" in
		*.sh)
			# Source shell script for speed.
			(
				trap - INT QUIT TSTP
				set start
				. $i
			)
			;;
		*)
			# No sh extension, so fork subprocess.
			$i start
			;;
	esac

        #
        # Report status based on result code
        #
        result=$?
        if [ "$PROGRESS" = yes ]; then
                if [ "$result" = 0 ]; then
                    echo "=s" >/proc/progress
                else
                    echo "=f" >/proc/progress
                fi
        fi
done

#
#	For compatibility, run the files in /etc/rc.boot too.
#
[ -d /etc/rc.boot ] && run-parts /etc/rc.boot

#
#	Finish setup if needed. The comment above about
#	/sbin/unconfigured.sh applies here as well!
#
if [ -x /sbin/setup.sh ]
then
  /sbin/setup.sh
fi

так же в Inittab ниже он запускает:

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

посмотрел его 1\ext-root\etc\init.d\rc

#!/bin/sh
#
# rc		This file is responsible for starting/stopping
#		services when the runlevel changes.
#
#		Optimization feature:
#		A startup script is _not_ run when the service was
#		running in the previous runlevel and it wasn't stopped
#		in the runlevel transition (most Debian services don't
#		have K?? links in rc{1,2,3,4,5} )
#
# Author:	Miquel van Smoorenburg <miquels@cistron.nl>
#		Bruce Perens <Bruce@Pixar.com>
#
# Version:	@(#)rc  2.78  07-Nov-1999  miquels@cistron.nl
#

. /etc/default/rcS
export VERBOSE

#
# Start script or program.
#
startup() {
  case "$1" in
	*.sh)
		sh "$@"
		;;
	*)
		"$@"
		;;
  esac
}

  # Ignore CTRL-C only in this shell, so we can interrupt subprocesses.
  trap ":" INT QUIT TSTP

  # Set onlcr to avoid staircase effect.
  stty onlcr 0>&1

  # Now find out what the current and what the previous runlevel are.

  runlevel=$RUNLEVEL
  # Get first argument. Set new runlevel to this argument.
  [ "$1" != "" ] && runlevel=$1
  if [ "$runlevel" = "" ]
  then
	echo "Usage: $0 <runlevel>" >&2
	exit 1
  fi
  previous=$PREVLEVEL
  [ "$previous" = "" ] && previous=N

  export runlevel previous

  # Is there an rc directory for this new runlevel?
  if [ -d /etc/rc$runlevel.d ]
  then
	# First, run the KILL scripts.
	if [ $previous != N ]
	then
		for i in /etc/rc$runlevel.d/K[0-9][0-9]*
		do
			# Check if the script is there.
			[ ! -f $i ] && continue

			# Stop the service.
			startup $i stop
		done
	fi
	# Now run the START scripts for this runlevel.
	for i in /etc/rc$runlevel.d/S*
	do
		[ ! -f $i ] && continue

		if [ $previous != N ] && [ $previous != S ]
		then
			#
			# Find start script in previous runlevel and
			# stop script in this runlevel.
			#
			suffix=${i#/etc/rc$runlevel.d/S[0-9][0-9]}
			stop=/etc/rc$runlevel.d/K[0-9][0-9]$suffix
			previous_start=/etc/rc$previous.d/S[0-9][0-9]$suffix
			#
			# If there is a start script in the previous level
			# and _no_ stop script in this level, we don't
			# have to re-start the service.
			#
			[ -f $previous_start ] && [ ! -f $stop ] && continue
		fi
		case "$runlevel" in
			0|6)
				startup $i stop
				;;
			*)
				startup $i start
				;;
		esac
	done
  fi
# eof /etc/init.d/rc

там ли я вообще ищу? К слову, в той же папке ext-root есть 2 файлика вне папок под названием «linuxrc» и «tmp»: https://imgur.com/GHv9Wk0 может это тоже файлик конфигурации?

JeezyWonder
() автор топика
Ответ на: комментарий от anonymous

Упаси боже, это японский мафон, пришел из Джапании заблоченный, так как нет флешки

JeezyWonder
() автор топика
Ответ на: комментарий от JeezyWonder

Да, всё верно. Всё это shell скрипты (не си :) ). Уже можно посмотреть в

/sbin/unconfigured.sh
/etc/rc.boot
а таке файлы в /etc/rcS.d/* и /etc/rc?*

Найти бы ещё initrd (если он используется), там тоже будет структура директорий ( /etc /lib /usr /var и тд..) Этот образ загружается первый, в нём тоже может быть проверка на ключ.

CrazyAlex25 ★★★
()
Ответ на: комментарий от CrazyAlex25

спасибо Алекс, файлов unconfigured.sh и rc.boot нету, странно, зачем он тогда на них ссылается, ну там проверка как я понял, он сам проверяет есть они или нет если я не ошибаюсь. посмотрел папки rcs.D и RC. Вообщем в папке RCS.d есть такие файлика как:

S03udev
S30ramdisk
S38devpts.sh
S45mountnfs.sh
S97sgx_boot.sh

это какие то шелл скрипты для загрузки ядра?? К слову файлик интересный

S97sgx_boot.sh

ссылаеется на некий insmod_sgx.sh и в этом файлике комментарии на японском а не как обычно на аглийском, получается писали его японцы, т.е файл не из стандартном библиотеки, я к тому, что ключ 100% написан был японцами

#!/bin/sh
#/***************************************************************/
#/*	著作権所有者:	アイシンAW(株)				*/
#/*	プログラム名:	sgx_boot.sh				*/
#/***************************************************************/

#PATH=/sbin:/bin:/usr/sbin:/usr/bin

do_start ()
{(
	# 環境変数の設定

	#デバイスドライバロード
	sh /vns/pmng/script/insmod_sgx.sh start &

	return 0
)}

case "$1" in
  start)
	do_start
	exit $?
	;;
  *)
	exit 0
	;;
esac

В свою очередь, файлик insmod_sgx.sh ведет нас к

 #!/bin/sh
#/***************************************************************/
#/*	著作権所有者:	アイシンAW(株)				*/
#/*	プログラム名:	insmod_sgx.sh				*/
#/***************************************************************/

#PATH=/sbin:/bin:/usr/sbin:/usr/bin

do_start ()
{(
	# 環境変数の設定

	#デバイスドライバロード
        #SGX関連
	insmod /vns/ko/pvrsrvkm.ko
	/vns/ko/pvrsrvinit

        return 0
)}

case "$1" in
  start)
	do_start
	exit $?
	;;
  *)
	exit 0
	;;
esac

insmod /vns/ko/pvrsrvkm.ko /vns/ko/pvrsrvinit как я понял .ko это файл ядра? открыл я pvrsrvkm.ko в Ida, там очень много функций, но к сожалению имеют названия на английском, похожи на опен сурс коды. Так же в этой папке vns/ko очень много .ko файлов, помимо них еще есть .bin файл RTFM_SH4A_RCH100 похожий на прошивку микрухи мафона. Вообще там ли я, и что он закгружает из этой папки и что должен грузить дальше? Пока очень много всего, еще раз спасибо за помощь

JeezyWonder
() автор топика
Ответ на: комментарий от sogadis982

Я понимаю, к чему грубить и тыкать? Может и быть, а может и не быть, и что теперь ничего не делать? Само программирование так и работает в 80% случаев ты не знашь получится ли что-то новое в итоге или нет, единственный способ узнать - попробовать

JeezyWonder
() автор топика
Ответ на: комментарий от CrazyAlex25

Алекс, а есть ли возможность воспользоваться вашими услугами как коуча в линуксе(если таковые имеются) не бесплатно конечно, сумму можете сами назавать, если интересно можем связаться

JeezyWonder
() автор топика

Так и хочется помочь советам ворам и скупщикам краденого. Где эти сраные модераторы, которые удаляют половину постов, а подобный трэш лелеют и холют? Этот форум вообще уже превратился в сборище гопоты, хамов и идиотов. Уже и не встретишь почти нормального человека. А все потому, что нельзя гопоту модераторами делать. А в модераторах ведь одна гопота. Да и хозяин такой же. А когда-то было весело.

anonymous
()
Ответ на: комментарий от JeezyWonder

Предложение не по адресу - я знаю линукс лишь в общих чертах. Но готов помочь здесь, на форуме.

Если есть возможность прочесть ERC код, то вот программа для подсчета кода разблокировки Mafon_calculator.zip

CrazyAlex25 ★★★
()
Ответ на: комментарий от CrazyAlex25

Это кальк на старые мафоны, в новых они алгоритм подсчета поменяли, кстати как раз таки это говорит нам о том что алгоритм внутри, а не как некоторые «умники» тут говорили, что его может вообще не быть. Алекс, а какой скрипт или файлик отвечает за тач скрин функцию? известно что вызов окна с ERC кодом осуществляется с помощью нажатия 4ех раз пальцем в опредленном месте на экране, потмоу я думаю в функции он бы на этот скрипт ссылался

JeezyWonder
() автор топика
Ответ на: комментарий от JeezyWonder

Встраиваемые решения очень сильно отличаются от настольных. Даже тач может быть подключен по разному (например какой-нить i2c, SPI, или что там еще есть). Если в настольных дистрибутивах за это отвечает Xorg (libinput), то там могли натворить всё что угодно.

А нет ли на магнитоле (на плате) UART? Тогда можно было бы изменить loading.kwi, подправить u-boot чтобы выводить консоль на UART. Тогда смог бы смотреть на процессы живьём. А то без эмулятора очень муторно это всё.

CrazyAlex25 ★★★
()
Ответ на: комментарий от anonymous

Штатный фирменный ЦД стоит как шасси от боинга.

А мне вот хочется бентли. Но по-мне он стоит, как целый боинг. Мне что теперь идти воровать его?

разбил морду магнитолы. Ну, ночевали в машине в полях/лесах/огородах, впотьмах саданули. Новая каталожная стоит как почку продать.

Внезапно, за расп*во надо платить! Лол

seiken ★★★★★
()
Ответ на: комментарий от CrazyAlex25

Алекс даже если и есть, я не могу у него не U-boot не u-image Найти, то есть как он OS загружает, я ничего не пойму.

JeezyWonder
() автор топика
Ответ на: комментарий от JeezyWonder

В архиве я не нашёл ядра и initrd. В vns лежит java программа. Возможно это и есть вся графическая часть мультимедии.

Но интересно как загружается образ: если он просит пароль на стадии загрузки, то это где-то в initrd. Если позже, то в этом образе. Доступны какие-нибудь ещё функции или только ждёт пароль?

Что за модель мультимедии?

CrazyAlex25 ★★★
()
Последнее исправление: CrazyAlex25 (всего исправлений: 1)
Ответ на: комментарий от JeezyWonder

а вообще реально, что ядро и os подгрудается из мафона?

JeezyWonder
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.