查看: 17798|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , u0 I" L# B# z5 ~) v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    " a7 g" ]  a& F/ ~( ]; W$ q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  E, D- H) y  k2 e% f2 g5 y( Jusage: himr <address> <value>. sample: himr 0x80040000 0x0
0 O  a6 ^, L9 T7 p& ~
# G. u( g( p4 m& Q. j7 e
* B$ e$ m- [$ X' p9 r不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ o% w. g3 p% z. J* U! r) ?+ V1 E' L
& E5 i/ w5 G% @% X4 p1 e
补充内容 (2012-3-8 09:42):9 G4 r) X: h/ t0 `. E% N
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% m5 N4 H$ O( r2 o5 V
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。6 e, d, M/ b, c# [' [
2 d1 A& g% J/ A7 w% ]
himr <address> <value>. sample: himr 0x80040000 0x0
4 o4 @. d+ o$ i3 l6 J2 |9 q$ i% P1 V4 j6 }1 u
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, Z  V3 M+ t  |. \, A( o. I) h
himr 0x80040000 0x00
& ?2 R" d+ @  x' V3 z- k( rhimr 0x80040001 0x11
+ d* H" ]# z) @% O  `: |/ Lhimr 0x80040002 0x22! }3 j7 W, q9 [- C
himr 0x80040003 0x33
" _* ]# u( ?: ?. B2 l/ Nhimr 0x80040004 0x44
, j; B, {7 s0 h. X9 A* Q9 J  u3 ehimr 0x80040005 0x553 A& i  q# l; v
' p3 Y4 C8 v# F% [
SN也是类似。) i' T- {# h7 {1 i$ Y
) T( S$ e& c: h& y
现在主要是,谁告诉我们MAC和SN的地址?5 B  J+ n: C- {( {" j2 w6 A6 u
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  W! r) s1 Q( \& n3 v$ m; K一直想找到运程修改MAC和SN的办法,苦于无解啊
5 q0 P1 P7 k. t2 V! T. W! p
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' t1 B9 i+ x' W: n& K
8 @, Q7 ^' i6 ~1 z! ^! G修改的代码早有了。到今天不会编译。
! e1 {! T. P" s. @- u# n+ J: y' A8 g! [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % }& `! ^+ C/ E8 \/ t0 i
  2. #include <malloc.h>* j3 G# A+ t5 R( e! L
  3. #include <sys/types.h>" v7 l4 ^9 [. A1 `7 F$ x  G. ~( j) G
  4. #include <sys/stat.h>* j6 U* C2 g$ h" @7 z7 i/ u
  5. #include <sys/ioctl.h>6 h5 w+ o" X4 a& P2 ?. h  w
  6. #include <stdio.h>, H1 y  f$ w+ a' ?' {5 y% l
  7. #include <string.h>
    & p" I1 {! E1 o
  8. 6 ?8 M: Y: H+ h) g
  9. typedef struct {4 C( D) T! S# F; H2 }9 ]7 k
  10.         unsigned int        e2prom_cmd_sub_addr;  a% ^6 D# h8 q' s" V
  11.         unsigned int        sub_addr_count;1 X3 K, _4 K2 u
  12.         unsigned char*        e2prom_cmd_data;% c6 R, T8 [/ Q) n8 T8 P
  13.         unsigned int        data_count;
    3 t' ?* ?6 ]) V& Q8 r8 ^# F& }
  14. } e2prom_s_cmd;! Z0 O- s5 k6 N$ j1 q
  15. ; ^/ F+ @1 d- E2 ]/ L. n- n" A
  16. #define E2PROM_CMD_READ 1
    ' Q! y' P$ E: C4 d! @& a
  17. #define E2PROM_CMD_WRITE 2
    . ^( D. [2 M* _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% Y1 ?* O. s! e* H! q2 ^0 V5 j# f7 A

  19. ' s4 L) p  I2 a# H0 f" P( M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 u& t! E1 q' E9 N; r
  21. {
    4 f5 u. U! o: h
  22.         int fd, ret;+ c% x2 _* o8 L( n
  23.         e2prom_s_cmd arg;
    0 @  O6 C$ g  D
  24.         unsigned char buf[0x18];6 P7 Q/ H# h5 J6 X5 x  f

  25. " n9 e- D' ?, L8 y- C9 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. T5 g3 N! Y7 X2 j
  27.         if (fd  < 0) {' ]7 C% d5 X8 @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 W/ `+ U& B" Q  {3 H" ?
  29.                 return -1;% e3 l# B0 \& M2 J+ _: x
  30.         }
    ( Q/ v( Z" Y# P7 ~2 i, _% D
  31.         arg.sub_addr_count      = 2;
    * b, @" ^. Q# C: h7 A5 T
  32.         arg.data_count          = 0x18;9 ^# X2 E5 s4 b! S: l! t) @6 _
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " Q9 }, m% s' ], S
  34.         arg.e2prom_cmd_data     = buf;% {8 Q% y8 b: k0 Y. [7 n5 k
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 I; U2 L1 |% ~' G, K
  36.         if (ret != 0) {
    0 _( W. Z+ q; X* L4 O  r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& p, f' _# O  @0 T$ b
  38.                 return -1;
    % R& k4 |5 e" Q: i3 c4 w
  39.         }( l2 x) R5 \& c9 q# M
  40.         memcpy(mac, buf, 6);
    . ?) T( u3 ?; d' f! q/ ]0 |
  41.         memcpy(stbid, &buf[6], 18);! o( [! n$ R7 i
  42.         stbid[18] = '\0';8 H$ B! h  b8 p3 y* O' @6 U  w

  43. : I2 _3 ~) W5 ?5 h5 a- l& |6 c% C
  44.         return 0;
    " m* m0 Q3 q: R( X% U, c- X. X! s
  45. }9 F& _% o. u4 ^8 @' e' p
  46. 8 T6 m2 `' H' R4 O! M; o
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) V1 j. Q% E8 v/ f# n0 u+ p6 |* Y! `
  48. {
    6 P4 N7 S2 a. k2 a
  49.         int fd, ret;; F0 C  N* ?7 B. Y7 U: p& g
  50.         e2prom_s_cmd arg;$ U5 Q- r( q2 G4 G3 r' b
  51.         unsigned char buf[0x18];
    / P3 Y: f$ l2 _% ^, s: t* B7 W: G  }

  52. & \" t* l, V; i3 E# a$ s8 t
  53.         memcpy(buf, mac, 6);
    * g0 J0 g8 m$ n& K% t' x
  54.         memcpy(&buf[6], stbid, 18);8 _; K: v% ^% Y0 B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 n; }9 [% @' Q8 V. H: ?1 L2 b. f
  56.         if (fd  < 0) {
    ( O7 M: U9 h4 z% h: `0 K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ a3 b4 K( j# B: w- v! _1 M0 W4 @
  58.                 return -1;
    * t% \6 V: `, s
  59.         }. W4 M, g: g3 t& M! f9 m
  60.         arg.sub_addr_count      = 2;( @( H8 ]$ I. M, M% J; O0 j
  61.         arg.data_count          = 0x18;
    $ l4 u) v, w; t) I  Y" l
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 V8 C# @2 f9 \% g7 y
  63.         arg.e2prom_cmd_data     = buf;
    ; D) w. z6 Z/ S  G$ e! X' {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ u$ c/ Y8 ]( O& J
  65.         if (ret != 0) {
    - `7 M9 g4 T- k- r  q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ' l$ |& F5 ^/ q$ W
  67.                 return -1;
    7 f/ Q  l1 [& t' F8 C
  68.         }
    : g; u; Y* W' G& m* |! K6 [

  69. : _5 ~: _) ^/ y, I
  70.         return 0;0 y2 q+ w% L& C5 B$ Q
  71. }
    3 a/ ?9 a3 D. J. W" b  t
  72. 8 ^  O/ D. X& V# z3 C
  73. int main()
    7 {* g, t- b5 A" U, Y
  74. {
    $ ~% T5 r' p. T
  75.         char c;1 P6 k; H: y. W3 U6 v
  76.         int i, macs[6];2 [" g" {1 Q! a! H2 [
  77.         unsigned char mac[6];
    " t0 Q; j8 s4 K; }/ p; r8 W
  78.         unsigned char stbid[256];( |( b! X9 s( G

  79. , y7 e9 z9 j( L$ v& z
  80.         if (readparam(mac, stbid) < 0)2 B# V. Y7 |2 ]3 t( Z- F7 f! y' b* B1 d
  81.                 return 1;1 r9 w& f' r+ E1 T  H6 ^0 E. t

  82. ( r& M1 j: g# z1 k
  83.         printf("Current parameters: \n");$ v. k. P, T% \, d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : n# w& g! B: ?
  85.         printf("  STBID: %s\n", stbid);& o% q- @) T8 K$ j' n
  86.        
    6 g" X( v) J/ S+ m& {: E) x5 u0 M. @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ ?0 z2 g$ C, _% m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 }3 \5 d. ^- c  H: t8 J2 v
  89.                 printf("Input MAC error\n");
    ( M! @# C- E, e2 u7 |" M9 ?
  90.                 return 1;* W- T) P; X3 g
  91.         }0 Q, n6 s0 U7 D' u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 Z: V; g4 [; ~; T6 O+ A" N# h
  93.         printf("\nPlease input new STBID: ");/ [( l, {- X1 c
  94.         scanf("%s", stbid);( [/ ^" ]+ l) e
  95.         if (strlen(stbid) != 18) {
    ' X6 r. e# x- }5 d8 N
  96.                 printf("Invalid stbid\n");
      Y2 f# m1 n# g" k+ [: Z) s
  97.                 return 1;+ s/ a7 J/ W3 K$ e
  98.         }
    , w+ e, P7 T' ?0 U
  99.         printf("\nNew parameters: \n");6 C. ^9 P7 A& Z- f9 s
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : o- {8 M/ m, O: T/ R/ K
  101.         printf("  STBID: %s\n", stbid);7 r7 d; x" T, R- T) @5 a/ I4 \
  102. % \, W7 n2 {5 _. @
  103.         printf("\nDo you want to change paramemters? (y/N) ");: ^% v$ c' O, B9 P9 {7 u5 H8 O
  104.         for (;;) {
    1 {3 S9 s- n, }2 z' i
  105.                 c = getchar();
    & B& \) Q* I% U- I" v5 E
  106.                 if (c == 'y' || c == 'Y')
    ; y$ M! g0 I3 t( G2 a" L
  107.                         break;
    ( W& O# h7 w) U8 K' p7 z* t6 T
  108.                 if (c == 'n' || c == 'N') {
    : x9 z. P; Y8 o; l2 J; H
  109.                         printf("\nAborted.\n");
    1 P) |7 V: L5 G: Z1 _
  110.                         return 1;- B4 V* G% Q9 _+ d3 t% x5 B  Q: O5 B9 n
  111.                 }0 v) r8 a6 ?- y7 e- ]% D
  112.         }, p- N, L4 E2 h! i+ `
  113.         if (writeparam(mac, stbid) == 0)
    & C; B: }, e: J. R1 v, @# N
  114.                 printf("Parameters changed.\n");
    - S3 M) H2 J8 D! {  x
  115. / ^. L3 Z3 h$ ?1 B% g
  116.         return 0;3 Y: U8 d( c* {1 U- ~
  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
$ C% U9 D1 L9 P5 P7 b在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" @, S5 Z! ^) ]3 ?
你用的编译命令行格式是什么?& Y0 O3 D) X- c6 G& X& R
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部