查看: 16874|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; E9 \3 n4 a8 t" b3 Y- b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 Q' C0 `8 @9 R& R5 k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& B2 W8 _; l3 x) }5 d; f  B5 ]# u
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  W% I1 [( U% E! V
8 \" B. S# k/ V5 e" D, K% F5 t& g; C1 v7 ^- O
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 [" @! m0 S% A$ J7 e4 ]
  k% V9 E( r# x+ h3 K/ }% l
补充内容 (2012-3-8 09:42):
7 P% _5 l6 h7 ^5 V- zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) B1 y% K' v4 j1 c7 W3 v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
8 ]- h2 k8 D! h  [( t( Q1 ^) \8 j! V/ v7 Y; B
himr <address> <value>. sample: himr 0x80040000 0x0
& |1 T" z3 e+ M; P/ C0 e1 x, O3 g& O2 i7 u. {4 @3 H. m' z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 ~1 \6 W: z7 L+ dhimr 0x80040000 0x00
3 F) I* K; m( M( }/ a/ c4 Qhimr 0x80040001 0x11
& A! Y+ v1 ^8 h8 D) Jhimr 0x80040002 0x22- ~: u; G8 x! ?8 y6 s7 @  q
himr 0x80040003 0x33
5 a6 k- Y" m. h6 Z1 D8 `7 u9 fhimr 0x80040004 0x44
( Z- q/ q- \& f9 l. D3 `himr 0x80040005 0x55
0 P- K6 C7 [# _8 b3 ^
* P0 \+ l8 Q& e( O! TSN也是类似。
$ C& }4 j% y& W. {8 N9 M2 v
8 c: A7 w! j& W现在主要是,谁告诉我们MAC和SN的地址?
& H4 p0 J+ L5 {3 ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 F: S' `, L( x! I
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 \  ?- E! \: P4 I3 s源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, r5 R! `$ ^$ |: W# r8 E- S9 e  D
( Y+ `0 T1 v1 o7 |" H' D' Z修改的代码早有了。到今天不会编译。- q! R. `5 Q2 C+ T% u/ Z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / u) Y) o2 S1 m
  2. #include <malloc.h>3 h7 s0 {" }# v' P0 K% I
  3. #include <sys/types.h>" Z  K- W, B. P
  4. #include <sys/stat.h>
    8 a! g# G- P: N9 z7 a  I8 l+ J' b
  5. #include <sys/ioctl.h>. c. x0 L; J/ N9 p$ D$ W# z0 @
  6. #include <stdio.h>
    # h) m" \4 e1 }8 q; Z; x, U3 h! ?
  7. #include <string.h>& j4 D8 {1 p: Z% r
  8. 1 L# ~" Z3 H. ?. s( ~
  9. typedef struct {$ S$ N- |; `: ^" d  h
  10.         unsigned int        e2prom_cmd_sub_addr;, T- a: y" i( ]) w1 m, t
  11.         unsigned int        sub_addr_count;. P9 V" Z% H$ X
  12.         unsigned char*        e2prom_cmd_data;
    $ f1 o: K! q7 ]' K+ R3 l3 T
  13.         unsigned int        data_count;
    " m: D, N. f4 \5 d
  14. } e2prom_s_cmd;
    9 ^6 Q/ y8 s- h9 b5 _

  15. % B% e6 ^7 @1 A3 \5 {
  16. #define E2PROM_CMD_READ 1
    6 N. e1 K8 d7 D$ ^1 N* O; q1 W  W
  17. #define E2PROM_CMD_WRITE 2
    ) T+ t- P& c1 a6 f: P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# S4 t- g. p0 p8 N7 u- A
  19. ; X$ p: l; X2 z  B
  20. static int readparam(unsigned char *mac, unsigned char *stbid); @# N) x0 _) {- k" q
  21. {
    ! M& W- ]: N6 H: J0 U3 P6 r9 d0 V
  22.         int fd, ret;
    - R. _* d& j4 H
  23.         e2prom_s_cmd arg;
    $ f4 E8 @) n4 p6 `. y
  24.         unsigned char buf[0x18];" g# q8 I/ A! q& U5 m" e& z* [1 m

  25. 8 d$ f: M/ `; c* Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 v* {) B9 v& o: J6 o  r3 [0 @) y
  27.         if (fd  < 0) {% b! R1 v' \- z+ E7 j; }) J$ H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) M6 x$ V% s: q  d7 z6 n
  29.                 return -1;
    ( |7 x8 X; V/ g4 y. d7 S
  30.         }2 c$ s6 x0 o6 x
  31.         arg.sub_addr_count      = 2;
    : ]5 s8 `! q, c
  32.         arg.data_count          = 0x18;' p1 F' l4 d* n7 a; B
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 ?# P+ m7 k* h& I
  34.         arg.e2prom_cmd_data     = buf;$ q) ?/ ]7 Z0 v: m8 [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      C. u) m1 c9 }4 i" l# U% a
  36.         if (ret != 0) {& u, h: k8 X, K6 h- ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 M4 R9 }& D% e' w, Y+ F
  38.                 return -1;
    ( y! Q8 M- q5 w
  39.         }
    , s, V6 R$ z. k4 i/ |
  40.         memcpy(mac, buf, 6);; A( e) H9 m; F
  41.         memcpy(stbid, &buf[6], 18);' s0 d; j1 ]* c% E$ ?7 o+ d
  42.         stbid[18] = '\0';
      M/ i" t3 y+ v9 w

  43. ! o& e; z2 \; e* a( {
  44.         return 0;
    2 w' ~$ y4 o, K7 Z( ?; `
  45. }
    3 e& b: `1 Q2 l$ i( f) C

  46. % |6 o+ M; Y8 A/ z  `: c
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- z+ V5 m  |7 ]5 B
  48. {: T9 {/ f, D6 R" I3 c1 h% I, t
  49.         int fd, ret;
    ' ?1 Y- g7 `* a% N) s; O5 _1 e
  50.         e2prom_s_cmd arg;
    ; Q( B0 _' _8 G0 M. v# F
  51.         unsigned char buf[0x18];
    0 ~. b2 \$ G/ M7 K1 R
  52. & m$ @9 U3 X' P; p7 C! V
  53.         memcpy(buf, mac, 6);
    6 `6 q; o/ c. }4 A4 p4 k* g
  54.         memcpy(&buf[6], stbid, 18);7 L# e7 A/ ^8 x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' h& P4 W3 }' d  P7 g9 A
  56.         if (fd  < 0) {
    % B% r! P7 {) M' I& k
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      n" G5 H5 M6 [+ N
  58.                 return -1;
    / z0 k3 I( e) n
  59.         }; E4 }2 u) }2 o2 W9 L4 O, e
  60.         arg.sub_addr_count      = 2;
    4 k  I, K7 m* k3 O" E9 m1 \
  61.         arg.data_count          = 0x18;  t& K( T4 ]7 n. L
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) c  t( N3 L' ^; R/ x
  63.         arg.e2prom_cmd_data     = buf;
    . j9 R8 r. k1 k6 E% _' q* ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 c2 R/ Y( W( |  F& s; @* _. W
  65.         if (ret != 0) {
    8 t: @; ?. j' J$ P8 [2 t# `& U! T  ?
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 T+ g6 V" L2 L# c$ `: |
  67.                 return -1;
    & g- E7 U% x3 U' m% C  a# I
  68.         }
    5 Y4 t" z# P: {7 E' E
  69. 2 }3 l( k4 N+ n: B  T; E: ~
  70.         return 0;
    3 Q. _" H# ]" g+ h4 ?
  71. }
    ; T* C8 q9 y% W
  72. / e8 E$ D: i& n# K
  73. int main()- [6 Z6 G" g- {* [3 u& U
  74. {
    " @+ C% l7 h9 K) ?/ z6 N
  75.         char c;9 K7 ^& Q6 d; W
  76.         int i, macs[6];# }$ o0 j0 K/ m/ c5 ]2 I
  77.         unsigned char mac[6];  t3 G) w0 l& e) k
  78.         unsigned char stbid[256];7 }' K! V. w6 \

  79. . H( a+ H9 R# ~# ?
  80.         if (readparam(mac, stbid) < 0)
    $ b0 C) d, S. V' o+ X( j% \
  81.                 return 1;
    # I! C# @" o" T& \- v
  82. ' c+ Y) |' r/ p6 K- A
  83.         printf("Current parameters: \n");2 z$ z' j2 L# S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" [  B/ `( Z$ @' o0 ]) I
  85.         printf("  STBID: %s\n", stbid);
    # z7 }5 r. r# [% C
  86.         / T; X& F. D% Q# k0 d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . p( S* n7 k1 z( Q6 T3 ^& L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! G7 g5 e" Q+ j" |9 K& ]$ G
  89.                 printf("Input MAC error\n");: U5 k6 V, w8 c; Y; e( n
  90.                 return 1;
    5 s+ E& C# d6 W% p; J: H
  91.         }: A4 ^4 v/ w' ^, K& B/ M8 _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, G! ^  R% P5 G
  93.         printf("\nPlease input new STBID: ");
    ! |$ H3 n0 _8 z$ P" E( c3 ]9 {
  94.         scanf("%s", stbid);
    8 w% K& G  a0 j  E
  95.         if (strlen(stbid) != 18) {1 z, ?* M: t/ ~0 X9 x# ?1 p
  96.                 printf("Invalid stbid\n");
    + x; X4 L1 `0 [( e( L
  97.                 return 1;0 u+ b+ r# C: l. p
  98.         }7 Y0 S6 `1 T0 Y: V7 A' b
  99.         printf("\nNew parameters: \n");3 l1 Z# U6 Y  f# U) J; h& S4 F6 ]  `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: d! e2 S! `0 ~8 y5 ^% J6 z+ F. z
  101.         printf("  STBID: %s\n", stbid);
    9 H& F$ H& t) h/ e) A. I: s* H6 W

  102. 6 L" {9 f0 C9 J* D% u  x
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      a) f0 u7 U/ [% i5 k
  104.         for (;;) {
    ; s2 j. l5 q+ H; R% ^. ]# K; g
  105.                 c = getchar();
    0 V7 J6 b- v5 u" D( [( e
  106.                 if (c == 'y' || c == 'Y')# C1 p6 e0 n3 c- t
  107.                         break;0 O& z/ `- w# y0 z; C
  108.                 if (c == 'n' || c == 'N') {, j! ~- q3 ]( c' G# ?
  109.                         printf("\nAborted.\n");
    3 U* B% X2 k3 @
  110.                         return 1;, U! ?. V8 q% _) R% m
  111.                 }+ o" N9 a. O) @2 n3 n0 Z
  112.         }
    * C2 x" B3 U* U) t' ]
  113.         if (writeparam(mac, stbid) == 0)
    - W/ f& A7 z* k$ j! q. U4 X
  114.                 printf("Parameters changed.\n");6 d- V  c# c( o4 o+ Q3 n
  115. % x% ^7 |' p$ H1 M) [4 Z
  116.         return 0;
    9 C, U+ A7 @# U
  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
, o; |; y( E) r在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" Z5 ?  p* v! s8 y; k  w; S你用的编译命令行格式是什么?
* L! }- B& k0 E* N6 f
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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