查看: 17474|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) m  X" x+ m. h0 f* O% K4 W6 f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) z3 G9 [1 h6 W9 x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) o4 a; i* K# m0 h9 ~usage: himr <address> <value>. sample: himr 0x80040000 0x0& }: g3 F  B+ Z( S( @3 n

8 ^, ?" `' v1 t5 x1 t2 d
7 Z5 X" Z# u1 X4 L9 A1 @* u不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, U$ X- N: Z+ X0 J' H5 W, B/ a! D2 }) g
补充内容 (2012-3-8 09:42):
6 e5 Z  u8 ~* _, _) o" [" N4 Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* V; V0 a3 x3 Y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, a/ j  b. ~4 l- R# K2 d, B" p2 K" P  G  e) m5 P6 ]) \0 @
himr <address> <value>. sample: himr 0x80040000 0x0! F" N* w! D; v+ n5 H) b
* P) S! J( @8 b- ^& W
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. X% Z' n; S, b* Whimr 0x80040000 0x00& r& J2 J- }3 B' o- M
himr 0x80040001 0x11
$ N5 C& b8 g- O) c8 ehimr 0x80040002 0x225 l0 ]7 z, A: K
himr 0x80040003 0x334 L: O* t9 h2 U  @6 {& }% I) n  L) y
himr 0x80040004 0x44* u( w$ k7 n+ ~2 p* s1 x
himr 0x80040005 0x55
$ [* U! N6 O6 Z( }/ o% v# S( K  u' u9 ]8 t# k# p/ J
SN也是类似。
+ c' U/ e2 ~7 R( F1 M+ j1 w, v  l+ M5 d# y( i
现在主要是,谁告诉我们MAC和SN的地址?9 C1 c, Y& Q+ z$ Y9 Z7 P
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 N! _" x; L1 }- H, N
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 X! t3 K, X8 Q  t
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * @* X( _8 M$ x: i9 y; }
1 _+ f+ }7 z% H0 i/ g
修改的代码早有了。到今天不会编译。( _- `2 F' n; }  B8 S( H
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # F( F4 y! C  O+ B/ `
  2. #include <malloc.h>+ T& b9 J, Y- Q6 s: M3 ?8 ]9 i3 P
  3. #include <sys/types.h>
    * w5 h& W6 R7 u% d: v
  4. #include <sys/stat.h>
    % k) k0 o( h% I4 e; _
  5. #include <sys/ioctl.h>
    - c3 d6 a2 f: I7 T7 i
  6. #include <stdio.h>0 b! U' E1 h9 I; {1 N9 d4 {* ~
  7. #include <string.h>
    " G5 p0 J8 y& q# F* _2 O: m

  8. ; Z- k( E1 ?6 `! R! P2 H1 _
  9. typedef struct {
    ' v) p' H, b- u# F1 a, h3 t% R
  10.         unsigned int        e2prom_cmd_sub_addr;
    , s0 b8 @9 E' x+ ~5 {8 f3 w
  11.         unsigned int        sub_addr_count;
    ' `) @; w6 r+ f
  12.         unsigned char*        e2prom_cmd_data;
    6 V1 n  y) Y) n5 W
  13.         unsigned int        data_count;* \$ Q! |) i: y) `
  14. } e2prom_s_cmd;
      [9 d, k+ ?! D" t9 Q5 Y0 m' f
  15. 4 B4 r  H9 Y! x! R+ B' K
  16. #define E2PROM_CMD_READ 1
    1 M$ s, f) [0 v( P! U# M
  17. #define E2PROM_CMD_WRITE 2
    + g0 ]7 O5 Q- p; F* _8 s6 ~9 l: Y9 F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" _6 Z, V0 Z1 t
  19. 2 j- Q, h- S3 ^1 |# u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' Q/ [5 m8 M$ W/ ^# g& p% `
  21. {
    # |( \; x0 g  T0 H% u# ~* `3 w
  22.         int fd, ret;
    ( J  z' G  T2 _
  23.         e2prom_s_cmd arg;* b- }4 k! ?* _3 R! w
  24.         unsigned char buf[0x18];
    / I; Y) N  O# v

  25. 6 [' [4 q7 O+ \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' i+ v9 w3 L+ F) X
  27.         if (fd  < 0) {. m' I5 T  w/ p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 B4 V% a# B- E$ P$ m; s  J, C
  29.                 return -1;8 e4 S# ?& O/ {2 |( D, L
  30.         }
    ( w* q6 k+ e3 U0 S/ c6 K4 ~
  31.         arg.sub_addr_count      = 2;
    - W9 F; }9 u, T
  32.         arg.data_count          = 0x18;8 c4 X, |  I0 s( b$ v8 |
  33.         arg.e2prom_cmd_sub_addr = 0x290;- I0 n/ R5 v" p3 {0 l/ A
  34.         arg.e2prom_cmd_data     = buf;* q7 B6 A- w9 E& h7 k, G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. w& m9 L& M; ^- B, U: u  {$ n
  36.         if (ret != 0) {
    " y$ G1 b- L( p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 E3 b" r8 }1 r4 n8 G, z- f
  38.                 return -1;
    . }8 l8 Z% d# f1 O1 P
  39.         }
    # l" J7 y' P; P4 S# Q- |$ E$ ]4 R( Q
  40.         memcpy(mac, buf, 6);
    : K8 `6 }8 S1 |5 f* V2 P
  41.         memcpy(stbid, &buf[6], 18);
    1 g3 U+ a1 f1 U. M+ e" h
  42.         stbid[18] = '\0';, g: o/ ]1 I3 S6 o7 d. _& @
  43. . ^  T: c) C" s# W% J8 }
  44.         return 0;
    " T1 Q/ }+ G6 k$ _0 o' y2 J2 U
  45. }6 x* [! Z: |3 J: ^
  46. 7 O0 A/ `. s9 }" @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ a$ o" R5 E* U
  48. {% D, F4 C% b# X
  49.         int fd, ret;5 T2 M& Q/ T0 M* |4 k; ^
  50.         e2prom_s_cmd arg;7 [4 F* j; K) L% e! Y, B' p
  51.         unsigned char buf[0x18];% V0 R& C9 K/ v3 P" x% R2 Y# c

  52. 8 r2 C: m7 |! Y% {
  53.         memcpy(buf, mac, 6);2 Q/ _. p6 O4 B6 p+ K4 T9 _2 q
  54.         memcpy(&buf[6], stbid, 18);2 _8 U) e( G) X4 P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 n6 G4 @% l0 z
  56.         if (fd  < 0) {- {/ J/ ?" y" v2 n) N5 b) b; ^2 M! A( H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . R5 p, q8 ?2 E
  58.                 return -1;0 {& F8 }  ]- w
  59.         }6 @5 ~: U# {  P' c; Y* F* a
  60.         arg.sub_addr_count      = 2;; c4 f' b$ e( [/ f5 e8 \: [
  61.         arg.data_count          = 0x18;' N1 h* @9 G# }$ M2 ^- Y3 |% y& g0 P2 U
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) ]* ]) C- p- ^9 w# t/ k8 x, `
  63.         arg.e2prom_cmd_data     = buf;. Z" Q7 _5 J8 ]/ Z' J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 D$ e: T% C& D
  65.         if (ret != 0) {- F6 g' P& U* V4 G$ u/ N* F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* C& u! T; w0 J) n0 K
  67.                 return -1;7 s/ w. D+ s$ f0 c! x
  68.         }. }( S+ Q: i) i' j
  69. * ]" g% w3 Y* m9 L5 L
  70.         return 0;6 F; {2 j8 j, P4 B5 i
  71. }  y0 A7 j  R% W  f6 \% z

  72. 8 s8 \* P6 ]" i. F2 \' J. A
  73. int main()9 M# G% l) z. s
  74. {
    ! F6 D# h: d0 C  y: f
  75.         char c;
    1 t# M: a% c' K9 G5 ^2 {- P6 n
  76.         int i, macs[6];
    - R7 h% |$ M/ O1 g' t
  77.         unsigned char mac[6];  b8 H% b  W3 V9 @/ G# U
  78.         unsigned char stbid[256];2 y# f& o( I5 N8 [) x$ b) l  @! v

  79. ( k/ I3 S% a$ r1 E3 d& x/ s0 y
  80.         if (readparam(mac, stbid) < 0)
    6 a4 ~  ?) a: Q) P/ o
  81.                 return 1;3 H- K/ \" C3 I
  82. . g7 ~) u2 `* `- J. t9 c) e" ~
  83.         printf("Current parameters: \n");# Q/ a9 B  O! l- s+ Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ }8 `' Z/ m6 |
  85.         printf("  STBID: %s\n", stbid);
    & o) L  U7 r" V4 P; p: M7 K
  86.         1 o. E5 s0 q+ P3 Y- N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( \- c  J; }; Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 z/ X" L/ @9 p2 [0 A* Z5 X6 w
  89.                 printf("Input MAC error\n");
    8 J, c. }* b2 e( t
  90.                 return 1;6 f% \8 @! j: ]: m3 J9 X
  91.         }
    9 i- d6 x; w9 c6 ]5 Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 U5 a- H& Y8 n( |
  93.         printf("\nPlease input new STBID: ");
    : k8 B" G# z' H0 V0 A: z) R2 E% d* m5 z
  94.         scanf("%s", stbid);
    " |; f5 D$ v& @9 E, O" o
  95.         if (strlen(stbid) != 18) {1 U4 d& ^* K8 V
  96.                 printf("Invalid stbid\n");/ q/ A+ K  L( J! _5 r6 I3 {
  97.                 return 1;
    6 [7 x9 \  \+ \$ h, F
  98.         }
    : ?$ S. e2 n4 \& ]
  99.         printf("\nNew parameters: \n");2 }( p" W& ?$ ^
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 n" c3 l' U4 |# ~& x8 X) r
  101.         printf("  STBID: %s\n", stbid);
    & b) n) v2 U7 _9 a

  102. : F6 f$ p( A& c" h2 [# v
  103.         printf("\nDo you want to change paramemters? (y/N) ");) P9 k$ A, l3 U
  104.         for (;;) {
    + J) I: `/ _- V2 F6 J  x" z! P6 Y) [
  105.                 c = getchar();
    4 Y# k  z/ i) C) K. T
  106.                 if (c == 'y' || c == 'Y')1 c$ u  K* [" L1 Y( W& }) g
  107.                         break;
    ' \4 D+ j! P$ L! ^2 O
  108.                 if (c == 'n' || c == 'N') {2 r4 @/ |( x7 X+ f1 Z
  109.                         printf("\nAborted.\n");
    $ w4 B# V/ Z. Y" a, P: a, H( j6 X. K
  110.                         return 1;3 ~* Z  Y, G* {* T3 P0 B
  111.                 }9 k9 N  b9 A8 P3 c# q! d& |5 x
  112.         }* @2 V3 l( I; l, _; F& p
  113.         if (writeparam(mac, stbid) == 0)
    9 ~/ K1 I! ]6 F9 O1 O
  114.                 printf("Parameters changed.\n");4 p/ G3 d/ m  p& Y4 V

  115. ' V+ b/ o3 e0 K& G* g) I" t
  116.         return 0;; [+ f0 b& @& [8 v0 S4 i# |
  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 $ ~+ q* c' ~# M: k" e9 _
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 ]9 z3 s9 P5 P# @$ c7 c4 Q6 \
你用的编译命令行格式是什么?% }. o2 V4 G* A; q2 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客服返回顶部