查看: 17416|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 @  e1 o$ b! _4 J9 s$ ?9 ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) v2 O2 T1 w. y& K0 [. O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 \: `, [7 }+ z" H5 ?usage: himr <address> <value>. sample: himr 0x80040000 0x0, d6 f6 k( H, {

. L  }. h. R/ F0 A; m% j5 o! a5 ?  d4 |
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* o/ Z+ t, u$ U% r5 K0 b
/ [% }: D" p1 H, ]" V补充内容 (2012-3-8 09:42):. i" {) z$ k- V+ z5 D7 R' g4 @2 u! x
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ s2 H$ T! V  H* Q/ ~; R这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。7 I7 o2 v0 Y" c6 ^: m
% s' Q; `2 ^0 z- X
himr <address> <value>. sample: himr 0x80040000 0x0
/ H5 E3 `% D; C- a& S! X4 s
" z) t: I" T- F/ J8 P例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) z7 }3 F' {. k# s9 ^
himr 0x80040000 0x00: O- y9 p2 ?. U  s3 i& a
himr 0x80040001 0x11
. }. e' |; N* {" D0 nhimr 0x80040002 0x22
. t9 c$ W: m4 i  Q7 Shimr 0x80040003 0x33
/ O7 e0 G% q# a# P/ H2 Zhimr 0x80040004 0x44
1 O* Z  _0 w$ s7 U' d9 \+ rhimr 0x80040005 0x55( \* t) s- \% a  {; _+ V3 ~2 v: X* G

3 D) O% b# k8 d, V! zSN也是类似。
) M$ k: Y  ^( S1 ^" {) D9 q, g" M. x
1 Z9 a: a( Y: H5 D现在主要是,谁告诉我们MAC和SN的地址?
$ A. T' D: m; |4 f
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- r  f8 J; V7 j) E一直想找到运程修改MAC和SN的办法,苦于无解啊
& f( X# E0 _: H& z) u
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 X; Y/ e( x1 Q$ }5 v% K' S# |+ D. U( W5 y
修改的代码早有了。到今天不会编译。
  j; h4 ^% Z$ \2 ]  a& P, K6 |! @需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 g" K0 z. u. y
  2. #include <malloc.h>
    % {% i1 ]- `! O# \- Q, ~9 c
  3. #include <sys/types.h>
    ( R, P) r8 P$ s5 u  ~5 f: i
  4. #include <sys/stat.h>
    / A* ]" @  g7 M) \6 s! v
  5. #include <sys/ioctl.h>! d' v9 {9 R9 Q4 o' l2 X" m
  6. #include <stdio.h>. A( F9 v( P6 _0 O8 ^  ~+ p
  7. #include <string.h>8 j; q$ [! ]2 g. d9 c- t

  8. ' \# e9 L( p+ ^( |9 E
  9. typedef struct {
      B- t: e4 |! P% _& d' q
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 o" z' y$ [9 U; T( k+ P/ g
  11.         unsigned int        sub_addr_count;) @3 {2 |( H9 b( z9 C' v
  12.         unsigned char*        e2prom_cmd_data;
    4 Q8 _- z# M% q
  13.         unsigned int        data_count;
    0 M5 N+ L5 ?5 i- I5 h2 \7 ^
  14. } e2prom_s_cmd;$ ~5 ~5 e3 Y) w% \) g

  15. & J; D: E. }) S9 ]
  16. #define E2PROM_CMD_READ 18 Q' j: v# e0 o, W% J
  17. #define E2PROM_CMD_WRITE 2
    * t) i' @9 Y. z' h; c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 d" @! r6 z) L7 _$ b
  19. / I5 |% T6 O( J9 j+ W
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  O( B% Z! C: ^6 p7 e! q3 _
  21. {
    . H. Z9 J, b) J3 g
  22.         int fd, ret;7 f: k/ e9 H2 A. z
  23.         e2prom_s_cmd arg;" }( J( h! `6 Q6 S
  24.         unsigned char buf[0x18];3 U* U6 j' N& ~% x

  25. . m, a: B; N6 V( r( {* n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 C( \1 ]: O2 m( v
  27.         if (fd  < 0) {" C1 U; A% b3 X  F5 q! y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' R  m6 f( C* [" e6 o' {
  29.                 return -1;, K, _8 V4 e6 j+ G$ W! v, S
  30.         }
    3 d0 L! Y, F. z  q
  31.         arg.sub_addr_count      = 2;( j( \$ z9 t8 g3 `- @! |4 J; w
  32.         arg.data_count          = 0x18;. ^0 Q* y8 w  k) d: `5 r4 o
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 T/ [" @- n$ |" B6 T  s$ x
  34.         arg.e2prom_cmd_data     = buf;+ ^) j: z' c: L, X8 S& J/ g$ d. {2 q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 o& Y4 _- K$ W* {2 u8 e/ T
  36.         if (ret != 0) {/ `8 j( W: V) ^9 o$ W7 [8 U# H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ y0 M6 v" Q3 o! E& S5 C
  38.                 return -1;
    % |1 G$ }& x9 k* I7 |, y9 q
  39.         }
    4 a9 \! O  }3 s. |, @& X
  40.         memcpy(mac, buf, 6);0 F3 G- _; D' k/ \3 ?, r, p
  41.         memcpy(stbid, &buf[6], 18);
    9 O, A8 \/ |/ w0 l, M. p
  42.         stbid[18] = '\0';
    & H( G2 o( y& I( ]  \. b6 B9 D  T
  43. 4 }$ W$ o+ h/ y5 z$ y* h, q9 _
  44.         return 0;
    + {( r. A" A, F- c8 g# O
  45. }! J7 r) L8 V, K7 }5 V- r

  46. / e( C+ p5 J. j+ C: _: D9 G. U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid); J6 C4 l& w9 B6 n) B* |
  48. {3 ~! D) A& |, |1 Y7 `
  49.         int fd, ret;
    + F8 o) ?/ c8 R2 G- G) s; |
  50.         e2prom_s_cmd arg;  Y, ~. k0 u8 C* C$ \
  51.         unsigned char buf[0x18];2 r( ^$ Y6 d9 y

  52. ' A% n5 h/ t' R7 P  [: w5 v5 O+ F
  53.         memcpy(buf, mac, 6);
    # J# _/ }- w( o2 Q9 `' t' V
  54.         memcpy(&buf[6], stbid, 18);
    ! D0 x5 O0 @6 a/ R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 @" o; T' X- B! l& b: V" W
  56.         if (fd  < 0) {. f8 f/ W4 G. P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! q$ Y8 e7 d9 N/ ~
  58.                 return -1;
    5 c2 V$ D2 {( U6 B5 Q; y! O
  59.         }6 n3 t! c- d1 q: s% C/ G
  60.         arg.sub_addr_count      = 2;7 f% K2 n. j# n# y% r  b7 `
  61.         arg.data_count          = 0x18;+ c$ k2 Y' r- y8 x* [2 E
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 p: b8 R( S3 \' S5 _
  63.         arg.e2prom_cmd_data     = buf;5 o; j6 |8 T  [8 [8 `
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 n7 p9 s! `  l8 B3 ^# S) s
  65.         if (ret != 0) {( g% t# S* b0 ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 U' b% V' N, A* w# |
  67.                 return -1;
    , R5 k2 _  \  V! @
  68.         }+ T% z" g) U+ K/ e; y
  69. " k  G/ G7 Q* f9 k6 _" K1 v8 w
  70.         return 0;
    5 ~" h  n0 C  n" R) k" P' E3 |
  71. }% D- W, \. H9 _3 R7 [
  72. 1 R5 [' i+ t( g7 p# `
  73. int main()
    " f0 M1 M- F  U& s
  74. {
    & N0 R1 L  \% o5 V( r
  75.         char c;7 r. l$ O+ O1 g: T: p2 F5 j! [
  76.         int i, macs[6];$ G  D+ r1 T( U3 v
  77.         unsigned char mac[6];
    # P, u$ Q" ~% J
  78.         unsigned char stbid[256];, b) l$ y% W6 h

  79. ( z  v: z+ a+ h4 F8 U. S" }( p4 H% v
  80.         if (readparam(mac, stbid) < 0)
    5 z1 C+ R* c- y; @- m' I
  81.                 return 1;
    # w8 g9 `0 J% j

  82. 7 }. X; R( Y9 G% k
  83.         printf("Current parameters: \n");
    - m! U6 S  R6 Q1 \  x5 Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ {" F- P) R6 u, W
  85.         printf("  STBID: %s\n", stbid);5 h0 T/ V* ~) j% s6 L6 E# g
  86.        
    ) y! Y& Q* b# l# G8 O: `+ P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      h& O7 R; w) q% @! R5 P/ Q* Z$ o. {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 |) h0 h0 {" e# b, T- ?) L$ z
  89.                 printf("Input MAC error\n");1 p9 ]5 Z$ T% `3 n
  90.                 return 1;
    8 @1 @# s3 J. N& O; y5 V) }
  91.         }, g6 J! t6 f$ x0 s9 @; B& z0 P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. m2 I9 `5 h& s; q/ }+ l4 _
  93.         printf("\nPlease input new STBID: ");
    7 J7 B9 K( h4 F( m7 {* q
  94.         scanf("%s", stbid);
    % `, L/ n( @1 X& d! s8 |  Y7 B
  95.         if (strlen(stbid) != 18) {
    + X+ H9 C% C8 e4 y
  96.                 printf("Invalid stbid\n");* u8 r. F3 ^) A* ~
  97.                 return 1;& n2 |  F$ `& U. c/ z& y
  98.         }
    % T: g' G6 L/ P- L
  99.         printf("\nNew parameters: \n");0 g! }8 h# d* _* y: C1 j0 u( N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % }( B' N. U/ ~; g0 k. I2 p
  101.         printf("  STBID: %s\n", stbid);
      Z$ O; v) `% }

  102. 1 i7 u9 d7 y% n  I) ]) b! S* U
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 c& ]3 `" O& b  ]
  104.         for (;;) {$ H# y3 U( D- H* ]
  105.                 c = getchar();
    ( w3 \, V) I" Q. m+ l) H
  106.                 if (c == 'y' || c == 'Y')+ T; w+ o2 J2 a- U0 v2 ~: m
  107.                         break;
    : Z7 i' }8 b! K; F$ `
  108.                 if (c == 'n' || c == 'N') {  q* q( P* x0 k3 t2 Q1 _
  109.                         printf("\nAborted.\n");
    - R9 V; K+ A. Z9 [- R. t
  110.                         return 1;
    6 d& M% S" W) _% B
  111.                 }2 ]& k/ x3 {" h& p
  112.         }3 ]/ K* b5 S3 c$ M8 X2 t  c6 C4 j" h
  113.         if (writeparam(mac, stbid) == 0) # Y* q- d" X  {9 N6 y! {4 \; b
  114.                 printf("Parameters changed.\n");) I) l8 n; [6 V' ^4 w/ B/ Z3 |

  115. / L7 [) i1 Y$ D7 @' F6 y' o
  116.         return 0;3 X& n. N+ S/ d7 A4 c1 u
  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
. i; ]) a* l* R. q) e5 }- o5 h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 X5 J+ P7 Q' F, Y. C" B( T* o) {你用的编译命令行格式是什么?" C/ z4 e% B9 e2 j' {7 @
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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