查看: 17603|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / W* Q6 E+ O  k5 C7 i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ A& K3 R& \1 `: A" U* d4 x% O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:5 d# Y) X# y& c( j/ C
usage: himr <address> <value>. sample: himr 0x80040000 0x0' \( a* E5 U, q, F: W. j' ^
  u  F0 N  `+ h' D/ _$ M

& Y/ T- M# X7 n: ]不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 Y5 x( @+ I5 o# y
3 g; v" K( @8 g: c
补充内容 (2012-3-8 09:42):8 W! A; m' e1 x* o0 c
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ t/ D( t8 ?2 z( t6 n- q4 R: s这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。( ~: h/ P7 P' \4 y4 G

& I2 P* c; L+ khimr <address> <value>. sample: himr 0x80040000 0x0$ `" i% x# N7 F% U# j

5 M# h% |- v- ^0 K/ l例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  u3 u9 d1 J5 W: ^% l3 P- W9 Z7 f
himr 0x80040000 0x004 |( j. J- O  O7 v- f3 L5 E$ e7 v
himr 0x80040001 0x11& h8 p& i! T/ Z* ]) Z
himr 0x80040002 0x22
5 ?: [) t9 v- w; t1 g- }9 i9 u! nhimr 0x80040003 0x33+ Z8 y3 ?! {# U
himr 0x80040004 0x44
5 O9 t4 Y& G: G5 Dhimr 0x80040005 0x55
6 c1 D! D1 A4 a  ?# e# Y/ c$ \  ~! Y
SN也是类似。
& y' f1 b6 H* l: }5 ^7 O8 h' O# i/ t( Z3 D
现在主要是,谁告诉我们MAC和SN的地址?0 O% |* l1 `( ~- b
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& L* p  U# E0 k/ V+ B7 f6 C: k: F0 H一直想找到运程修改MAC和SN的办法,苦于无解啊
) d8 q! [! x6 S' a! x% V, k
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 q8 Q. Q/ n6 S4 H7 `8 N6 Z; q: c* ?0 F. }
修改的代码早有了。到今天不会编译。. Y' a% Y! q7 ^; V% y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , ^& b  y- A; X  \
  2. #include <malloc.h>
    3 h3 K. E4 Z" p) M5 ]0 v
  3. #include <sys/types.h>7 O- o6 ?. X- ~. V/ W1 N
  4. #include <sys/stat.h>/ n3 i  M0 J+ e
  5. #include <sys/ioctl.h>5 s, g0 f% j% z4 b8 P( G
  6. #include <stdio.h>$ z! Y- d" q  ?8 i) e% W2 C
  7. #include <string.h>. w7 ]: c- p$ `, ^' H
  8. 0 u% R+ Z, H. ]1 q1 Q/ \
  9. typedef struct {3 S4 X4 _. r: F- t6 Z
  10.         unsigned int        e2prom_cmd_sub_addr;
    & E, j8 ?4 K2 V7 R1 l( ]+ W
  11.         unsigned int        sub_addr_count;
    + t' ~& X" ~  ^$ \* o! W
  12.         unsigned char*        e2prom_cmd_data;
    ) A4 W' n5 s6 E3 t
  13.         unsigned int        data_count;$ D" f- @) e( n5 v' P
  14. } e2prom_s_cmd;6 q8 |5 Z& B, g3 I
  15. . V8 h/ R% r' ?: k. d; n
  16. #define E2PROM_CMD_READ 17 A8 y1 j$ y' M9 ?; n6 y2 z
  17. #define E2PROM_CMD_WRITE 2
      k( B& \# k3 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 Q; T  F; h3 L3 f: `
  19. : Z/ N3 E( U3 p. ^  c- A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " P/ @- Q& o! H8 ^: ^; G
  21. {
    6 x1 E9 V- q: c; `. M$ f2 X
  22.         int fd, ret;& K" v4 [  `& [+ ?$ t
  23.         e2prom_s_cmd arg;
    ; S' V  f$ V7 k5 l
  24.         unsigned char buf[0x18];
    * S; D- U/ M1 f9 V; f& ?

  25.   g7 D7 s( ^! j- e( f! W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / V0 b' e" Z! g$ B* O
  27.         if (fd  < 0) {
    5 C/ H8 b! k! V: [: S, h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! c( ~5 h/ S) I  J& O
  29.                 return -1;. ^: O. ]1 S. c) A
  30.         }
    1 L. t5 J# h( r" L) `: j
  31.         arg.sub_addr_count      = 2;
    . n( g3 z& v2 n' B! d5 T: \( |" z; a. H
  32.         arg.data_count          = 0x18;1 e% P8 K& L3 _8 t7 K' B& P' j  F7 B) r
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( E5 k# K5 |5 E5 M, H3 ~+ u! }
  34.         arg.e2prom_cmd_data     = buf;3 _4 L, E- Z: r: F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 t9 F! f/ G% [& V
  36.         if (ret != 0) {0 f- H* R" ]9 V, C+ z. J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 e0 A+ }! ~6 z
  38.                 return -1;
    : Z6 Y! G; ?% ?# k* ^
  39.         }
    ! u2 m6 w# R0 X' v9 C6 m' Z
  40.         memcpy(mac, buf, 6);* x& G2 _! [- D# k! K/ p1 F% j
  41.         memcpy(stbid, &buf[6], 18);- E4 j/ ?1 [/ g4 }
  42.         stbid[18] = '\0';
    $ F: y9 [8 W- J- n& `& A

  43. ; @3 O4 m' O  U9 w
  44.         return 0;
    0 V8 P8 E" E0 A+ g3 Y+ p% t
  45. }- w  t; \2 p6 L/ _# f+ h( J
  46. $ y4 {7 [" E5 E6 b% ~) H: t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 \0 p% r+ a" p7 ]7 i
  48. {1 E" L7 P/ K  R8 @- k4 F' n
  49.         int fd, ret;. O$ Z6 p$ z' J: j
  50.         e2prom_s_cmd arg;
    % X  s) Z  m: A; j2 |: H3 ]
  51.         unsigned char buf[0x18];
    + ~5 x7 O$ B6 s- |7 [; T
  52. / }( E% P1 H0 \" k1 E" \, A1 o
  53.         memcpy(buf, mac, 6);
    5 Y% d5 {/ L! M# r, U7 `2 F
  54.         memcpy(&buf[6], stbid, 18);
    7 b0 c% E+ ]# V/ F. [8 ^( G, Z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; j! A, u. p' e/ s) Y/ L
  56.         if (fd  < 0) {, K6 q6 j( c9 ~2 u3 w# m, M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( M6 C; [/ D4 ~' n
  58.                 return -1;0 d4 p7 w4 z+ i5 b) u# _* S$ u: `
  59.         }1 Y9 ]! q6 J% S9 i6 K+ y
  60.         arg.sub_addr_count      = 2;
    ; k! u7 ^; J3 T" n$ N: n0 Y
  61.         arg.data_count          = 0x18;
    * {* {4 k. r: |5 q3 i* n5 Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 l0 B2 t6 ]9 Z% y
  63.         arg.e2prom_cmd_data     = buf;/ u0 G& Q" ~$ X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% A4 _& g" S6 J; g7 b! Z" h
  65.         if (ret != 0) {
    3 M2 ^* z% P% u$ A6 p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; u. J6 x& S) H0 B- o0 J! O$ A, v
  67.                 return -1;
    2 }) o, `; r4 f, v* @
  68.         }
    8 S% H" I+ z4 [; O: N

  69. # `) L9 b% n6 H
  70.         return 0;4 t( K* ]% ~& a3 ]# `
  71. }2 E) v* H8 U2 T: x+ F( ~
  72.   S, J" o; }: P; b; J( _
  73. int main()9 z: D# s7 B) c. ]0 p
  74. {
    8 p- |3 n: J+ o9 e$ o9 H
  75.         char c;
    7 N  [- L5 Y8 ?+ p6 C" n3 w6 Y" @
  76.         int i, macs[6];$ f0 r; i' O  a6 T  V
  77.         unsigned char mac[6];0 {; u! {1 a: [) B- y$ I) a
  78.         unsigned char stbid[256];& I! P2 L2 E' k1 h2 q# ?6 q
  79.   c6 B1 g4 e: u0 U
  80.         if (readparam(mac, stbid) < 0)
    9 ]* S  }3 O7 _  b7 L0 y" w
  81.                 return 1;" ]: ?- k' G; J  R- [# U

  82. 2 j1 l: [: g. `" M9 v6 L, S: B
  83.         printf("Current parameters: \n");! w, ?/ x9 B/ M  Q( T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " p& r$ u6 G8 y* _
  85.         printf("  STBID: %s\n", stbid);
    6 K" W3 T* i, [: t
  86.        
    * Y( U6 m: j1 A( T- i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( g9 I4 x# U5 l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' K" S- y: r7 d/ A
  89.                 printf("Input MAC error\n");
    - Y4 Q/ b/ ~+ J6 @4 v$ @( [
  90.                 return 1;
    - B( j6 H* w+ M
  91.         }  Y- X  k0 `$ S& R+ x; a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 c$ Z5 b1 \( G6 h, D( w4 `1 ^
  93.         printf("\nPlease input new STBID: ");# a* {' K% U: F8 J  P: a+ {% j0 P/ e* g. e2 n
  94.         scanf("%s", stbid);: H1 O- P8 b) s8 x' a5 p/ K( C& s
  95.         if (strlen(stbid) != 18) {
    $ h. {: i% S# Y6 E" H
  96.                 printf("Invalid stbid\n");
    + b3 o3 D! M& |5 K" Z5 m  }# h
  97.                 return 1;( M5 [% q# J9 A' F5 Z4 @/ a- H
  98.         }
    * r& f4 I9 j7 r8 O5 h2 q4 m
  99.         printf("\nNew parameters: \n");
    ; h  ], J& w# q" q! [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 o" Z% M9 Y; ^  C
  101.         printf("  STBID: %s\n", stbid);
    ! i0 @7 `6 I% i4 j* v

  102. . w) H! G9 u- \( J
  103.         printf("\nDo you want to change paramemters? (y/N) ");, _2 K5 f9 h- _$ y' T
  104.         for (;;) {
    ( i& x% C9 f* s8 d$ V) y8 L
  105.                 c = getchar();5 p4 V3 c0 ]$ B1 o/ f
  106.                 if (c == 'y' || c == 'Y')
    * i, w# @+ L* j  S9 r
  107.                         break;
    * T" e9 }! l1 g) ~3 L) z
  108.                 if (c == 'n' || c == 'N') {' y) b# E% t" H  W) a
  109.                         printf("\nAborted.\n");1 v1 Q- Q1 j% j, i& J  ]' o$ U
  110.                         return 1;
    % w) M3 [6 D3 @# k# Q
  111.                 }
    5 H4 v. {. X; }' b* w' k
  112.         }
    6 w) D/ R4 I) z" g! O6 S
  113.         if (writeparam(mac, stbid) == 0)
    ; ?! h3 y1 D: f
  114.                 printf("Parameters changed.\n");" }. H5 U0 M7 d9 F" U: W9 l# x
  115. 8 W& s. e& b( s& g
  116.         return 0;
    # u  q5 c% G: ^$ c/ d- E. d( 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
, \$ C0 c  O* z) A" j% @. A在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- i7 N- E8 o- m1 `
你用的编译命令行格式是什么?
+ o# L; k$ s4 E' c4 ?
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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