查看: 17219|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 O* ^% W8 H# O9 `* w2 q0 w0 M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, I. ?; E5 I8 g0 T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# B( ?+ W) O* M9 U# [3 busage: himr <address> <value>. sample: himr 0x80040000 0x0
1 j3 o! E0 L6 h* p) [% c& b# v* T. B  g2 O# |; k
' ?8 L. _& Y$ s9 O4 j8 B* F/ r& v
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 V, V3 L, G$ j+ @  G

6 L) @9 Y1 e0 D0 F+ n, ^9 W补充内容 (2012-3-8 09:42):. _8 |2 T4 F) q0 z, a( r) L
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" N+ p. h9 D! C这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
2 N4 m: D$ M) L
+ z: r' W% M( z7 ^6 ^himr <address> <value>. sample: himr 0x80040000 0x08 g2 W7 i4 a6 v$ Z

; _% _9 O: V* i# f例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* h2 K4 R: v& R+ c% A7 `+ _himr 0x80040000 0x00
( u$ y$ o# e  t8 @( O0 m6 m/ b) fhimr 0x80040001 0x11
0 Q* O6 j$ f9 H" B- ~  t+ X' _himr 0x80040002 0x22
8 ^7 M: B2 ]+ q1 Q* l* \/ s  Chimr 0x80040003 0x33
9 R6 v, a4 Z4 z$ u% v. Zhimr 0x80040004 0x44
" T; b) ], p1 Z+ U& i% Q% Z5 n0 Ihimr 0x80040005 0x55
2 p  a: a) h3 B/ O0 A6 z
" w- |, T0 m7 GSN也是类似。
3 i2 b  B% p6 r2 p2 g' m  v; U" V1 S) K& O. L# {
现在主要是,谁告诉我们MAC和SN的地址?
0 N- N, ?) V6 n, b8 l5 ]4 {2 ^% o$ i
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ ^7 }+ h3 x3 L: g% B一直想找到运程修改MAC和SN的办法,苦于无解啊

+ P$ q& @+ G0 p2 ], P1 S( B源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 ~9 }2 o# @7 G! _$ c
" \7 y- B& F- K/ K/ d9 J6 D+ L修改的代码早有了。到今天不会编译。
  ^. F1 c4 _& Q( |& H/ P4 q) D$ Q1 O需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 s( V( c8 v+ j; Z6 z4 ]  b
  2. #include <malloc.h>1 V3 A0 T/ G: e  I* s% r* K
  3. #include <sys/types.h>6 v2 B4 w9 H* a; e$ ^
  4. #include <sys/stat.h>
    2 l7 n9 V- X0 g; R1 z$ z# H$ @
  5. #include <sys/ioctl.h>  [, v3 T4 B0 a6 n* y* ]( h
  6. #include <stdio.h>
    & J  K/ i2 |( m5 M- L
  7. #include <string.h>
    , _1 d# [2 ^3 h2 v

  8. . K5 ]& g+ @# E+ _6 J* t$ w
  9. typedef struct {8 O7 z, @$ d1 P! A
  10.         unsigned int        e2prom_cmd_sub_addr;! J, v$ I4 Z9 ^4 `( j. B; q- p
  11.         unsigned int        sub_addr_count;
    " p/ V+ e& ~- Z$ G* `9 f
  12.         unsigned char*        e2prom_cmd_data;
    % a. N( N& Q9 |  Q  C' P2 C
  13.         unsigned int        data_count;
      Y, u+ B! n  {
  14. } e2prom_s_cmd;
    5 `6 m) g5 K1 r1 g1 q. z7 O
  15. & v+ i2 b: D5 s' D- a: x
  16. #define E2PROM_CMD_READ 1  C* m5 z8 y' Q/ u- H2 J
  17. #define E2PROM_CMD_WRITE 24 }! x( g+ F3 E# V2 K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* A8 A( ~) `- ?# N
  19. $ k7 u, t/ r& u8 ?8 K" f$ J" r$ C
  20. static int readparam(unsigned char *mac, unsigned char *stbid)4 i. S" V( L) l3 Q
  21. {6 I0 l/ J5 e1 n8 e7 }
  22.         int fd, ret;9 o# W& x! T$ V; ]8 _  {
  23.         e2prom_s_cmd arg;2 J7 W9 U1 @+ U! p% I. r
  24.         unsigned char buf[0x18];
    " W+ Q4 g6 C4 u: _% h) |
  25.   @% Q7 A5 G5 r5 }* d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. }6 @% `, _( h1 B
  27.         if (fd  < 0) {1 w% @4 r1 |/ l, ], B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . W. s9 A3 B0 H5 R+ E& m
  29.                 return -1;
    9 R6 ]# B: X+ Q8 V1 Y- D
  30.         }
    8 w$ g/ ~8 R% L& f, R# e+ Z* `' ~
  31.         arg.sub_addr_count      = 2;( u9 l7 J9 ^/ q) {$ M7 q5 b' ]( I
  32.         arg.data_count          = 0x18;
    8 U" ?9 n- J/ p7 t0 R+ `
  33.         arg.e2prom_cmd_sub_addr = 0x290;& H8 t! w$ C1 L  }4 Z
  34.         arg.e2prom_cmd_data     = buf;
    ) A7 c4 C9 P4 g" T, W* f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    . w  D/ d$ a+ r# A# Q9 n4 m
  36.         if (ret != 0) {
    4 [$ [+ c7 [4 u7 O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& q$ |5 |! f4 a# N' _6 |" L' T
  38.                 return -1;
    2 x; n9 ~; ~# {% S
  39.         }
    9 d; W  e8 q- s- p
  40.         memcpy(mac, buf, 6);) N/ f- D) G1 M) v; \
  41.         memcpy(stbid, &buf[6], 18);
    : {0 U+ V3 [& ^/ Q, s. i
  42.         stbid[18] = '\0';
    / N% \6 a' b% r6 L' z
  43. ( i; _7 v1 @" n  `9 H; I3 S
  44.         return 0;: r9 d* `0 t2 }; N
  45. }
    2 F. s3 E9 j4 N' g
  46. : n" M! H" ]! t6 R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% T& O4 K% o  N" `3 L) Q, n8 P
  48. {4 b! |) r- F0 g
  49.         int fd, ret;  m& X- L. e+ l- _* h) v* G
  50.         e2prom_s_cmd arg;
    $ e# p& N: g5 r
  51.         unsigned char buf[0x18];
    7 |$ Z6 @5 b0 ]: `8 a( d: E

  52. : {+ g9 ]9 u6 w
  53.         memcpy(buf, mac, 6);0 d% g/ r! l# d- j' ^! f
  54.         memcpy(&buf[6], stbid, 18);0 }& q% ]7 t  Z' C! N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 ?7 [1 l# B- L) U2 H# w/ Z
  56.         if (fd  < 0) {$ y5 |* P) i* ~: d: d9 {+ d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 P3 t' O$ P+ ~1 \
  58.                 return -1;
    % C, g. v/ S* n7 T
  59.         }
    $ h/ Z+ L8 ]1 M6 x' b! V
  60.         arg.sub_addr_count      = 2;: p% A- P3 d1 R$ C- O' Z& W% U
  61.         arg.data_count          = 0x18;
    1 f9 d) I: L6 A: k5 `
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 e% D6 L# g' ]2 N+ x
  63.         arg.e2prom_cmd_data     = buf;& J1 H6 |5 l/ U' J( I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . p' b* L" ?: R1 J
  65.         if (ret != 0) {
    3 |+ H% H- A% I) N3 k0 l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);7 f5 h: ~' a3 V
  67.                 return -1;
    ! P, t  M9 B- m8 D: ?/ P# f
  68.         }9 @+ X0 |: u7 k( ?  G( I
  69. $ Z7 N4 k  q7 N" n, @4 u3 j. _' p+ N
  70.         return 0;1 E2 y: l* z, o
  71. }
      t" N' D+ n& l
  72. 9 [& ?) k0 v$ `7 ^( {
  73. int main()
    + q8 |% B! h  T4 R
  74. {7 x* E$ Y6 [4 U! d! I4 T2 x
  75.         char c;
    3 D3 m. l+ H7 {- K* H
  76.         int i, macs[6];
    2 c% ]/ X1 e. A7 H# T- d
  77.         unsigned char mac[6];
    9 [0 v4 e6 l* a# |
  78.         unsigned char stbid[256];
    6 O/ k5 n9 u0 c- n( _

  79. - g1 \. d3 N* k" w
  80.         if (readparam(mac, stbid) < 0)# p- F' K9 \5 ~" R* r. u
  81.                 return 1;  E# A% c+ {/ H: N6 ~
  82. 1 L: J) `$ `7 G: a
  83.         printf("Current parameters: \n");
    ( C7 M1 \. [( ^5 I2 j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 J0 T" o3 Q2 X) u
  85.         printf("  STBID: %s\n", stbid);& f/ Z% r$ h) |* {- F% x
  86.         1 T7 Q; f" f: @1 T: v+ S& y5 @/ k
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; p. X5 d3 j; v/ Z% g" {* h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# f% M+ S( N  }# D5 r/ D
  89.                 printf("Input MAC error\n");
    & V: S$ w* N' m) j
  90.                 return 1;6 E7 y! h/ f' t% S, {
  91.         }6 V  @4 v6 T! m9 z1 T. i+ X
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; `+ R( E6 g9 q: A- G5 h! c
  93.         printf("\nPlease input new STBID: ");
    ' M/ a8 S5 I5 n: A, w; Y3 c
  94.         scanf("%s", stbid);
    5 m7 ~; D# \0 K. c6 F
  95.         if (strlen(stbid) != 18) {7 q6 Y9 K* ?. n. r4 }6 R9 z
  96.                 printf("Invalid stbid\n");
    2 q# n& M$ G' F9 j+ t
  97.                 return 1;
    ( q% B$ G* p- \) e+ m& ^  Q( r2 U
  98.         }
    4 x# L! z' R! g' L6 R8 ~: ^. n+ z
  99.         printf("\nNew parameters: \n");& x/ f6 ]' I5 N# A  x+ j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" X3 ]' o, E$ M& t. S
  101.         printf("  STBID: %s\n", stbid);
    . G+ P+ i4 e5 A' d

  102. 7 {) s% `* c- g9 V' D
  103.         printf("\nDo you want to change paramemters? (y/N) ");! R# |3 m* J2 I, e
  104.         for (;;) {$ ?1 i: S- ~* J$ Z$ o' t* V
  105.                 c = getchar();
    5 v# J9 Z- a2 T; i
  106.                 if (c == 'y' || c == 'Y')1 D0 z& F. h6 S5 U' [" c! D
  107.                         break;& j8 R7 f" n  B' q6 ]
  108.                 if (c == 'n' || c == 'N') {
    $ A3 R' a: K& A5 z" U) i
  109.                         printf("\nAborted.\n");
    / q* v: F8 K6 L0 d1 d
  110.                         return 1;2 S) m; ^+ e) C" k1 B
  111.                 }
    2 D5 e3 c  _; ~( l8 u
  112.         }
    * z) B* ?6 J  K/ ?+ a
  113.         if (writeparam(mac, stbid) == 0)
    : r- f# d- |; ]  A
  114.                 printf("Parameters changed.\n");( Q* N) m1 G2 K9 [$ n/ n
  115. " _6 C: t  s  `/ j. Q/ d# t: o
  116.         return 0;( l9 a  j. P- E6 D; F
  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 6 r! j1 S! I- ]/ k% n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* N6 k" w7 I+ g6 E5 F% A
你用的编译命令行格式是什么?  r+ k" r" F* P% I+ u" t
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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