查看: 16100|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  t) k) }+ [. `  h+ m
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 b9 D5 b) V/ I+ o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, P6 _9 a4 U' k! P3 W( j. V% ~
usage: himr <address> <value>. sample: himr 0x80040000 0x0  Q+ S) f" q5 r% d
( G; ]: u; ^1 {0 A" W4 {; J9 h4 e

) i# }, Y% }. J" N% M不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( d8 Q9 G. o) E5 P- ]0 K8 [& @/ J
; i0 l* G, Y" v# }0 z
补充内容 (2012-3-8 09:42):3 j% L4 `6 r+ x; w3 J  _; ]9 k9 K+ \
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  I7 g# I; h% N6 I- N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。* Z$ Z4 |- k1 ^$ [- F
) k) ^- h2 J1 n0 |5 i' c6 E! F
himr <address> <value>. sample: himr 0x80040000 0x0
1 G; F- n6 Y( G3 f
# v" z1 R2 Y& K3 o5 F, J例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& z/ T9 ^! |: _, Q- i) r# Fhimr 0x80040000 0x007 G+ k+ a& r) n8 B
himr 0x80040001 0x11' H, u$ r+ ?  J2 [2 k
himr 0x80040002 0x22
! ^& n' q3 W8 H* \himr 0x80040003 0x33
. O; x2 b: k/ o" h4 @# v3 U. lhimr 0x80040004 0x44! b% s# l9 V3 j
himr 0x80040005 0x55
# c3 l* C4 u8 M& S
# Y3 t% y( m0 g7 q% H( e4 \$ gSN也是类似。" Y% X  h. T2 l* [6 b; ]. t- e
) B. v9 y; b3 ~2 O# B$ q( ]
现在主要是,谁告诉我们MAC和SN的地址?4 j9 q9 \  J% J2 A7 z5 d7 n3 L# @% p
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) Y7 ^+ o. f1 l0 s
一直想找到运程修改MAC和SN的办法,苦于无解啊
/ b2 Y. l/ Q3 x2 G7 ~; |
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , @9 }3 ^' }: ~# ]2 G
* i9 D6 @6 ?; W/ }4 s( H
修改的代码早有了。到今天不会编译。
* G9 V0 B$ e1 E4 ~8 {需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" m8 Q/ Q9 I" |( A; K$ U/ N
  2. #include <malloc.h>$ Z- t9 a) `/ j: f2 L( F  r
  3. #include <sys/types.h>$ t, `. `, U( t* R! R3 t
  4. #include <sys/stat.h>
    ' Y- s' h1 t& t# l8 z( h
  5. #include <sys/ioctl.h>
    : s# C  j3 a4 a& h9 G- c
  6. #include <stdio.h>6 q! C1 K! _" L+ v9 ^
  7. #include <string.h>
    % d0 |/ F% m4 ]4 m$ y

  8. 4 V3 N2 d* f5 a% |. k
  9. typedef struct {+ O: `" P5 k1 x9 z4 f; c+ p
  10.         unsigned int        e2prom_cmd_sub_addr;: n# l3 t' |9 \; }# U' z
  11.         unsigned int        sub_addr_count;
    , A5 S0 P/ L7 }, q
  12.         unsigned char*        e2prom_cmd_data;
    3 _. Z6 K$ _5 S2 i* a
  13.         unsigned int        data_count;
    ( n+ q" V! A0 d! u+ O
  14. } e2prom_s_cmd;2 }- f& x2 D' u! B1 F$ Z+ O

  15. - t' v( {5 W& y( I
  16. #define E2PROM_CMD_READ 1) s, t, A" w; l% v* Q
  17. #define E2PROM_CMD_WRITE 2
    - _# W* C0 r1 F* W" i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 ?& w  J3 l9 ?+ k2 ?* L
  19. * w" N- e  [, N4 {6 m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 _, Z  W; [, K+ _0 t# C& T' L
  21. {
    % Y& J. L0 L# I: m* H; O
  22.         int fd, ret;5 i, h: x% Z8 c% Y4 C3 l( f/ j
  23.         e2prom_s_cmd arg;
    ) d# a- d- r9 V9 u
  24.         unsigned char buf[0x18];
    # Y0 i) V( L2 x, z$ X; ^

  25. * X' Q/ K" D, Y, g' T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  A+ r: v. s, u8 d! Y! g/ j3 M
  27.         if (fd  < 0) {
    5 E( u8 ?0 J7 _' u$ \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* c0 L. n% s9 j7 w
  29.                 return -1;, n. A5 X5 n& z) r/ t" W
  30.         }
    $ }7 Q# {6 U: f
  31.         arg.sub_addr_count      = 2;
    8 W& s+ P7 B9 ~6 W6 J
  32.         arg.data_count          = 0x18;
    6 f" ~# z* e3 V+ L- K! g
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , V$ v9 x9 B" N
  34.         arg.e2prom_cmd_data     = buf;0 n, S7 ?/ w9 n
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 h# [- `: i  T, |3 i5 t5 q
  36.         if (ret != 0) {9 _7 ~; i. h8 x) O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & ^8 X! k* Q" o4 y; U$ L
  38.                 return -1;
    : \( q) O5 Y5 Z! p/ Q
  39.         }7 s" N6 q8 R. J$ Q
  40.         memcpy(mac, buf, 6);
    2 i! C4 `/ o: F1 b+ d
  41.         memcpy(stbid, &buf[6], 18);/ `- h- }# N: T; `3 O, q
  42.         stbid[18] = '\0';
    4 C& ~) ?: |% l, B9 a' F
  43. ; i/ G0 @. E$ _! B, A
  44.         return 0;: m4 Q8 C/ O# o: i: F7 s
  45. }
    " o+ r' G/ R! z- l/ ?
  46. " f' @/ Q- R+ T- `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 Z1 Q4 I! z7 a0 x/ H9 F
  48. {+ E) M6 R5 h( a0 h; O: z
  49.         int fd, ret;
    9 o+ \2 n& t4 i" F
  50.         e2prom_s_cmd arg;
      ]- h. o* [) n  P7 R/ m, m# ^
  51.         unsigned char buf[0x18];
    ( T: Y7 m. T( ]
  52. ! X4 ]) l" o& {, q" P0 ]) n; f
  53.         memcpy(buf, mac, 6);# ^: j5 w6 R7 l- K  t
  54.         memcpy(&buf[6], stbid, 18);
    / h; l7 `7 F/ x: @1 l; ?* _' R* G; q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; W% j+ |! F$ w( _- i& |1 h" A
  56.         if (fd  < 0) {9 {. R! i4 C& y' @  V+ i: a
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , C3 o7 q) P  G! o* n3 Q, N; A
  58.                 return -1;) m' K/ i! F5 E1 ]
  59.         }
    : j) q7 Z4 ?3 ~5 P6 j( [* C
  60.         arg.sub_addr_count      = 2;
    7 e6 b( {/ _. v4 w3 J* g. L/ k
  61.         arg.data_count          = 0x18;
    + i% p3 Q0 r( ?$ G* `: M! `. X
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % y( f4 M, F6 k% j* k; p
  63.         arg.e2prom_cmd_data     = buf;1 A: `* z9 K  ]$ b" Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( B2 V* s4 J2 b& U  {  Y6 Q2 m
  65.         if (ret != 0) {
    $ S1 }* D5 [2 p: t, I2 N2 ?/ ^
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 w, z. K; U0 V! O9 W$ ?9 B& ]
  67.                 return -1;
    " X, I- t0 Y) q# S$ r
  68.         }
    8 D* J! g- w" C
  69. ; `* `) M& b- X
  70.         return 0;; u$ d$ b- ~' `) F
  71. }- i5 o& i: |$ ?: K
  72. / M% C( x/ i% p& `
  73. int main()0 C  n2 ~. t. R( a0 ~+ m$ |# N
  74. {1 u& n$ ^6 p% `
  75.         char c;
    + D8 c+ w* X/ D7 D+ w
  76.         int i, macs[6];
    . a! ]5 s) x1 ?! h
  77.         unsigned char mac[6];/ r) h" w- F/ {
  78.         unsigned char stbid[256];4 F4 p# ^6 K$ P% a: Z: t- }
  79. 5 U6 @1 r; ^- w& J$ g, i
  80.         if (readparam(mac, stbid) < 0)
    ' {4 c' K1 K3 v
  81.                 return 1;
    . }3 t. z& l( o
  82. : p7 n$ j, D* y; a! F. [
  83.         printf("Current parameters: \n");) L% ]; E2 }" C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 y5 l8 T7 s7 o3 S0 [* C, m. C7 j( p
  85.         printf("  STBID: %s\n", stbid);* }' I; F) v4 X4 d
  86.         ' F2 ^8 O* s. I3 [# I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( H8 L  ~' V3 R  D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 W' z9 f$ u( c3 q
  89.                 printf("Input MAC error\n");
    0 z6 t( D9 O; I: Q/ h
  90.                 return 1;3 ]- w; t" h9 F
  91.         }
    , M1 r1 s! G8 C8 C/ r9 T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: v; w( p; a8 y  r* M* i0 g
  93.         printf("\nPlease input new STBID: ");
    ; @& Q: s  ~; }: ?
  94.         scanf("%s", stbid);) o' ]) Y8 K2 y$ ?- U& n
  95.         if (strlen(stbid) != 18) {, }! W0 E( O1 L0 t
  96.                 printf("Invalid stbid\n");
    ! b- I. B. [5 c7 R0 F
  97.                 return 1;1 {: B/ M" B1 U, S+ Y
  98.         }
    4 B3 J! r& E" g4 N) R
  99.         printf("\nNew parameters: \n");
    : F* X) a! P: S+ ~; z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ B" j! V! k  A/ E
  101.         printf("  STBID: %s\n", stbid);
    0 C( e# ~5 P5 @$ b8 N

  102. & V) S/ S" W9 ~/ y( S
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , b/ w6 i! W& l+ d0 W+ w' ~
  104.         for (;;) {
    & X/ {6 Z$ s7 A% _/ N$ t
  105.                 c = getchar();, e* q% T, g2 D) w4 N2 U
  106.                 if (c == 'y' || c == 'Y')
    : l7 \& ?. A6 S. q& b
  107.                         break;
    5 D" E1 v8 n- h: S6 Q. B1 U2 A: c' K
  108.                 if (c == 'n' || c == 'N') {" Q+ B5 a2 F- z" o1 f7 m$ H
  109.                         printf("\nAborted.\n");+ a  Z5 S4 R$ z
  110.                         return 1;
      i6 s( U4 F' c8 E" z) j$ T. f
  111.                 }6 q9 |0 m9 G8 U
  112.         }
    4 c0 ]/ S2 E- c
  113.         if (writeparam(mac, stbid) == 0) 9 R$ O% C8 A- ]& v
  114.                 printf("Parameters changed.\n");) z, n6 o  s3 j; e- [3 n

  115. 8 C2 s/ F' q. [
  116.         return 0;
    1 h( O& ]5 U0 O/ m4 R1 N1 F
  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 h" k3 k% N; E8 J) a3 }& X
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 K. {' {: [& u$ {9 ^" k你用的编译命令行格式是什么?' C  a1 v* \, t# {$ u3 w5 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客服返回顶部