查看: 17351|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - H. m' r% l/ M# r$ x/ h& ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      p3 W$ ~% H, j4 I" `0 g- N# P
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& ^7 ~& I8 D" }  V. qusage: himr <address> <value>. sample: himr 0x80040000 0x0
; r  J6 ~& _/ Z: l. M4 F- k: @2 i, z; Q0 m1 N7 A' z
9 V( A( E5 {; E2 A
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( o3 Y; H# z8 \, P. z2 ]. N& [/ v6 j7 }6 `
补充内容 (2012-3-8 09:42):, x. W  G4 s' l# ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ S" v, p6 U6 W. y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。; B+ C+ u! v! k
# T( H4 a" t* ~6 ~, s
himr <address> <value>. sample: himr 0x80040000 0x0
* C1 b+ \4 X2 n( V/ A& r- G/ s& m! W7 c
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) n) o$ ^+ R- l& q: r
himr 0x80040000 0x00
+ L1 j7 L9 p6 o' |8 I; khimr 0x80040001 0x11
$ S" q9 @. z4 S# M7 |* |himr 0x80040002 0x22' ~1 V0 b; T% l$ z% y
himr 0x80040003 0x33
! a( w  F. S4 @' E+ ~, f. U/ X% ~himr 0x80040004 0x44
( h# r$ z) V! t* ^3 r4 ]5 Z2 Dhimr 0x80040005 0x554 J- Y6 [. k. R6 u! S5 l6 [% T' y: O$ {
* W7 R: |5 \2 \5 K! i$ \
SN也是类似。. x5 v, U) S) j4 X& W) B) k

& y" y* v) y( s. r0 U现在主要是,谁告诉我们MAC和SN的地址?+ ?& f- B5 \. j' `, ^1 N
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 k8 E) l, ~2 j8 t0 O一直想找到运程修改MAC和SN的办法,苦于无解啊

8 j4 p+ l& m7 }( }0 u9 G0 c2 \源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% n0 x; W( _- h  p* g
& V. w- D- T3 n, Y$ j/ w, X: `修改的代码早有了。到今天不会编译。
: p  t1 l  u! c2 x; `需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 i$ A1 q( q% b9 R, H2 Q
  2. #include <malloc.h>3 k+ \! q( s# n. x& ]
  3. #include <sys/types.h>+ F. I; u, w. C$ h
  4. #include <sys/stat.h>: `: s! h2 m0 U. H9 a
  5. #include <sys/ioctl.h>& H" ?3 y6 I$ Y& `
  6. #include <stdio.h>: M! b, H( t/ f; r/ M: ~
  7. #include <string.h>3 x, _3 c* V6 n0 \9 e7 W+ H2 _8 ]
  8. 7 @1 S6 b* p7 r" |# e
  9. typedef struct {
    / @6 ]7 Y: N% ~4 e9 K
  10.         unsigned int        e2prom_cmd_sub_addr;' Q) \* G6 Z" J' v  Q
  11.         unsigned int        sub_addr_count;
    ( x2 \, ^8 e' [$ ]8 f
  12.         unsigned char*        e2prom_cmd_data;
    - S* p/ f5 |/ h4 c1 J  H
  13.         unsigned int        data_count;! c( j5 N  A9 K! J+ b
  14. } e2prom_s_cmd;9 `% Q7 `! t- ?( q& B7 I, Y( _
  15. 1 T! U, N1 `1 E: t( L" j. `! N
  16. #define E2PROM_CMD_READ 1
    : d9 h, G7 H8 M  ?
  17. #define E2PROM_CMD_WRITE 2
    " V/ y" S' p: {2 M( p8 V- u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ t" w* W$ t' u6 A. V) W" t
  19. ) }  Y4 ?- S' W+ W6 l, ?( x
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  t) l2 t( E+ {
  21. {
    8 ~( {2 s$ J& [" a& v, d
  22.         int fd, ret;6 C  q, n5 a/ A3 Y0 I
  23.         e2prom_s_cmd arg;
      ~  T" R0 u  c) A3 m/ r5 ~
  24.         unsigned char buf[0x18];5 P& \* H: N, T& g+ J

  25. : E0 ~- i+ a& i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 v. _9 D* k' e* z& j8 p
  27.         if (fd  < 0) {( |/ }0 P* H! O) r, i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " J; v3 }+ v' |6 h
  29.                 return -1;
    * w) d  @. V: E& z
  30.         }8 l& Z, p8 P, s$ O1 f8 Y2 u; [
  31.         arg.sub_addr_count      = 2;: c0 x9 [* ]  w$ n6 {2 N0 ^
  32.         arg.data_count          = 0x18;+ s* I' B+ Q" M$ A7 u8 o
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      `2 W6 F' Y' R8 _) L
  34.         arg.e2prom_cmd_data     = buf;3 K. h' j1 @, a8 l) M) V* X2 Q5 `
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ Q5 o" f" s/ @+ j
  36.         if (ret != 0) {& Y  F8 U5 K  S1 c0 Y& D8 l' `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 T% t, r; q$ S
  38.                 return -1;7 a! L0 j. A" e) W- X
  39.         }0 V/ S  W" {$ o: ?  F7 T, T+ y4 e
  40.         memcpy(mac, buf, 6);6 s3 _' S2 Q+ p5 @5 S
  41.         memcpy(stbid, &buf[6], 18);
    9 g& u0 ?* l7 y; a. t) [6 G" S
  42.         stbid[18] = '\0';
    ; c- N( T# T1 a5 m
  43. $ d, v: c* u* h9 \
  44.         return 0;! X. B: g+ D2 M
  45. }
    - y. `- \. |8 G9 `

  46. 6 l* ]) g0 ~/ b* P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 t9 Z  W8 j9 L' O7 n$ P
  48. {
    - @7 i3 h) R- ~' P
  49.         int fd, ret;% J6 t9 T/ o& ~
  50.         e2prom_s_cmd arg;1 I& g3 `' F* C
  51.         unsigned char buf[0x18];  L& C; q% ]" {9 t* ]6 d
  52. , h; P* W; t1 }- z: [
  53.         memcpy(buf, mac, 6);& k, t0 c7 W) |1 L2 d+ B  l( S
  54.         memcpy(&buf[6], stbid, 18);; ]3 `5 P- F8 U! V: M, U( ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & O" V4 g+ o: s. R, |
  56.         if (fd  < 0) {7 r8 P) t) p$ ]; c6 @. G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% n: n% \7 f, y( _0 F
  58.                 return -1;
    8 s7 s- e8 l5 r0 J* \: k
  59.         }
    " X% x; x, B% t2 `9 R
  60.         arg.sub_addr_count      = 2;( Q9 T3 v6 n; ^4 Z+ ~1 ^# u$ u
  61.         arg.data_count          = 0x18;
    6 F6 P8 z& F4 L! \, V
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 [" s6 {, Y) ^1 @# G1 @2 p
  63.         arg.e2prom_cmd_data     = buf;
    / S' {/ H" ]- ?) g& k  }" t# y* g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( F! @9 B) m1 g% d( z0 i% `" y6 B
  65.         if (ret != 0) {
    1 f1 o0 _% l3 D& H# D/ |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , i! @, \5 O2 N. X, x
  67.                 return -1;1 {4 O" f7 I* w) @2 v% t
  68.         }
    0 A. x! O) H% i9 A( F% a8 n( @
  69. + l% d8 J& F4 ]% a- f& J& ?' K
  70.         return 0;& p5 |, l' N: U6 ?2 s* T. t
  71. }% `2 [: p5 s' i( d
  72. + M" P. U8 p5 U/ w' a3 W
  73. int main()! q' ~9 g6 Z' k2 F7 Z# @) g" J
  74. {+ T" Y. }9 L7 t
  75.         char c;- o+ ]4 w8 x$ _8 x3 v
  76.         int i, macs[6];0 {) n7 v: x  V% f5 ~( d- [
  77.         unsigned char mac[6];) m. V; e5 _5 M) l
  78.         unsigned char stbid[256];
    1 E3 V' j/ h9 k/ g/ L5 S
  79. % c; X4 R' R  J7 K+ s* P, e# x5 G6 h5 h/ B
  80.         if (readparam(mac, stbid) < 0)3 \" E5 W! h& n- I3 @* |
  81.                 return 1;2 ]1 h. M$ k# C# c. r
  82. 1 R: ^2 a5 ~8 H% \+ _
  83.         printf("Current parameters: \n");
    + F* v( T- `! ?( F9 o& b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 E, @( t; X  f+ C0 k0 i! S0 P
  85.         printf("  STBID: %s\n", stbid);
    7 U. R9 s8 U: ^4 |
  86.         8 k; t8 b6 @# H5 y8 w* s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; g  C" @+ o% P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* a2 G+ J# R/ s! J+ p3 d
  89.                 printf("Input MAC error\n");' b) n! a( R( {, x% t
  90.                 return 1;+ d7 ~- a7 j6 {
  91.         }
    : l4 l( B7 O$ v' V9 O2 w/ U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 N7 I+ T1 f1 P
  93.         printf("\nPlease input new STBID: ");( }' Y' @! K6 E- ], o) ?# f; f1 ?. \
  94.         scanf("%s", stbid);6 E9 M! |& b3 w+ s0 i- s) t# x3 C
  95.         if (strlen(stbid) != 18) {& G4 I# K8 R& E; e
  96.                 printf("Invalid stbid\n");3 H/ [1 e" [; v1 s
  97.                 return 1;  K7 z8 ~- E) [1 c9 }$ h- l
  98.         }
    0 J: I' U2 }4 U
  99.         printf("\nNew parameters: \n");% i, P( N9 r! P3 L* K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 X+ p( W) R  S
  101.         printf("  STBID: %s\n", stbid);
    ; V9 m# Z; p) i' V9 v3 p: B# Z0 w
  102. " n/ ]$ ]+ E3 _7 o! k9 E
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 R2 `3 D0 B9 o% d6 p
  104.         for (;;) {% h! J  E0 o! C
  105.                 c = getchar();
    & I6 [4 ^5 L$ E6 i
  106.                 if (c == 'y' || c == 'Y')
    , d, v; l! ]6 ]9 g/ [+ J2 G
  107.                         break;
    9 }4 m4 F6 Z4 F+ p
  108.                 if (c == 'n' || c == 'N') {, d3 y% ?! y' l; V; h
  109.                         printf("\nAborted.\n");. [$ k, N5 w+ \, x$ `
  110.                         return 1;
    ; g9 M- }  Y' o
  111.                 }. D0 v/ q6 @2 X4 F: H0 O" C
  112.         }
    ( k9 G7 ~: p! m! q# p# Q" j
  113.         if (writeparam(mac, stbid) == 0)
    - b4 ?" F$ _3 ^5 s2 U" D! S( ~
  114.                 printf("Parameters changed.\n");
    0 W8 L2 v# ^5 u% M# ?0 H: a
  115. 1 T6 B# K7 v: E/ J1 N) K6 z% D8 K
  116.         return 0;
    3 x# [9 _  E0 V. n# Q
  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 # P$ |6 f! j6 j* D; c2 @
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ C! K  M% F$ O: T0 d你用的编译命令行格式是什么?
/ r% {& t5 I2 y5 g$ }# E/ n! _
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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