查看: 16705|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr$ }* K. v1 v# B! T% r  v! Y. B
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # F" l' Y9 O6 @# S0 j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
: F  H( x7 D; c' k+ nusage: himr <address> <value>. sample: himr 0x80040000 0x0: P, x: z4 U- I9 c" R: e/ t" \- q
4 S& v' R. w  i$ \# d

# A/ a: {, R* o/ N3 ?0 j) Q! l不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 J4 {0 w. \8 w4 y6 [* r

2 F2 |. |5 n: y& Z9 m4 X" Z补充内容 (2012-3-8 09:42):$ C% f( ]; E( ?# D3 X  X
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' N. ]. A2 r7 V  m1 C
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 h- a: o* m& X3 M7 h8 S9 @; c0 ?0 E  t- M$ K2 F& S+ M
himr <address> <value>. sample: himr 0x80040000 0x08 L! g% _$ a2 [; B# ^! ~
" \2 v5 _7 J/ L& e% j, F
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( J- R! f2 M* Q: jhimr 0x80040000 0x00
; `' ^, o* I& T" F0 i4 Ohimr 0x80040001 0x11: y9 g/ K* r! H/ Q
himr 0x80040002 0x22
3 W$ E$ m8 Z7 b  o$ n! \5 ohimr 0x80040003 0x331 @4 o# P) \/ o1 N6 o
himr 0x80040004 0x44% }) ^0 A% A: [( n1 O* u
himr 0x80040005 0x559 T7 f4 ~* A$ D% M; E4 @9 S
; q+ l% G: r6 K: d3 l4 l: y
SN也是类似。' h: o' E& ?( W9 Y4 [

  v8 {. S# O) |7 ?. l现在主要是,谁告诉我们MAC和SN的地址?* V8 k% T: a+ T, ~9 T8 J1 M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( S# i0 p+ g0 L& H& i
一直想找到运程修改MAC和SN的办法,苦于无解啊
& F* @2 k8 I' L6 ~5 H# ?6 a
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 {  R2 Y* b4 S3 `& G- E

1 d  e1 i4 h# |/ Y修改的代码早有了。到今天不会编译。4 `1 b1 [7 U8 V
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 r) X+ r8 Y/ z0 t0 C* R
  2. #include <malloc.h>' k3 {# B3 `/ ^. _$ D# l
  3. #include <sys/types.h>" b* y- r2 F) P& o$ J: f3 k
  4. #include <sys/stat.h>
    / D# p- |9 a( E, z+ Z/ |
  5. #include <sys/ioctl.h>9 m8 b# D. N+ j4 e# W& O8 P
  6. #include <stdio.h>2 {" K7 V8 T' c
  7. #include <string.h>
    : j6 O9 i, F8 i% r2 r0 g

  8. " f/ ?7 I8 V9 E  E# P
  9. typedef struct {0 e! N, l7 D' S. o" h8 b- K$ u. z
  10.         unsigned int        e2prom_cmd_sub_addr;
    * \2 R0 i" X9 y+ b4 \
  11.         unsigned int        sub_addr_count;
    ( a. M; R" W4 E+ t, T+ S  h! Y
  12.         unsigned char*        e2prom_cmd_data;0 ?, v+ v, Y( l; r6 _  \
  13.         unsigned int        data_count;. d) a! q' E* g5 i
  14. } e2prom_s_cmd;
    : Q$ c' J1 M, q  [: g  e
  15. / O7 T% q  x8 f- V! z: m
  16. #define E2PROM_CMD_READ 1
    / U1 ?$ b& g! i
  17. #define E2PROM_CMD_WRITE 2# K  f' k3 \1 A! o2 l
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; E) `) Z1 A! k0 b6 P# a- W' t
  19. - Z5 A. `2 y0 u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)4 N# Q+ E" ^; L! j+ T& ]' S9 S- z
  21. {' e) j4 [/ |2 Q3 b' f
  22.         int fd, ret;
    ( ?, F" @9 k. f( u5 o4 ]' z; h. k
  23.         e2prom_s_cmd arg;, [. j3 Q' B7 w2 L$ M/ [$ r
  24.         unsigned char buf[0x18];  k/ Y% m  [5 T9 M" W1 w) l2 a
  25. ( p' I1 K( K) |$ t& ?; Z9 i* e8 K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ e' o- k, _, b8 b% g; e
  27.         if (fd  < 0) {4 [4 k' k. e. s- m( ]: s1 [8 @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + h% H% r, z+ ?1 y  T9 ~
  29.                 return -1;) o& J3 O6 O+ b( |
  30.         }
    # Z; `' g6 t0 A" e
  31.         arg.sub_addr_count      = 2;
    5 A* n  a, f2 `5 H+ y0 a  Z* K, `1 U6 @
  32.         arg.data_count          = 0x18;3 L9 ]  \0 O: _( Y2 l) c; U
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 L! {, C3 d9 J! e0 S8 r3 Y( i- F$ g
  34.         arg.e2prom_cmd_data     = buf;
    ' P5 G6 ^5 }  f+ t) G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 j, d0 W. o! h' f4 j9 U
  36.         if (ret != 0) {
    " G/ E& E# U& r8 E, Q1 j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 v! J- T9 E& K  @
  38.                 return -1;
    ) H, L- X2 I! f( [& `( a3 d+ }# T
  39.         }
    3 O* y1 X8 r; S+ w; ~
  40.         memcpy(mac, buf, 6);
    / L1 b9 ^9 G- n3 ~/ O
  41.         memcpy(stbid, &buf[6], 18);! {0 ?) Y! F0 v0 L8 ^3 |1 U
  42.         stbid[18] = '\0';" F7 L# Q3 p+ O$ R
  43. 1 X) _* T9 v6 h) z1 U& Q7 k2 E9 _
  44.         return 0;( l4 {2 p: Q- j4 f/ j) g
  45. }
    1 t( P9 }9 ?8 U! ]+ m/ a4 b
  46. " p( X7 k2 [1 q1 c' x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ e) J5 J& B! W2 w
  48. {. T$ M. B* _) H4 T! I  A% x& y
  49.         int fd, ret;
    / O# n; Y, u( ~
  50.         e2prom_s_cmd arg;
    3 x1 w' T' }  l
  51.         unsigned char buf[0x18];4 T, K( O( m' w" m. }
  52. 6 Y' @5 m0 F9 I
  53.         memcpy(buf, mac, 6);
    8 Y4 W& k) Q: c* C$ h
  54.         memcpy(&buf[6], stbid, 18);/ P- {7 |7 g  S& X  N; J" @  {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # b( _0 h: E0 V" B/ ]2 E; y
  56.         if (fd  < 0) {
    : L7 r9 e+ |0 j. G" a. S1 Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% J6 y5 W0 G, M+ v
  58.                 return -1;$ X4 G7 b/ o% Z1 d
  59.         }6 V- u, \, S, [5 x: W: b% R( A' i
  60.         arg.sub_addr_count      = 2;& Y4 j( d3 q* {! t7 v
  61.         arg.data_count          = 0x18;
    / A6 @, Q& i6 f7 I7 C
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ o- j. K; I1 g
  63.         arg.e2prom_cmd_data     = buf;
    $ Y1 `5 D* N. P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + s; k) f- D0 S+ _% n
  65.         if (ret != 0) {% ?% @/ c/ ?/ B$ @- _; e$ j
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& |7 E4 F8 h5 n9 {+ R
  67.                 return -1;$ b0 @* K/ [1 Q
  68.         }& q. y/ R, \+ J$ q

  69. 4 |/ Y! j7 i  A: ~5 v
  70.         return 0;
    , \. V; J: B0 B" v# j% \
  71. }
    " b, v' r3 l6 O3 M. r6 @- q: B) i

  72. % w8 {( S7 j. q# }( E5 I
  73. int main()
    0 _: ]+ q$ m+ s: x  i) r
  74. {
    0 r8 c0 d- X0 P3 s' N2 g* z4 Q
  75.         char c;% c: |6 Z/ f! [  p; o) O
  76.         int i, macs[6];
    - ^( ?* x. P" n5 s0 w. [* W
  77.         unsigned char mac[6];
      S7 t# g* p4 d: n: w6 J: B" V
  78.         unsigned char stbid[256];
    7 Y6 c& [+ \/ m0 X# f) O
  79. : l- ?4 B0 z+ O6 _
  80.         if (readparam(mac, stbid) < 0)7 b" o- \( z# N9 ?/ \
  81.                 return 1;
    ( T/ ]7 |& g! \
  82. 3 K/ J, Y9 O* x; k% g9 l
  83.         printf("Current parameters: \n");* y, j/ E5 N# K2 B) M7 w' O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 i, \2 U4 y0 _3 X; m8 W1 M; V7 X* L
  85.         printf("  STBID: %s\n", stbid);
    8 t; z( F% |5 l" q
  86.         ' |1 ]! J* }% k8 @9 N: B8 O; X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 Q' r/ B- D3 `2 L% b8 C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! O3 b/ y  ~/ S& B: l! W: K
  89.                 printf("Input MAC error\n");: ~; D0 N: K, A. r
  90.                 return 1;$ j& A3 @, Y. {4 U0 t
  91.         }& t. b1 Y% I! P' h) k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! T: k- j2 d  n  {, [5 j
  93.         printf("\nPlease input new STBID: ");7 @) ~5 T! U* |3 L" A
  94.         scanf("%s", stbid);
    - s/ V2 q7 s) W% I) S" L
  95.         if (strlen(stbid) != 18) {  n! U& z, h4 e1 A# e' m- X
  96.                 printf("Invalid stbid\n");5 x1 S: Q, e2 x
  97.                 return 1;
      \+ i+ [1 Z6 G- Q* a5 ^# |
  98.         }3 b" F3 W5 O7 ~( K2 j
  99.         printf("\nNew parameters: \n");
    7 w: A9 o- @7 I' S# J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ k1 z; j$ M5 i! r$ l
  101.         printf("  STBID: %s\n", stbid);
    ) D( M7 T% A5 g  n
  102. : x# s" r) B2 M6 U) I, Y& k! r
  103.         printf("\nDo you want to change paramemters? (y/N) ");! M9 I& d0 t; q7 y" V* Q
  104.         for (;;) {- }0 K/ c8 W" q" s
  105.                 c = getchar();
    4 ?8 |+ l. \( y) q5 f& b' V# J
  106.                 if (c == 'y' || c == 'Y')
      Y  {5 V( Q) c' P+ j5 `
  107.                         break;
    6 F# k$ f0 i4 Y0 }" n
  108.                 if (c == 'n' || c == 'N') {
    7 s  _& x- q0 P$ `+ c7 V; \
  109.                         printf("\nAborted.\n");
    - ^" R/ F; x. y  _" M. D) N' x
  110.                         return 1;' g1 e6 C) c* [% J6 W4 Z  J
  111.                 }; G# K, a. S% }/ d
  112.         }- H, D% o' t: _4 e
  113.         if (writeparam(mac, stbid) == 0)
    ! }# \9 b8 I. Y8 S8 \
  114.                 printf("Parameters changed.\n");7 m, }0 @, P2 T2 U& d
  115. $ @) h4 J$ ?5 ?2 u5 F0 p. E
  116.         return 0;
    , ?% Y, H8 `. M
  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 7 ^' q9 j& f8 A, k! p7 j  l
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' \0 k$ v& V5 K# _9 J; ~
你用的编译命令行格式是什么?
' M; f$ H  i) W: x  u) l
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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