查看: 17782|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      \4 u6 R  D) _, }) x8 N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ A6 c# M, C. T# b
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. C" O% a$ P- r0 ?1 V' y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
) O, [9 r5 L2 A) S9 W: d" c. _4 G. G" W+ L3 A' ^

7 O8 W) s' E0 J  i+ h不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# `2 B: ]. m( j- p. I

" j+ A- n. v" e% o- f" G& \补充内容 (2012-3-8 09:42):
% m; [  R* c  d) z! p8 S( P# thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 s' O0 S4 b; Z! I0 w& X3 @* v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
1 }' n8 n1 m2 J& M0 q& k6 l& \2 N3 c( b  K& T
himr <address> <value>. sample: himr 0x80040000 0x05 G2 Y% G: v' w, S

: N/ O" a. P( q2 R% y0 S4 m例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ K% y* G' r; Z: a, _) S; W% {( e4 A( bhimr 0x80040000 0x00" A6 Y. Z& Q. p6 m, U0 j
himr 0x80040001 0x11" W' n2 J, l- n2 k8 Z( R! u
himr 0x80040002 0x22) Q, ?) U; R5 g, c( V
himr 0x80040003 0x33
0 w3 |: e0 g; o( C/ n; ]7 B: o0 @" ^himr 0x80040004 0x44
- c- A+ h. x( G2 S, y% H% xhimr 0x80040005 0x556 |! o! c7 _/ E. W' |# |

7 s! p) F; ?- ]. N( Y& r1 u  g' M( zSN也是类似。
0 @' ?' ?6 i7 H3 }! `9 _- a9 [( X; f7 O6 |
现在主要是,谁告诉我们MAC和SN的地址?3 ^" w, X: K5 L, j
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 }' G9 x- c0 h7 e* c
一直想找到运程修改MAC和SN的办法,苦于无解啊
, Z% J' {" W; O3 Z2 {: u: z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# {2 [/ s( J3 N: s( C$ \9 Y3 I4 W. m, L$ F; B6 S
修改的代码早有了。到今天不会编译。; Q3 j9 G* A9 i2 A
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: D6 k/ O  {: W6 N- E% L
  2. #include <malloc.h>- m; n" I! x2 p& p1 |6 e: r
  3. #include <sys/types.h>
    - _: V& ~; F: l  _$ U5 d
  4. #include <sys/stat.h>: u/ h/ |: N# V1 }: \/ L9 P
  5. #include <sys/ioctl.h>
    3 w$ T% J7 Y& {) D9 z
  6. #include <stdio.h>
    / U/ ]' {. E4 @& m
  7. #include <string.h>5 b0 Q5 ^# y6 ^6 H8 Y$ f! [

  8. ) Y  x3 k/ S# f
  9. typedef struct {+ q$ t8 H' C0 O1 O( O5 R
  10.         unsigned int        e2prom_cmd_sub_addr;# A; s5 M* O( X$ z) s. C2 {
  11.         unsigned int        sub_addr_count;  c8 d' D0 f+ i, R
  12.         unsigned char*        e2prom_cmd_data;
    + }/ O" A7 @) Z' w5 h
  13.         unsigned int        data_count;
    & ?9 E; B# I& f; `( m! @% L+ v
  14. } e2prom_s_cmd;
    ) N) U7 ?+ H+ ?- F" C8 v9 H

  15. 0 R' [  H5 h) O7 _. Y/ n
  16. #define E2PROM_CMD_READ 1
    5 W& C8 i0 q  I, ^+ Z
  17. #define E2PROM_CMD_WRITE 2
    0 [7 _& _2 @8 [  C' K/ K' E8 `8 I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      _, Y& A7 I- `7 f3 d9 V8 e
  19. ) P; M# J3 }! w4 O$ P0 `) C4 z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + z* U, g7 ~3 B5 b
  21. {& i; [9 \! N; s- l  {$ O" I# `7 b) E
  22.         int fd, ret;
    / N, y. k% X2 n. `: a
  23.         e2prom_s_cmd arg;
    # i! w+ l  ], ^: D8 ]7 ?3 j
  24.         unsigned char buf[0x18];+ p8 J/ q0 ?2 z, C& [5 s. S

  25. * R' A: ]6 @1 ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 h* Z6 Y, j8 P+ d0 U3 U
  27.         if (fd  < 0) {
    . w& e1 L& X, `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' z2 m" J0 f$ A* m( j7 j
  29.                 return -1;
    / X& t0 v: X/ ~
  30.         }
    $ W% d- O4 `" J' M
  31.         arg.sub_addr_count      = 2;
    5 O) ?% F# `$ B9 d
  32.         arg.data_count          = 0x18;
    7 j2 n2 q# R& h' ^( Z, k- i8 F
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 E+ G; H, u  e# x6 D% x) }# G7 c
  34.         arg.e2prom_cmd_data     = buf;8 ~0 i2 X8 F- N& O0 v* _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 j: @/ @7 i7 V+ W5 t2 ?
  36.         if (ret != 0) {
      ]( `) k" H* G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . P& V$ ^* {7 Y
  38.                 return -1;
    6 A. Y) E/ U; a$ v* A
  39.         }
    9 s9 t) D) l/ W. @5 i
  40.         memcpy(mac, buf, 6);6 h. u0 p. a2 x( a2 l  ]2 M
  41.         memcpy(stbid, &buf[6], 18);' N7 b0 \, w1 q" ~7 _
  42.         stbid[18] = '\0';
    ' U: s4 S' M6 O! |9 Y' z
  43. 3 }7 c3 _7 ]3 s
  44.         return 0;4 C' x: V8 N0 `' {2 K, y  _
  45. }
    " V" _' c5 z. Z) M, t* w& Z7 E4 Q

  46. / M& r8 ?) v0 X1 ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( \! U" e) \0 r9 F
  48. {
    ! f0 e1 q; L, M1 z
  49.         int fd, ret;
    7 o! {8 D( ]2 ~
  50.         e2prom_s_cmd arg;9 K4 v- ^4 ]0 ?5 Q
  51.         unsigned char buf[0x18];
    $ L8 `+ r& U4 e8 R7 y( C

  52. # n- w: T" `& T' G, {' A0 T
  53.         memcpy(buf, mac, 6);* ]! I# c/ M  E) I( }: F
  54.         memcpy(&buf[6], stbid, 18);
    7 n+ X" \4 G- Y3 g
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 }+ H9 v' z$ g0 S: j! N$ G
  56.         if (fd  < 0) {
    - [6 U! j) V# x! D* U/ Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & r9 F$ ?* C0 o0 h- R4 N$ ?3 g
  58.                 return -1;9 C- t$ t" i7 \5 g# A* F
  59.         }' _) Z" [$ C3 h4 d$ ^) r
  60.         arg.sub_addr_count      = 2;
    ! [4 G5 G) D" j0 B  a8 X, f+ Z
  61.         arg.data_count          = 0x18;  O/ ]. I0 `  Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 e7 |9 r* J0 j4 O. a. T& L
  63.         arg.e2prom_cmd_data     = buf;
    7 u9 @; k" _. }
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' l, C6 q" Y* }" m! [/ Y
  65.         if (ret != 0) {' `+ d6 i: I1 M+ I$ j, @; F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 D2 D+ ], l9 L! W/ Q2 I' t
  67.                 return -1;
    ( W% K0 T2 w4 d& m% z5 V
  68.         }
    * S4 N0 q- j$ R0 y- U$ L4 I) M

  69. / ~" A9 N8 e- y+ W
  70.         return 0;1 j6 r: f) J( N7 W/ q; T
  71. }
    , @1 k. m3 u  V# H' Y. \7 `
  72. 4 d+ N& W" v+ c3 l0 v
  73. int main(), {/ U8 k( y' X. W/ W" H! b
  74. {
    # y" k1 G3 I* q' u
  75.         char c;
    % ^/ f0 B/ X4 d5 c! |
  76.         int i, macs[6];
    ) f% u$ J0 o0 {- c
  77.         unsigned char mac[6];: o+ T8 y. ?" H. L7 ]* w
  78.         unsigned char stbid[256];9 S! s9 \$ A7 O# q' f7 D9 u4 w
  79. 6 N* z% O9 r5 L2 K
  80.         if (readparam(mac, stbid) < 0)) ~1 F7 T6 I* V/ }
  81.                 return 1;
    7 l: S4 b: u3 i; s3 q

  82. $ u, Q  ?, s$ Y( j# [$ c& Q
  83.         printf("Current parameters: \n");
    / T! S1 ?% I6 S! v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - S- s1 I7 O2 V+ [6 N. ]
  85.         printf("  STBID: %s\n", stbid);9 p! Q) v" {6 N, e, T
  86.         . d! J, D! q0 Y1 H  |/ y% R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) b  H5 U% r1 F: A) {+ I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) Y: M1 y6 _, w; E( ^  w
  89.                 printf("Input MAC error\n");0 w) v: u0 F0 _3 @" z
  90.                 return 1;1 J+ O4 `- T! P0 n  J/ G4 ]
  91.         }
    2 `# X: p4 U9 b" L1 U* C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " ^$ F$ {+ a" L. C# u' K6 n% o
  93.         printf("\nPlease input new STBID: ");
    % K7 `3 r- a0 `5 }1 i, e6 i# l- ~
  94.         scanf("%s", stbid);. z; A- P) Q# ]) L. e
  95.         if (strlen(stbid) != 18) {' j4 G* K2 o! \  p4 y6 |
  96.                 printf("Invalid stbid\n");
    3 Z6 E: `2 p& Q6 ?, X) }9 _
  97.                 return 1;. {* c9 f0 O1 S& X  }
  98.         }
    + j" {0 {' y' d4 Q  ?
  99.         printf("\nNew parameters: \n");
    7 u. L8 ~0 `' X- ?/ k0 a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( M  Q; b  |' q& }8 u9 _
  101.         printf("  STBID: %s\n", stbid);
    9 ~2 E2 ?" V3 y8 g  c) a$ j1 h5 i

  102. : B) c4 B( t! w2 p* Y7 l
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 E2 e1 O3 R: [4 M' o0 s
  104.         for (;;) {! P% P$ e, X( b; M# K6 x
  105.                 c = getchar();) F" N  {" U2 ~; T) \6 p% n6 p4 d
  106.                 if (c == 'y' || c == 'Y')# K; r# U7 {* \! q8 F# B6 y; Y
  107.                         break;
    7 `! Q  S* l$ v- h: E! \/ f" F
  108.                 if (c == 'n' || c == 'N') {
    3 J) E& e$ S9 e6 O8 n9 K
  109.                         printf("\nAborted.\n");+ ]2 w" S/ Z4 t2 D+ a
  110.                         return 1;+ z9 l, W! |0 F; p6 e' q# C% c5 t
  111.                 }; }( t$ H3 g. M! ]+ f1 }8 Y
  112.         }; h" X1 d7 J% b3 d, Q. S! {
  113.         if (writeparam(mac, stbid) == 0)
    5 J/ V; @$ R/ r3 O% S5 _( u
  114.                 printf("Parameters changed.\n");9 k" B/ T* l  n. E) s
  115. 9 j6 P% \7 [7 M
  116.         return 0;( ?" E/ |- b2 @
  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 2 w% V. L: G  I. T$ O
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 ^8 R9 H6 _1 J+ \4 s& O0 {* o
你用的编译命令行格式是什么?
, G& O' |" M- b% e- t
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部