查看: 16282|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' F- F7 v* V# j8 [
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % @; ]( x6 Z2 r" \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- d: `0 @0 k" K$ \6 M: C4 p
usage: himr <address> <value>. sample: himr 0x80040000 0x0
& a' W- X* `5 H- {; c! @+ o8 E8 e* |3 i0 n5 `

/ k) I$ G& F: ~不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: p& Z% j0 y. ~0 I# I( L5 r
: r7 v  |+ T9 m补充内容 (2012-3-8 09:42):" h+ j. j1 q4 J8 f; B: |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, C8 _8 ~7 K8 S# T; P: w
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。7 |! c! y8 \2 J  r

: B! @/ E6 Y8 V0 ]$ q: X6 Ehimr <address> <value>. sample: himr 0x80040000 0x0
+ O3 ]( F! d' |9 u- X) D& i  P7 M2 r' H; g6 w7 B( S
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* F+ Y; G  x1 ?3 i( `; |+ G( Rhimr 0x80040000 0x002 K8 Z2 N1 N3 J4 A8 N
himr 0x80040001 0x11% L% e7 T( ^9 U, N! G% [
himr 0x80040002 0x22
- T- d% X& ^$ c% P4 Nhimr 0x80040003 0x33
* k7 Z9 N8 b8 p. X% J" R# @himr 0x80040004 0x44
# {5 Z7 V) @* b* yhimr 0x80040005 0x557 y$ {5 e4 {% i7 M2 x: q+ W1 U2 v

1 i8 h% }/ _) Q3 B" C( m. PSN也是类似。
) S5 B1 ?& i; ~! E1 `: b. y9 g5 e4 ^  r! G' P+ l! b: D
现在主要是,谁告诉我们MAC和SN的地址?
- j+ I7 L1 P$ M% M2 r) S
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 ?. N4 D* o2 N" E$ G
一直想找到运程修改MAC和SN的办法,苦于无解啊

/ @  s( |+ j7 K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& j0 v) ?( c; r1 V" r( r
% U: m1 h/ ]* k, J$ F0 e修改的代码早有了。到今天不会编译。
0 z, y2 K; K- }+ D3 |6 A  C需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ! p) F- U( L6 P& Y/ c1 h4 R
  2. #include <malloc.h>
    . c8 |( S; c9 K% f
  3. #include <sys/types.h>; P& L% g. g5 {6 Z
  4. #include <sys/stat.h>
    0 q( K6 J$ p8 F& g7 w( M
  5. #include <sys/ioctl.h>
    % o& S6 r  R' j+ g* n  B. ]
  6. #include <stdio.h>
    4 T" a" _3 P! _. y+ u- Z8 U( q
  7. #include <string.h>3 [: [; K* O, @% j! N/ t6 l9 g
  8. ) h, F5 \7 D6 n6 x& n
  9. typedef struct {% r& w1 Q- D6 u( x+ q" C' F
  10.         unsigned int        e2prom_cmd_sub_addr;6 Z3 V* _& H$ ?; Y2 M
  11.         unsigned int        sub_addr_count;. `  I( ?  R! ?8 H$ l
  12.         unsigned char*        e2prom_cmd_data;- g, \% c5 ?9 `1 I/ q- y2 M  e0 h
  13.         unsigned int        data_count;
    ' ?4 [0 P+ z( {' W
  14. } e2prom_s_cmd;; C$ W5 m! a; h

  15. 4 x% E. Z4 I* u% }. w. w
  16. #define E2PROM_CMD_READ 1& o% h2 g, T, F3 Q
  17. #define E2PROM_CMD_WRITE 24 O: j( U& }: J- `+ B$ B2 n& \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 c3 f8 _& S& ~) ]) \; s* o

  19. 5 d% S/ Q% G, D1 L8 C( @0 \  ?: f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( R4 P" M& ?- r5 p
  21. {% `  x+ i7 @* ^# O7 Y( b
  22.         int fd, ret;
    5 A' |; E/ E# t  L
  23.         e2prom_s_cmd arg;1 {# s3 @4 q" R/ A4 a0 w7 A: W3 _
  24.         unsigned char buf[0x18];" G& F# z" T0 I" \7 T

  25. 4 p/ a; G8 H+ e2 J2 A. Y, P5 v9 e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 i2 m) j& [! q& C! {: g* x
  27.         if (fd  < 0) {
    9 I1 s1 \- L- t! ]2 s0 v
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & l+ F8 W0 L) e" R
  29.                 return -1;! Q- p8 @& n; v# K
  30.         }) @7 O4 x# J% W1 p* x" f& |3 q" U
  31.         arg.sub_addr_count      = 2;* D2 V2 J3 |0 W6 ]& Q3 D
  32.         arg.data_count          = 0x18;
    * n* J1 C$ V$ x/ D/ n1 G3 r
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + N+ A. |/ D& a2 i0 x; p
  34.         arg.e2prom_cmd_data     = buf;
    1 f- C& E" i; m8 J9 N+ z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% [  l9 Y! @* }
  36.         if (ret != 0) {
    ' S+ k; A! i& {# V3 t$ P9 t7 z4 C- n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; a/ R, P2 `% {+ T( d# H6 Q: T
  38.                 return -1;% ^8 H/ R$ `( K0 P
  39.         }6 b) K/ \" B9 N" n& c, u9 S
  40.         memcpy(mac, buf, 6);  d6 e9 k: [% V
  41.         memcpy(stbid, &buf[6], 18);
    * Y" b& z, c, n# U! Z) ]. H# A* w# c
  42.         stbid[18] = '\0';
    / K( J2 e' S8 b" \( q1 \
  43. " r% ^" N) I8 F1 J5 o& ?$ v5 u0 K8 [1 `, U
  44.         return 0;
    # r9 f  {# U6 J  q, b3 w+ E- p
  45. }
    4 p2 W! |6 M+ ?3 F+ ]2 s
  46. 1 x1 h; A5 l8 C- A1 Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( K9 ~9 s. O0 F9 X/ }6 o+ r
  48. {
    4 T( o  g5 F0 w7 \( i
  49.         int fd, ret;' T. P, r( N1 x; f6 H3 Y+ C4 z* f
  50.         e2prom_s_cmd arg;2 c4 V7 e* S  w* F
  51.         unsigned char buf[0x18];; g$ i# Y$ i8 q6 Q- c8 X$ k* {
  52. : u; H4 t1 }/ u) T! j
  53.         memcpy(buf, mac, 6);
    9 w: v' H6 f1 {( _+ V' u
  54.         memcpy(&buf[6], stbid, 18);; x( N4 m! D6 q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) }1 Z) R/ O8 W4 Q1 B
  56.         if (fd  < 0) {) D& J0 ^$ v+ E5 _$ q, ^) w, _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# Z, U9 N+ x9 s% J( J) ~
  58.                 return -1;
    / I) P( e$ ]! {; R3 `5 ?5 q/ A
  59.         }! r  J* o0 ~8 J  ~; z6 x6 w* b
  60.         arg.sub_addr_count      = 2;
    & v. {* V2 B; G* |4 \, T8 }
  61.         arg.data_count          = 0x18;
      M7 J) j; ?/ n# |) O) v" j
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # |. z: R4 ~( V
  63.         arg.e2prom_cmd_data     = buf;
    # L7 K8 r5 U  d+ t; `' u5 l2 K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 A. A) Y4 S2 U5 ]- M7 J0 ?
  65.         if (ret != 0) {
    - ]; ~9 K* X* }! |8 h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 l; |. x0 A1 V
  67.                 return -1;
    . L  \7 ^! z6 Q' n: X* O" `
  68.         }9 F4 ]- l! f% t& N" l# c

  69. , {' ~6 A$ N; Y4 m' I, R
  70.         return 0;' o7 K' r- J4 R" m3 A: P# E
  71. }
    8 N0 h+ u% L' y& ~- D8 V

  72. 0 T6 A& B! G; |* \: k4 V
  73. int main()
    6 t" P; u4 v' a5 O; C3 g
  74. {7 [+ J  V# g; C& w1 z; a
  75.         char c;! S* `1 l! {. Z7 J" Z2 f' U& J9 V- y) C+ z
  76.         int i, macs[6];1 x7 j2 ]6 b" S2 G+ L4 W0 c4 }$ I
  77.         unsigned char mac[6];7 G- l1 q, I6 ^0 S# K. l
  78.         unsigned char stbid[256];5 j3 j* g* j" k) y/ s
  79. & I- t" z! v* y# R* D1 a; A, U) u
  80.         if (readparam(mac, stbid) < 0)# ^5 \& `" y, b  S9 E+ ]$ m
  81.                 return 1;5 a5 i& M- b1 x, P6 s# D: }

  82. # X0 Z* a. m6 r  r# f2 [
  83.         printf("Current parameters: \n");0 D$ \* u  U: |& b0 p  Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 \" j4 p; I- |: W/ O( J, |
  85.         printf("  STBID: %s\n", stbid);
    $ N. U! `" I- r5 X" f5 n1 g/ Y
  86.         ( ~% Y$ B( S" Q' M: i7 \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 l  u# z& o! A0 s+ S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 _3 z5 e4 K7 X0 d
  89.                 printf("Input MAC error\n");$ b3 v5 [4 r* ^: [
  90.                 return 1;
    2 I* Q) q; _, U! a. }, k" F
  91.         }
    9 }. z' {: y' K, E2 P2 A8 z: l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 l) `% T3 y5 B$ p
  93.         printf("\nPlease input new STBID: ");
    & _+ b+ A% i; U3 Z$ F4 R8 M3 h3 N
  94.         scanf("%s", stbid);
    $ n! M3 c1 p& M0 f# Z
  95.         if (strlen(stbid) != 18) {
    ) O" c2 s, w/ p6 P3 B* a. r
  96.                 printf("Invalid stbid\n");
    0 X5 O6 P* x% W  @9 k# d  \( e
  97.                 return 1;% c/ a6 J6 r& \" W' b
  98.         }
    $ T6 K. r2 v$ T$ |
  99.         printf("\nNew parameters: \n");3 {' j- V. U6 Q' e6 J; r0 ]9 o( b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 L. F1 w, ~) s3 k$ Q1 @' h9 ?
  101.         printf("  STBID: %s\n", stbid);# q# {4 P4 x: q4 s

  102. + x* o" }. c' h* O+ p# w& _! y
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      m7 z8 w7 `0 k! r  X) A- _
  104.         for (;;) {
    ) [2 n: O3 e# A" Z' w; k1 {  `
  105.                 c = getchar();$ l, }# K# Z, f- P0 o1 {) P
  106.                 if (c == 'y' || c == 'Y'). a/ F# R& Z& v7 y
  107.                         break;
    " Q( P5 Q4 R! |2 n  _& r! V! h: P
  108.                 if (c == 'n' || c == 'N') {
    % e- z  h" d& x
  109.                         printf("\nAborted.\n");2 P: z6 t+ U, c# f- ~
  110.                         return 1;
    % g% k3 ]$ J( A3 Z" I
  111.                 }
    0 m) ~) P: L* R& [7 b* @. S0 P
  112.         }
    0 o+ Q$ Y$ C* M5 x4 {. Z7 {6 p/ A
  113.         if (writeparam(mac, stbid) == 0)
      p$ M3 E' F6 w! ?1 Y' g% a7 M# r1 F4 H
  114.                 printf("Parameters changed.\n");  R. N" i+ V( X5 K- V

  115. ( b- L( k9 ~& H% O0 K3 ^) j6 ~
  116.         return 0;4 D9 Y9 V& G( d" R
  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
3 o9 e7 M, B$ [8 d) e" A在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ W7 O6 Q& k8 B! |# J
你用的编译命令行格式是什么?& b" u$ h, g+ }0 a7 q  E  G
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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