查看: 17284|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr8 P* ~! a! j, O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; }* A( W6 L6 u& h" l
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 w" K$ P, R8 B6 Busage: himr <address> <value>. sample: himr 0x80040000 0x0
/ w$ ?1 {8 [; |& z$ ^# Z: i, G+ ]
5 X3 Z- N4 B+ n
( Y2 t6 e* E- ~$ b& b不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: }  N7 @$ k$ ~" q' k" v8 g
; O  l) ^3 V) v2 X- d补充内容 (2012-3-8 09:42):. w/ j/ Z" n1 F8 {& ?
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. U" O9 M  Q0 r4 h3 t这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
- R+ S2 A' Y1 v% o
' H. k  M4 t& ~himr <address> <value>. sample: himr 0x80040000 0x0
' Q! F& x2 U( @* J/ w
1 ?: R3 W! ^) _) u7 ?例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* `- K" T- a4 l' y& Z2 H' z
himr 0x80040000 0x00
8 V+ g' ?3 k% w6 ]( xhimr 0x80040001 0x11
/ i2 ]2 @1 r, V' k+ S. Khimr 0x80040002 0x22
2 o; M7 |( I" {+ ]0 M6 ghimr 0x80040003 0x33; z7 v7 o& M, `: X" L5 e7 t! c
himr 0x80040004 0x44& M; W$ {7 l0 f% r0 M7 l: r' x/ Q
himr 0x80040005 0x55, I  g8 l6 m3 m1 Z6 I: k6 Q

5 i' q4 N9 V! QSN也是类似。1 Q# B. p7 O8 K& e
9 P& r/ k: M( L+ Y+ S& u' |- {
现在主要是,谁告诉我们MAC和SN的地址?
5 ?# ^5 N, Z" v! M
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - }, a) r# ^: L$ f* i4 n
一直想找到运程修改MAC和SN的办法,苦于无解啊
) l3 D& s* k- F! n9 G1 C: h
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 l7 {4 f5 k. Q, s& Z, I. k- o/ K0 f7 I1 G
修改的代码早有了。到今天不会编译。+ Q4 p- x- a* A1 V) `
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ f8 [2 u8 y: T+ t
  2. #include <malloc.h>
    ) P7 p; O3 S& f% B( z& C/ t% c' ~& W
  3. #include <sys/types.h>
    0 u% c7 M  J" `( V% i( Z
  4. #include <sys/stat.h>% r% R  G  {- ^/ Z0 H9 R
  5. #include <sys/ioctl.h>& l) G- }" n' }& j' s5 C% n2 C
  6. #include <stdio.h>
    8 J# Q4 `) ~- i& D
  7. #include <string.h>) ?9 Y: x$ G1 x7 v" v' k

  8. * P9 ]5 _: u, _1 M0 p
  9. typedef struct {2 i2 C' ?+ i$ v( u& Q" f
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 k# e$ |3 z3 P" ?/ s. H5 j
  11.         unsigned int        sub_addr_count;
    % C0 m# u; i9 [6 a" r3 a/ F
  12.         unsigned char*        e2prom_cmd_data;
    1 _0 A6 C% V$ \9 C, \7 w
  13.         unsigned int        data_count;8 U' f* U0 m, {" i9 t. i
  14. } e2prom_s_cmd;8 L# V0 ?- D1 I5 h4 U
  15. 2 x  u+ S2 N# t/ M* _- |
  16. #define E2PROM_CMD_READ 1
    & u# }, P, E, \! ]7 s- E1 ]' ]
  17. #define E2PROM_CMD_WRITE 2+ G+ Y0 M2 F* ]& y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") [7 o* \0 L) O( N9 ^6 v5 D
  19. ; V0 ?) ~3 I8 k# v, {. H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" _! K) ?& A# O4 C+ @5 R+ w$ y
  21. {9 g# B  {4 a2 i
  22.         int fd, ret;( x* [6 |( F' {
  23.         e2prom_s_cmd arg;7 g" N0 f1 q9 F+ U5 |% J- K
  24.         unsigned char buf[0x18];
    2 F' q5 N6 D2 Z. t* X) A5 ~. u

  25. ' F  j+ N+ X' t6 x: C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 m" w6 w6 g" u! k. H3 o# e( X
  27.         if (fd  < 0) {* j  F# I6 [- s! }; s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( z  F* G, L' I# R9 L
  29.                 return -1;- q# t, A2 z: b7 l; U3 z2 M
  30.         }# k4 B$ V, d& `9 i
  31.         arg.sub_addr_count      = 2;
    * _, H7 |( p6 l' o4 \
  32.         arg.data_count          = 0x18;, e" K  h0 i" T% P/ M6 T+ W# u; X7 y
  33.         arg.e2prom_cmd_sub_addr = 0x290;  j+ U3 X. ^  r
  34.         arg.e2prom_cmd_data     = buf;% m  O8 k7 j/ |7 }: T
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ w( N2 Y' t; w
  36.         if (ret != 0) {
    2 a- y7 @+ P' d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: z0 g4 [2 J9 b
  38.                 return -1;
    # e2 o# K, G( s9 ]6 U& Q
  39.         }7 |6 y/ I+ r  {# r6 u
  40.         memcpy(mac, buf, 6);) x- |( }. B) V! v) V# w
  41.         memcpy(stbid, &buf[6], 18);$ ?/ f$ Z; Y7 `+ s3 B$ N
  42.         stbid[18] = '\0';
    ; n) O2 R  _4 ^. S$ ]' P+ y( v; a
  43. 2 U8 P; o' N  v0 U* G9 u; M
  44.         return 0;5 n# A* M6 @0 f
  45. }/ E7 g+ y- G0 ^8 z5 O

  46. % X! t/ D1 v. {, ^8 \4 f8 m" y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 x" r  f% @5 \  q; C
  48. {. F% c1 X  a8 l" J
  49.         int fd, ret;2 i8 x  B, x; [$ I* A3 ~
  50.         e2prom_s_cmd arg;" y3 G5 F  |' i: }4 \
  51.         unsigned char buf[0x18];
    & U+ H( L# f/ B) P# Y4 P! t9 I

  52. % g0 `& ?, X( K- _- U$ K: Y
  53.         memcpy(buf, mac, 6);
    1 N0 t" r/ ~- D, j% J
  54.         memcpy(&buf[6], stbid, 18);" L7 A, Z- q: V4 \. @! ~! X4 o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& {3 D5 ]0 F* Y7 [' a+ U
  56.         if (fd  < 0) {% ]3 B, z# [9 `8 y- ^/ U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 ^/ t2 E' R% y5 A
  58.                 return -1;
    ( [- E; p( L" T, U2 A3 e) ]0 U
  59.         }
    # Q1 h& n0 H% `" `% R
  60.         arg.sub_addr_count      = 2;
    ; l& f. u. ~6 x" `  R
  61.         arg.data_count          = 0x18;6 E# a2 v( S8 A
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 M5 P* X% W" T4 z; n4 g" A' V
  63.         arg.e2prom_cmd_data     = buf;
    + s# |( W0 m$ n9 K8 ]+ e, P  i' `
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + E# n7 _/ P. }
  65.         if (ret != 0) {
    : h1 ~/ i+ f* [( w+ b, b
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 ^/ p) F- ]; w4 T1 ~/ `2 M, a
  67.                 return -1;
    : h/ x! ^) @# J- N
  68.         }
    ! D6 ^0 }3 l9 j& s) ?8 ]

  69. 2 R) J; M# w. O, q* p7 R& U
  70.         return 0;& n+ I7 g4 d' C8 ?0 X
  71. }& C+ [: c! I2 q

  72. ) V, R7 }' g9 `+ O& @$ O
  73. int main()$ D) J- z4 D# G% Z/ N2 \
  74. {
    % {" v: W' n6 v* Y! }' ]' u
  75.         char c;
    " H; Q( V, P$ ?
  76.         int i, macs[6];$ K5 q# _" F2 R2 ^, ]& V2 G4 h
  77.         unsigned char mac[6];, c; |- R: f3 S7 w& x. e
  78.         unsigned char stbid[256];7 T, z$ Y# |% n! H
  79. 3 I% R+ F3 P7 T2 m( A# p
  80.         if (readparam(mac, stbid) < 0)
    ( C* d' w' S6 W0 m9 f6 x
  81.                 return 1;: R; y' }$ i! n3 v* ^3 z1 h' @
  82. $ B/ N3 D) d6 Y0 s" [# h
  83.         printf("Current parameters: \n");
    5 \" s; L1 ~4 z2 g4 j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 p/ z+ {9 R0 [: G4 d5 F
  85.         printf("  STBID: %s\n", stbid);/ d& P$ r$ J2 L% ?* {  t  v
  86.        
    " s* `; U2 `: w! _  d+ U
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ U- s# t- l# f$ N5 m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  n6 J; Y5 |6 D% T1 r
  89.                 printf("Input MAC error\n");
    3 U9 ~2 F2 T% ~  m
  90.                 return 1;  U" [7 d6 e1 m4 `" b$ D/ u2 t
  91.         }
    ( ?7 d5 `8 G' X( `$ V0 m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 J) k7 c5 C+ {8 f2 K
  93.         printf("\nPlease input new STBID: ");
    * J3 T. g' @" }' b  e- ~
  94.         scanf("%s", stbid);( ?, m! |8 ]7 G. d  s, T6 R6 W
  95.         if (strlen(stbid) != 18) {) w8 D- d; K* {  B1 y1 P0 `; f
  96.                 printf("Invalid stbid\n");! X+ [' }& E# J" W# w: c! F- @
  97.                 return 1;3 c1 ]2 s0 ]  S& h
  98.         }, h: z5 r5 w; n
  99.         printf("\nNew parameters: \n");" h4 c( i  {/ D! E
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # e" i7 v5 i( [' G; O! `/ b) D5 N
  101.         printf("  STBID: %s\n", stbid);
    . E% Z+ M2 L( u% B" g( @' V
  102. ; B" F5 R  a6 n9 l7 p
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 o1 O* m7 T: K5 w" e5 p7 t! B9 h
  104.         for (;;) {8 q* P. ~5 [/ d" @% K$ |, ~
  105.                 c = getchar();1 V0 a& o/ O" H8 d8 D7 X- X
  106.                 if (c == 'y' || c == 'Y')1 @7 h/ v6 g; @6 B; ?: V
  107.                         break;
    2 B: `4 s% s  i$ _4 `! _
  108.                 if (c == 'n' || c == 'N') {
    5 q- {2 D+ @3 [5 ]9 ]% u, ^
  109.                         printf("\nAborted.\n");
    . n9 h, z3 P3 J$ f2 `
  110.                         return 1;: O- R# k) e; H; u  M
  111.                 }
    / j$ f4 d0 c" {0 h  U6 W  W# J
  112.         }: }6 p+ g$ H, X5 s! H
  113.         if (writeparam(mac, stbid) == 0)
    6 h7 ?# V3 L* l( v
  114.                 printf("Parameters changed.\n");
    ' |1 [  m% t! d% ?+ N6 r  w5 ^: q

  115. 4 n1 e6 e9 N" a% f5 T% r# b
  116.         return 0;% p$ v9 ^5 [4 R1 A: E+ i
  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, H8 Y" P% R, |; B" g# L在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 _0 B; N$ a+ c你用的编译命令行格式是什么?$ A9 L- N/ K' t9 ]% ?) u
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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