查看: 16242|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! f! x0 E2 i' i/ c$ L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . R; _% f! I2 E* Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, ^# X/ p, u; V# V  a/ e/ h7 zusage: himr <address> <value>. sample: himr 0x80040000 0x02 j' z1 d1 ]1 W8 e* Y
1 [" l) O7 W, X* x% x6 J/ m6 A

5 s+ ~0 b! {0 B( ^. Y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 k1 X% t5 C) f7 u( G
2 g* Z, E3 B9 K6 e( m
补充内容 (2012-3-8 09:42):% x9 e3 E1 S& f2 i0 M$ H1 O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, K& J# ?' f% U! k( |3 X这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。0 {' z' X# E) d0 K

. \4 b: N: ?! X6 Whimr <address> <value>. sample: himr 0x80040000 0x0
- S; t) g: S% n! q2 B' {
7 q: P* }; ^9 }) t/ _2 I例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( i! ?6 b: p  Vhimr 0x80040000 0x00
$ f' e5 q1 b! C* d" I, ^himr 0x80040001 0x11! P4 n' q5 A9 x
himr 0x80040002 0x22- Z& @6 T' @/ v; B1 @( @0 p
himr 0x80040003 0x338 q; K+ V  m9 S9 T% \! ~
himr 0x80040004 0x44
6 h: S7 f$ [7 C1 S  f  Thimr 0x80040005 0x55
1 ?. s( a+ B6 k$ h; x6 H
$ h) S# ]$ M8 R! n1 ?4 m! B9 _1 u; oSN也是类似。
$ L! p( \+ W& J1 P6 G. C2 c9 X4 {& k6 S
现在主要是,谁告诉我们MAC和SN的地址?
6 |% K  }0 E" X3 m4 I
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 m" }2 a, D4 v/ T一直想找到运程修改MAC和SN的办法,苦于无解啊

/ [& Q. U, N5 k源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 L9 b5 E6 N. D7 l  G
1 a7 l( g) {6 n# a
修改的代码早有了。到今天不会编译。- Y, f; Y7 \0 q; }7 A' S- j
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : R! L4 N! _/ k% }& d
  2. #include <malloc.h>
    0 H% P9 p+ B2 Z0 s6 D+ ~# n
  3. #include <sys/types.h>
    ) g) [2 _/ h& c8 `2 Y! p
  4. #include <sys/stat.h>
    # f0 W0 f4 P( Q6 d
  5. #include <sys/ioctl.h>* c" B9 F8 r* |% C- k( c1 H$ w
  6. #include <stdio.h>/ y/ s1 b2 ~5 @9 D
  7. #include <string.h>5 v! B+ y# z! Q' e6 z
  8.   m) c( w( z* T% [
  9. typedef struct {
    1 b8 x) s) h6 j' }4 T. Z9 ]
  10.         unsigned int        e2prom_cmd_sub_addr;  d6 g. {8 d! l% s! {; V3 e
  11.         unsigned int        sub_addr_count;
    : l2 E! |% c& h2 D8 A$ w* B
  12.         unsigned char*        e2prom_cmd_data;
    : E* b9 m& X+ Z( k+ \6 E0 b$ r
  13.         unsigned int        data_count;
    - x9 e/ F7 L9 \, P4 W+ b
  14. } e2prom_s_cmd;& R7 N# C- i. e8 K5 z# n& z
  15. - d$ N- j9 Y& ?, M; w7 f" t: X
  16. #define E2PROM_CMD_READ 1
    0 S2 s- Q* R, ~( M. G1 Y7 h
  17. #define E2PROM_CMD_WRITE 2$ G( {: l4 z+ S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    * ]  P8 W% q" z, m2 v5 a# m  Y

  19. ; [, n4 z2 O7 d3 D. s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 T) [* S( S/ T) ~. h/ V9 Z
  21. {5 d. R2 W. \. v- Z. n" z" O. n
  22.         int fd, ret;
    ) A7 u; `5 }' `( Z/ c, ~
  23.         e2prom_s_cmd arg;- M2 C6 c" p) X0 d( S1 f
  24.         unsigned char buf[0x18];. O3 u7 f& D. `2 A2 {, X* b

  25. , V6 I+ j$ q6 W8 ~2 E' }! w+ y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 d  J* U' K: l& n0 e! u% R3 E( o
  27.         if (fd  < 0) {  Z3 N- o1 a3 C& C! k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 Y0 N4 Z- z; x3 F' F) v% o
  29.                 return -1;
      T  r9 c" u: u# a& [
  30.         }, C' R7 D1 h8 G% X
  31.         arg.sub_addr_count      = 2;' w8 T" A# l3 Z2 H' B" y
  32.         arg.data_count          = 0x18;
    - l& V+ e4 T1 {; G
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( y) F0 z! R" D' w2 `& L5 P7 v
  34.         arg.e2prom_cmd_data     = buf;: I! W1 f6 C" p3 E  n) m! ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 ]( @- j/ @' z( I, _
  36.         if (ret != 0) {
      f  o! `9 M7 R  N0 I: z7 r! v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, |6 o7 M0 |$ j3 B
  38.                 return -1;6 X$ q2 u# G! ~0 `4 k* n
  39.         }
    - l) R4 p7 o+ G9 s' c
  40.         memcpy(mac, buf, 6);2 l. n) V" {* ~# T
  41.         memcpy(stbid, &buf[6], 18);
    ! X& H6 [# p# Y9 w
  42.         stbid[18] = '\0';: [; V" h. @6 O. T, k
  43.   s, J/ `3 k! b0 N9 r4 t0 g1 K
  44.         return 0;" Z3 u5 A* V7 o8 w
  45. }
    " I3 i& x) s3 w) v. I% t

  46. 1 l- `- y% r# U2 {2 d5 {2 z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 ]. }# F1 c3 B/ z
  48. {
    6 x8 p8 r& C% P  D5 [- Y* p9 Q% w
  49.         int fd, ret;
    + B. g: p1 Q" p7 N0 Y
  50.         e2prom_s_cmd arg;6 `; K8 N. F/ G
  51.         unsigned char buf[0x18];* z  m8 z! t2 ]! y, m# z( s
  52. 7 Y* C! T3 J  Y$ S- I8 n; ]
  53.         memcpy(buf, mac, 6);
    " [6 }3 @  a! Z0 w! k: a* c
  54.         memcpy(&buf[6], stbid, 18);" r% \: M9 _; E9 W2 X
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! t2 S( c8 t: ?4 A( |
  56.         if (fd  < 0) {& W- Q6 V: l" @8 A6 a- B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; w+ w: s0 D' a2 o
  58.                 return -1;4 m3 X# O* ~, I. m3 l
  59.         }. i/ @8 i9 B+ Y& A8 j
  60.         arg.sub_addr_count      = 2;
    ) v4 u" C- x; m2 D1 z/ Z7 m
  61.         arg.data_count          = 0x18;
    / r0 Y8 o* H) k6 B
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 U- S( w' @) X; ^3 P
  63.         arg.e2prom_cmd_data     = buf;0 f6 d- h. O! |/ S& y5 N' U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ' Q2 X4 q7 d- Q: L* M; u
  65.         if (ret != 0) {5 ]/ m) T3 T) ~- ~3 G3 W' Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( R9 y/ k* Y1 Y9 r
  67.                 return -1;
    . j' M( I/ u8 L! ~) _8 \/ F8 U
  68.         }1 v0 X* a" i% K7 s5 E( x8 ?% f( ~& H
  69. - J* D1 R% W, S: K7 _% L
  70.         return 0;8 w5 \% f  s* x: x2 h/ ]
  71. }
    7 N- F9 y1 N& H  i" ?; t  E! H+ D
  72. ( `+ Z# U2 w$ B+ G7 u* k9 N
  73. int main()
    - G! J, P+ s- n1 @
  74. {5 g  f. r: n7 l. {+ W
  75.         char c;0 U  N& Z5 l! F
  76.         int i, macs[6];! ^8 O" i  d" B8 v0 w: o
  77.         unsigned char mac[6];: p; y& j' s! U+ z- f/ \
  78.         unsigned char stbid[256];2 }4 d9 I) G1 V' i& U6 Y
  79. , T# }5 J0 j1 ?: v+ @
  80.         if (readparam(mac, stbid) < 0)
    4 S% x. @/ o7 v4 _
  81.                 return 1;; R: `1 y" }+ {6 T$ X

  82. * ^" O$ v5 A4 q& A% Y
  83.         printf("Current parameters: \n");/ A4 A7 ]8 |$ v9 J( J4 s
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 j  g6 A% A5 E& x' y% x
  85.         printf("  STBID: %s\n", stbid);7 u8 [$ I8 v- i- l+ W& g) \
  86.         6 H7 ^3 ]3 L7 ]2 Q3 Q9 @" s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 |- a7 ]/ N, Y* p5 D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ V: Z* W, Y: E' N  [- m
  89.                 printf("Input MAC error\n");' z$ A7 \9 o, @1 m3 G! d8 b
  90.                 return 1;8 Z' K5 {) Y9 K( o: W& [
  91.         }
    ' \$ \; X: c, i; U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 u4 e/ L8 ]! |& @* q
  93.         printf("\nPlease input new STBID: ");
    * A2 ^5 N& h6 X- b  A4 x7 @& g" n
  94.         scanf("%s", stbid);  Q. h" Q# e6 K+ ~8 z# \
  95.         if (strlen(stbid) != 18) {! O4 l. z  F4 N; w- ~
  96.                 printf("Invalid stbid\n");
    7 a0 [) Q, H# |8 m0 p) a
  97.                 return 1;
    0 ?/ Z3 z( f3 T5 [# K# s% x: A
  98.         }
    1 Z" U1 y! J. @4 }+ [
  99.         printf("\nNew parameters: \n");2 q1 I/ t5 y; G3 |! N" d1 P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- P/ S: o  u6 N: C8 `0 u$ l
  101.         printf("  STBID: %s\n", stbid);9 F0 Q4 {- i; }6 _* k
  102. 3 F. N' r4 T8 V7 e' X
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    : k! |2 j1 q6 s3 n* o5 v2 ]( b2 i
  104.         for (;;) {
    6 ~9 l" R9 G9 K1 v
  105.                 c = getchar();
      ]2 j; n! F; ?
  106.                 if (c == 'y' || c == 'Y')
    ! t. c" `3 ]9 F1 B
  107.                         break;9 }: u1 h4 c9 N5 d, b+ \/ Y  C. }
  108.                 if (c == 'n' || c == 'N') {
    $ h) Z/ l( |) g$ Z
  109.                         printf("\nAborted.\n");
    / X+ f2 j) R2 B  ^8 R
  110.                         return 1;
    ' w: u8 T$ ~9 F- F8 X: x
  111.                 }
    * B+ d# v5 ~# p
  112.         }
    1 G1 P9 H  e. ]: |
  113.         if (writeparam(mac, stbid) == 0)
    2 @, \& b" G- u/ W6 w2 C
  114.                 printf("Parameters changed.\n");- H. z  Q1 c, c/ m

  115. : f$ U  ~9 e: n' o
  116.         return 0;
    " ?" R4 {5 a7 d/ i) }3 l6 B" J
  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
" f) @# i0 P0 s4 I在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 W  N3 v  D; ^; C- q你用的编译命令行格式是什么?. |9 {6 r- Q% M5 p0 p7 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客服返回顶部