查看: 16463|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / x; I+ \3 ]4 n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; _7 s# s, P  {& |6 o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
* T* @: _0 J  W3 ?- ~" Y2 lusage: himr <address> <value>. sample: himr 0x80040000 0x0
* X; R, @3 J3 W& o& x
3 ~3 H7 B: J2 w4 L" [' y% c8 |9 D5 z1 f1 T3 }: n) Z5 R; H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! A( P/ u7 H' B) C+ F+ n' Q5 k1 W
1 i6 x1 i& F; ]6 l1 }) q
补充内容 (2012-3-8 09:42):+ F+ m3 k, p/ E* b5 C3 S- H
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; Z! u3 H1 A2 n& }1 q5 s3 B
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& L1 C/ G# X( t7 f! B5 U8 r% L/ N6 Q

4 L5 U: `2 b! g: t, |0 B$ m* ~himr <address> <value>. sample: himr 0x80040000 0x0
5 f7 s* A' X) f- j+ O% s9 Z7 A% g0 ~( f: Z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% @1 r& ~  S% J9 W! thimr 0x80040000 0x00
9 _0 U0 T+ c: G5 o- n/ Nhimr 0x80040001 0x118 P6 y/ k2 E" m" |3 D
himr 0x80040002 0x22: Z" H, b+ ^6 _; I: }3 F
himr 0x80040003 0x33
5 P7 ]# {3 M" P' t( Hhimr 0x80040004 0x44' u( h" e2 T* H( i8 Z$ r
himr 0x80040005 0x552 G( F& m' V! m0 M3 i4 M3 p. X1 A7 w

9 I8 Y8 P  U$ y$ u$ ^SN也是类似。2 K. E+ W" b. a2 z$ _! t8 ~6 C

2 U' b& G' Z* X6 R: X( }4 a' k4 k2 |# \现在主要是,谁告诉我们MAC和SN的地址?5 x8 h. W2 l( s1 T
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + t% o$ T, w$ ~  [8 P
一直想找到运程修改MAC和SN的办法,苦于无解啊

5 g7 k# |$ p: n源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 U2 ~/ g- R" |0 v+ ~- @  o4 R$ C2 S! m+ _, x5 i% A! V# s
修改的代码早有了。到今天不会编译。
1 `# Y2 u1 u7 c( W5 T* }6 p需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ E, s7 `- x% ?) k
  2. #include <malloc.h>
    / K; H: t  s. m3 p
  3. #include <sys/types.h>  g# l9 o" u. o: ?% G, `+ `& [5 l( K
  4. #include <sys/stat.h>7 r( o: Y5 r  p4 v: S$ W
  5. #include <sys/ioctl.h>) I2 B' Q. H3 D6 ~
  6. #include <stdio.h># y! R4 J0 W" T2 L
  7. #include <string.h>4 u( v; n1 E4 K

  8. / {/ T9 N6 C* R% {# m& ]0 x
  9. typedef struct {
    7 o0 U) w& [( W! L, I. w% a& A' O
  10.         unsigned int        e2prom_cmd_sub_addr;8 A& Y' L% T( t' m1 D& U2 F: r/ `' J
  11.         unsigned int        sub_addr_count;4 V. |. H8 s1 E6 _1 A0 f
  12.         unsigned char*        e2prom_cmd_data;
    ' {  {) y. x& o) A
  13.         unsigned int        data_count;
    % c  p5 m& \; H) u
  14. } e2prom_s_cmd;% c9 Y2 i5 T  H/ V8 r2 P8 ?" l
  15. - z1 C: ]' ?  ^/ w- v9 @* q1 E
  16. #define E2PROM_CMD_READ 1
    * X. y3 M' W8 r
  17. #define E2PROM_CMD_WRITE 2% }" P& K8 F" h8 T) ^. q( o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 n' c" g7 y8 G9 H- g% E& E& `

  19. * U0 C# N" @% U' c& g+ H0 V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 q& C2 C. M9 g5 W* V
  21. {
      \* K1 y9 U# r$ ^! }3 G# O4 f" t
  22.         int fd, ret;
    & u& I+ |7 b9 O
  23.         e2prom_s_cmd arg;! M# y! N; X& ^- H; Z. \
  24.         unsigned char buf[0x18];# [* r9 U6 R) |

  25. 1 p* E1 ^6 N1 l( G( h3 J: [4 u% b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- e/ x; T2 o3 A+ X3 I- {8 Y) W
  27.         if (fd  < 0) {
    . @( c& H: X: H! t2 B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 V+ r* f" y& `# K5 _3 f
  29.                 return -1;, d  |0 }. s: T2 o6 S, S
  30.         }
    8 W( T" u9 S7 P
  31.         arg.sub_addr_count      = 2;" y7 O  D3 w, R0 a
  32.         arg.data_count          = 0x18;
    ) u5 ]4 |$ D$ ~( E
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' j( _3 M  y/ M$ h" }+ f# I
  34.         arg.e2prom_cmd_data     = buf;
    ( H+ M' L* a1 X$ Y, V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / T3 a7 a0 a  H
  36.         if (ret != 0) {
    5 G+ [( v+ J7 A
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ c  b& X+ t& O+ j+ R: o
  38.                 return -1;
    ! n% C! ~8 j2 @2 O! j, T6 S
  39.         }
    , x5 |. q4 H. C9 w
  40.         memcpy(mac, buf, 6);8 a) t, _/ t7 w4 l: i' I/ A
  41.         memcpy(stbid, &buf[6], 18);# H6 G; s3 @; a
  42.         stbid[18] = '\0';
    7 x! l, E0 W1 c$ }1 ?3 z8 X3 A
  43. 2 Z( Q* M; [: t& m( H; V. j
  44.         return 0;+ o, w) v( i/ H. ?* t- I
  45. }( f, h8 {, P1 u" G+ X& n
  46. 6 V% U3 Q6 b7 t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 _4 C3 q  i# E: O+ R! w8 Y( |
  48. {
    : D9 h/ n% t) l3 J9 P
  49.         int fd, ret;  G* n+ Y& q1 T  i9 M, |# V4 j
  50.         e2prom_s_cmd arg;8 j: ]( i+ ?7 @/ I4 _1 O# v$ y( G
  51.         unsigned char buf[0x18];
    # R+ B# l% V5 d5 D+ G

  52. / n; a) h6 m% a7 F0 r. @) Z
  53.         memcpy(buf, mac, 6);5 I- z/ H+ u; \0 y
  54.         memcpy(&buf[6], stbid, 18);
    0 e2 b+ x4 z2 i/ N3 ]
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: b/ H- v( U0 z7 P/ k
  56.         if (fd  < 0) {& T/ U+ I5 |$ X5 S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 b; Y! e! {) Y/ \2 A
  58.                 return -1;
    1 t- ?# O; |; I
  59.         }( f& k( [- l5 @: q0 m2 U/ \
  60.         arg.sub_addr_count      = 2;+ q8 Y5 q# l7 s6 c
  61.         arg.data_count          = 0x18;! b, v" J$ n/ ]+ d+ G/ |. k
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 i2 |& [/ E& p
  63.         arg.e2prom_cmd_data     = buf;- F% o6 a; ^7 d& P3 r# s) O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ c. ^# D6 B. v6 L
  65.         if (ret != 0) {
    + H6 P- W3 e, c# d2 f6 t. ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ a: m  z+ ^/ F
  67.                 return -1;
    * y, A) [0 c9 F; G/ k5 h0 ]% a4 ]
  68.         }
    ! a) l. k+ Y1 |: r! G" [2 U/ |

  69. . K8 J, z& ]$ {; h+ A( m
  70.         return 0;. ^5 r: i- P9 z
  71. }/ E0 U6 x! ^5 S& k+ A
  72. + b5 C( a8 {0 ^
  73. int main()7 w* _0 x& e( k- i
  74. {- O) I; ^5 w: j" S. F2 n: R
  75.         char c;
    6 c( b' a2 R* |( U; ^
  76.         int i, macs[6];
    3 E8 H; I# `: i9 s$ ?8 e
  77.         unsigned char mac[6];  P* s) `% m) o' g# s
  78.         unsigned char stbid[256];) Q% n! c' q2 ~8 U% o" C, ]

  79. # ?+ g* D9 |7 S$ R
  80.         if (readparam(mac, stbid) < 0)
    5 q- \- E0 P0 d. C" O
  81.                 return 1;' W; m: A" y5 d% L7 c( T% O

  82. 0 q: f8 B- F/ {, Y5 a
  83.         printf("Current parameters: \n");
    + ]/ |0 J4 S3 P8 f8 i
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ x' w; e% ~$ `  z* r* y
  85.         printf("  STBID: %s\n", stbid);
    + ^3 b8 N% \: `* A, X( W
  86.         % ^7 Q. i2 [5 r6 J! }0 f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 O  ?9 m- O6 d" V9 c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ M5 F2 \7 P8 ~5 E( L1 q
  89.                 printf("Input MAC error\n");
    ' n  W2 z$ o, k( U( Z, Z
  90.                 return 1;
    7 w1 x7 _7 Y, b. {+ m! {8 H+ q  z
  91.         }
    + o# G$ |0 z7 ]! m2 i( c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    : _. F& R# `6 \2 R
  93.         printf("\nPlease input new STBID: ");+ b, L- J7 _5 Z0 N( h* x
  94.         scanf("%s", stbid);
    6 G" s2 Q/ u5 |$ ]( K: C
  95.         if (strlen(stbid) != 18) {: s# W. y1 C( G( X, q; W
  96.                 printf("Invalid stbid\n");4 ~1 k! D8 ^1 M0 c* G5 }
  97.                 return 1;/ v6 p7 h7 b/ H4 s
  98.         }2 p4 l6 K' |; ?8 \
  99.         printf("\nNew parameters: \n");
    " z& G& m) C( Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ c: u8 f" e4 E
  101.         printf("  STBID: %s\n", stbid);$ U: a/ H% p% D8 v+ w$ i4 P

  102. ; z0 F# y) k, W, n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * ^! G  T/ V5 z6 t' t4 V% W3 N( G
  104.         for (;;) {
    & R4 b6 X/ A8 c2 ?) W; N
  105.                 c = getchar();
    . ?) E/ h* H# Z5 r7 f2 e$ z/ S
  106.                 if (c == 'y' || c == 'Y')9 ?# @2 n8 T$ o3 O) K" P+ p; H
  107.                         break;$ V4 n% K0 Q* `" Q' T8 m! B
  108.                 if (c == 'n' || c == 'N') {2 Y- z+ J; |$ e, T/ T: x% W. E
  109.                         printf("\nAborted.\n");
    % `) d% O4 X* ^( \2 R" w) v
  110.                         return 1;
    ; M4 b) O- H( k4 `6 `
  111.                 }
    " Y, b& p0 Z, g9 A3 ]5 s3 v) v
  112.         }
    + B) b; |1 B' l# A3 t2 y
  113.         if (writeparam(mac, stbid) == 0) ( p) d  A' i/ e8 O2 a  Y
  114.                 printf("Parameters changed.\n");6 K* H) x5 B  j

  115. ! N: [+ Y9 B' P; }5 v: H: L
  116.         return 0;
    " L  v& ^7 T  B
  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 1 u( E. V$ C- `( _
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# K/ \4 J3 K, K, ~" s4 S$ L) S你用的编译命令行格式是什么?# d1 i0 y# p0 i7 a
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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