找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13814|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: n4 c/ E1 `+ b+ y1 Q% r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 G7 h/ m7 h/ ~: o; l. Z0 S  [; `
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 ~+ g' z% R5 J1 l0 A; b5 k( fusage: himr <address> <value>. sample: himr 0x80040000 0x0
1 L9 F  C5 q4 P* T3 s
. J# Z$ Z+ Q: h) S# X7 f. E, R' @& k! J! q
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- {# c$ s% e6 t+ P% }8 _

) I9 r' f: @) N4 K8 c  a3 {补充内容 (2012-3-8 09:42):
2 _: W* {$ O9 J4 Rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 i1 k, m. C8 }这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
! O6 l! a& V4 K7 F! |( b6 r6 \
, K6 \! X" N3 B4 E1 jhimr <address> <value>. sample: himr 0x80040000 0x0
" g. M/ d: y! _& T7 A5 C; T- N8 c' Y6 n' A" i2 Q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) ]9 j0 i5 B0 e6 }, b
himr 0x80040000 0x00' L) Q4 u- l+ Z2 m- ~* t  A5 ~
himr 0x80040001 0x11
4 c/ N# @, H7 u2 ?himr 0x80040002 0x226 R* V& {$ [" \
himr 0x80040003 0x33) u2 R3 O3 @( q$ K3 i. r
himr 0x80040004 0x448 T/ @2 _9 _9 x( o
himr 0x80040005 0x55* C  Q# Q" ~% K. L$ S, J5 c

+ e" j1 G+ K. T9 G5 r: VSN也是类似。
+ H5 I9 O$ e# U7 ]) ?; G8 o- Z3 c( k* q8 A4 ^4 m6 a
现在主要是,谁告诉我们MAC和SN的地址?
3 L$ f4 f+ M5 S6 C- i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - d" ~3 O2 ~1 g2 C* r( v
一直想找到运程修改MAC和SN的办法,苦于无解啊

- M2 d9 n, F  W源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ f2 d" i% f: b* t7 U* J2 N. a8 d$ X/ m$ j7 _# |! k; p
修改的代码早有了。到今天不会编译。7 A2 Y4 l: t! A
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' Q) h' u# O! M% Z( b& b
  2. #include <malloc.h>' Z3 I0 E. y! ], K4 B, g7 ]
  3. #include <sys/types.h>
    # ~; ^7 E7 r4 \+ X
  4. #include <sys/stat.h>
    ! o1 C1 u& A+ I" W. t
  5. #include <sys/ioctl.h>" \* @7 {- v) ?
  6. #include <stdio.h>, I- y/ R- ]& i3 D9 E
  7. #include <string.h>
    0 t& _; K4 {. Q
  8. + M) u; I8 L. f4 i" `
  9. typedef struct {
    5 ?5 K# q+ ^: C, s
  10.         unsigned int        e2prom_cmd_sub_addr;3 X( C6 P% l, J+ h- L' [) W) T
  11.         unsigned int        sub_addr_count;$ c7 q% j2 G" h6 E5 e9 V
  12.         unsigned char*        e2prom_cmd_data;" l3 c' H. p* r  S* b6 E
  13.         unsigned int        data_count;
    ! P. t+ b% |# v0 K4 P( R/ V2 _7 S
  14. } e2prom_s_cmd;
    * w( ~% C. R% F& R, N# @

  15. " y# z) Q; v3 l* Y7 Z7 z( J
  16. #define E2PROM_CMD_READ 19 M% ^1 f9 X2 z1 C. C
  17. #define E2PROM_CMD_WRITE 2
    , Z2 f; b. o- [6 {) x. C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ |0 X' t' `4 e+ V6 y

  19. 5 s$ o( ^$ R  Z. b7 r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# i# t; S/ F; ?9 }
  21. {
    ' C- @: C6 P0 G. W' Z& j
  22.         int fd, ret;
    8 C! l2 _/ m9 X2 E. B# z
  23.         e2prom_s_cmd arg;1 `, O1 a8 e% N& o0 `
  24.         unsigned char buf[0x18];
    : F) p; n9 w. K. F9 {- y
  25. / o% D( T9 o' \$ k& ?2 |2 c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ E( N7 L& u9 P  n  @
  27.         if (fd  < 0) {
      F' _3 p2 q! _/ ^3 d+ K/ c. N& K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / ?- N" I1 A/ k# ~" A9 M) g  }
  29.                 return -1;
    : n" }: @. q, X" M& K* {* L
  30.         }
    , b5 F4 F: u# J7 e
  31.         arg.sub_addr_count      = 2;
      p: Q1 i8 ^7 H3 q1 }: j; J
  32.         arg.data_count          = 0x18;
    8 a1 P8 h0 s! v) y1 d2 {% O
  33.         arg.e2prom_cmd_sub_addr = 0x290;! ], i( w0 y2 V! i- J8 P
  34.         arg.e2prom_cmd_data     = buf;5 {  t( u) j- |3 A2 y- L2 D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, O# |3 H" h+ g1 M1 |
  36.         if (ret != 0) {7 e9 u+ c9 n$ t9 J( C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' j' G+ Y# s8 E
  38.                 return -1;
    " C; T* Z0 k/ t- u  j5 p. _
  39.         }, j+ @& ~' F* K8 m5 ]
  40.         memcpy(mac, buf, 6);6 @- U/ s$ [7 N7 A
  41.         memcpy(stbid, &buf[6], 18);- ]: \9 e$ z' g  H6 e
  42.         stbid[18] = '\0';: ~6 |3 M5 B6 a: \+ G
  43. 4 F7 j# l( p6 Q. [
  44.         return 0;$ a4 J) G; P) U7 E" d" F# c
  45. }- e) f" H& {2 @2 u

  46. 2 G1 t( N$ K9 J% p
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), N. B- H% t2 j  z+ f" o# ~" i
  48. {
    3 f! n. b) I: l9 g5 w0 D) L
  49.         int fd, ret;3 N" C$ y) E( V  v2 Y8 M7 K+ `
  50.         e2prom_s_cmd arg;4 g- ]0 f) d$ R! Y2 Q; x2 ]
  51.         unsigned char buf[0x18];1 _# q* H1 C  S& O3 N' w/ {
  52. + Q' T5 r( t% h9 j( q& |
  53.         memcpy(buf, mac, 6);0 J: O  t3 [1 I% c  G. W; Y
  54.         memcpy(&buf[6], stbid, 18);
    " K0 k* R* T# H. G: K: r4 R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    - D2 Y' p  Q* T- f$ V/ I
  56.         if (fd  < 0) {
    # {, r) d# D3 i: X1 A+ s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 K: x/ @- e7 x: R+ `2 i5 u
  58.                 return -1;
    8 S- \* g$ o9 C' y* V4 o; R
  59.         }
    7 j6 l- u7 i. b1 ]8 z0 ~
  60.         arg.sub_addr_count      = 2;
    ) s/ T7 f( j, m" W
  61.         arg.data_count          = 0x18;' \8 A0 V2 L3 c$ t& C
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 t" j: }, u% o5 T+ g4 p
  63.         arg.e2prom_cmd_data     = buf;
    . {+ {" W; R! i( p" B% y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 x8 c0 s# u/ {4 A. F+ N
  65.         if (ret != 0) {) m  a6 Y3 q3 Q( A' s& R7 l6 d1 l) }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; Z( y/ y2 s# {
  67.                 return -1;
    # N/ N( Z% q: _: K# m
  68.         }
    # ~1 K) G; U) U8 c. {' j
  69. 1 F" g, N# E  x7 t) n, x
  70.         return 0;" n' w# t6 ?8 M( M5 ?
  71. }: I+ f& @- G. y" u8 G: Y3 Y' E
  72. + ]' P8 V2 D$ r) b, r
  73. int main()1 r1 H3 n" k) G1 W, r0 b
  74. {9 N! J6 P# j+ O# I+ R8 h/ I) n: C
  75.         char c;
    ; j( T7 F9 T4 c! T3 f
  76.         int i, macs[6];' Y8 S5 l' ]: p: k6 E! }/ \
  77.         unsigned char mac[6];
      @% q2 k% K3 ^( n
  78.         unsigned char stbid[256];. W' x: n0 B3 N4 [6 k. L) j2 O

  79. . H! W% x# d+ }! ^( n
  80.         if (readparam(mac, stbid) < 0)" k, H  n- H  n) m8 q3 c
  81.                 return 1;
    - ?& E! ~0 z8 S3 C
  82. 9 L# H  B; a/ g
  83.         printf("Current parameters: \n");
    / }& H1 M# P: h& u2 U- C( r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; q0 s3 g$ m4 L7 v& l
  85.         printf("  STBID: %s\n", stbid);' a0 f; t. \7 e
  86.         , a* V+ O5 l* W4 i1 q# z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * }- Q, p8 d: d# x- F& l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' Q8 V# I! b" [1 N# n
  89.                 printf("Input MAC error\n");
    . ~8 S* h+ z& X2 \* f5 g" p3 g
  90.                 return 1;6 S# d1 C* R! L: z8 L/ L" V
  91.         }
    + \) t, K$ k! {0 a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # f2 m: z% H: d* S
  93.         printf("\nPlease input new STBID: ");
    4 I$ ^) t  [) V3 B
  94.         scanf("%s", stbid);8 S2 Y, p9 G9 {: k3 @# u& ]
  95.         if (strlen(stbid) != 18) {4 f8 q& v" Y: \! O  U
  96.                 printf("Invalid stbid\n");& N9 M+ V+ }3 F# F& @" V1 b
  97.                 return 1;
    6 Z# _- H) Q4 c& M
  98.         }* m: V' {6 @% E7 @7 m& y' q2 s3 ]
  99.         printf("\nNew parameters: \n");5 D  W" |( X) x9 l( ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 m/ Y; {4 L3 M) ?9 }0 F
  101.         printf("  STBID: %s\n", stbid);! \' o2 L# x4 u$ ]
  102. / h' H! H( q# y$ ^$ O0 \
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      s* g! P/ U& S6 D4 A* }7 u, K+ U! i
  104.         for (;;) {
    & |& J1 y7 L. i& |
  105.                 c = getchar();% ~2 N% U* n! N% G' x
  106.                 if (c == 'y' || c == 'Y')# ^' C: e0 v: x: z. W; T
  107.                         break;
      ]- J8 \% l$ [; I
  108.                 if (c == 'n' || c == 'N') {
    : n$ Y- A% s, D6 G
  109.                         printf("\nAborted.\n");% a2 `6 V7 `4 D- J+ K* N
  110.                         return 1;8 Y0 P7 F5 b6 v3 _( k! i+ f' `$ ~
  111.                 }# w1 X+ {: i* r. c% L
  112.         }
    " [. {3 E1 e" a, Z' S; z8 p
  113.         if (writeparam(mac, stbid) == 0) ) Y: r/ B8 e/ g  h
  114.                 printf("Parameters changed.\n");
    . a2 Z" l$ M( I0 r( p- E* e7 m

  115. + \- _# f5 w- n+ V$ _; w: i
  116.         return 0;
    " x% V3 T4 f1 h, g6 u* D
  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 ! ^- T3 d; K* o( F) a
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 [. u' X7 y6 ?
你用的编译命令行格式是什么?2 ]( I7 w  C. l/ S& O' E0 [
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-3 11:34 , Processed in 0.029369 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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