找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14999|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 {& r/ `& C; M; e, t: U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; n1 ?" o7 |2 r% m0 i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, w3 x8 y  I- J. qusage: himr <address> <value>. sample: himr 0x80040000 0x0
5 `; l0 ~9 f# F: V7 s& V9 `8 C  \! @2 h6 R; Y4 Z

8 P& I4 y3 m6 P; p不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: ]0 L  ^+ a! @: P  e
9 N- @8 r4 I) \( ?补充内容 (2012-3-8 09:42):
# O+ ~4 w/ t( b) k5 `http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
7 W8 n" U" R7 i9 d$ _% E: P- K: ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。5 r+ S7 R. {. U" R

0 s( d: P7 w0 [himr <address> <value>. sample: himr 0x80040000 0x0; u# \9 C1 t3 v

& }" I* v: n  q* g) Z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 [! C5 H! z* d) v0 Ahimr 0x80040000 0x00
( c5 x  m" X5 L9 j* g- fhimr 0x80040001 0x11
2 p' M; z- ^8 f/ Mhimr 0x80040002 0x229 a( n/ O# C5 E: `/ P! b
himr 0x80040003 0x335 J% h; }: u" q. b( u' s
himr 0x80040004 0x44
! b8 k/ R, z' E3 s5 C9 _8 u8 ]himr 0x80040005 0x55- o+ d0 V+ v% `, Y  w

7 q) }: {/ X: j& k# W6 i; K  v9 m( LSN也是类似。
7 x' K$ [& n' }" U( ]! d3 R: y7 h2 v6 J& j6 R. Y, E9 m
现在主要是,谁告诉我们MAC和SN的地址?. @& U2 i) u+ h0 l. c5 O3 u, l
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 W, ^8 E2 f1 P2 \
一直想找到运程修改MAC和SN的办法,苦于无解啊

' r; q3 f" }8 B7 J8 s/ V" h源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; x$ v. @5 U. Z5 Z3 I

9 m$ f' K; a: a9 d修改的代码早有了。到今天不会编译。/ E; f) r; N6 ]/ o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) E; D) r$ B5 A  _# X
  2. #include <malloc.h>
    - k* @( @- Y0 X0 I; \5 I
  3. #include <sys/types.h>
    5 {/ p* `) U' s( n/ Y- Z* A
  4. #include <sys/stat.h>
    / Y- B* ]& J9 x) ?) i* ]% L% Q
  5. #include <sys/ioctl.h>
    7 l; X- E; u. [  Z( K5 h) D, M7 ~
  6. #include <stdio.h>- _- q% W; p) T
  7. #include <string.h>
    ! n2 C& b3 E3 V- n1 n

  8. , A' l/ d9 s" Y! F6 [
  9. typedef struct {- f- T2 j" E  p3 O9 J, X
  10.         unsigned int        e2prom_cmd_sub_addr;1 k7 Z" J; {: X/ J* F+ }
  11.         unsigned int        sub_addr_count;
    ) c4 s. N  c4 D& O3 u+ Z% f# a# a
  12.         unsigned char*        e2prom_cmd_data;
    - \3 O1 H0 n5 T2 W1 F/ z
  13.         unsigned int        data_count;
    5 A. m$ }) w( H% n$ ]3 L; l: w- |
  14. } e2prom_s_cmd;
    0 j3 ?2 I  Q7 D7 j" g1 @6 x, m5 S
  15. 2 N$ N) Y  I+ M! q: g/ _, i
  16. #define E2PROM_CMD_READ 1. R% \1 q" F* U, F# k* t5 X
  17. #define E2PROM_CMD_WRITE 2  y: }" z1 O: q/ ~0 J, `: I9 N- B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 d8 `. H: F4 t
  19. - A+ p! l, y+ O$ {& J8 _6 F
  20. static int readparam(unsigned char *mac, unsigned char *stbid): I1 x3 z" d) y- b3 C& y
  21. {0 `: t, m( O6 N! G
  22.         int fd, ret;
    $ W! `) }+ `" S' j
  23.         e2prom_s_cmd arg;9 f4 Q) j( [( s
  24.         unsigned char buf[0x18];! X$ A2 O- g8 G6 o" t
  25. 0 Y3 C" c  A6 C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# m9 S  |3 B! K' ~4 o/ u
  27.         if (fd  < 0) {; V/ F7 K3 k5 }1 J) X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( H3 Q5 k0 u& [2 H
  29.                 return -1;/ r5 S! L- X7 K% D
  30.         }# a. d- _# t1 j* B
  31.         arg.sub_addr_count      = 2;
    & i  H+ t# T5 w: x
  32.         arg.data_count          = 0x18;
    6 H) j4 k! a  _2 G) R* Q$ k  n
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 G$ n& t- ~' x8 s* |# Y: k) b
  34.         arg.e2prom_cmd_data     = buf;
    6 q: T: L* O+ S/ D. e, ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % G' S* }- b! m+ A# K  k
  36.         if (ret != 0) {# K7 I( [  a1 x/ U# j( c- K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ p# d0 S2 I  \4 z: }' O& q! Y* ?; O
  38.                 return -1;0 o) K7 {7 \# ]& @" N) w( U
  39.         }, s8 M$ x. d2 q$ l; H
  40.         memcpy(mac, buf, 6);5 e+ V0 c: M% X6 P0 A# a, @
  41.         memcpy(stbid, &buf[6], 18);& \) w0 M0 h+ A
  42.         stbid[18] = '\0';( }; R. {! U! X; A
  43. " S& O0 o. K  R7 ?3 ~/ u) B
  44.         return 0;( w6 ?2 E4 p4 b
  45. }5 p& j1 R, O' e' U
  46. - N( t* z: b4 T, _* s( o) G- V- k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 r5 m# L2 d0 w
  48. {
    5 n' Y  A* Z3 N: |! v
  49.         int fd, ret;
    & x4 Q1 d: s$ r6 ~* H8 h
  50.         e2prom_s_cmd arg;
    , d2 @0 P7 h, M8 y- N0 W8 F
  51.         unsigned char buf[0x18];; K! ]- y0 `! h3 q

  52. 0 M$ `& x) T- C. v/ b3 v: t
  53.         memcpy(buf, mac, 6);! q2 k- T5 m7 z1 c5 p6 f
  54.         memcpy(&buf[6], stbid, 18);% w* a5 A- Q: g
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 u0 f! f+ k/ ?! M$ E" U: `
  56.         if (fd  < 0) {
    6 T' {1 c3 {: U2 V- @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 P6 W+ \9 T/ q' |" k4 }
  58.                 return -1;
    0 @+ _) A/ g0 ]
  59.         }
    ) H4 b! ?( W5 b: ?
  60.         arg.sub_addr_count      = 2;0 V. n( S( [8 w1 T* ?
  61.         arg.data_count          = 0x18;3 T2 Y; z2 Z+ v- \5 Q8 M( K
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & b( z$ }4 K: t( F
  63.         arg.e2prom_cmd_data     = buf;9 ~8 W: T+ [/ q0 [5 ^- A1 k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 |; r* }( G1 H2 H) x2 N3 D3 u; g
  65.         if (ret != 0) {
    ( J2 c4 I6 d; |5 U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 k; e+ P0 g1 j! x/ h
  67.                 return -1;
    ) h  m" |. |! @3 c$ d' s
  68.         }3 o# a# J6 ^* `" U! s# p- I/ }
  69. . F5 v/ \( h; I: D
  70.         return 0;
    2 A# O; L# M2 }  a, U
  71. }
    ; _' s7 G+ C# _  }$ h; i; h, h
  72. , h, o* o% m  B  H
  73. int main()8 @* {, [0 j6 G7 K7 P7 w) S% g
  74. {
    ! G  g( u( y+ d- }
  75.         char c;  o' f3 `. f8 j' m% Q- Z" _
  76.         int i, macs[6];8 y) Q, Z6 l/ K' R+ z/ z- b! y
  77.         unsigned char mac[6];- Z) P; [& I+ f( s- n
  78.         unsigned char stbid[256];0 d0 J$ \: P5 `! t, q: w
  79. 1 _6 k7 C/ d5 S8 |7 O6 D) W, ~
  80.         if (readparam(mac, stbid) < 0)
    0 v; d* m. d% @& a. b
  81.                 return 1;
    . L; h" V- i: \. a; j" ^" k
  82. 2 n# T8 h; @  g+ J. w* J
  83.         printf("Current parameters: \n");1 y: F: X6 b5 T' f+ c2 M
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 q8 n' G7 L- D% b: r, p
  85.         printf("  STBID: %s\n", stbid);: j. z4 Q$ `6 L0 J
  86.        
    3 o: d% ]  Z4 C- w5 m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % U6 t( n3 |1 r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 x( B$ @* T( C3 y3 I0 s
  89.                 printf("Input MAC error\n");
    ' u6 R$ q4 Y! f: W) q
  90.                 return 1;3 H$ O7 ^8 y& S
  91.         }
    , K& \6 }" x' m2 b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  F+ R; t+ f  B9 v: Z& ~
  93.         printf("\nPlease input new STBID: ");
    " T) S& R5 N- J" V$ a2 p) o
  94.         scanf("%s", stbid);
    5 H$ c' q( }+ \/ ?9 f% M& g5 ~
  95.         if (strlen(stbid) != 18) {' ]* x$ Q- c, k; ]9 s
  96.                 printf("Invalid stbid\n");
    ; ~+ m; }7 w" z# b# {
  97.                 return 1;  @6 y1 o' ^) H* g
  98.         }
    + i$ m/ Z1 _5 D* ~/ \. t
  99.         printf("\nNew parameters: \n");5 |) m! |6 z! f' T% j0 ^! ^: ^- ?" T- M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 X0 Y3 y. K* E2 v" v" {
  101.         printf("  STBID: %s\n", stbid);/ m) Q5 M, E( u! ?/ r( S& u

  102. / W2 h) s8 b9 D
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 r0 W" I* Q% ^$ s
  104.         for (;;) {/ ?7 x7 u- S8 P6 q/ l1 e5 r: y
  105.                 c = getchar();0 U$ a' e* o  Y$ g3 K, s
  106.                 if (c == 'y' || c == 'Y')1 f4 I4 d9 A& P* p; D0 s  ]
  107.                         break;
    ( A$ o% j0 r6 Z; g3 b& K8 _4 M
  108.                 if (c == 'n' || c == 'N') {8 S( X- M' |. r  ]8 u1 ~
  109.                         printf("\nAborted.\n");
    $ x9 f; y, f! M% C3 T/ u- @
  110.                         return 1;
    " T/ H3 S% G3 o4 |0 o. g" z6 D1 A
  111.                 }
    ! ?- {" k' ]& h) M: ]% |! K5 c, h
  112.         }  n( f" {( |, z0 d; u
  113.         if (writeparam(mac, stbid) == 0)
    / E* M, Z8 b: Z% @6 ]9 Y
  114.                 printf("Parameters changed.\n");! C' y. b5 {  L7 e$ E

  115. ! I, v- ~# P% R! J5 T* A: b
  116.         return 0;
    4 X# e! N! y& @  e" }8 X
  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
- j7 _0 {$ S% Z3 B在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! M3 Q8 V4 P( }8 w1 o  C
你用的编译命令行格式是什么?: P/ N9 p9 t3 ~: W# N$ N
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-9 00:01 , Processed in 0.025313 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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