查看: 17553|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" o7 A' W1 d- c' F+ N2 D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) }5 Y$ u% L0 U' ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:! M. r* v1 O0 Z3 m7 b$ o, u
usage: himr <address> <value>. sample: himr 0x80040000 0x0+ b* ]: `$ z: i
1 Y! }. T  M% x, D* ]! v" ~
. y4 C  o. t3 g: @2 ]
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- }, R8 X- G7 _$ Y
5 D# F3 b' u; k6 U
补充内容 (2012-3-8 09:42):
1 \) f* j! G3 B, ?5 ~http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! H$ f- j7 }5 I& `5 E2 J
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。1 z9 l0 U, a: Q# Q9 g

: Q7 p) l. M" y2 W: q# `9 _himr <address> <value>. sample: himr 0x80040000 0x0
& F, a! j: J; c* m. u! q; H( T8 T, G6 d0 w/ x/ L% q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& ~% Q1 m( x3 b* V9 C" k8 u7 Y3 U
himr 0x80040000 0x00
7 e( [* V9 p2 A  u3 Y  P5 J3 Phimr 0x80040001 0x117 ?6 P# i( N2 a' F
himr 0x80040002 0x22
& t# W0 Z6 v- V# Y& w2 mhimr 0x80040003 0x33
7 @/ G# h" x; u* P; [; thimr 0x80040004 0x44
8 a! `$ y0 z" d. ~, Q( Fhimr 0x80040005 0x55
- H1 F6 K8 j6 Z
8 `* {& c* O% T/ G7 _# i" c. fSN也是类似。
8 s8 a) V  t* g8 \! C4 H
; N4 W; D" D. t9 s& J现在主要是,谁告诉我们MAC和SN的地址?
( t% X- l' g% D" p+ `/ L
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * R- V6 s( w" }, l
一直想找到运程修改MAC和SN的办法,苦于无解啊

" V$ P+ n! o% d$ f- T$ e% ~源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 K- I% ]# P4 w2 I, L# l1 f, v7 V7 v7 N  X/ ~/ f0 \2 l$ P5 B
修改的代码早有了。到今天不会编译。0 X. ?+ N4 ]  b7 S. c/ X& u
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" H9 D/ E1 [% Y7 M/ {
  2. #include <malloc.h>* H! u4 @4 h2 a9 m& R3 x
  3. #include <sys/types.h>
    6 {0 N" W  h6 W$ Y" W5 t" I& T  i
  4. #include <sys/stat.h>4 e+ ?1 s1 p( W9 c
  5. #include <sys/ioctl.h>, w  S. k! S$ S6 `% X
  6. #include <stdio.h>4 U; P4 s+ x, f& O$ M
  7. #include <string.h>) ]5 [0 x8 S2 Z7 F% D

  8. + C7 k9 b1 x/ P3 J8 [9 W
  9. typedef struct {6 x+ j, K! C- T9 m5 s! I
  10.         unsigned int        e2prom_cmd_sub_addr;) E0 `% M5 k  b' Y! p! p
  11.         unsigned int        sub_addr_count;5 S) e! g8 k: g' C: N/ m
  12.         unsigned char*        e2prom_cmd_data;' G- }. W$ i; s2 _+ C
  13.         unsigned int        data_count;6 d$ |+ i. _$ @- ^. f! J8 h
  14. } e2prom_s_cmd;4 Q0 D, V1 g' J
  15. 5 A2 p5 |/ W7 E/ R( u
  16. #define E2PROM_CMD_READ 18 x+ _, l) i9 g" e; H
  17. #define E2PROM_CMD_WRITE 2- i9 p; O, I4 k% p4 c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 i& O+ k( p' L- O5 x8 y

  19. 7 N& z2 g4 x+ A- a/ p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- [, `: h& b' I( R/ D$ e: {
  21. {1 N( f# w* {+ ?/ g$ z
  22.         int fd, ret;4 H- V6 W  h4 _7 c4 J
  23.         e2prom_s_cmd arg;4 Q3 E+ w& z3 _: {
  24.         unsigned char buf[0x18];
    : S! ?' O. N7 y" H3 I" |

  25. ( j' [; S) }- \. x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ K/ V6 R! m; D: }/ ?- d6 P+ ?% [
  27.         if (fd  < 0) {& A  x* u0 P% E7 W- o0 _3 I) M0 Z3 T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& T5 z6 [; j# W* @: {" }- z2 q9 C
  29.                 return -1;1 u4 D9 {5 Q! O/ M
  30.         }
    ) r# u( F. O% w% d# N. g
  31.         arg.sub_addr_count      = 2;
    * G# }( w+ G8 Q* J0 C/ Y6 g
  32.         arg.data_count          = 0x18;% {- p) N, f$ C) L3 \7 O( Z! A9 a
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ f8 }% Z. u- N7 S) P
  34.         arg.e2prom_cmd_data     = buf;
    0 I& Y9 j0 B$ l, s% W5 }5 P$ F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 L" q# j# A: W5 i
  36.         if (ret != 0) {; d3 @9 k5 o: z, L0 [% F, s" w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& B+ Z% w+ y/ [5 Q2 O* z3 n+ S) W- i
  38.                 return -1;* X: d5 R9 [0 g- {, K' u0 {
  39.         }
    . s8 s9 {$ J( j% h
  40.         memcpy(mac, buf, 6);
    ' ~* t  V- {5 ?6 f) A1 o6 E/ Q) Z
  41.         memcpy(stbid, &buf[6], 18);: ~  Y1 P) S. R3 @$ K
  42.         stbid[18] = '\0';1 t6 D: ^- R) P' s& l/ j& _

  43. : d" D2 C5 `' {0 v* b
  44.         return 0;& Y4 V# t. p  {# Y& {  b
  45. }
    8 p; z) x: p( }' Y6 U

  46. ; n4 K& _0 s* Z' v. Q# {1 @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . c) t3 b6 S! M0 J3 k! R
  48. {
    ; ?* j- F5 s  f3 ^% ?) g; H+ H  A& g0 F
  49.         int fd, ret;
    % K! W/ @# s) y1 q8 I9 d
  50.         e2prom_s_cmd arg;& k0 T# t4 H  m$ J1 {9 w
  51.         unsigned char buf[0x18];. [4 Z1 A7 k2 {5 V% B4 ?7 q" [
  52. / y, z+ }$ q/ ]2 j# `
  53.         memcpy(buf, mac, 6);
    & T6 q! ]+ q. Y& G% B
  54.         memcpy(&buf[6], stbid, 18);% K& `" C' S0 R6 D; d* L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 I4 M4 o5 m) k  |: x/ ~
  56.         if (fd  < 0) {
    3 I& U7 Z7 m5 n( L! b& N9 x$ f' \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 m( Q  D" k& k: B
  58.                 return -1;
    / p; j& H) F( R: \' q( j# H& S" Z
  59.         }
    ; d  V& p2 N& [
  60.         arg.sub_addr_count      = 2;8 ^$ z, H) _+ w, _+ p: X) D4 i
  61.         arg.data_count          = 0x18;0 [! J' s: D$ @% F, G
  62.         arg.e2prom_cmd_sub_addr = 0x290;) j" B" o- _5 q) y( W
  63.         arg.e2prom_cmd_data     = buf;; W0 f  d5 S# O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( o5 l! e0 B/ w( d$ [1 t
  65.         if (ret != 0) {
    3 Z* G1 b5 ~# O- R8 W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);0 `# J$ \% z3 o5 q, |
  67.                 return -1;0 t! x, X9 ]0 U' f/ |. V
  68.         }0 e! ?8 V. H) @: P9 U: F* E
  69. , }/ Z/ S0 X! q5 r; o
  70.         return 0;
    # K! f( \* ]5 z1 I0 f6 T6 N1 h
  71. }
    " t' S6 E, w- ~3 A+ D- j
  72. . s6 J# R7 C5 ]' K8 j2 F- C* q
  73. int main()
    " I$ G1 z! H, j/ k# W
  74. {
    ' i, z0 s2 W  M2 H
  75.         char c;
    5 {" b9 C& ]7 v( s7 F
  76.         int i, macs[6];+ u1 U) ?, B0 ^8 d, M+ h
  77.         unsigned char mac[6];3 |) E: H$ G5 D' s" L1 [2 i* v  d
  78.         unsigned char stbid[256];
    ) ^( y0 B, h0 ?" t
  79.   F8 u0 }% J" T7 s$ G1 `
  80.         if (readparam(mac, stbid) < 0)
      I# z6 l! n  K0 H
  81.                 return 1;
    5 M' |+ T  o0 \% L" r0 C, C9 B
  82. ( M4 g) s( S' l8 F
  83.         printf("Current parameters: \n");3 _2 ]' {7 H7 j% f+ k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + e4 f- r6 Z$ j  w+ t1 t: V
  85.         printf("  STBID: %s\n", stbid);
    - K3 Z4 f+ D. D( I! v
  86.         - h/ i% i8 S. K9 e( q8 {  C3 v
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 s+ o9 ]( p4 A1 F3 I1 i0 y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 _5 B* a' j% j9 [
  89.                 printf("Input MAC error\n");5 e! Q* v( C) X9 b
  90.                 return 1;
    - N+ s) V8 }% n7 k, K, W
  91.         }: v+ E0 W% B% r1 n' i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 e# S" m8 }* t4 ?3 }' C# G
  93.         printf("\nPlease input new STBID: ");3 n6 ^: g3 }; l% |0 l
  94.         scanf("%s", stbid);
    9 V: n0 Z1 n% \5 K
  95.         if (strlen(stbid) != 18) {/ p9 n( d$ c4 H9 M+ U! `) o
  96.                 printf("Invalid stbid\n");
    6 _$ X5 X5 h" u! q+ W! I: R
  97.                 return 1;4 j$ W7 D' K6 R) n  n0 P; \
  98.         }
    9 u% t0 }" _6 }( L" Q
  99.         printf("\nNew parameters: \n");6 O- \- U8 E9 n! P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & ~: T" {# I% R: D$ {' J3 t
  101.         printf("  STBID: %s\n", stbid);; i( O0 X6 ^! X- l! N- S& v

  102. $ A+ Z8 ]9 \- o. U! c  D! l
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . G" Z5 l! L* Q4 [6 N. f+ t6 d' i
  104.         for (;;) {0 i* R; S9 _6 @' ^9 k) }
  105.                 c = getchar();  M; {6 f+ M9 K0 {; j" X' G
  106.                 if (c == 'y' || c == 'Y')
    $ S( I2 J. D+ \. I/ f& w- A
  107.                         break;
    ( C5 J) B5 U5 L
  108.                 if (c == 'n' || c == 'N') {4 a6 o( y# @# j" {6 t1 z
  109.                         printf("\nAborted.\n");
    + z$ f& q6 B+ @) H- S
  110.                         return 1;2 U1 [. Y$ B- i" J8 d
  111.                 }
      n! T0 T" q- h
  112.         }
    & Z' F7 ]: x( I9 G$ `
  113.         if (writeparam(mac, stbid) == 0)
    ; H1 I6 {: R+ N" K8 y2 N
  114.                 printf("Parameters changed.\n");
    9 l( X4 M9 G: |) D- c4 M+ s
  115. 1 q" D3 w& _, E9 f6 c6 w
  116.         return 0;
    . [. G- F7 m* a' g1 i! w  l
  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
8 j# X" b8 u2 I; Y0 X在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& N' [- ?4 j/ w2 T( Q% `% Z! u
你用的编译命令行格式是什么?
, u1 y% a' y" ~7 f6 |
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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