查看: 15863|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# t) i% L# _+ S
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 s& L4 G' N0 `
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ Q2 t2 Y* z* ^2 u) [usage: himr <address> <value>. sample: himr 0x80040000 0x0
; Q' ^8 ^) n9 J4 T9 }  P3 i
- q. z4 J: d4 c- s  Z, `/ _, K* ~: L3 P5 y$ Q! E9 E* P" H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' B; u5 E9 N5 U8 i$ l0 D8 t0 k7 ~. v3 f2 i/ `/ M" {
补充内容 (2012-3-8 09:42):
; j: O( P( m& Q( U; U% lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 e( F1 U+ C: v: s1 o# Y9 N
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。0 @' r1 m! [) T9 Q3 _. v6 D. v8 k! `

$ ]! q$ P7 G0 \# C0 x" h: g4 [himr <address> <value>. sample: himr 0x80040000 0x02 }4 e2 ]* j. y  u# t
/ q3 [9 L. b6 E' d/ Q, Y1 C6 q% }
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, Z1 d: j1 I% d$ w; lhimr 0x80040000 0x00
- _3 I4 `7 ?5 T5 Z* a6 ^( Q5 Chimr 0x80040001 0x11
4 D* `& l2 B  r; _$ R$ k( d. L( p3 S* g4 ^himr 0x80040002 0x22- J. c0 s' n0 a* n
himr 0x80040003 0x33
; w/ ]  P& F& |( L# @! lhimr 0x80040004 0x44  I! ^8 M5 E" a, X' T4 J+ A
himr 0x80040005 0x556 c6 \3 ^5 o3 {& Q" g

2 V* ?; v0 Y/ T1 USN也是类似。
0 @$ k  b% g- l2 s: @7 W2 C! @0 `" k7 c* U: }
现在主要是,谁告诉我们MAC和SN的地址?
6 t+ q4 ~2 j5 R! _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% _: C, W4 Z; i6 o5 |一直想找到运程修改MAC和SN的办法,苦于无解啊

5 f8 W9 G1 v" w5 I8 z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' a1 q, w7 V+ S( K- T# k( C9 \
, V/ E' g7 \! a2 N1 m6 s修改的代码早有了。到今天不会编译。- p9 i8 a7 w. p1 ~: J2 f3 G
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. s  C0 {/ \0 ~) g7 b+ C' [3 U
  2. #include <malloc.h>+ a' f) i' O9 J, u1 a
  3. #include <sys/types.h>
    * @1 P) ~$ I5 O7 Q) L; ~, \' ]/ _7 E6 U
  4. #include <sys/stat.h>$ J" O2 S* |. E2 E6 u' I- t1 \
  5. #include <sys/ioctl.h>$ B! Z% q' g# H+ h+ X4 [
  6. #include <stdio.h>
    ) D/ Z6 f+ K7 h+ Q! }$ r  P; U
  7. #include <string.h>
    , Y7 O9 u% P1 s5 z' w4 P$ O/ N' e

  8. : J, m- e3 s/ h% k1 O3 T9 t8 z2 l3 S
  9. typedef struct {
    $ i0 i8 S( {% c% _$ v9 W1 K
  10.         unsigned int        e2prom_cmd_sub_addr;& P' S; q0 r0 C$ w
  11.         unsigned int        sub_addr_count;6 r7 `! _1 v2 [/ D" A( G, o* J
  12.         unsigned char*        e2prom_cmd_data;
    ( q. B9 \. u3 u& a5 i1 O
  13.         unsigned int        data_count;
    0 f4 W6 C: Q$ w- h4 S6 V% k: U
  14. } e2prom_s_cmd;* K- ]1 w! Q% V2 J* c+ x1 l
  15. 3 G( F6 W+ P# Y- [# O* _
  16. #define E2PROM_CMD_READ 1
    $ v5 Y7 d0 Z' ?
  17. #define E2PROM_CMD_WRITE 2
    % D" R8 `: g7 f; {- h5 Z$ |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' t/ h; U2 D9 T3 g) L
  19. " k9 o+ Q5 R, m; ~% x5 }4 Q) ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 z/ G( j5 |4 \
  21. {% x4 g/ J% C' ?
  22.         int fd, ret;5 q4 c& q9 q2 ?+ o! E* l
  23.         e2prom_s_cmd arg;" `6 |0 o. ~5 C( i( G' ^
  24.         unsigned char buf[0x18];# @2 L5 l0 \, c# K+ F
  25. - M, b- D+ ^! Z& L, }) d  J/ X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! \$ T: D6 c7 D8 Y, ?) i) E
  27.         if (fd  < 0) {
    $ \. ?$ W/ ^8 T: L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 T! x9 Y$ p- K7 a/ \
  29.                 return -1;
    4 s2 j- L2 z2 z2 |- a! [, Z
  30.         }8 M+ @4 E% E1 w8 M4 V& g0 Y
  31.         arg.sub_addr_count      = 2;
    * b- B" G5 W6 N6 D2 @3 O
  32.         arg.data_count          = 0x18;
    8 l  q  g& Q* ^- @; a7 A5 c
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 a3 O8 H5 h3 q2 Q7 x
  34.         arg.e2prom_cmd_data     = buf;
      p7 v, c3 G. G' Z5 C2 o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 X/ c( {3 R) W2 E* C4 Y. K
  36.         if (ret != 0) {
    3 }. ?/ r+ Y9 h6 W& e$ ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: ?* `" Y  G$ k0 T- Y
  38.                 return -1;1 C  U3 v: h: }; z1 k& j7 C
  39.         }
    + o, ^0 \, ]. I& z6 Y
  40.         memcpy(mac, buf, 6);
    . j) [1 f0 q+ E6 ]
  41.         memcpy(stbid, &buf[6], 18);( ~1 J7 ~' n! K" i8 u1 b# N8 Q6 |
  42.         stbid[18] = '\0';
    + y* @* Y' x* `1 [# s$ F( f
  43. 8 J& s( E3 G, ~3 g
  44.         return 0;" X" ~- ~- o" v3 N: a
  45. }
    , o( q# O. c6 S4 c+ s+ y: q
  46. " ?' K) A: b+ d7 O2 G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 v; t7 J* b+ G+ V- d
  48. {
    8 K# s* C6 p# H3 n$ M/ P
  49.         int fd, ret;. [0 u( j, u# M6 @
  50.         e2prom_s_cmd arg;0 w( C' d4 N) E! {6 t" e
  51.         unsigned char buf[0x18];
    3 C) N- x% [8 d  O

  52. 5 v: f: i6 _# _/ d6 }, K
  53.         memcpy(buf, mac, 6);
    : N6 y: [; j: L! i1 r$ ^8 l$ a
  54.         memcpy(&buf[6], stbid, 18);1 Q* K: i1 |# |% x3 Q  `9 {5 t) F- R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 r( e0 w+ T- {5 s- [
  56.         if (fd  < 0) {9 Q" P  a2 }' D2 B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 ~- U4 C$ @$ Z% a
  58.                 return -1;7 w& Y* l. e" w" q
  59.         }
    , S5 _7 T2 a4 b! ?; p7 ]
  60.         arg.sub_addr_count      = 2;; P3 s0 }0 D0 N8 P+ k
  61.         arg.data_count          = 0x18;2 ^  C" R; z) \
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 K6 ]- b. x! r# ^. l! E
  63.         arg.e2prom_cmd_data     = buf;
    0 d9 b1 R9 H+ F& N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % w% f. y+ H8 J  i
  65.         if (ret != 0) {2 G0 |. i9 M3 E, ?6 M$ s: p+ p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) n8 ~$ N3 {) F
  67.                 return -1;
    8 D8 n/ u& A+ L  r, P+ K' f7 M5 X# z
  68.         }0 b& [# Y3 s: W, O0 E7 c( I
  69. # V3 r- p* h! v# z$ L) L# N* r
  70.         return 0;
    ) J6 H% Q8 f6 o7 O# ^) m, l, G
  71. }
    5 ?/ S( m2 |* c0 T$ P" b

  72. . B0 R; R& q, c& M% w( S
  73. int main()& l2 _; k+ e/ B' c3 t7 }* N
  74. {4 w5 L# q- m, n# y
  75.         char c;4 h$ Q( V$ U) S
  76.         int i, macs[6];
    3 \. `: z+ \: V
  77.         unsigned char mac[6];
    6 K2 V3 }# L6 L, z% q
  78.         unsigned char stbid[256];
    * ~3 r  O. A/ o- E) o3 c
  79. . O; q- G$ T# @- `3 p
  80.         if (readparam(mac, stbid) < 0); g+ G* k, W5 J$ v2 {9 i, W7 l* l
  81.                 return 1;8 W9 k* T5 y" B/ p9 P
  82. . [0 T' I. E' a- s3 `/ _$ r
  83.         printf("Current parameters: \n");  G) t2 z5 o$ x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 c" L, w! O* q! A' b: m3 V. @/ b( g  c
  85.         printf("  STBID: %s\n", stbid);
    6 j3 V4 ?8 ]# p+ e! K5 a' m0 R# x
  86.        
    : i; a7 U- ~! i! N2 f; u* v. I0 R) S! d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 V8 B8 d' z- a1 R- H7 I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! |2 _  z; i+ M* j8 p
  89.                 printf("Input MAC error\n");6 T" P$ y  }( F/ `# B; V3 C
  90.                 return 1;
    0 W7 ^; Z- J4 u- ^
  91.         }
    8 D* }: f9 {3 B+ C4 [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ ~  x/ D0 ^3 O; t4 O
  93.         printf("\nPlease input new STBID: ");, G1 F( I& P& f, I- a
  94.         scanf("%s", stbid);
    9 Z  d0 q2 G9 F- e& F. J
  95.         if (strlen(stbid) != 18) {
    " n: e  V6 g: y9 [* h  l$ d
  96.                 printf("Invalid stbid\n");% {: K: s& X% [; G4 l( `$ p: h
  97.                 return 1;, X0 x! g( d5 v! E' a$ i
  98.         }
    $ z# ~- C+ N5 E. @$ w
  99.         printf("\nNew parameters: \n");) Q3 j. A- h7 b$ U3 A* N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' y3 M- l. d$ `* [; y  ]: v: T
  101.         printf("  STBID: %s\n", stbid);: s* @% j. V+ U; f' \

  102. " \! k; `9 F: R  C4 k/ b
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 q+ f% V+ J% C7 `: e
  104.         for (;;) {
    / ~4 a! U3 ^% [6 S
  105.                 c = getchar();0 X- V+ P1 E. `$ X4 h
  106.                 if (c == 'y' || c == 'Y')
    : S4 o5 A( O% M0 v
  107.                         break;* v: B" ], @8 q* h; l9 _, e5 D
  108.                 if (c == 'n' || c == 'N') {$ H# w  m% b7 B/ ^) z
  109.                         printf("\nAborted.\n");
    4 I, c! i7 z9 _  A+ g2 m
  110.                         return 1;
    " w0 f* u  ~  j
  111.                 }$ r7 ^1 ]* d: |9 Y
  112.         }
    ' x4 Y* j. q8 F% O
  113.         if (writeparam(mac, stbid) == 0) 4 H8 _- |* Q! i! B- i
  114.                 printf("Parameters changed.\n");- `6 k5 \* I; i, f- F

  115. - O: V+ H/ }7 G6 r2 w
  116.         return 0;' R+ \1 G' h! ^0 M
  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 & S$ g0 [; ?4 X3 d3 _( g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: K+ o/ ?" j) H1 g6 f5 l
你用的编译命令行格式是什么?4 |4 k' y9 v. ~. I% d3 n/ V
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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