查看: 16983|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * A6 Z) m, ]1 r' ]: ~% [$ \- m
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! |' F6 }$ o+ G  @* a8 H0 e$ \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 d( D7 I5 R. }% F2 G5 {usage: himr <address> <value>. sample: himr 0x80040000 0x0
" q* S5 A5 Q& w$ C7 ?2 E2 {7 Y0 n! C: f" b

# W2 ?0 u+ c% A7 n2 x) p2 ]* {不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# D7 N6 \2 @7 p' ~9 s* I: O
1 h; E2 R( f, U  X0 \1 U补充内容 (2012-3-8 09:42):2 q: ^  G7 b  [- d) |( Z; u' ~$ S
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' P1 \6 y; O) }3 v: n
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。: ]  f% E1 {& ]+ Y
( F# Q$ ^" d' W
himr <address> <value>. sample: himr 0x80040000 0x0, \+ T  w- L. Q* @& W) A2 |

! ]7 w% d( f& Q4 K/ I9 J$ p6 L5 G例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 ^& r: g9 `( ^7 {6 {himr 0x80040000 0x00
" b( I4 T: m% a+ G2 Z  m1 vhimr 0x80040001 0x11: k7 a  o+ ?2 k/ B9 f" O. C" [
himr 0x80040002 0x22
8 V; A( x' Y; b9 _; u" x) Shimr 0x80040003 0x33! H5 x7 K( [* c) Q' T/ q( p7 i% C
himr 0x80040004 0x44& P* v, D. n7 X1 T! Y; ]+ O: ]
himr 0x80040005 0x55
' n; B" @( Y' n1 T& p7 w6 k# Y2 m. O! z
SN也是类似。
% l; [# k! {. w2 ?' Q. h3 n" V
* d7 s% [" X- B; X现在主要是,谁告诉我们MAC和SN的地址?; @# k1 J  t5 `* |- ~; `/ R! X
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 D: v8 A5 v) p+ U' l, E: K
一直想找到运程修改MAC和SN的办法,苦于无解啊

( U# I3 t3 S+ R0 h* U# w源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' {: c( F* g9 m5 p

0 m. x% d0 `) `1 M# Q" C' r修改的代码早有了。到今天不会编译。
0 x& U* z( L+ W& y( T需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * n4 `. u; f# l( F
  2. #include <malloc.h>3 A9 h. M' H& n: V  V
  3. #include <sys/types.h>
    9 M3 t* D/ K* U% m' H; n
  4. #include <sys/stat.h>2 n' ?9 P& s! F
  5. #include <sys/ioctl.h>* g0 v" K: _  }
  6. #include <stdio.h>
    2 w9 q6 a% j! v7 z6 y* O: h- m
  7. #include <string.h>5 c( ]! j7 S) `) B! t* T: L7 G7 \

  8. ) n% @. q" _5 P, O7 w
  9. typedef struct {  r# w' q7 a+ E3 c; q( C# f+ S# E
  10.         unsigned int        e2prom_cmd_sub_addr;3 D) r5 b/ g6 a% F- |  Y% y3 t
  11.         unsigned int        sub_addr_count;
    + Y+ U4 ?' A/ M( z+ d
  12.         unsigned char*        e2prom_cmd_data;
    ( A: d9 g6 V  _( y
  13.         unsigned int        data_count;
    ( |: ?6 H1 ?: d
  14. } e2prom_s_cmd;5 u' W) F# Y9 X) J- R$ T
  15. 5 Q' C. K8 W) X1 M! N; u
  16. #define E2PROM_CMD_READ 1
    + w* N1 ~  q% m% u6 N& S% S& y9 {
  17. #define E2PROM_CMD_WRITE 2
    3 ]2 O4 H$ U" g# E# z/ i- s3 Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ ]3 e+ d6 S. t, J: z; u
  19. , m2 m5 n+ I' B% h, C5 J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 S5 I  n4 y7 Q! {
  21. {
    , i# G5 k! Q$ |' }: F" ^3 c
  22.         int fd, ret;, }% o5 L# w6 m! U+ Z1 c8 }/ g# x+ W
  23.         e2prom_s_cmd arg;! S2 z4 Y* U. o3 m1 l7 n  O
  24.         unsigned char buf[0x18];
    8 s( r! m# E" D, J! m

  25. . f; l6 Y3 z+ n# N8 C$ G
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( Z. ?- i' g' e. N- w8 |/ W
  27.         if (fd  < 0) {
    1 U0 }  R3 ~1 v" U$ \: y! x# }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 H$ o! B. z2 s. k! ~* _
  29.                 return -1;1 S4 M$ C( {2 [7 f/ O4 F
  30.         }
    % H6 @: z6 g  s: {8 j
  31.         arg.sub_addr_count      = 2;
    8 r/ O7 U* b3 n4 y2 T
  32.         arg.data_count          = 0x18;# L4 i. a0 Q* v8 X# b4 ]9 L4 G, z7 H
  33.         arg.e2prom_cmd_sub_addr = 0x290;, r" D/ }7 ]' j& D4 o3 t2 i
  34.         arg.e2prom_cmd_data     = buf;* U% f$ W0 p7 }( a" {! I! G8 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' c: ~: C7 R9 ?5 l) j
  36.         if (ret != 0) {
    . u0 G7 \, N$ Y9 u5 n% z% L
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 e" q3 V5 ~4 `9 U- ]+ X
  38.                 return -1;1 j) @. w3 b, S" `: l2 n& s, M3 G
  39.         }
    8 R% Y0 W) d; z8 \# c" ?
  40.         memcpy(mac, buf, 6);- a* F5 f/ J) \2 k0 R9 x% e
  41.         memcpy(stbid, &buf[6], 18);
    & P  |; A* H0 R9 a5 K4 ~
  42.         stbid[18] = '\0';; h( j, C2 H0 h+ C3 @6 I! ?4 T# s
  43. 7 ^/ X% Y( L9 V0 l4 b1 _% |
  44.         return 0;6 J: N# A. g, |0 I! d5 v1 C3 _
  45. }
    . `( h" t9 D' j1 I/ v

  46. $ H! \& N8 a) o$ X6 d4 A$ d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' o. D% c& a5 _- R) {
  48. {
    1 v% Y( v# I# j) L# \
  49.         int fd, ret;
    - H4 @% r0 P- [$ _
  50.         e2prom_s_cmd arg;
    / Q7 f! s! c- O: T4 ?9 p
  51.         unsigned char buf[0x18];- e+ r1 t: g8 z6 d+ k

  52. : N+ X$ p8 R2 s. [4 s
  53.         memcpy(buf, mac, 6);
    # h+ v+ R" U8 r3 r9 ^( G
  54.         memcpy(&buf[6], stbid, 18);
    ; F9 v' m( ^- P6 N* J0 _! s- N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # T% h% H$ r: j3 j+ S! f+ b1 J9 I
  56.         if (fd  < 0) {
      e" n, x: h* |4 O  P: i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! ~2 o2 ~* m; _
  58.                 return -1;) g/ k0 ?" \( n  _) K
  59.         }
    + F! S  c4 ~0 @3 o3 Y4 l; t
  60.         arg.sub_addr_count      = 2;
    : f( ^$ g1 ]3 H; q. A, e
  61.         arg.data_count          = 0x18;1 N7 ^. L$ H! k
  62.         arg.e2prom_cmd_sub_addr = 0x290;) U5 ~0 w3 d5 H: ^% V+ l
  63.         arg.e2prom_cmd_data     = buf;
    8 c8 i0 F2 k! z1 ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + _+ m' z1 {4 h) \
  65.         if (ret != 0) {
    $ a5 j% R* Q- V. ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- a% [  ^3 T; T2 _! \$ ^9 I- A6 ?
  67.                 return -1;8 M$ a$ G: Q/ B! {( h, Z' Z
  68.         }6 W- N0 e% R% [

  69.   M, q# Z* p9 r0 I1 n# ]4 M) y" l
  70.         return 0;% t0 ~( X9 U3 o( N
  71. }
    : K6 x. l3 |  r
  72. - {5 a4 H( |; w% L; G
  73. int main()
    - k8 E# H  h) ^% i7 F+ S' K
  74. {
    $ N. ?6 f( B  ~2 L/ `
  75.         char c;
    ) q; ?6 |# |3 w7 _! I$ [+ y
  76.         int i, macs[6];! ^3 s& ?' k$ F0 @/ W: V
  77.         unsigned char mac[6];  ?8 N4 }. g& _& u8 A0 W
  78.         unsigned char stbid[256];
    * W% O* i" x* z* D3 g8 N
  79. # m& s, s  @0 `
  80.         if (readparam(mac, stbid) < 0): G! y# U) a3 j" f) n
  81.                 return 1;! ]6 f( u5 j. D2 d* W( N$ _

  82. 1 [- r8 r6 w- Y# M! q; n  f
  83.         printf("Current parameters: \n");8 d% b  f+ m  h- M. C( t$ L9 n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' @, X" E, D- W: L! M0 B
  85.         printf("  STBID: %s\n", stbid);3 @) O( s5 p+ r( v4 }
  86.         9 N5 I) |. L, Q7 T) w  H4 y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; d  W4 \: j& E0 u$ N0 C8 v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( P1 {# l, [1 a% D$ |) Y
  89.                 printf("Input MAC error\n");( |- d* u- T; t
  90.                 return 1;
    9 M3 j" g+ p& R* Y
  91.         }
    ; }6 u+ p, {/ V0 b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , @) c6 I/ b; W
  93.         printf("\nPlease input new STBID: ");0 v( C' X% |& w+ H* _5 n
  94.         scanf("%s", stbid);
    * T4 ~2 y) ^3 t$ u! g
  95.         if (strlen(stbid) != 18) {8 b, R! `  {  K- E
  96.                 printf("Invalid stbid\n");; U5 G  G3 s& t2 ~
  97.                 return 1;
    9 V) T# i! P' ^4 X& P+ e$ d2 r
  98.         }
    ( l5 K/ \, w  O3 O% v
  99.         printf("\nNew parameters: \n");
    3 [' t( G9 H( }( ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; x+ h* Q# q' b7 S8 I! |
  101.         printf("  STBID: %s\n", stbid);* r: G, P2 Z, H0 o# U+ M0 q4 T

  102. # h" _+ o' R2 Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");# Z$ {& b$ t& o+ Q8 G
  104.         for (;;) {
    0 F6 h( K6 h# o  o% i4 }. ^3 b
  105.                 c = getchar();' W- f, b5 a* M' v6 Y
  106.                 if (c == 'y' || c == 'Y')) e9 n- ~& i0 c" @( s4 m1 k
  107.                         break;! Y* c/ v6 M) c& R' k4 c
  108.                 if (c == 'n' || c == 'N') {- W  K3 \, ?5 d( Q' V4 z- J
  109.                         printf("\nAborted.\n");" v# t5 k2 l* s' V6 O; q$ Y" ^3 [
  110.                         return 1;" k- ?5 l- |/ t2 \+ ]
  111.                 }
    0 D) q5 J) ~! z& K# t6 ^' K
  112.         }6 E4 R+ A% c; x
  113.         if (writeparam(mac, stbid) == 0)
    9 U" C. n  q, N  a1 Q6 S
  114.                 printf("Parameters changed.\n");! k. ?2 W, t1 H  p# N9 L4 V( n# ^
  115. $ u5 J8 E' _8 m) r4 ^! |
  116.         return 0;: g1 X% I3 M  r4 I7 m+ _# n
  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
* s9 j0 {# P% ~- J5 S- r$ _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. d; s% ^- S2 x" }5 g
你用的编译命令行格式是什么?/ X! r$ U8 N, `0 L. h9 u
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部