查看: 16106|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) v2 C+ R) M& r4 q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- r1 o- ?9 X. b- \) Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! `. U, ]7 X/ }usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 x4 t/ m4 Q9 n% j0 ]! A, a, v) K
0 ~  M  X+ f% l. X, m2 ?6 N* b- q- k, P: r# @4 b8 W- w8 U4 q* A
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 I. }' T0 Y* Y* j
& ^6 c& u5 X! p6 x* ?% S补充内容 (2012-3-8 09:42):
5 M- J9 f! {# S  lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- Z7 H$ g& c( N# P0 ?: G3 _- E
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 |% r. G0 G$ ~+ k% _

, O, x& P" s: i/ O' N1 b2 Uhimr <address> <value>. sample: himr 0x80040000 0x0; y1 I* A/ f9 U; q
7 G0 {0 h/ d. n
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- \8 A$ l; P. c4 l
himr 0x80040000 0x007 X- i3 I0 Q/ @, \7 `
himr 0x80040001 0x11$ M. g& B# C$ G' l$ ^2 Q) e/ i
himr 0x80040002 0x22
" {0 ?; J/ N( ehimr 0x80040003 0x33" D% Z' x) i  P8 h3 q1 e
himr 0x80040004 0x44
. r1 V2 r9 _" d1 d8 |* Ihimr 0x80040005 0x55- Y) q) F* J. |. u) f' b

& _9 v, S0 @: G% n0 TSN也是类似。0 O% ^: O" c  h% G0 l5 h+ S
5 z1 b6 n  u$ N, R
现在主要是,谁告诉我们MAC和SN的地址?
, b& ?6 X# F7 A: o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - z$ o, J+ N7 ]# r' W7 U" ?3 x
一直想找到运程修改MAC和SN的办法,苦于无解啊

6 b) t9 O& ~3 U8 w6 y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# X* X! [6 v) @# \7 @6 k4 k: i# u; o+ u/ o0 R- U, N
修改的代码早有了。到今天不会编译。2 u( Z8 Q( N2 C
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ U( [0 Y+ p/ E" e  @8 m
  2. #include <malloc.h>3 i* J: b3 a" A% p5 ~
  3. #include <sys/types.h>
    " C" Y# w: q) s1 ~4 S
  4. #include <sys/stat.h>; s& i: n  p0 h& Q
  5. #include <sys/ioctl.h>  x6 z  [+ e# n& V# a" K
  6. #include <stdio.h>
    + y) G: h3 N  d2 _5 O* ]
  7. #include <string.h>$ U( c, E9 n3 G* S- b

  8. 5 v8 e* W4 ^) V( y1 ~" [
  9. typedef struct {3 v6 R& W, o9 W' Z% |  G, z3 c
  10.         unsigned int        e2prom_cmd_sub_addr;9 P7 L( K+ L$ t5 v, ^8 N- s
  11.         unsigned int        sub_addr_count;0 T4 w. a' P# K+ o
  12.         unsigned char*        e2prom_cmd_data;
    / z1 Z8 h$ N) ^, K- Z3 j8 _! F
  13.         unsigned int        data_count;% k4 g( H- x* h8 D' s
  14. } e2prom_s_cmd;* ], u. u# c8 D* q

  15.   L; ^& q2 B6 e( |7 t0 u5 k4 ~- |+ |
  16. #define E2PROM_CMD_READ 1
    2 ^6 {* X1 S! `- H, L# d+ `
  17. #define E2PROM_CMD_WRITE 29 v7 l+ n. h/ r& Z9 ^# w( K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 s# m! V" T  q
  19. ) s0 m# p% @+ R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - I* G! I* o6 k4 W* X
  21. {  }2 X, E2 M9 t3 m9 j
  22.         int fd, ret;
    + u2 @+ A: k7 l: N: S
  23.         e2prom_s_cmd arg;. M7 X" q% u2 v* T
  24.         unsigned char buf[0x18];8 m  z: \/ j8 T; Q4 H% B1 [
  25. : ]( y& H9 `# D& `! ]! @- q  z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  \" s( w! c* V
  27.         if (fd  < 0) {3 T: i3 e  F  p: s, Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 B9 A- d5 Q" \. n5 X! Q
  29.                 return -1;
    ( f0 F8 |+ U9 u
  30.         }
    & c% T: }; m# E/ C1 [$ x6 H" Q
  31.         arg.sub_addr_count      = 2;
    8 o) R; L" ~) A
  32.         arg.data_count          = 0x18;
    $ u9 p0 k( O7 C2 G) x, D8 K
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % C4 A' C9 u1 A% r( `  E/ v
  34.         arg.e2prom_cmd_data     = buf;
    2 v+ C3 j0 E3 V$ ~0 H# Z( M* ]8 [+ T
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + L. t6 w( w- O0 [) ~5 Q' F; s
  36.         if (ret != 0) {% W; g, s: w% x+ F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; T3 w, _( {7 s' `
  38.                 return -1;6 f' A; c+ T7 K" d5 c
  39.         }* s0 m" [5 h' l; T% g2 h+ I! k
  40.         memcpy(mac, buf, 6);
    + ]4 Y" J5 q' x' y) l6 h: L1 ]
  41.         memcpy(stbid, &buf[6], 18);
    ' h5 ^& O/ T+ q: R6 t+ ?( B# y! x
  42.         stbid[18] = '\0';
    3 W( u+ B8 U6 k6 N2 \

  43.   f% ]# K0 g  X0 c; S* F# k
  44.         return 0;* n8 b% K. }; o. \- x" R! v
  45. }$ l5 e4 e% V9 H& ?% Q$ X

  46. 2 E6 e9 e' G; M( w1 ]% I7 E& j& q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 ?2 _: A6 P& F  G
  48. {
    , i9 ]6 j6 Q2 c1 R. `4 k) k. s% m
  49.         int fd, ret;/ u  U! z( F  g& ?1 b1 P
  50.         e2prom_s_cmd arg;% i$ z: H5 x  d3 K% m/ o
  51.         unsigned char buf[0x18];
    * X7 W9 s+ `! x  q; o0 S
  52. 6 B( ]1 X- G3 M3 M
  53.         memcpy(buf, mac, 6);3 I' s$ T# G: ^
  54.         memcpy(&buf[6], stbid, 18);
    , q7 V9 n$ S7 J; q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);8 x8 ]7 [' Y! ?4 [" @$ R5 }% r
  56.         if (fd  < 0) {
    ; i1 e. }  R  }- p1 x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 t/ f4 y0 t, @( U( ?/ X( r& N' }0 }; ~
  58.                 return -1;; u; ?2 R1 O  k: Q
  59.         }- Y1 S; B) l5 {$ V! n$ |( _
  60.         arg.sub_addr_count      = 2;
    ; _# u  R% H, B; @) ^
  61.         arg.data_count          = 0x18;
    6 N2 S0 n6 x; ?  p* Z/ }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 w' _& B8 K. t) e
  63.         arg.e2prom_cmd_data     = buf;
    9 x" C, W& U/ i$ R& L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 w0 S* j5 \/ J. ]( k, j# q
  65.         if (ret != 0) {% i5 f4 S% u+ Y* n6 v' {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - r' u9 p" z2 N1 u$ S
  67.                 return -1;
    / H3 G: j1 Z; N! P' r/ r! A8 n3 d
  68.         }
    7 d3 s2 F9 Q4 N& `

  69. 7 R! E/ F7 U6 h$ ?# a
  70.         return 0;4 l/ n. W1 T# j& d  }* L3 |
  71. }% S# t4 l' ?, z' Q! A

  72. 8 b* ^0 \( a3 u9 e; E
  73. int main()
      K4 J9 V! r/ v1 b; k) w
  74. {7 r. i! K; e( i* M6 H% F
  75.         char c;
    ) U3 c) E/ o: f8 z
  76.         int i, macs[6];
    ! m5 b3 _; \9 [
  77.         unsigned char mac[6];
    8 D) {7 ^5 m2 i% R- P# H
  78.         unsigned char stbid[256];' W4 b6 ~3 B. ~% e% Y: {, k
  79. 6 N4 I$ ]0 t& s3 B0 D" F
  80.         if (readparam(mac, stbid) < 0)# b( ~7 q  H1 {, T. R
  81.                 return 1;1 K' z3 H0 {: o

  82. ) c& S7 \5 V& d& q( o& g/ r
  83.         printf("Current parameters: \n");
    ( @- X$ z5 \: Y! g! X& T0 E1 [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 M  k! W, U! }% Z- E. W+ v
  85.         printf("  STBID: %s\n", stbid);8 F7 Y# [# M* a" j: z9 `
  86.         : ^: M9 Z: K* a4 G7 q; Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . O& n3 Z& S. a$ r$ j; l; w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) R+ W# ]$ l; e% \
  89.                 printf("Input MAC error\n");
    - `+ O( h# k; Q3 Q% u
  90.                 return 1;
    4 p* k( ~7 |0 u  ^7 \+ S
  91.         }- _4 H, Z6 Y" ?$ w- q  k" X
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 T6 j' {. M- W, y4 @% e
  93.         printf("\nPlease input new STBID: ");
    % w# E! h% L( X8 b0 j
  94.         scanf("%s", stbid);! x2 |  I* U0 o2 z
  95.         if (strlen(stbid) != 18) {
    # x- X/ R; f* |* R. M6 s! u
  96.                 printf("Invalid stbid\n");
    6 c+ _2 m0 m3 j' W% \/ R1 h4 \
  97.                 return 1;4 c) r! K  v: M+ a# [
  98.         }
    % j. [9 H4 Y: Z, Q* k
  99.         printf("\nNew parameters: \n");
    & V! h1 L  {  `8 a6 \# R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % \/ u+ ]7 Q1 E( k, q$ a/ o( h
  101.         printf("  STBID: %s\n", stbid);
    % c2 m8 x+ l6 ]( e) Y1 f

  102. # L" ?6 P3 g( X  d8 v7 G
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ [+ n, @3 F# Q3 }, O0 |
  104.         for (;;) {
    1 a- O8 Z' |. R: V& g
  105.                 c = getchar();& R: h0 G9 ?3 q* [+ {4 m/ b3 G
  106.                 if (c == 'y' || c == 'Y')  G+ C# {4 n/ ^4 j. s6 Y9 p
  107.                         break;
    ( W# {  m# M  Y2 i
  108.                 if (c == 'n' || c == 'N') {( X6 X! O2 R0 Y) z5 D  ?, G
  109.                         printf("\nAborted.\n");
    % n7 U6 B, }) E+ D# Z
  110.                         return 1;' m2 `3 {; Q2 B. q5 i$ y+ O
  111.                 }7 f1 B( ]1 `/ P; {8 l* Y- G  h
  112.         }
    . N- c9 I& t1 i
  113.         if (writeparam(mac, stbid) == 0) ! e( K) G1 D* a- z( l5 z9 p
  114.                 printf("Parameters changed.\n");$ p/ x0 q  ]$ U3 K
  115. ! o+ I1 _4 f: n
  116.         return 0;
    . Y# L9 |- @. x% S# l1 i9 j
  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
6 w% o: p% D1 f0 h: P在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ V0 r9 \* M" a2 ^* @
你用的编译命令行格式是什么?/ k3 G0 V- |# r$ H& u& Z' J
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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