找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15580|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 g7 ~3 k4 ^4 j2 C# [! h# v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 G* h* `5 z- i1 w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; w# ?3 ?8 V/ Q; cusage: himr <address> <value>. sample: himr 0x80040000 0x0
- H, E2 _9 y% _8 p7 M$ f
# |, ~, s2 ^3 J( I) }* \6 M/ D- S/ I6 |7 |, g
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! G; r5 |! b% E& g& e8 ]
4 T% N4 Y( E% Y1 f& \) A
补充内容 (2012-3-8 09:42):
& V, h+ q$ x. p9 C& l3 phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! P$ I& c+ A. z& ?7 G这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。7 _2 |6 X. a/ y

. V% s& L( H  j) O; Y) \himr <address> <value>. sample: himr 0x80040000 0x0) U$ H9 [' m$ f8 \2 ]* a8 K

" c1 i" I- Q" g* Q# t% i5 \例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& [! l) l+ }8 l0 _/ K
himr 0x80040000 0x00( A1 O  R+ Y8 F6 i' d7 m, _
himr 0x80040001 0x11
4 O8 I( [& Y" B! v% Uhimr 0x80040002 0x22
2 m# t1 o5 b+ |$ L+ z& d( Lhimr 0x80040003 0x33: x& i* r2 c5 ]# ]
himr 0x80040004 0x44
% i* C6 U$ K+ I) X3 k: p9 ?himr 0x80040005 0x55
+ A9 K. b. t" ?, `: \4 ]! h% a
SN也是类似。& M3 U* w1 ^) P- M1 K% [' @! P* a

4 w* T3 O# U* S1 [现在主要是,谁告诉我们MAC和SN的地址?7 v( P9 N; Y% }- M, o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 e) @  H; {5 K+ X. ]9 \一直想找到运程修改MAC和SN的办法,苦于无解啊

/ w) D. {! A/ I! J源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! D( _+ K8 [/ J# m; h
8 N5 R9 q" Z2 J" v修改的代码早有了。到今天不会编译。: \. n% q" [1 @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( K$ r6 o) p$ C3 i4 V$ e. g  n2 k
  2. #include <malloc.h>
    5 z% N  z0 [5 F) \" }# x
  3. #include <sys/types.h>
    4 c/ A( U2 q6 h
  4. #include <sys/stat.h>
    # c7 p, R2 G, Y, W
  5. #include <sys/ioctl.h># j- k. f+ H$ E6 Q
  6. #include <stdio.h>
    4 t3 u( n# }8 _% |" k2 g
  7. #include <string.h>
    ( F/ Z" w( s7 v
  8. 2 n; \1 d) u4 N0 K* q; K* [0 F
  9. typedef struct {5 l7 E; ~# h0 U) _  j( q, p" p4 a
  10.         unsigned int        e2prom_cmd_sub_addr;; o7 ^3 i1 N% V; n" V4 J6 y5 }
  11.         unsigned int        sub_addr_count;
    % J# j* A& m7 k. j. F7 j5 q
  12.         unsigned char*        e2prom_cmd_data;* v7 x& n7 U6 b0 t
  13.         unsigned int        data_count;
    ' H1 ]" X: n% c
  14. } e2prom_s_cmd;- O* c$ K3 Q3 e) f, n9 J/ k

  15. $ ]! f$ M8 n% k5 Z; P8 q& _$ {# Z  N
  16. #define E2PROM_CMD_READ 1
    , X5 T4 ]9 |+ `/ U5 V+ j  d8 O- i5 r$ t
  17. #define E2PROM_CMD_WRITE 2- a2 V3 o8 p/ J8 r. s( ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ G8 n( A+ Y% W# f' [
  19. 3 R" H7 ~# z* t5 F4 ~$ U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ ?  G$ F* ]0 V; A3 Q3 w' O! `- R
  21. {, U) w* o, }- s! G3 M) ?; J
  22.         int fd, ret;
    0 ]3 C; f' @- |2 O/ ]: D% B
  23.         e2prom_s_cmd arg;: w, E4 W$ O1 b' h, ]( A
  24.         unsigned char buf[0x18];+ c, X9 a; l% f2 J" j& B

  25. 3 J# h7 Q+ [4 V; X5 r9 e7 ~" [/ u" p
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 }* j4 F+ X/ l! y0 V  l
  27.         if (fd  < 0) {
      M6 x2 K+ n& Z* X5 u3 ^, ^6 m0 `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) a& F5 T8 l% ?& X
  29.                 return -1;
    1 V) q1 P, ?2 u3 m
  30.         }
    7 H8 J: \' i' B# l; B7 t
  31.         arg.sub_addr_count      = 2;/ m3 ]) B: b- b$ {) |3 @
  32.         arg.data_count          = 0x18;* ?) S) k- n* u
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ c1 h5 c+ m1 B' Z, N" ~
  34.         arg.e2prom_cmd_data     = buf;
    + A( a* v0 n7 I' D5 O8 J9 Y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * ]+ n9 ?) E; P3 \& ~; O; q
  36.         if (ret != 0) {) H$ y+ g2 ]& s- [% @9 j: [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);% `6 @4 B1 I! p
  38.                 return -1;: `) S  W& N% n4 f$ @+ G
  39.         }
    , ~2 h& ?0 G4 _7 D# }
  40.         memcpy(mac, buf, 6);2 |' Z$ N+ I4 S1 q" f- T9 l
  41.         memcpy(stbid, &buf[6], 18);% b; A1 C  o2 P: s. p& f
  42.         stbid[18] = '\0';% N- V' Y- e, c$ n% }! Y# C

  43. * W# C& \6 u3 ?5 u( B. t
  44.         return 0;
    * d& l* j$ Y2 {" p& l7 D
  45. }6 O1 Z' x2 `6 J
  46. 6 C4 a$ e& ~) d' T* ~) E, F
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : q, `7 o$ W! g- ]
  48. {: `: v* \, U& }) w, Y( p
  49.         int fd, ret;
    # {! L3 }& `6 Y
  50.         e2prom_s_cmd arg;
    / y. ?6 F2 ^# Y2 f3 u
  51.         unsigned char buf[0x18];
    * y0 o, o0 A0 f$ F
  52. % O6 H" u; Y- n
  53.         memcpy(buf, mac, 6);
    , v" ^/ a: j% f
  54.         memcpy(&buf[6], stbid, 18);/ M. t4 z' k, B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 a8 w% b+ N; l& E: R
  56.         if (fd  < 0) {
    % e4 V  F2 _' Q: I+ d, k0 I5 ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / T3 f, k8 m! P" Y
  58.                 return -1;& o7 g# _: [& ]& _3 V% H+ \
  59.         }6 W) F+ ?( w4 Y" b5 I8 o# d$ N& Z" p
  60.         arg.sub_addr_count      = 2;
    " M/ ?! L# I1 ^5 P, q; T2 W
  61.         arg.data_count          = 0x18;& l! @3 V+ X  `% S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 _% m. l6 @. ]2 Q3 I
  63.         arg.e2prom_cmd_data     = buf;% b+ U% |, n5 i, E% V2 k& ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . V% h& W0 b- o  C1 I1 j/ U6 O" ?
  65.         if (ret != 0) {& O, y$ Q0 J8 X( ?% T" F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 J  _; \* V9 m7 S  e
  67.                 return -1;
    ( D8 h* y8 V7 x( }1 H1 w) p
  68.         }
    6 `( x7 R6 Z! m

  69. , G5 q' o3 x, N5 a5 C7 q6 _* ?
  70.         return 0;
    ) T" G( e+ m, R0 x* e- B
  71. }* N5 R7 l( |7 l. J9 U4 y
  72. 4 h- G2 ^& O& ]  G6 ]
  73. int main()
    # g' w, D: p: U/ s
  74. {$ {7 O8 u( B" l# c. W' Y
  75.         char c;* f$ t; I3 ?3 y4 @
  76.         int i, macs[6];9 F6 y, D3 [) T
  77.         unsigned char mac[6];
    # x  k! d! M7 ^1 C$ O" W
  78.         unsigned char stbid[256];: n0 [; ^  _) F3 T/ {* i" O1 E
  79. " {4 k3 W! H7 a, v
  80.         if (readparam(mac, stbid) < 0)3 _  J) g& ^- h  O- O1 a" o' Q
  81.                 return 1;( V3 B- j  r4 `
  82. 8 {: v# W4 x6 _. `) Y2 O
  83.         printf("Current parameters: \n");
    9 e" U8 ~1 S, ?  m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( ?5 i3 f( h* n8 b9 A/ W
  85.         printf("  STBID: %s\n", stbid);
    9 l$ v; g3 j$ C0 q, d$ D7 q8 J* _6 U
  86.        
    ( Q/ E! c# c- c( j+ F+ K% V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& p1 q; E3 {* G* K- U9 C1 x0 f" j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . p2 ~( t! n( f5 y
  89.                 printf("Input MAC error\n");/ O9 r* ?% o' A! B1 d3 i: `9 t/ a
  90.                 return 1;
    5 d! H8 ?3 _+ r+ Y1 X) _" R/ |
  91.         }
    ' b6 K! U, f: i/ J0 n& P! p3 W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 \! x; H2 b, g: f. E; P
  93.         printf("\nPlease input new STBID: ");
    : j0 `% n6 X; d9 h/ t+ r& [
  94.         scanf("%s", stbid);3 |) e; K8 ?/ F' }+ Q* g+ s
  95.         if (strlen(stbid) != 18) {0 T5 _, \9 s' }& K+ x6 u) x
  96.                 printf("Invalid stbid\n");7 Z0 p* y& o" m! J- W6 Y7 j# b
  97.                 return 1;
    3 Y6 k3 x8 r+ v& U+ p
  98.         }
    ! n. W2 ]5 w. G* |
  99.         printf("\nNew parameters: \n");
    ) r3 I6 X& z  j2 j) Z1 E+ a# D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 t- U' Y( S+ E& y0 R
  101.         printf("  STBID: %s\n", stbid);
    % i2 }' n" @# g; q$ H; G+ S" W. z

  102.   O" ^7 A* \: l4 l
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 e6 @5 H+ t2 i: n7 O+ s# i7 Y: }
  104.         for (;;) {
    - z5 ~6 R: x  b* F
  105.                 c = getchar();4 ~. }; o4 `2 F! S: h6 L9 K
  106.                 if (c == 'y' || c == 'Y')2 i' ^3 {) V+ e) G0 N% o
  107.                         break;
    " w7 d2 r  T9 e! G# d4 z
  108.                 if (c == 'n' || c == 'N') {
    7 k, d( i# c+ ^: X$ H( `
  109.                         printf("\nAborted.\n");
    7 U! S4 e6 J; J) M$ p8 Z; A/ {- |5 y
  110.                         return 1;0 x( k# N$ I7 C- F! {$ l
  111.                 }
    * @) Z# o7 B* h9 e  i5 e& h
  112.         }* F' E% t: W' S6 F
  113.         if (writeparam(mac, stbid) == 0)   _+ e- ^- s& y4 ]5 C' P$ @
  114.                 printf("Parameters changed.\n");& y7 @# x2 E: o; @6 B

  115. ) ~# o# t( r# F
  116.         return 0;
    - h$ G$ t2 I* s! j3 S! p, v4 B7 f9 g/ b
  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
0 W8 s$ `0 {5 a" w% Z& v3 \在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 }7 _1 K) _$ F- J, e你用的编译命令行格式是什么?
( y; U+ a7 P) g7 d: \5 n2 M
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-16 04:29 , Processed in 0.023997 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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