查看: 17643|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ |0 q* T) o9 l, h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) O' E. z  [! X9 c2 R: B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 r! Q; h# F4 O& U" r* }usage: himr <address> <value>. sample: himr 0x80040000 0x0
* c8 U7 o( l% o: B3 u+ m# l5 }, D, I) H$ G" d$ P5 K# T9 j) p  g3 V
- o8 w4 n6 S5 [. z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- `  I% H. V2 d
- P( w+ s2 A( T' Q! Q补充内容 (2012-3-8 09:42):$ A1 n# ~  t9 g/ X0 C$ X& Z$ k% i
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: K1 k; b+ m# N4 s3 m2 j这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。1 G4 j& C& S) j+ l, @/ I

; s: N0 \4 p! v$ rhimr <address> <value>. sample: himr 0x80040000 0x0" `, _4 a  W5 }% c7 M
& W9 T1 m9 W) d! ^5 j. K
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% ^/ j/ }8 ~9 e+ p, X
himr 0x80040000 0x00
# ?9 r5 T$ H; ^" D/ n1 W) X) Ohimr 0x80040001 0x112 L4 \" A+ b. G$ i
himr 0x80040002 0x22% P$ e- f1 o' H' @# o* n2 _* V
himr 0x80040003 0x333 r1 j. b: D' q
himr 0x80040004 0x44
9 G9 _& D+ a! I6 k3 Xhimr 0x80040005 0x55& Z" L2 r2 `* r: s

' c, @& b  E0 u9 t4 `3 YSN也是类似。
- e, J+ E/ a* z  i( ?& _: Z2 l# Z2 X5 u! y2 ~' U3 ~7 ?4 S; d
现在主要是,谁告诉我们MAC和SN的地址?
% w4 m3 T! b2 v
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % n1 Q/ ~! n2 V) s3 T% W
一直想找到运程修改MAC和SN的办法,苦于无解啊

1 y9 }& t% U% X  m- D源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# b" z" e1 V5 n  g" I( J) n8 \
# x' [; h" M9 Y! \0 ~* }: u修改的代码早有了。到今天不会编译。
/ W! C7 n9 {$ }/ K需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 ^! p) t9 P2 p* L# N
  2. #include <malloc.h>) F! \  j& \8 p( w& D+ \
  3. #include <sys/types.h>
    - V% ~5 m+ G% ~& `; m
  4. #include <sys/stat.h>
    # R/ K# v; w8 P  Z
  5. #include <sys/ioctl.h>
    + j; Q/ \7 T8 w9 M
  6. #include <stdio.h>( Z7 M; r7 ]; q3 T. Y
  7. #include <string.h>
    % |4 c: P# L) _- Q& B. P6 @' T: ?

  8. 8 Z4 f9 o) y& j4 d9 A8 d
  9. typedef struct {
    5 c* @" h; Q) Q1 U' l: g
  10.         unsigned int        e2prom_cmd_sub_addr;
    . q# }% T, Q3 N" R( _
  11.         unsigned int        sub_addr_count;- Z5 r% Z9 H8 N. E* ]% z
  12.         unsigned char*        e2prom_cmd_data;, R$ ?: [/ U5 E& c3 k8 p
  13.         unsigned int        data_count;
    . @/ Q6 \' ]3 J
  14. } e2prom_s_cmd;) F( y( \# y* D1 ^. r

  15. , z' u( J  A* s1 F4 K2 j% d
  16. #define E2PROM_CMD_READ 1& m! @, w- w8 G1 X; Q; T1 l# L
  17. #define E2PROM_CMD_WRITE 2" i) P* t7 K' ?' x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 _* S8 ~. M! q# ?

  19. ! w: ]1 k9 k) `
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 G+ |5 C6 Y5 j5 k" g0 r) [
  21. {1 e& v; V; d4 l9 S  K2 ?
  22.         int fd, ret;
    5 J5 {9 O! W. X
  23.         e2prom_s_cmd arg;: D9 w; l' a2 G$ f/ F. s& L+ Z
  24.         unsigned char buf[0x18];. R+ s1 W: Q# s! B8 |1 U( w

  25. % l9 X/ ^( J7 s" g1 Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ G. W7 O' G& e2 N7 o7 U0 w2 e9 O
  27.         if (fd  < 0) {
    % c& b- T! M& }0 i5 R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 G+ f6 g5 t) k9 o: g' D4 M/ Y
  29.                 return -1;
    ' R9 w, L0 O# o. E( p. M* T
  30.         }
    5 A6 c. U( S) R9 J2 i. {0 D5 `
  31.         arg.sub_addr_count      = 2;9 e- Z9 R) N& j# _: M& ?
  32.         arg.data_count          = 0x18;
    ! C# ]( K: e6 [% h# U7 C
  33.         arg.e2prom_cmd_sub_addr = 0x290;) V$ K7 E/ Q' m' A
  34.         arg.e2prom_cmd_data     = buf;; Y2 a! {+ I6 N( C* Y" `" b. Q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 q& t# k  `' w! ]
  36.         if (ret != 0) {
    & _" s9 |0 U) `% L4 x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 X; o  ~# i% j) H3 V, V, g7 ]
  38.                 return -1;4 n) j- Q9 [* M7 P. z: B  D  E
  39.         }
    ' Q: [& O; _+ a. }. j
  40.         memcpy(mac, buf, 6);1 @6 y/ n5 ~  \& W$ e/ ~
  41.         memcpy(stbid, &buf[6], 18);$ F: W# a# V# f9 i) h) V
  42.         stbid[18] = '\0';7 {1 b& }6 W% a+ q4 D, `( e- Z

  43. " t- F2 y; q" J4 f1 O
  44.         return 0;% j* J3 \% F3 x( q  h# P+ W  I
  45. }* @& ^- `4 ]1 Q* y: j. a
  46. & i) l5 P* {9 e, r% Z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
      E' v4 N2 ^+ h) D9 T/ v9 m
  48. {
    7 B& x, E, @" [; K2 {
  49.         int fd, ret;
    7 P$ o6 i8 v; X) A  ^
  50.         e2prom_s_cmd arg;% f( n. D/ i$ g
  51.         unsigned char buf[0x18];
    3 H8 m/ `% T, ?4 E. t4 }4 Y
  52. ; p: C8 R  y% D( M
  53.         memcpy(buf, mac, 6);5 d6 D  u# m: f6 ?7 U* ^( F
  54.         memcpy(&buf[6], stbid, 18);! V3 g" c8 V6 m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' S0 C' x' ]# U8 q0 K
  56.         if (fd  < 0) {
    + ~% o$ q/ A0 a# g
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 L; q6 q! c9 ^! p' B
  58.                 return -1;
    / \  h$ \( B7 J* c8 w& r8 I9 `
  59.         }
    * [/ P9 Q9 a+ M
  60.         arg.sub_addr_count      = 2;' j7 ~& v2 a8 Y9 }- {
  61.         arg.data_count          = 0x18;
    0 ?$ r; [( S. P# d: O1 p% @
  62.         arg.e2prom_cmd_sub_addr = 0x290;& q9 c. U0 C* R/ K
  63.         arg.e2prom_cmd_data     = buf;: g. g3 K; R. a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 I5 {/ ]. T( A0 `2 T6 {9 x. g
  65.         if (ret != 0) {
    * x) p/ u. |0 Z" P, d. H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ W! Q, J* h% s2 H$ Q$ R
  67.                 return -1;. N: s: {4 S0 s- A) v; X
  68.         }
    : X6 b: t$ W  {
  69. 9 @0 ^5 ~" G# y2 Q: B3 b
  70.         return 0;) J' b' ~, m" |' l2 w
  71. }
    # L  d; n! o5 k

  72. * z; V# N7 j7 w& c2 R0 C
  73. int main()% h- U3 x% z5 s' Z. p2 T- X& ]
  74. {+ @4 g& ?! `3 P, U
  75.         char c;
    9 P, C. X9 u4 d% V7 i2 {
  76.         int i, macs[6];* l! o; r- T5 g& ^. |8 I
  77.         unsigned char mac[6];
    ! D6 s; a* ^$ k6 t
  78.         unsigned char stbid[256];
    3 e# v! o$ s" f: |, F

  79. + x# s( Z/ ^) v7 L8 p
  80.         if (readparam(mac, stbid) < 0)! d# ~' Z% O: L7 S" k0 \
  81.                 return 1;
    ( H. [4 @9 |1 R' A, v3 N- l, t0 V
  82. 1 r: m. a# l; x9 @% ~
  83.         printf("Current parameters: \n");" d/ Y' |: O6 D; k4 b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : {5 f4 @* v- u- ?1 D
  85.         printf("  STBID: %s\n", stbid);
    8 k7 O% B3 w7 m: I
  86.         : }. a( ]: k8 |4 j5 M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 ]4 D0 U4 E. I' r# E  M: S0 i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  z% M  B3 ?9 M
  89.                 printf("Input MAC error\n");
    1 c( w1 W- D8 [: k
  90.                 return 1;& J; b/ q0 ]# j2 c$ k) E# K
  91.         }
    8 d, }: N* u2 `5 [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 v& A+ Y* j( f
  93.         printf("\nPlease input new STBID: ");
    % B3 H; l( B. w" n& {7 C, D
  94.         scanf("%s", stbid);
    ' f" C* g3 A/ M# V" u2 O
  95.         if (strlen(stbid) != 18) {
      T, K. o1 j2 ~6 R  F2 q
  96.                 printf("Invalid stbid\n");
    ( H% P* N8 `. P9 F1 B" R
  97.                 return 1;1 p# i- I/ e9 Q! A- S! s0 T
  98.         }# C' L4 d: C) |( t. P
  99.         printf("\nNew parameters: \n");: w# f5 _8 `# {% {9 ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 @' @: k2 L! a1 S, M
  101.         printf("  STBID: %s\n", stbid);
    * _" `7 M& r9 x8 P0 X% D
  102. - C: f3 K  l. E* |4 S$ P
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 P. P& N3 J' B8 C
  104.         for (;;) {
    # E) E% M! G) U
  105.                 c = getchar();' [$ c# z6 l8 B
  106.                 if (c == 'y' || c == 'Y')" I# ]) I, p: @9 A) i$ E
  107.                         break;
    1 q0 @2 {) u( s
  108.                 if (c == 'n' || c == 'N') {
    * G: q# c: S  y! p2 i6 ]; ~* m7 G
  109.                         printf("\nAborted.\n");, B1 ?7 i" W; |% @1 L% ~1 t. B6 v) Z6 N
  110.                         return 1;+ m5 n( @0 f! j' F' @1 K
  111.                 }8 S. ~5 c3 L# ^
  112.         }
    . L/ g* e7 Q$ f8 y$ B
  113.         if (writeparam(mac, stbid) == 0)
    8 ?2 [; G6 H: M
  114.                 printf("Parameters changed.\n");% \' \& F+ }5 q3 n' E; h* T

  115. & R  D3 `# [1 D5 t
  116.         return 0;
    $ l3 x4 B$ t* i/ e" m4 B% f" s3 _
  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 P, d/ m/ ]1 S/ n! a! \  \0 j) I! v
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 D( e: Y/ a( w  y你用的编译命令行格式是什么?
  S5 o# N2 z) V$ S% 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客服返回顶部