독점 소프트웨어 (HTTP 서버 없음)가 설치된 IP 카메라를 구입했습니다. 이렇게하면 홈 네트워크에 통합 할 수 없습니다.리눅스 기반 USB 카메라 리버스 엔진 개발
이미 사용중인 모션 패키지로 소프트웨어 (ELF 폐쇄 소스)를 교체하고 일부 기능을 추가하고 싶습니다.
나는 특별한 시스템 능력이 없으며 배우기 위해 그물을 여행 했으므로 일주일이 지났지 만 나갈 수는 없습니다. U 부팅 콘솔 (USB-TTL 어댑터) 및 텔넷 (루트)에 액세스 할 수 있습니다. 웹캠에는 공간이 필요할 때 사용할 수있는 SD 카드 리더기가 있습니다. 3 개의 파티션 (dd 포함)을 백업하여 시작했습니다.
mtdblock2 (binwalk -e) 파일의 압축이 풀 렸습니다. Busybox, 일부 이진 시스템 및 독점 소프트웨어에 대한 링크가있는 고전적인 Linux 트리를 생성합니다.
zImage를 생성하는 mtdblock1의 압축을 풀려고했습니다. 압축 해제 zImage는 두 개의 디렉토리와 하나의 파일 (콘솔)을 생성합니다. 그러나 커널 모듈이 필요합니다. 무엇을해야합니까? 커널 컴파일 설정을 가져오고 싶습니다. 가능합니까?
제조업체의 웹 사이트에서 제공되는 펌웨어의 압축을 풉니 다. ELF, 하나의 .so 파일 및 일부 Bash 스크립트 만 업데이트합니다.
처음에는 세 개의 파티션이 Qemu로 직접 이동한다고 생각했습니다. 그러나 메모리 주소가 커널에 하드 코딩되어 있기 때문에 이것이 불가능하다는 것을 알고 있습니다. 잘 이해합니까?
그래서 저는 하나의 해결책이 있다고 생각합니다 : 새로운 커널을 만들고 rootfs를 처음부터 다시 빌드하십시오. 이 유일한 해결책입니까?
Buildroot로 게임을 시작했지만 Hisilicon Hi3518을 기반으로 보드 용 구성 파일을 찾을 수 없습니다. 나쁘게 보였거나 쓸모가 있습니까? 첫 번째 테스트에서는 보드/qemu/arm-versatile를 사용했습니다. 이것은 올바른 선택입니까? 이것은 실제 컴퓨터로 마이그레이션하지 못하게합니까?
테스트를 위해 커널과 rootfs를 다시 빌드하면 SD에이 파티션을 설치하여 아무 것도 손상시키지 않습니다. 커널 매개 변수를 수정하려면 "충분합니다"(bootargs 변수에서) 그게 옳은가요? 그래서 장치 용 U 보트 파티션을 다시 만들 필요가 없습니까?
간단히 말해서, 나는 많은 질문을 던졌을 것입니다. (그러나 한 번에 "하나"가 아닌). 나는 올바른 길을 가고 있는지에 대한 조언이 필요합니다. 제발, 말도 안되는 소리가 있으면 저를 시정 해주십시오. 아이디어 나 주제가 있다면 나는 관심이있다. 모든
# cat /proc/cpuinfo
Processor : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 218.72
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 5
Hardware : hi3518
Revision : 0000
Serial : 0000000000000000
# cat /proc/mtd
dev: size erasesize name
mtd0: 00100000 00010000 "boot"
mtd1: 00300000 00010000 "kernel"
mtd2: 00c00000 00010000 "rootfs"
# binwalk mtdblock0
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
122044 0x1DCBC CRC32 polynomial table, little endian
# binwalk mtdblock1
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 uImage header, header size: 64 bytes, header CRC: 0x853F419E, created: 2014-07-22 02:45:04, image size: 2890840 bytes, Data Address: 0x80008000, Entry Point: 0x80008000, data CRC: 0xB24E77CA, OS: Linux, CPU: ARM, image type: OS Kernel Image, compression type: none, image name: "Linux-3.0.8"
22608 0x5850 gzip compressed data, maximum compression, from Unix, NULL date:
# binwalk zImage
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
113732 0x1BC44 ASCII cpio archive (SVR4 with no CRC), file name: "dev", file name length: "0x00000004", file size: "0x00000000"
113848 0x1BCB8 ASCII cpio archive (SVR4 with no CRC), file name: "dev/console", file name length: "0x0000000C", file size: "0x00000000"
113972 0x1BD34 ASCII cpio archive (SVR4 with no CRC), file name: "root", file name length: "0x00000005", file size: "0x00000000"
114088 0x1BDA8 ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
1903753 0x1D0C89 Certificate in DER format (x509 v3), header length: 4, sequence length: 1284
4188800 0x3FEA80 Linux kernel version "3.0.8 ([email protected]) (gcc version 4.4.1 (Hisilicon_v100(gcc4.4-290+uclibc_0.9.32.1+eabi+linuxpthread))) #1 Tue Jul 22 10:45:00 H"
4403540 0x433154 CRC32 polynomial table, little endian
5053435 0x4D1BFB Unix path: /mtd/devices/hisfc350/hisfc350_spi_gd25qxxx.c
5054731 0x4D210B Unix path: /mtd/devices/hisfc350/hisfc350.c
5058939 0x4D317B Unix path: /net/wireless/rt2x00/rt2x00dev.c
5059323 0x4D32FB Unix path: /net/wireless/rt2x00/rt2x00config.c
5060683 0x4D384B Unix path: /net/wireless/rt2x00/rt2x00usb.c
5060851 0x4D38F3 Unix path: /net/wireless/rt2x00/rt2x00.h
5061171 0x4D3A33 Unix path: /net/wireless/rt2x00/rt73usb.c
5081107 0x4D8813 Unix path: /S70/S75/505V/F505/F707/F717/P8
5102399 0x4DDB3F Unix path: /mmc/host/himciv100/himci.c
5141264 0x4E7310 Neighborly text, "NeighborSolicits/ipv6/inet6_hashtables.c"
5141284 0x4E7324 Neighborly text, "NeighborAdvertisementses.c"
# binwalk mtdblock2
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 JFFS2 filesystem, little endian
722980 0xB0824 JFFS2 filesystem, little endian
732282 0xB2C7A Zlib compressed data, compressed
737031 0xB3F07 Zlib compressed data, compressed
738287 0xB43EF Zlib compressed data, compressed
.... most other lines in the same genre
IP 카메라 QQZM N5063 http://www.zmvideo.com/product/detail.php?id=60
펌웨어 http://bbs.zmmcu.com/forum.php?mod=attachment&aid=MzU2fDBiY2M4NDdjfDE0MTkxMTEzODl8MzQ4fDIwMzc%3D
제 생각에는 * mtd0 *은 u-boot입니다. * mtd1 *은 cpio 아카이브 인 'initrd'가있는 리눅스 이미지입니다. * mtd2 *는 아마도 액세스 할 수있는 JFFS2 파티션 일 것입니다. 'nandread/dev/mtd0'을 사용하고 있다면 나쁜 블록이있을 수 있고'dd'는 쓸모 없기 때문에 더 좋습니다. 최선의 방법은 u-boot 콘솔을 사용하여 네트워크에 커널을로드 할 수 있는지 확인하는 것입니다. serial/usb, etc/*/proc/config.gz * 또는 아마도/boot/config *에 뭔가있을 수 있습니다. * mtd *를 읽고 쓸 수 있는지 확인하십시오. –
* qemu *에서 왜 이것을 실행하길 원하는지 이해가되지 않습니다. 셸 액세스 권한이 있습니다. ARM 컴파일러 만 있으면되며 장치에 HTTP 서버를 배치 할 수 있습니다. 그것은 이미있을 수 있습니다. telnet과 같은 네트워크 인터페이스가 있는지 확인하십시오. –
/proc/config가 존재하지 않습니다. 커널을 생성하지 못하게하는 특별한 옵션으로 커널이 컴파일되었다는 것을 이해한다면. 어제 파티션을 복원하려는 웹캠이 고장났습니다. 이제 커널 로딩 과정을 반복합니다. ( 이 튜토리얼을 따라 제 문제를 설명했습니다 : http://felipe.astroza.cl/hacking-hi3518-based-ip-camera/ – Mauricio