查看: 16496|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ X& L6 _2 l# @5 F; p5 |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # v) b* ?& {: n+ l9 P% |3 i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) {& d9 S( D" H: v7 Nusage: himr <address> <value>. sample: himr 0x80040000 0x0
$ H/ _9 P8 P$ ?7 u4 B6 L7 O+ p2 ?/ R5 z1 }+ M! P

' ~. ]9 P# n8 N$ B4 {/ c, ^2 [不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 N7 Z+ [' d  A$ z' H+ E
5 X( h1 v9 J, M9 L  q7 [$ C
补充内容 (2012-3-8 09:42):- C: r$ N" R. \" R# |  W
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数& ~5 [2 p" V  n3 R$ o2 U2 d
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
$ N" R  h7 v9 u' l" W$ e" M5 p# P
7 a4 z  G& ?5 H6 Nhimr <address> <value>. sample: himr 0x80040000 0x0$ k0 a7 p) R4 [

. [& {5 c# u8 B  ?1 [9 `1 @' R! U3 c6 W例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& c: B) T. m$ h* g- thimr 0x80040000 0x00) w- s" F* L: T* k% _( p9 H
himr 0x80040001 0x11! K7 N% E( @7 ^& f. G7 S
himr 0x80040002 0x22
3 t" j& m. p1 b2 P* A& Yhimr 0x80040003 0x33
( R  {- T5 K4 A3 rhimr 0x80040004 0x44
$ o2 V  n, W2 C5 g. ehimr 0x80040005 0x55
! o' C* P# S9 t; L; u- D! Y. X% Y* P( z" G# ^" z
SN也是类似。
$ _  l% B, `6 J7 d( R% h, A9 c/ k* I, |* G2 ~: M' H2 c: j
现在主要是,谁告诉我们MAC和SN的地址?
& I- J; c/ E. J" z& V) Z8 f
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 a5 ]* v+ R4 N9 ]4 \9 y" v. n一直想找到运程修改MAC和SN的办法,苦于无解啊
9 r% m% v4 h5 V; E5 I* m
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* ~, g" j) b" k) f, |% ]& ~5 w6 f* W) s* K* C; R: [
修改的代码早有了。到今天不会编译。+ y* F: X# L2 M  W1 I. q' e& k
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - B" _; [: g7 p: V& S9 @
  2. #include <malloc.h>% U$ e! L9 ]4 b- k6 I5 x, }: n( ^  U
  3. #include <sys/types.h>' M: X0 ?- N& \. K& r1 G" m- o
  4. #include <sys/stat.h>
    % I: E2 B% ]$ C: j+ q4 r, ^& m( L8 Y
  5. #include <sys/ioctl.h>
    7 o7 I- R/ p2 G2 ]4 z" c' m$ t$ R
  6. #include <stdio.h>" X; y7 a& g+ v/ R8 B
  7. #include <string.h>
    ' N8 t8 ^* D+ h2 ]1 x! s7 A' Z- M
  8. 4 c+ R, ^  U' a* `( w5 t0 [4 l
  9. typedef struct {
    , e6 p# u2 ^: x  Z3 g# Z+ A
  10.         unsigned int        e2prom_cmd_sub_addr;
    + v0 I9 q) N6 W5 o/ i/ J
  11.         unsigned int        sub_addr_count;
    8 ~4 n3 _2 V/ @" @2 f# J7 r! I% h) j/ m7 v
  12.         unsigned char*        e2prom_cmd_data;
    + I: o1 i5 ~' a- K  G, [# ^
  13.         unsigned int        data_count;( h2 `" v# J8 [( v# }8 E2 E
  14. } e2prom_s_cmd;1 [. v" Y+ ?, n
  15. & r% r" w  Q$ B; O! s0 f8 D* Y8 g0 ?7 W/ k
  16. #define E2PROM_CMD_READ 1- `4 _) E$ G/ J- V3 M) z. j% d" G
  17. #define E2PROM_CMD_WRITE 2/ R: _) a2 V) w" n- z' l% n$ [& m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16": b4 R; B7 C7 [, H2 B) m  ^& x# u

  19. 0 P6 @* Q/ w: k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ z7 A) w# I0 A! W6 ~4 C* p* R+ z
  21. {% t  t1 m# H! a: F6 n" {  E
  22.         int fd, ret;, a% I2 \+ U2 S% r
  23.         e2prom_s_cmd arg;$ n6 @1 P3 H- b' {2 z
  24.         unsigned char buf[0x18];
    5 q! {6 F" M) y) R. u
  25. ! E4 p! `* j# ^) f1 R5 v: ?1 \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 [- i4 L, K8 z, O( d6 _
  27.         if (fd  < 0) {  S' U5 h9 p0 ~  B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . i* ~% u, O3 @7 I  i
  29.                 return -1;
    2 `& V5 Y. z4 @2 {" ]
  30.         }
    . t) T& W/ |7 B: X9 c
  31.         arg.sub_addr_count      = 2;
    7 J0 Q/ b) A! G6 J9 h2 ]/ `
  32.         arg.data_count          = 0x18;
    # b- i/ v" w2 `! g+ I: t7 I
  33.         arg.e2prom_cmd_sub_addr = 0x290;! l4 i  d4 a+ w& d1 {) E
  34.         arg.e2prom_cmd_data     = buf;( A$ b+ P* U% E
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' X+ `8 {: A3 d! t/ a
  36.         if (ret != 0) {$ P/ {* m$ f( ?1 c$ m5 y2 t
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    1 P( P0 F) L( e1 ?5 t
  38.                 return -1;
    7 \6 o& J- ?& I7 @4 R5 j; n
  39.         }5 s- r7 V8 f8 g+ _0 D
  40.         memcpy(mac, buf, 6);
    & h# |4 z& w* d+ x3 a6 E1 v4 `
  41.         memcpy(stbid, &buf[6], 18);8 r! f5 S2 R- |5 D: G
  42.         stbid[18] = '\0';  Y- y2 [' M3 D
  43. 3 Q4 K" s0 O1 C" n/ M8 q0 _; _4 _% W# D
  44.         return 0;, ^. o8 g) i  u( p) r; r
  45. }" ~% Z* s5 f2 P1 V$ Q
  46. . p$ w+ Y& i2 Q7 P& U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) N- y! J: [# a4 r
  48. {# `9 a4 I1 m; T7 R
  49.         int fd, ret;- A$ A2 Q4 Y  N  f8 @
  50.         e2prom_s_cmd arg;: ^1 ]" R& f. B( x
  51.         unsigned char buf[0x18];! m9 V; }3 b, i+ r4 @

  52. - |0 N' m& @, m
  53.         memcpy(buf, mac, 6);# j# `5 \& Z1 J# x0 G) ^
  54.         memcpy(&buf[6], stbid, 18);
    3 ?# o2 t' G3 t  l3 C+ U$ a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% e4 i+ U; B# }1 F) y9 O' c# t
  56.         if (fd  < 0) {" V7 g# U, q. M: _3 ^8 r/ |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% {) ?& A6 M6 n
  58.                 return -1;
    7 Q& b5 C& A4 K
  59.         }
    7 j0 t! A. D' P) A6 i5 {: K
  60.         arg.sub_addr_count      = 2;8 z6 n; v4 }2 l7 b" q1 L
  61.         arg.data_count          = 0x18;  P; U) N4 t0 }, p  b1 a
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! l1 C+ @/ k5 A5 Y6 y: `8 @8 U/ G0 O
  63.         arg.e2prom_cmd_data     = buf;
    / w+ ?0 Y0 h: x) g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: D, ^( T% @2 J$ ]) I& t2 a1 @  E2 d
  65.         if (ret != 0) {
    - Y) E" N' V  B% ]1 }7 A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) S' ]- N4 {: q0 r: A" m
  67.                 return -1;1 B% |, d7 l! f/ o) W
  68.         }- p7 d4 }/ z" I, z, Z  N" ]

  69. $ I5 V+ F' R: S$ X4 L
  70.         return 0;( U0 W9 b  q: B0 l5 X( E9 ]1 L% t1 _
  71. }
    9 W4 }: T" i7 C5 b& j6 q2 V" y
  72. 8 i0 D) X  z3 ~  a( @$ A5 a
  73. int main()
    , a8 |* K+ L8 c" y
  74. {' s5 Q. z  `$ m% @$ E
  75.         char c;, O) @0 \8 p1 A/ J9 y( W% I$ G# r
  76.         int i, macs[6];
    7 d! {9 m8 h) A: i4 h) ~( \
  77.         unsigned char mac[6];) @' m5 s+ i7 f1 j0 H( ^
  78.         unsigned char stbid[256];0 L9 {! |. ~3 C9 m
  79. . c* j, ?+ |- K1 n
  80.         if (readparam(mac, stbid) < 0)) E7 {6 s/ R' u& C
  81.                 return 1;
    9 q6 T8 O3 ^0 [) }6 c

  82. 3 b3 x8 u, r1 c+ N+ G) @
  83.         printf("Current parameters: \n");1 X7 t3 c) e: U6 a+ e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * O( G) N$ m3 g; o) ?5 X
  85.         printf("  STBID: %s\n", stbid);
    9 z3 D: F4 K+ ^  x' \- p4 Z
  86.        
    : y+ c5 C' ~2 ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + x2 J$ V  f) w: q) r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 G+ S% x$ `8 ^! ~, [
  89.                 printf("Input MAC error\n");
    - W0 D% J" B% T' }/ T( Y7 s
  90.                 return 1;2 S+ X0 q5 \' H$ H7 h1 N  b
  91.         }" P) `( _! x8 _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " V  t% {  o) [* x/ n
  93.         printf("\nPlease input new STBID: ");
    8 T5 C9 H; N0 L# N9 \4 \
  94.         scanf("%s", stbid);/ b3 G' F% ~& n5 E! A
  95.         if (strlen(stbid) != 18) {- Q1 I3 Q8 l9 W! U& h6 v+ {8 y
  96.                 printf("Invalid stbid\n");4 x3 _2 Q7 D* F% J: G1 n9 H1 t
  97.                 return 1;+ W0 Q  K: m0 z
  98.         }
    2 ^" p9 \8 b4 y& o5 n
  99.         printf("\nNew parameters: \n");
    ' @) Y8 B4 p" |7 f& m0 D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % M4 A2 M' u% h7 G
  101.         printf("  STBID: %s\n", stbid);# `* l% N' d% F$ Q- c

  102. : \" ]8 `3 O# D
  103.         printf("\nDo you want to change paramemters? (y/N) ");# m9 v5 U# ]( U4 R
  104.         for (;;) {  q9 u5 {! `3 _: r
  105.                 c = getchar();
    9 m  _% ?( Z8 E$ a
  106.                 if (c == 'y' || c == 'Y')  [* I- `' }1 M
  107.                         break;. A; E; K* ]6 }( Y7 D& x0 B( c5 ]  r
  108.                 if (c == 'n' || c == 'N') {
    4 }& k5 x: ~/ M+ A- E
  109.                         printf("\nAborted.\n");# i8 o! Y9 M* ~
  110.                         return 1;
    ; A4 Q. o' p% ^1 A# M) s$ @, b& }
  111.                 }: ]2 T0 n$ ~/ n9 B& s, D- a' J
  112.         }
    ' ]8 J" u/ ]! o) _! i
  113.         if (writeparam(mac, stbid) == 0) 7 s! s+ Q/ Q) w; \
  114.                 printf("Parameters changed.\n");: {5 @* z- a7 O$ g$ `& S1 O# t

  115. ) V1 u9 r: n: b
  116.         return 0;! e0 {  r9 r7 q+ p1 v  [/ f( |
  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
# K; q/ `* e# g在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: M* y  ^+ k, _3 ?你用的编译命令行格式是什么?, a! i" I1 a" W& z; H  @. r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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