查看: 17271|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # G- n7 L" d+ n( ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, Z" l; V7 {( o. n8 D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
: m2 W) L  X! K& e3 l/ Eusage: himr <address> <value>. sample: himr 0x80040000 0x04 F. U1 x' I. ~4 ?5 c
. ~* L! r3 {; d9 n- Y7 F

3 ?+ [; z) M) c1 ?  P不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ h' `. E7 S+ ?1 p
$ e1 H% z5 A4 B' H" h补充内容 (2012-3-8 09:42):; x& S9 g: Z9 k
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) B" `* \" P6 l/ n8 J
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
& ~' V) Q/ L! c* n( E: `* e/ }6 [8 f5 q' {) m
himr <address> <value>. sample: himr 0x80040000 0x0$ V6 `. `- G  d8 q5 K8 g
  ?2 [" ]; p7 e- q9 z) I8 S9 j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* r$ K& |- o! }4 D6 m
himr 0x80040000 0x004 N) i0 F7 J% D- R6 o/ }% r' Q
himr 0x80040001 0x11# h0 u) q9 e5 F* B7 g) J$ _8 J
himr 0x80040002 0x22
+ O4 K" U7 w( u6 X! e4 K+ {2 Uhimr 0x80040003 0x338 L2 a. f; E% w
himr 0x80040004 0x44
( @/ V* ~6 U8 p) b. ]himr 0x80040005 0x55. ?: o% d! a3 H1 |5 F' w

1 H! x7 _" \3 YSN也是类似。& ~& P/ C" x* Y8 P) T2 q
* y: j( H6 n5 W9 @7 T/ J
现在主要是,谁告诉我们MAC和SN的地址?" Z& o/ m: r% S
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% z4 L) u! X! _4 ]9 d一直想找到运程修改MAC和SN的办法,苦于无解啊

, V7 s$ d( u; B4 _$ H源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ ?) L- c6 b. l3 q# i
3 P' [4 \; ]6 ~修改的代码早有了。到今天不会编译。
2 T5 O; G3 \0 j0 c% r需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 \, u# C3 b  u. ?
  2. #include <malloc.h>
    ! n1 u! k' p  C7 h# R
  3. #include <sys/types.h>
    - J7 U# m8 v2 n
  4. #include <sys/stat.h>
    ' ^6 ^- A( a' h1 s
  5. #include <sys/ioctl.h>7 H* X# `) ~  M% s+ k% M. z* U
  6. #include <stdio.h>  z, s1 e/ Q( _  ]
  7. #include <string.h>
    ! \3 q, I# ]- v3 ]

  8. 2 G; f+ U5 C( n/ d* {) b- p6 L
  9. typedef struct {, N0 D# n  z4 A5 n4 i7 w4 z7 r
  10.         unsigned int        e2prom_cmd_sub_addr;
    : H9 C# w2 ^. k5 w+ p  F' O
  11.         unsigned int        sub_addr_count;' p+ L/ z* u2 i- n6 g" d, X
  12.         unsigned char*        e2prom_cmd_data;/ v* f# q/ m8 K& P7 h# e( C+ C: t
  13.         unsigned int        data_count;
    0 M# y. A* x  f) i8 ^4 W% `
  14. } e2prom_s_cmd;2 K2 I# C- o1 O" e

  15. 0 ?4 k& \8 @) m- M* f5 Y, w% B( z
  16. #define E2PROM_CMD_READ 1$ ]' x7 h9 \5 M7 l. r% u/ ^/ a
  17. #define E2PROM_CMD_WRITE 2
    3 \# c  I* }# V) k1 e, [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 \& A8 x/ h' A
  19. 7 T3 f" p$ ^6 H' k  U7 \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) Z1 N; [  }0 k3 P( f
  21. {
    ; ]- g! L& P7 D6 K$ f3 f
  22.         int fd, ret;$ z/ H" X2 X; u/ D& Y. @
  23.         e2prom_s_cmd arg;, z" W8 ], T# w. J, \" C! I
  24.         unsigned char buf[0x18];1 {( |/ i* H/ z' p0 E

  25. ) J1 w& L8 G' W6 o2 r* ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 g; i( P  i+ ?4 y: w5 N0 ~
  27.         if (fd  < 0) {5 j' ^% R* k& Y: Q# ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# I) g6 {5 |; z" P- p2 K
  29.                 return -1;
    ; O, X6 S% U/ q/ \
  30.         }
    % ?( U0 J' u' _8 M" J1 w/ S
  31.         arg.sub_addr_count      = 2;# N$ `* ~9 @9 B" B9 d+ z' W6 G* G
  32.         arg.data_count          = 0x18;4 h( p. u! J- c
  33.         arg.e2prom_cmd_sub_addr = 0x290;" g1 D% [# m4 N" s# e
  34.         arg.e2prom_cmd_data     = buf;
    % T/ h5 B; G7 ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( U( o9 y( I  t! c, ?
  36.         if (ret != 0) {1 p) j2 {2 K. V6 D+ |) |% r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / v, E$ P: W0 W6 Y( L4 V
  38.                 return -1;
      Y" J) w9 ~# _# H# f& }) O
  39.         }5 }3 L3 z% e7 u/ s
  40.         memcpy(mac, buf, 6);: r; z- f6 P4 M/ |! `5 r* c
  41.         memcpy(stbid, &buf[6], 18);' H6 o8 |8 i& u' ]3 ~7 o9 `0 R
  42.         stbid[18] = '\0';( b' |% g; t$ D' W/ T5 J1 H- g

  43. 1 G* h9 l3 F- t' ^3 l; z
  44.         return 0;
    / u! j' X7 c) U7 d7 h, @9 y% [6 d3 ~
  45. }. u4 W; Q+ E, H' d
  46. & u" \( E# L- r2 u/ v7 p
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # P" Q. T- W) t* [
  48. {
    % m( S5 L! p/ a: G) T
  49.         int fd, ret;
    # ?2 V$ T6 n1 r& A+ S0 X) ]( l+ [9 ?
  50.         e2prom_s_cmd arg;$ q8 F, k: W: j! F# V
  51.         unsigned char buf[0x18];; ]+ N- ]% @& l" N

  52. 4 K) e& U8 @! J# J
  53.         memcpy(buf, mac, 6);. |! D7 B# ~+ D7 S8 n. S
  54.         memcpy(&buf[6], stbid, 18);4 |- W4 n5 J  P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 I( j5 z) \0 W8 _0 s
  56.         if (fd  < 0) {* f9 A1 F% X  {  R/ l& t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - N' O( p5 s$ D5 Z+ J
  58.                 return -1;. f, a5 Q+ e6 b8 [) I3 e% X
  59.         }! R$ L& s6 |; i
  60.         arg.sub_addr_count      = 2;
      r+ V! \( g- l3 B
  61.         arg.data_count          = 0x18;
      \8 q& z  o8 o- x
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 R) H6 d5 Z  @9 ]! O3 W  }! t; ]
  63.         arg.e2prom_cmd_data     = buf;. u4 Q& A$ T$ G' Y# ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' `/ u. e$ ^% _8 n/ w) h" U
  65.         if (ret != 0) {. ~  ^  n% _, e5 v( Q2 |( b, I1 j
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & D& Q& ~* k" P( Z6 e2 S
  67.                 return -1;
    ( c: c- F$ g8 A/ h
  68.         }
    - B; {, v- h0 k7 W: b

  69. ) _$ W1 q3 P& e6 a
  70.         return 0;
    1 m3 R2 q$ f3 Z* I
  71. }$ p, |5 l4 c1 o2 o( f  X4 B3 l( j
  72. . \- e# m# x5 x0 R, _7 U
  73. int main()4 z% z% y7 f$ J9 x0 y7 L
  74. {' I& u. |0 Q% ~
  75.         char c;7 L, c0 l* S  }1 d  L
  76.         int i, macs[6];
    & X3 t% H% C' d9 M0 H
  77.         unsigned char mac[6];
    . U- G# U7 r( |5 y; l
  78.         unsigned char stbid[256];
    / ?! |% w/ D2 V# D4 @1 x$ o

  79.   }7 {( k0 ^; v" u( l$ ^3 f% i1 g
  80.         if (readparam(mac, stbid) < 0)
    + p: c  B; T9 `2 x  k3 P) X+ s
  81.                 return 1;) J2 e+ J( x8 ~# G: N

  82. 6 Z- j! R" }' q; R, D+ W6 h: @
  83.         printf("Current parameters: \n");* O  P4 I; v, G! H2 _( o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 o3 ^# t! D# ^3 N& K
  85.         printf("  STBID: %s\n", stbid);0 `+ S/ }) W3 k1 M
  86.         2 y0 D$ m" }. o- \5 w9 ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ D9 L) L) Q1 [6 e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. i& p9 H3 {3 O! I
  89.                 printf("Input MAC error\n");5 T* S2 t. s/ G+ k' m' y2 N
  90.                 return 1;
    1 U6 l, n  C& U1 ]
  91.         }
    , C6 ]; G8 [1 e7 U5 v
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & o4 h! b- t+ e  F$ M8 ~
  93.         printf("\nPlease input new STBID: ");
    4 E5 C, ^0 z9 G7 ?
  94.         scanf("%s", stbid);. Z/ y: R& B6 n" h
  95.         if (strlen(stbid) != 18) {7 s. [7 V1 O; \. P4 H2 H9 ?
  96.                 printf("Invalid stbid\n");, t0 x( D, W8 L8 F7 ?
  97.                 return 1;
    4 P, t4 j2 R- j$ ^8 }  m' ^
  98.         }
    + f) T. x& T3 h+ C9 @
  99.         printf("\nNew parameters: \n");
    / S* b/ Q9 t2 u% y* A( _/ v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 ^- Y, d6 v' t' z: u
  101.         printf("  STBID: %s\n", stbid);
    5 M6 Q6 s! n$ D% O8 t. r+ Y

  102. 9 K  g! |0 d; }6 k
  103.         printf("\nDo you want to change paramemters? (y/N) ");; y4 P  ^3 W/ w* p7 _
  104.         for (;;) {
    + P& q  }' ^6 n) l2 h1 `
  105.                 c = getchar();# Q$ }" `; d/ |
  106.                 if (c == 'y' || c == 'Y')
    2 w, k: D" D3 }0 `2 k/ o
  107.                         break;
    9 N' V, i, L8 f& p% d! Z
  108.                 if (c == 'n' || c == 'N') {2 U& K. m& o; f( @
  109.                         printf("\nAborted.\n");
    7 {1 N( f2 d- B" R. V% [$ {' u( l
  110.                         return 1;
    . \" q+ n7 Z% y  p" ^
  111.                 }
    : b" M. M. j& `9 D  ]$ Z
  112.         }  O& K% |" x, S' x
  113.         if (writeparam(mac, stbid) == 0)
    , ], l% w% H; X5 n
  114.                 printf("Parameters changed.\n");
    . k# X0 J2 g8 q- C. g) }

  115. 3 f; X  \; Z/ D
  116.         return 0;
    ' y0 h5 {* l/ s$ l. H+ U% V( o9 U
  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
9 U( Y3 w1 U2 T. o, @+ }6 L在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 V( ]5 {  R% h5 U) e6 K你用的编译命令行格式是什么?
- n6 ^$ C0 X8 P6 F# T0 G
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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