查看: 16837|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 F5 A) P( J0 _
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 u0 `# x: i+ D2 w& ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' z1 a" O; l) Y  F. X% J+ c- rusage: himr <address> <value>. sample: himr 0x80040000 0x0- E  I5 g9 }2 {% _5 B' u, {0 o
2 s  d9 j# n$ @0 E3 a

. [% n' `" f$ ^5 Q7 X不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; ?9 u* o1 h5 O; |- L

* d: [5 Q, r% Y* k4 U3 J' C补充内容 (2012-3-8 09:42):
; y9 l- }: A" f, m! Qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 B6 \- f! f" H% C% E! A
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
) M: G" G9 G3 ?3 ~3 X
1 I* t% V4 [/ j, hhimr <address> <value>. sample: himr 0x80040000 0x0
6 ^7 l# |) y- V4 [6 X: z" {8 F& _8 L' c# {+ Z* F5 C
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  q# X( x4 I* s. z: Y% d% v
himr 0x80040000 0x00
3 y0 y2 \5 W- K* E- Z9 C2 s) fhimr 0x80040001 0x11
2 K( [* t7 F7 \1 o4 Y, Ehimr 0x80040002 0x22
; ^" f) h% U( p2 L2 u+ Nhimr 0x80040003 0x33
$ ^7 ]/ J4 }; q% U- ^/ M2 r3 ?: \: dhimr 0x80040004 0x44
6 X$ k$ L: k* [- _: lhimr 0x80040005 0x55
8 S! l, E! P3 h. N. t0 u. D
  j# o7 k. S6 R! [! q/ P( d% [SN也是类似。
) x4 V  T2 c2 }7 \
- {) O& ]- L8 f- i5 t现在主要是,谁告诉我们MAC和SN的地址?, ~1 V0 ~: u2 T  g: L
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( r5 n+ t  r3 W3 s' Q; y
一直想找到运程修改MAC和SN的办法,苦于无解啊

$ s8 W- s* `6 p; B% R- W. L源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ u& O6 u, y" ^/ w9 Q& {( M
. C: N  T0 x# L) Z. G+ B  q修改的代码早有了。到今天不会编译。  ?1 Q7 y8 K: c3 W4 q* T1 b# L5 p
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 C. U+ R6 D1 D6 B3 o0 }- I
  2. #include <malloc.h>
    , R- v% S2 p! T
  3. #include <sys/types.h>
    & T# r5 b$ C: ?5 u$ R+ t) ]0 V
  4. #include <sys/stat.h>
    5 R' [& l; [$ P. x( P$ L
  5. #include <sys/ioctl.h>
    6 u. z7 d' F! y7 q: N4 h( s0 K' c- ~+ a4 N/ ~
  6. #include <stdio.h>0 m) S. g. ^) Q2 f1 I6 @% O4 G
  7. #include <string.h>
    ( l2 m( N: }$ n* j

  8. 5 H+ H5 T% G1 W/ a" T% s! |
  9. typedef struct {
    ( c, B/ n0 z) E, ]+ r7 A1 O
  10.         unsigned int        e2prom_cmd_sub_addr;
      `1 N* }. z" _2 O# [9 a
  11.         unsigned int        sub_addr_count;. s: C# H8 {. z6 u+ J) f! _
  12.         unsigned char*        e2prom_cmd_data;' }7 _- z* Z+ j- R
  13.         unsigned int        data_count;. O" ~1 z& G* [/ z( \
  14. } e2prom_s_cmd;
    ' P/ L/ R% R! x* Q: ]9 W8 ?5 [
  15. : h+ [6 \( o' ^8 K; L# E! }
  16. #define E2PROM_CMD_READ 10 o- T% @+ u2 N; E; `0 y
  17. #define E2PROM_CMD_WRITE 2
    : ?8 w$ b  h) G2 o# B9 Y6 `/ o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 g2 x* q* c0 {7 U6 w& d* X
  19. + g# i% l1 F" D4 A* p" W# g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 \( t8 _+ e4 [( ?3 r1 D4 L& _
  21. {
    9 b( ^+ l. e' }+ o- T
  22.         int fd, ret;
    8 {0 R* j. }0 S2 n
  23.         e2prom_s_cmd arg;
    ' a0 m; @9 Z: C8 y' Q% W
  24.         unsigned char buf[0x18];
    , y- v) r2 C1 g" F, ~) [

  25. $ @  Z9 d, h: w; m: n+ Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& G  P# {& z( k6 y
  27.         if (fd  < 0) {5 f! R/ y$ h8 T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 M8 g4 S: p! n+ G
  29.                 return -1;
    9 M1 D: v) T8 o# D2 v' V" e& l8 }! Y
  30.         }. L/ p2 j8 [% L/ x2 x# y" L
  31.         arg.sub_addr_count      = 2;
    6 {. B0 e& f# ^( P
  32.         arg.data_count          = 0x18;5 b' ^" n8 O3 j; s; c
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 V7 ?* w5 V% N3 F9 V3 {
  34.         arg.e2prom_cmd_data     = buf;, R' w* @2 k( i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " H" Q. g3 k  e' X- m
  36.         if (ret != 0) {, c. M# K5 e, U3 s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % W1 J" W; ?. S9 ]  b  k" f
  38.                 return -1;
    + p' w  Q/ A/ G7 c5 W6 Y
  39.         }
    # q% q) |- Q  d: l
  40.         memcpy(mac, buf, 6);
    ; K) R! G# h7 G9 f' q5 w- ?
  41.         memcpy(stbid, &buf[6], 18);
      J' A0 f0 K" C. K) K
  42.         stbid[18] = '\0';- {* @( ?' ~8 N# j) r* }
  43. 1 P: i6 L* k7 v1 ~7 u- ?( h* b4 N
  44.         return 0;- _2 _* o. y# r8 X# u9 o  l- Q
  45. }
    + n! w$ ~# ?; c! I
  46. . o2 k3 J/ [5 Z1 O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 T# _* g0 E; x, U* N. P1 x
  48. {4 R8 @0 r* C/ X4 }. l, v: j  W0 a' g
  49.         int fd, ret;" t: j0 z7 F# J8 B* D# f5 H
  50.         e2prom_s_cmd arg;7 H5 c- y6 o8 u3 b* O
  51.         unsigned char buf[0x18];9 W. U1 }( w# L9 R: e1 E

  52. 4 ^( B( Z( Y/ i+ T4 Q. o6 t
  53.         memcpy(buf, mac, 6);$ r/ x/ ?' q, ]
  54.         memcpy(&buf[6], stbid, 18);- k% O$ p! u! ?4 G
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 l# O  w+ y* U# z
  56.         if (fd  < 0) {! T7 M3 t  @2 ~: L$ d3 H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      l" j8 A+ {. {. h* ^
  58.                 return -1;6 E' f1 b. Y0 X' D
  59.         }, j, j% [8 u% [: _, k
  60.         arg.sub_addr_count      = 2;
    4 E9 _5 A; ]9 O1 M. u
  61.         arg.data_count          = 0x18;
    $ K" Z, Y" X, K2 s/ g+ L+ r4 v5 ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;) n7 ^7 y/ \1 b
  63.         arg.e2prom_cmd_data     = buf;
      S. n8 P9 e1 W' K9 Y0 b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' Y" s: n. j. {
  65.         if (ret != 0) {8 V+ N/ P+ t; o( I6 @6 B" E$ @) E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , \* I1 t, ~( }1 W! J
  67.                 return -1;
    & u# R9 F/ N2 m# O
  68.         }* u8 g3 s% W: c
  69. 9 ~6 V- S. S3 l1 Y
  70.         return 0;0 B; B, I( _$ ^* z: e+ Y
  71. }
    & B( H! M' T# d& Q

  72. ! u, i+ v0 P$ ^% g" u: \
  73. int main()
    , w4 t5 Y* a, U5 t9 B6 Y) e: g
  74. {
    7 u6 i0 ?9 T, N1 r
  75.         char c;
    3 }& G$ _/ D& x  ]; W
  76.         int i, macs[6];( K  J: k  W* E4 q
  77.         unsigned char mac[6];! O+ _; @7 h# f
  78.         unsigned char stbid[256];
    - m& S, s' R6 A, C+ Z# @% v7 u$ B
  79. ! D) Z, u" f/ R2 q
  80.         if (readparam(mac, stbid) < 0)
    4 Y8 s; Q+ y4 I9 c
  81.                 return 1;& M6 E( a1 L. O! x: X( K6 h
  82. ' S  F: ~2 W4 ^5 ?; F) d9 f' ]
  83.         printf("Current parameters: \n");6 G4 V' ]9 B* ?- e$ C8 t* d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  L) R4 r8 u6 R
  85.         printf("  STBID: %s\n", stbid);6 Q, q0 Q7 D+ h) f/ V/ w! X
  86.         ( p" R7 w! R$ k+ t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  E, s1 M( F( H7 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . K& _2 ~  o( s% L; D* [5 T( f
  89.                 printf("Input MAC error\n");) ~- w+ G! q5 I2 I7 a* b7 b' A
  90.                 return 1;) w9 U- G2 N8 u' |3 L2 u$ b* s
  91.         }
    1 @( a) x! t) Q4 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* ^9 c: q! n7 q, G( G" o8 x
  93.         printf("\nPlease input new STBID: ");- H) E' n1 c: X' R( K% m
  94.         scanf("%s", stbid);
    * F% n2 e. N/ b, k* w2 L- y
  95.         if (strlen(stbid) != 18) {4 Q( c  N) ~4 @
  96.                 printf("Invalid stbid\n");
    7 u( U2 u1 |, ?* y6 w% Z
  97.                 return 1;
    / O# Z! U* n2 Z) C0 B' U
  98.         }- O9 o! f$ Q. D8 ~: Z- k9 O) Z1 w4 R
  99.         printf("\nNew parameters: \n");! b. n( p1 A0 H$ P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& u: t5 u1 Q; U$ P
  101.         printf("  STBID: %s\n", stbid);$ K/ g1 o) r8 J% o8 x8 y
  102. ! p+ a' A$ _' x$ t/ b4 E  I3 L
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & ^& O. k8 w2 o0 K
  104.         for (;;) {
    & V/ F. y+ R5 l; y: y$ C0 a& T
  105.                 c = getchar();
    5 ]4 z# N7 B" |" }; l0 z; c
  106.                 if (c == 'y' || c == 'Y')
    / @. T3 s+ E. N. n
  107.                         break;0 x0 Y, {4 [0 |+ h  E- ]
  108.                 if (c == 'n' || c == 'N') {# j8 I( H7 y( U  D
  109.                         printf("\nAborted.\n");0 R: o$ j/ `  Z! j: R1 `7 T; r; ?
  110.                         return 1;% L- z% {' K' i: D* L+ u$ L  K, }7 b
  111.                 }
    ( j$ h+ ]' m1 Z6 A8 [3 V  \/ E  E
  112.         }
    9 w- ~* l, E9 g; R- M
  113.         if (writeparam(mac, stbid) == 0)
    % i6 v3 ]* m  k, E9 x. Q
  114.                 printf("Parameters changed.\n");0 F0 D1 v/ ~1 Y5 F  l) p

  115.   F7 H4 |. Q* D6 \( ~
  116.         return 0;7 p+ R. |/ {* K9 M, T
  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
# d. @! M5 ?. a  g# r$ k5 ?4 D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( X% M# C+ |' b2 V5 w& I
你用的编译命令行格式是什么?
" O- {8 f4 a$ ]
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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