找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14974|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! x. ?* d  ^3 Y3 E8 q1 f; D- R. z. B
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig8 Z, t& {# G; l6 z, s& M: q0 M# l
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ S8 p" A6 j1 @
usage: himr <address> <value>. sample: himr 0x80040000 0x01 H$ S/ O5 h' e
" F/ ?% }8 s& ]9 R- s4 C

) {, @. [+ O  A9 I* Z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( ?; V* {- D2 [

& Z; a* x  N: l) i9 b补充内容 (2012-3-8 09:42):
  w! p/ n# f/ @4 _. [" E( y# Ehttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, f# n4 r4 d6 r6 J2 I  K
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ Y( N0 n4 X# P9 {& I( i
) o3 x) T9 m7 Q  g* R/ W, |himr <address> <value>. sample: himr 0x80040000 0x0
6 L4 M: ^* N8 b% o$ |7 Y9 Z
& H$ I; G3 ~. b( |) Q, Y例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 s( \! H- g0 b+ U2 v0 J+ a6 lhimr 0x80040000 0x00& C' \( [7 r2 S% u: H0 [; x
himr 0x80040001 0x11
' G! Z4 m3 T# w/ T, m7 ^; j5 fhimr 0x80040002 0x22# _, t! [/ W8 B/ u" l. f
himr 0x80040003 0x33
1 z2 M! K- i4 ^" ^9 ^( t, m/ t9 }himr 0x80040004 0x44
( D  n4 I5 g6 v% n: Ihimr 0x80040005 0x552 Y5 J" N8 H. W

) @! ?* q1 u, F% N) g! Q1 PSN也是类似。6 Q- G% i3 Y" |
) g0 F6 I) V% n; @0 z! P& l6 j
现在主要是,谁告诉我们MAC和SN的地址?$ w& b# p" |$ i5 M; I
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 K9 N: x6 D1 r) M
一直想找到运程修改MAC和SN的办法,苦于无解啊
- i' I9 }4 N! Y8 F. c
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 0 A: y" w. A+ s6 }
# L% }3 |. |- m4 e9 d
修改的代码早有了。到今天不会编译。
* Y# W' l* r: |4 ^/ L8 S. q8 K. x需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' {& d" X- p: F2 n$ I" y
  2. #include <malloc.h>
    " W$ W5 T( K! _; Y
  3. #include <sys/types.h>
    ; |- I  i3 k2 ]' {
  4. #include <sys/stat.h>" f% L) g* T1 C! C- ?
  5. #include <sys/ioctl.h>
    4 W4 G; g3 ?6 I1 Q1 f: r' b2 H3 O
  6. #include <stdio.h>5 N/ l/ ]; l5 m. r
  7. #include <string.h>
    ) Z1 ~/ D/ c% P+ c

  8. * {( @$ H' n. s  Q) d, }' l2 J+ k
  9. typedef struct {5 g& K2 i; z) X
  10.         unsigned int        e2prom_cmd_sub_addr;& x8 n! I& p! B
  11.         unsigned int        sub_addr_count;2 j2 k0 e6 m5 |: ^$ A) b
  12.         unsigned char*        e2prom_cmd_data;' V& {- g1 p& Q
  13.         unsigned int        data_count;( c! n9 W* l" j# z$ x' ~" L
  14. } e2prom_s_cmd;
    ' V* ]" [4 s) k! C* q7 H
  15. ' }- i5 }! ?8 G* L' |
  16. #define E2PROM_CMD_READ 1% N% d% i: j% @; e7 X
  17. #define E2PROM_CMD_WRITE 2! n# H9 G- t: K9 X5 Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- m' n  \# [# z5 [5 D% l

  19. % y. R1 R* Y% B: P6 J3 }0 i/ `
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 \! J- F' g5 {
  21. {
    + ]$ c; V$ |+ j3 Z$ a% t" }! {' n
  22.         int fd, ret;
    ! X0 v- e: j4 T8 w
  23.         e2prom_s_cmd arg;
    ( m% E- M8 J8 J8 n  I0 O/ w
  24.         unsigned char buf[0x18];, i) L+ y7 d) V4 f

  25. 0 ?' W% ~7 t' f# Z# |. E' Y; d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ N! |6 v1 b2 i3 V
  27.         if (fd  < 0) {) q! j; E% W# H+ H( s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% v0 m% a( r! e& a
  29.                 return -1;" e7 Z( I* j+ j6 L( W2 B3 z
  30.         }
    ) s+ j" S- n! m! u1 [
  31.         arg.sub_addr_count      = 2;
    ; H" x2 F* |1 P0 G9 M9 x$ i
  32.         arg.data_count          = 0x18;
    ( G  t' @# K- [# o$ l. E
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , R& m3 U2 E0 l/ [( n( `4 ~
  34.         arg.e2prom_cmd_data     = buf;3 k1 e3 x2 }2 O; K2 u, I7 }$ i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 S! O! U4 ^' ?
  36.         if (ret != 0) {% |* @! A+ p& \. l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( T) j9 M: d& v) D: w' x
  38.                 return -1;
    3 |5 P3 K; b+ o7 ^7 `5 s2 B8 q
  39.         }
    - }- q4 _6 ?" y) x$ A+ v7 m
  40.         memcpy(mac, buf, 6);
    ; g- H, ]9 X2 o" R; E
  41.         memcpy(stbid, &buf[6], 18);3 R; {9 v. ~# u# j' y5 Z
  42.         stbid[18] = '\0';
    2 i$ f' @4 n' ^, W

  43. 1 A5 z$ N$ [/ L7 V5 |" U
  44.         return 0;
    8 h( W$ ^8 Z" b% j6 |
  45. }2 O& |3 T' E$ k  X

  46. 8 h5 y0 W. r9 g" ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 V' X& O, n2 e5 e: A
  48. {
    2 }5 X8 o4 {; g
  49.         int fd, ret;7 E- R* k! a" L  a+ N
  50.         e2prom_s_cmd arg;  ^& K1 z( T2 l/ k& o6 n, i
  51.         unsigned char buf[0x18];* |% d7 m5 p3 X4 J5 Z

  52. 1 a6 M0 Z% [8 X* [6 ^, I
  53.         memcpy(buf, mac, 6);2 O, U0 A3 _2 O3 q
  54.         memcpy(&buf[6], stbid, 18);/ d  b" [; M$ \9 q8 c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! F/ e3 h. \% ^+ {& j
  56.         if (fd  < 0) {* k) b  V2 j$ K' j; W7 Z8 S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / ]: ^# ]) {4 G: T6 j! t
  58.                 return -1;
    + a) g8 Z: m$ _9 x7 K
  59.         }
    / P( q/ n8 y$ a+ P
  60.         arg.sub_addr_count      = 2;" l! u8 r% S9 v+ n" N9 I
  61.         arg.data_count          = 0x18;
    / _4 K3 Y* o: X4 \7 p( x# s1 }
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 H; H2 H6 ^: e: ^% p, d6 h
  63.         arg.e2prom_cmd_data     = buf;( A. d0 E/ R$ t9 S  d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 b9 E3 z6 w/ N& |! k
  65.         if (ret != 0) {
    ; v6 E, U* t! C, D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, D4 P7 j2 g7 c% \1 w3 V  J4 V
  67.                 return -1;, D: V$ m+ Z" W1 q
  68.         }+ ?* R2 P- C/ O, _+ R- F* I0 Q% V
  69. * r$ `2 Z, \' ~, C$ E
  70.         return 0;. M0 u1 z# w7 S. X/ p, F+ J
  71. }
    : R  R/ r  F' I! L
  72. 7 M! H/ n/ w+ C# O8 q. i7 M5 k+ F% Q
  73. int main()1 O' V* l" Q4 b: P4 J' M  e
  74. {* A" K. Q  j* L7 y+ Z
  75.         char c;
    ( S, D# F4 k# ^* N  b7 {
  76.         int i, macs[6];
    + Q  \1 ?0 R1 t) o
  77.         unsigned char mac[6];( a! v+ T5 X9 t# H+ }
  78.         unsigned char stbid[256];
    ( p# g+ {6 W" ^9 @  y& p; o$ J. L! W
  79. ; Y0 N$ l$ X) m8 \2 Q
  80.         if (readparam(mac, stbid) < 0)2 `1 `; q5 P$ O; ]3 y9 B+ @
  81.                 return 1;
    4 a  v; L4 P9 T% q1 d

  82. ; a4 ?& O4 r# E
  83.         printf("Current parameters: \n");' h6 |" q* q0 k) O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. t& M2 V( P$ n3 G1 Q
  85.         printf("  STBID: %s\n", stbid);) E3 w$ N+ q- V4 u
  86.         / P! n8 x3 T* r' b6 j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : d( {! t# ^  P  [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 S3 X+ ]$ f2 z' K5 B( N! t7 i$ T. C* ^
  89.                 printf("Input MAC error\n");" V9 ^1 d" L3 {
  90.                 return 1;0 Q/ P& I$ ^3 ~, x, P
  91.         }
    ; z* ^0 L2 Z9 }4 W9 b( t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( ?+ c* t2 u4 m7 Q$ a& L
  93.         printf("\nPlease input new STBID: ");) N' M) ]$ z, s
  94.         scanf("%s", stbid);
    0 r8 R2 I7 N/ B$ l# a0 S
  95.         if (strlen(stbid) != 18) {
    ) {& q! z- R% D- O; e- D# h
  96.                 printf("Invalid stbid\n");
    5 @8 T; J3 k! R
  97.                 return 1;
    6 Y; j3 _, T7 H* ]; V
  98.         }; p, G. _* e3 g' e4 X9 F) Y) Z
  99.         printf("\nNew parameters: \n");
    7 ?9 q) ~. T+ C. y5 E$ x2 f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 i% Q. z1 B: d/ P( k
  101.         printf("  STBID: %s\n", stbid);0 j, Y% M# P5 k7 E

  102. 3 o) F6 N7 W: R8 E" ~( r% B3 b! f5 q
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 M7 M8 n4 f4 s1 K
  104.         for (;;) {
    ) b1 O$ P/ x9 q* Q
  105.                 c = getchar();
    & }# D0 e' h1 b' h* v" [( q( y+ i
  106.                 if (c == 'y' || c == 'Y')2 E/ q6 W% {3 g' m0 y
  107.                         break;
    ) D0 C* W( s' W& r4 e
  108.                 if (c == 'n' || c == 'N') {; E3 A! @3 i4 h! X; g
  109.                         printf("\nAborted.\n");3 g4 Z% [9 X" N/ M
  110.                         return 1;" p+ L; o! Y9 V8 c
  111.                 }
    . i# _' x0 c" p  P3 z4 X: u6 O
  112.         }0 _" D9 d) z$ }6 `
  113.         if (writeparam(mac, stbid) == 0) 8 I7 s& ?/ }) m; o* e: w
  114.                 printf("Parameters changed.\n");; K8 V0 G  z7 j. f; K. Z
  115. . i9 Y# v$ n, t- u: Q4 q/ V: l
  116.         return 0;
    3 S# e+ t7 l* N9 c& {
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 6 ~( A1 j. Y  e, b
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 n! [5 j  t" r% H/ ~你用的编译命令行格式是什么?
/ ?! p1 M5 x. `$ W& s- O, _$ L  V
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-12-5 22:16 , Processed in 0.023447 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表