找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15707|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 N  I0 `$ _+ }$ C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 u0 ?9 x6 _$ G) y  h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' }- v; |; N& Y2 y, h8 s% qusage: himr <address> <value>. sample: himr 0x80040000 0x0$ W6 O$ U' a* q* [
0 }, O$ e3 @- B2 n7 ^

# W) t5 b+ d" k1 k6 [! I不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 R3 f3 D+ a+ v% W

' M/ q+ T4 [- C6 q' U) b补充内容 (2012-3-8 09:42):
, i4 k8 A& f6 M* thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" e( n. F9 N9 v6 m4 R1 X( \
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。, M& {  e0 a' e3 J  t$ t/ W

! z5 Y- s7 d" g0 V' ~  B; r* d+ I* zhimr <address> <value>. sample: himr 0x80040000 0x0
) m2 b( g8 v9 h) P/ b! j3 y$ t
1 c$ W5 V; I# \例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" \* H3 _/ N7 A% A6 {! u% t
himr 0x80040000 0x00
" ?) S0 m' N; i- X' Hhimr 0x80040001 0x11- K* g: W  R* e5 s1 U
himr 0x80040002 0x22
* A" w5 I6 n2 a& h& m- x& q: P5 \himr 0x80040003 0x33* A! S' T7 c* z% D% A1 T) l
himr 0x80040004 0x44
2 e9 h" Z$ t% D4 x  zhimr 0x80040005 0x55) N* N5 J/ _, B$ e3 }9 ?! r1 x
! p6 ^9 Q! s2 e# o1 ?0 Q, u0 p
SN也是类似。- E5 H! k! A- L( a5 |
5 `1 ]& l2 X& O; s
现在主要是,谁告诉我们MAC和SN的地址?( v$ G, H0 x, B8 |- O0 j. |
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: i3 w7 N* M1 W5 @+ A一直想找到运程修改MAC和SN的办法,苦于无解啊
! V% ~+ h( r: z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 # l! h7 w  f' L9 y- d4 E" L9 E8 ?: x
0 w% {' L: \3 C$ \. @
修改的代码早有了。到今天不会编译。
0 k, e9 \) M6 K需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( F6 I8 ^7 _# C3 s. k
  2. #include <malloc.h>" A% ]5 ]! K+ W9 D: E# I
  3. #include <sys/types.h># J5 a" x; ~3 b7 x' [/ a  o/ M: q
  4. #include <sys/stat.h>. d" W- P0 L" @5 Y
  5. #include <sys/ioctl.h>; H2 a# P/ ~6 c1 D* m* Y, P
  6. #include <stdio.h># D2 o+ n5 s2 z3 }, ?5 [
  7. #include <string.h>, z5 O% _6 s  [2 W

  8. 8 k) i# X% s3 p% B5 c8 e& p7 g4 q
  9. typedef struct {" R' F3 q, G* c' t; }
  10.         unsigned int        e2prom_cmd_sub_addr;( T& w  c( E- m! ?3 {
  11.         unsigned int        sub_addr_count;1 y; q$ |- x& O. G& F+ T
  12.         unsigned char*        e2prom_cmd_data;' t5 o9 A3 x$ v: H) X5 h! T
  13.         unsigned int        data_count;* G1 a# X" Z" @& J2 i( u
  14. } e2prom_s_cmd;2 r$ x+ E7 X" b5 R# G, F( V

  15. 6 z$ H; ]; g" H$ n
  16. #define E2PROM_CMD_READ 1% \; I  V3 e4 k+ S; I3 ^
  17. #define E2PROM_CMD_WRITE 2
    3 e- ~1 y: {' q2 M; ~" [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ h( J! j' W5 h2 s: q7 O, a
  19. ' d; V0 X/ c/ |
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) Q/ a. F" ?% {. g. D/ [
  21. {! s: {5 Q1 T4 t/ R
  22.         int fd, ret;# w1 d7 h" ?: N0 F0 Z5 @7 h
  23.         e2prom_s_cmd arg;
    & c' ~. `" G& T( o1 k% V; v. G; T
  24.         unsigned char buf[0x18];
    * |2 m' B7 P( B7 F# o

  25. + B$ Q$ y1 D: J# S* M/ m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  L  i: l! p1 u: j! ~( N
  27.         if (fd  < 0) {
    7 ~8 o8 ]6 o* G& O( Q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, D% V0 y- L, M
  29.                 return -1;. y: s6 v8 ]6 j. H4 i
  30.         }
    2 E6 Z$ R& X: Z
  31.         arg.sub_addr_count      = 2;6 ]# o1 o7 m; s* a4 m
  32.         arg.data_count          = 0x18;
    + Z6 ^+ q4 V, _& d+ H, q' ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 ]8 R) v3 G' w' N+ ~: D
  34.         arg.e2prom_cmd_data     = buf;
    5 V/ P1 M- h9 v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ I1 i7 r- H1 B, Q0 N* Y! s
  36.         if (ret != 0) {# U* n, @8 S" p8 b& g# V, |/ w3 C2 ~
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);* o" _8 w/ I# l0 I& {2 ]7 J$ h. u
  38.                 return -1;( `6 |' X' ]# h- j1 h
  39.         }
    2 S3 }5 K4 N& c
  40.         memcpy(mac, buf, 6);
    ( t( k, }/ G0 v( Z+ b( |4 I
  41.         memcpy(stbid, &buf[6], 18);  f1 M% }3 U* a; y( h
  42.         stbid[18] = '\0';8 H3 ]( Z; C$ E- M$ m" ]& w
  43. + U. l$ k% }8 a/ W# Q! q8 r6 `
  44.         return 0;
    + j2 `  X# z* F8 B
  45. }4 z! u% b! n  c# S  W
  46. % U# l! J) s* k0 O+ z* a8 @  K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). x! M, ~+ |3 D9 [* |
  48. {& m% s# ]6 M0 `0 S; @0 U% w
  49.         int fd, ret;
    + T) C0 i; }, I# I7 X6 o: N
  50.         e2prom_s_cmd arg;, I# {3 S; b1 V4 N! j# Y8 R
  51.         unsigned char buf[0x18];( ]& P5 r; M6 N9 z) z3 j  s

  52. 2 e; O* F- y& m
  53.         memcpy(buf, mac, 6);; E2 E7 Z- m3 _& j7 I
  54.         memcpy(&buf[6], stbid, 18);
    ' x  f6 w$ a7 _  ^' v8 v' h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 \- N. M; n3 v; u
  56.         if (fd  < 0) {
    5 h. B: w9 v$ X8 v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) R* j0 J7 N6 O3 ?
  58.                 return -1;9 n. _( R. A" M. X2 r
  59.         }
    ; f  P+ x+ b. f2 }7 o% \0 _
  60.         arg.sub_addr_count      = 2;
    " F  O+ z# y- X9 n
  61.         arg.data_count          = 0x18;
    3 `8 [/ \* N; C0 ?- w# |( S
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 p1 t- q& J8 b- q. p
  63.         arg.e2prom_cmd_data     = buf;2 q! p! d, S& h* q' {; \4 n  T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : O5 ]6 y7 W! c  p" ]7 c
  65.         if (ret != 0) {, j* i' V/ [0 ]0 S0 j
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 {; P% a- c9 {2 S0 i, ^* Y+ f
  67.                 return -1;2 U4 }  q' S8 J- \# M, C
  68.         }4 ~9 O" O% Y% ]4 j5 \7 ]
  69. . ?4 k: D. x0 d
  70.         return 0;3 S3 m$ x: j( N( q9 a
  71. }" k& m! }, T+ g9 l) H# U+ r
  72. ) Z5 s9 V: x' G! P
  73. int main()3 G) r7 |2 l  \# e( S" v
  74. {& W* r1 j8 K0 q0 [, T
  75.         char c;" Q: {  w' y% y7 L
  76.         int i, macs[6];
    ) v) Q& n! Z; W8 \
  77.         unsigned char mac[6];
    - Z6 }3 p3 s8 h& n. M
  78.         unsigned char stbid[256];( b" j/ i% V7 Y: q

  79. 9 m. P+ Q& x5 y3 w" L& E: V/ f
  80.         if (readparam(mac, stbid) < 0)
    ; V1 o9 o; ^' g: n/ R* ?  K+ o
  81.                 return 1;: {' Q4 N- }- ^5 z% H4 f9 O
  82. : a, d% F& G$ s" e$ T4 `0 c7 |# `
  83.         printf("Current parameters: \n");) t; m: ~2 L0 M3 i. }7 X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# {2 h  q& h' p# [5 e
  85.         printf("  STBID: %s\n", stbid);
    ( i3 Z1 P% _" R: n6 Q7 y
  86.        
    7 G' Y. o' `( N2 K! E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; A1 w) g. u! g5 }4 S3 @
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( p9 y/ P/ F9 r) t2 C/ D/ q. X- v
  89.                 printf("Input MAC error\n");; A8 e! }, X! P0 z2 q* |
  90.                 return 1;' I5 C5 t* q- z2 z4 y9 ~' {0 g
  91.         }2 H7 t9 }/ o; r' s2 P3 j& Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 v& i0 F$ Y$ @1 u) k
  93.         printf("\nPlease input new STBID: ");) T( m, O( X) Z* N# p6 H
  94.         scanf("%s", stbid);
    * N# F. Z  l3 S9 ?
  95.         if (strlen(stbid) != 18) {
    5 L0 k! a8 Q& H0 \# e$ q& P+ i
  96.                 printf("Invalid stbid\n");# h/ f# @) T; r1 p
  97.                 return 1;
    1 e% _& M4 I# L
  98.         }! b$ h4 I3 v1 ~  l
  99.         printf("\nNew parameters: \n");9 u; u: U; V5 \' _4 L3 ^' e2 ~0 C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * S9 A8 j0 z* F5 I) C
  101.         printf("  STBID: %s\n", stbid);
    . k0 d' K) Y/ ]

  102. ' a0 b  N* U0 B  P7 P7 l( A
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ `* ?$ K. _8 x# }7 P
  104.         for (;;) {
    / t" _. i/ l. C; N% j/ ~
  105.                 c = getchar();! O  v, p6 [- h( S; m; N' J
  106.                 if (c == 'y' || c == 'Y')
    , q6 k( p  x8 y7 J# d
  107.                         break;
    ! k3 z9 h: r$ a
  108.                 if (c == 'n' || c == 'N') {
    + B3 Y! i# D8 q1 u5 [2 E
  109.                         printf("\nAborted.\n");! I6 H4 D4 v$ }; t$ W# V* {* Y) m: m
  110.                         return 1;
    ! K3 t& x, t! h  d
  111.                 }
    1 @2 G7 ~/ x5 Y1 y) f$ G
  112.         }/ ?+ p& S6 l! ?" m( z3 E
  113.         if (writeparam(mac, stbid) == 0)
    , [9 q/ c( D8 d( e6 C
  114.                 printf("Parameters changed.\n");1 k, ^, l) B4 i6 M$ l
  115. , ?& J9 l: W3 d: W
  116.         return 0;
    8 y2 l' L8 @7 X. x" m) V
  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
( O0 n) o% u2 U: s7 S' {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 T% Y( r+ W  d+ x% x
你用的编译命令行格式是什么?8 R1 Y1 S+ d" @9 J/ u' p+ U  P
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-2 06:19 , Processed in 0.024441 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表