查看: 16414|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 t4 A" l+ b, L! b- C5 k# g' `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig7 Z! T4 L) ~4 m) R0 N2 J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% S4 ]6 h! F& M. T% z2 dusage: himr <address> <value>. sample: himr 0x80040000 0x0$ x. t/ p0 _8 ]1 S
6 m& D! G' d6 I( c& m9 v/ F
, i" O. r% Y  G
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) T2 s% R0 I3 r# J' a% K% c: ]
/ O* S" \, Z7 Y/ u. V5 f
补充内容 (2012-3-8 09:42):8 {7 ~; u8 U/ R. t" o. @2 H2 R
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; s! U( [; E. q! {) {. s# ^: m: ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
$ r, l% n$ O$ F2 E2 Z* Z" k; s* ^6 y
himr <address> <value>. sample: himr 0x80040000 0x0( N, b% N$ O9 \5 \1 }% z) S  q  N+ Z

+ @/ X! M2 Z2 x# W例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 c4 W! C1 N& B: G" [himr 0x80040000 0x007 [& p* B" d2 n5 H2 r
himr 0x80040001 0x118 n+ j( d6 s( C. L1 O
himr 0x80040002 0x22
6 p0 q5 C: J. y, b; Ihimr 0x80040003 0x33
. }9 J! B! N$ _+ [" }* Ghimr 0x80040004 0x44
# b! R7 C6 B' J8 u$ V& u) w/ `: J- ohimr 0x80040005 0x55; \2 i% Z* J/ ^: I, b3 I; S
7 B! R: G, F' J0 P' b: r* g
SN也是类似。
* f! `/ a/ S: X& H% V/ V, s* P; q& t# g  i- V4 M
现在主要是,谁告诉我们MAC和SN的地址?
& S6 Z9 o/ d' A" Z: E+ W' o9 ^
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( I# M7 P5 ~: ?" V* f+ u一直想找到运程修改MAC和SN的办法,苦于无解啊
: @/ Q3 _2 A; j! g/ r! c
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , @$ w/ @( X8 S- k2 w- Z

* I7 ?+ e9 J; j2 l6 p# g修改的代码早有了。到今天不会编译。
$ `; e: d* ^3 O7 ]2 g. [' o5 ~需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* R" D' P& r) @' f* m: B) n
  2. #include <malloc.h>
    % p* [5 a% N4 L% D3 U/ e$ Q/ \8 m
  3. #include <sys/types.h>
      D# ^* n7 j7 p8 d  I
  4. #include <sys/stat.h>
    $ @$ o$ a8 X' t4 y2 F. G5 j
  5. #include <sys/ioctl.h>1 b( i6 ?# W  d1 R, c8 q. S
  6. #include <stdio.h>
    ( Z/ p% K& \! R% h
  7. #include <string.h>4 H) a# F+ o& u

  8. ; ~4 c( q. [' I& R3 e9 a7 K
  9. typedef struct {" J' }# B7 p! X+ Y, i
  10.         unsigned int        e2prom_cmd_sub_addr;# \, a, i2 W4 T7 k" ^+ x  i
  11.         unsigned int        sub_addr_count;
    ! V( Y2 `9 Z8 @* z
  12.         unsigned char*        e2prom_cmd_data;+ Y! ]% ?3 M' W1 h
  13.         unsigned int        data_count;
    0 c. O5 C; f" W# t+ m6 h+ ^
  14. } e2prom_s_cmd;+ d3 v1 F: l/ {' H% l" N" I
  15. $ t9 Q  q# t1 C7 C+ ?: x
  16. #define E2PROM_CMD_READ 1. Z- O1 N: x: ]! E& M7 D
  17. #define E2PROM_CMD_WRITE 2
    - M- D, p  a, b( B4 R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , p8 O7 j  |, Q: O; e, \5 J

  19. 5 `; X' U1 z6 P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 u' ^; d& s3 @/ P. O
  21. {
    + p5 r" k8 M4 H& k! a
  22.         int fd, ret;* }7 g2 a4 z) }, q1 S+ k
  23.         e2prom_s_cmd arg;
    ; c/ V; y& \9 w6 x0 ]1 g7 P: S& ~
  24.         unsigned char buf[0x18];. g- Z* ?1 h9 C; J) z- o
  25. # [# p% c% v8 |$ I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , p  T1 s) X- Y: @; N
  27.         if (fd  < 0) {& j7 [& D' R  |7 ~1 f. @0 ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; y/ a' z5 a- O
  29.                 return -1;3 g: e$ P/ v6 t, H5 r
  30.         }
    ) z" C! i- {& ~
  31.         arg.sub_addr_count      = 2;
    & y  [4 U7 {# R# W0 m
  32.         arg.data_count          = 0x18;
    ; \$ V/ R- B0 L: y
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 c! k+ e# w; }
  34.         arg.e2prom_cmd_data     = buf;9 [9 J. o: Y3 y2 |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , s& ]5 T8 ^- Z; V
  36.         if (ret != 0) {
    ' @; s; k$ m5 e, X6 j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; }0 z$ U* Y1 P, O
  38.                 return -1;2 l" ?# P0 v, l  c4 I
  39.         }
    1 x8 L3 u0 Y' w
  40.         memcpy(mac, buf, 6);
    ; s/ K2 |# ?# _" m1 [- L
  41.         memcpy(stbid, &buf[6], 18);
    7 t: E2 V# P( ~% L
  42.         stbid[18] = '\0';4 L8 _) y2 `0 _5 e6 w

  43. & K' R$ V) j/ C" k1 h( e
  44.         return 0;
    * |. o% C- @2 M2 j3 Q
  45. }/ }' {9 d5 ]( H: |9 c
  46. / ?9 ^9 R' i/ R: d" i# t- `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# @! F1 |" N1 M! f; k# A$ f
  48. {
    0 C; N' n6 p& @
  49.         int fd, ret;! [% M  [8 k& I% y" o& K2 K
  50.         e2prom_s_cmd arg;
      C# {- I+ y/ i3 P) p
  51.         unsigned char buf[0x18];
    , q8 J3 G6 u# d$ d% L4 t6 G

  52.   `$ g, ^5 K" q$ @) ?9 Q2 J8 U
  53.         memcpy(buf, mac, 6);
    . q) {/ ^0 L' d/ Z' o( D8 G8 x
  54.         memcpy(&buf[6], stbid, 18);
    " q( J: Z+ Y, G- y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : M+ M' g' L4 ?( w- L9 s$ _9 y# o
  56.         if (fd  < 0) {# ?% o% [6 |  v+ w; K; V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ Y: T  j1 X5 Q  U) g
  58.                 return -1;
    ; j' q4 ^) ~) c$ r$ s$ T9 ]. k, G; s
  59.         }# P# f2 [( E' {0 U/ }6 e
  60.         arg.sub_addr_count      = 2;' a! \* C1 B0 q1 S3 M
  61.         arg.data_count          = 0x18;
    1 @4 {& e2 V; u, k: e9 A, Z6 e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; J% g# `4 n/ K- B& q
  63.         arg.e2prom_cmd_data     = buf;6 T+ n1 l" D/ R! M4 a4 d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% u! d$ P/ A0 L* t! d  q
  65.         if (ret != 0) {( S8 C; f' C# c) ?+ q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 [. Z; Z2 X$ _$ q) i% C7 Z
  67.                 return -1;% S. ~+ K4 W& X4 a
  68.         }' [* J$ `  V5 v! C- S' i

  69. , X- f0 e: Y$ [, V$ ~5 a5 M: l" K
  70.         return 0;
    : v1 [$ t9 h, }; A) r
  71. }
    , `$ V( i% U+ f8 I* Z
  72. 1 G) u% ^2 F) A7 f( M1 N3 h: L/ x6 d
  73. int main()
    " p6 D8 r/ q5 f
  74. {
    ; S% s$ J# q2 O& m' i* C! i
  75.         char c;" J$ o8 ]5 T$ S/ P# f; L; `0 L' K
  76.         int i, macs[6];
    , l2 P( K- H9 T: r. ?/ d
  77.         unsigned char mac[6];/ @% R, e2 c7 k
  78.         unsigned char stbid[256];. x+ H/ c' {2 C7 u7 @4 Z# {$ E
  79. 3 o' R+ D9 e- Y- A) y9 Z- h
  80.         if (readparam(mac, stbid) < 0)
    ! ~$ g; ^! S4 I4 u: K% i: }
  81.                 return 1;! x& w* D/ H, t$ D+ S
  82. : ?# T' N9 j# U, C' L, b) s
  83.         printf("Current parameters: \n");% w. L1 u, o9 {1 u& `+ A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 F  K9 ?. j, Q1 n! a3 O: R7 ?
  85.         printf("  STBID: %s\n", stbid);5 c3 g/ p( O3 n3 J1 K1 O
  86.         + |$ \: q3 l0 j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + v* L5 A' v9 f8 f6 Z- H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " n; J5 H; }8 E! p5 i
  89.                 printf("Input MAC error\n");' M# P- Y2 S: ]$ X
  90.                 return 1;* O) H$ H" s; F; w
  91.         }( R: }8 e& d' ~
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; ?2 D4 N* C# N- t1 ~' K* @
  93.         printf("\nPlease input new STBID: ");
    : S. n! ?6 `( T* C+ l; U
  94.         scanf("%s", stbid);
    4 w; l/ C! i& @2 c) S' ?' O9 O) o
  95.         if (strlen(stbid) != 18) {: f) i0 N7 H6 `6 h) C
  96.                 printf("Invalid stbid\n");
    4 I4 e5 D2 e1 h, w; p$ d
  97.                 return 1;
    8 m, w3 ^) n4 x# g1 X7 u
  98.         }
    3 x. `( q: L% E  r2 u! t2 m8 R
  99.         printf("\nNew parameters: \n");
    , m" F9 r, D0 o! m- B; b" u2 I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) l* c: R9 `3 ]- p8 P- L8 C$ A
  101.         printf("  STBID: %s\n", stbid);3 ^9 u4 ~- h; Y

  102. 6 |) J1 i2 _/ ]) ^0 u1 H, a
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 ^9 @) Y& r# Q1 [0 F9 K
  104.         for (;;) {1 P; ~: [  E( x1 g/ I' v' ?
  105.                 c = getchar();$ }* M( |; z9 V/ x2 y
  106.                 if (c == 'y' || c == 'Y')# u+ \' T$ z) A, |
  107.                         break;
    & B* R; p$ ?/ Q# u
  108.                 if (c == 'n' || c == 'N') {" E3 z& G- u; }& g# M5 _8 W
  109.                         printf("\nAborted.\n");
    ) F0 D" r* C+ p4 f) }& {/ ~
  110.                         return 1;0 B) L# Q% ~0 K/ {0 Z& s, v1 ]; r
  111.                 }9 C9 N. k  W2 I. M& ?
  112.         }$ z! f4 W  \  A% T
  113.         if (writeparam(mac, stbid) == 0)
    ' c7 e& P; e. t- s
  114.                 printf("Parameters changed.\n");
    7 _9 ~, p- J( _/ p% W# k! N

  115. ( s7 V7 U3 S3 B4 P  e( t+ V
  116.         return 0;
    9 t, ~5 R9 D. d2 a9 {& {
  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 7 T" Y- J3 |* d. w
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) \! Q' m  A+ [% D+ N% s5 i你用的编译命令行格式是什么?
* J; A6 R3 G" |6 f
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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