查看: 17802|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. {( p1 b& |6 C- v, r- @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # X2 i1 g) x, u) B- g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ j) j+ w' g% }( n8 Y. cusage: himr <address> <value>. sample: himr 0x80040000 0x0
6 K8 S( P4 w& @' M! N
, A9 Y0 v" v, a0 [. @! G) x; ^, N# G8 H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 P' ]5 ^" B  m/ k9 B

+ X% @4 }# I- p5 n补充内容 (2012-3-8 09:42):
# J+ Y6 w5 ]: D3 ?http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 v* d' p+ o/ O6 C  H
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
  [5 A7 W5 O  F7 A0 D/ ]- C% e5 P4 ~5 d3 M4 K% ?+ |
himr <address> <value>. sample: himr 0x80040000 0x0
! x2 o4 g* w+ U5 a8 ]
1 j6 l& c& T6 @8 N例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 O3 M" D9 g0 D4 a* ]8 E+ y% _) e
himr 0x80040000 0x00
% h+ M: N; |/ V) ]5 Z6 W, fhimr 0x80040001 0x11
8 z6 n& b9 S0 i6 u& C- Ghimr 0x80040002 0x22
7 q% s  T$ `4 R- ^, yhimr 0x80040003 0x33- ?5 X6 N4 D/ v7 \% ?5 w
himr 0x80040004 0x44
4 C7 q- R3 R8 ~: i( Khimr 0x80040005 0x55
4 o8 T! v5 `' Y0 w  Y5 y/ p5 s
0 N0 ~" w' Z+ l4 J" Z, lSN也是类似。7 e, Q4 ?& v6 A9 w6 d. j! ?
# l8 s4 s& x) |4 k
现在主要是,谁告诉我们MAC和SN的地址?! c  b3 `$ h( B$ |' R1 L
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & _5 S/ ]4 n; M
一直想找到运程修改MAC和SN的办法,苦于无解啊

+ O9 V$ Z9 ?- i* d源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 m0 S; |, I6 G$ a) \+ c, ^9 l& A0 K" v
* k& g+ M+ x+ \8 a( y* R% ?2 u修改的代码早有了。到今天不会编译。
) p! x6 H" v" S0 |% s/ {- j2 v! S需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + }$ o) L* e- }% W
  2. #include <malloc.h>  ?" ~( S6 W. y* {! M/ O! u
  3. #include <sys/types.h>
    6 I8 L; I# L6 v: v, G
  4. #include <sys/stat.h>+ d- A' F9 p3 o. ?" t, ^
  5. #include <sys/ioctl.h>
    , q0 d  E% q. u/ L
  6. #include <stdio.h>/ E; J) P* R- I
  7. #include <string.h>) t9 w; @- I# O3 _0 r/ {7 Q

  8. " B3 L$ p% {! h. U
  9. typedef struct {
    ' r; c0 @' D6 @2 d
  10.         unsigned int        e2prom_cmd_sub_addr;
    + O7 f, g- C0 ^
  11.         unsigned int        sub_addr_count;
    8 l4 n$ D) h! T5 D% A' z
  12.         unsigned char*        e2prom_cmd_data;
    . I0 D' e) K; [$ T! A( I6 m/ T( O
  13.         unsigned int        data_count;1 A% l; A8 [$ _
  14. } e2prom_s_cmd;
    $ s$ [# s; v  g! Z' K" ?6 f

  15. + w, E9 M. W0 ]6 C% \* }) B. a
  16. #define E2PROM_CMD_READ 1
    8 I5 h2 s8 H/ T9 u2 D
  17. #define E2PROM_CMD_WRITE 2
    # B) A" m, H( c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 q9 V5 `2 b, U. |1 I
  19. ) v' k1 B$ j" x9 I$ a; {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& D- N( K$ G( Q5 S3 I% l
  21. {5 s$ t& I8 P5 e7 V/ W
  22.         int fd, ret;
    . |8 Y6 J$ A  g( p8 Y
  23.         e2prom_s_cmd arg;( N4 V8 w/ i! d! t! _- g5 l1 {
  24.         unsigned char buf[0x18];
    5 @/ P7 m5 o9 A  n# Q

  25.   K7 v2 S- c# I6 Y7 b8 ^+ C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 I$ G$ B; @8 Y* G0 ]5 X3 v
  27.         if (fd  < 0) {
      |/ U' j8 z% U$ l$ M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 k" Z, h" U6 ?
  29.                 return -1;9 ?% ]" w" I) x. |, z% X
  30.         }
    ' K" T3 B3 K2 Z9 I
  31.         arg.sub_addr_count      = 2;$ }! w, [! E. R6 T, ?( T3 k% ]
  32.         arg.data_count          = 0x18;
    ; p; U9 ?1 r" b1 d7 o. [7 y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % T2 ]% X* r+ N' q* S
  34.         arg.e2prom_cmd_data     = buf;% X/ @$ d' E# N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    . s  O& x; ]- h7 W
  36.         if (ret != 0) {
    2 K' L, l3 }; n  a. O, F# E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 G; O0 r$ b) ?! d1 H
  38.                 return -1;
    3 e6 w. n# `+ }
  39.         }
    , ^- r3 }. A. I3 K) T) ~' M
  40.         memcpy(mac, buf, 6);
    7 E& f1 z; s5 x
  41.         memcpy(stbid, &buf[6], 18);: A) i/ _- h. J/ k8 P' B% C$ I
  42.         stbid[18] = '\0';
    0 Q3 x0 R5 G8 r) d$ u& d
  43. ' {3 E# q9 Z: p$ x% [6 [0 q5 N6 ]
  44.         return 0;0 e! d) w2 X/ [4 l
  45. }( O& N% N, r$ K9 a* `* |

  46. 3 }' w0 l/ X8 E- I2 I" W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): k: W+ {6 ?$ S' i
  48. {5 G& t# ]: J! c: j! j0 ^* `  z% E8 A
  49.         int fd, ret;& c% N' t( j- T# Q  G; [  ?6 U
  50.         e2prom_s_cmd arg;
    * A% [  W: q* O, q1 q' a8 D+ i: P
  51.         unsigned char buf[0x18];
    : a( t; z3 C5 z0 X% m8 _  E2 O3 q
  52. 4 T- p' K! b7 e. Z9 U. F$ v
  53.         memcpy(buf, mac, 6);/ D1 Q- O1 X* ~; Z( |5 P
  54.         memcpy(&buf[6], stbid, 18);
    ; F! K, m" K: R9 i* l' Z, h  z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      n& y3 ^8 Y0 P
  56.         if (fd  < 0) {
    ; j. O$ w1 ^' `7 N4 |+ Y" u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; Z! o: G3 ?5 N
  58.                 return -1;% i# S7 P: {" Y9 `- N6 d) X
  59.         }
    4 A" |  n/ q4 N  [$ d. R8 m
  60.         arg.sub_addr_count      = 2;" ~- T' p6 F" E# `2 Q; b6 q* d
  61.         arg.data_count          = 0x18;
    0 w$ c) _. X6 H( y# H* _- _, j) p
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ @& Q6 `" n4 y/ S. E( b' R8 ]0 z9 d
  63.         arg.e2prom_cmd_data     = buf;
    ( S/ U& \( u8 K: a4 v4 s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 g" X: C9 F1 n0 F7 D, `
  65.         if (ret != 0) {. P8 m: w$ E! a; w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % Q8 h- ~7 m; Q* h' Q" o, d
  67.                 return -1;6 u5 K9 O" p. Q, n* N( f+ `& R' I
  68.         }
    ; Y# j- q$ j- v1 H/ [
  69. 1 i) C; i, V1 Z0 s
  70.         return 0;
    : {4 ?9 s9 v4 s9 v: ]$ f3 X
  71. }
    4 c  N$ Y: N3 @; q) a& U/ g
  72. 6 O8 c* ^0 U; G! c+ r- ]$ k
  73. int main()
    5 P- y4 d, f3 E# R3 e  p
  74. {) l* G' ]! C# G4 N
  75.         char c;
    * j' v& w; d' ~! e
  76.         int i, macs[6];, A$ }, \& e1 c, y5 a& z
  77.         unsigned char mac[6];
    ) ?% s) D, B6 P8 s
  78.         unsigned char stbid[256];# L% v  c0 S7 N  k& Z

  79. # n/ b9 T0 s, u! x: c3 E
  80.         if (readparam(mac, stbid) < 0)
    ; w' x. O9 u6 [, v, r" |+ C; A
  81.                 return 1;: f! Q+ o/ g8 J" D, l
  82. ! J7 R7 y/ G2 o& N' }  i3 U& B
  83.         printf("Current parameters: \n");% N8 f* n" J6 {) L& M
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 Z" x1 m6 p% V) x/ S
  85.         printf("  STBID: %s\n", stbid);8 C5 ~* U7 n+ R  e( N  \# ]
  86.        
    " C4 N' z. U( }$ S/ m2 R$ [& E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      B/ e3 Q+ b- n8 T8 v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * {( f7 L8 L+ a8 u& `: u5 Z' [
  89.                 printf("Input MAC error\n");. P( q6 B( A  R0 Q$ D0 \
  90.                 return 1;
    : g4 w# A; g! F+ \0 P
  91.         }
    . ~3 x6 l. c3 e, a+ W* q( o! _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 x8 @; L' |9 ?  h' X& G0 y
  93.         printf("\nPlease input new STBID: ");6 T; ~  V4 y# g$ W' e
  94.         scanf("%s", stbid);! y( g4 Z$ A+ L7 Q1 Q- Z, m
  95.         if (strlen(stbid) != 18) {2 ]  _! O+ K- b/ Y* U$ I
  96.                 printf("Invalid stbid\n");
    9 v! T. r/ @1 v4 F% A  @4 {
  97.                 return 1;
    - k) E: B/ C% y  v; T7 Z: M
  98.         }
    3 R9 ~+ I5 Y/ n, e
  99.         printf("\nNew parameters: \n");" C* |( w$ f8 Q4 L' H) a* c
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 M6 P* {; q$ _7 f
  101.         printf("  STBID: %s\n", stbid);  W+ G& M* G7 P

  102. " [4 c8 z" f- N. q4 j9 o2 B1 c5 C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 P5 Y5 V' ]; Z* q+ |* N
  104.         for (;;) {. `: F$ e) x- v$ D: l
  105.                 c = getchar();% M" z. V( s) h5 @  a
  106.                 if (c == 'y' || c == 'Y'), b8 n6 b" Y8 g6 G
  107.                         break;
    * B/ h% x: l0 L1 p  d. H6 j
  108.                 if (c == 'n' || c == 'N') {
    5 U# x4 B; S5 P3 I! `3 q/ N3 e
  109.                         printf("\nAborted.\n");
    ; c  l% Z0 D5 |" I8 M
  110.                         return 1;- `* `) P( u" o, W' w
  111.                 }( D4 v5 J% B- X( {6 l4 v
  112.         }
    / `7 \2 o$ T3 q  N5 t+ n4 m
  113.         if (writeparam(mac, stbid) == 0)
    : W1 {- E( S; o/ M0 n* |$ j
  114.                 printf("Parameters changed.\n");  B) I! i. d1 E' n7 B! l
  115. 7 \6 q$ c3 b7 A* Y
  116.         return 0;
    , J: s& K6 H' l8 A
  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 ; r  J: x6 c6 c
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ @( Z( g$ [  ?& |/ t' d9 e& P* A你用的编译命令行格式是什么?& O% p/ @& s$ P+ }5 F
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部