找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15354|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 k& H9 `+ R4 U" s
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / C. u- n6 @5 @1 p7 E0 P# k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# h8 D8 T7 U8 q& dusage: himr <address> <value>. sample: himr 0x80040000 0x0! Z) [3 A  C' r
* d! v& E- S4 u' a

  _' x( b( a7 U7 S# c" ]3 \, N1 d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, f8 u' A1 Z5 X' I, \5 ]
1 Z6 d6 H; t6 @, Y( r" u补充内容 (2012-3-8 09:42):0 b0 m! H3 {# j9 C) `8 X0 Y" F
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 Y& s* S5 j) ^. M9 v! z这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 o6 ]% w8 _, Q* [! F8 \) [% n$ H" A6 D! }
himr <address> <value>. sample: himr 0x80040000 0x09 b6 S, P0 h6 o: F4 \% t
1 _6 P" x1 N8 V* z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 ^! J* o$ Y2 `! H5 F7 Ohimr 0x80040000 0x00
" P" {3 G& ?# ]/ L4 mhimr 0x80040001 0x11/ b3 `0 t- \7 H/ `$ e1 v
himr 0x80040002 0x22, {  m1 Z( ?$ G  f& u
himr 0x80040003 0x33
9 R7 q: l% T# M' b, chimr 0x80040004 0x44( ?; \' p, a6 k8 S0 r6 c7 H
himr 0x80040005 0x55: Z/ B3 |$ i& j. q/ I3 y
7 \! A! p* A8 a! M. \; P3 \8 e
SN也是类似。
( y, H$ \6 r. _- T% o
5 z; D$ ^! p& z1 l- A3 j" V5 _9 v0 v现在主要是,谁告诉我们MAC和SN的地址?0 P9 M/ X( p1 [; z! y/ N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. B' P' |- f3 O: P- O- K一直想找到运程修改MAC和SN的办法,苦于无解啊

. Y! y1 |( |$ n  {源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" {" m: m$ _$ u7 `* g- ]5 D% S
" X0 |9 `; d* l) n2 n6 [修改的代码早有了。到今天不会编译。. ^/ o  @' F7 {: O: A4 T
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 v* a4 t& D3 M
  2. #include <malloc.h>
    $ C: o; Z  l$ a% h. U2 ]. Q
  3. #include <sys/types.h>
      s! K- ?' B: M# x+ h8 A
  4. #include <sys/stat.h>
    + ~8 ?- K! Z2 U$ d. X
  5. #include <sys/ioctl.h>! p9 ^- I+ {, E0 q( C: c  A
  6. #include <stdio.h>& X% y1 V  R4 [
  7. #include <string.h>
    " ~5 E* h( `0 Z, Q+ n  u

  8. 8 f" \  G& ?$ h, ]) c* \6 q
  9. typedef struct {
    4 w; \* D; E+ N4 B3 G
  10.         unsigned int        e2prom_cmd_sub_addr;
    , N, r, s( L' F9 W
  11.         unsigned int        sub_addr_count;  ]7 o" R* U/ U6 W' @9 C3 I5 M! S; d2 P
  12.         unsigned char*        e2prom_cmd_data;
    - ]" k# H; B, Y% }: C% i! |
  13.         unsigned int        data_count;4 ]  a" G7 k8 I+ ]; d1 ]" t
  14. } e2prom_s_cmd;. D, r& w( m- s7 ]' a" A

  15. : K$ J6 v( ~/ P3 j, k- K
  16. #define E2PROM_CMD_READ 1& ^0 m! P1 k) s5 V
  17. #define E2PROM_CMD_WRITE 2
    . J" Z2 M7 ~7 K: W& D
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  B, P2 p! s% a% k. G' G; R# e3 z) J

  19. ! l, S$ T& s5 v5 _1 U: T% z( B
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 \: t+ ?- E) @5 Z& ]$ B: p
  21. {
    . G$ O5 f4 u( I0 W+ G
  22.         int fd, ret;
    6 h: w7 C# L& {0 k/ l0 C
  23.         e2prom_s_cmd arg;
    $ y# `& e' U) p1 F8 [" P
  24.         unsigned char buf[0x18];
    ( p3 j$ S) U8 V7 ^# b

  25. / W: ~8 v7 X2 }. ]. }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- x6 H1 u: Y7 x# h% N& E) k  c& Z
  27.         if (fd  < 0) {
    ) P) ^  r8 G- _9 @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 [8 ^7 y3 H" B: M# ]9 C2 s
  29.                 return -1;- H, B; I7 E. {; n' m6 w! O
  30.         }
      f, ^, K0 {; U: I
  31.         arg.sub_addr_count      = 2;( v1 W" o7 D! F
  32.         arg.data_count          = 0x18;% c/ g- |' l2 I7 G# I
  33.         arg.e2prom_cmd_sub_addr = 0x290;1 B9 ]5 M0 ~& t- ?* U: ?& n
  34.         arg.e2prom_cmd_data     = buf;) C* r: |! v$ N$ U; I; e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + ]; v: D8 r, R6 O+ u- z1 y
  36.         if (ret != 0) {& O' |9 p. x7 z8 _2 a: s3 |- i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 }& @+ s" Y; f9 v6 A2 T1 {5 C3 @
  38.                 return -1;+ I  N% z& S0 W1 r) x
  39.         }% ]4 @/ t/ z7 p2 U, Y
  40.         memcpy(mac, buf, 6);
    ' |9 t+ g% c" D- s0 c6 i. L  x- P
  41.         memcpy(stbid, &buf[6], 18);% P8 f0 J; V! S, v3 h% n
  42.         stbid[18] = '\0';' y+ ~% Y9 T3 R# F4 S; v. O

  43. - A; k$ h. Y# C$ @! K( [+ ?5 Q2 }
  44.         return 0;3 p, A/ S/ ], M
  45. }7 ~3 x0 d* x$ S) }! ?3 v
  46. 4 T9 M" ^) ?4 y1 J
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - B* V, z6 ^+ G8 D7 A8 {8 f
  48. {/ B' |* Y2 }5 D5 \/ b
  49.         int fd, ret;
    : }# k) v, P4 N" J* T+ P1 x& V
  50.         e2prom_s_cmd arg;
    % u- d) B7 [2 P5 j  F5 ?0 b
  51.         unsigned char buf[0x18];
    ( Z0 _0 N) q' v8 I/ h& N( [6 l

  52. + N5 @" o  J  @8 d+ O
  53.         memcpy(buf, mac, 6);, a2 _$ H5 d9 L2 n1 h2 ?  s
  54.         memcpy(&buf[6], stbid, 18);3 ~( E2 r! h) _$ Z7 C3 |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 c* h: s9 _/ [- W
  56.         if (fd  < 0) {, K0 k; f- I! k, \) E: T6 _8 m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( c1 X4 g2 [4 S  ?# x% e2 f$ Z
  58.                 return -1;
    3 K0 i  t  K; z1 s. _" L
  59.         }5 f2 O4 u6 U! v8 k' g. e6 d# N
  60.         arg.sub_addr_count      = 2;- O4 ^( ^/ e. r" b0 X" C% W8 G
  61.         arg.data_count          = 0x18;& G9 y. n1 D& F+ m7 J
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 W9 _* o. X, G2 y3 \, \- `8 t
  63.         arg.e2prom_cmd_data     = buf;
    + r( j0 M# ?- M/ Z7 h" W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + p* d4 W* u9 B. R  f6 ^( P9 w
  65.         if (ret != 0) {
    : z4 }/ S0 t0 N% e! y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% E1 h2 m. |, Z: h
  67.                 return -1;1 g! J" k' ^4 c
  68.         }! S: z& Z" I2 U) _( W
  69. ; f- r( c. u$ g% a+ e8 ?
  70.         return 0;
    $ \7 C1 N1 m4 K, L+ _
  71. }. f  p9 f0 r1 C& P2 W# Z2 [6 F/ a

  72. % j0 w# H( m8 p. O
  73. int main()# K  \1 G+ v/ Z% D2 {& U6 }
  74. {
    # B+ `& C9 J5 Q- I6 |& i* p
  75.         char c;
    , B+ s+ A) B9 g6 l0 z9 D. X
  76.         int i, macs[6];
    ) _# }# `% y/ I" \
  77.         unsigned char mac[6];) I$ E9 `7 D; U3 |" m- A/ g( g7 g
  78.         unsigned char stbid[256];
    & R& m1 A0 U6 I

  79. ) t0 ~- a9 `8 n# l
  80.         if (readparam(mac, stbid) < 0)3 I, Q; M4 W& y6 G% ~3 _
  81.                 return 1;
    ; T5 `. R( \0 N" h

  82. # `5 G& [! s5 ~' h8 x
  83.         printf("Current parameters: \n");) j# G* `9 A9 D7 z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & [' T* r. D0 s
  85.         printf("  STBID: %s\n", stbid);
    , }( r3 |4 |6 D9 }* P
  86.         2 r& z2 Y" S+ m, |' X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 C( R, g" g. l+ p9 y3 b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: P& \  q+ F* [* w
  89.                 printf("Input MAC error\n");
    0 ^# d" S+ b: _0 [# u$ B
  90.                 return 1;
    ' H+ k8 I  t3 N: k' w
  91.         }
    ! {. z. l7 w" q; ^" P9 g8 r: X" ^# z* v
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 ]  w; o* @& a  G/ v4 s( w6 `
  93.         printf("\nPlease input new STBID: ");, p$ W0 ~% o# x' P
  94.         scanf("%s", stbid);, [* E& K0 n2 B5 I4 C
  95.         if (strlen(stbid) != 18) {! |" k. i5 q" L: t  U* m7 I
  96.                 printf("Invalid stbid\n");
    $ |& `( C! |" E: c' U
  97.                 return 1;% q8 ~8 f0 N- F$ r
  98.         }
    $ o" ~5 f% z4 k9 U9 Z/ j- H
  99.         printf("\nNew parameters: \n");" @: d# P0 S& N2 {, }" W+ X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, Y+ n9 M# S  _1 C+ B4 E/ \
  101.         printf("  STBID: %s\n", stbid);$ U3 Y- E3 |1 W+ J2 Y% ~
  102. 5 ^  d4 Q$ ~2 j
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 W+ |! z+ w9 k* G# d7 y5 `& V
  104.         for (;;) {. o. h6 E2 l4 q' n/ B' U
  105.                 c = getchar();
    + a* p1 ]3 E1 Z/ d/ u
  106.                 if (c == 'y' || c == 'Y')
    % f/ [" O6 E' P% {6 p- Z" ^
  107.                         break;
    0 E! E$ \  c' h  c& h
  108.                 if (c == 'n' || c == 'N') {
    ) z! o: \+ ^3 v6 a
  109.                         printf("\nAborted.\n");. R2 R) J4 ^, [" l- `9 ^3 A! C6 h
  110.                         return 1;
    3 }! k. U3 Q, Z4 N+ K/ `
  111.                 }1 d% w0 U) P. r6 H# H5 r( Z9 \
  112.         }
    & Q9 k. a$ _; {/ I! j/ b( B2 ^
  113.         if (writeparam(mac, stbid) == 0) & t7 K, {  I/ A0 H
  114.                 printf("Parameters changed.\n");
    , n! m4 f3 E0 ]7 E: D+ r. l. a

  115. 1 H5 h" d5 \' J# C& U9 E
  116.         return 0;9 g9 B+ Q4 \0 [0 [& |) T
  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
: P) i  p) }, }2 j& ~在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* M+ B2 J+ W" E) }1 N你用的编译命令行格式是什么?
' J  y" \1 D& C: [/ a3 e' H5 O* o
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-26 00:02 , Processed in 0.039605 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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