查看: 17850|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* ?, @3 X- C8 P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ D( L, ]- S  ~6 h% L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 V, M, R% k6 Xusage: himr <address> <value>. sample: himr 0x80040000 0x0
, B2 Q, s, e* p9 B+ Y
2 ^0 L* K5 \0 [9 S: |% J) E
# u+ h2 e" e; e4 O% |不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ `6 t5 A- q6 o0 w+ q1 W  O, u4 o: U
0 c, z% g8 y( ^- q
补充内容 (2012-3-8 09:42):& G+ J$ j9 A! C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 {+ X! ?  s4 |: M4 g/ t
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' m# i; {( P3 j; }3 t
& z1 r+ S& @$ C8 [
himr <address> <value>. sample: himr 0x80040000 0x0
; O! A' [2 P6 d- S! s( U6 O# E% d- ]- P# y1 L5 p
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 K( h, M9 V9 j; d; d: D. f1 r2 i* _4 e
himr 0x80040000 0x00& y% r: W! I" u' d
himr 0x80040001 0x11
9 G5 |: p% V& B* K, V6 qhimr 0x80040002 0x22, V+ O- |' b% b$ ^1 C: q/ B
himr 0x80040003 0x33! P/ [+ l$ a& P- t( r
himr 0x80040004 0x44
& W" Z3 I2 N2 m0 ?* D3 phimr 0x80040005 0x55% B  T5 u* p& {% A% o  ]/ x+ w

2 U) K4 {; f' n6 k- F$ T0 N, aSN也是类似。$ A% v# d- N1 F0 @" v
1 ]& P, w  v0 @; b1 N# e3 C' R
现在主要是,谁告诉我们MAC和SN的地址?
# C6 X& H# [, s
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, y3 F. D5 @3 x4 z# N# S9 n一直想找到运程修改MAC和SN的办法,苦于无解啊
8 A, G- ~! t8 o/ L# @; Q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 S* @9 w+ R8 E( @! k) e

' w8 |: _. C, r' Z# O4 l修改的代码早有了。到今天不会编译。
5 P; t4 j6 X, b+ t" k7 W. k$ B需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 c& E+ F9 k- ^) }# W' g
  2. #include <malloc.h>
    $ O/ A9 |$ G! X4 T
  3. #include <sys/types.h>
    9 ^1 r" `( d! ^& e0 ~
  4. #include <sys/stat.h>0 g9 r7 b$ X) b0 X
  5. #include <sys/ioctl.h>6 T& w' _9 h+ r+ a
  6. #include <stdio.h>7 e& P# ^7 Z+ H: u6 M6 N
  7. #include <string.h>, f' m+ ]* o* M; O# _
  8. - ~3 H0 I$ J2 n$ w: }: k; g
  9. typedef struct {" @/ \8 {) ]; o8 g
  10.         unsigned int        e2prom_cmd_sub_addr;
    . K6 O' D; S$ H* C# ]  ^
  11.         unsigned int        sub_addr_count;% A: Q/ u9 K2 `  r
  12.         unsigned char*        e2prom_cmd_data;8 n4 {0 K; P. J# ~
  13.         unsigned int        data_count;
    ( D, l: Q7 o+ F8 b% q& ~
  14. } e2prom_s_cmd;
    7 Z# E* I2 S1 Y
  15. $ w, r. r4 r3 n; O& A) e
  16. #define E2PROM_CMD_READ 1& t3 |! C6 j. Q7 I1 L& y' m4 v
  17. #define E2PROM_CMD_WRITE 2
    ) R; i$ r- H6 K! q2 F6 `
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ C" h* b) u9 D5 [# T
  19. : a0 X3 m2 @' g+ [9 `7 n) {8 k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- Z1 {  J9 K' w. H) j6 B
  21. {+ i( z5 N+ N, v! L0 |
  22.         int fd, ret;: @8 ]) c- G2 C# `+ \: |
  23.         e2prom_s_cmd arg;
    ) ~- a/ c5 j' n  s
  24.         unsigned char buf[0x18];
    ; |0 l! u6 W8 U  R0 v
  25. + ?  R/ a( b( `, W0 d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( C3 e$ {/ H$ W6 L- w) h/ k. o
  27.         if (fd  < 0) {
    $ J- m/ v0 O8 T5 }+ H' U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ C$ W2 _: I  Y* I9 ~3 c
  29.                 return -1;
      `# B: l+ M- Q: ]
  30.         }$ \8 K5 `, H+ A; b/ t; q2 f. V
  31.         arg.sub_addr_count      = 2;
    ' W& f" M6 s5 `6 j8 X8 s  O
  32.         arg.data_count          = 0x18;
    0 i: b& j- W$ ~' o4 f. w
  33.         arg.e2prom_cmd_sub_addr = 0x290;* j8 K$ |' q; B' v& E* u% D3 u
  34.         arg.e2prom_cmd_data     = buf;
    9 b8 O3 |1 T, h5 \( _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 I7 Z. i" y: g! v9 M
  36.         if (ret != 0) {
    # ?! f- i: K* `) X0 n  A6 x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : z, ~9 P0 E: z+ j8 @
  38.                 return -1;4 K0 }4 V) F1 x% ^/ C
  39.         }
    , ], g5 Q% n5 J1 Q! f
  40.         memcpy(mac, buf, 6);% T- n! m$ n6 J0 t, s+ O' F/ \) H  a
  41.         memcpy(stbid, &buf[6], 18);6 b; b; u  K) D$ P. ], S
  42.         stbid[18] = '\0';) u3 R$ J4 [* {; I& ~  a

  43. - y# l/ s+ Z# z) B" F: l3 X: O
  44.         return 0;! Y- d/ S1 {5 O' M, K& q; X$ f
  45. }# t2 `' A8 U. b: s

  46. ; r; D' F' Q+ X+ O% T3 W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): q! E# @2 r( h/ E
  48. {
    $ x9 {9 |0 T) P% ~) e+ L6 k- u+ P8 U
  49.         int fd, ret;
    . Z# r" p# U2 k, j
  50.         e2prom_s_cmd arg;3 B7 q- P" i& M5 K1 d' I' W* V
  51.         unsigned char buf[0x18];
    6 n* y9 \+ }/ I5 }" N8 a- b6 v

  52. 3 Y) \/ Y* D8 s7 Q/ m
  53.         memcpy(buf, mac, 6);. K  a3 J' t  C" j7 B# C$ A
  54.         memcpy(&buf[6], stbid, 18);
    0 Y  s+ H+ A& ~0 F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% J2 Y: U3 O7 c. b6 Q& M+ o& K/ T
  56.         if (fd  < 0) {
    % B7 ?+ U7 T. @: r0 q  [) v6 V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 u, J, l, T/ G# D4 W- _( v9 ~
  58.                 return -1;) o% o. t0 k( O& W
  59.         }
    + z# ^' w& d& z" H: W1 M* ^0 T
  60.         arg.sub_addr_count      = 2;
    3 d! V7 _' H' z' @: O; d- U
  61.         arg.data_count          = 0x18;
    ! e- q, x/ T* o/ \
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 G0 B# i# M+ d, B" g% f$ p
  63.         arg.e2prom_cmd_data     = buf;! z. V: S, A6 d1 K6 T2 M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 v* ?9 ?: L, w) F- Y
  65.         if (ret != 0) {
    . i! z' m- z& K2 d4 H: `5 z  {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . x' u5 N& \+ D" o, J5 Y0 p' w7 F
  67.                 return -1;
    * e6 Y2 j) K% z+ {/ e
  68.         }# w5 e3 o: g! K/ [( [0 I

  69. ' a+ O7 a" T1 w$ O0 Y8 u# N
  70.         return 0;' `7 `( Y! M* e! Q. _% o
  71. }
    ) `+ _# }. A7 n, i

  72. % t/ [, O# Y" x0 y0 i, D1 i- r4 D, f2 m
  73. int main()
    * @% Y" c6 ]9 \
  74. {8 g% ~* H6 }5 D$ \+ V
  75.         char c;
    ( r, d3 w/ o5 m. ~( I
  76.         int i, macs[6];' B' }) @9 P2 ]3 k
  77.         unsigned char mac[6];& b/ s% |1 K& H" Z6 O  M- V
  78.         unsigned char stbid[256];& l# b& J1 c* v# P

  79. , W$ _+ Z6 a, W2 t
  80.         if (readparam(mac, stbid) < 0)
    + g( @4 [  u% Y. \. e
  81.                 return 1;$ t0 r# A' D. M( `
  82. 2 `' p  ~; C5 p# C; v
  83.         printf("Current parameters: \n");8 U, F/ l" j3 _9 m2 o  Z1 B
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" u1 s- P8 p- l( [4 D4 X/ v  S5 @
  85.         printf("  STBID: %s\n", stbid);
    , _( [- b5 Q) @! x
  86.        
    * A3 H4 T* h' T! H* i/ q$ C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 J4 E5 j9 U  B5 d& p
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + ~4 C% t; }$ E9 H6 o
  89.                 printf("Input MAC error\n");
    , I$ Z3 r: ]; g1 J
  90.                 return 1;* a% o5 B4 n% o: x' p1 b$ ]
  91.         }6 r& X3 t3 C2 h/ w* ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% O4 k# c6 O9 }
  93.         printf("\nPlease input new STBID: ");
      W5 v9 M3 u4 k; S
  94.         scanf("%s", stbid);& C+ V/ c7 y+ Q$ F
  95.         if (strlen(stbid) != 18) {7 w: p: P! l: v% I1 o
  96.                 printf("Invalid stbid\n");( G% I  i& Z# l- v' U2 z0 H2 B8 o$ m, E
  97.                 return 1;
    5 a( `* w% w' ^# k. G9 B. X; ~
  98.         }, z# B; N8 u5 f1 o. B
  99.         printf("\nNew parameters: \n");/ C7 F2 S3 K; m* ?) q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 u# N: i9 Y! w; r% g$ [
  101.         printf("  STBID: %s\n", stbid);
    " @0 R: W  l9 ]
  102. ; K+ O3 Q6 d# f
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    7 K6 Z5 f0 ~- r8 B, C" G
  104.         for (;;) {$ J0 N" C# O# B
  105.                 c = getchar();
    3 n3 X, Y# V, S
  106.                 if (c == 'y' || c == 'Y')
    7 {3 u* ]( d- b: B! {! @
  107.                         break;* h) u7 ~" y3 \, f. h
  108.                 if (c == 'n' || c == 'N') {
    & i8 t! G3 J( x  K, E% n! \
  109.                         printf("\nAborted.\n");4 _$ n/ z+ y2 H' D- w
  110.                         return 1;
    7 m5 I' Q1 f2 w0 O0 t# {, ^
  111.                 }
    * t# m) r; e0 E: n
  112.         }
    " R3 J* K9 d$ L$ Y7 g3 ^
  113.         if (writeparam(mac, stbid) == 0)   i/ x6 @& B( {! _$ s
  114.                 printf("Parameters changed.\n");+ e2 t; n0 a2 F9 \, J
  115. 7 Y9 K, A% P7 u; `+ C
  116.         return 0;: W1 e2 k! I4 g. `
  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 `9 H! K2 }: k; F在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 H( _8 H: ~0 m你用的编译命令行格式是什么?. n5 v& Q- k4 e- s
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部