查看: 16913|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + n8 g% o$ ?% f  ^  t, x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 _1 d8 U2 X" a) Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 K) E" |& f7 u
usage: himr <address> <value>. sample: himr 0x80040000 0x0
6 K# W0 ~" x3 t& y1 |$ ?* R. e
- ~8 k2 Z8 D& O
3 B- ]/ s, |' J8 G) `不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. x" h6 R( V, H) g5 t/ x6 @
- ?  c; Q7 b  g5 K, O- Q( {4 M补充内容 (2012-3-8 09:42):
5 N8 W7 N! w3 `# J: n. _http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. _* }0 _* H! w- Q) v这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。2 }1 l; P# b$ h: j
/ g! n3 I0 B# B. c% M$ J7 c/ ~7 [
himr <address> <value>. sample: himr 0x80040000 0x05 n8 t" ?0 I0 C1 N8 t
. @8 W3 @9 s4 p7 A. c/ Q3 n# o
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( j  i. O+ V' n
himr 0x80040000 0x00
7 C; O2 W/ v3 v# _+ y( ~1 ^' O- ohimr 0x80040001 0x11
  \2 D  w9 f! p% Zhimr 0x80040002 0x228 U4 ~. Q" v5 {4 \0 y
himr 0x80040003 0x33- q7 |2 G/ O' Y8 C
himr 0x80040004 0x44
+ `0 i7 h! \+ q9 ^5 I: Mhimr 0x80040005 0x55- ^( v* \% P9 Q1 d0 B$ g

, ~; W8 Y9 M: g& VSN也是类似。
. P4 ]( G: E+ \5 S# X3 }  {
5 U4 q" ~% w9 z' z现在主要是,谁告诉我们MAC和SN的地址?/ ~5 l/ a! G1 X
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; b. t% s: U, v1 u0 E一直想找到运程修改MAC和SN的办法,苦于无解啊

7 P( I& f$ M: R: m源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - \- p3 @& n/ L" r) ?' `

% b3 Q( `8 V) B6 c; A修改的代码早有了。到今天不会编译。
. `+ u; v  S$ G3 s- x1 G需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 \/ ?6 T! r+ p" f/ s& Q
  2. #include <malloc.h>
    " K" q( X' V7 k" _0 a/ m# z
  3. #include <sys/types.h>6 H7 o0 A5 u+ F/ d
  4. #include <sys/stat.h>' M) _' h" k+ q0 F8 ~
  5. #include <sys/ioctl.h>( }6 B; a* U! R3 k. G
  6. #include <stdio.h>
    9 E/ w7 G% h! |/ Q7 {
  7. #include <string.h>$ r- m. E) B7 {1 c
  8. / q$ A0 \1 a8 N: X  A( G; a  b
  9. typedef struct {. E8 H3 D0 T8 ]3 M, s0 {% k0 ~
  10.         unsigned int        e2prom_cmd_sub_addr;. e, q0 T& A! p% R8 w( ?' `& N0 j
  11.         unsigned int        sub_addr_count;
    ) M5 }3 R- ?/ o% i9 p+ C0 ~
  12.         unsigned char*        e2prom_cmd_data;
    . r* e) n( n3 B
  13.         unsigned int        data_count;8 x2 O1 k) ^) h
  14. } e2prom_s_cmd;  B$ l/ Z! B; q( H! ~) U) h9 l' U
  15. 8 q6 D  x! h2 p" W
  16. #define E2PROM_CMD_READ 1/ j$ P- J( d4 B) Y% `5 I- S, B
  17. #define E2PROM_CMD_WRITE 21 K2 Y& @9 v( J* @; h! l, p& A
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", o' _1 m# n5 w
  19.   a$ D/ S- h8 O+ T& I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 N3 L( X) F7 ~, g6 a
  21. {; N; z- S5 c% r+ j4 p
  22.         int fd, ret;) |$ ]2 Q0 Y1 b4 @
  23.         e2prom_s_cmd arg;# ~$ T2 @; I! d
  24.         unsigned char buf[0x18];2 v$ F9 l/ _9 O0 s0 k6 T9 U# \
  25. 0 b  B/ x9 }- k/ }1 t7 ^! @1 V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ t9 ~8 v0 c2 B5 g4 \& v
  27.         if (fd  < 0) {. N7 _' i& D$ b! R8 p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 S; n2 R( q- w  J; A
  29.                 return -1;
    ) r3 S7 U. V' A/ z
  30.         }( n6 T! q( f) Q- Z" Q$ O/ M% R* R
  31.         arg.sub_addr_count      = 2;) w# Q. H9 f+ \2 Z# \" ~
  32.         arg.data_count          = 0x18;
    1 r) O6 _+ f8 g2 t. Q% c1 F
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 C% o$ o& i) P& e+ H/ n1 d
  34.         arg.e2prom_cmd_data     = buf;6 P* B+ G& G7 v5 b+ m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ! f, i- l" [- W5 v0 Q! o
  36.         if (ret != 0) {
    2 H$ ?; g/ Z) V: i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 R; ~9 e6 Y7 l2 M
  38.                 return -1;
      J) K7 M0 S) `% \$ i
  39.         }
    " A+ t1 }( I* l2 F1 d
  40.         memcpy(mac, buf, 6);
    ! s# ?: z" q% b6 s* a# {
  41.         memcpy(stbid, &buf[6], 18);7 G9 ]' }4 K. _$ W5 h
  42.         stbid[18] = '\0';
    ; y0 n) R3 v. Z: f- q

  43. 8 y" @4 M/ I* ?1 m# U  z
  44.         return 0;
    0 ?! Y1 u3 `. v' M
  45. }9 O0 c8 W8 @8 q, L) y' e4 c
  46. 7 K: m4 V4 v. |8 V/ d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; E. t, V1 x/ O0 ^' H
  48. {
    8 ]" l9 e, R! b. L( T( P9 l' g
  49.         int fd, ret;
    # W. m1 {: A6 e2 p1 u) S# e
  50.         e2prom_s_cmd arg;- T& O$ v2 P! W4 @* J
  51.         unsigned char buf[0x18];- ^) U; B$ w4 f4 U: u% d2 B" h
  52. % A+ e3 j$ n8 M
  53.         memcpy(buf, mac, 6);! O8 B7 ]3 ~2 W) p, E' h8 d
  54.         memcpy(&buf[6], stbid, 18);
    . g9 u& {- H. _8 T1 Q# h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 m. ?' Q/ [( N% \2 l  R" b
  56.         if (fd  < 0) {
    / s( L' a& N6 a7 z8 @! U. {) v# B" c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 t, Q! i  B* c; M9 C; _7 m
  58.                 return -1;
    1 {% D; E% e' W+ E
  59.         }
    9 A" q) h" s, F: W" V$ a
  60.         arg.sub_addr_count      = 2;2 a1 t* u/ R7 [* ?4 Q+ d& ?8 i
  61.         arg.data_count          = 0x18;
    3 P/ z8 l( U! w6 j/ t( J' x0 Q  {
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ M2 M5 o* o: M- ?7 e- S
  63.         arg.e2prom_cmd_data     = buf;
    ! h; H; U4 m. @' ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 F8 d" h# @/ |3 \! q
  65.         if (ret != 0) {
    5 y: l) v, P9 g6 O% W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  B# P% @/ j8 A
  67.                 return -1;. E4 m/ x' c* F( P. [
  68.         }
    , [' Y8 b7 j* t  m( u  ^5 _8 d3 ^

  69. 6 B: t3 O* O- T" c4 z5 C
  70.         return 0;6 r) f" Y. `* p, ^1 }+ u2 q1 q
  71. }
    0 h. P: }, \0 \3 J  E/ ]

  72. . N1 J5 Q3 O. _: b: V
  73. int main()4 s2 R& a  U4 B( E$ D/ @
  74. {
    4 C  Z1 j  k7 Z% b/ \) }
  75.         char c;
    ( P9 T/ Q* h0 Y4 d; |& a
  76.         int i, macs[6];
    : C4 d; w: \. F7 c$ P% f
  77.         unsigned char mac[6];
    3 e+ P3 T3 ^- e, M$ L8 ?6 L3 V
  78.         unsigned char stbid[256];
    % b* r  |& S$ I2 k
  79. & H6 p( }: V0 n
  80.         if (readparam(mac, stbid) < 0)
    / d( O3 @# R, n5 k% T
  81.                 return 1;
    % r6 X5 s/ R7 n* u7 Y2 H
  82. 5 D5 B- w! l: J5 w* c
  83.         printf("Current parameters: \n");4 j3 r) m/ T: k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 F; y, r# \: @6 z5 [
  85.         printf("  STBID: %s\n", stbid);
    ' ?6 B' e0 C. E/ N* o: M
  86.         5 r; Y, p9 o- t, P0 r  _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ X1 p2 D$ d- d0 F1 t) B1 l) i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . y+ w! }+ `( B$ N& [
  89.                 printf("Input MAC error\n");
    ( V% n6 k% C, F. O+ t* ?
  90.                 return 1;8 W! e8 L2 v+ s3 z
  91.         }
    3 F2 u3 X+ Q( G' e: d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    % @; \/ a) c0 X) `
  93.         printf("\nPlease input new STBID: ");( E: w! r0 V6 y7 z8 ~# P! x4 d
  94.         scanf("%s", stbid);
    8 |7 \1 v6 D0 ?+ i2 h
  95.         if (strlen(stbid) != 18) {
    ! R( b  u* q- r  I
  96.                 printf("Invalid stbid\n");
    " ~. \9 s8 x1 C  f% i3 x( Y
  97.                 return 1;9 Z1 \5 [( @% k% j0 z' u: }
  98.         }
    5 e7 n. E9 U2 v2 G8 r
  99.         printf("\nNew parameters: \n");
    % M9 W* N: t% @7 d1 d* C& b6 r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 ]1 y/ ?  B5 Q  W
  101.         printf("  STBID: %s\n", stbid);
    2 W& z: @4 p7 G3 p0 L* U
  102. " \# T8 n+ [; V
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( w7 C/ E/ M' r& T& ]7 y: I5 r+ ]
  104.         for (;;) {
    ) T1 s2 a1 w5 M6 C/ }" a; V
  105.                 c = getchar();
    . j3 [/ @! u) ?( O- D8 A
  106.                 if (c == 'y' || c == 'Y')
    7 _4 p* O3 ^) e( A- C5 m! l: T% R; t
  107.                         break;
    $ f6 n  F! g# `9 Y. I0 R
  108.                 if (c == 'n' || c == 'N') {& g& o* ?5 N+ w( x/ F, u
  109.                         printf("\nAborted.\n");
    7 X# g. p" g/ ]$ C+ }( h
  110.                         return 1;  @3 L% t+ x5 \! @: F: U
  111.                 }5 S( _  F# w! `$ B9 W
  112.         }
    ! p, Z$ s" e7 N& P6 S
  113.         if (writeparam(mac, stbid) == 0)
    4 Q1 w/ H: `* s1 [
  114.                 printf("Parameters changed.\n");
    6 A! j" x7 v" W: \. v

  115. ) @7 S2 J8 c. {3 b2 O
  116.         return 0;
    9 W; T7 \9 j' M
  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 8 ]+ u7 b3 O1 i4 W6 Z9 p
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 H) S& K9 y- l+ o1 S
你用的编译命令行格式是什么?
; @; G5 J* o# v: X- a& S8 [
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部