查看: 17726|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 V' b2 Q1 W: Z! j: }: B
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 z6 F' R% [0 B' a" c. j; {" q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* h) U; T+ k( {3 m- q$ [8 m9 R* a
usage: himr <address> <value>. sample: himr 0x80040000 0x07 `8 \7 t3 t" R+ M1 `

" n  e9 B! z" G; |5 E- }9 }* _2 M. U# I+ b- P- V) q9 i! ^
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, D; q4 O) \7 y- M, D3 w! Z, p0 {5 C3 r1 u8 E' H4 w
补充内容 (2012-3-8 09:42):0 b6 e& |) G9 o5 x
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. d1 B: B3 ^. h) t' ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
1 N4 |+ h; D1 S/ o3 B9 W6 n
4 {' I; t! p4 v. n/ o/ f8 E4 qhimr <address> <value>. sample: himr 0x80040000 0x06 k. b7 N& X8 N0 Q/ O- C

6 V4 F$ Y* l: l例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* s2 `0 A6 z2 B. P& T
himr 0x80040000 0x00
" ]& h) a$ T- Ohimr 0x80040001 0x110 [: K& T, t1 s- H& j+ v
himr 0x80040002 0x22
0 B, u: v$ \! P; z* X2 X0 P6 t" rhimr 0x80040003 0x33
- j4 a6 s( @1 K8 V3 I  fhimr 0x80040004 0x44" ?7 E, P0 y5 ^! E8 w1 O
himr 0x80040005 0x55
$ Z, C: C7 f& u6 u1 N! B7 ]+ R% d( ^8 X) G. t: I
SN也是类似。
3 N: ^6 s; u# p9 F  m
+ q, H) t! G; B& t现在主要是,谁告诉我们MAC和SN的地址?
' T% r4 e5 D, E. `
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37   s$ S, F3 k, f) L9 p9 @
一直想找到运程修改MAC和SN的办法,苦于无解啊
3 S. G7 _; F, |7 E$ ~
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* O+ X; }- ~0 R) _# [' B$ p9 r, y
" R6 Q& U8 m7 k, b' J: ~3 s( P修改的代码早有了。到今天不会编译。9 s& G3 p5 R( e) Y$ Q
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( I% j, x# B6 E2 {
  2. #include <malloc.h>
    : s! ?  M2 E4 E0 K2 e* O) M
  3. #include <sys/types.h>
    ) u) i5 L! {# N( V5 p' c& E
  4. #include <sys/stat.h>+ e% Z, W$ j4 l4 `& h- G$ {
  5. #include <sys/ioctl.h>
    " V) x9 O5 S& X( j1 `$ Z
  6. #include <stdio.h>7 }- B+ c$ N+ Z! T3 Q7 H, n
  7. #include <string.h>2 l2 c( p+ Z8 S! i$ P

  8. 0 n! E8 |4 ~( N/ O$ {
  9. typedef struct {
    6 A* }/ Q" J9 p5 ?/ G* U
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 I" F# I! |* a- p' c
  11.         unsigned int        sub_addr_count;
    : N0 S! ]1 i& }* T* W
  12.         unsigned char*        e2prom_cmd_data;6 |0 x/ i& [% m0 }: r% P; c
  13.         unsigned int        data_count;* W( {! T+ T/ j, S' `- k7 B
  14. } e2prom_s_cmd;4 M3 j3 z' `' ]; [1 ^. f2 B/ s
  15. ; P6 T. m0 T" |( m% @+ r3 [; s
  16. #define E2PROM_CMD_READ 1
    / b3 ?: ^, o6 L) @
  17. #define E2PROM_CMD_WRITE 2! ^, o2 M7 s. H3 _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! `4 l3 F! d9 b! K
  19. 3 R+ q8 N+ J2 h! P5 b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  ^' u9 K. d4 {. x  T
  21. {
    & V9 G2 Z7 Z' B- y, b
  22.         int fd, ret;6 ^. H% T) ]8 }' R9 @
  23.         e2prom_s_cmd arg;
    : x7 q  b" P& Z
  24.         unsigned char buf[0x18];& I: q5 G0 }0 Y! ?$ P9 V
  25. 2 [3 Z5 `5 p8 [3 C& W( |  M: u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % |# {/ h2 {8 }9 W( j% J; h# Y
  27.         if (fd  < 0) {) S! \4 z) E5 l# I0 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# V1 x5 N6 i: V" `- u
  29.                 return -1;# q/ Z1 b, h- Z( f2 z" |% q
  30.         }
    * q$ u) T6 {/ r" Q
  31.         arg.sub_addr_count      = 2;9 T0 M7 ?) `! T6 F/ v$ l5 Z. G
  32.         arg.data_count          = 0x18;) a0 ]5 h6 {: |1 M
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' c& F. P/ q! f  I2 Y! c: w
  34.         arg.e2prom_cmd_data     = buf;, d) z# o1 k* Z! u' X9 u; e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( F( B3 C9 K# p; O, V- z* I. v0 c
  36.         if (ret != 0) {
      J: |( _& O! i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # W6 ]; {7 n# d" t2 @
  38.                 return -1;
    % `$ g! _3 J* d+ n: f' p
  39.         }0 t4 \& L# q3 D: }' F
  40.         memcpy(mac, buf, 6);( f4 Y+ ?% R- R7 J" O" F+ V
  41.         memcpy(stbid, &buf[6], 18);
    ! F; I' F8 T: t
  42.         stbid[18] = '\0';- @+ M3 d. ~/ T% u+ A1 z( R8 l! T6 E
  43. ; v, h& Z* V1 S8 @' c% f/ v
  44.         return 0;# D* g( }6 \/ I& F
  45. }
    - P$ i- m" F$ L9 F3 \, b; D# \: d

  46. , g& c: \$ v) y" l5 N4 K2 }& u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( P5 G" e2 G- a% s1 b) ^
  48. {
    + V) D+ Z9 H. {! |+ {
  49.         int fd, ret;6 {$ e0 T$ x8 h. Y, G, N% x5 A
  50.         e2prom_s_cmd arg;3 O) G5 c) D/ D8 A( n
  51.         unsigned char buf[0x18];
    9 G/ @4 E& }/ {! ~

  52. ! l  d/ m% V1 E2 }- y6 ]3 [
  53.         memcpy(buf, mac, 6);1 t- w" U& z$ U* g/ D
  54.         memcpy(&buf[6], stbid, 18);9 ^7 }/ a6 M4 Q5 u( h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' x' r% ~) \" o0 i
  56.         if (fd  < 0) {1 f  B/ t0 _+ Y# @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 [: y3 J$ j1 m5 f5 \0 j; v/ t
  58.                 return -1;
    9 V; y, I, S4 n5 W) l
  59.         }+ C# O! [+ ^! |, g0 Z/ a9 X" ~
  60.         arg.sub_addr_count      = 2;/ P4 C8 ?/ o! `
  61.         arg.data_count          = 0x18;
    + y) l8 ^+ O4 _4 t: H6 I
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; Z/ k3 P: W2 K7 ?
  63.         arg.e2prom_cmd_data     = buf;# S, f# ?& P9 Q6 o3 }
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - z; z" X0 h5 O( C# X
  65.         if (ret != 0) {! X7 u. R7 t7 G! {. [" q0 K
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 M! k5 Q7 Q2 {1 l. q# }
  67.                 return -1;
    " l: Q) e( P2 J$ H  {3 D
  68.         }
    9 _0 w" {% D+ s( t3 ]

  69. * w( j% d  U' z: ]* D( ~
  70.         return 0;
    * N7 H% [, d4 N4 M# a
  71. }; o3 m% e$ w3 p7 t
  72. ! o2 r. [) o1 A5 B9 w) g
  73. int main()) Q+ g  l! o. }2 Y& n8 Y* ?: x: o
  74. {
    3 _& u* g7 |4 w" g, u- n
  75.         char c;
    # t5 Z5 V# b$ y7 G
  76.         int i, macs[6];
      S# @7 o; z0 L3 J5 \8 E' \/ u, F
  77.         unsigned char mac[6];8 g, L6 y$ J* _) |8 K3 d9 _
  78.         unsigned char stbid[256];; a3 Q; M+ k  ^- B4 s3 b" ~5 f1 B$ G1 S

  79. 5 @) ?3 e2 a/ W# e* b) n6 N/ z- z
  80.         if (readparam(mac, stbid) < 0)" E9 Q& Z8 `! L* _6 T$ z4 R" n; u
  81.                 return 1;$ \& \9 o" }  i3 r

  82. 5 b# S( M" O6 ]3 K
  83.         printf("Current parameters: \n");
    2 k4 l! a/ V# p) u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 I, m& B0 {+ p3 d/ d0 h
  85.         printf("  STBID: %s\n", stbid);% W" [2 I* O. u# g6 P' ?3 @; ?' w7 O
  86.         ' R7 ~8 v$ {  L$ ^5 I7 A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 h; L; e; q% ?4 H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# y  R' f! r+ Z+ j& y* N' _6 {7 g
  89.                 printf("Input MAC error\n");
    / ?8 q4 Z+ P6 {+ n- k& e; Z/ z
  90.                 return 1;7 m* G9 `1 E# ~0 V9 z+ u
  91.         }) p& j. `' A( s- U9 E0 o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  F. B" D9 o2 ^- A( D9 Z" [6 l
  93.         printf("\nPlease input new STBID: ");
    6 K0 A, V- v  N, A  c
  94.         scanf("%s", stbid);/ V4 z  j  T- {7 {/ S4 `/ S* l
  95.         if (strlen(stbid) != 18) {9 G4 e0 F' h+ `) e
  96.                 printf("Invalid stbid\n");% q+ S: `% ~) Y) c/ X
  97.                 return 1;
    / N; F! q3 [$ C' F
  98.         }
    6 b& i) x: f, w5 m# U( e5 l% h9 T
  99.         printf("\nNew parameters: \n");! h  w6 ]3 z) S9 a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  c$ H+ _' ~- Y  P/ h5 e
  101.         printf("  STBID: %s\n", stbid);
    4 C% B2 g6 k0 I. \  z' Z1 ]
  102. " }0 ^) [; z! D
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 [; Z( s; ~4 M7 Z3 f' O
  104.         for (;;) {
    $ q/ `5 o; W- {0 h# {
  105.                 c = getchar();$ |# D" ]( m$ C
  106.                 if (c == 'y' || c == 'Y'); c1 a# a4 v! n1 q1 a0 _5 T, h
  107.                         break;* m5 v+ O3 p  p. b
  108.                 if (c == 'n' || c == 'N') {
    2 ^! T8 d7 ?" a5 ]0 w7 H. V) n
  109.                         printf("\nAborted.\n");! Q4 n+ h" g: @# R' Q$ x' q
  110.                         return 1;
    ' N& r& u: j5 ]' I9 u' Z' v
  111.                 }
    9 h- t! b. t5 O. T8 V
  112.         }1 }4 P* ?0 j, i" J2 j
  113.         if (writeparam(mac, stbid) == 0) & q% K7 o" V& N- Z
  114.                 printf("Parameters changed.\n");" c/ u5 R  ^" c. A" _: b3 [
  115.   }2 f. J6 ?, f) r5 g" u" I1 r
  116.         return 0;
    & x1 f9 Z- o* a$ A& \8 p
  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
; |8 g0 P) I& x' X- O- @; x在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 d' P; e/ Q7 |4 b1 `* s' n- ~+ c
你用的编译命令行格式是什么?
# M: Z& @, @7 ?* r0 I& O$ K" X
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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