查看: 17393|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ @! Z6 V) i2 c& x: r" J
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % \) x# D9 S# a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 T$ Z# w9 `5 c8 c+ G; S6 N0 {  ausage: himr <address> <value>. sample: himr 0x80040000 0x02 d; A* ^/ z( P

! T4 i4 X1 l0 u; s/ m! j! @2 c* W! O/ b# K  H4 s5 V
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ r: F. v4 Y2 E. J7 N
9 L$ _4 w5 m  d/ A0 i5 g2 R
补充内容 (2012-3-8 09:42):
+ j7 m4 W. S% j9 I% khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 E, P' Z* M. c+ x这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。4 e: k) {, M2 K

5 @0 ^. U3 l0 Yhimr <address> <value>. sample: himr 0x80040000 0x0
: b4 \/ O' M3 O6 ?/ j9 h
$ P" q; N8 H5 a: g) |/ I例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* E+ `" |6 m8 }himr 0x80040000 0x00
/ Q) p% ?1 C# l9 ^6 n0 u/ Rhimr 0x80040001 0x11% U5 C" E( a" o) g3 `2 h) }
himr 0x80040002 0x22
: Q1 x, ^2 V. @# B$ I+ yhimr 0x80040003 0x33
1 x6 w; e8 V6 D7 T1 H; b# D3 xhimr 0x80040004 0x44% Z& d( {& H; V3 A. n
himr 0x80040005 0x55
  K9 P" u; j& p3 |4 g8 c: _/ h$ N7 r& h; d( b% k
SN也是类似。4 P/ Q: f/ r. z3 O/ Q

0 P; C- i4 B% K, w+ J现在主要是,谁告诉我们MAC和SN的地址?
  o9 S/ S( R, n& J6 l6 c( [
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 p! w+ Q9 O) L# |, e8 m一直想找到运程修改MAC和SN的办法,苦于无解啊
* d: N1 t1 u9 @$ f
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! @- ~+ T( E" F) f2 V9 N

2 q6 h6 t  s3 B: ~% X$ Z修改的代码早有了。到今天不会编译。& m, x8 @# N; z; c& l7 u$ s' d
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 c/ t8 F4 `- e! R$ S  F+ `  I
  2. #include <malloc.h>5 v' E/ g* G2 \8 @( E2 f: I
  3. #include <sys/types.h>  T' W9 p9 {0 A, w; L1 O
  4. #include <sys/stat.h>( M  k( i; [- ]! {( y* S
  5. #include <sys/ioctl.h>) \' G: E( t" X4 r6 g* T% E
  6. #include <stdio.h>; F2 u* t: `; f, x$ X' G0 x
  7. #include <string.h>
    % h) B! T6 ^, U
  8. : L& r% q; d: u4 H8 g) p( u
  9. typedef struct {
    ( H4 s3 `! {6 @2 ^5 n
  10.         unsigned int        e2prom_cmd_sub_addr;$ L3 i/ M, k9 a0 m6 ]" t, j- O
  11.         unsigned int        sub_addr_count;
    0 W" I; E/ A7 y* W  I5 _
  12.         unsigned char*        e2prom_cmd_data;4 v# m) V; O) r: `* N$ X3 b3 F& O
  13.         unsigned int        data_count;" _% X- h3 d% V: s) C# r- z8 X0 `
  14. } e2prom_s_cmd;2 ]  f* B" f0 e5 a0 k2 X+ L9 h
  15. 2 X* V! F) Q3 b9 C
  16. #define E2PROM_CMD_READ 1* ?4 O9 h+ Y2 V: B
  17. #define E2PROM_CMD_WRITE 2
    - L; C: k, H# Z9 C, i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , o9 y( l; M0 G4 Q+ ~9 W
  19. ; ~! O8 ^  |5 t* ~3 v- M8 r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) q, |/ t2 h/ f8 L
  21. {
    5 Y8 H! i% H5 U$ W+ ^2 k; I
  22.         int fd, ret;
    ( R. p' f* ]; U
  23.         e2prom_s_cmd arg;& y) K- J% `' B, G& \4 C
  24.         unsigned char buf[0x18];
    ! f. i) [+ L8 h& y+ V$ [4 k

  25. ( n! b' F' w% k  H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) k3 V  e" n) F: r  J7 e
  27.         if (fd  < 0) {) @3 A# B# v7 V; \1 e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 i; l* k& H) X0 ~4 n; c0 x  @1 _( b; u
  29.                 return -1;
    - g- \4 i! X4 n1 G( U  q! g
  30.         }/ f. U4 u$ D% M# r
  31.         arg.sub_addr_count      = 2;
    6 H$ S$ }& ?5 s( A- L( L1 A
  32.         arg.data_count          = 0x18;
    & r! R: P7 P5 b0 T. m, j$ w% |
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 u/ ^7 e3 Q2 P1 G9 R3 |, v
  34.         arg.e2prom_cmd_data     = buf;
    4 A, a% w# o/ H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 ^, b* I+ n6 q4 X! x4 a2 r3 L, \
  36.         if (ret != 0) {- s1 X5 o. d0 `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 i3 E& m: [! d7 a0 X
  38.                 return -1;8 g  C+ Y( e5 F4 A
  39.         }, [% l1 i) x3 D- v8 [$ Z0 O
  40.         memcpy(mac, buf, 6);
    1 B% @2 B  H) F7 e" u. y
  41.         memcpy(stbid, &buf[6], 18);4 S. d. I; V( T( G6 j, I! r5 N
  42.         stbid[18] = '\0';) m. E1 y7 z5 z' g$ p: H
  43. 0 c0 p6 M8 G9 T- ?
  44.         return 0;
    ( H6 R# M$ K/ \4 ^
  45. }
    " C0 c! _* M/ w/ L5 L) b- z. d! R& a
  46. 9 v9 A+ ~5 h. y. D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), ~1 r; s  J( ?" u* ^
  48. {, Z# |( j. U% h8 w5 ~3 X
  49.         int fd, ret;$ H7 L4 ]" u1 |4 Q6 k1 D$ @
  50.         e2prom_s_cmd arg;
    - f6 v) c* h& Y. q( C
  51.         unsigned char buf[0x18];
    $ ]  ?$ l9 J+ z! R7 _" a
  52. , D" n( A4 G4 f: m& o6 r
  53.         memcpy(buf, mac, 6);" \  k* P* E& c8 I) ~. }, Y8 O
  54.         memcpy(&buf[6], stbid, 18);7 A1 ]3 O/ W& v( h4 n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 T& a8 d- L$ [; Z0 V. T
  56.         if (fd  < 0) {
    ; }; A' L/ e5 |4 O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: P  p5 B( `  H+ ?" x% O. F/ H
  58.                 return -1;
    ) b& O9 V' \" X6 b0 a2 T
  59.         }
    / k3 T: \- U" g# ?; ?
  60.         arg.sub_addr_count      = 2;
    9 A1 v9 p9 A1 Y' X
  61.         arg.data_count          = 0x18;
    $ q% t7 d3 D6 @* L9 C# E( z" m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + [& n7 _' ~9 |+ f; \
  63.         arg.e2prom_cmd_data     = buf;% h* b0 y* {1 B$ Z1 Q" g1 M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 e6 y! I1 I/ {# j; K" |( `3 O
  65.         if (ret != 0) {# V, L, U4 b" ^1 i, z! \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; [' M9 F- ]* ^; m- M' I3 o5 {
  67.                 return -1;
    5 O% M, T" D$ g) O/ L2 `
  68.         }
    9 m, h( N' e! q' L7 g1 [
  69.   j; |7 ~$ q! t; q% o
  70.         return 0;, ?: e% M7 g+ K" J! }
  71. }
    1 S( R/ u: J6 W5 s. w( s! K! K
  72. 3 n! [% Y# q+ e9 O
  73. int main(): J& W6 f! d/ v. a2 H% E* m
  74. {
    7 ~# i- x8 S1 g2 L1 b' G7 B
  75.         char c;* R9 w! K( `" Z7 T; x# T
  76.         int i, macs[6];
    : X  T- G7 B, e9 l+ R5 t" |
  77.         unsigned char mac[6];; u7 U) C& ]  L
  78.         unsigned char stbid[256];+ h3 z3 r) ^- C; Q' I
  79. " K+ w+ d6 c+ c9 _% I
  80.         if (readparam(mac, stbid) < 0)
    ' c6 b& J0 k  b+ b/ {  v$ H4 P
  81.                 return 1;
    3 G7 A, g* C9 T% n

  82. " c9 j- E' X  `6 a
  83.         printf("Current parameters: \n");9 Y8 A1 J* f" N6 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 ^6 h$ @+ K- ~
  85.         printf("  STBID: %s\n", stbid);
    , N8 h* L4 M' I5 S. T0 O! }
  86.        
    ; `$ n; D7 a" q  Y; K* B% J
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; q& f( j" B& P$ l& o; s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    3 Q7 ?* N9 [1 |5 v
  89.                 printf("Input MAC error\n");
    ! j) t3 C' V" l1 ^$ f. |
  90.                 return 1;, E' \5 z1 v# P: y* \, {
  91.         }
    + D& `3 f; {; r+ _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 {3 x# R; i4 {0 t2 V; a
  93.         printf("\nPlease input new STBID: ");* P' K; k2 _! N' ]( t: z* Z7 O
  94.         scanf("%s", stbid);" [) l# n- A4 J9 H. h8 n
  95.         if (strlen(stbid) != 18) {) X; _0 Z0 M7 l
  96.                 printf("Invalid stbid\n");' \2 O  W) o- m+ p. j
  97.                 return 1;
    # I) E+ D6 O- t' G4 N9 T
  98.         }  _# C: Q# u5 \$ G
  99.         printf("\nNew parameters: \n");
      i: D  U, c+ M7 b2 v4 L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) c+ X) J3 L' {! l# E
  101.         printf("  STBID: %s\n", stbid);
    # S% D6 ]; I$ v; x

  102. ; V6 v! @' r2 X2 A5 b4 C2 D
  103.         printf("\nDo you want to change paramemters? (y/N) ");! x0 V. \& Y/ X: |
  104.         for (;;) {7 h) s1 I& C, |. p0 u4 G  `$ X
  105.                 c = getchar();
    7 `$ \3 e( i' V$ ~5 G1 Q/ g# O
  106.                 if (c == 'y' || c == 'Y')
    $ l1 L$ i! a# t7 |/ i
  107.                         break;
    9 C6 e, M) D/ q9 T; e. e; u
  108.                 if (c == 'n' || c == 'N') {
    ; m* _2 y3 N7 a; O
  109.                         printf("\nAborted.\n");
    ) W/ J6 ]. Q+ b6 ~  }- S
  110.                         return 1;
    ) s. `# T! o7 o% C
  111.                 }: E( I: `4 B! z' c" }
  112.         }
    0 g1 N" Y# S* |- W
  113.         if (writeparam(mac, stbid) == 0)
    1 B# A+ l8 i/ _& x0 x) f  j2 v
  114.                 printf("Parameters changed.\n");
    / j7 G) |9 ]6 y3 @, _

  115. * S/ n$ J0 t5 D. O2 p* O' ?! H; A
  116.         return 0;
    ( }7 n' U# k3 D4 ^! p  ?; 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 " ^. L. G5 e  x+ f3 r( _, U
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& o; Q" P8 b( Z/ ], }7 h2 C
你用的编译命令行格式是什么?
$ z, A4 A  Z/ D. ]3 l% 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客服返回顶部