查看: 16929|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) ^5 F# b% Q1 m5 y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) B9 M" ~; E! S3 r* g4 N- Y5 n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 t+ H. K8 C+ a: u5 v& [: p
usage: himr <address> <value>. sample: himr 0x80040000 0x00 K# t- r2 C$ T9 _

. _4 O9 M5 J! `& I% O
, ]6 v/ D) H& A$ l& X不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" X/ M8 }* U8 j1 v' B! P( \) x8 N

0 e5 a) g9 P2 z4 d/ V  d补充内容 (2012-3-8 09:42):. Q% y* _: A$ i2 v$ B
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% F4 N6 f. V9 j4 o
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
7 p3 Q# c/ r, ^: Y  j9 a# F, G: G1 g% x, V7 o3 ~
himr <address> <value>. sample: himr 0x80040000 0x0
, W( |) [1 Q/ D. m, n* U/ t" m& @/ ^1 I% A, z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 h: _; k2 k- j  e. G. s0 b4 @9 uhimr 0x80040000 0x00
, k  a& U+ b1 ~% x( Vhimr 0x80040001 0x11
' e& b9 N, x: I  Uhimr 0x80040002 0x226 h- y4 s* e: k& ?
himr 0x80040003 0x33+ n1 Z$ X1 i# _! z, G3 U9 A2 K
himr 0x80040004 0x44- G' j# q* j) O* b# N6 B6 Q( w5 r1 A
himr 0x80040005 0x55
5 u8 h. i0 }3 l4 I: N9 Y1 Y# m1 K# c) r7 c
SN也是类似。
* z, Q  Y  _( @2 r0 `) B' ]
7 F; ~0 ]: g. _: E  x7 }2 O3 j现在主要是,谁告诉我们MAC和SN的地址?
3 H3 R1 ~7 Q  _, b
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 d- V7 ^* H8 \5 o  B* K一直想找到运程修改MAC和SN的办法,苦于无解啊
% r) e8 c/ C. C. _) P, r
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . x% N, X7 c8 t9 x1 h

5 X3 C' d: @2 @1 }' ^) b8 e+ A修改的代码早有了。到今天不会编译。
2 x) C9 Y- Q, p+ i6 Q. f, R需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % s: |5 T% @: M- H1 a$ ^
  2. #include <malloc.h>
    6 i9 q2 O& U) _. _$ [
  3. #include <sys/types.h>- a7 v! W; `1 z7 U! ~6 T
  4. #include <sys/stat.h>
    4 H* T0 }8 j) s  ~% ~( T
  5. #include <sys/ioctl.h>  ]2 u8 `# r3 }0 W! i' q- {
  6. #include <stdio.h>+ y* l5 }" y- m# @$ N
  7. #include <string.h>& j% {  }) I" l, V5 m8 |! Y& v
  8. , J9 B5 g+ P& b+ s; \7 j9 z/ e( {
  9. typedef struct {
    % \) a9 T! S; z2 e! J
  10.         unsigned int        e2prom_cmd_sub_addr;9 P% x$ H. E2 `9 A& i+ y
  11.         unsigned int        sub_addr_count;: A1 ]4 l7 z/ y1 h
  12.         unsigned char*        e2prom_cmd_data;
    . T. b( t5 o, i3 U  q; g8 y/ @
  13.         unsigned int        data_count;3 Y% N- \& m$ @
  14. } e2prom_s_cmd;
    ) V8 n- Q; c' s/ k, V. Z' c4 ]
  15. 4 T& V2 \- _3 C' K1 T4 C8 W) X/ v! F
  16. #define E2PROM_CMD_READ 1  n4 _# X  Z* b, u
  17. #define E2PROM_CMD_WRITE 2
    0 E4 t' y+ D  G% i! e9 d3 s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + x7 [" R4 p5 u; I( r
  19. " W( B7 e7 d5 m! q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 Y. T, i3 W1 c5 r) `! l
  21. {
    1 u: X( Z  Y8 O. t7 v+ t% Y
  22.         int fd, ret;8 I/ _* p9 P2 S/ Z/ I. o) ]
  23.         e2prom_s_cmd arg;% T: D5 E+ Z0 o7 H
  24.         unsigned char buf[0x18];
    # y) h& J4 [+ K( i8 C

  25. 1 r" J. g& v; V( K1 I* }- c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 `  z. B) b/ a+ F8 C/ I
  27.         if (fd  < 0) {1 V" B; A- K/ J: h, P; d4 T9 X% c1 j: v
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 {2 g9 H0 q, ~8 v2 X- d
  29.                 return -1;
    9 i! _# k0 U, t8 s
  30.         }1 s* i8 d; G: N4 M6 F+ F6 f* E" G
  31.         arg.sub_addr_count      = 2;
    - u0 Z& d2 l  g: ]
  32.         arg.data_count          = 0x18;
    ) H& L' e+ e8 P  n- h! X
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ j- I  k( i0 O6 D4 ^
  34.         arg.e2prom_cmd_data     = buf;0 w7 v! s* Y5 I6 m" b2 d* ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: B6 d/ U9 z- ?6 D  R  a# L* {* L3 r
  36.         if (ret != 0) {
    * ^( `! Q' J, U; T6 H% t
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  H+ s: l# I1 \, S$ J) X
  38.                 return -1;
    0 G; N+ m% t9 ^+ X8 {% n
  39.         }3 J5 Y! z% C6 O1 a
  40.         memcpy(mac, buf, 6);$ }1 s9 L* C  {/ G& f" e% b# f8 i
  41.         memcpy(stbid, &buf[6], 18);, p9 S( N4 h7 @
  42.         stbid[18] = '\0';
    6 _5 B1 g; |! }) w( U7 A8 i
  43. 3 i  j' T' L$ s& F0 S
  44.         return 0;
    ) `7 B" \& H: A9 K: q
  45. }
      C6 a/ g+ N- i) U4 K/ `2 L7 l4 [
  46. / E; {1 V8 l: X8 m
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 O; [3 C: d+ g/ ~& K
  48. {6 Z) O; n3 G0 ?; I& P* S$ J! z7 v
  49.         int fd, ret;+ g* r; \# S' G7 i2 o. k
  50.         e2prom_s_cmd arg;6 V; {) F8 J( Y+ a
  51.         unsigned char buf[0x18];% Y' X6 C4 v4 c' x, p5 Y7 ]( w
  52. ' B/ }3 q* E, x; h; I* e' t; N. Y  o
  53.         memcpy(buf, mac, 6);
    6 y6 M1 I* x* r# i! X
  54.         memcpy(&buf[6], stbid, 18);
      }) J) I# I+ T4 |7 y: i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; a  N( a# g# p7 R3 h8 B
  56.         if (fd  < 0) {
    / r/ e' R9 q6 @) R7 h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' K- Y( e- L: R2 ?! v9 T. Q
  58.                 return -1;8 m! c4 g; k1 U0 E9 P* `% ]
  59.         }* f% D1 L% s! G0 z) B* |3 U
  60.         arg.sub_addr_count      = 2;
    6 ?) q/ y2 N: F! A$ U
  61.         arg.data_count          = 0x18;) K3 q& t" J2 H  q1 {
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + h8 h7 k- C1 a
  63.         arg.e2prom_cmd_data     = buf;
    - W# p' d+ {4 P) s  Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , Z/ r, s# l0 C0 o  w
  65.         if (ret != 0) {- a! Q( J1 j* l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , E, F1 O# O+ r$ s
  67.                 return -1;0 G% B8 ~+ w, `* K1 ~
  68.         }
    # q# X' a1 P9 b
  69. ' Z4 f" a. g8 b. [
  70.         return 0;4 a8 a+ _1 T1 V4 m" V% S
  71. }
    * y' x2 e3 k( O, K
  72. ( }, F9 w4 S8 E8 w
  73. int main()' H* \2 L' {( ~$ w4 E& x; c% a+ h
  74. {/ U1 G- `) z7 l' m4 c1 u4 \
  75.         char c;
    + M, D$ e9 I; n1 _" J
  76.         int i, macs[6];
    3 w7 T4 W$ I% a5 ~
  77.         unsigned char mac[6];
    8 E( l! Z9 [7 C! r" g
  78.         unsigned char stbid[256];" D2 w, _- J. L  ~( E# B4 g
  79. 5 @( r& A: D7 B2 P
  80.         if (readparam(mac, stbid) < 0)3 [! V4 ^/ d) z2 W% W
  81.                 return 1;* `9 b) C* [% T+ i
  82. 5 O8 k1 S8 ^0 }/ y7 h
  83.         printf("Current parameters: \n");
    ( t/ h8 c+ w; v( _& Y5 l2 z- y4 l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 ]3 U( d) X6 i) }
  85.         printf("  STBID: %s\n", stbid);8 Q$ M  m2 R. y- F- B7 O
  86.        
    1 W. E+ @7 F- c; ]5 f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; K9 Z! c4 I: B+ a- u7 f. @7 h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 `* F- `; H. q5 S' h" }* F" \
  89.                 printf("Input MAC error\n");" M" w. J' I5 _; M4 b& H
  90.                 return 1;
    7 D+ e  S0 p  |0 R& X
  91.         }1 B6 V) n, u/ j8 [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , x7 R, N* e9 Z9 E4 Y
  93.         printf("\nPlease input new STBID: ");
    + l4 K1 c# e2 w3 z) O6 A
  94.         scanf("%s", stbid);* N2 K7 E: f8 V* S" B
  95.         if (strlen(stbid) != 18) {! @* n0 z  D: D3 |% v, h) h
  96.                 printf("Invalid stbid\n");# C5 r, `# C  F( n1 N3 U% [
  97.                 return 1;, N! M; d, p( A8 }9 _2 H
  98.         }
    , V( q9 @: w8 |! }7 ~/ ?
  99.         printf("\nNew parameters: \n");
    & I4 e6 k. D& I7 J* F( x0 E
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      Y; I3 C/ ]" B6 X) P# I9 u
  101.         printf("  STBID: %s\n", stbid);
    0 l6 v* B" I( A+ q) @

  102. ) d; p" ?( _) a( L) J
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; J1 n7 N* l! |% t* b' Y& P1 f3 ^+ ?
  104.         for (;;) {( Z" _$ K2 ]( k7 J
  105.                 c = getchar();
    / X/ A) z- c+ r0 b+ u# W
  106.                 if (c == 'y' || c == 'Y')$ A% P9 L$ T# ^' G
  107.                         break;
    # Q: w8 R3 N3 J5 M: D
  108.                 if (c == 'n' || c == 'N') {2 F1 k& M6 Y6 N5 c- o+ x
  109.                         printf("\nAborted.\n");' ^5 c( Y  ^. E! Q# {; R& t
  110.                         return 1;4 w, w+ p* p/ @
  111.                 }8 C' x5 e# k" U' |) A+ x
  112.         }
    3 V: ]% r0 h5 \1 P) L. y" ?
  113.         if (writeparam(mac, stbid) == 0) 8 P4 \# l0 D1 E7 d2 [/ f
  114.                 printf("Parameters changed.\n");" t& V' ], \# Y2 T* \' h
  115. ( x. }2 `, `: i# X- C2 Q: j9 E
  116.         return 0;3 @& S9 Q3 I4 X
  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& S& `, m# \+ `3 x9 c# _
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% g- d0 l1 g. G' F
你用的编译命令行格式是什么?  w5 ~& f4 D1 G# ~. E
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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