查看: 16254|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* e  ~# ]$ ]: p6 H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : J6 p" J+ i2 z" f, }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 e5 R/ q" h6 s' a$ Pusage: himr <address> <value>. sample: himr 0x80040000 0x0
+ b1 `# R3 B* ]) K. P% }
& M% G0 e5 b; ]" V3 n" e- m! s8 T# d- C2 N
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 {: B2 d- o4 ?; j2 C" ?0 M

+ |- W" w5 D* e' a; x- _补充内容 (2012-3-8 09:42):
! E0 o- A) ?' D) _4 i% Vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% C: @# e: k4 Q) a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 |7 D0 a" @+ d# r2 |) g# [: X3 h$ n+ ^, |2 Z$ a
himr <address> <value>. sample: himr 0x80040000 0x0
' j9 j" E+ W: z- [: Z6 w3 W) Z# p. G2 Y2 s6 K( i% p& Z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) t6 M3 V0 m( I- g; h, z0 R
himr 0x80040000 0x00+ z( e) s- M  W) h6 `2 z
himr 0x80040001 0x11+ s* M; ]$ w2 `) z( d( Q
himr 0x80040002 0x220 J! x( z) K( A# A$ V8 u. b0 E
himr 0x80040003 0x33
! K! ?% \8 D0 C4 dhimr 0x80040004 0x44% t6 R3 @# \& `* f
himr 0x80040005 0x55, \' W, m0 d; R% e: O: x  M
/ f6 K6 R0 b! K* q: P
SN也是类似。
" L/ }* E" S1 ]7 [* ^, I0 ]' [& R" M2 m; e" Y1 s
现在主要是,谁告诉我们MAC和SN的地址?. E8 l5 v  c: ^
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 H& V5 j2 v* z一直想找到运程修改MAC和SN的办法,苦于无解啊

" V9 e. ~/ R6 h6 |8 @3 ?& `9 v1 p源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . J. }2 x0 z8 h1 Z9 D

; @1 [1 e) J4 X5 x# P1 [3 X; F  P修改的代码早有了。到今天不会编译。
0 I: ]. q$ p, Y9 |3 e& G. L需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: O0 ]7 u" y6 N) l8 n# G
  2. #include <malloc.h>, I( J7 [( [- @! }; M
  3. #include <sys/types.h>" F! D4 ~- j: {% [0 Q4 t
  4. #include <sys/stat.h>% y3 u( ?& ?( _: |! S
  5. #include <sys/ioctl.h>
    2 x% k3 V9 S' G/ T1 L
  6. #include <stdio.h>8 Q0 c" I  e- t9 |5 p% F3 \
  7. #include <string.h>1 M# r4 q$ W4 e+ ]: L' _, `

  8. % s' S! o8 |3 X- E4 z
  9. typedef struct {8 u: h# O. Y0 E* _3 w
  10.         unsigned int        e2prom_cmd_sub_addr;7 `$ i' T+ n1 x# N- Q" D* P& b" p
  11.         unsigned int        sub_addr_count;1 ]8 [; Z- G0 q* n% F2 g& g
  12.         unsigned char*        e2prom_cmd_data;8 G2 X0 y5 q  w" m. }0 |
  13.         unsigned int        data_count;
    0 X4 j* u' A4 {- \3 U+ t
  14. } e2prom_s_cmd;: E) p/ c. m3 s

  15. 6 v% L( G$ e. B! s! ~: z
  16. #define E2PROM_CMD_READ 1- Q7 v& B: j& |0 N8 z" H
  17. #define E2PROM_CMD_WRITE 2
    ( ?" H5 m4 a2 {$ T- H. g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ n3 {: Q" l; U, a

  19. ' g6 B# F7 E1 T
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " k) G( H5 G( t( Z
  21. {8 U2 H% y+ Y% E0 ^5 `# t# E
  22.         int fd, ret;" d+ R, P% P( Y9 z1 E! a
  23.         e2prom_s_cmd arg;' ~# Q# q& t3 `1 T% D
  24.         unsigned char buf[0x18];1 W' S! ]" b+ l1 U1 @( i
  25. 5 p- s" V6 j& v4 h, s- ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 R" r' C; l$ m
  27.         if (fd  < 0) {
    ) g& Y' F1 I) E8 d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , m; M+ I$ |& h. B
  29.                 return -1;
    7 Z5 B" ^7 g6 J
  30.         }
    # p9 \+ m, e0 K; f' v/ g  L9 R
  31.         arg.sub_addr_count      = 2;
    * C) \4 z0 G* b+ `5 m
  32.         arg.data_count          = 0x18;7 S  I- x1 [5 B
  33.         arg.e2prom_cmd_sub_addr = 0x290;* `! @+ Y2 g) E1 _( L' ?: ?4 ~9 ^
  34.         arg.e2prom_cmd_data     = buf;
    & T" L2 [% D6 C: Z/ [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      V1 D5 _7 X  \$ y0 q
  36.         if (ret != 0) {/ b" j; t' y/ C1 Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  j* B; d( _6 \( `' k
  38.                 return -1;
    0 M/ ]/ z1 {+ i/ H
  39.         }
    / X2 d4 T7 E, \8 d1 @3 J
  40.         memcpy(mac, buf, 6);
    ( |0 f  s" k! G& k! j
  41.         memcpy(stbid, &buf[6], 18);, b2 w" r5 ]- l, o
  42.         stbid[18] = '\0';% E, t( u3 q; `5 l+ M; R/ y; [
  43. , Z1 ?0 c5 k8 l
  44.         return 0;7 T* ]* F% f* \: ?/ [) y
  45. }6 V2 x# l8 e0 J

  46. ) B3 \( b5 K. Z9 {; r  ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * C  V  D+ o. c5 x  @
  48. {
    - V# W0 ~9 F4 `* d: H$ \6 `" C7 t
  49.         int fd, ret;
    0 p8 n$ U$ F: z
  50.         e2prom_s_cmd arg;  i* i5 m3 b4 J  [/ L* q) u- ^
  51.         unsigned char buf[0x18];
    * ]4 F2 H+ e: ?7 U2 B$ k

  52. 7 j' }! G, _% T
  53.         memcpy(buf, mac, 6);5 t4 r" m- J+ [. Z+ B: L0 W4 v
  54.         memcpy(&buf[6], stbid, 18);" L0 h; P, l# a; X1 a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) o% g) l* Z( ?2 u
  56.         if (fd  < 0) {
    8 j3 C( B4 r) C- r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# L( x; p; S0 r( Q  P
  58.                 return -1;
    : b9 W3 @2 ]4 j1 ^+ O, m$ h1 H& u+ \
  59.         }
    ( S% `0 D6 v( H! X
  60.         arg.sub_addr_count      = 2;6 J- B% q% R. O
  61.         arg.data_count          = 0x18;; K% X( D& Z% {# `& Z: a+ p8 u
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 M/ n' v6 P) W# `. [+ [4 Z2 w* U
  63.         arg.e2prom_cmd_data     = buf;( a7 T5 h, o8 Z/ K* @* {) T# b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- Y3 K5 f* v0 k$ F+ \
  65.         if (ret != 0) {" h& _2 h. q$ f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% k* r, ~0 i& C/ X1 Q, Z/ D3 ~
  67.                 return -1;
    $ c7 H2 c4 N' G7 _+ R
  68.         }( L/ x' v- C1 c4 f
  69. / y9 q' }8 y- A9 p0 f& s: h
  70.         return 0;  c$ [* f& L# t' e; T9 p! L, ^
  71. }
    ' c4 s& g: x7 ]6 A

  72. 3 C& a+ v$ B" d; J; ]5 k
  73. int main()
    - w. Z+ T; m6 Z" z' b0 k" k8 \
  74. {
    ) Z& u; F8 P# o; |1 N
  75.         char c;
    ( c- \1 D. W8 ~% o5 G  j  p  `
  76.         int i, macs[6];2 r  ?6 @1 Z: w* I  x, P
  77.         unsigned char mac[6];
    % U# V/ V  J( u; [1 [
  78.         unsigned char stbid[256];  F5 p! f" f. f# L0 V, z: f& d) X9 O

  79. 0 g/ {+ B8 j  g( ]
  80.         if (readparam(mac, stbid) < 0)
    : z6 D  j3 B+ m
  81.                 return 1;
    2 ~. J( C1 e! G$ i
  82. 7 o" @6 Z8 l/ Q/ `4 d
  83.         printf("Current parameters: \n");7 f3 l2 M2 Q6 O, {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 y% U+ Y1 X' Z* Q
  85.         printf("  STBID: %s\n", stbid);
    8 h2 X- W* t2 l& |2 \
  86.         ; Z. ?. ?0 b- V) P) V8 N/ l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 q" Y0 e9 P  L1 z$ h' ^" g( B
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % {! b. R! W) R4 f4 H
  89.                 printf("Input MAC error\n");
    % v) i' C! Z  }: ^; Y0 u0 R
  90.                 return 1;6 ]0 t: S/ c; P! Q
  91.         }
      A3 n5 L# W! W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 A  L8 P0 X- }, Z$ z) B8 e4 b# t3 W
  93.         printf("\nPlease input new STBID: ");1 `( T( X% B, j. s
  94.         scanf("%s", stbid);
    # \, j$ s" V6 g. R; g$ y1 K
  95.         if (strlen(stbid) != 18) {& I. a# |! p% D  D# C+ U/ S0 k( P
  96.                 printf("Invalid stbid\n");
    & P/ ?" E+ A$ g: |+ a7 ~
  97.                 return 1;' B( Z7 `1 R: y/ u, _, D( r
  98.         }
    9 i; D* r9 B5 b1 M  o7 {9 C
  99.         printf("\nNew parameters: \n");
    0 N( o5 R  B/ q" X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% Z7 y8 l( j6 `
  101.         printf("  STBID: %s\n", stbid);
    6 `+ W  j0 E" o2 y. w; T

  102.   P/ s& k. {( V5 b" m: b
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' a1 ]% g& g  l+ v
  104.         for (;;) {5 R3 A' Q* t* v" R9 q
  105.                 c = getchar();
    - w, y. h6 V# z" H/ h
  106.                 if (c == 'y' || c == 'Y')
      d& H) W' _4 [/ o8 o) {$ n
  107.                         break;
    . k$ O' }0 F9 u9 C' I2 O9 |
  108.                 if (c == 'n' || c == 'N') {
    ; W* x: E( J, v0 Y+ d7 R9 E. l
  109.                         printf("\nAborted.\n");
    % B7 m* N6 e: |  w) F
  110.                         return 1;
    7 W+ Q3 K# |/ Q5 N. d6 j! T
  111.                 }
    / p: D) I+ l- S1 k* W+ m/ Q
  112.         }  w- E( O' V$ S9 O
  113.         if (writeparam(mac, stbid) == 0)
    3 ?  v& e# `6 I9 K, k
  114.                 printf("Parameters changed.\n");1 v& E3 [5 ?# j/ d! P- a( T

  115. ! t: Q' `4 Y7 v8 ]3 P3 _: C
  116.         return 0;
    % m* `# V. s, f" p: G; }" d
  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 c; \6 ?: k9 P# w2 L在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# A+ y3 B5 W: W: B# V你用的编译命令行格式是什么?
! r# J0 N; _# h" \# T
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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