查看: 17939|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . N; O$ M1 E5 \8 g/ v; y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. x1 ^5 l4 C. }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 U* D# O% V2 y2 v4 S% G+ x& cusage: himr <address> <value>. sample: himr 0x80040000 0x01 a. N/ c& w8 p: w
( S  [1 R1 G' c1 x; S# d7 U
& P/ U' y7 s+ E# W$ j, e
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 J' j- I8 l' ]$ ^8 b; E
/ S+ v6 L+ d+ M补充内容 (2012-3-8 09:42):2 M8 ]2 I  F$ h$ @
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' Z; q# c4 N4 l1 `
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。% x; f4 `% {8 I/ m2 ~: R, g

2 j" _/ }# \4 F0 f4 w2 Thimr <address> <value>. sample: himr 0x80040000 0x0
" {  D& O9 V0 i' z1 W3 j* j( {
. C- l$ z/ h6 H: I例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ f/ k) |3 @; Q9 t+ zhimr 0x80040000 0x00( Z- [5 [) p/ k3 y
himr 0x80040001 0x11  ]6 K8 l6 @* \; s5 k" i0 G3 T
himr 0x80040002 0x222 U8 ]9 H  l# o4 U* n
himr 0x80040003 0x33
9 d% y- g" s, X8 ehimr 0x80040004 0x44% A/ j# [2 z/ P( _4 N: w
himr 0x80040005 0x552 t% f, ?( N, Z6 M) r

3 N- \  t4 {5 JSN也是类似。- g, T& i$ p2 X1 ~% f  [( S

+ D! |$ I" @! i/ y% b  |0 {0 T现在主要是,谁告诉我们MAC和SN的地址?
4 @7 d5 a) S, g, H/ z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( z; x) i$ `) v1 _  i" L/ \一直想找到运程修改MAC和SN的办法,苦于无解啊

  Z, k$ n$ }; v9 I3 z2 H4 t6 X源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 ~- N! p/ w7 y6 Z8 ?, j

7 D( l' S; \+ J0 r修改的代码早有了。到今天不会编译。, y" ]/ ^0 ?. ]. ]6 K& ~7 K( s
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ N$ W# d' F3 e
  2. #include <malloc.h>
    % k  X& p2 b1 [
  3. #include <sys/types.h>
    0 S2 g8 j: J* D7 [) z: e
  4. #include <sys/stat.h>
    ! `+ ^: ?& h# _! x! Q$ x5 ^: w
  5. #include <sys/ioctl.h>
    ' i  k) {* _9 g5 y& Z, P+ \
  6. #include <stdio.h>
    9 v! v% p5 m  |. ]) \  W4 A& L
  7. #include <string.h>% |" J% ]7 a. [
  8. 2 w' `! N2 s% L8 z# r# {4 a- G
  9. typedef struct {! W* n& q& j2 @' Y) }: D# X  I
  10.         unsigned int        e2prom_cmd_sub_addr;  w0 f5 R7 ]6 f8 F3 V+ P% c  c
  11.         unsigned int        sub_addr_count;
    * n+ T) `7 t' W2 p1 G! s8 O) d
  12.         unsigned char*        e2prom_cmd_data;( |3 n% F, ^/ A. Q, M8 R$ H' h
  13.         unsigned int        data_count;
    8 }) b' ~% C( `4 M
  14. } e2prom_s_cmd;
    " ?5 Q. B. O/ b
  15. 4 t0 x8 I: _; b7 B
  16. #define E2PROM_CMD_READ 18 O. S8 _5 j5 G1 v. }5 N2 K! g
  17. #define E2PROM_CMD_WRITE 2
      h( c/ W$ {' K0 C8 T  ]5 H$ w
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% h  a2 M1 {5 j; i; x

  19. 8 C( y6 y8 }" Z8 h1 N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) W( I, k- Q3 r( v
  21. {
    4 g/ F0 }3 ^4 s0 D0 [4 w
  22.         int fd, ret;3 u3 ~9 e2 T9 r; E
  23.         e2prom_s_cmd arg;+ L" X$ T+ W# j8 f2 ^, ?; R
  24.         unsigned char buf[0x18];
    5 y# S) m; `: @  o9 ]0 v. u) T

  25. ! j& b4 E: t3 o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( {; K/ P. \5 _
  27.         if (fd  < 0) {
    - j: o9 k" B, H2 f7 B# W7 n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* h9 Z4 y& m# H3 H# ]1 P# E
  29.                 return -1;
    9 {1 @" m; |3 I6 g- a9 ^1 R0 O
  30.         }/ d8 B! g& K- }) C
  31.         arg.sub_addr_count      = 2;
    ' ]7 p6 v" R( w; q/ o# j
  32.         arg.data_count          = 0x18;
    ! x/ p3 R2 `9 U9 @" a
  33.         arg.e2prom_cmd_sub_addr = 0x290;( x( i/ m' G3 o0 W
  34.         arg.e2prom_cmd_data     = buf;9 f7 s2 j  q5 \( l& t) d- D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 h6 u5 c+ P$ T2 t# w
  36.         if (ret != 0) {7 R; r+ j2 o; N$ i0 o* D/ E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " u* U9 l5 u" a  G& [- @; R
  38.                 return -1;: J# l: U$ }3 m7 [: ^
  39.         }
    , x/ o# O5 x; n
  40.         memcpy(mac, buf, 6);
    / Q5 K0 {# L$ }7 T
  41.         memcpy(stbid, &buf[6], 18);+ t. {+ X9 F7 o' K: v
  42.         stbid[18] = '\0';# x0 N  B; L7 p# I' |4 K# D8 G7 j

  43. - M" p8 f6 `- t. h! Y( K# O4 X
  44.         return 0;
    & k5 f* E9 |8 D4 ]+ G+ P
  45. }4 s* z& A9 q/ r. Y
  46. " I  Q5 j" `( H4 s$ _  u& j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , o( j- K( i+ @" o4 h+ _4 ]) `5 V
  48. {+ }0 c1 u/ T, {  B7 u4 V. d: @
  49.         int fd, ret;
    4 F1 h# G* I" m* u& `
  50.         e2prom_s_cmd arg;3 L' K# g7 L6 f8 f9 ?$ A+ N
  51.         unsigned char buf[0x18];
    6 q4 G' T3 Y! {) a4 V8 p% d2 ~
  52. - a" J9 g7 T5 ^% g; d; R7 b
  53.         memcpy(buf, mac, 6);
    . `: z3 P- X; V- J; o
  54.         memcpy(&buf[6], stbid, 18);
    / z) L% ]- L: E4 z. i) Z' @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 {) Z( }& v7 |' F5 j4 q' k: h
  56.         if (fd  < 0) {
    5 `, }! ^1 i' |; T: o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) n" T! B, {0 _. C+ X1 v' E" m
  58.                 return -1;2 m; |. G, m5 N
  59.         }: O* k! N+ n2 _: I& B' T3 f
  60.         arg.sub_addr_count      = 2;& d1 q; r5 A3 G: N5 f3 O6 i! W8 A" R
  61.         arg.data_count          = 0x18;: o1 B. d# P, }( m4 Q9 l% \
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 V6 f8 i1 x1 W0 m/ E1 e
  63.         arg.e2prom_cmd_data     = buf;# L4 _" a5 w3 w& p/ c2 p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ Z' u2 y$ A: k8 K& d
  65.         if (ret != 0) {
    , W7 h, F7 ?/ r% X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; k  v6 s3 s) m/ w3 X
  67.                 return -1;+ }: a! r, O6 }
  68.         }
    * H( C4 W$ k! C2 @5 m
  69. + W/ m6 m" \+ G
  70.         return 0;
    . [& c& X; `; Y8 h+ s% r% H
  71. }/ }& M. @1 e1 I  R

  72. ' S" C- b1 N" M0 I/ |+ g1 O
  73. int main()
    + Y7 N! p* [% `/ b+ H) J
  74. {
    3 P# e, ]8 T1 F( }7 n% M
  75.         char c;
    1 f; ^1 G8 N2 c% i0 W) N
  76.         int i, macs[6];! z9 D0 x& e/ x9 M9 i
  77.         unsigned char mac[6];5 {4 w7 I$ h7 h2 O$ \# B8 {
  78.         unsigned char stbid[256];! r, p; W+ S5 v7 `- S$ b" n

  79. ; f- _6 \" [; E  J$ y6 _3 G0 h
  80.         if (readparam(mac, stbid) < 0)7 E& ?* \% L  U2 J9 I/ p
  81.                 return 1;
    8 M. }; ]* z5 F# K
  82. - u4 D* m( ^" K& i, G: q
  83.         printf("Current parameters: \n");
    6 \; z' y$ u/ ~) ~
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 p; a$ s& `1 @( S  P' {
  85.         printf("  STBID: %s\n", stbid);
    ; p; x  K  S) G* t0 ]- ]2 z. d! J
  86.         0 d4 A5 _: G( X# x) {9 F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" G! \0 Z2 o  i. i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 A$ W4 J; p1 O
  89.                 printf("Input MAC error\n");6 ~  I, m1 |  G/ B) C' i$ g* Y0 @
  90.                 return 1;6 y& h) t( K& i8 ^- ^7 k
  91.         }2 L  a4 d7 J2 W! Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, I% R* r1 x. l% @5 j
  93.         printf("\nPlease input new STBID: ");1 v( q: l, e' l* `6 N
  94.         scanf("%s", stbid);, t" V: s9 Y5 _) `0 x1 f9 o. a/ q, L/ R& B
  95.         if (strlen(stbid) != 18) {
    ) e4 a* }, l# L7 z
  96.                 printf("Invalid stbid\n");
    ' T; B% J5 K4 F  j
  97.                 return 1;) L8 T9 I; c/ h, O
  98.         }8 m' H/ L6 U+ n4 y: J
  99.         printf("\nNew parameters: \n");* X  `# B9 b7 J, W, _5 n& H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 D0 q  ~$ n8 q; ^0 _/ M
  101.         printf("  STBID: %s\n", stbid);
    * P6 `% K. e- y+ C# V

  102. / Z8 ^. Z4 R, ]6 u! m
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # ^, Y2 U8 Y3 I( n9 t* [
  104.         for (;;) {3 C4 {- k5 ]$ v: H
  105.                 c = getchar();
    + \3 s; r: N) E5 m/ ]+ D6 F+ _
  106.                 if (c == 'y' || c == 'Y')* \* d6 o1 g6 F6 P
  107.                         break;  O, w% k4 h$ T  }# v& c. c
  108.                 if (c == 'n' || c == 'N') {; L) r  d" p, n
  109.                         printf("\nAborted.\n");6 n! G5 {$ |, }! U4 u
  110.                         return 1;& r  j. d* ?% ]
  111.                 }
    3 r+ ^3 A6 ?0 ]
  112.         }: Z( W* `% Z. b! h
  113.         if (writeparam(mac, stbid) == 0)
    , ^$ |  v0 E7 n
  114.                 printf("Parameters changed.\n");
    + _/ Z& r) ^1 Q( s. m
  115. ' ^& Q0 c  ~6 b6 i- o4 E
  116.         return 0;( a, z- O" X8 C" Z6 Z5 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 ; ~% T1 |9 m* T0 D, W/ f
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 K; ^! }( Z9 L* o; U0 N你用的编译命令行格式是什么?
7 b' h+ \; Y! D* q5 ?
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部