查看: 16718|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 o. C9 W3 k$ }0 v! }" L/ T" f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & U% G% O4 |& p: x( h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
1 _- [7 q+ h* F" S: _* R+ B# G/ \usage: himr <address> <value>. sample: himr 0x80040000 0x0$ H, L( [8 c6 m8 X- B

5 I0 e  u6 [6 _3 K5 C3 Q
* ]# x# W8 D0 r: `* h不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! N# s( Q2 ]9 F: z2 Y8 d' Z  V# U
% {4 U, ~3 Q% \2 @3 s补充内容 (2012-3-8 09:42):
. n% u  t& t& k, }! phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ ^8 B3 v  L0 g* m4 l这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 y2 w: q) F; Z4 C
7 n" Q7 E4 `+ P. p) ~# I. V0 qhimr <address> <value>. sample: himr 0x80040000 0x0; x  P8 d) F5 s( r

! N0 d7 a1 ^. ?2 P, p0 n5 b4 f例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 D, M- p& }) Hhimr 0x80040000 0x00/ F, K( L( ?5 f3 C- K0 K# b
himr 0x80040001 0x11
! D  r* a/ l" }! u$ a; xhimr 0x80040002 0x22
# V5 a6 A  R6 l( zhimr 0x80040003 0x33
0 I& t  ?( D' W5 |himr 0x80040004 0x44
4 T0 o: r; x/ \6 M7 _. L: N6 N! chimr 0x80040005 0x55
$ A) A) q# P+ q3 S: ^- k3 M; e) I: d! t4 v1 z
SN也是类似。' o, b8 j- S% ~

/ @, x5 w6 `* L0 j4 u; V$ }. I现在主要是,谁告诉我们MAC和SN的地址?
) D$ T, ?% q' T" P# ~- B
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
4 f" q( i0 R  l3 A7 d* e; b一直想找到运程修改MAC和SN的办法,苦于无解啊

0 q0 R3 `% r* l; N; |源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * E8 b; A, j. e* ?$ f$ x
* @& F% f4 B3 b- j
修改的代码早有了。到今天不会编译。
6 R( j' D, V+ m; ^, ^! Z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      w1 m1 Q* Z& y+ l
  2. #include <malloc.h>
    ' {8 `) a) w# h
  3. #include <sys/types.h>1 q) H% w7 a' ^4 L! t
  4. #include <sys/stat.h>' o! }9 K; ~5 h2 o1 W9 B3 V5 l5 w
  5. #include <sys/ioctl.h>; ]( l2 |+ q# |' T6 l$ c% x
  6. #include <stdio.h>
    ! i$ \5 J9 U3 }5 A
  7. #include <string.h>
    8 T% S0 i# M9 P, c
  8. # h. R8 l. A3 t7 C
  9. typedef struct {
    ' a# ^. q3 J& Y9 R& g6 o
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) _6 s& e: U) d: r' |4 u
  11.         unsigned int        sub_addr_count;! E8 q# M6 M; b- N! g" h
  12.         unsigned char*        e2prom_cmd_data;' I! Y$ ~+ R+ N; ]; h8 {4 }
  13.         unsigned int        data_count;
    1 z3 `" @, X3 D: J
  14. } e2prom_s_cmd;
    9 Z& L: G8 A/ [. S4 L

  15. 7 y) |- d  n6 D4 S
  16. #define E2PROM_CMD_READ 1$ y0 [# |3 z4 W
  17. #define E2PROM_CMD_WRITE 2) {5 C7 n" h  t: Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    * R- W4 Q$ h9 r: i: v( B( S

  19. 5 A( S- W" {" G- X% J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' ~' C5 _' b  h
  21. {" x* N- K% o" R" Q- {! S- K
  22.         int fd, ret;
    0 J8 {& l7 h, e$ n
  23.         e2prom_s_cmd arg;
      I) D, ^& J. u" A
  24.         unsigned char buf[0x18];, I$ E3 N% @% e7 V' E! G5 Z- M
  25. / W3 L7 _$ K) J+ s& Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) J! C8 Y3 M3 k
  27.         if (fd  < 0) {
    7 J" p3 `# t1 x9 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( |: P: b$ M1 ~4 u+ U
  29.                 return -1;
    0 s" x9 f, E% }6 V) |$ q
  30.         }* [$ o9 ?: E& t% G+ a& t- ]
  31.         arg.sub_addr_count      = 2;
    9 P( G& X4 Z2 J' ?( B
  32.         arg.data_count          = 0x18;
    . c' X5 A$ J9 m* W) ^$ k7 {
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " d6 a: a8 l3 ~9 m% t0 E
  34.         arg.e2prom_cmd_data     = buf;/ U2 M  c/ Q* f  h! ?: A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : c1 U& {, }7 O1 o4 N3 j3 s
  36.         if (ret != 0) {
    ' |( C, S0 ?) n) M+ U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * y$ S% U" p* H& W: X# o; {$ P" I
  38.                 return -1;" ]# I3 ^7 @/ N1 g7 k  q( b
  39.         }
    " A( ]8 K" v9 Q5 }
  40.         memcpy(mac, buf, 6);! m8 d8 [8 {* C
  41.         memcpy(stbid, &buf[6], 18);2 L8 P5 X1 r7 U. C3 z" P
  42.         stbid[18] = '\0';
    7 o1 C: F3 l5 [, }
  43. 8 P1 X' f; U% }+ B! ~5 `
  44.         return 0;
    ' F; n0 t" m$ c% {$ N/ _- Q
  45. }
    - a) v7 k( P8 c% n+ I: M2 |
  46. & B2 ^0 m' T( w: X! |9 M# y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" ~7 S5 S% U+ G. W5 ^! ^/ ~
  48. {
    ' _, u( Z9 R: s- x3 D
  49.         int fd, ret;$ P: F/ [2 _! i9 w
  50.         e2prom_s_cmd arg;. k! V2 G$ u3 S+ v. i- [
  51.         unsigned char buf[0x18];
    5 K: z( e% {) f& ^
  52. , B0 r6 F, {6 X/ A5 n4 U% b
  53.         memcpy(buf, mac, 6);
    ! e2 @* C3 J- B* {/ }
  54.         memcpy(&buf[6], stbid, 18);
    & l4 g+ M7 ^7 ^0 a3 D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 u% p+ K% [/ f2 [7 w* |
  56.         if (fd  < 0) {
    ' k, b3 O' {- b+ `+ N- H9 \7 ^, i/ g* ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( B% s. `4 b' u" r( L! h! }
  58.                 return -1;
    $ E0 Z7 `# t/ Q$ C$ _8 u
  59.         }
    4 }/ }& i" O3 _7 r- }' h
  60.         arg.sub_addr_count      = 2;7 B) r3 {. \: X$ X- R8 A
  61.         arg.data_count          = 0x18;# e% n/ _; L, Q; M$ a' u/ B( @" N
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / K5 W* N# }& F& u6 A
  63.         arg.e2prom_cmd_data     = buf;
    1 T0 w' J3 \' n9 ?4 ^% @! Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ X4 a- ?# V2 X
  65.         if (ret != 0) {& P5 ]3 g. K% P) M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 G  J4 K* d8 d; B/ p
  67.                 return -1;8 r3 q: c* J+ ^4 g' _% X* }
  68.         }" a2 T6 h! a+ g. x/ R" y; d8 f9 d
  69. $ A$ W# L3 b  }4 C( m% @) Z: B
  70.         return 0;5 c* A: g* r8 @0 }; K  n# _
  71. }; b  y( u& e. ]( F
  72. : r. Z: F. Y( ^
  73. int main()/ a8 b# Q* P: C. s, }  d. ^
  74. {% m4 p1 O$ r; I9 c5 E1 ~+ _
  75.         char c;& `( ]4 R/ M3 X% Z
  76.         int i, macs[6];' s6 ^$ C9 e& E( }0 |* t, D2 k
  77.         unsigned char mac[6];; N) y& s1 w5 n+ w9 v5 m
  78.         unsigned char stbid[256];
    2 w' Q/ S( A  v7 N, x4 _# {( @
  79. 9 ]$ b( |$ b+ B5 \: P; A6 I
  80.         if (readparam(mac, stbid) < 0)8 ], ~* r& e' O4 Z$ L! U
  81.                 return 1;
      ?5 B+ x( C( ?7 [" [" I* C
  82. % l, B; p" @. B2 f" S" p
  83.         printf("Current parameters: \n");
    " z( o, I- \) o" I  I
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) l6 A6 ?4 w$ e9 ]
  85.         printf("  STBID: %s\n", stbid);6 v  L# x7 E# v, R
  86.        
    # J  Q5 H: O! _* p( k' C5 p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ g' A$ _) q, M: x) Z. |  A$ g4 i5 l$ Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + s4 L) ^* c' \4 A+ a
  89.                 printf("Input MAC error\n");% h, ]- n! c; _( F" {* o
  90.                 return 1;
    ! W' X4 A, v1 B
  91.         }- w5 k, c) h* P& k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . w5 R# P. z8 Q6 B( O
  93.         printf("\nPlease input new STBID: ");
    ! K1 f: h, Q# I3 ?' C
  94.         scanf("%s", stbid);
    , {2 v1 ^3 b# t- B7 x
  95.         if (strlen(stbid) != 18) {2 |4 G' @7 B4 A- C7 n, G
  96.                 printf("Invalid stbid\n");) P: y+ F" C( `
  97.                 return 1;
    1 e. u) B4 e& ^$ \
  98.         }
    # S. S5 Q" V4 A2 @" f5 t: |
  99.         printf("\nNew parameters: \n");* d; F$ V( e0 J6 m! E5 M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 X& Q7 B# u6 t: |7 G4 z' m
  101.         printf("  STBID: %s\n", stbid);$ q6 W& g" ^( Y  N
  102. 1 Z6 K* i' T* o5 ~# b+ w
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + s5 V3 z6 C7 X9 g1 N+ ^' ~
  104.         for (;;) {
    7 y) l+ e" Y5 S, q* _5 C) q. ?9 i
  105.                 c = getchar();
    ' s- T# |3 q) ]
  106.                 if (c == 'y' || c == 'Y')' Q6 t* l# H; d) r  w
  107.                         break;
    0 K8 a  `7 K; w! {- x1 G
  108.                 if (c == 'n' || c == 'N') {; J/ Z  l' P& |/ i. {
  109.                         printf("\nAborted.\n");
    + P" F2 o6 T* @" v5 n' U2 G5 f$ o& t, C
  110.                         return 1;8 {) r3 @6 E# M' Q9 {/ d
  111.                 }
    8 [  B& ?" E9 w9 \' V5 q
  112.         }/ |6 T/ J6 Y' _& N6 }# x; f1 i
  113.         if (writeparam(mac, stbid) == 0)
    % |" n1 ]  l+ g1 Y% Y1 n
  114.                 printf("Parameters changed.\n");
    / R" t* y/ g* O' L" V5 V
  115. . v0 H5 [" D; D" Z: s) U
  116.         return 0;
    ! O8 k9 Y( z! D& a1 h9 m  V) l
  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 1 d! ^4 }0 Y5 r+ Z& r5 v. P% `
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# ~1 q+ m$ w% @你用的编译命令行格式是什么?
$ v: T) o( k. T. b  {$ J
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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