查看: 16886|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 F9 B2 n* D" y) n9 r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . q' }% a. b' P! u  S1 r
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: O9 D% [5 ~# ?9 h$ R+ g' j
usage: himr <address> <value>. sample: himr 0x80040000 0x0) }5 Q' u8 Q/ R, ?6 I  W1 j9 k

# w8 X7 O  @% j" C
! J1 t& M1 A8 r1 |3 N' v9 j6 {不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 C* _+ ?0 o! K: [% p3 _9 F" U" ?' D" d
补充内容 (2012-3-8 09:42):& X* P! L* S6 j$ [. S$ |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* d3 E) u2 q) d# \
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
7 R" p$ O: f8 I- {; |% ~2 ~  ]! I, F5 y( f6 H' Y( t
himr <address> <value>. sample: himr 0x80040000 0x0
6 w6 o- D$ _" v  v2 _
6 P$ x6 ]% A+ }* n例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& W6 P  j5 d: v
himr 0x80040000 0x00( q+ M. e8 O4 B* M: ?
himr 0x80040001 0x114 t3 j9 j2 d- v9 @
himr 0x80040002 0x22
) Y5 H* z, l( j% Zhimr 0x80040003 0x33
$ {3 t, ~% _; A+ G2 p$ |  W/ D# Shimr 0x80040004 0x44
& ~& S( i; `* S/ n+ y: g8 B3 qhimr 0x80040005 0x558 H# ^) l+ Y. V: \0 s! o

4 k4 p, \! f5 R( a" [; R# |SN也是类似。
6 H4 \  b& z$ r, I7 K9 A' m5 s" O- ?" o' g7 t& @$ i
现在主要是,谁告诉我们MAC和SN的地址?
: o& C9 Y$ o" a+ y. o
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) }4 }# c4 N  v. [
一直想找到运程修改MAC和SN的办法,苦于无解啊

  ~; m- c, B: B5 m8 v$ \7 c- P源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 \  g6 E9 R; a4 S7 ~& G0 M+ L9 i7 k! d
修改的代码早有了。到今天不会编译。
, F( q# E- P" y0 X1 [1 Q$ Y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ ?/ U! }9 m5 V& ~! P2 c8 t
  2. #include <malloc.h>
    " Y8 M0 b) j# T
  3. #include <sys/types.h>
    + i6 U8 V9 y2 o& M) U
  4. #include <sys/stat.h>
    7 N, v1 N! e7 z6 d$ ]% S
  5. #include <sys/ioctl.h>) z3 j; p1 F1 u) x6 A- O6 L) {
  6. #include <stdio.h>
    ' f! P2 u: [$ j( h1 Z; M# S
  7. #include <string.h>- L& y% X4 L; V0 x

  8. : W7 g) l, \1 L/ J! H% t* O% v) D
  9. typedef struct {
      w/ G- A1 ~" J% F9 q4 D) Y
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 d# h0 J( z" ~: n
  11.         unsigned int        sub_addr_count;
    # C! w" J7 h2 H4 m0 c+ h; w
  12.         unsigned char*        e2prom_cmd_data;' x' i  V5 l4 L, F* N
  13.         unsigned int        data_count;4 ^7 P( P0 L8 ?! }9 L
  14. } e2prom_s_cmd;
    : m; J7 [3 z. L6 c4 a  A
  15. 5 N! p5 k* B: r, _# I
  16. #define E2PROM_CMD_READ 1
    , M2 g* ^& C3 K7 I
  17. #define E2PROM_CMD_WRITE 2
    8 Z$ {, G7 g, a7 G' B' {  a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' p5 I, F5 Q7 G; O
  19. 7 y) [6 P/ K, J, b9 ^3 _) {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 Q4 f8 x) Q6 d% \
  21. {6 c; E2 X! t  m
  22.         int fd, ret;
    % N7 o8 h! N( g! m( Q
  23.         e2prom_s_cmd arg;. M* u+ A  N8 i8 f  [" A, H
  24.         unsigned char buf[0x18];" N) ]% a* ^$ A; y
  25. 8 q8 S1 b& n/ N/ A2 H, `& Q7 {
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % e2 W0 b% V5 H  f$ A6 S3 R
  27.         if (fd  < 0) {3 ]3 x1 J0 B( O* a) ~3 _8 m5 @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) n( @% Q8 w) j; j0 J# G' P- j
  29.                 return -1;* _% M0 O$ W: K' U4 T
  30.         }2 O5 ]' m  A$ v
  31.         arg.sub_addr_count      = 2;
    # e0 o/ h8 P7 F4 {+ \
  32.         arg.data_count          = 0x18;2 N3 U5 ?  T$ g* w$ |% w  v
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 G, F% e9 X" {1 q1 V; a
  34.         arg.e2prom_cmd_data     = buf;
    9 Z& Y( F8 ?/ k6 F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 G5 S6 @4 U5 A: i, K! i4 T; R
  36.         if (ret != 0) {
    2 t* R6 R; s- [! b! ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % X9 j1 O. h8 c7 p
  38.                 return -1;  J. v0 z9 g( f2 T0 m
  39.         }0 `- U( r& h7 q0 V+ a- ]# ]
  40.         memcpy(mac, buf, 6);: W1 D! U0 p% F9 r' H! E
  41.         memcpy(stbid, &buf[6], 18);
    6 k4 C4 r8 V& i7 T2 V
  42.         stbid[18] = '\0';
    2 `& K# |* w) F+ x

  43. - ]( |$ n7 P( D1 a2 s5 ]- A0 b
  44.         return 0;
      A8 E+ G# n" R* F
  45. }
    / ?3 Y2 O& q9 k% e7 }
  46. % h1 \8 C5 d2 b& U2 y1 `# x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 `, u0 v# M9 w  Y# V5 g+ R! E6 y
  48. {
    , \0 S$ y3 f8 w% V# }9 P
  49.         int fd, ret;1 k2 O" F1 b. L. A
  50.         e2prom_s_cmd arg;
    % |( Z( ?. S/ x
  51.         unsigned char buf[0x18];5 K  Z: Z/ o/ [- w! s6 ~' G
  52. $ _1 ^* h" F" x5 H# H# r+ w: K$ K
  53.         memcpy(buf, mac, 6);2 g( e+ H1 f* }% m. ]
  54.         memcpy(&buf[6], stbid, 18);4 D  M6 I- f- d( j7 d. ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 o/ U5 U2 W0 |3 C: K% o2 U3 e* i
  56.         if (fd  < 0) {: c, g1 A4 P7 d$ H1 h% |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& S7 k' T9 Y$ j' V! |- R2 g, k% W1 Q5 C
  58.                 return -1;
    & F8 r3 g" t+ T- E! y
  59.         }/ M. G+ i+ ?6 ^, I' h& m( t
  60.         arg.sub_addr_count      = 2;
    ; C1 x- X  W2 s. D
  61.         arg.data_count          = 0x18;* K: N9 v0 M. F$ U, k1 L. ?# W
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # V+ x: R, C# R$ X" V- j5 P
  63.         arg.e2prom_cmd_data     = buf;
    ) R/ ?4 a- V/ \2 Q9 ]: I5 y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 `6 L2 f0 \- T' \
  65.         if (ret != 0) {
    ' \' l5 Z# C8 _* X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  D8 R3 e$ g- L5 {
  67.                 return -1;
    8 }  ?! Y5 |  o1 X" F( {/ }/ A
  68.         }
    9 ^0 X+ d8 m2 G) }8 N8 _

  69. 0 G+ n# e8 N1 b( B' ^6 |/ I
  70.         return 0;- P4 \0 _2 v+ l# m2 n
  71. }
    % i( R1 H8 z# h% O1 s

  72. . Y3 c/ z% u. S6 \( ?
  73. int main(), C: [$ U, |% ], L# w1 ~5 H5 b
  74. {: J- G1 o4 p) g* t4 v' Z' g
  75.         char c;/ N' E0 K, x# ^2 Q* O
  76.         int i, macs[6];/ r! ]" P9 @* R- ?6 ?
  77.         unsigned char mac[6];
    ( R% g/ v$ q. F+ r0 v
  78.         unsigned char stbid[256];" v/ k* e' r$ `% `! d

  79. 3 `0 m# e, ?9 I4 h+ M( ]+ K4 Q
  80.         if (readparam(mac, stbid) < 0)9 X. p$ H+ @; E, V( [
  81.                 return 1;
    * U7 `4 y1 m' J

  82. ! L  f) u, D# F% P0 {
  83.         printf("Current parameters: \n");/ Z) G' b) i6 A/ I3 p: s- g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' q( b2 H, L" H& \( `: z
  85.         printf("  STBID: %s\n", stbid);
    9 v( D4 |: w6 ?
  86.        
    4 r5 S) B. H! D  |/ v4 {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      P) Z* l& W5 }" {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 n: ^) X" Q0 z7 x
  89.                 printf("Input MAC error\n");
    ; E' D# r# J! V/ _1 u! q
  90.                 return 1;8 M; O5 [8 E- x/ m; E: b) Q
  91.         }5 g( Y: X7 K/ O7 Q/ L- C& o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ L, M0 ?! z' p- q' C
  93.         printf("\nPlease input new STBID: ");
    . g9 a3 o; [0 Y5 H" M! M% k
  94.         scanf("%s", stbid);1 c" n9 Z* ?4 L+ w; o% h' x2 ]
  95.         if (strlen(stbid) != 18) {
      t3 Z$ ^$ l2 i$ T
  96.                 printf("Invalid stbid\n");4 k) F5 V! n5 h/ m  M/ P* ~# f
  97.                 return 1;4 Z  ~% P1 e5 w
  98.         }: `$ H6 ~9 L( m7 g) Q0 p
  99.         printf("\nNew parameters: \n");1 R/ D( k( V6 _' h& k) V; n: _2 u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 g$ @4 H0 Q' u7 X8 H- q
  101.         printf("  STBID: %s\n", stbid);7 J; K% W) J: C/ \# D/ H" v. |8 N
  102. + Q; C4 }0 w2 O
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' r! n8 c5 a- |" J; k1 m( r
  104.         for (;;) {
    " r2 O! I7 ^/ ~* B1 C
  105.                 c = getchar();( f: r3 Z7 w+ h' E! D
  106.                 if (c == 'y' || c == 'Y')
    $ `: N: w9 I$ r' {
  107.                         break;
    7 F* W% a2 y6 K. g; T
  108.                 if (c == 'n' || c == 'N') {
    3 A3 u6 `+ A" y- y7 ]
  109.                         printf("\nAborted.\n");
    # Z8 k2 I7 i, ^8 u
  110.                         return 1;
    1 `& m: i% G' r; ?
  111.                 }8 r; a7 c  i1 u( l& U; ~
  112.         }
    $ n! q7 L' [- L8 N8 K
  113.         if (writeparam(mac, stbid) == 0) 2 Q, F+ Y7 q, n) d( q
  114.                 printf("Parameters changed.\n");6 H$ W% ^! x* L) h' g2 p3 A

  115. 9 |2 i7 S4 G/ n' o
  116.         return 0;$ z: }/ K4 L6 C
  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
) m, |/ H6 f9 p" o, j在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" ]" A' l' M! x) S
你用的编译命令行格式是什么?* k0 ^, n) \+ {. ?# J& f7 n; x' h/ }
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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