查看: 17593|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 V+ Y2 {  b4 V/ L  L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# Z" ]; i% ?4 K; v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 R8 }1 U) @; x( v9 \' ^" }8 _usage: himr <address> <value>. sample: himr 0x80040000 0x0- q& A" M4 I3 X' D# Y

& Q# D- a; c! W, |2 I
6 k9 q# W% g% R  d5 G- L2 d$ x4 R不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* B" D, {3 ~7 h( g

! s. w1 C, P0 Y  P! Z& o& c: q+ k补充内容 (2012-3-8 09:42):# }( |* E' `/ f' l
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* f0 F% T3 ]/ Q" ~5 W) L这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
* y" y# b2 B$ [, M- J( C) n
  h% K6 x* Z/ x, @6 _; khimr <address> <value>. sample: himr 0x80040000 0x0
( e  y7 B$ _" t6 K! z1 I
% V% |! z5 X; v1 A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 m2 q- l9 o8 G2 m- q( w# g
himr 0x80040000 0x00! ~1 W# r* E) ~; r0 U* E& l, [1 |2 D& H
himr 0x80040001 0x116 Z0 S( Q" d! X5 I  C9 q- c3 m$ p
himr 0x80040002 0x220 C; @5 x* ~8 x  i0 m
himr 0x80040003 0x335 q. n. o' ~3 }1 G7 I
himr 0x80040004 0x44/ h* \( W. ?6 T6 Y
himr 0x80040005 0x55
. f1 Z& x% i  u/ w
& T& B* }" ?9 y- n8 CSN也是类似。
* Q# H' z9 j1 D/ O  e! H) j
4 A$ O& d3 D3 v$ Q/ `- q. h现在主要是,谁告诉我们MAC和SN的地址?" s4 x8 C% r9 E* \( L! N  a0 o
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, ?/ k- n) n- S5 h+ f8 v( c% L一直想找到运程修改MAC和SN的办法,苦于无解啊

  p$ e# `, j; e源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 A2 ?' _% B6 s' \: I0 v2 [. Q* T  ~" R9 q7 H# @3 q: [3 z# m
修改的代码早有了。到今天不会编译。8 ]0 j+ Z9 q0 `6 N: d  Z! K$ n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 A4 A- X! L7 G
  2. #include <malloc.h>) s; Q- s! R2 r+ u) |
  3. #include <sys/types.h># Z5 o7 r0 `% V8 ?/ T1 I6 ^% g
  4. #include <sys/stat.h>
    , _& y" O; b, q7 D5 p% c0 w  T
  5. #include <sys/ioctl.h># K" u( L! c3 d8 `; ^/ j
  6. #include <stdio.h>. Q2 X* z8 u4 C0 P5 W; u# }- O
  7. #include <string.h>
    % U. h5 D# I; p) ], g4 x

  8. ( g  O! b. Q! z
  9. typedef struct {
    - Q$ }4 q+ Z) I" A2 d0 ]
  10.         unsigned int        e2prom_cmd_sub_addr;6 K3 M0 X) b4 Q
  11.         unsigned int        sub_addr_count;
    " G2 d$ B2 G) k* Z* v* F2 ?
  12.         unsigned char*        e2prom_cmd_data;5 n# B% {$ Q$ D" [5 ?0 R
  13.         unsigned int        data_count;! T2 K" U6 |  F: W& T- J
  14. } e2prom_s_cmd;
    - V" q0 V, p8 z" X7 S+ s; j$ p

  15. ( l. x$ ?& z8 W) F" |
  16. #define E2PROM_CMD_READ 1) B7 N$ |8 D% U1 I
  17. #define E2PROM_CMD_WRITE 2
    1 _5 @9 h, c9 g; I7 Y; S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  e4 z4 K9 G9 O3 ^8 Z
  19. ; M" t4 J* C4 t. n" R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / f0 X. z6 R8 t
  21. {/ i5 E8 g5 q& j% ~# l
  22.         int fd, ret;- O/ Y+ I, e  b
  23.         e2prom_s_cmd arg;
    * R9 f  U7 C( W; |7 g1 v
  24.         unsigned char buf[0x18];0 T! q  c* Y  y) ?; G
  25. 7 F" Z2 ]7 g6 J" n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) B2 o$ F7 H- u
  27.         if (fd  < 0) {
    % w7 X# @/ ]& a/ v, h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * F1 @  u2 ?! o3 r5 V8 b$ Z+ ]
  29.                 return -1;
    & w9 k0 @( O: m8 P0 _: W- t# M
  30.         }: A0 A; q$ x- [  ~/ B5 d2 r9 P  A
  31.         arg.sub_addr_count      = 2;
    ' _4 f7 j! P; p; r5 S1 A) W. d
  32.         arg.data_count          = 0x18;- L1 G9 l/ J, {
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + [* V* w8 Z6 k! Q3 Y/ x
  34.         arg.e2prom_cmd_data     = buf;$ Z+ {% K- W6 [9 O( Z+ U! N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 |* g3 c' w+ q- Y! @7 T( j. J
  36.         if (ret != 0) {
    * l5 t% `3 y4 `5 m1 f9 q( f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * T: s9 b$ q7 V# I$ E7 y
  38.                 return -1;
      Z) B: {% n3 L2 }2 q/ c( C
  39.         }
    / J/ ]5 q- V  e+ f7 t
  40.         memcpy(mac, buf, 6);
    7 I# ~: |  d3 ^
  41.         memcpy(stbid, &buf[6], 18);; ]* A( w$ g+ O' p/ X
  42.         stbid[18] = '\0';
    3 @* t: ~  [* x( b

  43. 0 B; D3 ?9 F* u  ^" j( p
  44.         return 0;
    7 T$ B! _& N3 N6 G  t! Y
  45. }. z0 o7 r6 K$ r6 R6 P/ u
  46. 8 v5 M. [0 F8 K" u; z; o
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 c  ?% }9 z1 ]$ Q
  48. {  [6 p& {$ }& U$ w
  49.         int fd, ret;
    % O3 }% b# f0 e
  50.         e2prom_s_cmd arg;
    ( X# B) k& z: N' K% q# L3 d
  51.         unsigned char buf[0x18];5 y) \1 Z9 b3 `4 U
  52. 0 a( r. C2 d+ b
  53.         memcpy(buf, mac, 6);
    / L% k' ~: S. x3 T# [+ D, O
  54.         memcpy(&buf[6], stbid, 18);2 [- l) t* \; Q9 y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. `) Y# x6 H: M$ ?' R, {# n
  56.         if (fd  < 0) {
      k/ I0 f& Q- r' {2 C3 {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, x8 o1 G9 c  o7 W
  58.                 return -1;. a, |. n- c" R1 N& P
  59.         }7 A. S. [; x0 Q
  60.         arg.sub_addr_count      = 2;% X, G1 A' v. N+ ]! ]6 z1 h. E
  61.         arg.data_count          = 0x18;
    4 d6 u0 K6 L# f/ r8 x5 J0 M' q
  62.         arg.e2prom_cmd_sub_addr = 0x290;- n: g- W( R/ ^+ p/ M! N
  63.         arg.e2prom_cmd_data     = buf;
    , w4 @* B- a  \. M. ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : \" q  b- A' }" ?- ?3 `
  65.         if (ret != 0) {. M! \7 }1 t7 |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 N. M. d0 I1 Z2 n( x* e9 s: u
  67.                 return -1;! Z( e+ k' e3 }8 d& ?( r
  68.         }
    , @% ^# Y/ s) T& _/ \: v# ]

  69. & z+ C. R. Z) `5 m% V
  70.         return 0;
    + A- H! q5 w# I2 k
  71. }* Y9 G! d  I0 v7 Y, m
  72. 7 u7 U2 e; X1 A7 ~
  73. int main()
    ! h  k( D3 I* m& q
  74. {
    ! y4 c2 B0 ~. G; c$ A
  75.         char c;* ]: `' \& U5 U& u' j$ E5 ^+ K4 b
  76.         int i, macs[6];
    ) C- O! k- ^( ^8 R$ ?  o) g
  77.         unsigned char mac[6];; G0 u+ Z7 K& I7 `' }; m
  78.         unsigned char stbid[256];$ u: ^' [- |0 t5 G- Z

  79. & h$ S4 D) a- y
  80.         if (readparam(mac, stbid) < 0)0 f" }& g) C) a' X6 Z
  81.                 return 1;
    ; H% L% X  \: r& Z: L. a

  82. * Y# Z6 \. K3 U" `" f9 c0 X
  83.         printf("Current parameters: \n");/ b! \9 |' T/ Z" a# F0 V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& L( u* @' e+ g. ^/ k+ X9 M, M
  85.         printf("  STBID: %s\n", stbid);
    4 J, t4 o7 `! p" c. ]; N( j
  86.        
    # f+ A+ k& P1 f+ {1 L1 z" P; a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* H2 X0 [: R* D7 G4 ]6 r; V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 @# V. g$ P" ]
  89.                 printf("Input MAC error\n");) Q, m0 X4 o; E+ J
  90.                 return 1;* I, Z% q. _2 v% [
  91.         }: p5 E. `( d' E6 Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 r- p% P* W% ?9 k- R+ |
  93.         printf("\nPlease input new STBID: ");
    7 Z, j1 I0 f6 Y4 N( A( e# ~
  94.         scanf("%s", stbid);
    - k" V5 m7 @' M3 T: Z% H$ N% _
  95.         if (strlen(stbid) != 18) {  p2 c% ?& A7 T+ A0 w" V* E
  96.                 printf("Invalid stbid\n");
    0 D9 \1 o- \+ a$ y) `
  97.                 return 1;- a8 X/ e$ J" \3 E
  98.         }; _8 A3 r" i! o' ~3 L
  99.         printf("\nNew parameters: \n");2 y) {- u& |( p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 x$ w# x/ w7 X/ P* @( M! Q
  101.         printf("  STBID: %s\n", stbid);! r* X" Q( h5 h3 U  H$ `

  102. ) E1 F% ?: b2 a6 O9 h. [, I7 J$ `- ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 |' ~" E* S0 R' M) ]
  104.         for (;;) {
    8 \* z& S( R/ o7 e4 d# Z
  105.                 c = getchar();
    ' [+ u0 \( K3 Y, c* V6 W: d
  106.                 if (c == 'y' || c == 'Y')" a  _% H& B- R9 I) V. y5 e
  107.                         break;1 O% @0 C" P- s0 R2 u0 m8 t
  108.                 if (c == 'n' || c == 'N') {/ x5 {; G, f3 B1 z, s2 S$ g
  109.                         printf("\nAborted.\n");
    ( k0 v8 f* `# ^. b
  110.                         return 1;
    ) N4 y. @6 v- u  w3 D
  111.                 }
    + V9 l( G* g5 O# J$ F, N+ e
  112.         }
    , \2 _2 K. i' C8 R5 _- S
  113.         if (writeparam(mac, stbid) == 0) - h- ^: K1 \" q! ^4 _" J; D
  114.                 printf("Parameters changed.\n");
    ' k* Y: A& K3 H8 \9 v( v2 }% I

  115. 1 `5 p7 L6 U6 Y/ w0 e
  116.         return 0;
    0 O( X/ O4 w$ Z1 x3 }6 i
  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
* k% u7 \) X( R2 F% ^! w在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 i: [4 F% ?. W. T3 f, ]3 e. p你用的编译命令行格式是什么?
$ h3 G# G: c' @; r
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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