查看: 15935|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) @! d  C0 M, z8 ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! ^4 t4 V8 |2 I! w9 R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( V$ h5 o0 j) F/ Y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
( u0 ^0 D+ h0 H! O! u# g" ?, J
' r; i& r' X- o2 z2 }( O# H: g1 ?# ]
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: t! A  a3 ?  s$ n4 z2 u
6 o! ]9 J2 D9 C; E, `  q/ X) L' ~; d0 L补充内容 (2012-3-8 09:42):
1 Y4 K# ]" q! A+ Q5 Khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. k) D# _3 y8 r; R' _- ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。' @  N; h6 A$ V

  E/ L4 L- q% _1 N! m$ T  h. phimr <address> <value>. sample: himr 0x80040000 0x0
6 a7 k" ?, ]8 x2 [+ n" m- @: S/ O  p5 ]/ O+ j) R2 M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' @: `$ @1 M9 b, P
himr 0x80040000 0x002 ]( c2 ~! I/ w( P; P
himr 0x80040001 0x11
* b1 j4 i. F$ zhimr 0x80040002 0x22
3 j# D8 y8 P" {5 nhimr 0x80040003 0x33% J- B; H, s2 y: ?# ~+ b4 s! v2 y( p
himr 0x80040004 0x44
, W7 ^8 L, p5 l% s% A0 p" rhimr 0x80040005 0x55
  a/ M' I4 z' }) s; X6 v7 m6 I, H3 W! d7 M4 X
SN也是类似。# f4 \4 }) ]' b' p9 M! O
/ E2 D( T/ l2 R! q4 U5 Z7 y
现在主要是,谁告诉我们MAC和SN的地址?
& J7 D5 E( z$ L& t4 u- v2 Z5 _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 [# O; u% h9 h! _. b
一直想找到运程修改MAC和SN的办法,苦于无解啊

" z; E2 M, t# s* ~. i源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( q6 O% G8 R8 m0 ~! X: n; }1 I" `. c
3 W* I5 o0 Y: `' Q: @& ?# c修改的代码早有了。到今天不会编译。5 c/ R9 L+ j  L! L
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 k* H( V& F- C) E+ j
  2. #include <malloc.h>0 s/ H0 r9 J6 i
  3. #include <sys/types.h>8 P! M$ n, E& V7 x
  4. #include <sys/stat.h>
    8 j7 N3 k# x& u) K0 {! \
  5. #include <sys/ioctl.h>7 p+ C! S/ j0 l
  6. #include <stdio.h>: d4 c7 H5 D/ A7 c; `3 a8 F4 A
  7. #include <string.h>4 V2 d. ?' n+ y- x. Z3 f
  8.   p5 N# o& u7 i+ c# L
  9. typedef struct {
    * b# J$ W* [8 Z; p* Q4 Z
  10.         unsigned int        e2prom_cmd_sub_addr;+ B, x- o8 D2 `, s0 a
  11.         unsigned int        sub_addr_count;: k! n4 @& x  o4 S: U
  12.         unsigned char*        e2prom_cmd_data;
    * r  O8 X' f: _5 ^. Q6 I( l
  13.         unsigned int        data_count;! T: U6 e& F: b% ?2 u
  14. } e2prom_s_cmd;
    + `  h( z9 ~6 c+ V  \* y

  15. 9 A7 B% N# b' I' x
  16. #define E2PROM_CMD_READ 12 S. Y3 T0 y0 x; S7 p& p
  17. #define E2PROM_CMD_WRITE 2
    ) L9 f: o) A! w) V! Z) Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; N) y% O- P- u
  19. * G$ |& P2 h2 N& C9 }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( b/ o  ^2 M1 r, w6 }" x' u7 u
  21. {' q1 \  q" |: D2 w3 x3 O1 F8 P
  22.         int fd, ret;
    ( s( W( s0 X1 j+ i/ Q6 {
  23.         e2prom_s_cmd arg;
    6 a/ r8 u9 b! Q. R% J
  24.         unsigned char buf[0x18];, d# Z' l* I7 L! {

  25. 1 ~0 e* H& O/ l! S8 G! q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ q* D9 ?5 k! a3 j
  27.         if (fd  < 0) {& F. @. T; N* V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( _3 A! O! @# L8 v& b
  29.                 return -1;4 P) P8 r, N: ]* m
  30.         }2 L- f" B# T$ ?% O, q$ S9 s
  31.         arg.sub_addr_count      = 2;
    : _$ q& O& J3 B2 [" x
  32.         arg.data_count          = 0x18;) @" x( _6 w; q
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ E$ [0 C3 L' q; X- V
  34.         arg.e2prom_cmd_data     = buf;
    - W8 B$ P; k5 {: ?" f9 B' z' f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% e: Q) i2 |0 d7 J3 u% r
  36.         if (ret != 0) {
    - T5 j8 F" D* ?- o7 o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 F! q4 j' H, n1 b! i
  38.                 return -1;
    . B" B* O- F6 C  {
  39.         }
    , x9 _% i3 o% ^/ N5 ]
  40.         memcpy(mac, buf, 6);7 f9 }6 {: c% F, F) H
  41.         memcpy(stbid, &buf[6], 18);
    7 i* K; R! Y& i8 S
  42.         stbid[18] = '\0';& P- x% A3 U% i6 Q

  43. - G/ F2 x, e3 x/ h3 E  g% D
  44.         return 0;
    & C6 |( o/ j4 u1 G9 @
  45. }1 K9 V6 F  O0 g/ |* m/ p4 S, g

  46. 6 B$ ~. v3 q$ R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . }2 Q; y: |+ r7 Y5 k
  48. {) ~6 X4 _8 y" q4 w7 K8 \5 t
  49.         int fd, ret;
    ; }% A0 J! |. c5 D  J9 q, }- ?
  50.         e2prom_s_cmd arg;
    $ w4 w$ c7 ]! {3 F
  51.         unsigned char buf[0x18];
    ) |5 P; T: Y8 h: S! ^

  52. : i& P) a7 Z% l1 e% X
  53.         memcpy(buf, mac, 6);  [8 b& Q0 r& f6 ~# A9 T
  54.         memcpy(&buf[6], stbid, 18);
    , O- ]4 {3 B( K4 ~! a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 ?/ I- q& o% ^& a4 {( ~% G/ ^
  56.         if (fd  < 0) {
    4 q9 F+ q* ^3 f" ^+ I* P- Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& a, `0 F0 z( S
  58.                 return -1;
    5 U8 M6 Q; A( j4 W6 Q
  59.         }
      C& w4 p8 @6 }; A0 Q2 q$ y! X3 C, r
  60.         arg.sub_addr_count      = 2;
    . A% V: M( r3 b7 ]4 v, v/ Q
  61.         arg.data_count          = 0x18;
    - a# L% ~; t; A6 W+ b8 r3 d& M# h
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : P* ^- E; C; E$ K/ g
  63.         arg.e2prom_cmd_data     = buf;9 q. V, b' Q1 K- O4 ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- T/ I% I$ L4 e3 M0 `
  65.         if (ret != 0) {
    , ^1 v3 c2 C" d( l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 a3 ~8 v6 e& ^, G4 o( j4 f0 D
  67.                 return -1;" ?' D5 D" P9 L2 Z* k
  68.         }- z, E+ E9 B. Y! f& [) e9 s; I  ^5 ]. h
  69. 3 m8 j) p. k' F: Q
  70.         return 0;4 e6 p# [$ o" u1 u
  71. }9 c/ Q4 Q; w8 o
  72. # V- n: g5 k+ d* V8 F9 Q
  73. int main()/ k: R; h( [4 @' E) O, j. i
  74. {
    8 B: n/ \- }' `+ [4 \+ A) ~
  75.         char c;
    # O( c, _. Y' M" B# S$ ^: M% q
  76.         int i, macs[6];6 g" R4 n/ ]; |
  77.         unsigned char mac[6];1 D5 O7 @8 C0 N
  78.         unsigned char stbid[256];
    # `( K) i( K- s6 X2 t

  79. 1 m: L5 ?# E; s; L, v& l3 y
  80.         if (readparam(mac, stbid) < 0)2 J. w! r- m( K0 r+ D6 Q
  81.                 return 1;8 p- @# n! g6 f) T  f8 R
  82. : U% h$ {, p: D
  83.         printf("Current parameters: \n");
    % Y8 k' U/ j% S! r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ o" K% o  z. x: r
  85.         printf("  STBID: %s\n", stbid);7 W8 c1 |& Q/ p% Q, @( C
  86.         6 ?& C( Y9 w. t) B- V, V* k
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" l5 \, L0 p+ k: v$ n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) k5 i! t8 B: A1 l. l$ d( u2 a
  89.                 printf("Input MAC error\n");
    4 r4 U+ n. q7 ^
  90.                 return 1;5 k$ \% v* P7 f( O8 w
  91.         }0 G' ]) H7 c; H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , [4 C8 ]" q/ i$ v2 E
  93.         printf("\nPlease input new STBID: ");( _5 S. ~3 x7 _' K7 z
  94.         scanf("%s", stbid);6 b5 \( ^; x" z, t$ Y
  95.         if (strlen(stbid) != 18) {
    & K- Q6 ^# v3 [
  96.                 printf("Invalid stbid\n");
    7 Q0 u0 [  y& `, F1 }7 q! }! B4 p+ Q
  97.                 return 1;' v+ t9 R( Q) Q
  98.         }
    7 A$ a! t9 Z4 p! x8 N8 a; A
  99.         printf("\nNew parameters: \n");
    " D/ A+ S* j; H! P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 d% }, I' i, O, x% ^% u. ?& F
  101.         printf("  STBID: %s\n", stbid);/ @' e' g; h) z5 L7 x
  102. : a8 n, j/ C) O* m1 s$ o% _6 [
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      v" f; \3 [7 L% s0 N; `; w
  104.         for (;;) {  h" `, j$ |: A4 S5 W3 Q
  105.                 c = getchar();
    & r7 B* j% R. Q8 n$ m/ v; G1 u# u
  106.                 if (c == 'y' || c == 'Y')
      ]: U4 ?# A& n
  107.                         break;8 ?1 K2 T" n) i( A" v/ l
  108.                 if (c == 'n' || c == 'N') {; {) P/ g$ E3 S: n, [6 _: a
  109.                         printf("\nAborted.\n");
    * q: d! ^5 B/ W* l- C) {
  110.                         return 1;
    + U& F3 Y7 U6 W: Z* T
  111.                 }  N; f) ~# [* G% K, M, |
  112.         }4 S3 u7 Z/ f$ ]9 L: _% {; n
  113.         if (writeparam(mac, stbid) == 0)
    7 N2 L; k0 G: n1 j: R: ^7 h
  114.                 printf("Parameters changed.\n");# Q+ q3 G- K! v% J9 B+ `# q0 X
  115.   q9 i0 R; C" Y0 B1 X0 ?0 y
  116.         return 0;
    + \* `0 G9 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 9 ~  m1 D9 q- u7 S8 g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 j' x4 u2 g+ Y! W8 T! m你用的编译命令行格式是什么?1 I" X2 u9 j* u$ q. x6 O
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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