Новогоднее исследование ADSL-роутера на базе Linux — 0x4 — модифицируем файловую систему



0x0 — введение
0x1 — разбираем 🙂
0x2 — знакомимся с программной частью
0x3 — формат прошивки
0x4 — модифицируем файловую систему

Вчера мы узнали, что файл прошивки нашего модема имеет следующую структуру:

1. 256-байтный заголовок (bcmtag)
2. CFE (Bootloader)
3. образ корневой файловой системы (тип файловой системы: SquashFs)
4. сжатый образ ядра Linux

Причём, в bcmtag хранится вся нужная информация о длинах и контрольных суммах входящих в прошивку образов.
Итак, первым делом, нам нужно вытащить из файла прошивки, входящие в него образы CFE, коревой файловой системы и сжатого ядра.

В принципе, можно было воспользоваться существующими утилитами, но для более близкого знакомства с данным вопросом — я написал свою собственную 🙂

ParseImage.zip

Это проект под VC2008, который можно скомпилировать в виде консольных утилит:

ParseImage.exe — принимает на вход единственный параметр — название файла прошивки, выводит информацию из заголовка и выдаёт 4/5 файлов, содержимого прошивки:
bcm.bin — заголовок (256 байт)
cfe.bin — CFE
sqsh.bin — корневая файловая система
kernel.bin — образ ядра
(для прошивки D-link-ов появляется ещё пятый файл — name.bin)

crc.exe — принимает на вход название файла и выдаёт его контрольную CRC-сумму

packImage.exe — принимает на вход 4/5 параметров — файлы, которые нужно склеить в прошивку.
пример:

packImage.exe bcm.bin cfe.bin sqsh.bin kernel.bin

для D-link-ов можно задать пятый параметр — 32-байтный файл с названием

packImage.exe bcm.bin cfe.bin sqsh.bin kernel.bin name.bin

Т.о. берём утилиту ParseImage.exe и натравим её на файл прошивки:

C:\temp\ParseImage\Release> ParseImage.exe zxdsl.bin

[i] Simple Firmware Parser.
[i] file: zxdsl.bin
[i] Open file...
[i] file size: 1889022
[i] bcmtag:
tagVersion: 		6
signature_1: 		ZXDSL831AIIE09
signature_2: 		BOTH
chipId: 		6338
boardId: 		96338L-2M-8M
bigEndian: 		1
totalImageLen: 		1888766
cfeAddress: 		3217031168
cfeLen: 		63324
rootfsAddress: 		3217096960
rootfsLen: 		1273856
kernelAddress: 		3218370816
kernelLen: 		551586
dualImage: 		0
inactiveLen: 		0
reserved: 		
imageValidationToken: 	DB 8D 04 D5 22 D2 E8 4D 0B E6 B8 F4 00 00 00 00 00 00 00 00 
tagValidationToken: 	4F BA 75 F1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

[i] Ok. Size good for: Broadcom!
[i] CRC file		: 0x47FC88F0
[i] CRC bcmtag		: 0x4FBA75F1
[i] CRC image		: 0xDB8D04D5
[i] CRC sqsh		: 0x22D2E84D
[i] CRC kernel		: 0x0BE6B8F4
[i] Close file.
[i] Done.

https://robocraft.ru

Итак, прошивку распаковали 🙂

самый простой вариант внедрения своего кода в систему — это модификация файловой системы, которая находится в sqsh.bin

посмотрим начало файла:

$ hexdump -n 256 -C sqsh.bin 
00000000  73 71 73 68 00 00 01 53  00 13 65 51 00 13 65 4d  |sqsh...S..eQ..eM|
00000010  00 00 00 00 00 13 36 98  00 13 54 0e 00 02 00 00  |......6...T.....|
00000020  b3 e0 00 10 51 01 00 47  a5 21 66 00 00 00 00 00  |....Q..G.!f.....|
00000030  00 1d 65 00 01 00 00 00  00 00 00 00 13 65 4d 5d  |..e..........eM]|
00000040  00 00 08 00 00 11 88 06  e7 b9 9d e4 b6 a2 ce 06  |................|
00000050  a0 8c f4 e8 56 5c e8 6a  f7 da 91 85 01 bb 66 ec  |....V\.j......f.|
00000060  5f 8c a5 ec e9 63 a8 2b  3a be 86 b8 a2 ec 12 72  |_....c.+:......r|
00000070  ac 6e 3f e0 ed 21 72 85  70 9e bc a1 7e a2 cf 58  |.n?..!r.p...~..X|
00000080  a9 94 99 72 41 07 45 0f  6c 30 7b f2 57 d4 0a 45  |...rA.E.l0{.W..E|
00000090  09 54 b4 0c 7e 0e 92 0e  00 5d 00 00 08 00 00 11  |.T..~....]......|
000000a0  88 06 e7 b9 9d e4 b6 a2  ce 06 a0 8c f4 e8 56 5c  |..............V\|
000000b0  e8 6a f7 da 91 85 01 bb  66 ec 5f 8c a5 ec e9 63  |.j......f._....c|
000000c0  a8 2b 3c 2a cb d4 e3 37  ae 08 ed 25 0e 32 7f 25  |.+<*...7...%.2.%|
000000d0  ae f0 fb ac 84 8c a5 4e  3e 0f d5 ea cd 5a 70 70  |.......N>....Zpp|
000000e0  41 b3 3a 58 eb f1 cc fc  df 5d b2 0e 67 a1 58 bb  |A.:X.....]..g.X.|
000000f0  64 c8 00 5d 00 00 08 00  00 11 88 42 46 3d f4 18  |d..].......BF=..|

Как видите — в самом начале файла находится строчка sqsh, которая обозначает, что перед нами раздел в файловой системе Squashfs

Squashfs (.sfs) — сжимающая файловая система для Линукс, предоставляющая доступ к данным в режиме «только для чтения». Squashfs сжимает файлы, индексные дескрипторы и каталоги, а также поддерживает блоки размером до 1024 Кбайт для лучшего сжатия.

Squashfs предназначена для широкого использования файловых систем «только для чтения», а также в ограниченных по размеру блочных устройствах/системах хранения (во встраиваемых системах), где необходимы низкие затраты на производство. Стандартная версия Squashfs использует алгоритм сжатия gzip, но существует проект, позволяющий использовать алгоритм сжатия LZMA.

Ссылки
http://squashfs.sourceforge.net
http://www.squashfs-lzma.org
http://www.elinux.org/Squash_FS_Howto
http://en.wikipedia.org/wiki/SquashFS

Распаковка файловой системы

распаковать файловую систему получится только под Linux-ом, просто же получить информацию можно и под виндой — для этого можно использовать squashfs-tools-win32.

для получения информации нужно запустить утилиту unsquashfs с параметром -s

C:\utils\squashfs-tools> unsquashfs.exe -s sqsh.bin

Found a valid big endian SQUASHFS 2:0 superblock on sqsh.bin.
Creation or last append time Sun Feb  3 05:05:26 2008
Filesystem is not exportable via NFS
Inodes are uncompressed
Data is compressed
Check data is not present in the filesystem
Fragments are not present in the filesystem
Always_use_fragments option is not specified
Duplicates are removed
Filesystem size 1241.33 Kbytes (1.21 Mbytes)
Block size 65536
Number of fragments 0
Number of inodes 339
Number of uids 1
Number of gids 0

под Ubuntu сначала нужно установить squashfs-tools:

sudo apt-get install squashfs-tools
$ unsquashfs -s sqsh.bin 
Reading a different endian SQUASHFS filesystem on sqsh.bin
Found a valid big endian SQUASHFS 2:0 superblock on sqsh.bin.
Creation or last append time Sun Feb  3 05:05:26 2008
Filesystem is not exportable via NFS
Inodes are uncompressed
Data is compressed
Check data is not present in the filesystem
Fragments are not present in the filesystem
Always_use_fragments option is not specified
Duplicates are removed
Filesystem size 1241.33 Kbytes (1.21 Mbytes)
Block size 65536
Number of fragments 0
Number of inodes 339
Number of uids 1
Number of gids 0

распаковку необходимо осуществлять под root-ом:

# unsquashfs sqsh.bin 
Reading a different endian SQUASHFS filesystem on sqsh.bin

затем будет множество сообщений об ошибках распаковки:

zlib::uncompress failed, unknown error -3

и в самом конце

created 202 files
created 26 directories
created 60 symlinks
created 50 devices
created 1 fifos

В общем, последняя версия squashfs-tools (4.0) не работает.
Справедливости ради, нужно отметить, что все версии squashfs-tools представленные на странице squashfs.sourceforge.net не могут распаковать файловую систему. Дело в том, что для сжатия, в данном случае, используется LZMA.

LZMA (Lempel-Ziv-Markov chain-Algorithm) — алгоритм сжатия данных, разрабатываемый с 2001 года. Этот алгоритм, используется в архиваторе 7-Zip для создания сжатых архивов в формате 7z. Алгоритм основан на схеме сжатия данных по словарю, и обеспечивает высокий коэффициент сжатия (превышающий коэффициент, получаемый при сжатии с использованием bzip2), а также позволяет использовать словари различного размера.

Ссылки
LZMA SDK
PyLZMA — библиотека для Python

Я перепробовал массу вариантов распаковки. Пытался накладывать LZMA-патчи.
Пробовал другие варианты пропатченых утилит из
Firmware Modification Kit

Оказывается — я повторил попытки французской команды neufbox4.org

Но, в итоге, только два варианта оказались рабочими:
1. использовать утилиту unsquashfs (для SqashFS v. 2.0 ), которую выложил Michael V. Pudeev
2. использовать скрипт на питоне unsquash35.py
от neufbox4.org

в данном случае, придётся установить сам питон и библиотеку pylzma:
python
python-dev
python-setuptools
устновка библиотеки:

easy_install pylzma

Итак, используем unsquashfs версии 1.5 с поддержкой LZMA:

# ./unsquashfs sqsh.bin 
Reading a different endian SQUASHFS filesystem on sqsh.bin

created 202 files
created 26 directories
created 60 symlinks
created 50 devices
created 1 fifos

ошибок распаковки нет. Корневая файловая система распаковалась и находится в директории
squashfs-root

Раз мы распаковали корневую директорию, то самое время попробовать внести в неё какие-нибудь изменения 🙂
первым делом отредактируем
webs/main.html
находим заголовок в теге

</pre>
<p> и добавляем <b>» — RoboCraft»</b><br />
тээкс — теперь напишем простенький скрипт и поместим в<br />
<b>usr/bin/</b><br />
назовём его mytest:</p>
<pre class="EnlighterJSRAW">touch mytest</pre>
<p>сделаем исполняемым</p>
<pre class="EnlighterJSRAW">chmod 755 mytest</pre>
<p>и вставим пару строчек:</p>
<pre class="EnlighterJSRAW">#!/bin/sh

echo "RoboCraft is cool!"</pre>
<p>для начала — достаточно 🙂</p>
<p><b>Упаковка файловой системы</b></p>
<p>Теперь необходимо запаковать изменённую систему обратно 🙂</p>
<p>С запаковкой ситуация абсолютно такая же, как и с распаковкой.<br />
В общем, чтобы запаковать нужно воспользоваться утилитой mksquashfs версии 2.0 с поддержкой LZMA.<br />
Скачать её (в комплекте с unsquashfs) можно здесь:<br />
<b><a href="/files/embedded/soft/sqsh-tools-dlink2500.tar.gz">sqsh-tools-dlink2500.tar.gz</a></b></p>
<blockquote><p>сразу она у вас, скорее всего не запустится, т.к. ей для работы требуется пятая версия стандартной библиотеки.<br />
Посмотреть какие библиотеки требуются для работы программы можно с помощью команды <b>ldd</b>:</p>
<pre class="EnlighterJSRAW"># ldd ./mksquashfs
	linux-gate.so.1 =>  (0x00ed8000)
	libz.so.1 => /lib/libz.so.1 (0x00451000)
	libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00742000)
	libm.so.6 => /lib/libm.so.6 (0x00a27000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00110000)
	libc.so.6 => /lib/libc.so.6 (0x00890000)
	/lib/ld-linux.so.2 (0x0081e000)</pre>
<p>так что сначала придётся установить эту библиотеку:</p>
<pre class="EnlighterJSRAW">$ sudo apt-get install libstdc++5</pre>
</blockquote>
<p>Затем нужно передать утилите mksquashfs целый ряд параметров 🙂</p>
<pre class="EnlighterJSRAW"># ./mksquashfs squashfs-root/ sq3.bin -be  -no-fragments -noI -all-root -noappend -lzma -b 65536</pre>
<p>и… у нас появляется новый файл корневой файловой системы:<br />
<b><a href="/files/embedded/zxdsl831/sq3.zip">sq3.bin</a></b></p>
<p>Остальные части прошивки не трогали, так что остаётся просто собрать прошивку с обновлённой файловой системой 🙂</p>
<p>Для этого использую свою утилиту <b>packImage.exe</b>:</p>
<pre class="EnlighterJSRAW">C:\temp\ParseImage\Release> packImage.exe bcm.bin cfe.bin sq3.bin kernel.bin 
[i] Make fimware.
[i] bcm file: bcm.bin
[i] file size: 256
[i] cfe file: cfe.bin
[i] file size: 63324
[i] sqsh file: sq3.bin
[i] file size: 1273856
[i] kernel file: kernel.bin
[i] file size: 551586
[i] result size: 1889022
[i] CRC image		: 0x36491756
[i] CRC sqsh		: 0x901858BB
[i] CRC kernel		: 0x0BE6B8F4
[i] update size...
[i] update image CRC...
[i] update sqsh CRC...
[i] update kernel CRC...
[i] CRC header		: 0xF5B4BD5D
[i] update header CRC...
[i] write file: result.bin
[i] Done.

https://robocraft.ru</pre>
<p>на выходе получаем файл <b><a href="/files/embedded/zxdsl831/result-sq3.zip">result.bin</a></b> того же размера, что и исходная прошивка (1 889 022 байт)</p>
<blockquote><p><b>при сборке своей прошивки необходимо:</b><br />
<b>1.</b> объединить bcm, cfe, rootFS и Kernel  в один файл.<br />
<b>2.</b> записать в bcm данные о длинах составляющих: totalImageLen, cfe, rootFS, Kernel<br />
<b>3.</b> рассчитать и записать в bcm CRC-суммы составляющих: Image, rootFS, Kernel<br />
<b>4.</b> рассчитать и записать в bcm CRC-сумму самого заголовка (т.е. первых 236 байт получившегося файла)</p>
<p>моя утилита просто считывает в общий буфер содержимое задаваемых в виде параметров файлов.<br />
да-да — я не стал париться и не генерирую bcm самостоятельно, а тоже его считываю (первый параметр программы)<br />
далее, делаю все нужные изменения в этом буфере (записываю по нужным смещениям bce длины и CRC-суммы).<br />
И всё 🙂 Остаётся всего-лишь сохранить буфер в файл result.bin 😉</p></blockquote>
<p>Остаётся загрузить её в модем 🙂 Идём в веб-интерфейс и щёлкаем на обновление прошивки.<br />
Выбираем наш файл. И ждём. Прошивка грузится, модем перезагружается…<br />
Обновляем страничку веб-интерфейса:<br />
<img decoding="async" src="/files/embedded/zxdsl831/2http-robocraft.png" /><br />
заголовок есть!</p>
<p>теперь посмотрим скрипт. Подключаемся телнетом:</p>
<pre class="EnlighterJSRAW"># cd /usr/bin
# ls -l
lrwxrwxrwx    1 0        0              17 logger -> ../../bin/busybox
-rwxrwxrwx    1 0        0              37 mytest
lrwxrwxrwx    1 0        0              17 tftp -> ../../bin/busybox
lrwxrwxrwx    1 0        0              17 tty -> ../../bin/busybox
lrwxrwxrwx    1 0        0              17 ftpget -> ../../bin/busybox
lrwxrwxrwx    1 0        0              17 [ -> ../../bin/busybox
lrwxrwxrwx    1 0        0              17 expr -> ../../bin/busybox
lrwxrwxrwx    1 0        0              17 test -> ../../bin/busybox

# cat mytest
#!/bin/sh

echo "RoboCraft is cool!"

# mytest
RoboCraft is cool!</pre>
<p>ураааааааааа! победа 🙂</p>
<p>далее: <a href="/electronics/413.html">0x5 — пишем первую программу</a></p>
<p><b>Ссылки</b><br />
http://squashfs.sourceforge.net<br />
http://www.neufbox4.org<br />
http://pudeev.livejournal.com/31111.html</p>
<p><b>Программы:</b><br />
<a href="/files/embedded/soft/ParseImage02.zip">ParseImage.zip</a><br />
<a href="/files/embedded/soft/squashfs-tools-win32.zip">squashfs-tools-win32</a><br />
<a href="/files/embedded/soft/sqsh-tools-dlink2500.tar.gz">sqsh-tools-dlink2500.tar.gz</a></p>
</div>


<div style="height:16px" aria-hidden="true" class="wp-block-spacer"></div>


<div style="color:#777777" class="wp-elements-56027dd407a86ac0d105e80209b0097d taxonomy-post_tag has-text-color wp-block-post-terms has-small-font-size"><a href="https://robocraft.ru/tag/adsl-%d1%80%d0%be%d1%83%d1%82%d0%b5%d1%80" rel="tag">ADSL-роутер</a><span class="wp-block-post-terms__separator">, </span><a href="https://robocraft.ru/tag/bcmtag" rel="tag">BCMTAG</a><span class="wp-block-post-terms__separator">, </span><a href="https://robocraft.ru/tag/cfe" rel="tag">CFE</a><span class="wp-block-post-terms__separator">, </span><a href="https://robocraft.ru/tag/embedded" rel="tag">embedded</a><span class="wp-block-post-terms__separator">, </span><a href="https://robocraft.ru/tag/lzma" rel="tag">LZMA</a><span class="wp-block-post-terms__separator">, </span><a href="https://robocraft.ru/tag/squashfs" rel="tag">Squashfs</a><span class="wp-block-post-terms__separator">, </span><a href="https://robocraft.ru/tag/zxdsl831" rel="tag">ZXDSL831</a><span class="wp-block-post-terms__separator">, </span><a href="https://robocraft.ru/tag/%d0%b8%d1%81%d1%81%d0%bb%d0%b5%d0%b4%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5" rel="tag">исследование</a><span class="wp-block-post-terms__separator">, </span><a href="https://robocraft.ru/tag/%d0%bf%d1%80%d0%be%d1%88%d0%b8%d0%b2%d0%ba%d0%b0" rel="tag">прошивка</a><span class="wp-block-post-terms__separator">, </span><a href="https://robocraft.ru/tag/%d1%88%d0%b0%d0%b3-%d0%b7%d0%b0-%d1%88%d0%b0%d0%b3%d0%be%d0%bc" rel="tag">шаг за шагом</a></div>


<hr class="wp-block-separator is-style-wide"/>



<div class="is-layout-constrained wp-block-group">
<div class="is-layout-flex wp-block-group"><div style="font-style:italic;font-weight:400;" class="has-text-color has-cyan-bluish-gray-color wp-block-post-date has-small-font-size"><time datetime="2011-01-04T22:24:14+02:00">4 января, 2011</time></div>

<div class="wp-block-post-author has-small-font-size"><div class="wp-block-post-author__content"><p class="wp-block-post-author__name">noonv</p></div></div>

<div style="font-style:normal;font-weight:600" class="taxonomy-category wp-block-post-terms has-small-font-size"><a href="https://robocraft.ru/category/electronics" rel="tag">Электроника</a></div></div>



<div style="height:18px" aria-hidden="true" class="wp-block-spacer"></div>



<!-- Yandex.RTB R-A-61645-3 -->
<div id="yandex_rtb_R-A-61645-3"></div>
<script>window.yaContextCb.push(()=>{
  Ya.Context.AdvManager.render({
    renderTo: 'yandex_rtb_R-A-61645-3',
    blockId: 'R-A-61645-3'
  })
})</script>


<div class="wp-block-post-comments">
<!-- You can start editing here. -->

	<h3 id="comments">
		0 комментариев на «“Новогоднее исследование ADSL-роутера на базе Linux — 0x4 — модифицируем файловую систему”»	</h3>

	<div class="navigation">
		<div class="alignleft"></div>
		<div class="alignright"></div>
	</div>

	<ol class="commentlist">
			<li id="comment-787" class="comment byuser comment-author-burjui even thread-even depth-1">
			<article id="div-comment-787" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/665c781b5719840c38cad43a029eefa5?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/665c781b5719840c38cad43a029eefa5?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">burjui</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-787"><time datetime="2011-01-05T11:02:44+02:00">2011-01-05 в 11:02</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>Будучи линуксоидом, чрезвычайно рад видеть здесь такие статьи. С трудом удерживаю себя от насилия над старым D-Link 2500U (:</p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		</li><!-- #comment-## -->
		<li id="comment-792" class="comment byuser comment-author-rammires odd alt thread-odd thread-alt depth-1 parent">
			<article id="div-comment-792" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/a8b197104182d9b5ca744b03d2dd4f1e?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a8b197104182d9b5ca744b03d2dd4f1e?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">rammires</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-792"><time datetime="2011-01-06T06:45:28+02:00">2011-01-06 в 06:45</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>А собственно какими стандартными средствами под Linux-ом можно распаковать/запаковать прошивку? Можно подробнее.</p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		<ul class="children">
		<li id="comment-793" class="comment byuser comment-author-noonv bypostauthor even depth-2 parent">
			<article id="div-comment-793" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">noonv</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-793"><time datetime="2011-01-06T11:30:22+02:00">2011-01-06 в 11:30</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>как я понял — в любом случае, нужно скачивать squashfs-tools. В их составе идут патчи ядра, которые можно наложить на исходники ядра, пересобрать ядро и оно станет поддерживать Squashfs.<br />
Т.е. можно будет просто монтировать файлы-образы Squashfs в свою файловую систему.</p>
<p>Как видите — намного проще использовать готовые утилиты из <b>squashfs-tools</b>:<br />
<b>unsquashfs</b> — для распаковки и <b>mksquashfs</b> — для запаковки.</p>
<p>В данном случае трудность состояла именно в нахождении подходящих версий с поддержкой метода сжатия LZMA.</p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
		<li id="comment-802" class="comment byuser comment-author-rammires odd alt depth-2 parent">
			<article id="div-comment-802" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/a8b197104182d9b5ca744b03d2dd4f1e?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a8b197104182d9b5ca744b03d2dd4f1e?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">rammires</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-802"><time datetime="2011-01-07T16:40:30+02:00">2011-01-07 в 16:40</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>По поводу unsquashfs/mksquashfs я понял, но было не понятно чем заменить ParseImage.exe, но к счастью она успешно скомпилилась под Linux-ом…</p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
		<li id="comment-803" class="comment byuser comment-author-noonv bypostauthor even depth-2">
			<article id="div-comment-803" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">noonv</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-803"><time datetime="2011-01-07T16:51:38+02:00">2011-01-07 в 16:51</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>аааа 🙂 это хорошо — я Makefile не писал 🙂 но проблем с компиляцией под линуксом и не предвиделось 🙂</p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
</ul><!-- .children -->
</li><!-- #comment-## -->
		<li id="comment-818" class="comment byuser comment-author-himik odd alt thread-even depth-1 parent">
			<article id="div-comment-818" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/e98af953e014b3c12eb8ad2ca36dc9f5?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/e98af953e014b3c12eb8ad2ca36dc9f5?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">himik</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-818"><time datetime="2011-01-09T18:33:41+02:00">2011-01-09 в 18:33</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>Здравствуйте, с вашей программой ParseImage.exe возникла проблема она запускается и сразу же закрывается при этом никаких ошибок не выскакивает. </p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		<ul class="children">
		<li id="comment-819" class="comment byuser comment-author-noonv bypostauthor even depth-2">
			<article id="div-comment-819" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">noonv</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-819"><time datetime="2011-01-09T18:37:03+02:00">2011-01-09 в 18:37</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>может это из-за того, что она консольная? 😉 и соответсвенно запускать её нужно в командной строке, передавая в качестве единственного параметра название файла прошивки 🙂</p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
</ul><!-- .children -->
</li><!-- #comment-## -->
		<li id="comment-820" class="comment byuser comment-author-himik odd alt thread-odd thread-alt depth-1 parent">
			<article id="div-comment-820" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/e98af953e014b3c12eb8ad2ca36dc9f5?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/e98af953e014b3c12eb8ad2ca36dc9f5?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">himik</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-820"><time datetime="2011-01-09T20:22:21+02:00">2011-01-09 в 20:22</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>Вопрос №2 как установить unsquashfs версии 1.5 с поддержкой LZMA. Я ее скачал распоковал а как установить и использовать непойму(Ubuntu 10.4).</p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		<ul class="children">
		<li id="comment-827" class="comment byuser comment-author-noonv bypostauthor even depth-2">
			<article id="div-comment-827" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">noonv</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-827"><time datetime="2011-01-10T13:43:46+02:00">2011-01-10 в 13:43</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p><noindex><a href="http://robocraft.ru/blog/electronics/416.html#comment826" rel="nofollow">robocraft.ru/blog/electronics/416.html#comment826</a></noindex></p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
</ul><!-- .children -->
</li><!-- #comment-## -->
		<li id="comment-929" class="comment byuser comment-author-rusink odd alt thread-even depth-1 parent">
			<article id="div-comment-929" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/4102ff3b715388cb6e05010d0ee41715?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/4102ff3b715388cb6e05010d0ee41715?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">rusink</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-929"><time datetime="2011-02-05T12:28:23+02:00">2011-02-05 в 12:28</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>Здравствуйте! Утилита ParseImage.exe распаковала предложенный файл прошивки (предварительно помещенный в директорию Release) только запуском unpack.bat. Из-под командной строки (C:\temp\ParseImage\Release\ParseImage.exe zxdsl.bin) не получилось <[i]Error: cant open file: zxdsl.bin!> Подскажите, плз, что не так. Пробовал разобрать файлы других прошивок (описанного модема у меня нет, и он мне не нужен есть устройство ASUS WMVN25E2+/ Asus дает для него урезанные исходники.) D-link-овские файлы .bin открывает, но в результате — пустые .bin файлы ( кроме bcm.bin) Что надо изменить командах? Или она открывает только описанную прошивку? </p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		<ul class="children">
		<li id="comment-930" class="comment byuser comment-author-noonv bypostauthor even depth-2 parent">
			<article id="div-comment-930" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/0809decfa312b60f2faccac323cedc2a?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">noonv</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-930"><time datetime="2011-02-05T12:42:31+02:00">2011-02-05 в 12:42</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>утилита распаковывает только прошивку рассматриваемого модема (ZTE ZXDSL831AII) и схожих D-link-овских модемов (DSL-2500U).</p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
		<li id="comment-931" class="comment byuser comment-author-rusink odd alt depth-2">
			<article id="div-comment-931" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/4102ff3b715388cb6e05010d0ee41715?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/4102ff3b715388cb6e05010d0ee41715?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">rusink</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-931"><time datetime="2011-02-05T17:20:54+02:00">2011-02-05 в 17:20</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>Спасибо за оперативный ответ. И огромнейший респект за статью. Удивляюсь, когда только успел и с модемом разобраться и отличную статью написать. С утилитой разобрался. Она прекрасно открыла прошивку ASUS WMVN25E2+.Файловую систему извлек, теперь пытаюсь найти настройки wimax (есть мысль заставить этот залоченный девайс работать с другим оператором. Прецедент с usb модемами (Samsung SWC-U200) — есть. Настройки оператора спрятаны где-то в прошивке лог их показывает. Если сможешь в этом помочь разобраться буду очень признателен. Еще раз спасибо за статью!!!</p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
</ul><!-- .children -->
</li><!-- #comment-## -->
		<li id="comment-1701" class="comment byuser comment-author-vardan even thread-odd thread-alt depth-1 parent">
			<article id="div-comment-1701" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/a11a8c4b2336f5a3461c510c153452b9?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a11a8c4b2336f5a3461c510c153452b9?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">vardan</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-1701"><time datetime="2011-09-24T15:33:35+02:00">2011-09-24 в 15:33</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>Здравствуйте. Как можно распаковать прошивку для zte w300. ParseImage.exe кажется не справляется, только один файл созданный им имеет размер 1кб, все остальные три по 0кб. Оно имеет расширение release вот «w300.v803c12m.firmware.img.release». Может что-то надо модифицировать в вашем C/C++ коде?.. Спасибо.</p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		<ul class="children">
		<li id="comment-1702" class="comment byuser comment-author-admin odd alt depth-2 parent">
			<article id="div-comment-1702" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/7b598657ce9ab888b7632364938570c0?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/7b598657ce9ab888b7632364938570c0?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">admin</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-1702"><time datetime="2011-09-24T16:28:11+02:00">2011-09-24 в 16:28</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>похоже, другой не только проц, но и совсем другой формат прошивки.</p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
		<li id="comment-1704" class="comment byuser comment-author-vardan even depth-2">
			<article id="div-comment-1704" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/a11a8c4b2336f5a3461c510c153452b9?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a11a8c4b2336f5a3461c510c153452b9?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">vardan</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-1704"><time datetime="2011-09-24T17:27:09+02:00">2011-09-24 в 17:27</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>в коммандной строке набираю telnet 192.168.1.1, потом cat /proc/cpuinfo и вот что на экране:</p>
<blockquote><p>processor: 0<br />
cpu model: MIPS 4KEc V4.8<br />
BogoMIPS: 211.35<br />
wait instruction: no<br />
microsecond timers: yes<br />
extra interrupt vector: yes<br />
hardware watchpoint: yes<br />
VCED exceptions: not available<br />
VCEI exceptions: not available</p></blockquote>
<p> то есть процессор MIPS 4KEc V4.8. А что надо делать пожайлуста в каком направлении копать, очень хочу усвоить этот урок.Заранее спасибо.</p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
</ul><!-- .children -->
</li><!-- #comment-## -->
		<li id="comment-2355" class="comment byuser comment-author-l0pan odd alt thread-even depth-1">
			<article id="div-comment-2355" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/11f0b22e07a51a8c19b236df2ed6007b?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11f0b22e07a51a8c19b236df2ed6007b?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">l0pan</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-2355"><time datetime="2012-02-11T09:37:09+02:00">2012-02-11 в 09:37</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>Спасибо за статью. А вы не подскажите как сделать обратное действие: снять думп с текущей прошивки? Чтобы потом можно было к ней вернуться</p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		</li><!-- #comment-## -->
		<li id="comment-3432" class="comment byuser comment-author-degid even thread-odd thread-alt depth-1">
			<article id="div-comment-3432" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/410f70bf2da39d3ea6680560d36630ac?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/410f70bf2da39d3ea6680560d36630ac?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">degid</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-3432"><time datetime="2012-09-23T11:38:01+02:00">2012-09-23 в 11:38</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>При упаковке файловой системы, sq3.bin весит не 1.4 МБ, а 3,6 МБ… 🙁<br />
Прошивка для <noindex><a href="ftp://ftp.dlink.ru/pub/ADSL/DSL-2500U_BRU/Firmware/V.3-06-04-3H00/RU_DSL-2500U_306043H00.zip" rel="nofollow">DSL-2500U</a></noindex><br />
Упаковываю в fedora 16.1 x64<br />
В чем может быть проблема?</p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		</li><!-- #comment-## -->
		<li id="comment-3474" class="comment byuser comment-author-crynet odd alt thread-even depth-1">
			<article id="div-comment-3474" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/798a742a5b9dc1a65d4de1bc1dc5c2a3?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/798a742a5b9dc1a65d4de1bc1dc5c2a3?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">CryNet</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-3474"><time datetime="2012-10-10T18:59:10+02:00">2012-10-10 в 18:59</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>народ. Столкнулся с траблой. При вбиве команды ./mksquashfs squashfs-root/ sq3.bin -be -no-fragments -noI -all-root -noappend -lzma -b 65536<br />
Получаю на выходе ./mksquashfs squashfs-root/ sq3.bin -be -no-fragments -noI -all-root -noappend -lzma -b 65536<br />
./mksquashfs: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory</p>
<p>Либа libstdc++5 поставленна но при вбиве ldd ./mksquashfs вижу что ibstdc++.so.5 => not found. В чём трабла? ОС BT5r3</p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		</li><!-- #comment-## -->
		<li id="comment-4649" class="comment byuser comment-author-mannaz even thread-odd thread-alt depth-1 parent">
			<article id="div-comment-4649" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/191472ca1c386c3a625143d237411ff4?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/191472ca1c386c3a625143d237411ff4?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">mannaz</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-4649"><time datetime="2014-05-23T04:34:36+02:00">2014-05-23 в 04:34</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>Не знаю как у вас а у меня sqsh.bin открылся 7zip</p>
				</div><!-- .comment-content -->

				<div class="reply"><a rel="nofollow" class="comment-reply-login" href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">Войдите, чтобы ответить</a></div>			</article><!-- .comment-body -->
		<ul class="children">
		<li id="comment-4650" class="comment byuser comment-author-mannaz odd alt depth-2">
			<article id="div-comment-4650" class="comment-body">
				<footer class="comment-meta">
					<div class="comment-author vcard">
						<img alt='' src='https://secure.gravatar.com/avatar/191472ca1c386c3a625143d237411ff4?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/191472ca1c386c3a625143d237411ff4?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' loading='lazy' decoding='async'/>						<b class="fn">mannaz</b><span class="says">:</span>					</div><!-- .comment-author -->

					<div class="comment-metadata">
						<a href="https://robocraft.ru/electronics/411#comment-4650"><time datetime="2014-05-23T04:43:31+02:00">2014-05-23 в 04:43</time></a>					</div><!-- .comment-metadata -->

									</footer><!-- .comment-meta -->

				<div class="comment-content">
					<p>Тока посмотреть каталоги.</p>
				</div><!-- .comment-content -->

							</article><!-- .comment-body -->
		</li><!-- #comment-## -->
</ul><!-- .children -->
</li><!-- #comment-## -->
	</ol>

	<div class="navigation">
		<div class="alignleft"></div>
		<div class="alignright"></div>
	</div>

	<div id="respond" class="comment-respond">
		<h3 id="reply-title" class="comment-reply-title">Добавить комментарий <small><a rel="nofollow" id="cancel-comment-reply-link" href="/electronics/411#respond" style="display:none;">Отменить ответ</a></small></h3><p class="must-log-in">Для отправки комментария вам необходимо <a href="https://robocraft.ru/wp-login.php?redirect_to=https%3A%2F%2Frobocraft.ru%2Felectronics%2F411">авторизоваться</a>.</p>	</div><!-- #respond -->
	</div>


<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9788091858425972" crossorigin="anonymous"></script>
<!-- new_for_rc -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-9788091858425972" data-ad-slot="3210034690" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
</main>
</div>



<div class="is-layout-flow wp-block-column" style="flex-basis:33.33%"><div class="wp-block-template-part">
<div>
<!-- Yandex.RTB R-A-61645-2 -->
<div id="yandex_rtb_R-A-61645-2"></div>
<script>window.yaContextCb.push(()=>{
  Ya.Context.AdvManager.render({
    renderTo: 'yandex_rtb_R-A-61645-2',
    blockId: 'R-A-61645-2'
  })
})</script>
</div>



<p><strong>Arduino</strong></p>



<pre class="wp-block-preformatted has-medium-font-size"><a href="/arduino/14">Что такое Arduino?</a>
<a href="/arduino/18">Зачем мне Arduino?</a>
<a href="/arduino/1050">Начало работы с Arduino</a>
<a href="/arduino/2873">Для начинающих ардуинщиков</a>
<a href="/arduino/1010">Радиодетали (точка входа для начинающих ардуинщиков)</a>
<a href="/summary/">Первые шаги с Arduino</a>

</pre>



<p><strong>Разделы</strong></p>


<ul class="wp-block-categories-list wp-block-categories">	<li class="cat-item cat-item-3"><a href="https://robocraft.ru/category/arduino">Arduino</a>
</li>
	<li class="cat-item cat-item-5"><a href="https://robocraft.ru/category/arm">ARM</a>
</li>
	<li class="cat-item cat-item-14"><a href="https://robocraft.ru/category/beam">BEAM роботы</a>
</li>
	<li class="cat-item cat-item-8"><a href="https://robocraft.ru/category/robocraft">RoboCraft</a>
</li>
	<li class="cat-item cat-item-13"><a href="https://robocraft.ru/category/communication">Коммуникации</a>
</li>
	<li class="cat-item cat-item-4"><a href="https://robocraft.ru/category/computervision">Компьютерное зрение</a>
</li>
	<li class="cat-item cat-item-18"><a href="https://robocraft.ru/category/machinelearning">Машинное обучение</a>
</li>
	<li class="cat-item cat-item-10"><a href="https://robocraft.ru/category/mechanics">Механика</a>
</li>
	<li class="cat-item cat-item-12"><a href="https://robocraft.ru/category/news">Новости</a>
</li>
	<li class="cat-item cat-item-6"><a href="https://robocraft.ru/category/algorithm">Программирование</a>
</li>
	<li class="cat-item cat-item-7"><a href="https://robocraft.ru/category/projects">Проекты и идеи</a>
</li>
	<li class="cat-item cat-item-47"><a href="https://robocraft.ru/category/blog">Разное</a>
</li>
	<li class="cat-item cat-item-17"><a href="https://robocraft.ru/category/robosoft">Робософт</a>
</li>
	<li class="cat-item cat-item-16"><a href="https://robocraft.ru/category/robots">Роботы</a>
</li>
	<li class="cat-item cat-item-15"><a href="https://robocraft.ru/category/sensor">Сенсоры и датчики</a>
</li>
	<li class="cat-item cat-item-9"><a href="https://robocraft.ru/category/technology">Технологии</a>
</li>
	<li class="cat-item cat-item-11"><a href="https://robocraft.ru/category/electronics">Электроника</a>
</li>
</ul>

<ol class="has-excerpts wp-block-latest-comments"><li class="wp-block-latest-comments__comment"><article><footer class="wp-block-latest-comments__comment-meta"><a class="wp-block-latest-comments__comment-author" href="https://robocraft.ru/author/burjui">burjui</a> к <a class="wp-block-latest-comments__comment-link" href="https://robocraft.ru/arm/666#comment-5793">STM32: Урок 2 — Quickstart</a></footer><div class="wp-block-latest-comments__comment-excerpt"><p>Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…</p>
</div></article></li><li class="wp-block-latest-comments__comment"><article><footer class="wp-block-latest-comments__comment-meta"><a class="wp-block-latest-comments__comment-author" href="https://robocraft.ru/author/pavel">Pavel</a> к <a class="wp-block-latest-comments__comment-link" href="https://robocraft.ru/arm/666#comment-5792">STM32: Урок 2 — Quickstart</a></footer><div class="wp-block-latest-comments__comment-excerpt"><p>Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…</p>
</div></article></li><li class="wp-block-latest-comments__comment"><article><footer class="wp-block-latest-comments__comment-meta"><a class="wp-block-latest-comments__comment-author" href="https://robocraft.ru/author/north">North</a> к <a class="wp-block-latest-comments__comment-link" href="https://robocraft.ru/computervision/275#comment-5776">7. OpenCV шаг за шагом. Захват видео с камеры</a></footer><div class="wp-block-latest-comments__comment-excerpt"><p>если у вас черное окно попробуйте так. #include <opencv2/opencv.hpp> #include<iostream> #include <stdlib.h> #include <stdio.h> using namespace cv; using namespace std;…</p>
</div></article></li><li class="wp-block-latest-comments__comment"><article><footer class="wp-block-latest-comments__comment-meta"><a class="wp-block-latest-comments__comment-author" href="https://robocraft.ru/author/abelousov">abelousov</a> к <a class="wp-block-latest-comments__comment-link" href="https://robocraft.ru/machinelearning/3811#comment-5768">Установка TensorFlow на Raspberry Pi 3</a></footer><div class="wp-block-latest-comments__comment-excerpt"><p>Для Python 3.4: pip3 install tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl https://github.com/samjabrahams/tensorflow-on-raspberry-pi</p>
</div></article></li><li class="wp-block-latest-comments__comment"><article><footer class="wp-block-latest-comments__comment-meta"><a class="wp-block-latest-comments__comment-author" href="https://robocraft.ru/author/softcat">SoftCat</a> к <a class="wp-block-latest-comments__comment-link" href="https://robocraft.ru/blog/2911#comment-5763">Генератор синусоиды на Arduino или ЦАП R-2R</a></footer><div class="wp-block-latest-comments__comment-excerpt"><p>PORTB = (PORTB & 0b11100111) | (i & 0b00000011); А почему Вы обнуляете биты 3 и 4, а заполняете биты…</p>
</div></article></li></ol>

<p class="wp-block-tag-cloud"><a href="https://robocraft.ru/tag/3d-%d0%bf%d0%b5%d1%87%d0%b0%d1%82%d1%8c" class="tag-cloud-link tag-link-805 tag-link-position-1" style="font-size: 14.565517241379pt;" aria-label="3D-печать (135 элементов)">3D-печать</a>
<a href="https://robocraft.ru/tag/ai" class="tag-cloud-link tag-link-352 tag-link-position-2" style="font-size: 8.8689655172414pt;" aria-label="AI (34 элемента)">AI</a>
<a href="https://robocraft.ru/tag/android" class="tag-cloud-link tag-link-321 tag-link-position-3" style="font-size: 8.0965517241379pt;" aria-label="Android (28 элементов)">Android</a>
<a href="https://robocraft.ru/tag/arduino" class="tag-cloud-link tag-link-19 tag-link-position-4" style="font-size: 22pt;" aria-label="Arduino (791 элемент)">Arduino</a>
<a href="https://robocraft.ru/tag/bluetooth" class="tag-cloud-link tag-link-288 tag-link-position-5" style="font-size: 8.3862068965517pt;" aria-label="Bluetooth (30 элементов)">Bluetooth</a>
<a href="https://robocraft.ru/tag/craftduino" class="tag-cloud-link tag-link-247 tag-link-position-6" style="font-size: 8.3862068965517pt;" aria-label="CraftDuino (30 элементов)">CraftDuino</a>
<a href="https://robocraft.ru/tag/diy" class="tag-cloud-link tag-link-75 tag-link-position-7" style="font-size: 13.213793103448pt;" aria-label="DIY (97 элементов)">DIY</a>
<a href="https://robocraft.ru/tag/ide" class="tag-cloud-link tag-link-20 tag-link-position-8" style="font-size: 8.7724137931034pt;" aria-label="IDE (33 элемента)">IDE</a>
<a href="https://robocraft.ru/tag/irobot" class="tag-cloud-link tag-link-49 tag-link-position-9" style="font-size: 9.351724137931pt;" aria-label="iRobot (38 элементов)">iRobot</a>
<a href="https://robocraft.ru/tag/kinect" class="tag-cloud-link tag-link-511 tag-link-position-10" style="font-size: 9.6413793103448pt;" aria-label="Kinect (41 элемент)">Kinect</a>
<a href="https://robocraft.ru/tag/lego" class="tag-cloud-link tag-link-212 tag-link-position-11" style="font-size: 8.3862068965517pt;" aria-label="LEGO (30 элементов)">LEGO</a>
<a href="https://robocraft.ru/tag/opencv" class="tag-cloud-link tag-link-45 tag-link-position-12" style="font-size: 13.11724137931pt;" aria-label="OpenCV (95 элементов)">OpenCV</a>
<a href="https://robocraft.ru/tag/open-source" class="tag-cloud-link tag-link-235 tag-link-position-13" style="font-size: 9.7379310344828pt;" aria-label="Open Source (42 элемента)">Open Source</a>
<a href="https://robocraft.ru/tag/python" class="tag-cloud-link tag-link-192 tag-link-position-14" style="font-size: 11.28275862069pt;" aria-label="Python (61 элемент)">Python</a>
<a href="https://robocraft.ru/tag/raspberry-pi" class="tag-cloud-link tag-link-770 tag-link-position-15" style="font-size: 13.503448275862pt;" aria-label="Raspberry Pi (104 элемента)">Raspberry Pi</a>
<a href="https://robocraft.ru/tag/robocraft" class="tag-cloud-link tag-link-250 tag-link-position-16" style="font-size: 9.9310344827586pt;" aria-label="RoboCraft (44 элемента)">RoboCraft</a>
<a href="https://robocraft.ru/tag/ros" class="tag-cloud-link tag-link-195 tag-link-position-17" style="font-size: 14.662068965517pt;" aria-label="ROS (136 элементов)">ROS</a>
<a href="https://robocraft.ru/tag/swarm" class="tag-cloud-link tag-link-36 tag-link-position-18" style="font-size: 9.1586206896552pt;" aria-label="swarm (36 элементов)">swarm</a>
<a href="https://robocraft.ru/tag/%d0%b8%d0%ba" class="tag-cloud-link tag-link-133 tag-link-position-19" style="font-size: 9.351724137931pt;" aria-label="ИК (38 элементов)">ИК</a>
<a href="https://robocraft.ru/tag/%d0%b0%d0%b2%d1%82%d0%be%d0%bc%d0%b0%d1%82%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f" class="tag-cloud-link tag-link-39 tag-link-position-20" style="font-size: 14.468965517241pt;" aria-label="автоматизация (131 элемент)">автоматизация</a>
<a href="https://robocraft.ru/tag/%d0%b0%d0%bd%d0%b4%d1%80%d0%be%d0%b8%d0%b4" class="tag-cloud-link tag-link-40 tag-link-position-21" style="font-size: 11.186206896552pt;" aria-label="андроид (59 элементов)">андроид</a>
<a href="https://robocraft.ru/tag/%d0%b1%d0%b0%d0%bb%d0%b0%d0%bd%d1%81%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c" class="tag-cloud-link tag-link-64 tag-link-position-22" style="font-size: 8.2896551724138pt;" aria-label="балансировать (29 элементов)">балансировать</a>
<a href="https://robocraft.ru/tag/%d0%b1%d0%b8%d0%be%d0%bd%d0%b8%d0%ba%d0%b0" class="tag-cloud-link tag-link-73 tag-link-position-23" style="font-size: 14.951724137931pt;" aria-label="бионика (147 элементов)">бионика</a>
<a href="https://robocraft.ru/tag/%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d1%8f" class="tag-cloud-link tag-link-22 tag-link-position-24" style="font-size: 10.124137931034pt;" aria-label="версия (46 элементов)">версия</a>
<a href="https://robocraft.ru/tag/%d0%b2%d0%b8%d0%b4%d0%b5%d0%be" class="tag-cloud-link tag-link-280 tag-link-position-25" style="font-size: 13.503448275862pt;" aria-label="видео (104 элемента)">видео</a>
<a href="https://robocraft.ru/tag/%d0%b2%d0%be%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9" class="tag-cloud-link tag-link-82 tag-link-position-26" style="font-size: 13.503448275862pt;" aria-label="военный (103 элемента)">военный</a>
<a href="https://robocraft.ru/tag/%d0%b4%d0%b0%d1%82%d1%87%d0%b8%d0%ba" class="tag-cloud-link tag-link-95 tag-link-position-27" style="font-size: 8.6758620689655pt;" aria-label="датчик (32 элемента)">датчик</a>
<a href="https://robocraft.ru/tag/%d0%b4%d1%80%d0%be%d0%bd" class="tag-cloud-link tag-link-46 tag-link-position-28" style="font-size: 10.027586206897pt;" aria-label="дрон (45 элементов)">дрон</a>
<a href="https://robocraft.ru/tag/%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d1%84%d0%b5%d0%b9%d1%81" class="tag-cloud-link tag-link-300 tag-link-position-29" style="font-size: 8.8689655172414pt;" aria-label="интерфейс (34 элемента)">интерфейс</a>
<a href="https://robocraft.ru/tag/%d0%ba%d0%b0%d0%bc%d0%b5%d1%80%d0%b0" class="tag-cloud-link tag-link-59 tag-link-position-30" style="font-size: 10.510344827586pt;" aria-label="камера (50 элементов)">камера</a>
<a href="https://robocraft.ru/tag/%d0%ba%d0%b8%d0%b1%d0%b5%d1%80%d0%b2%d0%b5%d1%81%d0%bd%d0%b0" class="tag-cloud-link tag-link-871 tag-link-position-31" style="font-size: 15.048275862069pt;" aria-label="кибервесна (150 элементов)">кибервесна</a>
<a href="https://robocraft.ru/tag/%d0%ba%d0%be%d0%bd%d0%ba%d1%83%d1%80%d1%81" class="tag-cloud-link tag-link-206 tag-link-position-32" style="font-size: 8pt;" aria-label="конкурс (27 элементов)">конкурс</a>
<a href="https://robocraft.ru/tag/%d0%bc%d0%b0%d0%bd%d0%b8%d0%bf%d1%83%d0%bb%d1%8f%d1%82%d0%be%d1%80" class="tag-cloud-link tag-link-52 tag-link-position-33" style="font-size: 13.793103448276pt;" aria-label="манипулятор (111 элементов)">манипулятор</a>
<a href="https://robocraft.ru/tag/%d0%bc%d0%b0%d1%88%d0%b8%d0%bd%d0%bd%d0%be%d0%b5-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5" class="tag-cloud-link tag-link-698 tag-link-position-34" style="font-size: 12.055172413793pt;" aria-label="машинное обучение (73 элемента)">машинное обучение</a>
<a href="https://robocraft.ru/tag/%d0%bd%d0%b0%d1%88%d0%b5" class="tag-cloud-link tag-link-77 tag-link-position-35" style="font-size: 8.5793103448276pt;" aria-label="наше (31 элемент)">наше</a>
<a href="https://robocraft.ru/tag/%d0%bd%d0%b5%d0%b9%d1%80%d0%be%d0%bd%d0%bd%d0%b0%d1%8f-%d1%81%d0%b5%d1%82%d1%8c" class="tag-cloud-link tag-link-693 tag-link-position-36" style="font-size: 11.668965517241pt;" aria-label="нейронная сеть (66 элементов)">нейронная сеть</a>
<a href="https://robocraft.ru/tag/%d0%bf%d0%be%d0%b4%d0%b2%d0%be%d0%b4%d0%bd%d1%8b%d0%b9" class="tag-cloud-link tag-link-937 tag-link-position-37" style="font-size: 9.351724137931pt;" aria-label="подводный (38 элементов)">подводный</a>
<a href="https://robocraft.ru/tag/%d0%bf%d1%8b%d0%bb%d0%b5%d1%81%d0%be%d1%81" class="tag-cloud-link tag-link-48 tag-link-position-38" style="font-size: 9.2551724137931pt;" aria-label="пылесос (37 элементов)">пылесос</a>
<a href="https://robocraft.ru/tag/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0" class="tag-cloud-link tag-link-63 tag-link-position-39" style="font-size: 12.634482758621pt;" aria-label="работа (85 элементов)">работа</a>
<a href="https://robocraft.ru/tag/%d1%80%d0%b0%d1%81%d0%bf%d0%be%d0%b7%d0%bd%d0%b0%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5" class="tag-cloud-link tag-link-44 tag-link-position-40" style="font-size: 11.28275862069pt;" aria-label="распознавание (60 элементов)">распознавание</a>
<a href="https://robocraft.ru/tag/%d1%80%d0%be%d0%b1%d0%be%d1%82" class="tag-cloud-link tag-link-33 tag-link-position-41" style="font-size: 21.806896551724pt;" aria-label="робот (766 элементов)">робот</a>
<a href="https://robocraft.ru/tag/%d1%80%d0%be%d0%b1%d0%be%d1%82%d0%be%d1%82%d0%b5%d1%85%d0%bd%d0%b8%d0%ba%d0%b0" class="tag-cloud-link tag-link-24 tag-link-position-42" style="font-size: 18.331034482759pt;" aria-label="робототехника (331 элемент)">робототехника</a>
<a href="https://robocraft.ru/tag/%d1%81%d0%b2%d0%b5%d1%82%d0%be%d0%b4%d0%b8%d0%be%d0%b4" class="tag-cloud-link tag-link-185 tag-link-position-43" style="font-size: 8.6758620689655pt;" aria-label="светодиод (32 элемента)">светодиод</a>
<a href="https://robocraft.ru/tag/%d1%81%d0%b5%d1%80%d0%b2%d0%be%d0%bc%d0%b0%d1%88%d0%b8%d0%bd%d0%ba%d0%b0" class="tag-cloud-link tag-link-202 tag-link-position-44" style="font-size: 15.337931034483pt;" aria-label="сервомашинка (162 элемента)">сервомашинка</a>
<a href="https://robocraft.ru/tag/%d1%81%d0%be%d0%b1%d0%b0%d0%ba%d0%b0" class="tag-cloud-link tag-link-358 tag-link-position-45" style="font-size: 10.124137931034pt;" aria-label="собака (46 элементов)">собака</a>
<a href="https://robocraft.ru/tag/%d1%83%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5" class="tag-cloud-link tag-link-53 tag-link-position-46" style="font-size: 11.572413793103pt;" aria-label="управление (65 элементов)">управление</a>
<a href="https://robocraft.ru/tag/%d1%85%d0%be%d0%b4%d0%b8%d1%82%d1%8c" class="tag-cloud-link tag-link-60 tag-link-position-47" style="font-size: 12.248275862069pt;" aria-label="ходить (77 элементов)">ходить</a>
<a href="https://robocraft.ru/tag/%d1%88%d0%b0%d0%b3-%d0%b7%d0%b0-%d1%88%d0%b0%d0%b3%d0%be%d0%bc" class="tag-cloud-link tag-link-375 tag-link-position-48" style="font-size: 10.027586206897pt;" aria-label="шаг за шагом (45 элементов)">шаг за шагом</a>
<a href="https://robocraft.ru/tag/%d1%88%d0%b0%d0%b3%d0%be%d0%b2%d1%8b%d0%b9-%d0%b4%d0%b2%d0%b8%d0%b3%d0%b0%d1%82%d0%b5%d0%bb%d1%8c" class="tag-cloud-link tag-link-1048 tag-link-position-49" style="font-size: 10.027586206897pt;" aria-label="шаговый двигатель (45 элементов)">шаговый двигатель</a>
<a href="https://robocraft.ru/tag/%d1%88%d0%b8%d0%bb%d0%b4" class="tag-cloud-link tag-link-74 tag-link-position-50" style="font-size: 8.3862068965517pt;" aria-label="шилд (30 элементов)">шилд</a></p>


<pre class="wp-block-preformatted"><a href="/opencv/">OpenCV</a>
<a href="/robotics/">Робототехника</a>
<a href="/news/479">Будущее за бионическими роботами?</a>
<a href="/algorithm/558">Нейронная сеть - введение</a>					
</pre>
</div></div>
</div>


<footer class="wp-block-template-part">
<div class="is-layout-constrained wp-block-group" style="padding-top:2em">
<div class="is-layout-constrained wp-block-group alignfull">
<div class="is-layout-flex wp-container-17 wp-block-columns alignwide">
<div class="is-layout-flow wp-block-column">
<p><strong>Инфо</strong></p>


<ul class="wp-block-page-list"><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://robocraft.ru/faq">FAQ</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://robocraft.ru/opencv">OpenCV</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://robocraft.ru/about">О сайте</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://robocraft.ru/privacy-policy">Политика конфиденциальности</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://robocraft.ru/robotics">Робототехника</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://robocraft.ru/summary">Статьи</a></li></ul></div>



<div class="is-layout-flow wp-block-column">
<pre class="wp-block-preformatted" style="font-size:15px">Материалы сайта являются авторскими. Копирование и публикация материалов без разрешения запрещены!</pre>
</div>



<div class="is-layout-flow wp-block-column">
<div>
<div>© 2009 — 2022</div>

<div>
<!-- Rating Mail.ru counter -->
<script type="text/javascript">
var _tmr = window._tmr || (window._tmr = []);
_tmr.push({id: "1656615", type: "pageView", start: (new Date()).getTime()});
(function (d, w, id) {
  if (d.getElementById(id)) return;
  var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id;
  ts.src = "https://top-fwz1.mail.ru/js/code.js";
  var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);};
  if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); }
})(document, window, "topmailru-code");
</script><noscript><div>
<img decoding="async" src="https://top-fwz1.mail.ru/counter?id=1656615;js=na" style="border:0;position:absolute;left:-9999px;" alt="Top.Mail.Ru">
</div></noscript>
<!-- //Rating Mail.ru counter -->
<!-- Rating Mail.ru logo -->
<a href="https://top.mail.ru/jump?from=1656615">
<img decoding="async" loading="lazy" src="https://top-fwz1.mail.ru/counter?id=1656615;t=364;l=1" style="border:0;" height="18" width="88" alt="Top.Mail.Ru"></a>
<!-- //Rating Mail.ru logo -->

 				 	
<a href="https://idea2.ru" title="Идеи 2.0" target="_blank" rel="noopener"><img decoding="async" src="https://idea2.ru/i2.png" width="32" alt="idea2"></a> 
<a href="https://robocraft.ru" title="RoboCraft" target="_blank" rel="noopener"><img decoding="async" src="https://robocraft.ru/rc.png" width="32" alt="RoboCraft"></a>		
</div>
</div>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-ECEDKBLGLZ"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-ECEDKBLGLZ');
</script>

<script type="application/ld+json">
{
  "@context" : "https://schema.org",
  "@type" : "Organization",
  "name" : "RoboCraft",
  "url" : "https://robocraft.ru",
  "sameAs" : [
    "https://vk.com/robocraft_ru",
"https://www.facebook.com/robocraft",
    "https://twitter.com/robocraft"
  ]
}
</script>
</div>
</div>



<div class="is-content-justification-space-between is-layout-flex wp-container-18 wp-block-group alignwide" style="padding-bottom:1rem"><p class="wp-block-site-title"><a href="https://robocraft.ru" target="_self" rel="home">RoboCraft</a></p></div>
</div>
</div>
</footer></div>

		<style id="skip-link-styles">
		.skip-link.screen-reader-text {
			border: 0;
			clip: rect(1px,1px,1px,1px);
			clip-path: inset(50%);
			height: 1px;
			margin: -1px;
			overflow: hidden;
			padding: 0;
			position: absolute !important;
			width: 1px;
			word-wrap: normal !important;
		}

		.skip-link.screen-reader-text:focus {
			background-color: #eee;
			clip: auto !important;
			clip-path: none;
			color: #444;
			display: block;
			font-size: 1em;
			height: auto;
			left: 5px;
			line-height: normal;
			padding: 15px 23px 14px;
			text-decoration: none;
			top: 5px;
			width: auto;
			z-index: 100000;
		}
	</style>
		<script>
	( function() {
		var skipLinkTarget = document.querySelector( 'main' ),
			sibling,
			skipLinkTargetID,
			skipLink;

		// Early exit if a skip-link target can't be located.
		if ( ! skipLinkTarget ) {
			return;
		}

		// Get the site wrapper.
		// The skip-link will be injected in the beginning of it.
		sibling = document.querySelector( '.wp-site-blocks' );

		// Early exit if the root element was not found.
		if ( ! sibling ) {
			return;
		}

		// Get the skip-link target's ID, and generate one if it doesn't exist.
		skipLinkTargetID = skipLinkTarget.id;
		if ( ! skipLinkTargetID ) {
			skipLinkTargetID = 'wp--skip-link--target';
			skipLinkTarget.id = skipLinkTargetID;
		}

		// Create the skip link.
		skipLink = document.createElement( 'a' );
		skipLink.classList.add( 'skip-link', 'screen-reader-text' );
		skipLink.href = '#' + skipLinkTargetID;
		skipLink.innerHTML = 'Перейти к содержимому';

		// Inject the skip link.
		sibling.parentElement.insertBefore( skipLink, sibling );
	}() );
	</script>
	<script src='https://robocraft.ru/wp-includes/js/comment-reply.min.js?ver=6.1.1' id='comment-reply-js'></script>
<script src='https://robocraft.ru/wp-content/plugins/enlighter/cache/enlighterjs.min.js?ver=ls7lgeds89WPX0O' id='enlighterjs-js'></script>
<script id='enlighterjs-js-after'>
!function(e,n){if("undefined"!=typeof EnlighterJS){var o={"selectors":{"block":"pre.EnlighterJSRAW","inline":"code.EnlighterJSRAW"},"options":{"indent":4,"ampersandCleanup":true,"linehover":true,"rawcodeDbclick":false,"textOverflow":"break","linenumbers":true,"theme":"enlighter","language":"generic","retainCssClasses":false,"collapse":false,"toolbarOuter":"","toolbarTop":"{BTN_RAW}{BTN_COPY}{BTN_WINDOW}{BTN_WEBSITE}","toolbarBottom":""}};(e.EnlighterJSINIT=function(){EnlighterJS.init(o.selectors.block,o.selectors.inline,o.options)})()}else{(n&&(n.error||n.log)||function(){})("Error: EnlighterJS resources not loaded yet!")}}(window,console);
</script>
</body>
</html>