找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15665|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 ~& _1 v; `) v1 i: W# y: t
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( N! x  l: \# p3 g' R" {/ W% |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) E+ j9 f, |* P1 V) k$ s5 ]6 T
usage: himr <address> <value>. sample: himr 0x80040000 0x0
* E% U- e+ S1 c( T* u, p# Y: a3 P- d& e9 [

1 B5 B( J& ~  I  t, t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" S9 [% g& }$ w( w: B

; l' W# X( [( x' c补充内容 (2012-3-8 09:42):1 d) T- C/ A" \
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* D6 ~+ x# }# ~7 w$ E
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。; P2 @" d! }% ~1 Q* j9 e

5 }) z1 y" q: j; ~! [8 ^himr <address> <value>. sample: himr 0x80040000 0x03 H7 s7 e1 }7 Z$ L2 _

' }6 d) [! C; z5 f5 w* q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, m; c% y0 ?, t7 a4 u) k+ lhimr 0x80040000 0x00$ A. w* M% r& `9 K- M
himr 0x80040001 0x11
! F% O7 `. \# M( E0 e: E6 @himr 0x80040002 0x22" ?! M# {( F3 {) t# z3 q4 K- B
himr 0x80040003 0x33
7 P7 s: t* [, q5 Z! X, r' p* w' khimr 0x80040004 0x44
4 h* B0 h; }  a' h, I1 Y/ R$ {himr 0x80040005 0x55
, U0 {% P/ n* `4 O0 T0 E, K- P. C2 g$ b# v# d1 l
SN也是类似。
8 x7 J! @! @" z- V$ m* ^1 u3 L
8 B: H: R" y( [) t现在主要是,谁告诉我们MAC和SN的地址?8 c  [- h/ M' a9 E! k& j8 {5 H
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 z" N/ c/ L+ C一直想找到运程修改MAC和SN的办法,苦于无解啊
2 B& Z: s5 ^: C5 U; K
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ Y! ?1 a0 z- q" }9 a3 m8 l; R% t; Q* ~: J5 w% R! i2 b8 E
修改的代码早有了。到今天不会编译。
' t( ]9 Z4 O, W  g需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : x# P- S  D4 q2 ?$ Z
  2. #include <malloc.h>
    5 X) e4 ?4 y- B0 U) l
  3. #include <sys/types.h>* X$ ~  i1 L+ m/ G; w4 ]5 G! [
  4. #include <sys/stat.h>
    9 O; d/ ?8 g4 d  c% w; a1 `9 w  U
  5. #include <sys/ioctl.h>
    2 d/ h+ ?8 ~; O# w4 y( o
  6. #include <stdio.h>
    9 M( k/ U4 M. t. b- a$ W
  7. #include <string.h>4 t0 @, _# r% y2 @/ D+ u5 Y% j1 B

  8. 5 o* h/ V9 h7 w, Z4 t3 X
  9. typedef struct {0 N: O6 H6 B7 f# J
  10.         unsigned int        e2prom_cmd_sub_addr;5 |/ [5 Y" _" k1 H" G
  11.         unsigned int        sub_addr_count;
    # l4 b1 X: I& K8 f5 O* _
  12.         unsigned char*        e2prom_cmd_data;7 Y" O2 o6 j+ j9 {* Q- C
  13.         unsigned int        data_count;
    - q6 x0 T; _9 ]3 G& o7 N5 _2 p
  14. } e2prom_s_cmd;
    2 X8 I/ \2 c2 s2 w7 I8 U1 V. ]5 G4 q

  15. , j: T; a$ ^" e" c* n( R9 i
  16. #define E2PROM_CMD_READ 1  B, Z5 K8 m+ O! H9 H7 \3 K( N' Q
  17. #define E2PROM_CMD_WRITE 28 h) M. u2 C0 d) c0 @+ K5 _; G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - {& a# ]0 D) ?% [: l

  19. . [' |6 P' z: X" t; n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! j) a/ Z5 T( d: Z9 b* M9 k6 i
  21. {5 D9 X( N$ Z  L) S, \
  22.         int fd, ret;7 N) W2 h/ F1 W: X- G8 k
  23.         e2prom_s_cmd arg;/ @8 }4 d( m& q- w3 |
  24.         unsigned char buf[0x18];2 A0 z9 n7 {( Q* p. L

  25. ! l# a4 X& ~! }- ?: n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ T$ y/ V) @5 p2 p7 P3 ^- g& {
  27.         if (fd  < 0) {
    ' p, ]3 A) B  Z/ W( ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / E2 ]5 B7 j/ \% c# T
  29.                 return -1;
    7 z: C( s7 C) Q/ A: T& c0 _3 ?
  30.         }8 i4 K) K4 t2 H1 z, i& f* w
  31.         arg.sub_addr_count      = 2;
    ( D' a. M5 Q3 |, G1 I6 \9 H: X
  32.         arg.data_count          = 0x18;
    ! d2 {+ z# P2 X
  33.         arg.e2prom_cmd_sub_addr = 0x290;; e+ g+ [# M2 t4 H9 \4 d0 }) I
  34.         arg.e2prom_cmd_data     = buf;# v  U9 G2 x) y6 T- s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 ^% H# \' {2 k! N2 C
  36.         if (ret != 0) {( L! `; l  a" ^% G/ n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 t. \% R4 p" E; a- P/ f3 B. A
  38.                 return -1;5 N! ]" j+ O, w* B) {4 G
  39.         }
    + o* B; }) I3 c
  40.         memcpy(mac, buf, 6);
    % Q& s# u: @5 ^% O0 A- C! c0 u' G0 I
  41.         memcpy(stbid, &buf[6], 18);
    9 Q: J" w  M, U. D
  42.         stbid[18] = '\0';; E4 E( H6 J" H8 ^, z( j7 \" `
  43. ( s6 T+ J4 }4 ]8 o+ E" E0 r
  44.         return 0;5 Q$ \, V* `/ ]  \. Q
  45. }0 Q: Y7 n; [. [+ p) @& d/ _4 }

  46. & q. J' z# K6 U( O% e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid); M7 v( `- V7 X+ n2 P' \
  48. {9 x# D' V7 T, f7 |0 e5 W
  49.         int fd, ret;
    % Q3 S+ S. P& V1 q
  50.         e2prom_s_cmd arg;# S$ a$ i" K6 Z& e6 N+ h% ?& o
  51.         unsigned char buf[0x18];/ ~$ H3 f7 y$ ]" i3 P( }% A3 V6 }

  52.   ~; k# W4 _. x) R8 n1 j* X& m2 W
  53.         memcpy(buf, mac, 6);' u% m& _9 Q9 w# W+ f" D+ V  @
  54.         memcpy(&buf[6], stbid, 18);1 I9 @! d8 [* B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' j3 _( P5 A& d
  56.         if (fd  < 0) {5 K) N. a& e8 [" a( R+ Z. h6 D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) Z3 O1 i) }! E9 h6 U* r
  58.                 return -1;
    , i( b" @0 O6 x' X4 W/ @
  59.         }9 Y/ v0 I; u$ \! P. |
  60.         arg.sub_addr_count      = 2;
    2 j6 a, i0 k" F4 f
  61.         arg.data_count          = 0x18;( p4 @9 W4 ]8 [  }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) E+ B1 D9 C" @6 ^
  63.         arg.e2prom_cmd_data     = buf;
    " O$ r! a+ B: ]" Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- d: c9 I+ g6 d. W% m) Z, n2 k6 S
  65.         if (ret != 0) {: f4 s0 {. p  G; R7 P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # n1 \& M4 r( J
  67.                 return -1;6 z5 E* e' s/ z, q7 h5 m" s& ~# P
  68.         }% ~) \% p; E6 v2 t
  69. 3 B& K! v. U5 F4 r& H( U8 Q5 _/ q
  70.         return 0;5 I) e3 ?6 S2 O) a" z& j( T! M
  71. }
    & R, M7 O' e' P" G
  72. # }  T% y$ p" G* V
  73. int main()6 |- \) h1 u& u/ W
  74. {
    / f+ L' {1 j7 \1 E
  75.         char c;
    - g6 D$ E2 ^" ~7 c7 k
  76.         int i, macs[6];
    ( l$ I5 i# e9 Z* W, u6 ~. l- v" K
  77.         unsigned char mac[6];
    ; x0 G4 T: t. A& m, [8 \
  78.         unsigned char stbid[256];
    / m6 e5 B2 Y. s2 G- {; D/ {

  79. $ o# ]" Q* \1 b. A( {
  80.         if (readparam(mac, stbid) < 0)/ m8 H& |# z& W) x& S
  81.                 return 1;
    $ T, n. @8 r) c( d+ E

  82. . m* y+ }( i9 k+ z7 b
  83.         printf("Current parameters: \n");; [, a5 X  J" j" U. _. [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 g' h2 ~6 G. y- a: F
  85.         printf("  STBID: %s\n", stbid);5 D3 ]/ m1 s- ?- [- |. _! H0 E6 u: G
  86.         2 r& k& J- }  ]2 g/ a  C3 ^6 O) L) e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: H) n1 E- }' ~1 v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 E  W6 g! v/ u8 p# g) L
  89.                 printf("Input MAC error\n");
    ( `% ~! |. o8 C
  90.                 return 1;0 U# N8 B! i; K8 d
  91.         }
    7 ^- }# b0 V3 w+ G
  92.         for (i=0; i<6; i++)mac[i] = macs[i];1 b/ c9 k3 p1 h: O
  93.         printf("\nPlease input new STBID: ");
      u8 O3 T8 n$ x) I) S7 V
  94.         scanf("%s", stbid);
    $ |5 w2 W. ^7 a6 v; N7 c
  95.         if (strlen(stbid) != 18) {3 }' r9 j7 F- I" N
  96.                 printf("Invalid stbid\n");6 ?1 p. ]( T* g2 ?) Y; k
  97.                 return 1;2 o0 o% s  s' P
  98.         }
    5 [3 q2 Z& L9 x9 Y1 e
  99.         printf("\nNew parameters: \n");
    ( J  H; z; m, w0 x: e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & V7 y1 ]- l# y' I6 x- ~; ^% N0 W7 l
  101.         printf("  STBID: %s\n", stbid);
    1 X& b8 A% ?% w- r4 ~/ P
  102. / Z/ v. s+ S6 O+ K, y
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 d6 p3 e% p; f( }
  104.         for (;;) {$ H$ |! ~( j# d4 }
  105.                 c = getchar();" m  S! @' _" \/ ]
  106.                 if (c == 'y' || c == 'Y'). Z7 [0 y( X& w0 T
  107.                         break;5 R3 W3 D: U0 X1 b8 F
  108.                 if (c == 'n' || c == 'N') {3 t+ F6 n( ^  k! q+ u% x; s6 P8 n
  109.                         printf("\nAborted.\n");% W$ N  K; ?4 Z: I1 g4 \+ x) e
  110.                         return 1;: b5 J7 X: ]( q( i, V2 L
  111.                 }
    & q& \! @5 a6 G
  112.         }
    ) m$ H. @+ a) Y7 M- W3 b8 V: f6 y
  113.         if (writeparam(mac, stbid) == 0) 7 i6 u% S; M/ P, N, n
  114.                 printf("Parameters changed.\n");
    : ?0 B0 v3 g! v/ {8 e

  115. ) Z9 G9 m3 x: Z) q7 P" E
  116.         return 0;
    * W+ R7 x- [7 y8 g0 h1 ]
  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 5 v) H6 v: ^5 k
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 `/ `4 W0 x4 @4 G
你用的编译命令行格式是什么?
9 ^3 }# @! I5 W' m" I
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-24 01:03 , Processed in 0.023907 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表