查看: 17222|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 p# b- H+ w: k! @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( ]3 y! a: f( @! Y- e- x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
6 O7 D/ J# s! _/ Ousage: himr <address> <value>. sample: himr 0x80040000 0x0' b! \! t. ?# s, Y

+ G( s% j4 n. j4 o# v% N$ U: P
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; e3 Y7 ~0 t9 B+ @- \
; l2 d8 }; a4 f& u* ?' {# g补充内容 (2012-3-8 09:42):3 d2 F  G0 L+ a8 u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: L. Y% ^, X# p6 o  i5 W
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。* G, a3 H* a. p2 G; i/ m8 N: u( ~

  z& M: D$ a- Y4 [himr <address> <value>. sample: himr 0x80040000 0x0
9 A/ ]7 A9 J$ l6 s) a! o) K$ ]0 d9 i1 N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, j6 v3 w) D0 f8 }- j, p
himr 0x80040000 0x00
; ~+ }% K4 H% [. h/ @6 g, \himr 0x80040001 0x11" I  |: ?; N1 p0 `6 N, L
himr 0x80040002 0x22
# Q+ a! Q# O6 w9 Phimr 0x80040003 0x336 K6 t, T. \- c- m
himr 0x80040004 0x44& f, X% [4 S" {* P- \
himr 0x80040005 0x55
" ^* B, J( j3 k+ B# v4 |* Z8 D, y  B* U" a+ T, G
SN也是类似。
0 f3 w0 k& n+ ?% y
: E" k4 h5 ^- I/ }. i: S+ g" `现在主要是,谁告诉我们MAC和SN的地址?/ o+ Z: e7 Y- f. u
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- {* x+ R( n' x2 V. b* c一直想找到运程修改MAC和SN的办法,苦于无解啊

) d: _) V$ x$ C4 Z9 J( _源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; ^1 X- k* X# m' R: m2 ]
9 T* R' [  e$ t0 T4 _修改的代码早有了。到今天不会编译。2 d8 R0 z# F2 |( s5 _; Z, R
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - F' E+ ~; k3 w) m$ G2 e: _* u% F
  2. #include <malloc.h>6 K# ^3 J+ w9 j9 y7 n
  3. #include <sys/types.h># B* b0 y( h; {$ Z
  4. #include <sys/stat.h>
    / z" }4 p- |% a' O0 I/ B
  5. #include <sys/ioctl.h>5 f# T# {2 B4 a
  6. #include <stdio.h>
    " S2 }8 d% L; F) k, |. I* M* h
  7. #include <string.h>1 z+ ]0 d6 A( i& H& k0 _! o! e
  8. . @* g) }& i. c' n  ?; P, R6 i& i
  9. typedef struct {! u! n1 o+ T1 I
  10.         unsigned int        e2prom_cmd_sub_addr;0 B0 V1 ^  T& D$ `6 L
  11.         unsigned int        sub_addr_count;
    3 p! F8 {- M# t+ ^/ p$ {! {
  12.         unsigned char*        e2prom_cmd_data;
    4 c$ ^9 l' }: f' r9 C  X: U% m
  13.         unsigned int        data_count;
    " W& Y3 T$ v5 W& L+ C7 o# X' h
  14. } e2prom_s_cmd;# _% P3 f& y& D& D

  15. 7 M2 f0 ~1 k+ c: @) j  a9 C! T
  16. #define E2PROM_CMD_READ 1  ?* W1 u/ x5 i
  17. #define E2PROM_CMD_WRITE 2% d  L4 m+ M( E$ H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 @! n8 |& ^0 T) }' E
  19. , I5 {1 H7 x) O2 A4 ?4 i; _
  20. static int readparam(unsigned char *mac, unsigned char *stbid). o6 Q5 H: I0 A, c
  21. {6 d3 q2 b  E% R  m
  22.         int fd, ret;
    " y1 W- u: x% M- q/ {% \
  23.         e2prom_s_cmd arg;! @. L- D& q3 k( l
  24.         unsigned char buf[0x18];
    0 g, w7 W- {# ~; V0 `

  25. / i; G* a9 \  A( r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - _: c9 {& Q. t
  27.         if (fd  < 0) {
    / R2 j1 ^4 y2 f1 b8 |+ W: P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ j+ l; L& K- u) r% v
  29.                 return -1;
    & c* C  X" E6 a$ x
  30.         }9 Z. f( ^; O# A% |3 K. q
  31.         arg.sub_addr_count      = 2;0 ?. c2 _% ^$ @: s2 A) l# W
  32.         arg.data_count          = 0x18;: c* Q/ v- D7 k0 L
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 e8 k3 s8 I4 w2 W3 Q4 y
  34.         arg.e2prom_cmd_data     = buf;
    + Y. O% i7 r2 z. \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # F- y% a: u9 X3 H/ W+ m8 y
  36.         if (ret != 0) {
    % E7 _3 ^; U% \9 j6 R, Q) p. B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 Q4 z, x5 d4 u, t2 n
  38.                 return -1;+ h8 _! H' v; U2 G0 _! P
  39.         }
    9 v/ b: x# X8 Q2 U
  40.         memcpy(mac, buf, 6);% a3 G5 T% X) t/ `7 ]2 H+ M
  41.         memcpy(stbid, &buf[6], 18);7 I. U# y& V, g5 x
  42.         stbid[18] = '\0';& X. G5 i8 U5 ?* Y

  43. 9 Y5 B. a+ d0 J+ A
  44.         return 0;
    . M" c; G" G, n7 h! [8 H, m
  45. }
    2 }) g8 S* D$ w. h3 A
  46. ( u2 R7 `, M- e/ K# O* K! ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). T3 [- S$ ^1 ^' E% v% e7 O* @8 h
  48. {
    / ?+ q4 T( o/ v' a* w& h4 w
  49.         int fd, ret;
    & B3 J9 \1 z( B2 J# w, w3 X
  50.         e2prom_s_cmd arg;( l. w% `* z, X2 u; M4 F
  51.         unsigned char buf[0x18];3 p+ B" c( [/ P5 @  a1 u& P+ U

  52. / T8 H; a) G  F& E8 d7 |8 L* c
  53.         memcpy(buf, mac, 6);
    * h8 x' }! _3 t0 H7 R2 z
  54.         memcpy(&buf[6], stbid, 18);& X$ m6 M/ x5 v) e  n- A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 U5 y3 A$ k* ~" C: r% h
  56.         if (fd  < 0) {3 o, {, _' f$ }8 u3 E0 P( }
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 U; r% z) K7 `/ W6 c2 t; G+ k9 F
  58.                 return -1;
    ! l/ n2 \! l9 u
  59.         }7 k& N! _) ~8 z
  60.         arg.sub_addr_count      = 2;
    4 q; |% s3 g5 n+ C# K1 m. A
  61.         arg.data_count          = 0x18;  v; p- O+ F- ?' ~0 k4 S! Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 ~# N* h  O, P) H( e  J9 @+ i7 `
  63.         arg.e2prom_cmd_data     = buf;
    7 }2 X7 i0 m+ }6 h4 u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);! W8 i/ T# h- U! U
  65.         if (ret != 0) {
    ( m" k2 `& `0 K) D1 b' I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 D) A' F, w; T( h) H' h' k; E( ]6 @" ^
  67.                 return -1;
    2 B$ P3 q, H& v4 A
  68.         }8 J6 Q/ k5 g5 Q* S7 x" Q3 @* @

  69.   j9 K6 w  X6 o, e
  70.         return 0;5 D  w* n) H7 y4 v0 l5 t7 L% W
  71. }+ v5 f( J3 O8 K! ]
  72. - G0 M  G9 j9 {1 ^
  73. int main()
    + ~  @$ E1 w7 q) \1 k) j
  74. {
    4 Q0 X4 B/ P( g# A
  75.         char c;
    0 _' c! g( T7 @  I
  76.         int i, macs[6];
    9 A7 B. |4 }3 t  D
  77.         unsigned char mac[6];
    ; @/ v* ]" b+ |' c& E
  78.         unsigned char stbid[256];
    0 l( J& H1 c/ H4 t$ W2 Y
  79. 0 Y/ ]1 x# y; b6 ?3 n
  80.         if (readparam(mac, stbid) < 0)" O- R; q/ R# n7 j
  81.                 return 1;
    ! t! {/ X# R) A& s; N/ ~
  82. " U% P+ z6 V$ C9 m( I) _% r
  83.         printf("Current parameters: \n");9 f$ w, u$ _9 ?) C2 ~2 ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 J9 \# m0 ^' G$ v% \" ~2 D8 t, d
  85.         printf("  STBID: %s\n", stbid);
    ! h3 D" P( l9 E$ `# S
  86.         , G% \: c1 I8 C+ N3 P: B1 e) S- Y5 D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* U( _# M% C$ F3 f: P/ c( z! w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' _% u; Q0 h2 X" j' ~5 `
  89.                 printf("Input MAC error\n");
    ) t4 B9 M0 \' l, H' D& o
  90.                 return 1;2 r# \& I& M) R' F& ?1 P& y: }
  91.         }5 h+ u5 ?" `" i) i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- f5 ~$ X8 ~* Q' x
  93.         printf("\nPlease input new STBID: ");& g$ Q8 c, t- p6 T0 S/ |
  94.         scanf("%s", stbid);; n: I9 p% D3 _$ u( k
  95.         if (strlen(stbid) != 18) {: [  H1 T# e+ L
  96.                 printf("Invalid stbid\n");! E1 I% c/ x) A- p# G: D, V
  97.                 return 1;! o7 M2 u. v  r  E. I
  98.         }' `/ _+ t$ h( h! q
  99.         printf("\nNew parameters: \n");( l  W+ e8 K7 ^  A1 o% g0 J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 M! k; \6 `+ B7 z7 u0 f# b! `
  101.         printf("  STBID: %s\n", stbid);. e8 V$ E" F& E
  102. / i' W2 B# a) B
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 b' Z+ k1 p, Z: A6 W' ?
  104.         for (;;) {9 j. T0 t, f: }# l7 ^% o+ H5 ^
  105.                 c = getchar();9 ?1 _- A1 H" w+ \
  106.                 if (c == 'y' || c == 'Y')
      l7 N! W# J2 D3 X
  107.                         break;
    & O; {3 Q" C: d  D
  108.                 if (c == 'n' || c == 'N') {5 N# l; L& s$ _" r0 B
  109.                         printf("\nAborted.\n");1 z% ]1 t) W% A4 f! R# ]( F% M' E
  110.                         return 1;
      Q' b: x6 N+ w) L2 [  c
  111.                 }& J8 B4 h% ~; r4 [
  112.         }/ n9 ?5 f0 x0 Q& K  j# ?
  113.         if (writeparam(mac, stbid) == 0) * K' N3 S* X2 h  \7 o
  114.                 printf("Parameters changed.\n");) ~: @- K' a  G  j" I  A
  115. & W9 K3 P& {9 x6 v. |$ a
  116.         return 0;; x; n4 a9 f- 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 4 T7 h7 P+ Q* _' g" F, d; d5 F
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 _% ~1 m' `! S' l) Q你用的编译命令行格式是什么?( y3 V1 o  F/ X' ]4 b6 j4 \) D
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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