找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15740|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % F5 R+ S, ]8 U9 B, N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / b* M2 B$ ]  c5 E9 p+ J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ K, I& z3 B; xusage: himr <address> <value>. sample: himr 0x80040000 0x0% J! W# ^1 n4 A! h/ E$ Y
( t) P) m6 z* s6 |

" b, o% g, E4 [' d6 I$ S不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! M: K  U' g2 ^; d
9 O1 K5 p1 ^. `5 g$ J补充内容 (2012-3-8 09:42):
& h5 A" f6 S! M8 D0 k4 F6 shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; Y. M8 X5 E, R- e! v# l这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- V9 P! W$ C% K$ v, @! d! V3 D6 T

/ Z: {1 X" y/ U* S. S: o0 |himr <address> <value>. sample: himr 0x80040000 0x0
& c. Y* u* d$ y" B( |" D3 [5 s4 t% n8 @. Z: \; R
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# @" x, s6 A$ p. M
himr 0x80040000 0x006 p. w& o" ?* i9 J7 d; V
himr 0x80040001 0x11
' ?, E# d( @2 Mhimr 0x80040002 0x22# d$ U; B* g. Q
himr 0x80040003 0x332 H! U% q: F6 I9 @# x
himr 0x80040004 0x44
" x  g$ j, D% {. p0 }. Mhimr 0x80040005 0x55
$ @" t7 ~8 S' G  }; g' F9 ~  \3 l" }1 q" P0 y# q
SN也是类似。4 `4 @2 N1 i; ^6 E, u0 C
" ^* r# s8 g9 }! H- m3 R8 M9 C
现在主要是,谁告诉我们MAC和SN的地址?
) U6 ]. N( ^! d" D: q$ I
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) d6 f" n1 o" s- s$ z5 s
一直想找到运程修改MAC和SN的办法,苦于无解啊
5 n6 r& A& _( a* l; r4 c4 p* R
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & m- i( e7 L/ w! Q

( m4 A% g2 G' M9 b. e9 z$ Q修改的代码早有了。到今天不会编译。
  ^+ e- ^7 `5 L1 g% b: g: y; q$ i. D需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ A" t. x" l6 Q7 K; l
  2. #include <malloc.h>
    ( L2 H3 l; O2 @3 @4 @
  3. #include <sys/types.h>9 S+ a: s$ N% E  q% _
  4. #include <sys/stat.h>* E: O; n5 _% H: J/ |/ i& h/ B$ t" V
  5. #include <sys/ioctl.h>1 R, h; W' t$ _( S5 X$ L
  6. #include <stdio.h>; v$ x/ q1 P% l! C6 N
  7. #include <string.h>: D7 C" o! w* Q$ Z% X: i
  8. 7 f$ ?% _, i# c4 r
  9. typedef struct {3 p% O7 C3 ]# }, m
  10.         unsigned int        e2prom_cmd_sub_addr;
    % V0 R% p7 i7 ~1 v6 N  u3 T1 f
  11.         unsigned int        sub_addr_count;
    $ p0 W' M4 M) L, Q/ X* |
  12.         unsigned char*        e2prom_cmd_data;
    , Z+ _% d) ~( I9 g0 ^+ {! M
  13.         unsigned int        data_count;
    % X& ~0 H+ G5 m* s* i3 {5 ]
  14. } e2prom_s_cmd;% l$ l" g- _1 k5 t% |" B6 W  {2 g

  15. / v( e: ^  W! N! C! P& V
  16. #define E2PROM_CMD_READ 1
    ' i+ j. [0 J; J& s  s' n- w; P9 I# Z
  17. #define E2PROM_CMD_WRITE 2( J7 Q! z9 X1 p3 n2 X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ I+ B2 e3 _6 V, D$ A& d/ M

  19.   \1 Y: w4 K: b& M& K9 a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ H5 {0 D3 X* H
  21. {
    0 h8 h) ^8 m" ]: ]( c
  22.         int fd, ret;! f8 @! |1 a1 H; b! z8 N: o
  23.         e2prom_s_cmd arg;
    + f7 U! _1 s1 k' C1 C3 \4 e) [
  24.         unsigned char buf[0x18];( x) A( G' C5 W  C  E8 f

  25. " Z# ?% e: ~; U$ k- v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' B' X2 w# ~! u; G# e: K
  27.         if (fd  < 0) {  L7 Z; ?" s- t& W& K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 ~# [) x! S' i
  29.                 return -1;0 P6 L; c/ Q# d0 U6 c" _* K4 N; X/ H
  30.         }
    ! i: R+ N( ^0 [
  31.         arg.sub_addr_count      = 2;! D1 j- h/ `6 X1 C' D1 f( o
  32.         arg.data_count          = 0x18;7 w+ @6 `, @7 [9 g) |4 P2 C+ j
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & A1 L  L3 S$ z" s) N% A0 r1 j
  34.         arg.e2prom_cmd_data     = buf;4 g9 W2 M* k6 {- Q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, p: x: w# A  s$ K0 S4 S  @1 Y2 B
  36.         if (ret != 0) {
    9 B- e, L! `) z3 \2 q" m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  H# f) ^: ?# p1 g2 u- B
  38.                 return -1;" t% |' o5 l9 x% @  b1 _
  39.         }
    & e% |5 c* V! [# ~
  40.         memcpy(mac, buf, 6);
    % P( u5 g- \3 t
  41.         memcpy(stbid, &buf[6], 18);+ h- X& g5 Z" a0 t! z+ p
  42.         stbid[18] = '\0';
    ( r9 {2 D9 E4 Y% G( s' @
  43. 2 w6 A: W: @- g$ B2 h/ c; z8 k
  44.         return 0;
    2 y' V( ?3 y4 D, c0 l% d3 n& h+ O
  45. }- {/ d) O6 U: ~( ~; d
  46. # Y0 {, s% ^/ a7 [; z8 @+ q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 t" A* p0 y, I" g. h8 @: {' k
  48. {
    2 `! ]3 T" k$ ~0 d+ z' ~  F$ B0 D
  49.         int fd, ret;
    . \5 N# \: B( ]* l( ]$ T6 e. [$ ]
  50.         e2prom_s_cmd arg;
    4 q9 j) N, A- e4 t0 D
  51.         unsigned char buf[0x18];
    0 n% J- Z! A+ g  i  n: \& a; P& P
  52. 1 t  i+ Y/ I0 T  S) G8 T& M3 ^
  53.         memcpy(buf, mac, 6);
    + L, t! a! U& K% `) F7 I7 [' T
  54.         memcpy(&buf[6], stbid, 18);
    ; P& t( D: ~6 F6 @4 k
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 A. O& t9 f% Q9 G
  56.         if (fd  < 0) {
    2 T6 I7 O7 D  y6 D# ]8 y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  k/ v" k6 V  n
  58.                 return -1;1 u3 y6 W7 I4 p
  59.         }
    ( h' C* Z: f, r" d" Q
  60.         arg.sub_addr_count      = 2;
    * r' U0 X% m0 l. Y7 Z
  61.         arg.data_count          = 0x18;- C6 G/ P1 s1 n- C+ C8 @0 S5 N% t& z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; {% c8 s1 J0 P) S/ l
  63.         arg.e2prom_cmd_data     = buf;( J- U9 ^3 g$ S: d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& E% o+ B) h2 h3 t, s; ^+ Q5 s
  65.         if (ret != 0) {& O( Z$ W# M! I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : A& t3 S: j) ^7 @$ ?8 ~
  67.                 return -1;8 Z% E1 B; `: ~2 ]9 |* O; t
  68.         }8 u2 Z3 Z$ G  w6 q( G

  69. 6 T2 A( z, i4 A, O
  70.         return 0;& z+ G! q7 T* f& n
  71. }5 P' i8 Q  F) w0 o) W, J

  72. 4 u0 x/ e4 d1 o4 K6 M' X
  73. int main()2 ^( g$ V2 N; x- u
  74. {! j" }& |1 J! R( t
  75.         char c;
    / m7 a* l/ t5 W4 h- V# N% G8 t
  76.         int i, macs[6];: u; ~6 `$ b6 F/ {! D1 r& H
  77.         unsigned char mac[6];7 u. l1 N5 [* o
  78.         unsigned char stbid[256];
    ! ]7 d' S1 p. m

  79. % O# i8 U3 {7 ?9 i
  80.         if (readparam(mac, stbid) < 0)
    5 D. I; Q& ?. X( M! R
  81.                 return 1;* C( z4 [9 u' x8 J: [7 n! `

  82. % a- q2 F5 \8 X6 l4 H: `+ f
  83.         printf("Current parameters: \n");$ T1 w. ?: P6 J# K8 N+ ]$ m# u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - Y% X8 \' O" M5 }6 a
  85.         printf("  STBID: %s\n", stbid);) t% N) \( ^5 p* ?) T# \3 E! ]6 n: R
  86.         & f* s% g' G  j* A$ X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# w. x  @- M4 @! d6 M- \1 c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; G* ]& N6 I0 m& w8 N9 L) i
  89.                 printf("Input MAC error\n");% T4 `2 x# Z5 k2 c2 h1 P4 J
  90.                 return 1;
    & G6 E2 e5 R7 m( [5 z6 z; A9 E
  91.         }
    4 p, D1 a4 ^% i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# S+ s" m2 N7 Q% c
  93.         printf("\nPlease input new STBID: ");
      [0 }8 ~* f  l. ^
  94.         scanf("%s", stbid);9 v2 f9 u) |1 r7 A
  95.         if (strlen(stbid) != 18) {
    ; A: i: p2 K4 m$ N
  96.                 printf("Invalid stbid\n");2 V/ s/ @6 X. {2 H4 v( Y
  97.                 return 1;! }' O$ U5 ~. `' F
  98.         }
    & U) S& T, W$ e: }3 \! B
  99.         printf("\nNew parameters: \n");8 B; h; ]2 }) U/ v' C# x
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 ^. U0 a0 ?* a* q- L& G
  101.         printf("  STBID: %s\n", stbid);, m/ a5 E0 e! ]9 @4 ^
  102. ' F( o6 o; x$ |' i
  103.         printf("\nDo you want to change paramemters? (y/N) ");' n! u  x; E& F" R  m5 _, B
  104.         for (;;) {
    5 Q$ G* o, i2 ]9 m3 ~8 F
  105.                 c = getchar();+ L$ v( r9 [- e
  106.                 if (c == 'y' || c == 'Y')
    / x; `' P6 Q3 X9 x' ^" S( [
  107.                         break;
    $ ~- ?' m+ U, @6 f
  108.                 if (c == 'n' || c == 'N') {
    1 j7 |: S$ n! s$ a0 v8 [* O
  109.                         printf("\nAborted.\n");. R: P9 j+ ]2 U4 a" b/ N
  110.                         return 1;! y$ _2 ~  c, V/ o7 Q8 M
  111.                 }
    2 p5 H: Q% C) r! ~
  112.         }5 @5 t% W) Q  y' L
  113.         if (writeparam(mac, stbid) == 0)
    & E; e4 \2 f- G
  114.                 printf("Parameters changed.\n");- y5 D3 l2 p* u( D: D# M

  115. 5 @; W8 v8 N' N* T% {" d
  116.         return 0;
    0 v* e2 k  H8 ]) U' C& ]
  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 * D% s! o* y* @" [/ |
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 @5 G0 G: }- L7 M
你用的编译命令行格式是什么?5 w% J- [7 L0 ~) ?, B# a
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-11 02:26 , Processed in 0.031195 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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