查看: 16517|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 O6 v" m" T& N: @7 @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 A8 `6 g/ {1 e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' ^5 D: g* ^5 ^; k0 T; A, w  O) d6 L
usage: himr <address> <value>. sample: himr 0x80040000 0x0/ G* d% C# E  ~; J% X1 w8 j

" w) ^5 I5 X9 E9 W" q8 a& N& r( u7 }# B( ~, U. H4 y) {
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# M- `4 k8 |; c: ~2 o) p$ _
) ~0 j* S; F; w; D
补充内容 (2012-3-8 09:42):  m" T  z( N5 y9 E* W
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数8 w  h+ c% k' k6 J/ x8 X, ?) P: Y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
; v4 g+ B- V) h
$ l2 i9 h. H9 |' N* v- K' l5 J! _6 Bhimr <address> <value>. sample: himr 0x80040000 0x0
) L# V& ?' G5 x' Z/ j  D
8 m; m) n8 A3 L( Y) Y; ]' [例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; ?6 J! Y, E% ^$ Q
himr 0x80040000 0x00
* r1 h& H! z' G" w% T% ?himr 0x80040001 0x116 h8 I: m+ t1 K/ ^4 [  c& i
himr 0x80040002 0x224 p1 B3 [9 S" \' u% F4 z" `
himr 0x80040003 0x33
3 s1 ]9 q5 _+ a5 C# ohimr 0x80040004 0x44
- D  m/ M: E/ T" C) bhimr 0x80040005 0x556 M; k' j: z& _( R- W4 Z1 o
+ b$ [) B5 s7 ?4 K
SN也是类似。# Q1 ~9 `. w& g7 f3 @
, b5 k% n9 w2 ~( P% \
现在主要是,谁告诉我们MAC和SN的地址?
) k1 K# |% G' r" \
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; _5 T7 I4 ?9 X0 z" M/ f一直想找到运程修改MAC和SN的办法,苦于无解啊
3 O& |- H! Z* @
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . \, e2 n) @& ^3 g- n: j+ {# k
2 Z0 b# V! k- t, n
修改的代码早有了。到今天不会编译。. r5 z  f9 D* ]" Z9 B
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / X& L8 s- H6 \' n; P- f
  2. #include <malloc.h>: ?; t4 R! S1 h3 e5 N/ q6 m/ {
  3. #include <sys/types.h>( D" k8 N8 U$ q  v2 n
  4. #include <sys/stat.h>
    ( |- `% |* E; x/ S% j& F! O5 ^1 R, w
  5. #include <sys/ioctl.h>/ W. \' j$ \: U% I+ }1 A
  6. #include <stdio.h>  l- ^( z% r, J/ f; v
  7. #include <string.h>. t# {9 E* P  g) |( V

  8. : Q  _/ ~, @' V1 N% y8 y9 m
  9. typedef struct {
    - E& K( G' K% B& i% c- d
  10.         unsigned int        e2prom_cmd_sub_addr;* S; M" d2 x$ x; H! a. F7 I4 y8 `3 A2 @8 z% F
  11.         unsigned int        sub_addr_count;
    6 L+ Z  {% B2 U$ s
  12.         unsigned char*        e2prom_cmd_data;" f$ S8 b6 U' s2 H
  13.         unsigned int        data_count;, b9 l) \& k) X" j( m, `) U
  14. } e2prom_s_cmd;
    1 v; t( i; U: j8 K/ I# N: n

  15. ( |: j# t/ _: N. s
  16. #define E2PROM_CMD_READ 1
    $ Y1 Y; x9 C. L0 ]* E( E3 i+ f
  17. #define E2PROM_CMD_WRITE 2' i/ `7 f9 u: @1 ^# w6 d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 y# a* ?9 o9 c' j. T& u# a/ Y

  19. 9 s- {. D8 A0 p9 V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / l% u6 Z) _  W, J1 e9 X
  21. {% K) {2 v; y  A6 }- Y
  22.         int fd, ret;! G* t6 e5 `& R) N* Y3 V# S
  23.         e2prom_s_cmd arg;
    % X+ u1 h' Q. p$ A! q
  24.         unsigned char buf[0x18];
    " j0 r1 Z* }: n

  25. 4 c! d7 C0 m5 h3 c; p1 b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 N& f( [/ L+ M% `0 _; q! l5 t
  27.         if (fd  < 0) {
    ' v( \( U6 t: g& B  g( y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 _2 w2 _3 B0 K0 E/ u$ ]7 a9 p- v! o
  29.                 return -1;
    % N$ o) [4 `  |# Z( v5 y, [+ a
  30.         }9 k. P" K9 o. o2 C: m
  31.         arg.sub_addr_count      = 2;
    6 J3 R% Z: w6 y- g8 u3 ^
  32.         arg.data_count          = 0x18;; ]3 |  N7 q5 ?9 y/ t
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( F% u; ^6 J  L% ?# L" @3 f# `
  34.         arg.e2prom_cmd_data     = buf;
    ! A  Y+ t' D; L" h7 _5 R% [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);5 l, f6 U/ m+ D) n2 l) ^( c4 S
  36.         if (ret != 0) {9 M! k. Q9 V3 `) @: j6 J; r& A
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( c! W  l5 K, P; u
  38.                 return -1;
    7 k/ C; o1 ^! D
  39.         }3 T1 z/ m5 k+ ~# U. l' d
  40.         memcpy(mac, buf, 6);
    1 p  v8 [- E$ W* R
  41.         memcpy(stbid, &buf[6], 18);
    / k6 u- `( U( w2 ]
  42.         stbid[18] = '\0';, h, p+ D: T+ B5 p6 i5 I
  43. ; ^4 o' a+ X; [  b* i& Q9 r" Y7 p
  44.         return 0;" j5 B- L, \* u$ h* ~$ K4 w1 ~
  45. }3 O1 c1 R" D; Z/ {5 j& M& U
  46. 2 Q8 d- T4 l* A7 r; u0 v& X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 Q9 t  {2 `2 R3 U) z1 \! i! \
  48. {
    / @5 {7 N0 _2 j3 i7 U2 k
  49.         int fd, ret;
    " P# f- s$ E- U" E% f
  50.         e2prom_s_cmd arg;( [% K  J, \# B2 @
  51.         unsigned char buf[0x18];
    + L. v, p9 f( }, {) t! v
  52.   v* Z6 j; b$ O
  53.         memcpy(buf, mac, 6);
    ; H" f# O, P3 V1 T# L5 Z
  54.         memcpy(&buf[6], stbid, 18);
    ; ^8 v% g4 M: X6 j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) b0 f6 E% X' \
  56.         if (fd  < 0) {  N" U$ G3 ^- M9 ^4 R4 f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# e! m$ _) \! ~+ [; _
  58.                 return -1;& [0 `0 t) C% P& L) S
  59.         }' S% J4 G$ ?6 b5 k5 l% N8 x
  60.         arg.sub_addr_count      = 2;
    3 [1 Y) L$ t/ f! Z
  61.         arg.data_count          = 0x18;- x. I9 M9 J+ V; ^0 z5 D
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 v& g9 ]% n1 s$ S2 a5 v7 e
  63.         arg.e2prom_cmd_data     = buf;+ H, U" j! m2 P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 L9 ~8 b/ W* k+ C5 y! w. I6 e4 V# y
  65.         if (ret != 0) {$ w9 M' ~: D  o% V" O" W  r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # L0 k# W, C# w! N1 i3 X
  67.                 return -1;0 ?. z  F2 L, A3 Z
  68.         }9 j4 C7 U! q8 I9 |4 S: F' ^

  69. + ^2 f6 y( Y: a& t  J7 F0 H# M( q
  70.         return 0;
    0 ^, W3 D* P, H3 A1 u9 y6 x# Q
  71. }
    * D, k; ]8 S( b% C: Q0 O- \
  72. 6 c! u7 P5 m; o. p- }* ?
  73. int main()
    5 z0 f0 b, i) i% P
  74. {
    ( J9 v# R0 ^) n  M
  75.         char c;
    9 J8 p4 g  M$ j. x/ t0 ]5 T
  76.         int i, macs[6];  l4 U8 t* M3 V
  77.         unsigned char mac[6];
    2 U% w8 f- S  l. i& r
  78.         unsigned char stbid[256];
    + _1 z- X; T9 @2 F3 U6 ~: @7 G

  79. % H5 v9 B) f. q' f( x# G
  80.         if (readparam(mac, stbid) < 0)
    , d8 Z# j% x5 q/ ~. b
  81.                 return 1;
    5 {1 @/ I4 ~5 q, V. Z; N# {3 S

  82. ) a) D7 a) T, {' ?- g- Y: h! ]
  83.         printf("Current parameters: \n");
    ' q. r  D% F. C3 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : ^! D2 P2 e: k1 U. P5 V* `
  85.         printf("  STBID: %s\n", stbid);/ L7 G) n) C4 N* S7 v/ r6 z
  86.        
    6 @0 I' ~, O8 ?6 Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) e8 o: y3 j1 b& ~% x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ @" B& p& `8 }8 X# D
  89.                 printf("Input MAC error\n");
    9 B6 m) C7 r3 L+ }5 z; Y
  90.                 return 1;
    4 d+ s, q: k$ C' T7 g' S
  91.         }4 i9 c+ @. G" u, E+ ^/ ~" a+ R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 ]7 i4 M% Z7 i$ m. @
  93.         printf("\nPlease input new STBID: ");9 P" y- Y% L4 x  n$ w
  94.         scanf("%s", stbid);
    8 b" F! V" u, G
  95.         if (strlen(stbid) != 18) {
    9 L0 Y% c4 Z& o
  96.                 printf("Invalid stbid\n");, k0 W# |* m7 C+ F6 H  I
  97.                 return 1;
    2 C# E1 l8 D! \8 d1 E
  98.         }
    / `$ O- {2 m/ S1 Z6 l" l0 P
  99.         printf("\nNew parameters: \n");* k- L9 J/ C8 o# D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 V' x% `3 D% I% u# a+ B
  101.         printf("  STBID: %s\n", stbid);
      h. }. o! O$ E: Z

  102. 8 f" y- F) Q5 X* E5 C
  103.         printf("\nDo you want to change paramemters? (y/N) ");* u6 x, j  P% _
  104.         for (;;) {
    , `/ p6 W% S: S0 m5 A
  105.                 c = getchar();5 }! G/ T! N1 ~/ n$ d
  106.                 if (c == 'y' || c == 'Y'), v8 g5 \3 t, R( R% q5 u. }
  107.                         break;
    $ z) U9 \# [1 D
  108.                 if (c == 'n' || c == 'N') {& x" U6 o; b6 c2 @: T$ ?  u9 v) ?
  109.                         printf("\nAborted.\n");
    9 w- T& M5 p4 B& P  W
  110.                         return 1;4 z* d' Z  T; v* j4 i
  111.                 }
    * G( H2 p# ^) f, ]  t/ `# P
  112.         }1 l, g: Q5 N/ Z1 M2 E! g# }
  113.         if (writeparam(mac, stbid) == 0)
    6 k4 e6 r* ~8 ?/ s/ m6 E
  114.                 printf("Parameters changed.\n");
    2 x7 g+ p, q4 e+ |6 H. j

  115. . j% w) Y4 X, j7 Q  E/ _+ L
  116.         return 0;
    $ P" ~; ^+ Q% y/ G
  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
. h! c4 I- R! s7 {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ C9 W  l: J0 X9 t! y
你用的编译命令行格式是什么?0 K/ `% P( i, T  V- Q$ k
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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