查看: 17421|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 y& Q. Q) b! V$ x8 \# A
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 }' c6 X7 S) L" q/ f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, k. T$ \- H9 C4 x) D- M
usage: himr <address> <value>. sample: himr 0x80040000 0x0# W9 U- A4 m8 N, [8 ?
' b% b  c. l) A1 _$ S3 d. B
# T( ]+ T+ I% T1 W! R4 B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ }5 x, O2 ?- I( e% K3 g* B
2 \7 C& g2 B  p% [/ F补充内容 (2012-3-8 09:42):
& e2 K3 v! S$ Q4 s2 Vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' ?$ \, ?7 _; x" X% j4 y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。0 M6 j) Z+ K, G$ r$ c8 h
, \6 \7 X4 a' Y6 a
himr <address> <value>. sample: himr 0x80040000 0x05 |4 Z; B& R2 q( S. y$ V

) Q2 d. S& Z* c9 C' v0 q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. R, `  W1 M" ~9 ]3 Ghimr 0x80040000 0x00
' }4 J+ d% R. q! Nhimr 0x80040001 0x11
  a# i, `6 d* C9 U4 y7 ^' r# }6 Z; A' |himr 0x80040002 0x22" A- a# C- m* U5 m2 s
himr 0x80040003 0x33
9 N2 p# e9 c1 c6 dhimr 0x80040004 0x44% X. r0 O0 d, W0 t9 |
himr 0x80040005 0x55
' ^! ~$ j" X' v4 p4 q! Q
  \9 q4 F' b. b2 bSN也是类似。2 W4 _2 A1 p8 J  L

0 m$ l, T( H) Z7 G# I/ @现在主要是,谁告诉我们MAC和SN的地址?
- ]0 G3 m# a2 g
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" P$ c4 v/ |  E) V2 P一直想找到运程修改MAC和SN的办法,苦于无解啊
; M6 [$ @3 c, F; Z. M
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, J& G2 X$ A3 x3 J; v( |" V4 N; O  h. h1 d' I! q& |
修改的代码早有了。到今天不会编译。
, X9 R& _% ?: c% I7 y) m7 p/ u需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) A; B, B  |7 K! V7 x4 F2 S
  2. #include <malloc.h>
    7 V1 `3 l: ?5 b! x: M) h
  3. #include <sys/types.h>) m- l' r7 g- d# P- a' u1 H
  4. #include <sys/stat.h>. ^; E. E# V6 O2 q  }+ q$ G% b. C
  5. #include <sys/ioctl.h>( q. U6 q* d8 w8 O; m
  6. #include <stdio.h>
    6 X& R5 P+ N) ?4 L: w- h$ \9 _8 }
  7. #include <string.h>9 O3 N( Z$ @: k$ u# o7 i; x
  8. 3 C: n) i! V" P! x: {0 `& ?
  9. typedef struct {/ ~6 M1 {/ r/ R- L4 S
  10.         unsigned int        e2prom_cmd_sub_addr;; y- z$ C& p; F3 V
  11.         unsigned int        sub_addr_count;/ {" L" o/ C+ v& c
  12.         unsigned char*        e2prom_cmd_data;
    4 X6 X/ v& {5 \' M# E
  13.         unsigned int        data_count;4 z. |% S$ k% e. n, s* n+ q! h
  14. } e2prom_s_cmd;; }; s& O% b8 M) P+ g
  15. . Y" {7 S) I% j& {) l9 z
  16. #define E2PROM_CMD_READ 1
    ( J2 m5 [( j1 A  X2 i* ]
  17. #define E2PROM_CMD_WRITE 24 p7 i* I- \' m6 l; @5 ~" s0 a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 n- V) S/ `5 k/ Z6 @7 `: R8 j7 N* s

  19. % n9 i) C/ N3 Q+ e6 P0 |
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) B! O, B3 ^5 F" _& {
  21. {
    " j1 C, O( H1 t& q
  22.         int fd, ret;
    " L1 b0 ?( e8 q6 }  W1 B
  23.         e2prom_s_cmd arg;
    8 j: n9 j" b0 f; c) W) x3 p2 Y
  24.         unsigned char buf[0x18];& C1 Y; _8 F8 R6 R0 V1 G
  25. 4 q6 Q$ }) L4 F5 D$ Q. P0 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 Q: ^# q# \* ^9 A, e) {; P, m6 m
  27.         if (fd  < 0) {. T( h; h2 t0 k2 m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# E- @+ H8 M2 y' i, ~4 k) F
  29.                 return -1;' W$ u) P# Y4 \3 T  s
  30.         }8 {6 }+ \: B5 X& C7 C5 k9 c2 r
  31.         arg.sub_addr_count      = 2;
    / u- L0 i. u- n1 b+ _6 c, r
  32.         arg.data_count          = 0x18;  V& [9 I1 L0 }- E+ H; ?% R! v
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 j( @* X+ Q+ l" P- H) @
  34.         arg.e2prom_cmd_data     = buf;
    ! X8 i9 R: b9 S* A  L; p# p
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 o$ m; Q# F" q, H4 ^+ P
  36.         if (ret != 0) {7 w; e" B2 ?7 r' g/ i% _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ w+ o8 H! g* f9 k% W. j& n
  38.                 return -1;
    + E; L# R" R, j' ]' D; K
  39.         }
    , a/ ]0 n% {2 v6 D. q+ O" G$ x; a( n
  40.         memcpy(mac, buf, 6);
    & B7 c- g6 O6 L9 n; G/ r
  41.         memcpy(stbid, &buf[6], 18);
      `; o- {( ]! r9 K, |
  42.         stbid[18] = '\0';( [+ T. E& W* ^

  43. 3 @& F( f# \: }4 L+ x2 Z
  44.         return 0;8 k. i7 ?1 M# p! y" A, I
  45. }
    . b: S6 u) Y& M6 S

  46. * f* R2 c/ U0 I9 l" g! g
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): y: ~0 y1 K3 ?6 I7 S( U+ s
  48. {% O6 [/ q6 p9 T. O2 o
  49.         int fd, ret;
      f( l2 u: e' O) c
  50.         e2prom_s_cmd arg;
      Z4 u/ U, {/ t
  51.         unsigned char buf[0x18];
    5 c; F  p* Y# l! M: E
  52. & g& @( Q5 S& K+ e5 C
  53.         memcpy(buf, mac, 6);
    . a7 x' V1 r( s' {! Q* ^& m
  54.         memcpy(&buf[6], stbid, 18);
    ' n: ?- ~( r2 i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);8 j$ b$ w4 ], N1 g1 V
  56.         if (fd  < 0) {
    ; A9 e# `: |2 ?. L# h' ~; T
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 H6 E5 Z8 b) b4 p, D% ^
  58.                 return -1;
    - \$ i6 ?2 w( `- J8 X$ ]
  59.         }  T- L3 T: ?# a& V. ?  P
  60.         arg.sub_addr_count      = 2;
    9 z0 z' v7 l# H# y. c1 t
  61.         arg.data_count          = 0x18;9 H' z' \: p$ v2 e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 d0 d$ a4 _% z
  63.         arg.e2prom_cmd_data     = buf;
    6 c: c; G0 j0 [8 E# b/ v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. H2 T8 D+ K4 d, m2 n  U
  65.         if (ret != 0) {
    9 q* t3 i1 t: S5 N& o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& Y7 q% h8 s' E9 K* O" y
  67.                 return -1;
    0 {3 J& I. U/ @3 F& U/ h
  68.         }
    , C8 s% o9 N2 {2 c6 S& N% N
  69. 1 D7 I" X: D$ k  @, x  E; a1 I* s
  70.         return 0;0 V2 G3 l& \/ |! L  p. M3 v
  71. }: m1 b9 [0 [' j- y5 S* O
  72. # M* T1 a* f% E& g, T
  73. int main()
    " r0 e$ m1 q5 s. x8 L5 l
  74. {1 z3 \. [0 w- l! A7 @' _( ?' y
  75.         char c;
    # ~, H9 @5 I( y
  76.         int i, macs[6];
    $ R2 |6 ]8 z- h( z/ b& o1 P4 r& p
  77.         unsigned char mac[6];% S" p5 X. V; |4 k! D4 }
  78.         unsigned char stbid[256];; H. d, u5 p6 m/ G. e4 O8 h2 p+ E

  79. 8 y' G3 z# D  L+ ]4 Q) D' ^
  80.         if (readparam(mac, stbid) < 0)  r7 |$ S: S" ?) r( \
  81.                 return 1;7 Q+ }  [& ^) W
  82. , i4 x# J% Y, u5 T9 |5 w2 m
  83.         printf("Current parameters: \n");
    9 w# D% w2 @& I& e; \
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 p, B- Z: B. k! O$ q) ]) O
  85.         printf("  STBID: %s\n", stbid);6 e/ u! S* J  W) y: Q& m+ {
  86.        
    * ]% L! X3 f8 {9 _6 l; K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" q# v- {4 ?, j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 a$ p/ D# p) A$ g
  89.                 printf("Input MAC error\n");1 H& ?# U1 h% `; l9 o; l6 Z' W5 M/ b
  90.                 return 1;, G/ `8 s+ T4 Z' a' x' E
  91.         }5 X$ W& _7 v& z, Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 K: p/ Z1 M% D4 b4 k: n9 I
  93.         printf("\nPlease input new STBID: ");' h" z2 |8 s6 }, E3 X* @
  94.         scanf("%s", stbid);, P1 d+ B$ _6 f" b/ |
  95.         if (strlen(stbid) != 18) {. h4 a& H. x& E* y
  96.                 printf("Invalid stbid\n");
    ; q( r6 C: P  o+ Q0 g
  97.                 return 1;$ H  U% Z& L7 o8 o: ?# N1 W
  98.         }
    0 Z1 ^& W5 w- p; C: q: n
  99.         printf("\nNew parameters: \n");
    . V: ^! x3 K0 M3 D+ o2 \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: s+ t5 E6 G, g; D: q  L% \% G
  101.         printf("  STBID: %s\n", stbid);, Z* ^( N* [3 N- ~* O
  102. 8 M6 h4 n4 `5 `6 t9 k( c
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 ]2 n+ e5 n: Q2 l5 e) z
  104.         for (;;) {7 u9 F& w/ f: n+ ?: x8 a# \, p
  105.                 c = getchar();
    ! b: j! i' [8 o& G+ f4 H
  106.                 if (c == 'y' || c == 'Y')
    / {5 e6 C) E  Y9 B: t
  107.                         break;8 |3 t4 N# y6 ]. J! s
  108.                 if (c == 'n' || c == 'N') {4 P$ w$ ?+ \- H# |; k3 q
  109.                         printf("\nAborted.\n");
    4 f& }4 n. o4 o( C) w0 t% y
  110.                         return 1;: m& H! X2 o9 a8 g3 w9 W
  111.                 }
    ' l% ^9 z9 j, Z9 A. P  q
  112.         }
    # \0 y( A0 s$ d7 V* k. m; C$ o: S3 D
  113.         if (writeparam(mac, stbid) == 0) / g6 a* u5 M9 A; o6 Z9 Y6 o: a
  114.                 printf("Parameters changed.\n");" ?1 {) I6 u. |# F) L' n& W2 a
  115.   K  \$ {' d% D. ^; ~6 ^2 r
  116.         return 0;) V) z+ w8 W5 F- v( b
  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 . g0 b0 H; M# I% u
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 H; m" s+ z: x" J: }
你用的编译命令行格式是什么?7 H" ?8 Q# q0 }! [) E
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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