查看: 16896|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % _( d6 e5 l, b" Y9 w4 X/ g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 ~& E7 f/ N% Y- d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: Y) `; V+ K' D8 a: [
usage: himr <address> <value>. sample: himr 0x80040000 0x0
1 j) z5 J5 C' {9 F) C) o: T% o  h* ~1 {& H# L
, S! p$ g1 J8 X* u  Z. ?
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( Y5 u' s1 @' b% p

7 p+ b1 ]% e- ]* R; M) o; m4 M补充内容 (2012-3-8 09:42):0 W  u! s0 l. G$ e, D% L4 \
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ X; j+ g" P/ F$ T
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
6 O& Y7 s0 v2 ]9 C4 S7 u
% |" k6 x. C6 L' Ghimr <address> <value>. sample: himr 0x80040000 0x0
) _: Z* R8 W' B$ A& j& D" D
* t3 Y$ u$ F( C例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 a9 n( ]  z: ~2 f! T
himr 0x80040000 0x00
8 z; f; U5 K: X3 h8 Lhimr 0x80040001 0x11
0 O" F3 z5 R# Thimr 0x80040002 0x22$ m2 h# S6 M4 |9 e- C2 [6 C5 z
himr 0x80040003 0x33
+ Y  t6 {9 x% q, Y6 V7 Zhimr 0x80040004 0x44
  X% q" L( [& ]& n; J; Z1 `himr 0x80040005 0x55* |2 l, H. G5 ]& E9 Z
& R% w1 I: r/ p7 H+ H; o/ }
SN也是类似。6 }6 X* y# H+ J

6 p6 |' I' r% i! @+ @+ `- ^2 j现在主要是,谁告诉我们MAC和SN的地址?+ e5 k7 j: n& K8 @- ~& q* p
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  I! d( s7 U" P$ P一直想找到运程修改MAC和SN的办法,苦于无解啊

+ i5 y' A: ?4 k% }( e2 V! O% D源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; q" Z) ~9 J6 n) h* q
2 n8 u+ F* y& N+ O: c* v' ]修改的代码早有了。到今天不会编译。
8 }: r, s9 g' P; V" y; V需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) `. U+ J1 k  l
  2. #include <malloc.h>
    5 B4 k( F8 M+ A- u2 ]
  3. #include <sys/types.h>" S  {- O3 G) W4 O+ V
  4. #include <sys/stat.h>6 i: g, N& z- E) ]: X* R. N- A
  5. #include <sys/ioctl.h>! `$ u, ?1 F) d( Z4 K( l3 v
  6. #include <stdio.h>
    5 P' C* A+ Q6 [) a
  7. #include <string.h>9 ~: ~* L4 q2 d0 u

  8. # A# S! s+ D6 o, Z9 X
  9. typedef struct {
    ' I0 }2 c3 D- l
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 \4 @1 ?9 Q  ]
  11.         unsigned int        sub_addr_count;% c( c' K% c  ~  r: D
  12.         unsigned char*        e2prom_cmd_data;
    9 Y: w5 M. |5 d* U1 ^
  13.         unsigned int        data_count;
    ; W! s$ B$ [- H5 ?
  14. } e2prom_s_cmd;: K" w/ k' A: m. [) d

  15. . b2 e1 c% r. {- a6 L# X
  16. #define E2PROM_CMD_READ 1. J% T! I" h9 r( E0 R* n$ Z
  17. #define E2PROM_CMD_WRITE 2
    " s3 d9 }1 s4 ~! T( v9 g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 l/ b& \2 |; o/ g! g

  19. . k; T! @6 r7 j+ u/ ^" K
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , p6 G' q! G8 ~
  21. {
    ( |+ a1 Y& t, q+ R! O
  22.         int fd, ret;9 z& j. I5 d# @/ S& A* D/ F& k) `
  23.         e2prom_s_cmd arg;
    & `, E/ i: \1 s& E! @' N
  24.         unsigned char buf[0x18];3 k1 D$ h/ x$ o0 J
  25. / D0 N+ j" g' I6 J" N. E9 ^8 V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* j2 k- _8 h/ D
  27.         if (fd  < 0) {* A+ b# ^/ c0 z2 ~( `" N0 M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ Q6 v$ `" H, ?& M# h" p+ {  k- Y
  29.                 return -1;
    ( A5 Y; v% q0 V7 s
  30.         }
    + m; q# C" @4 E
  31.         arg.sub_addr_count      = 2;
    ; q  R" a+ s0 X
  32.         arg.data_count          = 0x18;+ _  i" O2 f) T6 k* d
  33.         arg.e2prom_cmd_sub_addr = 0x290;( N7 {$ {  `( [2 H
  34.         arg.e2prom_cmd_data     = buf;
    % E6 s) p) }7 z( j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 n' f* a9 Q/ n% Q1 Z1 p4 X
  36.         if (ret != 0) {# F8 V4 [1 v- P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ g6 Y. c0 K8 V9 {/ Z4 ]3 o
  38.                 return -1;5 J2 t4 r# c. A  B
  39.         }( S* P. t$ Y5 @
  40.         memcpy(mac, buf, 6);2 u9 O9 D% U5 _5 s# s
  41.         memcpy(stbid, &buf[6], 18);7 {6 W, K! y' k! i
  42.         stbid[18] = '\0';. I' \: m7 _$ T0 @
  43. & v& ?7 @! H* W6 r( {
  44.         return 0;6 F0 u* Z; |/ y! v0 C& ^
  45. }) D. s6 x% r. u7 M& N
  46. ! ^8 {# j# a" f6 e7 F
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 m0 m: R. u: t' A
  48. {) ]3 n7 p7 N' ?% p
  49.         int fd, ret;
    & q- w0 V! V, T8 P8 e; E, Y' w
  50.         e2prom_s_cmd arg;
      O3 G& E/ O& K+ y
  51.         unsigned char buf[0x18];
    2 U! b1 }/ r! G' P$ U

  52. 3 ]8 A8 `6 p6 B2 r7 a
  53.         memcpy(buf, mac, 6);
    % f( h. B9 U' ~) K+ M1 @, t
  54.         memcpy(&buf[6], stbid, 18);
    3 P4 _# i9 [, `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 X7 I0 {& @" L$ \& s' J
  56.         if (fd  < 0) {/ d- t7 m& s$ a& q' k0 r, g* l
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# f3 [( J3 z" r
  58.                 return -1;
    ! P, {  ^( n  o: g/ u7 c
  59.         }1 ?9 @+ {4 ^1 o2 w# r
  60.         arg.sub_addr_count      = 2;; A/ c0 M1 g  E; n4 G
  61.         arg.data_count          = 0x18;
    - j2 z- O, w9 ~2 z+ D
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 S* q) r6 a: N! G; J' M
  63.         arg.e2prom_cmd_data     = buf;) N8 W9 z: q% ~( e* q& [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    6 Y4 t3 ~# x: ?/ V* K1 L1 _
  65.         if (ret != 0) {
    4 v- Z/ s  r7 Y  O1 O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, g/ c$ ?4 {9 p
  67.                 return -1;- a+ A# C, |0 x8 i3 _
  68.         }
    5 j+ g2 @; J. \( h8 s# W. L# J
  69. 6 ^/ r4 v, O- L! }# E% C' x' ~
  70.         return 0;
    $ Z' i  N( \: N9 ]( g! }
  71. }
    5 U6 q' O, P( i

  72. 1 `5 k1 f9 X3 Z7 H
  73. int main()
    % E; _) n$ G/ U' c2 Y( I
  74. {/ S5 D- A' p2 ]+ h
  75.         char c;
    0 d2 S' m7 f4 Q' j# H$ ^+ M
  76.         int i, macs[6];5 I: k& c' U8 P
  77.         unsigned char mac[6];
    " b8 ~5 c  F" p2 }; [
  78.         unsigned char stbid[256];) r+ s$ }' S2 d# @0 E1 G+ w! }
  79. " G* A; N& u9 W. R, n
  80.         if (readparam(mac, stbid) < 0)
    - _3 ^% v3 Y, {  F) ~% g
  81.                 return 1;
    ) X- d/ ~+ f+ g% v9 i* }' ~! [

  82. : p$ p% c0 k0 M( g& G) E
  83.         printf("Current parameters: \n");' I' A# W9 p/ Z# X& q7 L4 e0 a1 s
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ P4 c  j! U$ D- s2 S# y& n; B
  85.         printf("  STBID: %s\n", stbid);
    4 L/ K$ M& w1 o- v5 B0 ?, M2 M
  86.         6 u# p2 V7 N* B# r! A3 z7 z3 H
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 L, ]  w* j" d$ o$ X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 m' h+ n6 f9 q) g; ]# C: f, g
  89.                 printf("Input MAC error\n");7 V0 w0 E% }* g2 }" q
  90.                 return 1;
    ( a) I& F8 e* Q$ u
  91.         }/ D; x8 B6 F1 f3 t# e2 v
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    7 J4 Z$ P) D0 U9 {5 M' t) \) V
  93.         printf("\nPlease input new STBID: ");! q% V" c+ r9 F6 c3 p1 @
  94.         scanf("%s", stbid);
    ; n- T" b' ~# {0 |* i( \
  95.         if (strlen(stbid) != 18) {
    " D' L/ F6 U# {3 w
  96.                 printf("Invalid stbid\n");5 e* j, O, \$ c8 d: k
  97.                 return 1;0 l5 \9 F3 e$ ~5 ^
  98.         }! L9 I8 Q$ f) |0 v1 F1 `) ?
  99.         printf("\nNew parameters: \n");/ Y! e2 }+ k+ A7 g, A! V
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 e$ D. \4 \* z
  101.         printf("  STBID: %s\n", stbid);
    5 u/ I8 R2 u" C1 l5 ~
  102. 5 C6 C9 e4 j2 _7 R; o( S3 @4 ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ d7 X, A. z- |6 t; d
  104.         for (;;) {+ m  u9 B  h& U/ l7 W' M& b6 _
  105.                 c = getchar();
    0 D  W. {3 U" C( O- k
  106.                 if (c == 'y' || c == 'Y')5 _& g1 N% d, F5 E8 R, l4 y9 ?8 B
  107.                         break;
    + {% s& w# t& R0 p3 y8 F
  108.                 if (c == 'n' || c == 'N') {
    : a: R/ `2 Z- V. @
  109.                         printf("\nAborted.\n");
    $ u. A* y$ I1 _$ l
  110.                         return 1;  x3 I- \( G, E6 C+ t% j$ \
  111.                 }, m' C' N5 t/ M1 o
  112.         }
    8 ]7 |: n) t  l4 _2 b% C% x
  113.         if (writeparam(mac, stbid) == 0) 1 H8 K% K0 O6 ?6 O
  114.                 printf("Parameters changed.\n");/ U9 a2 o6 j2 B; h& q/ Q: J7 l$ \" U
  115. 5 F" S. A6 S* k, U) {
  116.         return 0;
    ' \# T" r0 ~8 C3 U2 @: F! C: 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 & Z5 ^/ N9 `: D+ W* p
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 D' x4 ^7 \/ K5 v4 U' F你用的编译命令行格式是什么?8 K+ ~& Q' v! a6 M: m8 |
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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