查看: 17793|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" Y: I  E/ s! p' f* L- S% U9 r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 C2 i0 j/ S, |( r. k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- u: O4 c+ H9 R* r
usage: himr <address> <value>. sample: himr 0x80040000 0x0; B, R9 y8 g5 h" R1 u0 Y5 C

0 H9 i4 p! [' k  n6 \
2 @& Y1 W' k# {不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* C. n( B% e. ?3 y9 j* \
2 a8 n" N4 z, ?$ z( m补充内容 (2012-3-8 09:42):1 n! ^% P" A5 s# |9 _. ^
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 X$ O: J$ N2 F( }9 d# T+ _这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
+ L6 L  t* B6 L
9 X6 g/ a, {* ]4 y5 h9 q: `himr <address> <value>. sample: himr 0x80040000 0x0
; f/ G: i! [0 L9 I4 K& I6 V. H% Y
! D5 N3 b, w, f% x  E例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* _2 L' F1 e$ f" I
himr 0x80040000 0x00+ B% P5 L, z% S1 s5 U! R3 P
himr 0x80040001 0x11
- R) y& S$ S" \himr 0x80040002 0x223 b! {. i/ Q& k1 V9 D$ o
himr 0x80040003 0x332 O/ r; H# c& D5 q$ n1 l2 g/ X/ R
himr 0x80040004 0x448 N+ H) ?, j) y2 G! c# W
himr 0x80040005 0x55- B$ U7 M: K3 R" b+ R% l' l

- _1 c3 \/ M& l2 u& ~' s! iSN也是类似。2 P+ U$ Z$ P  e; h

; N3 q  h' w1 G9 A: o7 q现在主要是,谁告诉我们MAC和SN的地址?
" G$ o' u0 G+ e0 K
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 {/ o1 `* X* g一直想找到运程修改MAC和SN的办法,苦于无解啊
2 I: R' `- z. `# m; u9 x! ^
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 O& g1 \1 N" x1 R/ G

2 o7 `& A4 G% g+ j  w修改的代码早有了。到今天不会编译。
% E% L) N2 x& E2 \& C4 l4 h& i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( u5 }6 x: U9 }$ l; J* Z4 G
  2. #include <malloc.h>; `  m8 k1 ?( W! o1 y2 m, |5 R1 K
  3. #include <sys/types.h>
    2 u+ a, J( s& u2 _/ R" a' r$ z: [
  4. #include <sys/stat.h>$ S$ q- q+ f) o8 F
  5. #include <sys/ioctl.h>
    4 T" H( w6 \% j  s8 |/ W
  6. #include <stdio.h>! l# B( K$ X# ?8 C% I
  7. #include <string.h>$ q# b. q3 Z! x

  8. 5 u4 }5 j8 m4 ?- P  B* ?$ _' e
  9. typedef struct {* J/ q3 _2 m2 l7 }, l/ v
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! x& R2 {% _; A! M; O
  11.         unsigned int        sub_addr_count;: L, K9 J4 W% Z" U
  12.         unsigned char*        e2prom_cmd_data;
    7 p3 Y" z  t" q3 p6 J7 u. ^4 S
  13.         unsigned int        data_count;
    ; F4 w5 |. q- }3 o$ L: l
  14. } e2prom_s_cmd;' ?' W: T7 x8 x. j

  15. 1 ]- y- N! _/ J# l! `% N( G
  16. #define E2PROM_CMD_READ 1* c! Q& M' K# m8 I' d' R1 I- o% |
  17. #define E2PROM_CMD_WRITE 2
    $ I  x+ q/ }7 K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% ~3 L+ ]9 T; a* q0 p2 n
  19. 5 Z$ B+ @! S6 t8 T
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 ?* m. U# l2 e* ^' h: a3 f. W" Z
  21. {
    + ]4 {5 l- \3 g
  22.         int fd, ret;
    4 ^7 Q; L1 Q6 A* s. l0 X2 ^$ c
  23.         e2prom_s_cmd arg;
    ( k" o; [. G8 |& y( V# t
  24.         unsigned char buf[0x18];
    ' Q4 w( D3 F5 u

  25. , g4 s+ p' R: U0 ~5 W9 _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; [+ m  ]" O/ b2 j
  27.         if (fd  < 0) {5 X, Q( o1 u& X. d0 H5 R( y/ G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! R0 D. s- @' o" Z2 N
  29.                 return -1;
    5 Y4 {  y7 |2 E! \6 o7 r+ |
  30.         }5 ?) v$ V0 \/ C$ M
  31.         arg.sub_addr_count      = 2;6 V7 A! J% j7 y2 k  v9 c: J
  32.         arg.data_count          = 0x18;
    ! v5 R" O! Z$ t
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      {9 l9 {2 L& g2 L
  34.         arg.e2prom_cmd_data     = buf;5 X4 F+ Z$ s# R$ w& }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! \9 d, \6 E5 G" h; E8 d# x
  36.         if (ret != 0) {
    ' d+ N$ a9 r6 t; t+ H! o# T8 n8 w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * s2 Q1 h9 E# ^2 k/ r5 R
  38.                 return -1;
    0 p( F0 d3 V/ U  R' Z
  39.         }- e. S$ B* T  q- K- Q3 r0 |8 U, U
  40.         memcpy(mac, buf, 6);
    3 q1 _$ p: h( L) O& D, i
  41.         memcpy(stbid, &buf[6], 18);
    ) g, l5 \' h( ^8 V4 E
  42.         stbid[18] = '\0';6 b8 t: K% B( v7 w
  43. : F* s+ j) L$ j# h, R$ ]$ d
  44.         return 0;$ f8 J' a3 x' B7 X
  45. }+ j' I. U3 S2 W5 V: S- e

  46. & g$ x# @9 T; b4 P/ X- u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . c5 O$ R) b- R' k) Y
  48. {
    " U% Q: |0 I; N2 k* }0 X8 Z2 m
  49.         int fd, ret;7 m* R/ R7 ?1 E! H% k. P
  50.         e2prom_s_cmd arg;! V6 m! p) S6 J, x% f' I
  51.         unsigned char buf[0x18];, b5 _5 {& F$ t1 p0 o5 g4 O% r
  52. ( J- d7 S2 Q! O; x$ n" [
  53.         memcpy(buf, mac, 6);
    . j& V/ z/ u' z" B
  54.         memcpy(&buf[6], stbid, 18);
    ; O  _+ x9 t5 W8 i  y# @# o. S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, @  P" j: a# l+ U' d( T
  56.         if (fd  < 0) {
    $ f( L% X/ R+ f  s+ z8 ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + N+ n& T% \9 f5 |3 t
  58.                 return -1;
    + P$ x- Q- H' @" _6 k5 ~( }% y/ E
  59.         }" D- A) T: c# u, N( Y, D# u
  60.         arg.sub_addr_count      = 2;' [8 o& X0 i! A7 p% s1 D% m
  61.         arg.data_count          = 0x18;! S8 g* A- z$ Q# z
  62.         arg.e2prom_cmd_sub_addr = 0x290;! g* y' i* z, `8 _; y
  63.         arg.e2prom_cmd_data     = buf;  A9 w2 b) L2 ]- s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);, X( l1 |0 T0 B* r
  65.         if (ret != 0) {2 c  U5 g% ^0 m. w/ I, L, U3 q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 A2 P. K! f: R% d& ?! z
  67.                 return -1;1 Q+ n# X! \3 k1 J$ s' d6 N/ |1 Q
  68.         }
    9 V1 a3 j" u+ N" `; k

  69. ' ]( X+ [# g( U0 {" E4 E
  70.         return 0;
    . v; ^/ f7 o: F- `$ h
  71. }: U: E% _( o. Q# a4 Y% l
  72. * F3 B0 r/ ~# I' q/ @" w7 ~" }
  73. int main(); n( S0 \8 n; E3 Q1 o8 Q
  74. {
    " c6 E* ^( a# y7 w) \
  75.         char c;, o0 e' }% N: b
  76.         int i, macs[6];
    4 a' {. l; e5 b& n
  77.         unsigned char mac[6];- A1 `: ^, W/ Z$ V: i; [" X7 \8 ?% j
  78.         unsigned char stbid[256];7 U& O: K0 g$ ^: N4 j0 A3 w
  79. ) [: Z4 N6 y. v' R
  80.         if (readparam(mac, stbid) < 0)  u& L0 [2 E9 k
  81.                 return 1;1 y; B$ b% q. g

  82. , V7 U& |7 G. g6 t2 L
  83.         printf("Current parameters: \n");! G6 S1 t4 |8 ~5 g; c) O) H) L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ _( c) g# `1 |: A2 o
  85.         printf("  STBID: %s\n", stbid);
    ( V; u, t0 e4 j! u' o5 D2 Y
  86.        
    , P' p/ g7 R( R, c5 L; F6 R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 P. g8 q' e# x% q# H: t+ k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; C4 w9 {: A, |' d; L( q5 X
  89.                 printf("Input MAC error\n");
    ; B  f' ?8 U) v. v5 j2 d5 m
  90.                 return 1;8 i; W( ]  X6 C6 f8 F
  91.         }# C. {9 Q# r, h. O  b# a3 Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ D! `: a/ R$ _. o
  93.         printf("\nPlease input new STBID: ");+ F6 h: S6 X% H
  94.         scanf("%s", stbid);
    # e( E5 q  D7 d6 K6 U
  95.         if (strlen(stbid) != 18) {
    4 z: s; c" V$ I) K3 g, w0 q8 c7 R
  96.                 printf("Invalid stbid\n");, R" P6 h5 q; ~. A  y0 }! ]6 ]* l
  97.                 return 1;
    % D5 L6 f- |. h* K" X
  98.         }
    ; [) L% N# u( j
  99.         printf("\nNew parameters: \n");  f) z) V: w) _4 N, |, m0 L* R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 B+ [, b& A8 V
  101.         printf("  STBID: %s\n", stbid);, w* D4 T, ~- b4 J3 P# W) @
  102. ( r" m1 Y+ R9 \3 J3 ?, ?1 m: R
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & F6 O. A1 Y7 `0 G- W
  104.         for (;;) {! l& [9 t- E9 S0 Y! _
  105.                 c = getchar();! X. a& A% [& `# y2 O* L! Q
  106.                 if (c == 'y' || c == 'Y')' g( ~$ B! H1 y5 m
  107.                         break;/ @: y8 I0 k1 c7 `! a
  108.                 if (c == 'n' || c == 'N') {5 P" [# h1 ~6 p# O- {
  109.                         printf("\nAborted.\n");- G# z9 m' P. r0 p
  110.                         return 1;1 ~! G+ u. h: T/ b% X
  111.                 }5 Q+ o( \+ l3 v1 ]4 C/ U
  112.         }. G/ R: K, ^3 E& h- Z
  113.         if (writeparam(mac, stbid) == 0)
    3 R+ h, `( }$ j& l' B' V
  114.                 printf("Parameters changed.\n");" }: H+ q$ E: u2 Y5 c. \

  115. % S5 C9 G' x6 J# ]
  116.         return 0;' C2 Y, t9 }, [9 g$ G
  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 ( r* V- |7 b, p& E8 e. y
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) v/ p- Q. ~0 y0 {' o3 d你用的编译命令行格式是什么?! g0 a0 E% B/ Q4 r- X5 u$ e, w
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部