查看: 17719|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) d( j3 l* t6 X7 \$ o' k- y' \$ x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  U  {  L" p8 L) _. d* B( ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: Y: F! s) |; L$ t
usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 H& r2 O  n' c$ |( A" u/ R2 m- z; _

7 L; E( G( n8 k) H不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: ?! @: {7 Q$ X$ s& L3 V" Z
* {4 }' W2 q# a  q; P1 D% g  Q补充内容 (2012-3-8 09:42):' \! R# R$ G( X( j: J
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. V1 [; G9 m, a8 }3 X6 a
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。8 J, Z' X" K/ ^" Y8 ~4 x, o' ~* q

& R7 v7 s2 ?- ~) ohimr <address> <value>. sample: himr 0x80040000 0x0
3 W$ ^% L, ^9 [4 \. ~1 V
3 V: |' \$ J0 V& y: T; [( b2 y例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) C5 @/ N7 F4 o9 S' U: dhimr 0x80040000 0x00& Q/ X4 s$ z# ~
himr 0x80040001 0x11# p# ~/ d. q$ S1 j$ E, q' A3 u
himr 0x80040002 0x22
: A  E2 ?. ~$ @) d* y5 P- vhimr 0x80040003 0x33
* \" b/ \# T2 nhimr 0x80040004 0x44' g+ a  v+ K8 H/ M" j5 `, |
himr 0x80040005 0x55* Z0 V2 \7 J  J7 L. O5 h

8 ?2 K2 w9 d- c: S% m, l8 mSN也是类似。
1 `+ l. j) T  f" Y6 \; B# P
; I! i# Y5 w: |+ k7 @! [- I# A! V现在主要是,谁告诉我们MAC和SN的地址?! e1 u/ \2 f5 u' n+ S  j+ @- L' i8 Y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - i& E! a  L5 _/ f( J( V: J
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 C3 ?6 Q" M* q9 c  P/ |/ s
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" u0 o7 _; R* ?3 I! }" k* P" l" V/ P0 z
修改的代码早有了。到今天不会编译。: h5 T; ?1 d( I; W
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: b) l; \$ v) W
  2. #include <malloc.h>& }/ t6 B3 T& C( e, ^
  3. #include <sys/types.h>
    1 {  h0 T, u) u. J# p
  4. #include <sys/stat.h>
      n8 z* C& ]! Y. T  Z7 @5 g
  5. #include <sys/ioctl.h>' \7 G" |& S' m5 d
  6. #include <stdio.h>3 k2 A- b; ]0 |0 v5 w8 X" O, y
  7. #include <string.h>
    & ], J3 O" [. E, {# ?+ p+ g
  8. 6 P  E+ U& D$ a* @, {; p
  9. typedef struct {2 d# w! P4 w& ~9 ~$ m; l$ l! t
  10.         unsigned int        e2prom_cmd_sub_addr;: {; N/ N+ I8 y, I1 H+ Z( F
  11.         unsigned int        sub_addr_count;: w$ m9 _5 D8 j' `8 U4 e) H
  12.         unsigned char*        e2prom_cmd_data;& x3 Q5 y4 y7 q0 ~+ H- L4 t
  13.         unsigned int        data_count;
    ! L3 `! @& [! `, z) r* j
  14. } e2prom_s_cmd;
    # ^, Y& S% O) ]/ f! R

  15. # m# R4 |( [$ e* I
  16. #define E2PROM_CMD_READ 1
    . h$ Y8 I0 I- B9 g# r2 j, [( T# z
  17. #define E2PROM_CMD_WRITE 2
    5 U% y; D0 D3 _0 Q: t8 g# |" i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 b& z$ {* W% W0 ^4 A* v

  19. % i0 D4 ]  P2 c
  20. static int readparam(unsigned char *mac, unsigned char *stbid): {4 W! F4 j4 y% `
  21. {
    + ?- X8 d" C) y4 @8 ?
  22.         int fd, ret;
    ' V) q: Z) P0 R/ z
  23.         e2prom_s_cmd arg;
    0 z* |" H' q2 F. l
  24.         unsigned char buf[0x18];) S9 C. B7 b6 f7 C
  25. 8 Z. d) g, o( J! \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , z$ u/ s9 W+ u4 V
  27.         if (fd  < 0) {
    0 r3 P/ {6 X8 B: R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  z( \) m& H8 f0 w/ Z3 g
  29.                 return -1;
    / Y. v* V3 f1 l6 o
  30.         }9 R: g5 i" l: c- `' G4 m0 z
  31.         arg.sub_addr_count      = 2;
    % Z3 c: {/ }2 W
  32.         arg.data_count          = 0x18;! q) I( V! I! G2 Y  c/ c* C3 a7 B
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ K/ ]3 t4 }4 z: ?7 r
  34.         arg.e2prom_cmd_data     = buf;5 N1 ]8 P- r( d) R6 F/ R1 o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      Y+ i- x/ P8 `) ?0 ^( D
  36.         if (ret != 0) {
    3 h( {' v% c( H! y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, S$ ^& i$ q, ]& @4 d
  38.                 return -1;
    1 x* \6 `) i5 w: t. _2 ~
  39.         }
    % G7 F5 I& M- \4 b9 k# y
  40.         memcpy(mac, buf, 6);, n/ O* a4 J! Y4 H
  41.         memcpy(stbid, &buf[6], 18);3 u# Q$ e5 \" @/ f6 y9 I
  42.         stbid[18] = '\0';; M, R9 y7 n" x' i' n) d. \
  43. # H) ]" }" R: S5 v8 Y# g/ V
  44.         return 0;* Q# j( I, c5 G
  45. }
    2 |) i4 M! I. i. Y9 {# Q; _: H
  46. ! J& {# G7 z  {  T  j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 A) S0 r) V4 r5 y
  48. {) R; i( K. F! R0 K
  49.         int fd, ret;
    6 Z5 {) V- _7 G/ k  R# X& T
  50.         e2prom_s_cmd arg;* L) {8 H, N+ P% z/ U$ a& L4 }
  51.         unsigned char buf[0x18];) B! e/ h4 q" w

  52. ' Y- w9 z) R# C( [+ B
  53.         memcpy(buf, mac, 6);
    3 d; n5 U1 r0 u
  54.         memcpy(&buf[6], stbid, 18);
    1 F' {" O% S: j" O
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 k/ F: {) g! C5 t& a7 J- {: }
  56.         if (fd  < 0) {& k3 {/ l6 u, U; F2 h# a( ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ B& A3 M; j" v: L. P
  58.                 return -1;0 G, b. s) B+ p2 a7 @! Z
  59.         }
    1 D$ d! _5 g( z2 |. A
  60.         arg.sub_addr_count      = 2;8 m, N+ }" f" @/ o
  61.         arg.data_count          = 0x18;
    - f# n* f- h* I3 j8 R
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' U% N8 ^9 Y2 U) i  e
  63.         arg.e2prom_cmd_data     = buf;0 C; Q3 v6 g3 J3 M  k( M6 b# v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 w" }* ~+ }* v3 t
  65.         if (ret != 0) {
    3 G5 g. l( k" Y; G+ R3 W& S4 v
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * O/ B3 I* m; x' {1 _0 r# e7 r1 q
  67.                 return -1;
    5 W- t- m% r3 T. s
  68.         }2 e6 x, m! K  M% Q. A
  69. ( P: p' \& i! Q: d' b2 @( K
  70.         return 0;2 e2 W& r+ u7 A2 }* _
  71. }
    / v* n5 h& w  [& m& c0 B9 S! W

  72. , r6 i# S6 k( v
  73. int main(). L* A) M' x$ M& x6 m- z* d
  74. {( L! }  f! W7 ^( n. S- a3 p6 w& K
  75.         char c;
    9 m1 O$ W1 M5 u) J" v4 U& I
  76.         int i, macs[6];
    7 @' \8 `9 S, P* E- A- X; Z
  77.         unsigned char mac[6];0 {$ m  S/ s( m5 u. |1 Q0 L
  78.         unsigned char stbid[256];  c$ ]8 b  x1 J1 l

  79. ( q. I; R! L3 C' J/ S% W' Y
  80.         if (readparam(mac, stbid) < 0)- o% u' D* V1 b2 C
  81.                 return 1;: w( m) m( f$ l, V: w
  82. 1 N2 j3 T2 }. G: u: a: H
  83.         printf("Current parameters: \n");2 t' j' O7 D1 j; c* i% C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: ~7 o. T9 `% a/ _; n) Y
  85.         printf("  STBID: %s\n", stbid);1 Y3 h# E, C. i2 s7 ^) F' f
  86.           Q0 d0 m/ H* s$ `3 F" c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 m% [( Y. b) [1 K* c( S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 Q/ N1 I! ~" C) b& S
  89.                 printf("Input MAC error\n");
    0 G# J/ I/ w  B0 Z6 y$ I$ J  n
  90.                 return 1;  B$ M+ b% V9 D0 E4 P7 a  ^4 f
  91.         }3 s! C+ c# Y7 `( R, E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    / L4 I, C# U2 e7 o7 [* V0 A
  93.         printf("\nPlease input new STBID: ");
    " M" ]8 i- y( p. K+ Q
  94.         scanf("%s", stbid);1 s% I) f7 E* A4 }& W4 W
  95.         if (strlen(stbid) != 18) {" A4 [+ O7 d% ]) z3 [
  96.                 printf("Invalid stbid\n");
    ) F4 _: M% Y$ r; v
  97.                 return 1;8 z+ @9 b* t+ j7 h' G9 ~
  98.         }) J0 X- ~1 n1 C5 k+ H- l
  99.         printf("\nNew parameters: \n");
    - V8 \5 z" G' @0 [' s. r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 _( p% C( B* i
  101.         printf("  STBID: %s\n", stbid);% M# Q  [# b6 b
  102. # F: e0 A! d, U; \
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      C# h  U! H' E8 U; E. I: {
  104.         for (;;) {$ \( _- l- c2 F. q, [( P
  105.                 c = getchar();
    $ W) C* K& Q) H1 U% c) {/ }
  106.                 if (c == 'y' || c == 'Y')
    7 }6 x2 r3 m7 L% y4 y
  107.                         break;
    / i4 M6 S6 O5 {
  108.                 if (c == 'n' || c == 'N') {4 c* G! a$ M% `% ^3 O7 k
  109.                         printf("\nAborted.\n");3 X$ i( S: n/ L2 A5 w0 O/ V
  110.                         return 1;
      h2 i7 B( O6 L8 G- H+ M& X* t
  111.                 }
    # j# r2 O7 S1 |+ a! H7 |( K
  112.         }
    0 c4 ^/ c) _2 \) X7 Z
  113.         if (writeparam(mac, stbid) == 0) ; t9 q# S7 C1 ]
  114.                 printf("Parameters changed.\n");5 B4 K8 h+ ?4 g; Q8 k( G

  115. * a6 N* m6 U" d& [
  116.         return 0;" ]+ D; A) J# p6 b3 L
  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 2 [8 f& ?# a3 U2 M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; E( [5 W  Q9 Q你用的编译命令行格式是什么?# R6 C, K4 c% \4 w: ~; {
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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