查看: 17069|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! E+ }# [5 i% x# h( ]8 g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- q+ D3 d) e4 C4 [/ ?# U. M
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 A4 H7 C! E+ z( a8 R
usage: himr <address> <value>. sample: himr 0x80040000 0x07 E: K7 s9 m0 [  z) s' K8 W: H
3 h+ i1 E, W. x( b

) r% V1 y7 U/ a$ H4 {# |6 e不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 I4 p/ c3 e: x
' ~, n9 ?! g4 e8 t1 X+ i& q8 b
补充内容 (2012-3-8 09:42):
6 u7 h; B' W$ d0 jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: T8 G6 V; q7 a# {1 j. m) M2 K
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。+ B2 [2 H8 Y; P1 m! [2 k9 U
, e" d' [' \4 U. b
himr <address> <value>. sample: himr 0x80040000 0x03 ]/ Z* ~6 |1 A/ Z8 S5 `

7 T2 `) P+ f4 m7 L例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 P9 r8 u4 k6 m' |' o
himr 0x80040000 0x00
2 W+ w8 S* b, P  m# j, }( jhimr 0x80040001 0x11, I! H  X1 l9 K9 j7 d
himr 0x80040002 0x22" M6 R/ x3 w0 w. @+ E
himr 0x80040003 0x339 J: d% F; S, _; _' N9 s! V
himr 0x80040004 0x448 K4 E- k6 {' G& U
himr 0x80040005 0x55
: c7 _! S  E3 G. s
6 t  P' ^* \6 f4 sSN也是类似。0 ?7 a) U5 I) r$ B) n
5 Q+ K  w+ n  X2 w9 x4 L& {
现在主要是,谁告诉我们MAC和SN的地址?0 b2 d8 O/ |0 |1 z, r& _& C
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( h2 q; {) r" Q; m. ~% [, {一直想找到运程修改MAC和SN的办法,苦于无解啊
' p, G( B6 x  N1 f" y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 f( a& [* |% h# A) ~

+ d+ R: [8 A9 y3 f# m1 [1 U3 C修改的代码早有了。到今天不会编译。
) z2 u7 n# [  U$ v, x$ D3 V& m! ^需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / a+ U, U+ m) \, e) X% }# Q* b. j+ H
  2. #include <malloc.h>
    1 w; U& x9 u- ?
  3. #include <sys/types.h>0 F! k  Y& Q, Z9 T/ K
  4. #include <sys/stat.h>
    1 A& I4 n- z5 T- H
  5. #include <sys/ioctl.h>8 D" |" @! H. P" W3 q3 A
  6. #include <stdio.h>  I& v: Q) M$ N8 F& i. [4 `7 g
  7. #include <string.h>( |) }9 E1 M+ [  _% I
  8. # t! D% `9 W9 V" ~0 a& V
  9. typedef struct {
    # n' b: ~) F+ [4 \2 V
  10.         unsigned int        e2prom_cmd_sub_addr;. I, C: ~2 u; n8 K
  11.         unsigned int        sub_addr_count;
    ) [9 D: `7 E2 n# [1 n, [; Q
  12.         unsigned char*        e2prom_cmd_data;; j- \+ J( e7 D' F8 I/ e% z
  13.         unsigned int        data_count;
    ( c$ g/ d' H. a" @, S, H
  14. } e2prom_s_cmd;) K5 I: j) \+ H% \

  15. 0 X( V! c3 u4 F
  16. #define E2PROM_CMD_READ 1
    ' ]# x) I( p- v
  17. #define E2PROM_CMD_WRITE 23 k/ ?! O' W6 t+ t& r8 J
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; m! w0 v; a0 }) M  ~

  19. 3 r3 y. m/ Q& G/ R+ A- }# Z* l, r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : j; G; o4 ~" V/ E2 B9 @
  21. {
    ! y" Z9 U" H" Z6 b( ?/ E7 [
  22.         int fd, ret;) f6 a6 ?( \# f' ]
  23.         e2prom_s_cmd arg;  W9 c5 x& _$ d$ q9 |/ ~
  24.         unsigned char buf[0x18];
    0 G% p( U2 N; o: Z$ H2 G: ?' f

  25. # W  u/ e7 k2 M1 d( m$ S+ @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! B# d& i9 W2 i8 _
  27.         if (fd  < 0) {
    6 G1 B* y+ w. z+ a3 j6 P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 Q, a% s8 Y% T' o9 U' y+ O
  29.                 return -1;: J6 z2 S1 ?& n, \7 m$ g
  30.         }
    . N/ u1 {. u* b8 s3 O1 W
  31.         arg.sub_addr_count      = 2;
    , j) m8 q: O# _7 {
  32.         arg.data_count          = 0x18;- W- l2 [, T# Q$ M* a" m, Y$ B
  33.         arg.e2prom_cmd_sub_addr = 0x290;" v. i3 ~" ^1 A9 U  Q
  34.         arg.e2prom_cmd_data     = buf;( A; i7 e7 A- ^' c2 `3 }( j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ _2 ~% {+ P  g5 s0 L. Z6 s
  36.         if (ret != 0) {
    ( W2 C, X) D8 X" B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * M2 d6 n, k1 `- m  [, }
  38.                 return -1;
      L% s) W( s5 H( @1 s
  39.         }7 D6 ]; W- E2 E1 `2 b
  40.         memcpy(mac, buf, 6);
    . Y/ B. J6 k' D2 U/ E
  41.         memcpy(stbid, &buf[6], 18);- i- U  R5 H: M, y* T
  42.         stbid[18] = '\0';: |0 T$ j, N- c

  43. - v8 o, H) I6 c9 Y0 I8 d- E& b
  44.         return 0;
    . F- |2 `* z* A; Y
  45. }" r8 S. j2 b3 F0 n- y$ ]* {
  46. 3 w, B+ f6 f2 t6 f! O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( ~9 W( j! J1 ?% Y% Z" y
  48. {0 [. G! X( X6 C; d' o6 t
  49.         int fd, ret;
    ! ^  E! ~9 _) v0 `2 I4 y
  50.         e2prom_s_cmd arg;
    " U, z% z! k8 }2 T2 R9 n- w9 Z! h
  51.         unsigned char buf[0x18];
      {9 y" f3 }' K* l' i( f
  52. 3 @5 \$ M/ S# J. @  C% S5 k5 z$ f
  53.         memcpy(buf, mac, 6);5 {7 ]# P) u8 D) ~- [
  54.         memcpy(&buf[6], stbid, 18);
    " t) P2 Q. w3 V8 ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 B. M! \9 v8 F6 T( E
  56.         if (fd  < 0) {
    2 g2 T1 G, k& z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . B- z! s+ E5 s) [0 B2 z$ U, t
  58.                 return -1;
    3 p7 n" C( X  o# W3 i
  59.         }# T: R3 g: s+ D5 s" ?: I
  60.         arg.sub_addr_count      = 2;; K; Z; a5 i: t. F
  61.         arg.data_count          = 0x18;
    + q$ x# V5 v  `5 x+ a. Y3 i
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 a: z9 ^6 I0 Q6 I  d
  63.         arg.e2prom_cmd_data     = buf;
    ' o; V+ _- \. e8 Y* ]+ J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 X; b3 Y0 A) ?' O5 {( S% A' E+ K
  65.         if (ret != 0) {
    0 p2 b$ L( m, B: r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 w5 q3 [) R- ~* M3 z3 ?4 [* R# G9 p
  67.                 return -1;
    7 d& ^) g' O8 s& t( }
  68.         }
    $ \+ k8 c" u  O( _. G& H

  69. , w$ w+ V& O" o8 f+ x
  70.         return 0;
    ( c1 x0 e1 A0 M) g8 E. O& k
  71. }
    2 ~! ]- k( Q8 O' X6 y! \; q" k5 C
  72. ) I3 c* Q; T0 g) E
  73. int main()  ]# K0 W) J1 y4 P, B9 a! P
  74. {; c2 x, W8 o4 `" b' {
  75.         char c;
    $ G" Z# M* \8 n! V- y7 V
  76.         int i, macs[6];, f! H( u6 ~9 m5 j
  77.         unsigned char mac[6];4 a% p) Z( q+ c3 L/ ?1 i
  78.         unsigned char stbid[256];
    / o1 n$ a; A* A" N

  79. 2 b/ @/ S6 u0 H/ |& G+ B
  80.         if (readparam(mac, stbid) < 0)7 A" h+ P" x9 b, P$ G# T3 w
  81.                 return 1;
    4 {* s- N2 _" f$ s& {3 l; C3 N

  82. . R* g% @- M9 s- S) l
  83.         printf("Current parameters: \n");
    0 J9 K& K1 \# v  J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( M9 A4 @1 P4 l" a& d& M" u
  85.         printf("  STBID: %s\n", stbid);
    ' \: F3 A) r% l5 W& T) V/ L$ e
  86.         - R# ~9 v# A7 f+ H6 O( a1 l/ q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");- l/ A' g6 \$ B% G
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& M( A# M3 t5 U8 c, \2 d* j
  89.                 printf("Input MAC error\n");8 m: T7 d# X+ K) @
  90.                 return 1;
    % k( ^5 c; y" \+ B7 d
  91.         }1 p. G- e  \  X# ]: U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! h1 d8 N& ]9 Z8 S- N
  93.         printf("\nPlease input new STBID: ");- _5 G2 I/ L8 S" h3 H6 p# v
  94.         scanf("%s", stbid);6 ^+ B& w+ C5 G% V. j, x
  95.         if (strlen(stbid) != 18) {
    3 [& C8 ]- l* P
  96.                 printf("Invalid stbid\n");6 \# L& v5 K3 V1 F5 ]# z: h$ ^
  97.                 return 1;
    - B8 e& S; n- k# R- d/ i/ _' j
  98.         }
    1 G3 p) F2 f: G9 l( p: r- X. I: z
  99.         printf("\nNew parameters: \n");/ p  U% v; G( @  ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: L2 I% v4 }1 R0 ?
  101.         printf("  STBID: %s\n", stbid);
    5 G% L5 w9 e5 `4 o

  102. 8 ]$ A( b; |- R4 Q5 {) A
  103.         printf("\nDo you want to change paramemters? (y/N) ");- f- B# v; e2 J8 L
  104.         for (;;) {; k' ?- p; P: @. h
  105.                 c = getchar();
      P# u, s; T6 _
  106.                 if (c == 'y' || c == 'Y')
    ' v! q; _4 A& o) x) f5 ]
  107.                         break;/ Q1 @! L" _, Y- I5 p: Z! b; b
  108.                 if (c == 'n' || c == 'N') {2 V" V- _' F+ ^& e. e" O5 A# F
  109.                         printf("\nAborted.\n");8 z; k  z. p  X) G/ `+ `/ W
  110.                         return 1;$ J0 g, U# q8 J# r- m
  111.                 }6 A7 l! o4 J9 K( r( [5 j  Q+ L5 N
  112.         }
    ! a* h1 E3 N5 k( z$ e: B0 C& ]
  113.         if (writeparam(mac, stbid) == 0)
    ) L2 x% z; j2 X; F1 W8 F- [0 N
  114.                 printf("Parameters changed.\n");# b1 J1 X5 Q2 Z3 `. f# ~; H6 H
  115. 4 I* L1 A- A5 F4 u+ [& D* Q* y+ }
  116.         return 0;
    8 B+ ]( ?& c1 e+ h* O
  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 $ Z4 _0 I  [! n4 O
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. |! X+ U4 e, \* m! @: M
你用的编译命令行格式是什么?& ]( W* h) Q. s
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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