查看: 17810|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 U/ ^9 u6 b2 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 j( B' V* a# \% v3 X; @$ A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ E0 ?! i4 }) kusage: himr <address> <value>. sample: himr 0x80040000 0x0& X( a, F% W& P9 j
* O6 j3 q* F4 {& J6 d. m

; {0 G- U, h: V: k不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! b/ N# [5 w: g/ {& k
! a0 g) b9 D+ C9 X2 N! l' a( D; E- f- x
补充内容 (2012-3-8 09:42):
: s0 x" z5 [' ^' M+ B" Xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 d5 k7 z% N+ d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。6 W2 r4 r" @5 i6 u2 ^) g, g

: G: Z9 `1 {' dhimr <address> <value>. sample: himr 0x80040000 0x0) K' P; w2 @8 i7 _( t

. D& z8 c1 z; |6 |* E& f# G例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 g0 _  s$ I7 F" o  F
himr 0x80040000 0x00# D5 G0 k+ W4 B* |& Z0 ]5 h5 g4 }
himr 0x80040001 0x11) D* E" ?/ Y+ ?* ^% y: C
himr 0x80040002 0x22
( {: b" Z- y* [# J! Mhimr 0x80040003 0x33% e7 e4 e7 d: H5 K- v
himr 0x80040004 0x44; E2 F' a* `. f. \
himr 0x80040005 0x55* j" ]' |8 V! G
; V' c& B0 r+ S- ~, S
SN也是类似。
2 [8 w. D% S5 t6 J4 s
5 u0 q8 t" W/ _/ q7 h7 h现在主要是,谁告诉我们MAC和SN的地址?0 p5 j. w/ X( L* s% g+ @
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( {; k8 Q; C5 P+ Y" t( A
一直想找到运程修改MAC和SN的办法,苦于无解啊
; L$ q8 u  r+ ~: ^
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! l/ y1 Y+ i7 B; H# b2 _' G+ Z
修改的代码早有了。到今天不会编译。9 O  E, ~' J( Q& H: u" w. e; r$ Z) g0 l
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 Y$ i7 p6 m* ~7 ]6 q. C
  2. #include <malloc.h>
    : D2 @& M; |/ ?9 R% h5 k
  3. #include <sys/types.h>
    " o$ |/ h+ ]) X9 W# X% j7 d6 p
  4. #include <sys/stat.h>
    . i' _+ w& D+ Y- @; ~* K& A  N$ \
  5. #include <sys/ioctl.h>
    ! y* k1 p! y) A) z
  6. #include <stdio.h>
      i8 z! }1 N4 N
  7. #include <string.h>  D: ?" {3 v) a; K( k, F* Z: Y

  8. 9 r8 q$ G1 Z/ n
  9. typedef struct {- E7 A( ~$ G; p( v2 G6 k
  10.         unsigned int        e2prom_cmd_sub_addr;0 g4 |( @3 }% c. m! L" K2 r  e
  11.         unsigned int        sub_addr_count;5 j' Q! G! T5 @( u/ b2 Z: b2 ]  y
  12.         unsigned char*        e2prom_cmd_data;& f- J  ?" D* d. w7 |. w
  13.         unsigned int        data_count;
    ' D, g) w7 H6 z2 S
  14. } e2prom_s_cmd;; o6 c/ D' V  g1 O
  15. # d' E# i% V2 L1 k
  16. #define E2PROM_CMD_READ 10 G: n% c" P) P4 W6 i" d
  17. #define E2PROM_CMD_WRITE 2
    " p$ T# W( R$ k* p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 {0 D: d# l; l6 m
  19. * }7 @& f; g3 c$ J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 \1 z- z) D) _. I4 j
  21. {
    ( w, v4 u' }% R# H6 J  [
  22.         int fd, ret;6 ^) Q$ @7 y) V% q9 S% V
  23.         e2prom_s_cmd arg;) M7 s$ h/ [% J4 c, u* p; V% P5 L
  24.         unsigned char buf[0x18];
    : z9 ^& U# M' ?# |7 t5 H: G. j- Y
  25. / C0 A7 ?2 ^' D6 f' {, R. D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! Q, e! t; a8 F1 ?2 @4 O, f
  27.         if (fd  < 0) {
    % A/ D  i- u' X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 \; U3 m3 i1 p
  29.                 return -1;3 t# ~, Q+ @# O$ E) s! @1 ]
  30.         }
    8 |. ~% o- C: D
  31.         arg.sub_addr_count      = 2;% H% \8 H4 |$ m# [6 G4 o8 [' s
  32.         arg.data_count          = 0x18;; E$ s' h. C) \
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 r; L- M2 t* T0 }, c! ^
  34.         arg.e2prom_cmd_data     = buf;
    . B7 A( L, U1 u* X6 U4 }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# c6 a& x* Z- A4 b/ U- \
  36.         if (ret != 0) {
    5 O/ T7 X/ r1 w' U' P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, n7 f2 i( w& e& p  r7 `% h. }( |
  38.                 return -1;
    % j0 ?4 K" d, N4 v8 S
  39.         }, u8 n7 c8 Y" G: |1 Z! h  J0 Q: t
  40.         memcpy(mac, buf, 6);
    2 ^7 A4 j2 ^7 F) Y
  41.         memcpy(stbid, &buf[6], 18);8 z( ?7 R; ]3 S3 h8 z: ]& Z2 q  h; V
  42.         stbid[18] = '\0';
    , ^; ~" w! c# S' C
  43. . C% Z5 D& p% Z% T0 ~6 c, A; ~
  44.         return 0;
    . c8 h6 W# i9 I! e2 |' X5 `
  45. }
    % o, O- Y& K+ `- |5 S: a  T3 Z
  46. % E/ c8 D8 N% c1 S- u) T. _
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 A/ u9 g' R& n( X, n2 W
  48. {; w2 ?& F- e$ `3 J
  49.         int fd, ret;1 f$ I7 l# b# y- ?) [
  50.         e2prom_s_cmd arg;
    " X5 q) v. A" A2 ~  i' h
  51.         unsigned char buf[0x18];
    9 T+ n' f$ V% @  k$ w3 z6 C

  52. 8 J+ F; n# p6 M& }5 n( E, p
  53.         memcpy(buf, mac, 6);
    ) Q* }  z" V7 q* f! F
  54.         memcpy(&buf[6], stbid, 18);
    / q: E8 W* o8 J# C* A9 Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( ?# J! ]2 C. I: I
  56.         if (fd  < 0) {8 D6 O5 c. p% q% X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 R2 h  b! d% C  p! m
  58.                 return -1;
    ' f# E( t6 |! q9 G# |4 Y: X
  59.         }! e- g+ P2 {1 P2 ~$ G; u
  60.         arg.sub_addr_count      = 2;
    # Z! N4 \# j: y  e" @) [8 ?8 C" W8 i
  61.         arg.data_count          = 0x18;
    1 f5 f. g) x. R- {
  62.         arg.e2prom_cmd_sub_addr = 0x290;, a0 V8 B3 |/ J, [( U$ ]- e' v
  63.         arg.e2prom_cmd_data     = buf;" y" G/ K6 f$ v) d% D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 W, ?) N8 |; O! w0 \0 G
  65.         if (ret != 0) {
    3 r) P# S  \( Y3 ^9 O. v8 E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( |" l4 b6 P; J! p; R
  67.                 return -1;+ k2 ~3 |& J6 U, m4 I4 q7 [
  68.         }/ _1 P& C5 j- Y

  69. / P. X; n9 c/ H' r7 b& _
  70.         return 0;
    1 t4 V: z$ C$ }2 p  `" Y; b
  71. }
    0 H2 r$ A! M! G) e4 q5 @5 n4 K

  72. $ V9 Z" R( t, v$ a
  73. int main()
    , f- _; y" }" J
  74. {
    . k( Y7 a4 o" Y; @
  75.         char c;
    ) [. d6 b4 ^$ s, Q. k9 t
  76.         int i, macs[6];
    ) I& u# [9 l: u
  77.         unsigned char mac[6];
    3 M1 m5 K& J1 ~
  78.         unsigned char stbid[256];
    . N% }8 x4 n, I
  79. 4 z7 h8 X; q/ E
  80.         if (readparam(mac, stbid) < 0). ^2 j  G$ @% K8 k
  81.                 return 1;
    5 t* N- x$ `9 V" X/ g, h

  82. 0 H! v" Q7 Z# P5 f! y( a4 E
  83.         printf("Current parameters: \n");$ J1 d# K. W5 D4 q, x+ d2 x1 J, d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 ]- r. F4 e7 ?/ ?: L0 j, J$ g
  85.         printf("  STBID: %s\n", stbid);
    ' j2 k9 I  s& j7 m
  86.        
    $ d9 f7 p$ y6 ~& E5 S3 }( }
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ h- K7 l! b+ D' g' A% ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 X6 g# S! ^- G9 U. `
  89.                 printf("Input MAC error\n");% c  _8 M' @& `/ u+ u
  90.                 return 1;
    $ c3 T/ D. U2 M5 ?$ ]- `
  91.         }
    & a8 s2 U$ c- z9 e* u1 G. w3 Z2 U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 [' ]+ S! l: ?. ?: l8 q
  93.         printf("\nPlease input new STBID: ");# a8 O: G8 h1 b% |# ~4 G# l
  94.         scanf("%s", stbid);
    9 x0 ^) D8 m8 `
  95.         if (strlen(stbid) != 18) {
    6 k3 a6 R2 G# a* @& O' o( w( s3 A
  96.                 printf("Invalid stbid\n");, }# F* f# s+ h9 ~; ?
  97.                 return 1;. _0 h* A7 P+ m# T$ j, T
  98.         }
    . V, X, x( ^# o: e. C3 e0 T
  99.         printf("\nNew parameters: \n");3 s3 O6 e% M+ {7 X; C1 \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & G! @9 i  C! w" h' N4 m. H( R4 P
  101.         printf("  STBID: %s\n", stbid);3 r& r/ U/ j% m/ D/ Z3 C

  102. , }1 R/ l( c( y9 g3 B/ }0 @6 u8 F
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ P  F9 d7 D  \6 _2 C, \# Z
  104.         for (;;) {
      _2 p8 S. Z8 \
  105.                 c = getchar();
    2 N  ^5 X9 N3 ]. V! Z" P9 B/ }
  106.                 if (c == 'y' || c == 'Y')% p+ [( p& t% j. }2 \
  107.                         break;  I" r- |+ T) c! [$ _  K+ G* s
  108.                 if (c == 'n' || c == 'N') {0 a* T; S: b3 l* t+ ^
  109.                         printf("\nAborted.\n");1 A/ |3 |9 f9 q! m; ~
  110.                         return 1;0 }$ g4 U# A- T: m8 w* I
  111.                 }
    . Z( f! ]7 d; Z5 c; [1 w
  112.         }
    & X9 A3 h3 V1 j
  113.         if (writeparam(mac, stbid) == 0) ( d6 ]$ S5 R+ }
  114.                 printf("Parameters changed.\n");
    5 D$ d) S% m8 M1 ^  R: |9 R% D- f

  115. % D, G( W& ]' W+ ~, |
  116.         return 0;3 r( u. j- O  |4 ~, ~# X' U
  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 - ]) C) m$ {3 K8 ]2 a% j
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& w* j2 |9 g9 e你用的编译命令行格式是什么?8 P- T! C; C- Y! e
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部