查看: 16923|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 }1 t  Z% p" u& J' _  D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 U0 R: ]3 s$ T9 U3 X
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. g+ Q: ?) n$ f6 p% p% m$ n* y
usage: himr <address> <value>. sample: himr 0x80040000 0x09 l* l* p5 N" E* Y
. Q& L* X# ^, T' j8 L2 v: _

* T* p9 Y; X) T0 Z/ |不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 n! P7 b: C$ X- f

' d& ~5 N0 O  N: G3 R( i补充内容 (2012-3-8 09:42):
2 l. q* m9 o. \& r* p1 @( ^http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 y) c4 [, b5 c
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
2 P- E9 R+ `( |% ?+ a
* |8 B; j( Y4 C5 c8 Uhimr <address> <value>. sample: himr 0x80040000 0x0
: k) S$ q1 |1 v& t1 {" Z7 w9 a3 {4 c6 M" T9 [4 ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ l- ^9 q+ i+ `$ g  _* ], y
himr 0x80040000 0x00
/ w- l3 F/ l  a# Uhimr 0x80040001 0x11( P2 p  F- D6 z  l3 S
himr 0x80040002 0x22. I' _( L+ I- V
himr 0x80040003 0x33
9 |) g3 W) @( ?# w/ O$ ehimr 0x80040004 0x44; p0 ~4 ~7 e* N) R; z7 a! X
himr 0x80040005 0x55& M1 e/ G2 r# m7 W# o
3 h0 G- c) u* r* }0 l" n' ]
SN也是类似。
% U* d: ?* N% g( E; v! H" u, b! `0 ~
现在主要是,谁告诉我们MAC和SN的地址?
+ Q6 Y6 _/ O) j2 y! p+ @" h4 o( z( \
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * O. j$ i7 x9 }0 N7 l' l
一直想找到运程修改MAC和SN的办法,苦于无解啊
7 M$ K$ n; @% y2 N) N2 J% E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' V1 q7 k1 E1 R  i  M

5 d- o, B5 W" J5 ^  `& J3 y" h; y, g! W/ B修改的代码早有了。到今天不会编译。- ?3 x4 w3 h* N( I
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" c$ C% [. A4 h8 |1 R5 V+ n
  2. #include <malloc.h>; f" `: l) J2 l6 d, _
  3. #include <sys/types.h>' a( ]& H1 a3 Q2 z; w
  4. #include <sys/stat.h>
    : |; A- {1 I$ \! T5 V8 C
  5. #include <sys/ioctl.h>* y/ I6 K9 l9 e% ?1 `( C: `
  6. #include <stdio.h>. u: {# h3 x' t' j
  7. #include <string.h>( r, y. h0 f$ C% r! f0 F
  8. $ j2 `$ G9 d! `7 {
  9. typedef struct {
    . W) v# x1 u  R# D
  10.         unsigned int        e2prom_cmd_sub_addr;$ O4 m, w& y2 `" t- Z0 A' F
  11.         unsigned int        sub_addr_count;
    " U5 b: R5 W! ?
  12.         unsigned char*        e2prom_cmd_data;( Q) ?+ l8 E# f1 d& X! N+ C* ]
  13.         unsigned int        data_count;1 d1 o5 t7 c9 ]: x6 D$ U
  14. } e2prom_s_cmd;
    # s+ i- x, w! ]2 m9 X
  15. * v! q/ `% ^/ I/ _) l: Z& }9 v
  16. #define E2PROM_CMD_READ 11 M3 W6 m  f$ N* {9 D( l
  17. #define E2PROM_CMD_WRITE 2! l  g+ R7 |3 Z# d6 t( `+ L! ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' v$ |- n: k! ?8 r. w- V

  19. - S/ X+ p# D7 n5 c7 {& d
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( m) u, D/ v" I5 x# O/ O
  21. {
    ; a9 Y+ L. N  q3 m- P2 A( w
  22.         int fd, ret;' u$ c3 Q9 ^) m) D
  23.         e2prom_s_cmd arg;  ~$ \( _- a' z# F/ F6 B
  24.         unsigned char buf[0x18];# U( [# M, K% q

  25. 7 g6 o0 }; ?+ P) B8 D& [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " Y2 G4 Z) S. N& P: g
  27.         if (fd  < 0) {, B. `0 z2 h7 H# X6 `1 b+ ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);; b3 Y7 C8 {" a% v2 l
  29.                 return -1;, J9 j! @3 q$ J: V3 E5 f7 ~
  30.         }
    + ]- N" H# t2 u0 ~
  31.         arg.sub_addr_count      = 2;
    8 d" i: \. M8 M2 x
  32.         arg.data_count          = 0x18;  b, C7 O/ Y  d* f* V4 I
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 _( i; Q9 k" z. M5 j( n, U. ^) i
  34.         arg.e2prom_cmd_data     = buf;
    ( ]% H) N  R/ L- Q5 Q7 p4 P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 G+ A3 g  R8 e8 N; T" Z
  36.         if (ret != 0) {
    8 p0 H& w1 ^: `6 |* k0 w" `8 p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % V( p! r- R  g/ {. g" D: f
  38.                 return -1;* C  ~+ I4 \4 h+ y( l$ X$ s
  39.         }7 P/ X  C7 p- `( v" p% z  ?3 N
  40.         memcpy(mac, buf, 6);$ o- J: ?! j9 J0 E. c: d: u
  41.         memcpy(stbid, &buf[6], 18);5 j+ Q, d5 B/ y3 G) P
  42.         stbid[18] = '\0';
    5 E2 z2 ?/ ?2 `9 b2 [" d# A. P
  43. 6 n; {$ z1 ]6 i. u
  44.         return 0;
    % j8 V3 J1 G2 k9 W  W
  45. }- Y/ I! I, A3 p3 @5 Z' C5 M4 ~

  46. ; o5 G9 x+ N9 D. V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 |2 V; L+ B2 N6 C! j0 ~- Q/ P
  48. {% q) j0 N* f8 c" l
  49.         int fd, ret;
    ) @* X5 }3 D1 j1 B
  50.         e2prom_s_cmd arg;
    , n1 h6 L" Z3 d  D$ E, E! i' y
  51.         unsigned char buf[0x18];
    # R" x2 \3 y  g% v3 b: r

  52. . F5 s: K: P$ t4 f5 \
  53.         memcpy(buf, mac, 6);7 n- N) A; [2 D2 {0 N
  54.         memcpy(&buf[6], stbid, 18);
    - l) Y. l2 S3 V! n( R  `6 H, p% b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( n0 q8 ?- d9 E, m/ t7 @
  56.         if (fd  < 0) {: D+ i% s$ _) T# H2 Z' M1 ]( W5 N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 I+ K( w9 [# F0 l2 }* R
  58.                 return -1;
    - k. Q; t7 s( \' ^+ _5 t
  59.         }
    ) @7 [8 u6 l) ]! N7 Z/ B0 [1 z: Q
  60.         arg.sub_addr_count      = 2;
    , t2 t2 g  ]5 X: u: F6 Z
  61.         arg.data_count          = 0x18;
    5 J" k1 L9 g+ }- O8 e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 d# z6 ?3 `9 K: T, T& Q. H
  63.         arg.e2prom_cmd_data     = buf;
    2 O8 z# N2 P  l  p# v( o. |$ e7 l9 s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: R4 Y/ o! T: z, I  g+ b) g
  65.         if (ret != 0) {$ e% S1 d4 I, H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 z8 ~. Q* f) _0 Y3 ^0 o5 D0 \
  67.                 return -1;( W& l( M5 j7 ]/ ?
  68.         }9 J" o* w3 T" y" P4 A$ v

  69. 1 p- J& e2 o  _3 S6 P# a
  70.         return 0;
    " W7 L) w' ^7 c2 R. Q) s# N
  71. }
    + }3 n2 u! Z; f7 J7 B( E) L. o

  72. . s+ a7 E- T& L& K
  73. int main()" ?7 B3 U; ]1 o1 x+ a. t, H) X
  74. {+ S& z" V- d! e- u% I' R
  75.         char c;$ J6 m& p$ I0 J: ]
  76.         int i, macs[6];* n, T7 B/ S/ e& l$ ?$ x
  77.         unsigned char mac[6];
    & H# K2 Z5 |( ?: g; X
  78.         unsigned char stbid[256];5 P6 A  m4 E4 Q2 n' [; B
  79. 3 M" L  L6 R% h2 w5 p* }6 i) m/ [
  80.         if (readparam(mac, stbid) < 0)( k* G  y4 G. q1 }, x& E6 {% d
  81.                 return 1;2 w5 b$ P7 a) o1 l1 d: E+ c

  82. " a  O1 W2 i3 d- M% S: k
  83.         printf("Current parameters: \n");
    $ z0 j4 E  s5 e4 R3 a8 ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 t3 {7 f8 g8 ]  I6 [$ x$ B
  85.         printf("  STBID: %s\n", stbid);% T3 ?/ ?$ A3 t7 D/ ^
  86.        
    : E: C8 Y" u, ^& h
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ I( ]6 H& l7 l- N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% B( Q, v3 J0 W9 a/ V9 M7 ^( }; n
  89.                 printf("Input MAC error\n");
    4 [' k' w6 n) [' R+ C( z5 J: `( G9 _
  90.                 return 1;  `. r) N( M- V9 H) q
  91.         }4 M# S  B; q& K1 i' K
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 F9 `2 c2 k2 F& J; j9 J
  93.         printf("\nPlease input new STBID: ");
    + ~4 O; H  Q* r) R; L
  94.         scanf("%s", stbid);( r& P/ E$ f4 D6 s6 A! {. G6 D: o5 s
  95.         if (strlen(stbid) != 18) {1 q0 `' H: v" s2 a- c
  96.                 printf("Invalid stbid\n");+ n, I& g- l6 L; a1 Q( `
  97.                 return 1;& D+ U9 @% K7 l+ Y4 N) K* i! S
  98.         }" D( w& ?) ^0 a) _9 P
  99.         printf("\nNew parameters: \n");! S) Z9 W& ]* \& E" ^) x3 b" ?- _: ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 J; S( F/ |3 F
  101.         printf("  STBID: %s\n", stbid);2 H9 b2 U2 e( O# r8 |" i
  102. 0 [* B& b* z% `* M5 m
  103.         printf("\nDo you want to change paramemters? (y/N) ");, R) Y' F0 u) y/ c' F: J4 s& {
  104.         for (;;) {
    8 b$ a( b" o0 x
  105.                 c = getchar();
    & M4 k* b8 |; }. O$ d. Q7 @
  106.                 if (c == 'y' || c == 'Y')
    / U& }! z: {* M* @* A
  107.                         break;6 S& z' M3 b4 F, p
  108.                 if (c == 'n' || c == 'N') {5 m4 b5 V" F  s. k7 Z7 r
  109.                         printf("\nAborted.\n");: J3 c! X4 Y' J4 T7 |0 x. f
  110.                         return 1;
    * ?* g0 P  u7 M
  111.                 }! ^# S+ h% A5 a6 ]! X8 Z
  112.         }
    , m" |  a  X7 _5 t3 g0 p* R' |
  113.         if (writeparam(mac, stbid) == 0)
    ! {# d$ m+ b& k0 _+ ]& j2 Y
  114.                 printf("Parameters changed.\n");
    - B6 Q1 x* h" g* q
  115.   j8 G+ w: l" z
  116.         return 0;1 X5 k/ ~, n3 _$ `0 P
  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& L( t% w: ~& b! K在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

9 a" m! e9 q- g你用的编译命令行格式是什么?
9 U& x0 V' U7 h. N7 a
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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