查看: 16724|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 _, V) S; c. K: X" `$ Y8 P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : Z0 I: c' i5 }( V  x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" R# b3 r' W- r& \9 c9 j
usage: himr <address> <value>. sample: himr 0x80040000 0x06 D% i& j+ d1 l6 X
0 \7 t1 z3 P1 s+ @9 F5 `

3 r7 i0 R! E" N不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ n  K% t. n1 H1 B4 w* \
9 Y) y- A! Y. c1 N
补充内容 (2012-3-8 09:42):
2 U+ [6 L- ^1 d( R- [: K5 fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 d1 ?& S& Y$ 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 X' a* ?0 n& i! m: ^  `
2 P! i- V( H) N: V% }+ }: F# N. mhimr <address> <value>. sample: himr 0x80040000 0x0
' I2 t6 q4 B) H4 h' V  D# r% y
7 g. Z  ^" z  f0 t* l例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! o9 H- i, m% }! I5 l
himr 0x80040000 0x00% p+ _. c3 H8 [+ [1 l3 p1 c
himr 0x80040001 0x118 L/ z3 L# t1 b" n0 u* ?
himr 0x80040002 0x22
, \' V' j" F9 Jhimr 0x80040003 0x33
8 x) D5 D* D% f8 _* J3 uhimr 0x80040004 0x44
( R' g2 p! B1 f  F; K7 r( g7 Ghimr 0x80040005 0x550 l  A3 l. }- _, H  b4 ]
) o& l: X7 b6 l7 l7 t( K7 s8 o
SN也是类似。
6 ^; w' C5 E' w
# E: H' a8 }! l1 b/ D现在主要是,谁告诉我们MAC和SN的地址?
9 V4 N! i2 N& q( k/ Z
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 r7 a& h( @8 o' m/ |$ f# U2 T一直想找到运程修改MAC和SN的办法,苦于无解啊

3 r( \  h. w7 [# M6 `" Y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 u+ {& z: A8 Y5 F4 _

0 l! w, `* }4 x) B; ~2 j修改的代码早有了。到今天不会编译。
8 ?4 m4 }& X) K* }, g需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% ?5 m1 U# H5 |# h' @2 S1 H
  2. #include <malloc.h>
    # V1 u$ G$ u" z; K" {8 J
  3. #include <sys/types.h>- d3 m2 |, B, I- u# l
  4. #include <sys/stat.h>5 z5 F  ~  D7 n0 F
  5. #include <sys/ioctl.h>7 j; N* ]7 a1 R5 n  y; K. c
  6. #include <stdio.h>7 e$ |% k1 |* o3 ]
  7. #include <string.h>4 H: c5 B0 ]$ q' ~8 p

  8. 3 L( G  f* X3 e5 t/ `% s
  9. typedef struct {
    * l4 S/ u6 W3 C
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 _) R; j! X  R$ u: f( ^: J% Y- @
  11.         unsigned int        sub_addr_count;
    ( t" \4 F! N0 R% }: A3 _" @6 ^
  12.         unsigned char*        e2prom_cmd_data;
    ! e  f% d( R$ J; s3 J5 _
  13.         unsigned int        data_count;1 m$ v$ s+ E, `3 }# x* m5 I7 J/ m
  14. } e2prom_s_cmd;% N$ Y9 {4 R0 g2 p9 o  t
  15. 8 ]! M7 j: a, D" Z
  16. #define E2PROM_CMD_READ 1
    % N: b& l/ y4 k
  17. #define E2PROM_CMD_WRITE 21 X2 W& H8 S7 f% u1 c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! }1 b, W0 y* d7 d& @2 b
  19. , c" V! H* m; _$ n/ q/ [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : \' O! b: f. D
  21. {
    ( n3 C8 |2 A0 E/ ~/ d% x: z9 \% u
  22.         int fd, ret;0 \8 e1 l4 k) h( d
  23.         e2prom_s_cmd arg;
    9 z3 ~3 T6 M8 [* j+ Z# A! Y2 C
  24.         unsigned char buf[0x18];
    " c# _7 d6 M* S' G6 [2 |

  25. 9 K4 w% y6 O; d  s* w2 H  ~# a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. L. q" C8 w% V; z* Q" j6 C
  27.         if (fd  < 0) {
    " M9 K1 E  e9 H3 u2 J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & A0 a) F; g8 e- r8 P
  29.                 return -1;
    7 O* B8 X  w- f7 j2 p1 L% |
  30.         }& V% t: @; Q" Y6 f/ t& u
  31.         arg.sub_addr_count      = 2;3 H! f; q" o8 f8 H- x
  32.         arg.data_count          = 0x18;
    7 f' `) \  l6 ^5 a8 V* K; i2 m
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 P9 f- M2 ?5 `
  34.         arg.e2prom_cmd_data     = buf;
    8 e2 \# A6 k$ ]6 p9 K& V: O
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' f: u+ H' ^& b& s
  36.         if (ret != 0) {
    : h* v4 E: K- t! k6 x8 P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  N; s3 p: k1 r2 x. f0 v) k
  38.                 return -1;
    / Q% q( `; p) j$ |1 C4 {
  39.         }7 I  @, I3 ~* p0 \6 l
  40.         memcpy(mac, buf, 6);
    ( H3 I, T8 v& y9 f$ E8 ]
  41.         memcpy(stbid, &buf[6], 18);
    & \" @& C; g% L% Q, S+ M
  42.         stbid[18] = '\0';
    8 l) o. R7 \* n/ F& R

  43. , x# |+ d7 e/ K$ C
  44.         return 0;* I0 C1 L2 Y# c0 W5 e# d# |1 d
  45. }
    * Q4 \% O, Q) s. p# s0 J2 K3 j" T
  46. 5 B- [4 r/ s. t, V7 Q4 n$ }. S( t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 D/ @4 Z* ^' }* @; @" }
  48. {
    - O. @5 C0 `, a
  49.         int fd, ret;5 [3 x% e" @3 Q  u0 e- q
  50.         e2prom_s_cmd arg;
    0 b! R$ h( D  Y% C# }
  51.         unsigned char buf[0x18];
    ; K' q( K1 q# Y- I

  52. , E* j, `2 k; X* y3 U, ^8 A
  53.         memcpy(buf, mac, 6);# D. o) Q+ B5 S. c- l1 K- m( p
  54.         memcpy(&buf[6], stbid, 18);
    , d8 n' S7 z$ U6 F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( o- p) b  d' r3 |
  56.         if (fd  < 0) {
    , a4 s8 ?: J* _, c+ y& A
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 @: S& R/ ^& T0 E% q- N
  58.                 return -1;/ }; c( U- i: E2 O
  59.         }7 A5 A/ R9 q) O0 K4 s4 C+ r
  60.         arg.sub_addr_count      = 2;! {7 A/ u1 x# p, Q6 }5 x
  61.         arg.data_count          = 0x18;
    7 {; X( ]4 z% P
  62.         arg.e2prom_cmd_sub_addr = 0x290;% S; M7 j% L/ t3 {3 q8 h7 }0 i
  63.         arg.e2prom_cmd_data     = buf;  c6 o9 i; t4 C! ^: l: f0 K& P2 ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! L$ t% Q: E" G" i; z6 [# M
  65.         if (ret != 0) {! N+ i. x6 [( O) H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ G; U2 A7 ?+ `8 e4 R) f! x3 ]
  67.                 return -1;% Q0 R! N* g+ }& y
  68.         }
    - L5 J1 i" Z3 Y' r

  69. 4 }' C- B! [/ V7 V  v  r- u& ~7 L, U
  70.         return 0;: M+ ^' w4 a: @
  71. }5 m, k2 L& M, n8 r7 u" m

  72. : r) [3 [# a( {% @" \; g( A5 K
  73. int main()6 o3 t1 {3 i' N
  74. {
    / |4 ]" z6 O8 j: H( w
  75.         char c;
      \; O& i) k0 q* e$ \+ _
  76.         int i, macs[6];7 q  e1 [1 i, c! W% t
  77.         unsigned char mac[6];! g1 T4 K" I5 [# x8 H5 {
  78.         unsigned char stbid[256];+ H9 _: u+ i% x4 Y0 x$ w
  79. 5 E7 U" e' ?+ p
  80.         if (readparam(mac, stbid) < 0)
    0 E  e, p% U5 Y* V) }
  81.                 return 1;
    : A0 l5 a* M- e7 E& P
  82. : `% E: a2 y4 G/ ^
  83.         printf("Current parameters: \n");3 A& P: w0 l/ i( v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : U: n$ V0 ?% g4 \: K) M
  85.         printf("  STBID: %s\n", stbid);1 Q9 p" {  x& I
  86.        
    $ ~5 y# D! @- W8 W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! W! d. K. z' i  k+ H% ?1 A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 O# C$ X; j" j& p1 |( q* C
  89.                 printf("Input MAC error\n");
    ! }* u$ U2 h0 Z  D+ A6 |/ A" P7 d5 a) k
  90.                 return 1;
    , ]5 O6 E$ Y& `' f: [$ V# f
  91.         }: i- ?" Q, D+ e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - w& }, b! M  d2 r" J' I3 c
  93.         printf("\nPlease input new STBID: ");2 L0 o# N, ~. h
  94.         scanf("%s", stbid);7 y9 T% F8 l% ^0 {& z
  95.         if (strlen(stbid) != 18) {
    6 M: w, @. W  H$ Q, g4 n
  96.                 printf("Invalid stbid\n");
    : u5 t/ D3 X) f3 O
  97.                 return 1;) R2 T" H2 l4 B* u3 Y
  98.         }1 S. ]: @& o: z! i
  99.         printf("\nNew parameters: \n");
    1 s, G- v6 x0 X, L, E
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) P! B" R. u  r: M: L
  101.         printf("  STBID: %s\n", stbid);. k  V( F5 n( m- B

  102. : N+ R* O6 O6 X) [
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; f" o9 d9 q. e$ X; o" F
  104.         for (;;) {
    $ \8 N. T% G; P2 E
  105.                 c = getchar();
    . e" @+ I: L0 `9 t, l
  106.                 if (c == 'y' || c == 'Y')
    3 b& I+ R6 S" N) n+ g
  107.                         break;
    1 i" @* B6 }0 V+ Y, o
  108.                 if (c == 'n' || c == 'N') {1 g; X: a2 L/ N% `" q: f
  109.                         printf("\nAborted.\n");# j! p# L! x. x' A
  110.                         return 1;
    ! T9 l+ u  n" h% v- _6 I# _5 u
  111.                 }$ V/ K' x: S8 z" H  ]! p, G0 G
  112.         }
    ; f: n, Q# ~" S. b  o
  113.         if (writeparam(mac, stbid) == 0) + j' a# Q6 y, b+ [( K5 A
  114.                 printf("Parameters changed.\n");  c: Z* v8 z2 m- A$ T  K
  115. ( I4 k" C3 E  E$ I
  116.         return 0;
    . M3 `2 z  C1 W
  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   ?  y$ p# Q+ U2 G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ G! p. Q) \7 w) ?: H
你用的编译命令行格式是什么?( _: b; v6 x+ q# l9 e9 [$ P  I2 S. T
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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