查看: 16916|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 Z* Z( d1 i, Y0 N2 z, J# K7 m2 z& p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! r/ b5 l3 G, J! e' |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 t' G8 p" i$ o8 ^! X3 o9 A9 zusage: himr <address> <value>. sample: himr 0x80040000 0x0/ \# @+ f; O: [+ O% B

& w0 G) v% D1 _/ P7 B0 X1 ~- L
# K1 m- x  I5 p3 ^不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 \8 J; Y( ^+ d$ K' u0 R

* ^# B" m$ i/ I: Q0 o补充内容 (2012-3-8 09:42):$ J. I. }; b, f0 e6 d$ D7 \* W! A) M- |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 s3 ]$ f3 q9 K. d/ D
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。, `( p* H* x8 E$ Y

) J) @' f& ^2 v' ahimr <address> <value>. sample: himr 0x80040000 0x0
! B1 g/ p% C  p0 n, v+ ~
- f) w7 C! m2 A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( k  e; I+ a# H0 Y+ K( H: C
himr 0x80040000 0x004 U- k: ^* O+ j, o( [. i( ?! ?% ?
himr 0x80040001 0x11( x3 G: l' c4 Q: f
himr 0x80040002 0x22
: l8 H4 U6 E+ ^  Y, A+ r+ bhimr 0x80040003 0x33. ^8 M; R  N, a3 f* @2 V
himr 0x80040004 0x445 f  \1 T; Y" Q5 b4 \
himr 0x80040005 0x55
2 _& ^  n: q- ?
9 @  d7 c0 J; qSN也是类似。0 D2 w2 S, C  n  Z
" p0 o6 {& d! g7 V5 _, U% Y) \) {
现在主要是,谁告诉我们MAC和SN的地址?
; ~6 `' F0 o+ F) V5 F+ U  Q
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 ~. u: j! C3 \; t% P+ z
一直想找到运程修改MAC和SN的办法,苦于无解啊

# X$ z4 V, y5 x: {/ L源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 o; F/ p0 C) Z: Z: P1 x5 `. A) g* A% C6 Q5 v9 m2 |$ {. g$ X
修改的代码早有了。到今天不会编译。& F$ r* F6 o( [) c0 \. _
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; }) @9 _# u1 b, k1 b- l( ]' |
  2. #include <malloc.h>9 ]% S$ Y9 B( d$ O) y
  3. #include <sys/types.h>) L/ O2 Q3 f! ^; v
  4. #include <sys/stat.h>
    7 }! k/ V" _* `9 L
  5. #include <sys/ioctl.h>
    6 [9 U; I9 \- ~5 ^" l
  6. #include <stdio.h>
    ) s# [7 h- m  }' i
  7. #include <string.h>
    " a5 x7 e: Z& e% G8 k; B
  8. 6 c  J  m7 @( {. v6 b
  9. typedef struct {
    3 p& X# E+ h+ D1 Y( T
  10.         unsigned int        e2prom_cmd_sub_addr;
    " o4 ^& K3 P& p  h
  11.         unsigned int        sub_addr_count;' {% c. v. H9 g5 m7 V
  12.         unsigned char*        e2prom_cmd_data;
    6 Y6 F3 {( B( g" i' f( n
  13.         unsigned int        data_count;# a. m% l, t5 h( g
  14. } e2prom_s_cmd;6 M4 Q% o+ g% [7 L/ Y1 U' L
  15. $ h9 y8 l/ V" A* Q$ M% o8 a/ g
  16. #define E2PROM_CMD_READ 1
    8 E4 c4 m- |2 `) C0 d, c4 t# o! W
  17. #define E2PROM_CMD_WRITE 2
    ' z( d4 \+ i8 i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; k, }. W  s! ?1 j. Q: ?9 \1 p
  19.   ~5 b3 A8 M$ k5 U% H9 x& z6 x. o3 p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% ?, J1 ^" f$ }5 A! w7 M# f
  21. {. M/ K9 t$ l! i6 U( ?; g
  22.         int fd, ret;' E- q5 C8 `% k
  23.         e2prom_s_cmd arg;/ K& u% D3 W( {( [) |
  24.         unsigned char buf[0x18];
    ) V* @1 |9 m, e- Y% }+ v

  25. & p  Q1 L* D  K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      m& E1 A. Q7 l2 P) s
  27.         if (fd  < 0) {
    4 U4 D: `, J- E1 T% z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 O5 g0 e+ a1 m7 H
  29.                 return -1;3 D  `/ N) j/ R/ E; v6 e( S: m- f
  30.         }' f/ P& q* w9 o; K* O" q9 g
  31.         arg.sub_addr_count      = 2;* }, N/ {/ }3 _  M8 e! U
  32.         arg.data_count          = 0x18;
    0 c/ \  p1 ~2 Y$ n% }% w8 G5 ]5 y0 o
  33.         arg.e2prom_cmd_sub_addr = 0x290;1 ^  l7 J* Z2 s. t
  34.         arg.e2prom_cmd_data     = buf;/ z- ?" M) }& P0 }( }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 o5 R/ \5 i" z( A# {9 M, @$ b
  36.         if (ret != 0) {
    # B# H2 @5 d+ b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 _( T: Q. d# g4 _/ F, a
  38.                 return -1;% Y  F1 W  g8 t3 Q$ C$ E
  39.         }
    ; Z, i2 s! M4 Q
  40.         memcpy(mac, buf, 6);* r, U& X- K  z! \8 z$ ]
  41.         memcpy(stbid, &buf[6], 18);
    + `7 q& L; V" D) I" c  W5 X
  42.         stbid[18] = '\0';
    $ ^4 ?9 ]+ I' R( I

  43. $ R' F  ]: e' g, B: j! Z! J
  44.         return 0;
    4 S/ {" o9 K  F$ a
  45. }
    # ]# t7 @# j3 D0 L1 \% Q: t
  46. ( M" ]0 v* B7 [( l# n  @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 j9 n( K$ D6 |
  48. {/ `* B, J0 H  i. u- U# D5 A
  49.         int fd, ret;
    ' B4 M  H; R( G7 q% E0 y
  50.         e2prom_s_cmd arg;8 }- _" v% r+ S/ O; k# u1 P# `
  51.         unsigned char buf[0x18];
    , z6 }# r2 m2 o$ F
  52. 3 f5 `" }7 Y0 ]+ f  E
  53.         memcpy(buf, mac, 6);4 @* \  x. h: ]8 o- w8 q; r  _
  54.         memcpy(&buf[6], stbid, 18);$ n5 ~8 O  l3 a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 S( H  L2 F' G
  56.         if (fd  < 0) {
    9 d6 T' b" G6 @' X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  G0 C6 d& a3 q8 f
  58.                 return -1;) o" I: G0 ], [, _0 U  R
  59.         }* D; l& ~) z; _! D
  60.         arg.sub_addr_count      = 2;# e4 b* o8 v) ~
  61.         arg.data_count          = 0x18;. U4 C+ i. U# i9 z/ V, C4 A; ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;' P  O" I" ^/ a7 t6 M6 x
  63.         arg.e2prom_cmd_data     = buf;
    * Z" c% T4 v$ o% x& V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 Z# _* N* k! z
  65.         if (ret != 0) {; s) g0 s) Q# n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, |+ I3 P) h5 {- x' z
  67.                 return -1;$ g8 x/ [8 i- I: k, y% [' o
  68.         }
    ; b1 R9 w, g7 U$ }  H& M: t
  69. 3 U% {0 A$ o( V. N! l! v
  70.         return 0;
    : `2 Y7 R5 V" u. Q( @/ }" {9 N
  71. }4 P4 C  E4 }5 ^1 B
  72. 0 r& j! ~4 _, k! e
  73. int main()
    / \# H4 E% K( f# l" `
  74. {0 V6 A  p, @9 K9 y* I: C7 {
  75.         char c;
    ! J6 I" e! b: T+ P. ?6 R( t
  76.         int i, macs[6];
    $ z6 N# Z+ C" f1 T( v% t
  77.         unsigned char mac[6];
    % I6 x% X6 X/ c
  78.         unsigned char stbid[256];
    6 r7 H* c, I3 Y9 N/ @5 l. W
  79. + @! C3 _& O' _
  80.         if (readparam(mac, stbid) < 0)+ \4 M5 F, v' p5 }5 }0 v
  81.                 return 1;$ ]& {$ L: r/ Q: h1 ?! q: V

  82. ' w$ u/ g# J1 f- h+ w3 j
  83.         printf("Current parameters: \n");
    $ E/ e, p* D  \* L5 Z4 L6 i
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, L$ k# M& ?) g. w
  85.         printf("  STBID: %s\n", stbid);
    $ \* d0 m. P9 y; u/ E  B6 U
  86.        
    5 ?9 V$ Q; R) @. x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ F- I% h! S- c" x) l3 G
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ {3 {3 I; m* M6 j% H# g% I
  89.                 printf("Input MAC error\n");5 T! E/ n, Q9 _6 e
  90.                 return 1;
    * r, [9 C% `. \6 l4 x9 e9 D
  91.         }9 @. p7 L% i' S" X  Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 r$ K( H/ O' V7 `# }0 z$ g0 p) x
  93.         printf("\nPlease input new STBID: ");
    6 B& c0 Y. ~' v3 z
  94.         scanf("%s", stbid);: c! F. l6 T) {: T* ]
  95.         if (strlen(stbid) != 18) {5 L. }  x1 V7 c! K
  96.                 printf("Invalid stbid\n");- O* p' a2 Q  y) F# [& b! x
  97.                 return 1;  s) |4 M, [- U3 @, P5 [+ e  x
  98.         }! X) i  \* ~  Y* }
  99.         printf("\nNew parameters: \n");
    % K4 p- ^8 R! z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # ~1 R, A# u) V
  101.         printf("  STBID: %s\n", stbid);
    % K/ D2 R+ U3 ^

  102. , i+ g# W( h/ d1 \) g
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 [* ?2 a" R6 i4 G' }3 @# |
  104.         for (;;) {  C( V0 L( o) N; X, ^; t* ~* x7 ]
  105.                 c = getchar();0 ]( q, P" o2 k4 j6 O7 E
  106.                 if (c == 'y' || c == 'Y')
    ; ^/ ~4 @+ z' h' e8 T
  107.                         break;
    2 ]. j& \. {5 |0 z+ ?, F
  108.                 if (c == 'n' || c == 'N') {4 N! C' ~8 z* G9 ^: z& \3 y
  109.                         printf("\nAborted.\n");! Q+ _/ P8 C2 x
  110.                         return 1;
    # k) K& N- h" u8 z! v: d
  111.                 }4 d- D: m% m9 v. ^* \- w
  112.         }
    + d8 X, p; y8 a& L6 p) V
  113.         if (writeparam(mac, stbid) == 0)
    3 n" I  k0 ]' U% i& r
  114.                 printf("Parameters changed.\n");$ N& }! ]: W! U$ @+ e

  115. ! w- I0 G0 c( \% R% i) O
  116.         return 0;
    , L. g8 Z; F2 `& V4 z
  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
) Q9 \  E' @. w" C2 N( @4 B* W6 c. W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 l" r7 c: ^" c' o) T# [, Q
你用的编译命令行格式是什么?6 S2 z, R) ~) G$ 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客服返回顶部