查看: 17312|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% |' C9 X. L: g% {; a" `' |$ O- @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 i! T0 F% U9 K& P. Q6 G! n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 j0 [& R0 e2 e$ M) _6 B% K
usage: himr <address> <value>. sample: himr 0x80040000 0x0+ `/ C0 r- f: E; x5 t/ o6 B
' o) t  p5 I7 C: }8 b4 ~- j8 U

/ F. H* v9 n4 E! |& ]不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% _( u4 T, C4 G$ P: m1 T
6 D! {3 t) ^, o  Y" ]6 y
补充内容 (2012-3-8 09:42):! e9 ^# ]3 u# |  w2 h# h
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% ~1 \& O; w9 `! \9 I& A
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
+ t9 ~& T. Y. M
4 n/ S0 [( A  v1 bhimr <address> <value>. sample: himr 0x80040000 0x0! g2 p3 b3 s2 f9 f6 ?

2 M) J4 M1 d$ Q3 L" `; @例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, w0 [! H, t9 k
himr 0x80040000 0x00! ?* a5 m: f4 d& C+ k& z2 U! q2 \
himr 0x80040001 0x112 a( A3 l& p) ~# u& O! T( W
himr 0x80040002 0x22
  \0 M$ H9 U- o: uhimr 0x80040003 0x333 S8 v; P. U; b
himr 0x80040004 0x44
3 J0 L* w4 u0 D+ J1 `. A" Uhimr 0x80040005 0x55
# K8 L( ~1 _$ A) z+ a+ z
. S9 w0 P4 q, p" f" G+ \& lSN也是类似。
) x+ y1 S  |1 [3 m4 {( d7 R, ^. ~; z' o: O9 J
现在主要是,谁告诉我们MAC和SN的地址?
9 |. W  l" }7 i; H) }
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, M0 ]! R- |1 ^- z. v一直想找到运程修改MAC和SN的办法,苦于无解啊

; w# X; O1 z, @9 ]* ^" @* u, v源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 P- X3 j+ M) H* H
1 X+ q% E! ~# a! q, }+ O( g修改的代码早有了。到今天不会编译。8 f4 L7 z  v- |6 S
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 U' L& h  C3 p
  2. #include <malloc.h>' X+ g+ e! r$ E9 D8 j
  3. #include <sys/types.h>3 X0 u2 S' [* {6 \
  4. #include <sys/stat.h>
    + X+ F, u  `" i9 u' C: Q4 J
  5. #include <sys/ioctl.h>* w6 @9 X2 `% y3 p- Z
  6. #include <stdio.h>
    3 x4 C# D- N! P' a3 x7 B  C
  7. #include <string.h>
    ' \, W3 ?% @) ?, u; a4 ^6 |
  8. # r2 Z; t8 l" v3 M2 H* E
  9. typedef struct {; X- C& k% `3 z7 f* S2 A
  10.         unsigned int        e2prom_cmd_sub_addr;
    / J8 F1 u" ?& h9 ~, I1 [( W
  11.         unsigned int        sub_addr_count;
    + o1 [% m/ _- f2 b
  12.         unsigned char*        e2prom_cmd_data;( R  Q/ _, @. @
  13.         unsigned int        data_count;
    1 I) B( U& K3 T
  14. } e2prom_s_cmd;. P+ M1 z- E8 n. R
  15. ; `* [. J8 _, Q) d3 m2 x( g
  16. #define E2PROM_CMD_READ 1
    , Z0 m2 A7 j" v9 D( }# [% b
  17. #define E2PROM_CMD_WRITE 2* l/ x; D4 h' x, z7 |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + g5 K1 c& E) b4 k8 S& R, p

  19. % J2 a8 E% Z& l3 f( q
  20. static int readparam(unsigned char *mac, unsigned char *stbid); w& m0 P/ k" v$ Q3 P
  21. {
    % H2 k& ?: n. U9 p* h) ^2 B
  22.         int fd, ret;" Y' A3 O& N) S4 M2 o
  23.         e2prom_s_cmd arg;
    ( T) N* X: J" n- X/ q3 l2 g. f" n
  24.         unsigned char buf[0x18];6 e7 e2 A: }8 k* Q% t! W( n7 F8 q
  25. % c' O8 j/ }5 S+ P; {' I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( {0 [( U; _1 W( E, {
  27.         if (fd  < 0) {9 c$ @" w8 ?/ P+ ^9 g' C
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 N0 k! {3 {% a: V
  29.                 return -1;
    - \0 l8 {8 y3 b+ b
  30.         }5 p% w1 M5 j$ S" q6 y4 C+ g
  31.         arg.sub_addr_count      = 2;
    5 H! |3 q! y6 V# t9 g7 p1 y1 X( ?
  32.         arg.data_count          = 0x18;6 x9 N) Y- ?+ `1 E/ E
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ \2 f, q0 W3 M7 y3 X* m
  34.         arg.e2prom_cmd_data     = buf;
    0 f/ g4 J; Y( V$ ], _$ D8 y7 K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ N% r' D" t7 _. q: m4 B1 f+ j
  36.         if (ret != 0) {
    2 W6 l1 Q) R1 J4 ]2 ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      s. R8 r7 J! E5 a# J7 }3 z) M7 Z
  38.                 return -1;9 S! a- ]* l, @
  39.         }
    + Y" W) `8 K$ c& V4 k3 g' P
  40.         memcpy(mac, buf, 6);* v% }% E  X- v! D6 C1 ~) ^6 l) j
  41.         memcpy(stbid, &buf[6], 18);
    + n" V7 b" K$ s  t3 M; f# v
  42.         stbid[18] = '\0';
    " t% Z0 l7 p: P5 Y/ w' S5 {! b$ W

  43. / g' K5 f. z9 ]% Q5 ^5 u4 o
  44.         return 0;9 ?; N5 Z9 d  j: K% j
  45. }6 @* }2 s6 l( G% K* b

  46. " ?. |4 z. Y1 I  \* [* `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) i8 f( W: \4 K
  48. {- ~& m% J5 Y5 D7 W% c' ]) y4 D( ]
  49.         int fd, ret;
    0 E4 a3 ^" [0 p' f. |1 S
  50.         e2prom_s_cmd arg;
    0 m& N; w+ F) ]- C% [8 R
  51.         unsigned char buf[0x18];+ X5 o( F& c& u: c9 q
  52. ' P# A: p6 d) L. ]0 q! x9 D# T
  53.         memcpy(buf, mac, 6);* I' B8 _/ Q, G: W; v
  54.         memcpy(&buf[6], stbid, 18);
    , f6 d: b9 a4 m5 D% e) y3 U8 e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, @  f& q( ]; N) L2 x1 D
  56.         if (fd  < 0) {4 z, r/ J/ f- @$ }8 ^& M  T4 l
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + b. d( C/ L& N
  58.                 return -1;4 e" N, D6 @/ q6 I
  59.         }( z; `2 ]; B+ X( L
  60.         arg.sub_addr_count      = 2;' o8 b% q4 {  t7 k- G0 D1 ?
  61.         arg.data_count          = 0x18;
    * K6 f0 p9 T0 N$ N, s; c
  62.         arg.e2prom_cmd_sub_addr = 0x290;. r9 ~  Q2 M$ N5 x5 N0 F
  63.         arg.e2prom_cmd_data     = buf;8 T0 L5 X# n. V# i3 @  x. b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);* m' y) _' ]% a) Z2 q' K6 B
  65.         if (ret != 0) {
    " a* U/ j9 I. v
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 m, s, o" S' {1 F
  67.                 return -1;
    ' {7 k& T2 O) ~% a  K  o/ B
  68.         }3 I* I% ], C. B' \; e
  69. 4 l* p. \" p2 f5 J
  70.         return 0;5 j; n" q( U3 |/ o
  71. }
    # u6 t" a* u* }. J! a' R9 K- x
  72. . H6 h! i" o4 \1 w, {
  73. int main()
    / X" Z. Q9 d, t3 u. X2 e
  74. {, b1 B, N- U2 G6 \' c
  75.         char c;
    ( |6 b$ z( ~! O6 S  W- J1 r
  76.         int i, macs[6];
    7 X. z, ]. z& A" k% ^% t
  77.         unsigned char mac[6];
    * N9 ?" C2 S! l" T
  78.         unsigned char stbid[256];
    " \, F$ M) J  q) D0 R
  79. 0 k' b) K! S; K: K4 P# K
  80.         if (readparam(mac, stbid) < 0)+ A+ J& f$ H4 L2 H
  81.                 return 1;
    & W0 ~. U/ S. M+ `% e

  82. : m. ?9 _# [3 Q: v; U
  83.         printf("Current parameters: \n");
    1 M  a- ]  K; _  P9 H+ z$ F( B
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 ~3 A5 `3 d0 ]3 n* e
  85.         printf("  STBID: %s\n", stbid);) e' b2 O7 ?+ j& M
  86.        
    7 n4 s: b% ~; }& h! t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      M0 U6 `& E7 K+ g7 j, J6 @
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! W- ]' x5 x( o4 b$ u" ?( g
  89.                 printf("Input MAC error\n");
    ( P% v, `+ ~5 M( \2 j5 Z" p
  90.                 return 1;2 ^% u' ~+ F3 _' F& f' n: W
  91.         }/ A# B- I& D! u8 K! o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: a0 [2 i9 G2 t7 D6 R9 W
  93.         printf("\nPlease input new STBID: ");
    , E5 Q3 W3 W7 y/ v! i3 Q
  94.         scanf("%s", stbid);
    & y/ ]- g% L! J  t* Y% C# R8 r5 W  e
  95.         if (strlen(stbid) != 18) {( R+ J( ?  ^' \4 C+ a1 r& E
  96.                 printf("Invalid stbid\n");
      e" s; y) n: }8 ~
  97.                 return 1;. w% w4 _# q/ @" i( e8 e, p0 ~
  98.         }& J+ f3 u, f. P/ Y, D" m4 z$ `
  99.         printf("\nNew parameters: \n");
    5 r, z7 d- v: N8 L) j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* O' P- o1 F  y
  101.         printf("  STBID: %s\n", stbid);8 B9 ~+ d" o5 Z- c5 g! d6 c0 @5 q" e
  102. ; o$ Z- {3 I' v% H& G% E
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    9 G1 O: ~) |. m3 }+ a
  104.         for (;;) {
    # T) B3 U3 g3 o8 f! K2 C! W5 J
  105.                 c = getchar();1 V$ s$ c( P" F$ S1 ?
  106.                 if (c == 'y' || c == 'Y')
    ; J0 D+ m4 B3 @# v
  107.                         break;" A, o/ l( c9 F5 M. h
  108.                 if (c == 'n' || c == 'N') {
    # @" i. m' V1 B& b; N
  109.                         printf("\nAborted.\n");
    1 r# B  z! _. W, ^- }7 S. P0 L9 U
  110.                         return 1;
    ; h4 `% T$ I2 o. |; z
  111.                 }
    , h( x0 Y! m% `4 Z8 |; G  ~: N4 g
  112.         }
    % M; r( j, T; A  P
  113.         if (writeparam(mac, stbid) == 0) " {, ~4 s! b$ O4 V$ r9 ]9 K/ @
  114.                 printf("Parameters changed.\n");
    2 Q4 {) E+ U% B6 M; \+ s
  115. ' y( ]4 b9 b, E* j# e5 b: N
  116.         return 0;' W# k4 o' ]+ c+ J- }) `
  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 $ n5 Y; L. P! g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 n. H( s( V  p+ D. s8 h
你用的编译命令行格式是什么?
) _8 v4 E) [+ P
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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