查看: 16659|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( {1 _& y9 G; }0 h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" L0 A6 C5 t( o0 o/ V. @& M
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 T4 `  Y1 C# x; Z" f! {usage: himr <address> <value>. sample: himr 0x80040000 0x0
: E6 U: D8 ^  ~
9 d7 e' o' `; C6 G) S, D  h& F8 \3 ?1 u% [7 U* ?, y$ N
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ J4 C0 f' b( y6 Q( @4 R
5 |5 h5 m* U- d" k  Y# D. t
补充内容 (2012-3-8 09:42):
. j' [: k* R* b% D# X- ^" t/ Qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! I( B2 F( R% z' z% r; j/ K) e这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。. ?2 X: q. T* o; a) x  t5 J
( |) [% \" T, P7 r! Y3 _9 k! h
himr <address> <value>. sample: himr 0x80040000 0x0
" {! ?, w, ]' e$ U8 K
: V$ {: m2 i5 {1 i7 G; K例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ h$ s; u" Y+ a9 i2 `/ K4 s; Ghimr 0x80040000 0x00" ^' W, v6 a1 ?7 A6 ?3 U  m( s1 G
himr 0x80040001 0x11. u" K, l7 `3 N5 l1 L* v9 c6 i
himr 0x80040002 0x228 |' [$ Q' Q) h  w
himr 0x80040003 0x331 ~2 Q) Z5 U0 d# L
himr 0x80040004 0x44
% N$ s# Z6 a& y9 ^himr 0x80040005 0x55) j) y* L9 X. r
$ \. V. _: s! X2 v) O
SN也是类似。
# _! m% D' {& a+ |% F& \* l  p4 X3 S
2 E1 [- S0 }" m7 [现在主要是,谁告诉我们MAC和SN的地址?
* j0 d7 P. J4 |& Z) N2 c% `
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 8 J: w% {8 p$ D# }) ]
一直想找到运程修改MAC和SN的办法,苦于无解啊
& ]# B& r- e# q0 [9 s7 ~
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / P" Z/ U" B9 V/ B/ Y+ _

$ C& s: A! x  N修改的代码早有了。到今天不会编译。
/ }( A% I- E% b& v需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 W7 }& a0 B* g, y/ Y, H
  2. #include <malloc.h>
    2 c9 M; ~6 f; F1 B6 S
  3. #include <sys/types.h>: h6 N0 @5 P8 r" O+ u8 }, o
  4. #include <sys/stat.h>) i, I0 P" g) O5 N
  5. #include <sys/ioctl.h>8 b1 }- j/ }0 ^: ^
  6. #include <stdio.h>: {0 ?5 w$ k6 L; D
  7. #include <string.h>
    9 ]) C0 P3 e( ~: h

  8. 0 z! ^1 l- ?' {5 a  Q
  9. typedef struct {2 m+ }* _; v4 l8 H* M$ R: \
  10.         unsigned int        e2prom_cmd_sub_addr;9 j5 q4 |9 L# ]
  11.         unsigned int        sub_addr_count;# R' a9 _/ i% g% {: P( c, B1 F- a
  12.         unsigned char*        e2prom_cmd_data;3 g8 t. c% ^& d3 P
  13.         unsigned int        data_count;! ^3 ~# E0 i2 D: p& K
  14. } e2prom_s_cmd;; C0 g# I" Z3 Y
  15. 2 y" U3 l! L4 O) p6 h9 m' P
  16. #define E2PROM_CMD_READ 1: {  V, H; K1 {3 ]" Y  A
  17. #define E2PROM_CMD_WRITE 2( V- o& F; G2 z0 c+ {9 }( h9 y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") T/ e: _, A. G, `

  19. . R% Q% V7 q! a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 D5 v+ ~7 F7 _' K, c( k- b
  21. {
    ! I$ c# C* Z$ O0 b8 G7 _4 S
  22.         int fd, ret;
    + i& y. j# f2 b$ F
  23.         e2prom_s_cmd arg;! k5 ^' R7 J) [1 T9 r) M
  24.         unsigned char buf[0x18];
    / k; `) @/ Y, ^: g% n% z, S# b: y

  25. ) R2 r1 n6 d" k% L. t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. Y" C( R+ `, _5 [7 [
  27.         if (fd  < 0) {
    8 F4 Z* {7 n9 L# o5 G$ e  [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- p( a" B, Y% O
  29.                 return -1;& s/ `. {- V  [, r+ o* m/ X( c
  30.         }
    4 {) n" o9 _: F3 g. x
  31.         arg.sub_addr_count      = 2;
    , h2 m5 ^9 l/ c/ n3 T
  32.         arg.data_count          = 0x18;
    ; b1 h  Q4 O6 e9 R) P/ s8 g; h& g
  33.         arg.e2prom_cmd_sub_addr = 0x290;; _7 S  }- ^' u) q  _9 ]
  34.         arg.e2prom_cmd_data     = buf;
    4 x9 u* A  w# ?9 L1 a2 x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 P0 F' N6 M5 M) ]8 M8 `1 q
  36.         if (ret != 0) {7 l, o  g! M9 k- t' d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " W$ M- u4 g, }4 ?4 \
  38.                 return -1;
    3 |" Z) h- S, a# ?/ l4 A2 A' \! l, }
  39.         }
    5 l, ~3 r) f7 P; K6 X
  40.         memcpy(mac, buf, 6);
    4 ~, l7 A! p. f! H
  41.         memcpy(stbid, &buf[6], 18);; x4 U8 v) j4 N# H' f% P1 N
  42.         stbid[18] = '\0';
    ( s( K) g4 i5 o

  43. 5 A- v" Z) b# B& ~2 l8 y$ L3 b$ i
  44.         return 0;
    - d  s, t, `/ P4 h! x0 K' Y
  45. }
    + h6 Y; G, x- ?: r; _, k8 E- V/ |
  46. 9 Z2 p# L/ F4 b3 M4 p- _# k6 L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# k8 M, Y9 [$ z/ M8 K1 P  M
  48. {
    , ?5 A* S. N  I, h* F
  49.         int fd, ret;
    5 V5 y* N9 X: d
  50.         e2prom_s_cmd arg;; c6 E) |0 N3 E5 e" ]  j1 I4 }
  51.         unsigned char buf[0x18];
    5 L( e9 s5 |8 X! }! z

  52. 4 m: S% R. J! {. h9 x. o
  53.         memcpy(buf, mac, 6);
    " ~& b8 |* X' r" F  ?
  54.         memcpy(&buf[6], stbid, 18);# R; b- Z4 K  |7 q. v* K* @5 x; f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / L) b" Q# o2 {: |3 B3 O
  56.         if (fd  < 0) {
    6 m2 b: Y. R' B! X  h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 b" N5 c" t# [/ e1 @; A
  58.                 return -1;
    * j% d, z  C. \  O
  59.         }7 U8 R3 p. W" I3 v' }2 k
  60.         arg.sub_addr_count      = 2;5 y" q7 \9 c/ e5 o
  61.         arg.data_count          = 0x18;
    . t: S& d: F3 {' }% A
  62.         arg.e2prom_cmd_sub_addr = 0x290;" Z9 O$ F# M9 G# j& W. q
  63.         arg.e2prom_cmd_data     = buf;! t. f) n, v& y- C* Z8 W* _
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ Q" n' Y" |1 J, B
  65.         if (ret != 0) {
    0 c% S4 ^# G) j1 `. q* a, Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# k% r% O6 |5 w" D/ Z
  67.                 return -1;) O. f" v+ I& T" ]' _0 c
  68.         }8 Z6 h, y0 [$ a  n* J9 p  E
  69. & e( w. p3 f0 o( H, e7 U( m
  70.         return 0;
    , \8 `, e9 Y4 Z; s& f
  71. }7 }. @  {1 E7 z8 `% y  B

  72. 0 y) O$ I% U9 M7 a( }& Z7 p
  73. int main()4 U) i! {8 M: N6 N0 \" H4 l
  74. {# g, t, [4 e) j4 y0 r. k8 j
  75.         char c;" u( T' L  q8 s6 E1 F0 @8 D- H
  76.         int i, macs[6];
    , [4 T. a! S/ l' d1 J
  77.         unsigned char mac[6];. }, Q$ Z. A' L+ T5 ~4 M
  78.         unsigned char stbid[256];
    ) U( e' ?; V% s
  79.   a) r! q% u  \  t- p$ b, a' Q$ }
  80.         if (readparam(mac, stbid) < 0)# J( E0 K/ Y9 B. P
  81.                 return 1;' v6 y( B& @5 Y7 P, g# R0 |; u
  82. $ `3 x: G' [2 E2 h$ p# d
  83.         printf("Current parameters: \n");
    4 G# m" k% ]% J* Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 ^+ F/ }  f. T. m
  85.         printf("  STBID: %s\n", stbid);) N  O' i. ?1 S) x+ E
  86.        
    4 Y* W9 N5 A/ f/ f/ z1 N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 m$ y* \1 @, M7 m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % A+ o8 Z% _# z; j0 J
  89.                 printf("Input MAC error\n");+ i* `# h( x' ~! B
  90.                 return 1;
      R( Z% x* A; l/ S% @; o& m
  91.         }
    1 D4 o  h8 W# T/ Y# S& n" f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% Y" y* T9 t$ I7 o# V2 G* g
  93.         printf("\nPlease input new STBID: ");, p5 m/ n$ F( D" L: o
  94.         scanf("%s", stbid);5 [% J$ F9 O$ v) ]
  95.         if (strlen(stbid) != 18) {5 P0 q9 G6 _6 ~4 `2 B
  96.                 printf("Invalid stbid\n");% X: V( O/ K" o9 ?
  97.                 return 1;8 D" y0 ^* M) c% Z" u( ?$ d
  98.         }
    - G( v8 T  ~) y6 q' h
  99.         printf("\nNew parameters: \n");, V) f+ m! i. m* s9 \: m0 r7 \, e( W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + y% N, ]6 N/ R6 X  t
  101.         printf("  STBID: %s\n", stbid);; G* A. N/ D$ A- }

  102. & F5 Q* U4 A) h# @6 x6 C
  103.         printf("\nDo you want to change paramemters? (y/N) ");) E1 s. R- ^' B
  104.         for (;;) {
    5 s1 _3 f7 |# R! K2 L
  105.                 c = getchar();3 G8 i8 w4 M) }1 m* Z( e3 @
  106.                 if (c == 'y' || c == 'Y')! ]+ E. v: ]2 F- W! G8 `
  107.                         break;
    + I8 D& l$ |. p; w- i! s
  108.                 if (c == 'n' || c == 'N') {- u1 c# Z3 q$ t- Q1 ]
  109.                         printf("\nAborted.\n");
    , ?, t( I% k: @, _" z  t
  110.                         return 1;
    4 J- G- A: ?4 n6 o2 x
  111.                 }
    - H/ v+ w  x7 U8 m( V' M
  112.         }. Z+ O' g! c, u8 l8 _1 o, y
  113.         if (writeparam(mac, stbid) == 0)
    3 J) O7 j* D' b9 |* U
  114.                 printf("Parameters changed.\n");0 `; f7 x* K5 ^+ y

  115. 2 c1 _- E. e: m; G1 v7 e$ p* ~, B* G
  116.         return 0;
    7 L' F- A! b: h3 _% q( Z# y
  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 - N! ~+ K/ X8 r5 e8 S7 n0 C5 k
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) L" P8 {$ j  q$ ]" i) k( ?
你用的编译命令行格式是什么?
1 Y0 O/ D3 L, m- M) p4 E# ~2 y" g
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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