查看: 16851|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  t9 z0 F7 D/ L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig/ b- e8 Q3 Y+ U. y' d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 D# R" |6 l. Susage: himr <address> <value>. sample: himr 0x80040000 0x0. M, t5 i8 _$ @! o# `# A9 ~6 z! Z
. X8 V( y4 I  r$ Q

8 ]3 K9 m- o2 V. r6 \5 J/ K% [不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) q& R+ T2 t, u9 d+ U) g2 ]5 G) D, E) E% K+ Z3 e, Y& [
补充内容 (2012-3-8 09:42):  O$ y+ S; g; `& o
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 q& I0 Q; q1 e8 o/ }! N- X/ a: k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。) \7 I' j8 |, T/ U2 C

5 n) m% |# R# Q8 u* P7 K) k0 V) I% Nhimr <address> <value>. sample: himr 0x80040000 0x0
. ]% b4 b5 _, y. H* v
/ Y% U4 e/ A2 p# N  C例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! ]! m0 K( s' |& z; i
himr 0x80040000 0x00
# d6 o2 r" O( Q. {! {himr 0x80040001 0x11
5 A6 C) r  H. O, Chimr 0x80040002 0x22
8 ?" m0 J- n% U8 n2 s, O4 qhimr 0x80040003 0x33( v) O& k' D+ ~: a6 @% y! m% V/ N
himr 0x80040004 0x44
. n7 g3 A0 g; j" l8 yhimr 0x80040005 0x55
; o) o/ {8 ?# i3 G, I0 m! C2 ~
' G8 U; Z' A5 o) W6 H( L/ _3 lSN也是类似。' Q4 x" d4 w& j3 c! J
6 C$ z  P& P! v& |/ F& {1 d" B
现在主要是,谁告诉我们MAC和SN的地址?
/ S1 D: k3 K1 z" u  u; e1 w
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ d( I% H6 q% k3 Z! V一直想找到运程修改MAC和SN的办法,苦于无解啊
( G* a  A( Z8 X& L
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 8 _( v. Q# x0 `/ l1 r) R! G
' M; |# ^# M5 l6 {3 u
修改的代码早有了。到今天不会编译。
8 I0 ~9 D; w! j3 X# r0 F' j需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 M( F1 H6 a7 H* p2 }
  2. #include <malloc.h>/ G0 P6 F; D, u' {" n  \
  3. #include <sys/types.h>. }- g% b, y& Y+ ?4 ~1 u' v. p
  4. #include <sys/stat.h>
    ; E  c1 f, A1 |+ W- }& ?: ~# W
  5. #include <sys/ioctl.h>3 [0 _. L! |( W* x3 N7 }6 v4 A# S, y5 \
  6. #include <stdio.h>. u& g/ o  [" v0 Y
  7. #include <string.h># }' ?% Z  B; ^0 J& I/ L+ M4 S- K* [

  8. 7 e! W8 J4 l+ u' {) \  q& f' b
  9. typedef struct {
    ) q/ e+ I7 c* v) ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 r1 {- Z7 v& }
  11.         unsigned int        sub_addr_count;, j/ E  e3 |' }! P$ U* _- Q
  12.         unsigned char*        e2prom_cmd_data;9 S1 |5 W  I) c3 L1 y7 p6 b. S, o
  13.         unsigned int        data_count;
    " Q+ A2 d8 `% S7 |2 R" N
  14. } e2prom_s_cmd;
    $ \. @9 E* A, b: Z+ `
  15. ( E# f! Z- i  K3 [& K
  16. #define E2PROM_CMD_READ 1
    + [, z; [2 g: F6 _$ p2 G$ E# K3 Y
  17. #define E2PROM_CMD_WRITE 2
    $ I' k9 r1 \8 w8 C1 L6 ?9 ~" f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") q; Z% O# z" T4 d

  19. / G% u" G/ r( |  s0 T* k9 Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) v% w# K8 m) a) \" B* i4 ~1 a7 N
  21. {
    ) ^! P7 f' N0 C5 C( c
  22.         int fd, ret;
    / ]% T- p, W7 [9 p2 q( _9 @5 \' \" |
  23.         e2prom_s_cmd arg;
    , T2 ^5 n: T7 r+ Z
  24.         unsigned char buf[0x18];7 ~8 U2 s! x2 ^$ I. m

  25. , U* A" l# c) `% X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : R) i5 t* [/ |3 j0 `* [
  27.         if (fd  < 0) {
    , Q# ^4 n" l8 i0 A% P1 w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 {4 r2 @0 @; F6 o( x
  29.                 return -1;
    " h7 R0 _/ t" K8 e, E- \" F
  30.         }
    3 J; J3 M: B. Y1 ^/ o
  31.         arg.sub_addr_count      = 2;% n  \  b8 c5 Z5 z
  32.         arg.data_count          = 0x18;
    ( D- n: y' p3 n3 b; f
  33.         arg.e2prom_cmd_sub_addr = 0x290;# V" q- ?5 G$ i9 H, U8 v6 @0 R
  34.         arg.e2prom_cmd_data     = buf;
    : D  f1 X% }1 Y2 R0 U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);; z8 m0 j1 r5 I9 |* t  a* e
  36.         if (ret != 0) {
    8 q+ ~9 J& O0 |  s  ]1 `( U4 ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 }% }2 T" S9 K( J( e% H8 f
  38.                 return -1;
    4 t) y2 `) b! [) ^( p9 I
  39.         }
    4 e# [- l. ]# Y
  40.         memcpy(mac, buf, 6);
    + g4 `  ~% o8 p+ X
  41.         memcpy(stbid, &buf[6], 18);1 ]1 D# Z# L! H$ l( @( O
  42.         stbid[18] = '\0';
    6 w! O' v4 S/ j* C8 o: c5 C

  43. ; ^6 ^) ^) S$ a, D" `- E+ o
  44.         return 0;( O, q& e: H2 h
  45. }0 z6 ?2 ~  h' v7 u+ r$ j! l
  46. # ^, C2 Y0 \. r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 D) w# Z: R+ L+ V6 R1 {6 {, g3 Q, S
  48. {1 c! C; v; W! F  O
  49.         int fd, ret;
    - s; u" Z9 `  s: }( y
  50.         e2prom_s_cmd arg;
    3 M) j7 W4 K1 p9 c9 _- Z
  51.         unsigned char buf[0x18];
    2 v6 i0 r9 s0 ]# ^+ m
  52. / Z" |) @$ |; K) l
  53.         memcpy(buf, mac, 6);
    4 n# T% E7 i6 d0 \8 e* R
  54.         memcpy(&buf[6], stbid, 18);  [, O- |) P3 U- J2 ~: i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' M' [% T* c5 y+ N- v. C* ?
  56.         if (fd  < 0) {
    4 }; z: t+ J; R; |- X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& Y8 u; j. t/ H/ i; R
  58.                 return -1;
    " ^$ W# m9 [; w" M
  59.         }- z( C- \& S, g* b7 X; O
  60.         arg.sub_addr_count      = 2;' ^; @6 Q" e& w3 k
  61.         arg.data_count          = 0x18;& B7 P4 f+ n3 b! U% Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & [! f7 S% w$ M" z; k8 e" |/ A, s
  63.         arg.e2prom_cmd_data     = buf;
    " p# F# n  Q4 Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 n+ E# @9 F1 T5 g+ b; ]4 H
  65.         if (ret != 0) {, f# m4 q  M( o( n, ]4 d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 i  H5 [; E$ f7 D/ g$ l/ l- v
  67.                 return -1;/ Y+ Q/ ^2 Q2 ~
  68.         }
    ! C. Q4 ^% G/ A0 a( e5 z
  69. % B3 X+ M- R3 D4 J2 Z: q
  70.         return 0;# v# J+ ]+ }$ D6 l* {) Q
  71. }
    " p3 N8 {/ o+ N
  72. - Z3 h/ O9 W) T9 e
  73. int main()+ Q" f5 X1 c- `9 E( r
  74. {$ h/ t  j+ m) p6 [" O3 K
  75.         char c;
    9 A' K: I! ^4 B  g# I' J. W' q+ U1 k
  76.         int i, macs[6];) f& ~' O9 S( B: l1 |: r
  77.         unsigned char mac[6];8 ]" ^' f5 E, m( N
  78.         unsigned char stbid[256];' }3 }- \, @/ f* l$ y

  79. ! r* S- p# [" c& W3 n, o+ T
  80.         if (readparam(mac, stbid) < 0)$ h% W, |$ ]8 K  D5 f1 p
  81.                 return 1;
    7 s+ _( F! M( x2 n
  82. ' G2 V) Q; u; d; ^4 h
  83.         printf("Current parameters: \n");3 ?! {( N  v# C7 G! y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ z6 P3 i6 k3 y5 ^) |: e& M
  85.         printf("  STBID: %s\n", stbid);/ j; L9 {" i5 I: c. q
  86.         4 ?  R6 E# @, ?5 \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 B' |% O6 m  U8 M2 W: d* p1 m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, Q& F% S3 o5 O' w( i  ~
  89.                 printf("Input MAC error\n");
    0 N$ b( B1 v* n( u, t* \
  90.                 return 1;% l$ B6 a3 I2 f( a
  91.         }% U# j& {# r( n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * W! x! R5 B9 `# A
  93.         printf("\nPlease input new STBID: ");
    ( `# u* d- a4 M9 w. w' e
  94.         scanf("%s", stbid);
    ! S. v6 ~, p- t! X- Q2 J: [
  95.         if (strlen(stbid) != 18) {% c1 t$ a) {* q; i0 D
  96.                 printf("Invalid stbid\n");: w" j9 x7 E8 ]) O$ A
  97.                 return 1;
    ' m, t! G' K" d& Z
  98.         }* A+ K8 ?3 e# v* K
  99.         printf("\nNew parameters: \n");+ I' V, N* r6 Q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" G! L% Z, j9 X* L1 U
  101.         printf("  STBID: %s\n", stbid);
    0 G7 \* _% h3 l7 T7 G

  102. ' J  {. F3 ^5 z7 f/ S+ k# G
  103.         printf("\nDo you want to change paramemters? (y/N) ");- b# y6 \- u' M1 P, ?8 j/ }
  104.         for (;;) {7 d/ S: h* [, a" r8 L- d, {, N5 R/ f
  105.                 c = getchar();6 t% G* ]( X3 ]  L  r( \% m
  106.                 if (c == 'y' || c == 'Y')
    , G1 `- W  `' s, d1 F' d
  107.                         break;- P: f7 J3 B- J; _( ^% L0 q; U6 A
  108.                 if (c == 'n' || c == 'N') {
    9 o+ O/ Y/ {' U+ ]! ]. o# v
  109.                         printf("\nAborted.\n");# i) A/ E, S! f+ M( x2 L! |
  110.                         return 1;$ H7 Y6 p  _. }' j# [9 _8 C
  111.                 }
    2 }# L* t- U& O6 N' i+ ?( X
  112.         }# s) Q7 z/ P$ d1 K
  113.         if (writeparam(mac, stbid) == 0) : i: G" e9 L: d) t9 k. s8 V
  114.                 printf("Parameters changed.\n");
    3 a: Q7 x" u7 V1 @& B' I4 a' e
  115. / p1 _+ `  o$ Q) N
  116.         return 0;
    2 {9 s+ J9 i+ U8 Y# z8 D" |
  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
9 p  e1 H; L  q# U' P# d在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- f/ m* K- v/ p+ r* l4 M你用的编译命令行格式是什么?' G0 ?2 O- S, 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客服返回顶部