查看: 17475|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 U7 x' a: E# M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # j0 r9 \& |! ^" K8 A* J7 B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. M: B) a- O$ musage: himr <address> <value>. sample: himr 0x80040000 0x0
: w8 D3 C. x4 l3 Y& k% x8 c, }* E: Z8 S2 D- ^2 H1 ]$ o! }3 ?

! y+ Z5 x) o! |; h7 D不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" j/ b" z# ^0 w! h4 ~1 m0 v& R

8 {" F) ~$ j5 {( T9 S0 ]/ l! {补充内容 (2012-3-8 09:42):
9 U, O/ x4 R: }http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* a% z  G' P5 A- C: s. z6 b; H
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
9 Z$ X. N- Q4 q3 R1 c5 Z9 O% h! y$ f/ @( J
himr <address> <value>. sample: himr 0x80040000 0x04 d6 W! Y$ J& }3 U; U2 b5 x
: Q5 U9 Z  h7 e; d9 H0 X) K
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& u9 ~2 \9 f$ G6 `( Phimr 0x80040000 0x00
+ i0 A, N4 H, y: m* C* ~& zhimr 0x80040001 0x11
3 b  @* L. w8 w/ h% _himr 0x80040002 0x22; }7 Y4 D; r$ q1 o' X
himr 0x80040003 0x33& m2 [3 r% \# D/ P$ y% b( W
himr 0x80040004 0x44
+ D7 q( `7 R$ v4 l' C7 G8 Hhimr 0x80040005 0x55; F+ y4 S+ x  \3 D* w* `# G$ I

$ r* h; m) t0 @0 w: PSN也是类似。
# b9 y: w. G7 |8 r2 ~5 m! V. K
. V  I, u' b6 _0 n1 R  s' k( Y现在主要是,谁告诉我们MAC和SN的地址?9 f1 k/ R# ~$ Y; Y3 i
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 e5 [) Z' S+ _2 O5 P一直想找到运程修改MAC和SN的办法,苦于无解啊

* p. W$ V2 k6 S源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / v! w+ s- v5 @3 g0 I1 c. O

* V& n0 U) {9 q修改的代码早有了。到今天不会编译。! j$ C) `4 `7 C+ f
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" i9 J) O; ]! J
  2. #include <malloc.h>
    + V+ f, ~% S$ C% u$ C% K
  3. #include <sys/types.h>
    . H6 ?  r# ~" c# {$ j% h; x0 N0 i5 L: r9 d
  4. #include <sys/stat.h>& j$ z# W1 m! w; w" W) J& r; |; ]
  5. #include <sys/ioctl.h>
    ; A3 M& Y" U8 W  j% F! M
  6. #include <stdio.h>
    ' b3 Y* H* l; [* H1 ^; K# ^. j
  7. #include <string.h>
    ' f- p$ N2 T% ~1 p+ P

  8. % @" k' |% W9 R' U
  9. typedef struct {4 U+ }/ K9 P! @, X) i8 Z3 j
  10.         unsigned int        e2prom_cmd_sub_addr;+ }. U* B) o* B3 w" z! s) V
  11.         unsigned int        sub_addr_count;
    ( Z! k1 @. X+ V- f( a- c* Y
  12.         unsigned char*        e2prom_cmd_data;! X9 q- Y# E) q9 ~, P
  13.         unsigned int        data_count;$ \  s- W) }. a
  14. } e2prom_s_cmd;: f) O* w( f' I) u
  15. , s7 ^# L* u$ A% S- T2 z# @' X
  16. #define E2PROM_CMD_READ 1, S2 @5 s9 I' }5 e
  17. #define E2PROM_CMD_WRITE 2  W6 ]+ M/ G) v2 M: A
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' U: t/ r- C1 `3 ?% e; i8 O
  19. 7 Z; _- _; a3 n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( v& _$ `& D; w6 m5 U- L
  21. {
    9 |0 F% d$ k/ [* N
  22.         int fd, ret;
    " G2 E( s# @; R
  23.         e2prom_s_cmd arg;9 S$ S1 _* [( c
  24.         unsigned char buf[0x18];8 ], D/ O- {9 k, i7 }
  25. ! ]5 W  I1 }$ T/ o6 e1 z8 ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; B# Q- U1 x. F0 R$ T/ \- @5 _6 `; M
  27.         if (fd  < 0) {
    % U/ R4 q2 V$ c. E9 i! P. i; w! ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ Z3 b4 V" [) z3 E* v
  29.                 return -1;+ A/ }2 [+ c/ X# i. t( G
  30.         }8 [! F0 X3 E/ s* e
  31.         arg.sub_addr_count      = 2;
    ( H/ L* M5 I% `) `
  32.         arg.data_count          = 0x18;
    ! h- B3 {/ S: Y$ p1 w4 c
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & T. I0 o! X( ?2 z
  34.         arg.e2prom_cmd_data     = buf;
    2 J5 v4 M! }8 k, S& B; f! R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);" }5 d- m1 r- N6 B
  36.         if (ret != 0) {% P' z# M' T$ S! s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ m3 ^$ t; x0 G. u
  38.                 return -1;
    $ t2 N4 I1 _1 h2 s- M! w
  39.         }
    " j0 j7 V# q3 ^
  40.         memcpy(mac, buf, 6);
    6 o7 \3 W7 l4 I9 `* b5 D
  41.         memcpy(stbid, &buf[6], 18);
    : a7 D; M! k1 v! g$ h+ ^/ N
  42.         stbid[18] = '\0';6 G9 ^! s/ |4 v; q3 [. k
  43. # \3 z6 z+ @9 G% S
  44.         return 0;
    0 P8 L* O* J' g/ k/ x0 n8 {/ i/ e
  45. }
    + m: Z  j) H8 C

  46. 8 I3 u4 T3 g) W4 G- o
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # I! x" ?1 O( c5 n% Q' d& w
  48. {! ]% K& c, c# C( Q
  49.         int fd, ret;) Y! v# ]* o. ^0 X& p
  50.         e2prom_s_cmd arg;0 H  _1 n0 [6 @+ p9 E
  51.         unsigned char buf[0x18];
    ( f# q% l4 F% A7 v

  52. ( q$ Q$ i' Y$ U
  53.         memcpy(buf, mac, 6);; J5 S2 d* m+ o. g/ |* j  H
  54.         memcpy(&buf[6], stbid, 18);
    ( q9 k" l; q. j4 L/ v
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 x' w5 `! F/ ]0 p, a. ~. F
  56.         if (fd  < 0) {
    " {# w" F; [8 H2 e. F, ?$ x+ k0 K  i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& s; Q: F/ m& ^2 `6 q
  58.                 return -1;
    - d* C) D  T! \+ B+ I
  59.         }
    ; H( {2 W# w: M' L
  60.         arg.sub_addr_count      = 2;
    # i# h) _& K+ }7 B
  61.         arg.data_count          = 0x18;
    ' R. ?$ X$ O. o* n
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 u: b' Q! P4 R% [4 z: M" J
  63.         arg.e2prom_cmd_data     = buf;
    ( e& b# t$ w" p+ S' ]8 O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : v) v" [2 L+ }, V; G; s
  65.         if (ret != 0) {: M- f2 A$ D( K& R& o# ^7 h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ ~" _, g; P. E! Q
  67.                 return -1;
    5 W8 M7 w; ?* q& K7 a* K  |
  68.         }, u3 `! o  N( J% f  c: G" o
  69. ' l' ~) T* T7 a- m' @) n
  70.         return 0;
    - ?4 q7 P# o. F, t6 S
  71. }9 W4 E1 k; p/ I1 [$ `6 R, C$ H
  72. ! o# ?, t/ S" h% I+ a3 ^  A
  73. int main()9 t( B/ v& l/ Q  n6 P7 [$ X
  74. {6 I9 S5 y" `/ J* F5 Y
  75.         char c;; c% A  y$ m7 l7 U# ?: O1 q" F
  76.         int i, macs[6];
    1 K) x3 I. o' e
  77.         unsigned char mac[6];
    . b! D: V0 |9 q9 c1 v# H2 O6 z( @
  78.         unsigned char stbid[256];
    9 f9 S" _& r: C7 N* k

  79. $ t6 i2 o' d0 j. B+ M; L
  80.         if (readparam(mac, stbid) < 0); M) m& k+ [- V" a/ P) O
  81.                 return 1;
    6 g; y7 r8 n3 @1 a$ y( L

  82. + g# i, y5 R& ~8 @& P" w  h
  83.         printf("Current parameters: \n");
    ! C% a5 p/ |; k* g- U
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      r  G- ~7 A% W9 B4 N+ }8 \
  85.         printf("  STBID: %s\n", stbid);0 Q* w9 {) c5 ~) a1 A" O
  86.        
    : O; @) m7 }7 X* g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 k% D, I& t+ O$ g8 n! x1 Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 g# B$ M9 G0 p1 z; {- v
  89.                 printf("Input MAC error\n");% T0 `. m% `2 K. V9 m) }! K
  90.                 return 1;2 r; b& A& _- [) M' X
  91.         }7 [3 a2 }& f0 x8 q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 H- m3 N( n: s
  93.         printf("\nPlease input new STBID: ");! U8 i0 U; h1 P. F! g
  94.         scanf("%s", stbid);
      m" R# n& U' D1 P
  95.         if (strlen(stbid) != 18) {
    4 R' \' e3 ~# j' o( R. y
  96.                 printf("Invalid stbid\n");
    & x6 A  {9 v6 B
  97.                 return 1;
    . J8 P2 H% ^5 r8 h! _* X. D
  98.         }3 O: ?  J+ v% G. D
  99.         printf("\nNew parameters: \n");
    / g6 n% b7 @5 z( R' H" Q& C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 k& g- T) X) }- c# |0 K1 i
  101.         printf("  STBID: %s\n", stbid);
    ) c1 |$ _5 F5 A! _! r5 j7 }+ _

  102. / P! n3 ?" p! {
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 Q+ Q9 G" E# {, k
  104.         for (;;) {
    # d) T) e; w+ i6 X
  105.                 c = getchar();) k8 _" u6 K4 r6 N
  106.                 if (c == 'y' || c == 'Y')
    - I' D0 k  F: G( Q8 M
  107.                         break;% T9 c- s4 g' S, t7 `
  108.                 if (c == 'n' || c == 'N') {
    3 l8 _/ Q& V2 P
  109.                         printf("\nAborted.\n");
    # w- o" E  M8 \) _9 `
  110.                         return 1;
    / J2 P5 ~+ D: r  l) z9 Q9 i1 g
  111.                 }
    ' f1 C; P/ Q6 a, N0 Z5 X
  112.         }% V% ?3 D( a7 [; ^9 j
  113.         if (writeparam(mac, stbid) == 0) . d. i0 C, v$ B# Z; O( S
  114.                 printf("Parameters changed.\n");
    % q5 B9 f/ X3 L: |" I( E! ], E
  115. 7 L3 E; X, P% ^1 ^
  116.         return 0;% e" i$ f0 f& a/ ]7 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 B3 T% [9 y2 o; m) y6 I
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) k$ j0 h0 `0 v- a3 N: [9 Q
你用的编译命令行格式是什么?
! ~4 z/ t, z5 `7 T9 m# c. i2 x. _
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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