查看: 17516|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - O2 Z; l! ]4 n/ f) d2 j0 W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; p1 A$ r3 t% h0 G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 L* b% e& B6 l& W0 j- }; q) s
usage: himr <address> <value>. sample: himr 0x80040000 0x0% J2 t1 A4 ]: }7 X( p$ R$ g# L" @
3 e0 E1 g3 Z; E8 P( S% |# v
5 {) n9 u. Y: j! r+ O" h2 w. Y
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; T4 [1 v8 B4 M% u* |( N  Z# B
" S& h. s- l4 L
补充内容 (2012-3-8 09:42):
1 X/ G3 g, M% W+ x% ~$ k+ Ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 c3 l8 m$ r: Q, J" T7 W这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。7 l3 J! C3 B5 }! R1 v% r' \

8 a: |4 s7 c  W6 T/ vhimr <address> <value>. sample: himr 0x80040000 0x0. b4 H/ W6 [8 Y' Q( R
/ ~$ B/ T* g5 t( r$ k8 q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) w; r5 ~( L8 ^9 c
himr 0x80040000 0x009 M1 m' L2 q( L1 P! Z8 a, A% s
himr 0x80040001 0x11
. p+ x0 r) q2 F. C5 Hhimr 0x80040002 0x22
+ K6 C0 n& U& Y6 e; A* F# Zhimr 0x80040003 0x33
. K/ ]/ \& Z9 a7 Ohimr 0x80040004 0x44
. O" }5 ~- m0 s) E) }1 Nhimr 0x80040005 0x55
2 L: U, J% \* s  ^
- e6 I7 r. O! l0 x, c+ {SN也是类似。% H' R$ s  e( Y* {
6 S( ~4 b" u5 Z0 w( T# Q
现在主要是,谁告诉我们MAC和SN的地址?9 k) G* o0 ^( G& R
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- Z6 m" d9 y" S( k3 h& ?8 H3 Y一直想找到运程修改MAC和SN的办法,苦于无解啊

0 l6 }9 P+ n. H5 g% I源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 g7 Z* b6 q6 C$ R" A, v+ z
6 V0 Q8 s9 G  ^9 {) p4 c- z
修改的代码早有了。到今天不会编译。/ q" t1 |7 G3 }5 q
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    & s% w  X% H& T  D. z* }
  2. #include <malloc.h># i: r6 z& Y+ i3 `/ G! a
  3. #include <sys/types.h>
    1 N  B- [0 R: D# K
  4. #include <sys/stat.h>- ~1 \1 }2 h6 ~. |0 C" A
  5. #include <sys/ioctl.h>
    7 h5 D' A5 C6 c+ x  |
  6. #include <stdio.h>! [& ]. M- K5 i4 {4 w3 ~- P
  7. #include <string.h>
    3 o. s7 J: G& w9 ^# v( D6 ^# R$ y
  8. % @) h1 h& W/ b0 ^) L# X1 Y. |1 A) Y
  9. typedef struct {$ c+ P1 c6 j5 A( L; w% Z* _' ^* H, o
  10.         unsigned int        e2prom_cmd_sub_addr;) W2 G2 C7 z) [; a
  11.         unsigned int        sub_addr_count;* j$ @. \8 P* ?( M9 D
  12.         unsigned char*        e2prom_cmd_data;
    7 I2 h* M4 @9 Y  V& n9 f! [
  13.         unsigned int        data_count;6 M4 S) U/ a: x( X5 j$ I2 {$ x2 w! ]9 o
  14. } e2prom_s_cmd;
    7 S5 F+ z5 W& a2 F4 V$ ^! E
  15. ) Q5 h; |0 t0 N8 r+ U4 J  Z
  16. #define E2PROM_CMD_READ 1
    ( P5 I! y3 r' s$ H
  17. #define E2PROM_CMD_WRITE 2. w1 t5 ^3 W: `2 U  N% }$ V% K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 i- F( m9 k8 C
  19. 5 w# @" r. l+ R/ h- y! Q- [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& E; q+ h$ ^8 n# r$ t
  21. {
    & _9 J3 l7 m7 ~9 E
  22.         int fd, ret;" Y0 f" O$ B& |' f7 D( k, p- U, X6 O
  23.         e2prom_s_cmd arg;) L/ m  ~! o- }+ r- s6 |
  24.         unsigned char buf[0x18];" G8 f# `2 @8 @+ M- b! e

  25. , K8 H. E, v6 Q6 `" x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 E$ m4 u1 k! y
  27.         if (fd  < 0) {- I) _" M2 ~4 S& C3 m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 d5 m! ?) b; ?. D  {
  29.                 return -1;' R3 w! A7 \" R* l3 P$ b3 O
  30.         }' y7 B2 w$ C7 l, b2 L
  31.         arg.sub_addr_count      = 2;
    9 r" R/ [1 B" e7 _" z0 t4 F1 ~1 y
  32.         arg.data_count          = 0x18;
    0 M: h  g3 t8 y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' A! {* l0 C- F8 f
  34.         arg.e2prom_cmd_data     = buf;0 s2 e  f5 ~. `$ l& w
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 K% x1 l9 I- c4 U& p2 P
  36.         if (ret != 0) {
    / X1 a) i5 V$ B* |3 Z" i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 h/ Z: }" d* o. N1 L* u. E
  38.                 return -1;0 e% X' F( p4 n. q6 y; z
  39.         }8 \4 Q7 v; Q/ K% k
  40.         memcpy(mac, buf, 6);" l9 w1 ~3 M9 W0 X( y! p2 |
  41.         memcpy(stbid, &buf[6], 18);$ o* e* [3 O- L* `
  42.         stbid[18] = '\0';
    1 D1 v- D3 K* Z; g) _, e' f& k
  43. . D, ]/ o; E1 K5 |! u7 B% ?( h
  44.         return 0;, @) O; w6 |( x- r0 M9 c
  45. }
    % _$ \; s4 W9 v) }
  46. 9 X  b; J1 f4 _3 U$ L9 s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* G; s$ x7 P1 x7 B  k
  48. {; N% |9 w9 L; z" a2 ^
  49.         int fd, ret;
    & R; d, d) ~2 h2 a" Y
  50.         e2prom_s_cmd arg;
    7 ~! L( k( a9 j2 C
  51.         unsigned char buf[0x18];! Z- C; V0 b9 @& ^- r, R

  52. 0 ~$ r0 ^( K: q: [
  53.         memcpy(buf, mac, 6);
    5 ]; t7 ?' V) A
  54.         memcpy(&buf[6], stbid, 18);
    0 b# b, @9 F! B) a& O0 g
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    + i% j- e8 M, M
  56.         if (fd  < 0) {* K  [, h3 F* S* X# v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ c+ I4 K* X1 Q0 P9 w; B0 @* Y
  58.                 return -1;. \9 r7 j# K8 P5 J' R
  59.         }
    8 R9 L0 m2 C1 |4 q  ^% U
  60.         arg.sub_addr_count      = 2;
    1 ^9 N$ P, w" a7 @+ r
  61.         arg.data_count          = 0x18;4 K5 V4 J' J, t9 w( Y& w/ g- d
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    - s9 o; N4 h- T  ]
  63.         arg.e2prom_cmd_data     = buf;9 a) I, i; H2 N& V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);, w( {. V) a3 _9 k2 y" r' h
  65.         if (ret != 0) {
    $ b) f( e' Q8 d! g% |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . j* k0 w7 Q8 G
  67.                 return -1;
    1 g' S0 w* A" T
  68.         }+ c% t/ ]) N, b: R5 ]2 v

  69. * s( f1 x; |+ d5 ?2 X. Y2 |
  70.         return 0;$ V; j$ D; B/ v" L6 \
  71. }, g7 ]; c8 r, ]& \# h: U- Z' D) A

  72. & y3 q: c% _* g% p, i" u
  73. int main()
    5 h4 W6 R3 R& ~0 k; d
  74. {9 A* S  F. k% ]- K+ l0 T% F
  75.         char c;" c$ n4 C* m! ^( H3 `; q
  76.         int i, macs[6];6 r' ?9 i( m8 h( O
  77.         unsigned char mac[6];
    & E, |, e# y- d5 c& u
  78.         unsigned char stbid[256];
    & H1 z0 I: M+ ]8 ^0 _( ]. _
  79. 7 i2 W8 t" ?5 @7 B8 S4 m
  80.         if (readparam(mac, stbid) < 0)6 ?! r1 M6 D. }  v, x5 x
  81.                 return 1;
      i+ z+ b4 g. Y$ R# b
  82. + n5 h' u4 g$ p1 V- M# w6 z3 S
  83.         printf("Current parameters: \n");$ S+ X; t8 P1 T4 U5 r) \
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 B* ^: X; E: h8 T
  85.         printf("  STBID: %s\n", stbid);% y6 e3 ^  Z; K8 z1 I7 |0 z8 n0 n
  86.         * ^. B  G- s9 ]
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% s* H; i" s; J- [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, R2 c& P- n: B8 {
  89.                 printf("Input MAC error\n");  u& Y2 R+ t: o  |
  90.                 return 1;
    + F6 y8 G) q2 O+ x; y' w' a4 o
  91.         }+ {" X9 d0 T! Y$ t! B6 w2 [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& Q$ P% [( Q  j/ a2 Z6 m# ^
  93.         printf("\nPlease input new STBID: ");
      g  O7 q% N, k$ x
  94.         scanf("%s", stbid);5 v4 z( z, n" t) K3 }0 T% ~
  95.         if (strlen(stbid) != 18) {4 `% m4 H" y, B% C
  96.                 printf("Invalid stbid\n");& W0 @1 \3 u7 n$ m
  97.                 return 1;
    ' o! Z; ~) g0 h. M  U& N( v% p+ k
  98.         }9 v& \. }. W! |* ~
  99.         printf("\nNew parameters: \n");
    % ]( F( J; b( c8 K/ U9 y$ Z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) Y5 |1 p. D( b- W! T8 p* C! ]* i5 f
  101.         printf("  STBID: %s\n", stbid);
    5 P) [# J" p% `* Y7 V" r/ j, s/ f! \
  102. ) G& }0 j% N6 o! Q4 W5 m8 h) l
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    : @9 c" H  B& i6 h5 ^5 V
  104.         for (;;) {
    4 Y+ C) x& U$ D4 |
  105.                 c = getchar();
      i; Q" g" ^0 W7 |% p3 ]8 ?& R
  106.                 if (c == 'y' || c == 'Y')* e$ ^1 Y5 u3 i, l9 g
  107.                         break;$ z6 t3 ?( L! W
  108.                 if (c == 'n' || c == 'N') {
    - C+ L5 `2 i" L
  109.                         printf("\nAborted.\n");
    . X- F; i7 D( B: O; ]) Y! o& |
  110.                         return 1;* C  [$ Q4 T' N0 r
  111.                 }; s: t, n. Q7 Y3 J7 c7 f
  112.         }2 D- {( M9 v( s3 u0 v! `
  113.         if (writeparam(mac, stbid) == 0)
    7 h# S  ?6 D2 Z+ g+ f1 P1 Z
  114.                 printf("Parameters changed.\n");
    1 ]8 p/ o& @) F! F& }- z$ Z

  115. : C9 q6 G" i; q1 t( S
  116.         return 0;
    ( T% P9 c8 |  j9 |
  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   B7 L& ?. s8 Y- G1 l* h7 ~7 o: l$ G; v
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 x/ W* u" D* L你用的编译命令行格式是什么?& U, E/ }: D. @% }$ l3 {! r
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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