查看: 17386|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! D- S6 [* k( k$ R7 m$ N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* R3 B5 ^1 H' E  Y( {9 i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# e! a: r4 \7 L1 `$ W/ h* lusage: himr <address> <value>. sample: himr 0x80040000 0x0
( r5 H0 J/ w; u# P, E$ d
* ?5 u5 q- n( w  @" J7 a
, x  A- n6 I; h# ]不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ ~1 `' m; k- h$ e
* K) Z1 A1 v8 X+ {" }9 I, B6 m
补充内容 (2012-3-8 09:42):" Z3 l9 s$ A4 p! y- |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数+ q* J$ x/ p' x0 B% u. M
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。. ^0 L+ u- M" B9 a' ~
8 ~$ L. I7 S! w9 L1 ~1 E4 ?
himr <address> <value>. sample: himr 0x80040000 0x0
6 J1 i. m, F4 ?& Y% L! p3 ^+ _6 Z! [- V
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 P5 K7 c1 V7 R  |, {! Jhimr 0x80040000 0x00
' _9 m" A/ D5 e% V5 H& Vhimr 0x80040001 0x11
2 _0 S5 k( M9 F& \2 Ihimr 0x80040002 0x22
- q* u# e$ [/ k3 M: @himr 0x80040003 0x33
/ p" J: [1 P. H  w  c* H1 dhimr 0x80040004 0x44
5 U7 |; L* O: m( A7 D" r: V  ~himr 0x80040005 0x55
8 t! |. C' k0 D. y; a
7 U# ?' {% j1 v( tSN也是类似。- R, a. G# z, }) w# \6 u) k; `5 C

8 F& ?0 m; L, G# `& {现在主要是,谁告诉我们MAC和SN的地址?3 N, S9 B% M% P) j& S% ]9 o5 y  O6 R
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 e& r! W! t1 R4 Y( `; B
一直想找到运程修改MAC和SN的办法,苦于无解啊
, e$ p) d* p! O& R# X8 T% ~
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : ?; v' g& O/ Z4 g
& |0 R$ \& ?8 t4 d) {8 Q0 K
修改的代码早有了。到今天不会编译。
1 N; P* F/ P  d: W! H) w- S; ~! V9 ^需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 q2 V- [2 q3 |& i
  2. #include <malloc.h>8 `* K( ]! \# J) Q7 s8 v
  3. #include <sys/types.h>
    ( t; a" x$ ~' F; X
  4. #include <sys/stat.h>
    # w: z+ E2 ]$ o/ V8 O+ x% e
  5. #include <sys/ioctl.h>
    ) f* @) s" X' e. l+ |6 R" R
  6. #include <stdio.h>
    . G  L: C9 _5 M$ ]( a; Z
  7. #include <string.h>4 |; N) F) }7 u' A  j) B  ^. S
  8. * m4 t$ j7 k3 n" ]" |
  9. typedef struct {( A# m7 N8 r5 o0 I0 N
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 m+ [4 o  a" Z0 K. ?
  11.         unsigned int        sub_addr_count;
    . K! t7 k* \$ G9 J# O' X
  12.         unsigned char*        e2prom_cmd_data;
    , H2 F3 _* x+ G# w" F3 y
  13.         unsigned int        data_count;
    * G* j. I+ L9 E$ l* R2 C$ x
  14. } e2prom_s_cmd;! b- u  q9 K; I4 D

  15.   T0 T- @+ E  L; g* \, X/ P8 i
  16. #define E2PROM_CMD_READ 1, j# f3 J. S* S$ o/ f4 f
  17. #define E2PROM_CMD_WRITE 2% ?- Q: r+ z+ J
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - d, }- a( @( m5 G. K
  19. & M& C( W4 j- p% W$ u2 t" X5 a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  {( a  Z5 a% s- |4 l5 G9 T
  21. {4 a/ t3 U8 R. j* u2 ?: D+ [
  22.         int fd, ret;$ Q2 ]* h3 F, E: [8 {
  23.         e2prom_s_cmd arg;3 Y8 ^4 O" A  H, \" J4 d
  24.         unsigned char buf[0x18];
      n) o9 Z8 a0 @* O

  25. ( M7 e- F7 R/ `; g3 q& `  ~& r: R
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " B" K9 A; \- s0 i
  27.         if (fd  < 0) {) L- ^" k! o# K: w+ c" h: ^" P0 R& X/ j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 ^3 Z( J# a& W
  29.                 return -1;# z( D6 j) Q! L, P& z; P
  30.         }
    . o+ k, T; l3 e& C2 W+ X- u7 C$ _
  31.         arg.sub_addr_count      = 2;
    0 A: O* |* b$ F  {$ \2 l" [& g
  32.         arg.data_count          = 0x18;, n; }3 e$ ~& W1 b8 ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 I5 W) u& c5 T; l0 ?9 O8 C$ {
  34.         arg.e2prom_cmd_data     = buf;
    & v" D* s! @, h: {2 C3 e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * Z5 c$ X/ u/ ?: F& R" N
  36.         if (ret != 0) {
    2 `% E5 w2 m# q6 c* n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);* [; G4 S2 D% ~2 S8 Y# i# ]
  38.                 return -1;2 b& {% r. O3 a( \/ j. C
  39.         }( {% c! Q4 `0 v: g
  40.         memcpy(mac, buf, 6);
    1 a: X" b  H4 V8 W/ T
  41.         memcpy(stbid, &buf[6], 18);. ^0 {. g2 C" D6 Q* T
  42.         stbid[18] = '\0';
    # I# J: \( c' e# K4 X
  43. , I( H: F, i, N
  44.         return 0;! n4 P& r/ T4 e# m1 U! ~
  45. }
    / r+ f* l' `$ P+ L# p6 C# P: E
  46. 7 J8 }6 U4 Z( J' S$ k- `; u/ \1 B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # `7 `- A' z+ L: j3 y$ R" j
  48. {
    . l  ]5 s, a& J& ?- S4 `
  49.         int fd, ret;
    ' r& T" J9 K* R$ [" v* s( ]6 |
  50.         e2prom_s_cmd arg;2 Q. m' @9 T8 Z5 l
  51.         unsigned char buf[0x18];+ ]/ W& A/ {8 i! h# B- D5 K. ^

  52. ' c& u0 {# h. j, E( [/ ~
  53.         memcpy(buf, mac, 6);
    4 v$ \2 N, e" t' q/ E
  54.         memcpy(&buf[6], stbid, 18);
    8 _& T" J' Y2 J& N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' C$ Z* s2 ?2 u1 L& p4 o$ t8 n2 k7 T
  56.         if (fd  < 0) {/ I4 l, n6 v( N+ K9 s1 M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 Z6 v# u, p# U5 V) `+ y
  58.                 return -1;: Q4 |8 j( s" j7 A# T* |
  59.         }
    , n& B  V1 R$ {1 n# Z& F( y
  60.         arg.sub_addr_count      = 2;4 i/ v# r; z; P) A7 e
  61.         arg.data_count          = 0x18;; u. v7 C$ C6 _; I7 Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;" ~  a6 d3 a0 L
  63.         arg.e2prom_cmd_data     = buf;8 S2 X) m0 ?9 m, X. b$ U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 z1 C6 x2 ~' @% C' j! T' D# G, b- L
  65.         if (ret != 0) {# k6 z/ d# M- q+ {4 o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. o7 v+ N' ~( ]& ]
  67.                 return -1;4 H1 Q; e0 V+ X
  68.         }9 e$ h7 a. Z7 d" ?* {+ i

  69. 4 |- K0 w# ^$ x, D+ X" U
  70.         return 0;
    8 `. {+ C% o$ O/ q
  71. }- O. p! V, j2 n- Z

  72. - u$ j* a5 R0 C8 s; @  A
  73. int main()/ x* K$ B) n: o9 i( P! ^" A) r5 G2 n
  74. {, f, ]7 [$ F& P) D
  75.         char c;: u' ?7 e4 ~' b0 R* \+ r' y& x
  76.         int i, macs[6];
    - w9 C9 d7 E3 J3 {0 V
  77.         unsigned char mac[6];3 x3 a& ^/ u4 e: s5 P! g
  78.         unsigned char stbid[256];
    ' o1 M: g( {; h, v+ U  N

  79. 0 {: V5 F( r2 W' o5 `
  80.         if (readparam(mac, stbid) < 0)
    ( {/ q) {4 H" M
  81.                 return 1;
    1 e" J0 q1 U  ]
  82. 5 ]: ^/ x; ^: L, O
  83.         printf("Current parameters: \n");; ]6 d3 W; |, R2 i, q! K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" H6 P% s. W3 F& l
  85.         printf("  STBID: %s\n", stbid);0 Y# z  f( `/ |, m/ x- v9 W- \% u
  86.         ) N, \5 X6 e7 d* M) w3 B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! W( @1 \+ u/ b/ K! W0 a4 v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. |( ?% m$ V# m( }+ |- |
  89.                 printf("Input MAC error\n");1 H1 W7 Y6 M# L3 M
  90.                 return 1;2 [  L: d1 z5 Q: m* T. F! I
  91.         }
    5 A$ O' j( x) O8 r- x7 d4 H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    % R* i/ _- S# b: Z' X+ f3 p' a! o
  93.         printf("\nPlease input new STBID: ");
    ! Y# l. |  Q; ]7 S) M( q
  94.         scanf("%s", stbid);
    4 \# N: }2 O: s. D$ \' t  r8 X
  95.         if (strlen(stbid) != 18) {/ I, E, k4 c3 b' g( a  ?
  96.                 printf("Invalid stbid\n");
    & U4 t3 k6 @, W' n* i
  97.                 return 1;- A( \& \2 H5 C  s: P2 S: J
  98.         }5 B" t$ J- z  j( h2 X. @6 @, W
  99.         printf("\nNew parameters: \n");  v, f4 ?- l* E3 d& e) x4 x# \7 L- W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  j- \5 F3 F, J: L1 y: s# o
  101.         printf("  STBID: %s\n", stbid);  W6 ?; n& d7 X+ L4 Q) g# i
  102. - W$ M1 W* n% l9 @! `% s
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 F. k9 t1 p3 @
  104.         for (;;) {
    . K& ^1 Z3 f0 f0 A1 y% D
  105.                 c = getchar();
    : i# J9 [4 l: j2 G4 Y
  106.                 if (c == 'y' || c == 'Y')3 H6 R# J7 {- v
  107.                         break;; Q3 S, o8 F$ n
  108.                 if (c == 'n' || c == 'N') {
    % h- \2 V7 \% `, ]2 n# o+ T4 P  @
  109.                         printf("\nAborted.\n");: N1 p6 E7 q- P
  110.                         return 1;  M; b( s/ |7 @+ B6 v
  111.                 }/ L6 G! \! S" r9 o
  112.         }
    & H$ _" F' ^! D! S
  113.         if (writeparam(mac, stbid) == 0) # v  E) Y& g/ A( `
  114.                 printf("Parameters changed.\n");
    " |2 w6 A: ]2 E! F8 U* b
  115. . c: h, k9 R- [, Z+ f
  116.         return 0;/ k) }2 K5 n6 G* O7 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
0 t7 `8 B6 j' ]4 |: E$ S; S# f1 z在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. ~3 u/ ^# X) v- l, X! J) F6 H
你用的编译命令行格式是什么?7 z+ d% E1 d6 z6 x1 c! D
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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