找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15284|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * |5 F2 T& p0 q7 t1 r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 m' ?* b6 ?- e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ g4 w+ x& [3 T8 Tusage: himr <address> <value>. sample: himr 0x80040000 0x0
/ J5 ^8 V2 p) T  k8 {4 o+ ?5 [/ s2 X( n

8 P, j* w; y. `8 V) O/ J不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# ~! F+ W" c7 W5 B
6 \7 t2 y0 ?- b: s& P补充内容 (2012-3-8 09:42):
( F! q) }; c$ H' a3 Ehttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% O& v1 n9 h, d: M# Y" [( R9 N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
8 u7 D' M8 ]0 j( g8 d& |4 p7 g- G
1 i7 K& ~2 |( m$ e$ {3 ghimr <address> <value>. sample: himr 0x80040000 0x0
; @3 X: m/ c+ x/ h0 z% C% I+ W' I4 ~9 }! }3 d( \
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 M/ R. R8 o$ o7 o" ~( C* F
himr 0x80040000 0x00
7 T# r! T# b# C) b3 mhimr 0x80040001 0x11) W! y! f" S) p' T( ~9 t
himr 0x80040002 0x22- Y# C: S9 H& c/ U; O: j0 K
himr 0x80040003 0x33+ V0 e4 z$ v; \3 H- X" E
himr 0x80040004 0x44/ }6 H. W$ U; [: G
himr 0x80040005 0x55
) c) T* S' [5 C. m& a7 d9 O
! [& V& [, ?, L% C5 [3 D- VSN也是类似。
$ N8 V9 C9 v; O$ y8 q4 s0 G
  ]5 d( P. W. O2 P- o现在主要是,谁告诉我们MAC和SN的地址?
$ _' M. j9 J& s0 O5 L
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 P2 h+ P+ Y4 l' A7 m. h. |一直想找到运程修改MAC和SN的办法,苦于无解啊
3 H* K. q  G3 c9 p& q! P5 a
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / b, F5 P/ [. ^# B& b2 g1 i3 q* w
& o( S# `/ l1 }: q
修改的代码早有了。到今天不会编译。
. e+ M8 l  n. @' D! R- G4 L需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + ~% r) q+ w% f6 _& z
  2. #include <malloc.h>5 n: C( [/ Q& k& f2 I8 ]3 k# M
  3. #include <sys/types.h>- _# E% B5 @9 f% f5 {1 g" @) m: ^5 c
  4. #include <sys/stat.h>* I; L( N4 a7 @* J+ b3 M
  5. #include <sys/ioctl.h>/ O1 E) \$ G% h( \! A# k" x- P
  6. #include <stdio.h>
    ! ~4 y9 D" ^- V+ c
  7. #include <string.h>
    , o, e0 b; _- D, y- s% a6 g+ s5 E% C0 E
  8. ' \  S0 y/ i  `
  9. typedef struct {9 p$ h$ [, Z: A
  10.         unsigned int        e2prom_cmd_sub_addr;$ V9 u1 H' r" `% i$ I: H
  11.         unsigned int        sub_addr_count;5 J4 I: q2 \* p+ x
  12.         unsigned char*        e2prom_cmd_data;
    $ S, t/ Z% M5 C$ R
  13.         unsigned int        data_count;8 `" w! X0 i1 j0 K) p/ S
  14. } e2prom_s_cmd;
    ) t% n% w# u! Q* |8 n2 I8 d

  15. $ [7 k/ B6 A& t4 u$ ?" o
  16. #define E2PROM_CMD_READ 1
    * V  n# Q7 W! e: K; S" ]" n% b7 S6 |
  17. #define E2PROM_CMD_WRITE 2. j# O. u* X5 N! ?0 p( P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & ]/ M5 L0 {4 X$ L

  19. 9 \& G9 R$ r* d5 ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * i+ v9 @$ x; O! R/ |2 }: T
  21. {
    + u4 D& \: c& ^. e
  22.         int fd, ret;! I- T; X& D7 L' K) X( d; o+ G
  23.         e2prom_s_cmd arg;
    8 X# F2 v( u" C' U1 s
  24.         unsigned char buf[0x18];
    4 k/ t# M+ v  g" r) P
  25. ; @! g8 u6 _( U% f9 m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 t& O" ?7 ^+ N
  27.         if (fd  < 0) {" m, d6 [. {; |. h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ Q1 {8 A6 u' n: I" A3 A
  29.                 return -1;
    4 n- @0 z: n  Z& x
  30.         }/ C4 d: t" Q' K1 w" u
  31.         arg.sub_addr_count      = 2;' A( i2 I$ |6 @! Y- S# ?9 m% P% N
  32.         arg.data_count          = 0x18;
    ! r7 x+ V, p( T9 X+ |6 Y0 a
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 e) N) B7 s$ j( w5 Q
  34.         arg.e2prom_cmd_data     = buf;: ~: @/ N! X. R% H. G- F% |8 h
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' u/ h/ e! P/ r6 \% @6 m
  36.         if (ret != 0) {3 W, l3 G. a6 J! q9 p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 Y, J# D7 t9 w+ Y+ C  \! j
  38.                 return -1;; v; M# g* e4 K6 p* N+ }* I
  39.         }; t6 N3 S) C0 ~& Q+ l( g( n
  40.         memcpy(mac, buf, 6);
    * Q$ U$ N1 O! q/ n
  41.         memcpy(stbid, &buf[6], 18);
    9 Z0 n* r7 v4 K
  42.         stbid[18] = '\0';
      p$ Z3 E3 k& ?$ Y
  43. 5 D2 I) ]$ ]# g3 v0 F- x) w
  44.         return 0;
    & m9 G: }2 ~1 q7 Z  N4 @
  45. }5 E0 }- n' W$ p: C& f

  46. 3 N" ], @! a% e: b. P+ A1 M& H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 S8 a  P; k  n9 F$ S
  48. {
    . y. [( ?* q, v8 Q0 X5 n) @
  49.         int fd, ret;* U8 Z9 V2 S) _1 U2 e% B
  50.         e2prom_s_cmd arg;
    0 y! O& L7 }% z: [$ C+ R& }
  51.         unsigned char buf[0x18];. |% o. G3 @; E$ @
  52. - t8 T% t" r' @7 q7 ]
  53.         memcpy(buf, mac, 6);& J( x3 Q. U% P
  54.         memcpy(&buf[6], stbid, 18);( Q2 Q6 o. Z# j  ^- I9 Y& g
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 ~) V( V( S' d. v! w- ^
  56.         if (fd  < 0) {% l6 o' ?: L* {8 [
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 F  _" i- T4 U. i# S" H
  58.                 return -1;" y( D. J$ h; u2 G; X2 P( m* l) q
  59.         }: C& b( F1 l6 ~
  60.         arg.sub_addr_count      = 2;
    0 \, b% z7 j# z* m, u
  61.         arg.data_count          = 0x18;" j0 y6 a5 K! C$ q- Y2 ?. g
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    - Q' ?: Z' Q% X: M2 p6 i1 y( j
  63.         arg.e2prom_cmd_data     = buf;
    1 z2 d) q4 \# U8 T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      ~7 f! {% ~  x. }
  65.         if (ret != 0) {
    ' L# {' u8 J5 k; c: _; \; f  z/ Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 U# ^  k# C% f. s
  67.                 return -1;* [9 o/ [. ^! r. X! b  U# [  w; N
  68.         }+ u* k3 Y% m6 F# U+ K# o1 J
  69. * u2 g, M+ Y1 z  a. w. Z
  70.         return 0;
    ; v3 M5 }( z* p6 X; u* o
  71. }. t4 }2 G+ ]' E) h; N4 t6 q2 l
  72. ; u, E1 a: b% C5 i4 X5 F
  73. int main()& q8 m9 [" e8 q
  74. {# V2 R' ?3 ]2 ?0 V* _$ W
  75.         char c;5 ^3 a. E2 V  h- r+ R: X
  76.         int i, macs[6];
    ) W' Q. X# g  A& Y
  77.         unsigned char mac[6];+ @0 B. u  P: X  X% c7 p( i
  78.         unsigned char stbid[256];
    ) @0 [6 q. y9 g+ U! e/ f

  79. ) w" A/ b) P1 e, }# ^5 D  v9 y$ T
  80.         if (readparam(mac, stbid) < 0)
    1 p1 U' g) u# `
  81.                 return 1;0 W. P& E7 j  k6 v1 D/ s/ t
  82. 5 z- d/ q$ s( M. ^
  83.         printf("Current parameters: \n");
    6 I6 \8 n+ S9 v% e8 v; _  }" M$ ]& C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . G- J6 l) x$ C+ w6 ^
  85.         printf("  STBID: %s\n", stbid);
    $ B/ _/ @$ [5 w
  86.        
    5 f4 e% c% b# o7 i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 N; l8 ?( s  A& g% K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; [( t- |0 P/ X" V. v7 `
  89.                 printf("Input MAC error\n");
    + i/ H+ [! M1 H* }6 q3 R( z
  90.                 return 1;$ T$ O: @: \3 l* U4 \; i8 f
  91.         }+ m: Z9 h' W+ X! I1 j6 R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - Y* Q/ P+ U, E0 p; v) L8 f
  93.         printf("\nPlease input new STBID: ");2 Q* c6 Z/ T8 U0 f$ I2 W7 S
  94.         scanf("%s", stbid);$ ]( o% @1 N3 _" c/ l# f+ U4 W
  95.         if (strlen(stbid) != 18) {8 U( g! B, W* j$ A6 m% s! \
  96.                 printf("Invalid stbid\n");1 Z6 y  ?* s. C6 X% u& z1 i
  97.                 return 1;7 B0 F2 Y! D0 k( n' _- R
  98.         }
    1 }6 U4 l+ [& o8 v# a
  99.         printf("\nNew parameters: \n");
    : d( W* i" B8 |& X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& x6 Q" ?3 ?6 B: F3 k! y
  101.         printf("  STBID: %s\n", stbid);9 `2 H) y1 ]; M; B
  102. 3 f1 f; X. k9 |7 r$ E8 M+ p! J* J
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & e' W/ v/ |8 q3 ~4 S2 D( i6 l
  104.         for (;;) {0 s- ]2 x9 ]1 ^4 R9 r
  105.                 c = getchar();
    ; D, H( n$ Q  _* ?7 t
  106.                 if (c == 'y' || c == 'Y')
    7 I1 l, V4 a* C1 @' i& j4 |
  107.                         break;* ?2 G! ~8 d2 I! h( Y$ @# h7 k
  108.                 if (c == 'n' || c == 'N') {
    7 r$ a! A8 _9 S; b/ A- h$ I4 K
  109.                         printf("\nAborted.\n");3 T5 N' a: j! W0 [9 T
  110.                         return 1;
    : g" k6 k5 O' i9 W: C! X6 @
  111.                 }4 n5 @, U7 |$ {. p/ e2 K
  112.         }
    ( A  Q0 s' n7 f% T1 ?# S# Y, ]. f
  113.         if (writeparam(mac, stbid) == 0) ( D. {. O. l- z' I
  114.                 printf("Parameters changed.\n");' ]" C$ T1 y- ?8 n4 i) V1 Q

  115. 4 U+ Q" [/ Y5 m2 ^1 i+ ?. \( }
  116.         return 0;, L' i$ j! H6 a( q- ?
  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$ i+ {& U6 ~" g) m" H
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ F3 G$ N6 }- P$ c& b+ _
你用的编译命令行格式是什么?. L) t; Q( L5 Q8 j% `& e0 f
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-16 01:13 , Processed in 0.023298 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表