查看: 17866|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 r, E5 h) E: Z) y$ c& \8 H4 l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 [! {0 t3 B( F& X, k/ z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 E" Y1 s* G, t: D( D" m/ eusage: himr <address> <value>. sample: himr 0x80040000 0x0! z& [5 o1 i" G, S* E

* Q: c' v1 Z5 f2 A% c( d  K
  l4 ?$ G% v# S9 v: t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 C( m& X) O2 R. `
8 Q, j6 w( g$ R# b; e  |) g5 I4 O4 `/ Y补充内容 (2012-3-8 09:42):
7 h, c4 x2 Q- Y  A" H& G0 @http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( w5 R+ ?4 w  Q. Y! g" k5 j/ [这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
: M+ M6 K, h& P* j/ L0 ?% Y5 ]/ M: }' b3 J6 d" m  |2 v5 j
himr <address> <value>. sample: himr 0x80040000 0x0
7 Z4 V% ~0 k0 `6 i3 u4 o+ o) m( f4 J  D% c9 f# x% t7 Z" N: a
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, h7 \+ Z5 Q: D  @3 bhimr 0x80040000 0x00
9 i  c+ y% n, Z/ S  C# |2 ?& bhimr 0x80040001 0x113 x( a; k$ Z9 A5 Y. M
himr 0x80040002 0x22
! q* }0 b( I" ~/ e+ K$ O- Vhimr 0x80040003 0x33  `5 Y4 d+ D* O9 `7 E
himr 0x80040004 0x44
' g9 p1 d8 C/ q8 whimr 0x80040005 0x55! d9 ]/ v2 g5 z4 J# B1 v; G
: J& c" e; F/ F0 M7 N, O
SN也是类似。
+ X" c7 Y; |# k' i
  x. \' {# u% `* D1 F3 L! W现在主要是,谁告诉我们MAC和SN的地址?9 s7 ~% k6 y  S. d
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 ~& d1 X: i+ i* G0 g$ q: L8 a
一直想找到运程修改MAC和SN的办法,苦于无解啊
# O. s. Z  ^! N: k" J9 h  Z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 y- @+ c. }- E! D1 d6 h3 L( w) m3 x: I" l* O
修改的代码早有了。到今天不会编译。$ ^6 j4 E. k1 v/ ?/ |  L
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # W2 ]! k5 F; {2 U
  2. #include <malloc.h>4 J1 v* q6 o$ K& X
  3. #include <sys/types.h>
    5 b9 y! B' v% C: n' z, {! b2 z  U
  4. #include <sys/stat.h>
    ) g' G* W8 w8 N) X. d4 z2 E# P
  5. #include <sys/ioctl.h>6 D! e+ b( K& L: v
  6. #include <stdio.h>
    / L' |8 s; p+ v) x3 O. K. H
  7. #include <string.h>- C* c- v% ~4 Q5 D

  8. + Y$ K- m+ p, i2 V5 Z
  9. typedef struct {
    6 K( S1 Y: n3 Y  s# S5 z3 R4 R
  10.         unsigned int        e2prom_cmd_sub_addr;+ [6 g$ P' _/ l: u$ f* M8 m% ~
  11.         unsigned int        sub_addr_count;
    1 X: |. w. N2 r) i; }7 O
  12.         unsigned char*        e2prom_cmd_data;
    4 P2 a1 R  `' D, k! N
  13.         unsigned int        data_count;
    8 q1 w' C& \( x9 F& D9 Y' Q
  14. } e2prom_s_cmd;
    * X4 ^& P# z. z) }0 h
  15. : s$ w+ a) a1 h& N7 Y
  16. #define E2PROM_CMD_READ 1
    & i- F4 H8 }0 W1 [  I; V
  17. #define E2PROM_CMD_WRITE 2& z: `6 J. K) s9 c" ^( D
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 S4 V5 x) I+ I# j3 Q
  19. ( l! ^6 n9 S$ N9 k' w" V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ e1 [- ?6 \; X  ]7 p" M
  21. {
    ( v4 p/ P6 k" Q4 M# {/ F
  22.         int fd, ret;
    ; y/ D; I/ A! [. S, }  I2 ?- Z
  23.         e2prom_s_cmd arg;1 N/ W& u, z1 W+ c
  24.         unsigned char buf[0x18];( I  ?! u+ p$ K
  25. , R+ p5 ^4 m/ r9 P* Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 ~% q3 |3 P$ p: X7 V' k# W
  27.         if (fd  < 0) {
    8 l  i2 [/ W1 N* y; A
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : B7 l" a4 y. ?* ?  [
  29.                 return -1;
    . \0 t2 C0 J. {% ~" k" H
  30.         }2 X9 \2 G, c) b8 f  L
  31.         arg.sub_addr_count      = 2;
    ' G. O0 N: H' c4 T! ~1 Y3 a' v# L
  32.         arg.data_count          = 0x18;2 [# x9 P% \' F
  33.         arg.e2prom_cmd_sub_addr = 0x290;( K& X" M, e: V: z& j! O
  34.         arg.e2prom_cmd_data     = buf;$ Q1 ]* m4 p+ T9 P% @  x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' p) r; l' x3 K) @8 M( `( s: T9 K: k
  36.         if (ret != 0) {7 M) r  U( ?& p4 |6 u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . g# k2 r: m3 A5 |% _
  38.                 return -1;
    2 j) W4 q( U4 N  q
  39.         }6 A2 E/ x# Z( f, `
  40.         memcpy(mac, buf, 6);- b: C' a9 l! ]) m; N! ^
  41.         memcpy(stbid, &buf[6], 18);" z6 h( z! g5 x
  42.         stbid[18] = '\0';
    . T- L- n' o% d0 `3 D7 L2 F

  43. 2 W/ h0 b4 w2 ]- T+ ?; V$ k  w
  44.         return 0;2 a9 U. |$ O, N6 S
  45. }4 r7 A6 m* p3 ~$ ?- U& g8 r: F
  46. $ ^& ~5 |  f3 I' a% r9 U. g
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 |7 d' k/ Z. g; v
  48. {: C0 y* K8 L" q) u
  49.         int fd, ret;5 ~$ ^6 I$ Z4 N- h1 I& G
  50.         e2prom_s_cmd arg;$ n- y; _2 A3 T  g
  51.         unsigned char buf[0x18];
    ; \1 c4 b/ n9 m6 V( J
  52. ' t, ~' Z) u3 a. p& H+ ]
  53.         memcpy(buf, mac, 6);( m9 o- j$ z$ Q2 A* E$ ?1 X
  54.         memcpy(&buf[6], stbid, 18);
    6 V7 T' Q+ H. C5 z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! J+ `) E1 {/ d7 y1 }$ ^
  56.         if (fd  < 0) {0 @, T4 V+ i* S1 ]/ E7 U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; T& U$ C/ I; {
  58.                 return -1;# ]' ]5 c( E  M4 T: j
  59.         }
    5 K8 |, q' M- C, S
  60.         arg.sub_addr_count      = 2;
    % M$ j! I3 L  t! [; C
  61.         arg.data_count          = 0x18;
    6 `- k# f' N; K0 j8 E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) e+ Q% ?. {' G4 T% O5 G! P% V
  63.         arg.e2prom_cmd_data     = buf;; c6 ^7 }& K9 B0 ~& l2 J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 Y$ E8 J- p8 Z8 H8 y# o: V
  65.         if (ret != 0) {
    4 S, y+ J* B4 `) f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  @  q/ _: E+ Q/ ^1 g- m/ K' G. C8 r
  67.                 return -1;
    0 O" F' R! i8 b) o
  68.         }
    ! S, P* n* K) d% B) x
  69. ' h+ `( r+ r+ D& m9 Q
  70.         return 0;0 m0 a# c5 h% j" @
  71. }4 o* O! S1 n  T6 q6 |7 i8 B$ O
  72. $ E) r. @) J+ O% d5 U
  73. int main()
    & e! {6 N, I) n9 |$ o
  74. {
    / \- W- p4 M( u6 J4 u, i& t7 w
  75.         char c;
    $ V8 c' A: P; w9 b1 X5 f7 m
  76.         int i, macs[6];! ~5 w1 m2 h. b+ o. w% P, i5 @
  77.         unsigned char mac[6];/ ?& g+ u1 r  M$ x: J/ [7 @
  78.         unsigned char stbid[256];
    0 `  M) n8 I( v" C6 L; W3 p" {
  79. 3 \3 U; Y. G3 ^6 I- ]
  80.         if (readparam(mac, stbid) < 0)
    8 |# ^2 K; z9 H4 N' \) G/ F
  81.                 return 1;
    6 g. U. M! |% z2 k5 i% Q
  82. 0 Z4 m: C  @8 Z8 s+ d. j3 G
  83.         printf("Current parameters: \n");
    0 ?) q/ w- g  W5 x7 z& |/ V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 `9 H+ z' b2 }: }% I+ d7 O
  85.         printf("  STBID: %s\n", stbid);
    5 X+ |& a. o9 f8 X
  86.         ' S' K) C) Z! k+ X) n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 F1 l/ M+ @- }" o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' o! A- ]9 h- E$ x. k4 Y6 ]
  89.                 printf("Input MAC error\n");" d; k, y/ p4 `& E' ?
  90.                 return 1;
    4 t& K1 p' v" s& `4 ~+ S
  91.         }
    & J+ k* T" h0 U! Q# q3 ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& W6 g6 l, j8 G4 p# o
  93.         printf("\nPlease input new STBID: ");$ `) O. p: a- Y7 Y( X
  94.         scanf("%s", stbid);+ y; Q9 M' i0 b
  95.         if (strlen(stbid) != 18) {
    6 g, @% w: D5 Y; P9 @
  96.                 printf("Invalid stbid\n");
    ! w3 H5 V3 W' ]! O3 Z+ x3 D5 a* h. Y! W
  97.                 return 1;
    " e) I' B: P) @- V% _$ k
  98.         }# y% l7 X6 i4 L3 F* l7 M( Z# D
  99.         printf("\nNew parameters: \n");) U5 K- j. d' a5 P/ @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* Q: B4 T, E: ], ~. m. k; Q
  101.         printf("  STBID: %s\n", stbid);
    5 n3 U$ m2 V4 g3 i/ k

  102. ( E. ?+ ~7 S  \8 B7 G: w2 M2 m. o
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 K% Z+ A& f( k% u% k2 O. c% c
  104.         for (;;) {
    ; V# S( i* V6 `! P" j
  105.                 c = getchar();
    0 v1 `. H- T: k' ~1 H3 ]# v6 C4 S) c
  106.                 if (c == 'y' || c == 'Y')
    $ \7 p7 M3 g( \  s8 |7 |. m4 L( O( E$ ]8 ~5 t
  107.                         break;
    8 q: O  a3 T0 D1 }& [: k
  108.                 if (c == 'n' || c == 'N') {3 D4 |& V$ f" r" s
  109.                         printf("\nAborted.\n");
    - v/ V" @4 F# @1 [
  110.                         return 1;
    0 q# M- P% S: G+ N
  111.                 }
    9 W0 x5 `% K1 K0 G8 C+ P
  112.         }) W$ n5 v$ z9 J4 [
  113.         if (writeparam(mac, stbid) == 0)
    * y# s- o8 L9 a4 q: _6 d
  114.                 printf("Parameters changed.\n");' s! l0 s+ h- l$ q

  115. 1 |; U; S: v2 `2 @% S5 F5 O) i/ `. w" k
  116.         return 0;& m- k$ P6 N% |& h: \: \1 w! `4 o
  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
, I7 B6 A* G" d  _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! W+ d7 l0 i; S$ ^3 ]
你用的编译命令行格式是什么?
4 X* H6 _2 L! ~8 X9 F2 {: A
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部