查看: 16731|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" U# @% W9 A* n) |- \% E( M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 }' l! b8 `; K9 i* F% r9 C' q7 b
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: S# H+ |& [( s
usage: himr <address> <value>. sample: himr 0x80040000 0x0/ U* w. S- m& C! a1 j! M5 W

* h: Q8 [+ u$ R( R
5 A4 v9 h/ }6 b2 m! C不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# B; D1 t9 g8 r2 X3 d
. T6 l# U4 F8 S+ P) U2 _! \, `
补充内容 (2012-3-8 09:42):# R" K: D& P+ Q3 e
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; f2 V* P7 t( Q
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。) W. N7 b( |8 Z0 ~" C) V
5 T. t- ~3 ^1 \& K& Z* m
himr <address> <value>. sample: himr 0x80040000 0x0
9 t6 l* O& r0 @& Q
6 V/ k  d% u$ Y; j% k7 j9 K2 v$ M例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。/ W' N3 p  o4 X9 Y! x* |# B
himr 0x80040000 0x00+ \: v' m& f# p& n+ c" G" s
himr 0x80040001 0x116 q/ H5 w' i/ Q% @
himr 0x80040002 0x22
" |" o. E. O+ Vhimr 0x80040003 0x33
. Y- h9 a% \/ b% p% Dhimr 0x80040004 0x44
+ w  l* k3 r. }5 X, [himr 0x80040005 0x55+ e. x# @6 r+ v$ v. q4 M% v
: f( u. F/ E2 P- s2 Z+ b
SN也是类似。9 E' G4 }; i6 g$ m
" Z; Q* c: m1 R# ?3 U4 C
现在主要是,谁告诉我们MAC和SN的地址?4 F+ ]& m& U( m
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- ?% f$ R4 e  \9 E. B, K. B+ e9 D一直想找到运程修改MAC和SN的办法,苦于无解啊
& N  V' u9 z1 P9 X, }
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: g: y/ V6 J9 P7 Z6 |+ m5 v4 A: o
7 A0 h) [( }8 L- F. _# p修改的代码早有了。到今天不会编译。
  p, X& J' g  e" q  `) [3 ~需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 m; U& t/ C$ s7 z4 W4 ^# K9 O0 h
  2. #include <malloc.h>2 j; ?$ ?( n6 D6 Q9 O
  3. #include <sys/types.h>
    9 \; @, v' J  q2 B
  4. #include <sys/stat.h>
    & @. s, I2 J! o" i- D
  5. #include <sys/ioctl.h>
    " g2 n3 _; g# K- X+ ]# z
  6. #include <stdio.h>% d$ {7 w5 K3 y- w! R
  7. #include <string.h>/ _2 _4 K  T3 ~4 c/ M

  8. ' ~3 z! T( U1 E
  9. typedef struct {
    3 A# Y; N) n6 F/ F0 y2 F" Q+ ?% D
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 L$ ]- _2 N! s& M
  11.         unsigned int        sub_addr_count;# J' j: `7 Q+ ^8 F- L
  12.         unsigned char*        e2prom_cmd_data;
    1 Q$ X: z, X8 h# `4 D' `
  13.         unsigned int        data_count;
    . G0 _. T9 V2 }7 l6 d2 M
  14. } e2prom_s_cmd;# T# c% j3 Y; @: d% q
  15. , E" Y' I1 L) N, J* |
  16. #define E2PROM_CMD_READ 1
    * h1 T# K3 n( f
  17. #define E2PROM_CMD_WRITE 2
    ) T9 c6 X: F$ @& B( G- F+ M* c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 o/ X. u! V: N5 }3 \7 I) V

  19. - J1 _$ k! F7 h- l" D) F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# o: a. _1 g. O- V& }, b
  21. {4 Z; y0 ?& o2 d
  22.         int fd, ret;9 m+ @. h# i8 i0 Z
  23.         e2prom_s_cmd arg;, X+ a' d7 W8 j! a
  24.         unsigned char buf[0x18];
      x7 Q& Z( ~9 K
  25. $ k# \  x* T( p( x* \# N2 ^; W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . ^0 g, i: W2 p! t6 h* W& l
  27.         if (fd  < 0) {
    9 \: Z; [/ M: o' k6 }  Q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 H) F7 c, }, G/ K- o7 Z$ y* _
  29.                 return -1;
      y3 M5 U0 y" ^8 }0 C( L& g- }
  30.         }7 K# ?- o% }" g/ f
  31.         arg.sub_addr_count      = 2;3 l- J* O7 I. Q$ c
  32.         arg.data_count          = 0x18;! M8 h( n' u$ r. v
  33.         arg.e2prom_cmd_sub_addr = 0x290;- m6 m/ ~3 v  e( M  X
  34.         arg.e2prom_cmd_data     = buf;* q; R0 Z* m  m# y4 N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % p( D4 h) `& W/ U$ o% m) X/ ?
  36.         if (ret != 0) {; T( d7 U4 q; ^1 Y6 |
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; }& g8 O1 i& {8 l
  38.                 return -1;
    % Q0 L; D  {( f( D. e7 R8 H
  39.         }
    ' J+ F1 X0 f$ G( l7 E) B
  40.         memcpy(mac, buf, 6);
    : a, r9 q. D+ L7 C8 I/ ^& |
  41.         memcpy(stbid, &buf[6], 18);  F) N' u' y2 |* ]" N) Y# F
  42.         stbid[18] = '\0';- [. N. l) u; J1 _3 |/ i) g
  43. ( k7 o' e6 H3 l" n0 M
  44.         return 0;+ M, y0 L0 [  q1 x6 q0 G# d0 V: n
  45. }+ F' i: d+ E3 R1 \" s+ e' m

  46. 9 W: Q& A. R* L. s, Y# x0 O) B& ]9 R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% b& Z- X1 p# Y
  48. {
    + Y* b" n# z! X
  49.         int fd, ret;
    ; ]- [5 }3 [# d1 U3 Y
  50.         e2prom_s_cmd arg;" J/ K0 T5 O4 A3 |
  51.         unsigned char buf[0x18];
    3 F  j+ h; r8 z" `/ A# _

  52. % _, ?7 M+ J- w9 d# w+ Z- i) Z7 L
  53.         memcpy(buf, mac, 6);
    , J% ^( M; a! X& k- U# ?
  54.         memcpy(&buf[6], stbid, 18);! b- [' Z+ g$ Y3 `$ w( y" H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " n" d  m$ m' Q4 U! J
  56.         if (fd  < 0) {7 _6 G6 W0 q% u9 D6 k+ ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ c  o$ T" m: B* b
  58.                 return -1;
    1 i( E- g8 z% n/ D, m
  59.         }" I+ k; F" c% w; e. t4 @+ n
  60.         arg.sub_addr_count      = 2;
    # ^" p. R  r: f% D9 s/ W7 z2 N# W
  61.         arg.data_count          = 0x18;) N" d; D. i  ?1 e
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ t: {; t, q/ E+ l5 U* H; |
  63.         arg.e2prom_cmd_data     = buf;6 a. a% z6 `% d7 a& H
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 f' F* S# H( k, V# _: v0 {& H+ [
  65.         if (ret != 0) {) }5 S( E8 S5 k  N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) ~2 `0 I# e4 ?
  67.                 return -1;. Y/ R# Z6 d4 V. }
  68.         }, R& w$ M* m; y4 c" o% c1 ]6 t5 u
  69. 3 x/ Q7 h5 l" q0 o, j
  70.         return 0;6 p" v3 O- ^) q8 Q  Q4 q5 d
  71. }
    1 a  B4 H8 w4 k7 v7 T* _6 D+ I
  72. 5 g4 }4 i/ V) X1 P
  73. int main()
      h* F6 D1 A, D: b2 o2 y2 Y
  74. {
    & w0 W( \; K9 b1 ?5 w; F# }" g
  75.         char c;" |: ]4 E' `- A( n+ i3 \" _  ?& K
  76.         int i, macs[6];- ~: t% E" J6 H2 g+ K: k
  77.         unsigned char mac[6];3 w  S3 N6 m# H1 N9 m3 H
  78.         unsigned char stbid[256];8 @8 [! ~1 e* w2 @" T- r5 k7 Z

  79. ( x7 Z' N: d0 P
  80.         if (readparam(mac, stbid) < 0)
    6 P) q& \: P: g2 M7 \3 ^
  81.                 return 1;7 Q3 q* N0 l0 r
  82. $ U5 {- ^* `4 _$ k' r. L/ e
  83.         printf("Current parameters: \n");
    ' e3 ?& g/ U6 S8 x, E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 C8 Z1 |0 j4 E' A+ L
  85.         printf("  STBID: %s\n", stbid);0 J% r; }2 ~1 Y
  86.        
    + D" M1 _+ w" F% O1 B8 g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 k# a) [0 ?2 A( B* _5 l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 d/ ~% U" \" w1 j  G2 f9 i
  89.                 printf("Input MAC error\n");
    4 ^2 J7 e4 V) G
  90.                 return 1;" {+ q: g) M" ]& k" U, n
  91.         }
    " M9 s5 z2 z) E; ~  M8 u1 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( y, c3 e0 z, f5 \" r" p0 J
  93.         printf("\nPlease input new STBID: ");
    0 D( H( E, `: N1 w  ~
  94.         scanf("%s", stbid);
    ; v" Y# U. k  ~/ E. I$ H2 b
  95.         if (strlen(stbid) != 18) {
    5 Y( U" u$ w$ R, x2 o! ^. d& z$ i
  96.                 printf("Invalid stbid\n");
    7 l! l9 }& N: ~3 S% P+ o* ]1 t# h' w
  97.                 return 1;
    0 z' H* P4 \1 ~0 _1 q# J
  98.         }" L. O1 w  z( ]
  99.         printf("\nNew parameters: \n");
    9 K  D# V$ `' T" Q& y. `/ N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 d3 ~) s3 Y% ?- U. o- I1 |  @
  101.         printf("  STBID: %s\n", stbid);
    * f  q# t. k1 F# d6 A

  102. 0 O# \, D2 {5 a/ G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      u. l9 D% S1 q" G' [! O/ P
  104.         for (;;) {6 u$ J' }7 V% M* x% B& V
  105.                 c = getchar();4 h' `2 F2 F* {2 Y0 i, |" {' p: b) z. E
  106.                 if (c == 'y' || c == 'Y')) ?4 M, O4 B1 j
  107.                         break;
    ( D& E/ f7 [% H6 G& K
  108.                 if (c == 'n' || c == 'N') {$ g& b5 _. f/ Z) D! c
  109.                         printf("\nAborted.\n");# J3 D- k: U' ^
  110.                         return 1;* u) y: p: {- E" q6 g2 u" N
  111.                 }* d: V' Q+ {9 l: y( F3 l
  112.         }  ]  I& t) F, B- n1 r. _
  113.         if (writeparam(mac, stbid) == 0)
    7 C2 L4 d6 H/ `& p
  114.                 printf("Parameters changed.\n");: a2 _3 ^  P+ P' K+ V0 M: X% _

  115. ) O+ |, z; f5 e6 _, x: q3 ~3 |
  116.         return 0;" s$ ^8 T3 M7 t+ O( p$ t8 S! j" H
  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
' b- C3 f1 G- g( J5 ?  @8 P在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 m- c- E: U# ?$ _/ X你用的编译命令行格式是什么?$ X+ i: N4 R+ S% j
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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