查看: 17024|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* V" G( N6 I5 Y: W. x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) k4 T& C! H8 c
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 j2 A5 ?( t6 {
usage: himr <address> <value>. sample: himr 0x80040000 0x0. n! w: i/ k4 q' H" ]. I$ d

1 P+ s& U" q4 \% Y4 A; h9 y8 Q. w6 L/ d( r
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 c1 h/ s5 v3 v. \6 c$ t9 q& k
" V0 ?5 W5 z" n: ]( m$ W
补充内容 (2012-3-8 09:42):( J7 l5 V# U+ @7 _$ V. D' M' L
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, g1 g  ^' C/ H+ n1 T- r, W这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。8 ^/ Z. W6 w% ?4 _' m, i
2 G- X9 S3 S8 U# R- g% c
himr <address> <value>. sample: himr 0x80040000 0x0( W) M1 a8 z8 Q; n

  \8 ~4 e9 P6 Y+ Q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; `( _3 L& _9 J' D' G
himr 0x80040000 0x00
) p+ G- t2 R" h# t/ N6 Chimr 0x80040001 0x11
6 a' y! X, |. M9 ~! m; [himr 0x80040002 0x227 A) e7 E8 d/ U
himr 0x80040003 0x33. D" E# @* |% o
himr 0x80040004 0x44) `  f# K2 |3 Y6 k* m: O$ d
himr 0x80040005 0x55
! e* \4 O3 l$ Z' e& {; U" l
6 X) W, g( p' h" cSN也是类似。
8 m' O: _4 l  X" u0 W$ n8 E( q8 b9 T% M& X+ K  K6 j4 g! ?* Z
现在主要是,谁告诉我们MAC和SN的地址?5 U2 z  F+ Z% U% l
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 w) ?4 f: U: A0 u3 Z
一直想找到运程修改MAC和SN的办法,苦于无解啊
( O+ u2 v3 k8 N# d7 v
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 O" U+ f0 b6 z" B" j8 e0 B6 B

; q/ W# ~- d# p' N8 d/ N修改的代码早有了。到今天不会编译。
/ O# c2 z- d; J# I# u( I4 P需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; f6 n3 K: S; G
  2. #include <malloc.h>
    ; d! j" d: e  @2 P
  3. #include <sys/types.h>, |2 X9 h# {: i7 e  R( e0 ]: j
  4. #include <sys/stat.h>
    0 ~" A6 C: T" c/ P0 u- f  E
  5. #include <sys/ioctl.h>4 k4 c' {1 R: S3 C6 y- ~
  6. #include <stdio.h>
    2 e+ [' g- |7 I5 W  c
  7. #include <string.h>
    ! V% O! h2 F. ~9 o# E) F7 Q: \8 O

  8. 8 E& z$ U6 W* R% }: c9 ?
  9. typedef struct {
    8 B/ s  X$ F8 z6 p5 ]3 ?
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 L4 C) r: u, c3 T# ?( O; G
  11.         unsigned int        sub_addr_count;" p# O, s! ~5 W8 q4 \
  12.         unsigned char*        e2prom_cmd_data;
    9 G1 U4 m2 p9 Q
  13.         unsigned int        data_count;# m+ t1 e& `6 w3 ?8 z) m! |
  14. } e2prom_s_cmd;
    $ U# g, E. l' {( I
  15. # e& V: x0 m5 N
  16. #define E2PROM_CMD_READ 1
    ! ?" P. l: q+ L. o2 ?5 M! d
  17. #define E2PROM_CMD_WRITE 2
    ) p, @. r9 F( m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ) u- t" M! g6 T/ Y+ t

  19. % X( c+ r7 Z- a/ ]9 O4 f3 @- ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " h1 z1 O, `5 E; y& X* ~
  21. {
    9 ]4 `! v! l8 }$ M9 c1 F
  22.         int fd, ret;- }7 a6 j6 B6 }
  23.         e2prom_s_cmd arg;
    / ~3 E5 d$ e8 \/ g
  24.         unsigned char buf[0x18];6 I+ J: l0 e6 g8 F+ ~
  25. & S! ]  Q& o! Y- S9 `  d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( p* I8 I, T" V! F% K" N
  27.         if (fd  < 0) {
    ; Y2 W! Q9 [4 t5 d$ U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : \8 l; V; {) S) k% W4 |% b
  29.                 return -1;
    " u. X0 j- O/ I* @7 `
  30.         }' M8 T, I0 {, a+ T
  31.         arg.sub_addr_count      = 2;- c; y4 r2 l; p% C
  32.         arg.data_count          = 0x18;& u5 G; d: C& d+ Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;, q; [, T. |& }: \+ |
  34.         arg.e2prom_cmd_data     = buf;
    8 `$ y6 V( @; K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    4 C9 I- E/ l7 x. m1 P/ E3 s
  36.         if (ret != 0) {7 _. \1 ~5 Z& x7 d1 q9 g. C/ V
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 T% D1 a5 i* ?+ M
  38.                 return -1;( x0 `3 D& K" k: T1 |
  39.         }9 {' J8 {9 A! j4 t( v9 N3 N" v$ Y
  40.         memcpy(mac, buf, 6);
    8 j! E& S9 N2 v: {6 e' B: o5 s
  41.         memcpy(stbid, &buf[6], 18);& U: Y3 B8 G8 y) j) i! R! l
  42.         stbid[18] = '\0';5 ]5 G5 C" g. U1 \  I; ^

  43. * S% O$ o; ^$ U" |8 B! w0 A
  44.         return 0;+ Y% B# r1 Q3 N* A% `: s
  45. }0 k# t: \/ @# L* Z5 G! P& g& O

  46. ! a& z' v# L) t+ o  P$ z) s' G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' @+ _" Y. R0 b) R6 ^0 X
  48. {
    ; h2 ?$ y9 Q( }
  49.         int fd, ret;! R3 a7 t# [8 E! Y
  50.         e2prom_s_cmd arg;
    " |" D0 n/ F3 _) I4 Z* S
  51.         unsigned char buf[0x18];% z# i& E. q+ _/ ]& x
  52. 1 [! n! X( D* b" L  m2 |, S: @
  53.         memcpy(buf, mac, 6);' l( L! d1 x! N: i$ W$ f  l
  54.         memcpy(&buf[6], stbid, 18);
    % Z- l0 f" x* j& H+ J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; o. \7 k& a: O' a
  56.         if (fd  < 0) {1 i( W$ A9 N% L
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; H  S$ v4 ]* f6 o! o* J
  58.                 return -1;
    ) L. g4 o' y, q1 z& D. z
  59.         }
    + u) C2 q" {0 b- A! Z/ w% q  U' u
  60.         arg.sub_addr_count      = 2;! ]& [' ~% m8 @: L
  61.         arg.data_count          = 0x18;
    8 S. b) M( Z7 u
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' w4 z  ?  X! K+ o6 _! S
  63.         arg.e2prom_cmd_data     = buf;
    ( J6 Q6 @) X6 A8 U" {" U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % W7 [' {! k5 v( Z7 \( h, O* @! M
  65.         if (ret != 0) {( D* L" [8 k* r1 G7 W3 ?$ r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 j8 z& h# k' g
  67.                 return -1;" ?0 d4 G, ]! q9 |/ M3 U4 |
  68.         }
    6 g. L3 o* I. d# u  O4 H6 e
  69. " }  \7 P# J0 _, B& |
  70.         return 0;0 C; e; \1 z! F) z1 S1 M: |9 w; I
  71. }
    ) |4 x8 `/ _3 U, K7 e+ i9 j. g: ~, ?3 ]
  72. % v/ \/ i6 X/ w1 [3 Q
  73. int main()
    * ^3 r! [3 h& u
  74. {
    $ \& P2 W- g5 ]+ z2 t' ]$ l
  75.         char c;, r6 W* X1 k$ V7 T2 t; u9 q
  76.         int i, macs[6];) ~' g9 U: ~4 a9 U; f1 x- ?
  77.         unsigned char mac[6];
    7 L4 }! d3 c8 K9 h
  78.         unsigned char stbid[256];
    - N7 Y; V4 o+ j- N: K% G

  79. 7 G+ {) b3 t+ |; Q% X( X
  80.         if (readparam(mac, stbid) < 0)3 F; k  p) g4 [0 ]6 w; O; M
  81.                 return 1;" w: s- y4 U) z% h) S: b. B

  82. 7 k& T$ g- v1 T0 P. e: u* n) Y
  83.         printf("Current parameters: \n");
    . B- j/ V4 D7 I
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 N, z2 E% P" \
  85.         printf("  STBID: %s\n", stbid);( Y/ }# i9 T  W: @# r. f6 M
  86.         0 N- s3 \5 y2 o2 k+ t+ p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 D6 S6 W( i# P1 b( T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 V0 c; |1 t  Q% A8 c
  89.                 printf("Input MAC error\n");& y. d9 L, A& J; j
  90.                 return 1;6 {; |  `9 O+ E% r
  91.         }7 x# a- q, w5 q0 Q. S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ s+ V! @- Q" u, s1 v9 U5 _
  93.         printf("\nPlease input new STBID: ");
    ! j3 w% m6 K+ \- h7 v' t* H
  94.         scanf("%s", stbid);
      s% L7 W; ?# K- p. P
  95.         if (strlen(stbid) != 18) {
    6 T, ?: s9 t" k: M
  96.                 printf("Invalid stbid\n");- H" ]; f! U3 v
  97.                 return 1;9 Q/ r6 W8 ^+ b- J! _" _" Y
  98.         }
    $ e/ c$ {! z* T& U5 P: ^7 @0 X$ `: `3 M
  99.         printf("\nNew parameters: \n");: c* [* G% P5 x7 V. Z4 I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - k6 p  n* R* b' R6 o
  101.         printf("  STBID: %s\n", stbid);9 c& b! `% y* Y
  102. # j7 {( y9 `* c1 M8 ?5 e1 R
  103.         printf("\nDo you want to change paramemters? (y/N) ");' x. G- i' V! z) j& R2 I" ^# R
  104.         for (;;) {% f9 K3 v* L: t3 q. ^
  105.                 c = getchar();
    1 v# X) k8 A% C" _& }6 |! y6 t
  106.                 if (c == 'y' || c == 'Y')
    * Y* j" x" i9 c% f
  107.                         break;
    % v1 X* Y) S0 ?- K7 o. N" b0 o
  108.                 if (c == 'n' || c == 'N') {3 j) @4 m4 N! [! ]) H! J
  109.                         printf("\nAborted.\n");
    : e/ s! L# V4 A' w- v1 z& g
  110.                         return 1;
      l. {5 R* F1 Q+ |7 @, [
  111.                 }% I! H. @* F# W+ U$ M  m$ z% o! H
  112.         }4 O9 g$ O* t% ~
  113.         if (writeparam(mac, stbid) == 0) 1 x" _, L$ O" Q
  114.                 printf("Parameters changed.\n");
    2 Z2 l% {  V3 z- s/ V# a
  115. . W- }; p2 ]1 Y. J2 h4 K
  116.         return 0;8 K/ a8 P( X/ C  K7 n
  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+ U) a9 H: f6 X3 X在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
3 v, z, J7 Y. d% x4 {
你用的编译命令行格式是什么?! f0 L  B1 l! j
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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