查看: 16843|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ s( x- k2 [7 w8 R( E) p4 }/ I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) H* ^! o. q9 g, f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: j1 }* ?, g, M
usage: himr <address> <value>. sample: himr 0x80040000 0x0
: u: x0 r: o8 U, q  Q9 M5 ^( h: U$ f" ~5 `
3 ]' B) ]& M( I5 u. U& ]/ C
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  e/ K  X" D$ N% b% N& C2 q1 x
" ^1 s6 T" N5 w4 b7 g补充内容 (2012-3-8 09:42):
2 Q; P. F4 W( r9 ]0 hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( P9 m) \6 m$ T7 t
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
5 k1 P' N* |9 I# K. f
: i4 y+ }7 A: S7 |+ C5 J* qhimr <address> <value>. sample: himr 0x80040000 0x0
! H+ \5 q* J+ z* Q: D: z7 g( b9 O+ A5 T* s4 L* ]" z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 \8 C, j8 y( |/ J, s% O
himr 0x80040000 0x00! }0 _4 G7 w* j
himr 0x80040001 0x11
6 G! F7 B3 a0 ~( Jhimr 0x80040002 0x22: i, D6 D0 [# w, x+ j! W0 n0 [
himr 0x80040003 0x33
' N8 ~" ?' r: |/ G) t/ xhimr 0x80040004 0x44
/ {% j( m+ P% M0 U; ?himr 0x80040005 0x555 M8 ?0 c: G$ z: ^- L' g
  x# z8 g" e; x, X' h* Y, o. R
SN也是类似。- e' p5 r5 u, N) ^& M8 o1 Y

, J! o* l/ t7 ?现在主要是,谁告诉我们MAC和SN的地址?1 W7 j  A" n5 s6 H! l
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. w& k4 x% c, v2 Q0 \一直想找到运程修改MAC和SN的办法,苦于无解啊

+ f" S! F5 i8 _; U源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) Z5 @+ `: i+ C

: j0 V# M! q: w0 n修改的代码早有了。到今天不会编译。
. K3 l4 _: k$ l' l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ v+ x2 d; f2 e3 c4 F2 |: d  b$ o
  2. #include <malloc.h>- ]% r1 S$ h3 O$ G
  3. #include <sys/types.h>
    8 _) ~! i6 z$ Q- `) ?/ }
  4. #include <sys/stat.h>- C& t/ P6 G3 Y# m3 }
  5. #include <sys/ioctl.h>& i# A1 [5 h: S
  6. #include <stdio.h>
    - n) K! l1 l  {( N7 s* O3 |
  7. #include <string.h>% k, L  |" N8 n5 u% {5 O# t

  8. - t" L' l( ?$ A* [; l, U, S
  9. typedef struct {- U8 ?9 f& C( f' u% f5 f
  10.         unsigned int        e2prom_cmd_sub_addr;6 z3 y, f' `0 c6 W  P
  11.         unsigned int        sub_addr_count;
    " `: R1 ~6 |) |3 R: A0 s
  12.         unsigned char*        e2prom_cmd_data;
    , I; h$ ]% k7 N3 h
  13.         unsigned int        data_count;: j7 N! T, S; [) F7 d2 ~1 O2 a, t
  14. } e2prom_s_cmd;& u" l* b& O# Q( g$ o' v' \
  15. . T9 J9 F0 Z( S' s% V! n
  16. #define E2PROM_CMD_READ 1
    / y, Y  w; s8 T
  17. #define E2PROM_CMD_WRITE 2" ?5 g2 {+ e' i  a8 n& \3 {3 W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  H  I% G; j' `
  19. 6 Z/ O3 O0 Z9 S
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % m. ?. F2 ?. y/ `
  21. {5 ]( C% z& f, P+ q- d3 ~
  22.         int fd, ret;+ o+ h- W+ |2 d! s
  23.         e2prom_s_cmd arg;
    " m! V6 m- F% k' Q: q  l8 {
  24.         unsigned char buf[0x18];
    - X" v  S6 d' B- @; }! u5 f
  25. 1 m0 p  d* g7 W; \4 U! F% R* ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 b% @) G3 K5 S( j7 o
  27.         if (fd  < 0) {. P% [8 z8 [$ k. c1 j. D: W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, e* A' o. c2 z- U; [; |0 `+ O& R, D
  29.                 return -1;
    . W& O+ {' g6 x; L3 m# A
  30.         }
    4 o9 g+ T- v2 B% |- Q# d
  31.         arg.sub_addr_count      = 2;
    9 o  ~0 }; \% I! {( j6 S0 n( |
  32.         arg.data_count          = 0x18;
    * c8 g) i4 i- P. v1 \2 e0 f
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % U, V- I5 L9 D# V
  34.         arg.e2prom_cmd_data     = buf;) R6 N' s4 ^( ]; [$ ?/ e/ }7 M; M" @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 i) ]9 E& o) B* Q3 v4 V' u2 e
  36.         if (ret != 0) {8 O6 ]2 a0 ^+ |- F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 j) [' B7 c8 L
  38.                 return -1;' p6 R  `  a) M. B
  39.         }& Q* f' K$ s0 W5 q/ R6 I
  40.         memcpy(mac, buf, 6);9 a9 G: _2 @  K$ T
  41.         memcpy(stbid, &buf[6], 18);
    3 M$ m* @5 ]# i8 I
  42.         stbid[18] = '\0';7 U# X) c3 Y3 i; i
  43. + W1 h2 g) J: z: N3 X
  44.         return 0;: o: u$ a. C8 l
  45. }
    0 Q8 ]$ Q1 ~9 @9 r7 r% o% h1 W* f
  46. 2 \" J0 `- j, y8 s* S% Y9 u$ P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 b$ J8 i: @) R2 D& }9 W$ Z
  48. {8 M. N2 k0 p+ y
  49.         int fd, ret;1 @' a/ L; v- I% p
  50.         e2prom_s_cmd arg;7 l7 h. X* W3 c  h% }# Q
  51.         unsigned char buf[0x18];2 k: h% b/ z/ v; _5 D7 C! Z
  52. / G# i; D4 U8 j! L8 c! Q) G/ I5 `
  53.         memcpy(buf, mac, 6);  Q9 L1 u/ ?( k! H+ p& d
  54.         memcpy(&buf[6], stbid, 18);1 H2 H" g! d" D. E9 V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( A# K6 T, L8 m9 {2 q) G3 l
  56.         if (fd  < 0) {* @4 G3 I: o! d& Y  ?5 {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ S* c: H8 w; F+ o' X
  58.                 return -1;
    9 J! W7 ?2 I7 c' ~
  59.         }
    - V6 |' Z4 x+ K' k) m5 F) e
  60.         arg.sub_addr_count      = 2;" e# ?5 B# q# u: D& U% |  L5 n3 o
  61.         arg.data_count          = 0x18;
    4 O) ~/ G! d; u" s+ z; F! w
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 Q: h0 l3 n. k- R1 S9 }* M
  63.         arg.e2prom_cmd_data     = buf;
    3 F0 x) W# F! U6 I5 M3 h6 ?* J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , e% _4 y) D9 w6 S/ _( W
  65.         if (ret != 0) {8 L5 }* n" c0 I7 C% Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . C0 z2 K& i, Q. Z& G# |
  67.                 return -1;9 l; p) P6 P: j6 `' o% L
  68.         }6 [) T6 L/ U% I3 k  q7 Z* X
  69. 9 Y1 z' I; S% L% q. _, C0 h8 a
  70.         return 0;6 ?1 A5 [( J9 G; g2 s+ Z5 J& T7 ?
  71. }% N& u$ j2 V* C" Q6 z: S- C

  72. # R4 H* A0 ^9 w- d9 O
  73. int main(), v* p; F8 W' O! y! t$ l# @1 z
  74. {. v4 U) v* s/ ~8 }" d
  75.         char c;" Z' q5 ?; A  G8 Q# \) x& a
  76.         int i, macs[6];  c' L7 U& P% `8 s# q. x
  77.         unsigned char mac[6];3 {2 |- S3 P' f$ }" j
  78.         unsigned char stbid[256];% I3 U! `) Y$ y

  79. 5 h9 U2 G8 O# }6 v7 X
  80.         if (readparam(mac, stbid) < 0)
    7 _# _0 ~8 O2 }9 w, E
  81.                 return 1;
    0 l' E/ l% t! ~8 `7 y- b

  82. - k- Q) c6 \1 n4 p: s& ]3 d
  83.         printf("Current parameters: \n");
    $ K' u( ?7 j8 p7 a5 J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% g: q/ X1 S8 X- J% _
  85.         printf("  STBID: %s\n", stbid);
    7 ]8 |6 C" N7 z. Q) j6 a
  86.        
    $ }5 f4 o$ V4 f0 ?9 z: l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, x5 |9 I0 b6 @% \% T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 _# f2 d) Y: X/ K* L6 m; D
  89.                 printf("Input MAC error\n");$ r6 V1 \+ t3 G+ R! T4 \2 T5 ?& q$ w
  90.                 return 1;
    6 M9 P7 y( I3 \- s- u# G
  91.         }4 O9 ~4 p, X/ k- e, Q  w
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 n9 A8 Z" E% D  w- ^
  93.         printf("\nPlease input new STBID: ");( }) _! o" U" x! W- M/ r4 B5 T
  94.         scanf("%s", stbid);
    6 s, l3 M7 F" z9 t
  95.         if (strlen(stbid) != 18) {4 X2 J; h' }1 d$ r% Y
  96.                 printf("Invalid stbid\n");0 Y. ^) W2 z- N2 W* o9 Y5 Z
  97.                 return 1;$ V9 j) g" s6 c3 ~
  98.         }
    : d. H6 O( n& M$ }; @* o
  99.         printf("\nNew parameters: \n");
    + y% c6 L& \9 P7 b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 M, u+ H1 G) K
  101.         printf("  STBID: %s\n", stbid);
    9 r- W+ }' |2 F3 g" p! W7 E
  102. ) k* e" v+ W4 C8 l
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 Y5 f8 c6 k* c) T; M! ^
  104.         for (;;) {& `* H, {# S3 }* w5 N% P
  105.                 c = getchar();3 ]8 E1 e) Q: M
  106.                 if (c == 'y' || c == 'Y')
    * k4 ~9 l3 r. B" o
  107.                         break;
    9 |# Y& c; G% ?! {9 Y& ?* ~
  108.                 if (c == 'n' || c == 'N') {
    6 d* d/ ~; l: E2 ]; G; E# V
  109.                         printf("\nAborted.\n");
    * n0 ^" F/ q- u+ \  I+ K2 A
  110.                         return 1;! j; G% k& H5 Y! a/ N
  111.                 }
    9 Z' |: S4 r( ]4 t. K+ L! E
  112.         }4 R  ~& G2 L( A% T4 U/ g
  113.         if (writeparam(mac, stbid) == 0)
    ; L( v) `  p) P1 W
  114.                 printf("Parameters changed.\n");
    . @) v' v1 h2 v8 D
  115. 5 O& y8 a+ B7 e% V9 T! K
  116.         return 0;
    - W4 D' s6 y0 \  E! p
  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
# C3 I# ~1 o3 {1 v% R, O在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ j( Y  R8 Z7 `( t2 ~2 Q3 `5 s$ U( Y$ c# z你用的编译命令行格式是什么?1 r) c2 h$ ?( G8 p$ l
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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