查看: 17320|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! Z* q% V/ _( o6 Q6 q% S6 z3 l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( o1 l, c( u" C; j7 s% Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' Z: P" x+ N3 y$ {% Q1 |% M# W
usage: himr <address> <value>. sample: himr 0x80040000 0x0
7 u4 r. B. D  {2 s" _/ Z+ `! I5 g# ]2 \: X

/ v, ~- V) J: x4 D# z# ^% j不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) P/ L3 U) C' z0 r
# X1 ^6 L8 u* T6 a/ J5 ~) \: s- b. i补充内容 (2012-3-8 09:42):
6 i. m  _. k) u9 e. G0 lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- S( ]* I9 x3 t
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 T$ z# c( k7 [
$ `- C7 W! p; m1 C! t6 j0 M/ {himr <address> <value>. sample: himr 0x80040000 0x0+ D8 O0 u4 r) w
* E) N2 [# M! w( k- c$ N7 V
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 `$ U! S& I  M( J; chimr 0x80040000 0x006 z1 N" y% F1 w1 N: j' c  e# `
himr 0x80040001 0x11+ R% ]8 W! b* V" g' t5 _! G$ v0 h
himr 0x80040002 0x220 u5 w9 u: b2 C
himr 0x80040003 0x33
. `6 G, [. Z" g3 Z, q, qhimr 0x80040004 0x44
+ W) ]3 l, r- V- c9 ]himr 0x80040005 0x55
3 u' _0 x. b% n6 B% ~7 y3 W! F! h2 e% f9 q
SN也是类似。
8 w# _8 v$ B; p/ }) g7 M* p+ N6 ]4 o4 Q$ N+ z4 K& D
现在主要是,谁告诉我们MAC和SN的地址?
, N6 ]& J8 x! w2 k) t0 d
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 R# B) o; t" q6 v/ h+ ?一直想找到运程修改MAC和SN的办法,苦于无解啊

& M' j7 O9 N4 H# m7 }: x5 _: @, R源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * D9 O5 U6 m+ L% r

. p( I! I4 c" [' h+ N( G3 ?. r修改的代码早有了。到今天不会编译。
# ]8 {) K6 n$ U: ^* v! u5 b需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ [$ G2 ~% l7 T1 K2 O' V/ }# _+ S/ h
  2. #include <malloc.h>0 _: _1 q& e/ }" k- D
  3. #include <sys/types.h>6 f7 V/ B# ]% h6 B0 P+ p
  4. #include <sys/stat.h>
    % }( u2 V: {, C0 {( A$ F  n
  5. #include <sys/ioctl.h>
    1 G6 S4 k% ]1 k( `* k, y! V) Q, m' E
  6. #include <stdio.h>
      P  i1 z" H' A( t( Q2 A
  7. #include <string.h>& Y  V& p$ m0 N: ?5 \$ p" Y- s
  8. 8 X( O  o; \" \7 o
  9. typedef struct {
    ' S* w- z- `8 w$ w" o" o
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 b/ O( Z: {7 m+ W, K: _
  11.         unsigned int        sub_addr_count;
    3 e% v5 H5 |2 d9 G* |. h$ N
  12.         unsigned char*        e2prom_cmd_data;4 d$ R3 l( E3 }( u" m% a+ J
  13.         unsigned int        data_count;4 b! c: z* j9 X4 E0 V) O
  14. } e2prom_s_cmd;* h) V  t) o& A$ p* J% G7 v' L
  15. 6 M, D  s4 `+ k7 }6 p2 K
  16. #define E2PROM_CMD_READ 1
    5 Q; }7 a8 f; H5 g
  17. #define E2PROM_CMD_WRITE 2
    6 u) o4 _: {0 I# K7 @
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% r) r6 W, r9 N+ B3 U) ?) w
  19. ) m0 }& w; X9 R3 n! u( d+ \+ e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' H4 y( j2 y4 d7 t2 l1 L* r* D
  21. {! C  e7 p. @$ Y
  22.         int fd, ret;. Q- \. |; M$ I! @
  23.         e2prom_s_cmd arg;4 [) a0 O( k/ y# `' s; S
  24.         unsigned char buf[0x18];
    ! W8 w: T" F+ z3 e; M  {
  25. % S; T  v* `" M" b5 W9 m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" E" G( j7 F2 U9 i/ Z: j$ M1 x2 t
  27.         if (fd  < 0) {7 i) Q9 F: C; Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ U+ u5 c+ Y8 F% D# \
  29.                 return -1;
    . S1 t; T; U9 _" @* ]- h
  30.         }2 N4 c9 ]. Y7 O9 M0 P8 y% H
  31.         arg.sub_addr_count      = 2;# Q/ y3 P7 M+ k& r: f6 W4 S$ ^
  32.         arg.data_count          = 0x18;/ [4 d' }* d8 t* p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / y- x! l2 K& ~. a/ O9 k! {
  34.         arg.e2prom_cmd_data     = buf;
    3 Q! b8 y; p( F) B: \4 K2 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 i% ~, d" s5 b( t" v* q9 f" G
  36.         if (ret != 0) {
    5 x$ }" Y8 K% H' b. |
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ Y2 j/ B) y3 P* B0 m6 B5 \
  38.                 return -1;
    0 C. t% W4 ~6 I
  39.         }& e; A) n* \% \4 `
  40.         memcpy(mac, buf, 6);' _. @/ l3 Y9 a
  41.         memcpy(stbid, &buf[6], 18);
    * L. n5 K! {" Q
  42.         stbid[18] = '\0';
    7 J8 X# {3 m& q! W/ p) {0 _5 F) ?, O

  43. * z1 p3 h7 |% s
  44.         return 0;. ^3 U5 z9 d& V  O3 y
  45. }
    ' V$ j4 [7 D: N$ m+ c

  46. $ |; Y3 ]  o! t4 C9 h" F- S5 T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - f/ Z4 h! v( h5 \1 a
  48. {
    . r: ]0 S! V6 p- B6 E
  49.         int fd, ret;! L% ]- W9 G; s
  50.         e2prom_s_cmd arg;5 n6 I, j0 ^* {" k, P
  51.         unsigned char buf[0x18];
    5 B9 ?9 m. o: Y3 Y- Y: X

  52. & Y$ L# V2 {: y! p) s
  53.         memcpy(buf, mac, 6);& e3 k7 Q4 h* j9 p0 h) s1 T
  54.         memcpy(&buf[6], stbid, 18);' U& v' W) r. k3 `' m% T4 O; A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 R7 o7 G( s6 E( H2 d/ P4 @
  56.         if (fd  < 0) {
    5 X; i1 }; P! |: Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);- j! r% M# _8 i% n1 ?. ?
  58.                 return -1;
    7 E) y: u3 j8 Y5 ?  W
  59.         }0 K  l; X4 J" V- ?$ s3 q
  60.         arg.sub_addr_count      = 2;
    2 T8 w" Q& ]6 k0 B
  61.         arg.data_count          = 0x18;
    - M% v- c) i) W7 z0 P; S0 U2 M
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % I# f* a# E. h4 X
  63.         arg.e2prom_cmd_data     = buf;
    ; `* U9 |# p% Z# @9 x' h4 ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 a0 e; O! _! S7 ?
  65.         if (ret != 0) {8 ]' i  P& j1 h% i2 r' m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # ?! W* p) a) [9 N9 P# j# p
  67.                 return -1;
    & q; N* q) V6 s0 S+ P  e2 ?
  68.         }: n4 e& X+ Y$ [, K$ g

  69. / K, p4 T- W9 \
  70.         return 0;
    3 p/ n7 b/ Y; }% Y
  71. }) e8 s  k9 t+ S( c/ M( m8 K

  72. 6 O, n  P% }/ }9 |
  73. int main()7 A# c% z' a3 f
  74. {
      Y" M. Q, V" K
  75.         char c;
    . y0 G, U  c3 v/ B0 o1 X
  76.         int i, macs[6];+ M$ g2 U) ]9 V7 s) c+ H2 g  p
  77.         unsigned char mac[6];
    : h$ S* `9 F! n! M3 @' h
  78.         unsigned char stbid[256];' X* C5 F3 O8 p" A7 a

  79.   r- E% t0 h9 S' m- Q- e* v  p
  80.         if (readparam(mac, stbid) < 0)  v9 I6 i& t: k# w
  81.                 return 1;
    + _# v% d+ y3 c
  82. ! J( l" B$ h9 W
  83.         printf("Current parameters: \n");% k  q1 }2 o/ h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 K+ y9 ^3 y6 ]/ w+ w& d- ]
  85.         printf("  STBID: %s\n", stbid);4 T% ]1 e0 R7 U$ [* e/ N( N) `  U! K
  86.         ( L- O6 `- M8 z( u1 Q5 ]
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. F2 C8 O+ a7 C& m# [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - h5 L' }# z% g* [; j# h& T
  89.                 printf("Input MAC error\n");2 a% V# X2 t3 T5 x, J1 V5 N
  90.                 return 1;# n) X4 }8 p$ S
  91.         }) n7 e& w  D0 d* ]+ X6 H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 {; o. x6 u! ]0 `& W
  93.         printf("\nPlease input new STBID: ");& {" o% h2 g0 u5 ^
  94.         scanf("%s", stbid);
    5 r* h: w" ~6 e, S( }) e
  95.         if (strlen(stbid) != 18) {
    ) z2 D$ }; K, I8 A0 M$ G0 J
  96.                 printf("Invalid stbid\n");
    ! A( B9 C  V4 H6 B
  97.                 return 1;& d6 a, {& S! f$ b( w) T
  98.         }
    ' ?+ J* B1 {5 r
  99.         printf("\nNew parameters: \n");
    1 v# x) P- d2 n$ W1 g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # ?3 H; e# ?4 F  c2 ~
  101.         printf("  STBID: %s\n", stbid);
    ; c( [5 I! ]& B8 B* v% T3 m6 t( P
  102. 5 ]- L0 U$ e: ^8 e- v
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ j' c+ E/ l, Q
  104.         for (;;) {; W, P; q. @! o- f+ d( d& z& |% i7 J
  105.                 c = getchar();
    & l2 u& l- V# c
  106.                 if (c == 'y' || c == 'Y')4 s0 M/ \' ]1 p5 a1 q3 i, i
  107.                         break;
    ; l0 N. f  @2 x  b* @8 i) a
  108.                 if (c == 'n' || c == 'N') {
    7 G* r' x) N2 X  J  T
  109.                         printf("\nAborted.\n");, \" i+ _& w. ?5 v  x
  110.                         return 1;/ I( w% h9 T* X7 o" k
  111.                 }( g8 }5 u$ ~2 f  b% B7 O$ Z
  112.         }
    , u# n2 [" z- b4 }( G
  113.         if (writeparam(mac, stbid) == 0)
    & u9 m, x. X, m2 o* B& W# N
  114.                 printf("Parameters changed.\n");
    ; t( t0 {" |0 e) q

  115. & i+ s! `! _4 \
  116.         return 0;
    ' M2 ?7 Y3 }* y
  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 ) S  ~9 ]( w6 o. b- a
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 x. s& J0 Z8 \8 `: G0 u/ j/ V你用的编译命令行格式是什么?
$ Y2 p$ B( v+ ^8 |7 u9 Y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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