查看: 17339|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % ^, a2 g0 _4 a+ B; t  m
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ j8 j* B! X; [$ n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:! k4 z& v7 j: ^' f- @" \/ Z" Q
usage: himr <address> <value>. sample: himr 0x80040000 0x0( b0 U3 \: s4 I: i8 H/ G! G9 o

4 K* U+ _+ G& }& f1 ~6 |- J; ]
9 L, y  ]% V4 ^7 ~不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% I' P8 q, W: m7 E" }0 I7 H5 I7 U1 l$ y4 I" J7 I
补充内容 (2012-3-8 09:42):
9 N$ U  W  y* U  W1 |! v7 {3 |6 l6 Ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" P5 b0 Z! a, i9 I) U7 U这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
: D6 f; i2 j. C6 O, ^
/ [; U7 S0 e& f$ mhimr <address> <value>. sample: himr 0x80040000 0x0. m( K7 F4 n* H9 x3 j4 Z, t

" [* s# d) x- t  h3 ~: N2 }3 e例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 y/ L  x& \& D* Mhimr 0x80040000 0x002 G, T9 u0 _6 w6 X
himr 0x80040001 0x11. b& D  {. u% e" D
himr 0x80040002 0x222 m, h0 U4 K% j1 N  L- y% f
himr 0x80040003 0x33
$ w6 L2 V6 I" t: a3 O2 chimr 0x80040004 0x440 Y% X: N  e& r" r
himr 0x80040005 0x55
2 T. Y3 W6 Y* @% |. Q6 y% j9 Q( q. J7 z9 Q& t. a8 q7 w: A7 ?
SN也是类似。$ h, B! x  |# c. `

$ ?: t  ^& V2 Q; V& K+ S% ?" Q0 w. `现在主要是,谁告诉我们MAC和SN的地址?
) Z- l  @  [( _. R0 z$ Q- Y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , K8 }# M1 d! I6 A
一直想找到运程修改MAC和SN的办法,苦于无解啊
& E! J7 m# r4 \1 R
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) ^1 o; g# [; b1 Y3 O
; S: k7 |+ g1 f! g& F# V
修改的代码早有了。到今天不会编译。
* w5 x3 l$ v7 A) ^" `, Z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; S; H" j+ c% M1 D# n, ?! q: ]2 T/ I
  2. #include <malloc.h>7 m& }! {$ `5 b; E$ _, s
  3. #include <sys/types.h>0 R- a. b  r. Q
  4. #include <sys/stat.h>
    8 T8 Y& j) {5 e$ H& j
  5. #include <sys/ioctl.h>
    5 I6 A+ i( ^' Y; [( M
  6. #include <stdio.h>+ N) w  }! Z9 Q  k" c$ g
  7. #include <string.h>8 A( ~  D8 Z% O6 F' `4 P. u0 l' x: j
  8. ! u6 n) {$ {2 n& n. X0 ]2 J8 o
  9. typedef struct {8 F5 R/ s% [9 h. Y
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! w% F/ m% `" i6 o
  11.         unsigned int        sub_addr_count;6 h0 ]' g8 A1 I- W& ~% f
  12.         unsigned char*        e2prom_cmd_data;
    6 z3 _/ N6 R7 r2 p4 r
  13.         unsigned int        data_count;
    7 W* l% c. L3 b
  14. } e2prom_s_cmd;
    ) ]5 P) J5 C2 t- {( Z' X: W+ m, a
  15. 9 ~9 L1 a0 k( K7 Z  X
  16. #define E2PROM_CMD_READ 10 U2 z- E+ U3 ~* k
  17. #define E2PROM_CMD_WRITE 2
    2 f* _! a  A) z# g2 P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' y4 D7 Z, |: V7 J# K3 C1 X
  19. $ M: A3 K& J  ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)* N" ~( [) @: h& G
  21. {7 R8 Z6 b9 B" L  A
  22.         int fd, ret;
    , H% S) E& O+ k
  23.         e2prom_s_cmd arg;$ y8 G# s3 i, Z! b
  24.         unsigned char buf[0x18];
    # A, Y1 P. [3 L# }
  25. 7 R" j% E- _+ a$ }6 h, s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( y5 V& s. u0 r2 r% \  P6 W6 Y4 W
  27.         if (fd  < 0) {- D2 Q; `# p" m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % U$ a, G% [0 g) x
  29.                 return -1;
    ( d  J' r! V* T0 i  V8 C. u
  30.         }7 F5 ^3 i0 g1 p3 m
  31.         arg.sub_addr_count      = 2;
    7 d! F6 H; q. F
  32.         arg.data_count          = 0x18;% U3 e4 c! T* ~1 o2 I
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      p/ f0 V3 F6 r* B4 t  @6 D
  34.         arg.e2prom_cmd_data     = buf;& L$ @: m+ ~6 F) p1 \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # z" k1 b0 F" d, ~( w4 @7 G- i' _
  36.         if (ret != 0) {, x* O- {3 I# P0 g9 c$ T6 [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / q/ H/ Y- }2 M6 ]3 p
  38.                 return -1;$ `. K0 w8 ?; J
  39.         }9 y' v. N% f# _
  40.         memcpy(mac, buf, 6);
    3 m7 W# O4 G6 y; \; L; i* V  K$ j
  41.         memcpy(stbid, &buf[6], 18);! R! f- w0 {5 z: u/ ~7 O
  42.         stbid[18] = '\0';5 K4 ~" ^, }3 a  T# ]+ o

  43. ; a, O- `, H4 A7 ^
  44.         return 0;
    ; z5 m, T' @$ ^
  45. }
    5 l2 I4 s& R0 f- r3 Z! i& ]

  46. , U- Q2 _/ ^% l2 O, H7 M7 c! u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 E# H+ `8 G( J# m  S  I/ R5 e! u0 Z
  48. {+ L4 T. U& x2 v: L- H! m: g1 ^( A! ?
  49.         int fd, ret;2 G" u$ u$ w4 z" B6 T# I. J- m
  50.         e2prom_s_cmd arg;
    , b3 f" @7 `( d
  51.         unsigned char buf[0x18];" @& P/ l  B) k+ `
  52. - a: q. p$ q) b# h- B' a
  53.         memcpy(buf, mac, 6);
    ; d. w, E( ~6 J0 W$ w: y: K
  54.         memcpy(&buf[6], stbid, 18);5 Q0 `: L$ c% |7 b" A9 @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / A: B0 U+ b( Z
  56.         if (fd  < 0) {  Y- N  `% _, P$ Q$ D- \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , A; \3 l; Z3 ?2 R- P9 s
  58.                 return -1;1 C% |6 m/ _7 [8 r4 I$ @
  59.         }
    ; O8 Q; m6 P& p" ^( Q
  60.         arg.sub_addr_count      = 2;; T0 g1 w* a9 o3 M! \
  61.         arg.data_count          = 0x18;8 R, |0 Y4 E7 U; `" q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; L: t% U+ ?. p4 ~6 j, I
  63.         arg.e2prom_cmd_data     = buf;
    / _2 q1 m& N$ q& ~$ @
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + b$ o6 y7 Z/ s! P  r" R
  65.         if (ret != 0) {" U; ]2 Z, m2 c  {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& B. g- p, z: _' U9 V
  67.                 return -1;! r+ U( }8 @/ i, [$ K8 r
  68.         }! T' P) y! W. _3 M' f5 {9 i. y8 `. b
  69. ( z/ `7 V+ v  e) d
  70.         return 0;' o# d  k* Y' W! ?8 I  I
  71. }) d' B( }$ T! I6 {* s8 H' {1 T
  72. 1 W8 p) D4 _/ q
  73. int main()
    5 x( N, N; }6 O5 M) o
  74. {- H( W6 _* A; v/ R2 \/ f
  75.         char c;6 Z: K' s* }& |) M% h; q0 j  N8 U
  76.         int i, macs[6];
    ; Y! [1 U/ K' C. ]# w, q' U% }
  77.         unsigned char mac[6];
      M' J3 E1 z: |8 `. V' r
  78.         unsigned char stbid[256];! q% }, w7 I  g0 O. D+ g" S9 ~

  79. ( |, Q' w* O3 Y5 J
  80.         if (readparam(mac, stbid) < 0)
    1 v( l2 B* Y3 q4 E
  81.                 return 1;" h4 p* O8 }% J! g. @
  82. 7 j5 @$ _' v2 L1 H# X5 c% h
  83.         printf("Current parameters: \n");! E0 _" S- E: j; U/ O. y: C/ T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : w% `+ _4 z0 `+ Q
  85.         printf("  STBID: %s\n", stbid);' N) n* O  K, B- M9 O+ @
  86.         ' I/ O+ w" k+ f2 ]2 k
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' C# ?  k' }2 R  ^4 o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ q: r. D% W- c( R2 W) D/ c
  89.                 printf("Input MAC error\n");+ L+ n+ n! V" e/ v, j9 w
  90.                 return 1;, Y8 b6 A. X' C
  91.         }4 g) Y% q5 c* C6 j& y3 m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # E, Z; B& l9 L
  93.         printf("\nPlease input new STBID: ");
    0 {) q2 @9 S1 V, z+ s; P& N, h; r
  94.         scanf("%s", stbid);
    9 z$ ~8 ?/ H* M+ A- e  g& R
  95.         if (strlen(stbid) != 18) {* a' c; U3 U! [7 Q) [
  96.                 printf("Invalid stbid\n");
    " z" }5 \2 S% }+ n$ D1 B" d. {7 A
  97.                 return 1;
    ' O. j1 T  \$ E! f4 P$ s
  98.         }
    1 K$ }! ?. x9 |$ M
  99.         printf("\nNew parameters: \n");
    ; P* G6 G) p: W9 p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 G% `, }' c* x- ~! D( t$ C
  101.         printf("  STBID: %s\n", stbid);
    . d$ ~2 h# E, N! f, ~

  102. ; L+ B. H0 g& C4 Y' ?0 w. h" o
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 Y, B( }7 {/ ?
  104.         for (;;) {6 H' d& J: \  q8 l2 P3 o6 f; b8 \
  105.                 c = getchar();
    / P3 }1 m' l( }* ?# m# M7 H$ ]
  106.                 if (c == 'y' || c == 'Y')
    6 `1 w, W! w! u! f1 s. h
  107.                         break;2 s5 ^. T! i! c0 G. y# u
  108.                 if (c == 'n' || c == 'N') {
      s4 A* _% ~& s/ J0 {  t
  109.                         printf("\nAborted.\n");
    2 S6 r) q  W# J/ N+ c8 h
  110.                         return 1;$ |  A% Y" z" @: R
  111.                 }6 y* x6 ]& |1 j. H( s; @
  112.         }" O) `- W0 L3 k7 l) ]+ v
  113.         if (writeparam(mac, stbid) == 0) ! S* e& j' E) {! n3 l1 V4 t
  114.                 printf("Parameters changed.\n");4 Q/ l2 g$ X! V6 y
  115. ( r: L! H8 l* q. |: w, V
  116.         return 0;1 a* @. D8 O" ^+ x
  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
& W" V0 g" N- t" m2 S2 _0 D8 G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, m; M' p7 I9 b0 Q' F你用的编译命令行格式是什么?; P7 }3 X  ?, ], F8 _
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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