查看: 17544|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; u1 z* T; p4 v& q& V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, |7 y4 t# m# I) \9 P2 F, [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  r# g! I+ R) i! g& j
usage: himr <address> <value>. sample: himr 0x80040000 0x0* |2 b0 @5 n3 M/ m8 ^- `/ h1 B$ P

( f: q, g9 {9 _$ @, ]/ o
! s: f2 n1 h$ u2 P2 t5 Y- K不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# Y# {8 V& ]* K2 U9 p7 S$ q
* j3 Q; O& w* b, ]0 u& A& r, ^
补充内容 (2012-3-8 09:42):
/ Q+ j: X' G! s( q! ^5 d: Ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  v5 C' s2 `5 u( ?. d: ]
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。4 K3 N! F8 G$ {+ E4 g- ^  k" |

, _0 e1 ?: ^' O2 D$ k  ~# f% mhimr <address> <value>. sample: himr 0x80040000 0x0
! M- z3 Q3 c0 B  T  ]! [# f' b( @$ V% `/ I8 v$ u4 o* S
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 B% y* M8 F% lhimr 0x80040000 0x00- W1 x$ V: N4 [$ o; ?; f8 E
himr 0x80040001 0x11
. R' U  O& G  ^himr 0x80040002 0x222 S" ~5 Q9 U; c: i2 M9 l0 r, F* W
himr 0x80040003 0x33
# Z9 c: l" f% E1 W3 H2 N2 }; N, Thimr 0x80040004 0x44
  S( I+ y8 `% ^1 D; U0 Xhimr 0x80040005 0x55. S) e$ r3 R9 s4 x$ p
. d& C) R& Q/ A' T* Z
SN也是类似。. B/ }6 k2 f% i) ]4 @

1 J+ }- b/ {- c% r  H2 M1 l; P现在主要是,谁告诉我们MAC和SN的地址?& q8 F2 u: f4 F( p& k; q$ T* V
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * {8 Z0 y/ _; _5 B  g. L8 T
一直想找到运程修改MAC和SN的办法,苦于无解啊

& \9 ?# w% `$ {6 ^' |6 K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ T& e: y5 i3 T$ D5 [: J/ v9 K6 U- e4 o. o8 y
修改的代码早有了。到今天不会编译。+ f+ `- N' \& g' l6 C( ]
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: h9 a! J8 t* D4 L/ L4 h9 ^
  2. #include <malloc.h>4 ?- o! f2 l$ h) |2 n. {8 p, f- r
  3. #include <sys/types.h>
    2 t  N% {% H5 z4 S" J% u/ f" p
  4. #include <sys/stat.h>/ k' U, l7 Y1 j
  5. #include <sys/ioctl.h>
    7 j. q5 e0 k2 d: @1 T! r9 ?- O& X
  6. #include <stdio.h>
    : K/ O: t, y4 D& m% S
  7. #include <string.h>
    4 m$ q6 n- T  ~! z

  8. ; R8 `4 w$ w+ ~/ P
  9. typedef struct {; v% b7 h) A1 E! |. m2 E& Y8 v
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) A8 ]& o- n* \, }1 k9 s
  11.         unsigned int        sub_addr_count;  C+ W* H8 ]* t' V
  12.         unsigned char*        e2prom_cmd_data;
    3 ]) ~# d9 n; G) B6 Y  P( s' g
  13.         unsigned int        data_count;- v" Q, o- R# L% W( R& `( u
  14. } e2prom_s_cmd;
    / {0 A! A+ {9 d8 r
  15. 3 R+ K9 T+ u- V# [! ~6 s: l6 H; |  \! b
  16. #define E2PROM_CMD_READ 1, o" a4 S$ ^5 q7 f
  17. #define E2PROM_CMD_WRITE 25 d* |4 |. d% h+ p; i2 r: h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 z: O3 }) V9 m2 B$ n

  19. 6 q) E" s& o# x* w, O+ c/ o$ e$ S0 A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " N; h  [# a' H& v( k# o+ x
  21. {
    ; {  h, E6 M$ K3 F9 H: ?8 S+ R0 L; X
  22.         int fd, ret;: V6 w, J2 p# y- K
  23.         e2prom_s_cmd arg;
    , s2 `# z1 j, |
  24.         unsigned char buf[0x18];
    + H; A8 ]: n) n6 Q- c; D& b! }

  25. 4 ]6 N0 R( h2 w% _4 ~/ B+ W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* `0 `! \. z- b4 ~, @
  27.         if (fd  < 0) {$ `& r# z/ f$ J, [' q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + O4 P2 q. c( ~9 l  h+ u. J% r
  29.                 return -1;
    5 g4 l0 {; {8 D* A3 k" J
  30.         }5 K* Q  H% a3 B; p. |( B
  31.         arg.sub_addr_count      = 2;2 E  W" k+ ~. X. o: g. d) M
  32.         arg.data_count          = 0x18;0 V/ y: }& E: Y/ }* D
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - F( `" _& ]) @; `
  34.         arg.e2prom_cmd_data     = buf;( v! i1 V3 u; U+ C& a/ [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ C+ l" Y7 V% O9 u5 w; f: ?2 @
  36.         if (ret != 0) {
    ( b. [( ?4 P1 z, |0 c
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ' P, s" b& H  C
  38.                 return -1;
    / t- t. N8 @" w+ C0 d, Y# n- q
  39.         }5 A* m0 f* }1 h% m% r8 R  O3 ?
  40.         memcpy(mac, buf, 6);
    + _8 j+ ]  o$ b& r; j3 N
  41.         memcpy(stbid, &buf[6], 18);4 |+ S& w6 a: f" ]' Y7 D
  42.         stbid[18] = '\0';9 E$ S9 `* B  Y; [/ }

  43. 3 b2 F4 }8 [0 G$ I
  44.         return 0;
    9 G2 o8 T2 O% C/ L
  45. }/ x1 i1 V6 L+ ^+ {5 R* D% _
  46. 0 F" \/ l5 T0 s+ m% X0 [9 H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* l" b3 r5 w5 \- k: ^# k
  48. {6 ~) ~- I! R9 D( o: d- }  J
  49.         int fd, ret;4 V& A, Y6 h) @- ~0 |( \
  50.         e2prom_s_cmd arg;. A- c2 P! X5 G$ v( s/ H
  51.         unsigned char buf[0x18];9 a% S4 y& K# d  F" t
  52. , Z2 I; v+ B# M1 N+ }
  53.         memcpy(buf, mac, 6);3 f1 A. u' b: A$ Q
  54.         memcpy(&buf[6], stbid, 18);; @# I# W4 u- X2 R) S" s
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 s3 b7 f6 _( F- a. F8 E8 u# A4 r
  56.         if (fd  < 0) {: J/ |( [2 }& k" l# e5 r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * G) P+ F& o: o& O- A9 c
  58.                 return -1;0 i2 B' T' o$ w+ Y, o
  59.         }
    3 `  Z. I6 H# D' ]7 l# L* {. K0 F
  60.         arg.sub_addr_count      = 2;
    " t1 ]( c/ C# d3 O( n0 F
  61.         arg.data_count          = 0x18;/ e* h& _1 r: t) C" t6 T
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 @* G, \: u1 X
  63.         arg.e2prom_cmd_data     = buf;  [1 M' B, {% c) b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# o# j$ O( A8 d% e- s$ I% |  i$ @
  65.         if (ret != 0) {6 Q0 {$ k) N  C6 i$ E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ u: H- w: ^: Z* d8 j1 @; ]
  67.                 return -1;
    8 U8 ^# H! C4 b- f
  68.         }! B  N9 m: o3 m2 v1 K
  69. * j% J  k! [  \/ @
  70.         return 0;
    : L% A0 {6 p9 x- f$ V! {3 h
  71. }  D3 }* A) T7 u9 q

  72. , _$ l" h. k; A) ?7 d- r+ |
  73. int main()
    9 H9 ~2 ~: Y7 z0 j8 [) D/ \! l% ?3 C
  74. {: X6 R( o( r/ f
  75.         char c;! m7 g; ?& f5 R* c8 k
  76.         int i, macs[6];
    2 |  i7 z; g2 w; ?3 p" H  s! O
  77.         unsigned char mac[6];
    - r( w+ L" t. j  T; k  Z
  78.         unsigned char stbid[256];
    8 k' }/ Y: K0 E: X. }' H) d( H

  79. ' S+ f% b' Z- j1 L. J5 ?
  80.         if (readparam(mac, stbid) < 0)4 @! u6 b# T( O  e' z/ n
  81.                 return 1;5 r- k) e5 D, W

  82. 2 P* u. q6 S- R# Q" B- l
  83.         printf("Current parameters: \n");
    : ^6 w3 C" `# R' N9 ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) j9 p# s! a) u2 i4 W' H  }
  85.         printf("  STBID: %s\n", stbid);/ e- n' b+ h$ P3 h" K8 o$ p+ z
  86.        
    # ]7 K! g1 l0 z# }
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 J2 |" S+ ]" a) k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & T; K0 i3 N8 J( t
  89.                 printf("Input MAC error\n");$ v* _$ _8 A& H: h
  90.                 return 1;6 q: W, W# t2 n0 k# B$ I
  91.         }: z4 D: L  [2 y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 X4 f2 b& q5 `7 E6 g, O
  93.         printf("\nPlease input new STBID: ");
    $ P2 i3 a: [6 _- b( J* f5 B
  94.         scanf("%s", stbid);! d/ M" Z) ~, s' _
  95.         if (strlen(stbid) != 18) {' q0 ~  w8 p/ ~4 b$ x
  96.                 printf("Invalid stbid\n");
    , B& }& h- N9 l, C. ]
  97.                 return 1;  r6 z. @0 h( D9 N
  98.         }$ o% `4 X: z$ V' v$ r, @
  99.         printf("\nNew parameters: \n");
      y4 E& _; N& d2 E: m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) j1 K) A! i  o# ]7 a. Y
  101.         printf("  STBID: %s\n", stbid);3 X; w8 R1 I* X$ ?

  102. , I' t& D$ e6 }0 J& k' X( e
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 Z5 t: L4 Q3 A5 i
  104.         for (;;) {
    ( \. [1 D8 I9 |1 P- A
  105.                 c = getchar();
    6 y. B! k' D3 Z8 m. v7 ~# w  [
  106.                 if (c == 'y' || c == 'Y')
    9 x( ^# S, ?& A9 }
  107.                         break;
    1 T, s- r) `- K( D
  108.                 if (c == 'n' || c == 'N') {. B2 b; a+ w& H* r! a+ X
  109.                         printf("\nAborted.\n");
    - C& Z) ?% Y8 P/ B( \# x& _- j
  110.                         return 1;0 \# J6 w( x% L# p4 ]
  111.                 }" y! i7 g6 _+ t' k
  112.         }* D: M, r: S9 }: t/ ], E  l' M
  113.         if (writeparam(mac, stbid) == 0)
    7 I  [% K- I0 ?  a# K
  114.                 printf("Parameters changed.\n");
    , l& D: N3 K0 J! ]4 T1 V8 j

  115. - c9 C5 r& x3 f* m7 p$ P( v
  116.         return 0;
    . ]3 n8 M; Q+ U( m
  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
( c6 @% Q7 k- n9 V# z在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 C  A9 m2 B7 D# D- x" Z; m% l2 h
你用的编译命令行格式是什么?
; p, ]$ [( U+ C! j' s. S1 [6 P
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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