找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15760|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( U7 X- t- d- W* I; T
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( R; R: J# F2 }) J8 `
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- y( ]. ~, l9 f) ?- ]9 N
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. Z- y. R5 Q" v+ N
0 Z7 _3 e. f' F7 @
, H( K2 V+ x% T; X" [# n1 I7 n不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' _/ j0 {6 I. t
+ v' a: P! s) ?& ^" v. F0 x补充内容 (2012-3-8 09:42):, X; g4 I( S! R  W5 K$ K  Q4 M$ H
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 C6 C- t  @$ P" n8 w
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。( L# m, R  z# U+ V/ j2 y1 V

0 L& h' F) w! p$ dhimr <address> <value>. sample: himr 0x80040000 0x0; Y3 o% w1 @7 S( N
( E: B# A) M( e! p$ P6 r
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 [* X2 Q: f/ e1 {
himr 0x80040000 0x00: I2 `: `' e8 @( q; s& u2 u# z
himr 0x80040001 0x116 S  _; r* H% u8 z
himr 0x80040002 0x22) s1 y# x1 q1 K3 l
himr 0x80040003 0x33! s0 \( g# E8 E  \
himr 0x80040004 0x440 D7 b' m# m4 k2 X6 E6 s9 h
himr 0x80040005 0x55: Q6 ]" q& H# {  n9 Y7 i# H
) C7 E1 D2 y+ v! A: R+ g, b
SN也是类似。
' Z( ?8 _2 U% Q" |; [5 G4 M& G
4 f) g# F$ A* y) w现在主要是,谁告诉我们MAC和SN的地址?2 W: y2 w3 i: |; X+ T+ ]! q9 x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 \, c7 T* l' w) s! ?一直想找到运程修改MAC和SN的办法,苦于无解啊

+ d& f- E9 S9 [/ m. }源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 D8 }. R! ?( D6 O1 G- a! z
& r: H) [' o- n: f: P# t( {( v
修改的代码早有了。到今天不会编译。
. J) q" C5 `: j1 z, r, \" |5 o2 O  P需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- [, k" `: |5 ?3 S* S, }
  2. #include <malloc.h>
    3 D' ~" h- A* g, r" S8 F; t8 ?4 T
  3. #include <sys/types.h>2 ]5 Q: z) ?9 y
  4. #include <sys/stat.h>
    1 L0 o& H3 g  }2 _1 |
  5. #include <sys/ioctl.h>0 ]0 [& l0 {% j( S: H1 B
  6. #include <stdio.h>
    2 j( T  t8 y, z/ @, U
  7. #include <string.h>
    $ Z. Z% u7 y, ?7 Q0 v

  8. % M9 p9 v, [5 {5 K  P2 P  g
  9. typedef struct {! F& L; Y8 S' Y
  10.         unsigned int        e2prom_cmd_sub_addr;: z0 d( }5 t" i
  11.         unsigned int        sub_addr_count;+ S/ j  W+ x) t8 y' ?; s
  12.         unsigned char*        e2prom_cmd_data;3 N: o' l. v3 L) v- W2 G
  13.         unsigned int        data_count;0 Q8 x% f4 M  v$ ~
  14. } e2prom_s_cmd;8 n% f2 K0 l+ _* m" h2 E

  15.   G' @  B( {% v5 ^
  16. #define E2PROM_CMD_READ 1- G, l) O5 B, [/ c8 j" [
  17. #define E2PROM_CMD_WRITE 2
    8 N3 ]5 f- z" b2 a1 c# L8 L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- x' L' ~2 D8 m5 Z& q. r9 q
  19. 5 c! _  r8 k# I6 P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' }1 U8 k4 F  N- Q9 p: I) u
  21. {' q5 p. M+ i* r" u9 d! Y" ^
  22.         int fd, ret;6 ]7 [% K) D; R% }/ Z# S  v
  23.         e2prom_s_cmd arg;+ W& x9 y; N" |
  24.         unsigned char buf[0x18];
    9 ]  [. V. j  P# l4 I

  25. ) H' r3 _- D/ p9 R" O2 X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 k( q1 K" V: \/ D
  27.         if (fd  < 0) {
    5 P% r$ _: E1 ^# E
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 V5 ]: P/ }6 N/ ^- c: j
  29.                 return -1;- F5 M) \6 F9 a; s
  30.         }
    2 w; f  V2 a; l9 `$ B# `" @
  31.         arg.sub_addr_count      = 2;
    3 o/ ?# R9 m& \9 \6 c) s
  32.         arg.data_count          = 0x18;
    3 j" P# p$ {1 N" a
  33.         arg.e2prom_cmd_sub_addr = 0x290;% ^0 m9 q: h4 }/ C- c; k; V4 D
  34.         arg.e2prom_cmd_data     = buf;
    . w  n, @* E" M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);5 V# U( s8 Z* z& P- T: O8 ?5 y$ b% U
  36.         if (ret != 0) {1 e; Y) h0 d" _% `# `7 D+ C& a
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" ]( l6 Q, h3 K$ o$ ?" M  G- b( i
  38.                 return -1;5 J; h4 [& t& A" S
  39.         }$ ~( q' S1 ^) x3 v" J% Y, x. V8 y$ v  C
  40.         memcpy(mac, buf, 6);* C0 K! R8 F! t4 U4 n) W) |
  41.         memcpy(stbid, &buf[6], 18);
    5 d0 N* U- s& o) U2 E% n( R/ j
  42.         stbid[18] = '\0';% G  M) Z% V2 z8 s" z) ^
  43. 0 E7 N: H# H& |) s, H" }* a7 [
  44.         return 0;9 Q1 P- w( }( R) g+ U: a
  45. }
      I; M, k' n  V8 l7 a7 ^
  46. 2 ]" f* C, ~; r7 S# S
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    " ?  w+ _) w8 W5 ]. V& y/ f. O
  48. {7 K: A# v4 I* I7 O$ s
  49.         int fd, ret;8 }- d: q: V; c" s3 h4 [+ s( Z
  50.         e2prom_s_cmd arg;# ~  S5 T5 r* q9 j/ z4 a: y" ~
  51.         unsigned char buf[0x18];
      V+ ]* ~$ k8 j1 d: d4 _# E! X' U

  52. ; c; e& k- D6 w5 k, v6 y9 k( _
  53.         memcpy(buf, mac, 6);
      w. m$ {5 F% h4 ~2 b# c) b
  54.         memcpy(&buf[6], stbid, 18);
    " j# i+ i9 z0 G6 X2 E. P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' P, \& C- ^( A2 H' B
  56.         if (fd  < 0) {2 _. Y8 k. w1 Q* W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 B+ {2 N  M- h
  58.                 return -1;
    * S+ z* n% `! E. J0 w
  59.         }
    1 n0 x6 D/ C% b3 G2 W& N! P
  60.         arg.sub_addr_count      = 2;% ]) V" H0 M* r( p+ P% d6 ~
  61.         arg.data_count          = 0x18;- i% r6 {8 m. U2 \# r
  62.         arg.e2prom_cmd_sub_addr = 0x290;& d$ J% e( g) l; s) _
  63.         arg.e2prom_cmd_data     = buf;
    8 q$ Y! G7 V3 T, R1 R! ~# ]1 K/ X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " Y* ~8 A; n4 W* v7 Y$ ~
  65.         if (ret != 0) {
    8 B# l, ^2 P! g5 _, y7 p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 F$ h$ u* j5 [2 B0 U
  67.                 return -1;# p2 A( U$ t5 l9 m; H
  68.         }
    ! Z4 Y9 s$ ], M/ \: i1 }

  69.   u& R( y/ P1 V" `+ p% l: S# ?
  70.         return 0;" N' p: ~& y; [& i6 o
  71. }3 M, h" Q5 Q+ m4 [
  72. 3 a) A6 z4 N# s# t( R9 A* M6 ?
  73. int main()
    1 |8 h% R/ F( O/ e& E( S# t; t5 M
  74. {& X( G0 l) a! l
  75.         char c;3 ~8 I3 s! @. D; E
  76.         int i, macs[6];- [. W$ H& x8 \  v- B6 X
  77.         unsigned char mac[6];3 h$ V" g, ]+ ]
  78.         unsigned char stbid[256];
    ' x3 X% M. F. X! S! h' d5 N
  79. $ _# I' K3 ^- x' V6 B) E
  80.         if (readparam(mac, stbid) < 0)
    ! p6 Q: c# z3 c+ n1 q' I+ r
  81.                 return 1;
    2 Q! x! G: Z1 J) m8 I

  82. + Q, E& G! u4 @' J- U2 u
  83.         printf("Current parameters: \n");
    : L! s0 t  S5 `/ ?7 }/ [- S* \; D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( h, j$ g- a7 p) t& r
  85.         printf("  STBID: %s\n", stbid);
    3 {" J0 f! Z. R# ?, T9 l9 U- J, X
  86.         0 z9 u  Z8 ]. R/ c/ [0 g2 S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 z" y4 F* P0 Y& @5 N* o, c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 p3 m% S/ P8 c: L# F" Y
  89.                 printf("Input MAC error\n");+ K5 Z7 J+ t9 _/ w
  90.                 return 1;
      {) g- S& f9 l6 M* g' @
  91.         }
    3 p* a6 h1 [, e* k" p
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# @& [8 _. ?, X8 N3 l
  93.         printf("\nPlease input new STBID: ");* [# w2 b8 ]1 |  S( k6 T% Y5 P
  94.         scanf("%s", stbid);! N# K' ?9 q; e% _
  95.         if (strlen(stbid) != 18) {
    $ C% |7 v$ S) T: u4 h; _
  96.                 printf("Invalid stbid\n");- L- K3 a! ?8 R6 B, G% N% p5 ]
  97.                 return 1;
    8 L8 o0 z! \+ L  W( `2 `' z
  98.         }
    / R1 ?: ]4 u0 A- k
  99.         printf("\nNew parameters: \n");: b% ~8 R) z' i7 ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' ?: T* y* o+ @/ N# T/ n8 K- U
  101.         printf("  STBID: %s\n", stbid);
    ! Z* F' S6 I4 k% c/ b$ E

  102. . \2 D4 b. L/ O) u' u- \0 Q3 R/ U
  103.         printf("\nDo you want to change paramemters? (y/N) ");. }) r' h/ z: Q
  104.         for (;;) {
    8 E! |+ B. ^: l  z7 i. o6 k
  105.                 c = getchar();
    . P; s' y3 B# p+ s1 c7 H+ }$ _3 X" ^
  106.                 if (c == 'y' || c == 'Y')7 C- z* M1 D- e  L% Y6 C- k/ t
  107.                         break;
    4 C/ \9 `8 P) D  c( f5 }
  108.                 if (c == 'n' || c == 'N') {
    + j7 T9 T1 K+ ^; c9 N
  109.                         printf("\nAborted.\n");
    ) j  j+ _9 v; T  H' i& z0 h
  110.                         return 1;
    7 z4 k9 T4 o1 Q! M, T2 F
  111.                 }
    ; F( p; S( A: ?$ G9 a, Y$ \
  112.         }& ^2 N8 \% E" }) D2 `9 O" F4 k/ g
  113.         if (writeparam(mac, stbid) == 0)
    . S7 Q: w, e$ \- ^  d
  114.                 printf("Parameters changed.\n");
    * ~  X) o' b; K+ ^. z/ X
  115. 1 K: _1 [3 e, C! [0 O
  116.         return 0;
    # ~) `# t; S* i; y/ @  C! z
  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 " j1 @# F9 i4 T0 D) A
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 z9 Y: A; |/ i+ X3 H. j你用的编译命令行格式是什么?5 F; I& F" V* [1 h6 S, i$ I
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-14 00:52 , Processed in 0.035566 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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